Allow compilation for systems without pthreads

https://github.com/Hamlib/Hamlib/issues/1373
pull/1458/head
Mike Black W9MDB 2023-12-18 11:56:41 -06:00
rodzic 21cbd77047
commit 48b6b4910c
6 zmienionych plików z 77 dodań i 14 usunięć

Wyświetl plik

@ -9119,6 +9119,8 @@ int icom_mW2power(RIG *rig, float *power, unsigned int mwpower, freq_t freq,
RETURNFUNC(RIG_OK);
}
#if defined(HAVE_PTHREAD)
static int icom_parse_spectrum_frame(RIG *rig, size_t length,
const unsigned char *frame_data)
{
@ -9256,13 +9258,16 @@ static int icom_parse_spectrum_frame(RIG *rig, size_t length,
.spectrum_data = cache->spectrum_data,
};
#if defined(HAVE_PTHREAD)
rig_fire_spectrum_event(rig, &spectrum_line);
#endif
cache->spectrum_metadata_valid = 0;
}
RETURNFUNC(RIG_OK);
}
#endif
int icom_is_async_frame(RIG *rig, size_t frame_length,
const unsigned char *frame)
@ -9303,7 +9308,9 @@ int icom_process_async_frame(RIG *rig, size_t frame_length,
// TODO: Disable cache timeout for frequency after first transceive packet once we figure out how to get active VFO reliably with transceive updates
// TODO: rig_set_cache_timeout_ms(rig, HAMLIB_CACHE_FREQ, HAMLIB_CACHE_ALWAYS);
freq_t freq = (freq_t) from_bcd(frame + 5, (priv->civ_731_mode ? 4 : 5) * 2);
#if defined(HAVE_PTHREAD)
rig_fire_freq_event(rig, RIG_VFO_CURR, freq);
#endif
#if 0
@ -9323,7 +9330,9 @@ int icom_process_async_frame(RIG *rig, size_t frame_length,
// TODO: Disable cache timeout for frequency after first transceive packet once we figure out how to get active VFO reliably with transceive updates
// TODO: rig_set_cache_timeout_ms(rig, HAMLIB_CACHE_MODE, HAMLIB_CACHE_ALWAYS);
icom2rig_mode(rig, frame[5], frame[6], &mode, &width);
#if defined(HAVE_PTHREAD)
rig_fire_mode_event(rig, RIG_VFO_CURR, mode, width);
#endif
if (rs->use_cached_mode != 1)
{
@ -9334,6 +9343,8 @@ int icom_process_async_frame(RIG *rig, size_t frame_length,
break;
#if defined(HAVE_PTHREAD)
case C_CTL_SCP:
if (frame[5] == S_SCP_DAT)
{
@ -9341,6 +9352,7 @@ int icom_process_async_frame(RIG *rig, size_t frame_length,
}
break;
#endif
default:
rig_debug(RIG_DEBUG_VERBOSE, "%s: transceive cmd unsupported %#2.2x\n",

Wyświetl plik

@ -608,6 +608,7 @@ int HAMLIB_API rig_get_trn(RIG *rig, int *trn)
RETURNFUNC(-RIG_EDEPRECATED);
}
#if defined(HAVE_PTHREAD)
int rig_fire_freq_event(RIG *rig, vfo_t vfo, freq_t freq)
{
ENTERFUNC;
@ -634,8 +635,9 @@ int rig_fire_freq_event(RIG *rig, vfo_t vfo, freq_t freq)
RETURNFUNC(0);
}
#endif
#if defined(HAVE_PTHREAD)
int rig_fire_mode_event(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
{
ENTERFUNC;
@ -661,8 +663,10 @@ int rig_fire_mode_event(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
RETURNFUNC(0);
}
#endif
#if defined(HAVE_PTHREAD)
int rig_fire_vfo_event(RIG *rig, vfo_t vfo)
{
ENTERFUNC;
@ -681,8 +685,10 @@ int rig_fire_vfo_event(RIG *rig, vfo_t vfo)
RETURNFUNC(0);
}
#endif
#if defined(HAVE_PTHREAD)
int rig_fire_ptt_event(RIG *rig, vfo_t vfo, ptt_t ptt)
{
ENTERFUNC;
@ -702,8 +708,10 @@ int rig_fire_ptt_event(RIG *rig, vfo_t vfo, ptt_t ptt)
RETURNFUNC(0);
}
#endif
#if defined(HAVE_PTHREAD)
int rig_fire_dcd_event(RIG *rig, vfo_t vfo, dcd_t dcd)
{
ENTERFUNC;
@ -720,8 +728,10 @@ int rig_fire_dcd_event(RIG *rig, vfo_t vfo, dcd_t dcd)
RETURNFUNC(0);
}
#endif
#if defined(HAVE_PTHREAD)
int rig_fire_pltune_event(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode,
pbwidth_t *width)
{
@ -739,8 +749,10 @@ int rig_fire_pltune_event(RIG *rig, vfo_t vfo, freq_t *freq, rmode_t *mode,
RETURNFUNC(RIG_OK);
}
#endif
#if defined(HAVE_PTHREAD)
static int print_spectrum_line(char *str, size_t length,
struct rig_spectrum_line *line)
{
@ -798,8 +810,10 @@ static int print_spectrum_line(char *str, size_t length,
return c;
}
#endif
#if defined(HAVE_PTHREAD)
int rig_fire_spectrum_event(RIG *rig, struct rig_spectrum_line *line)
{
ENTERFUNC;
@ -821,5 +835,6 @@ int rig_fire_spectrum_event(RIG *rig, struct rig_spectrum_line *line)
RETURNFUNC(RIG_OK);
}
#endif
/** @} */

Wyświetl plik

@ -60,7 +60,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#ifdef HAVE_PTHREAD
#if defined(HAVE_PTHREAD)
#include <pthread.h>
#endif
@ -225,7 +225,7 @@ static const char *const rigerror_table[] =
#define ERROR_TBL_SZ (sizeof(rigerror_table)/sizeof(char *))
#ifdef HAVE_PTHREAD
#if defined(HAVE_PTHREAD)
typedef struct async_data_handler_args_s
{
RIG *rig;
@ -242,6 +242,7 @@ static int async_data_handler_stop(RIG *rig);
void *async_data_handler(void *arg);
#endif
#if defined(HAVE_PTHREAD)
typedef struct morse_data_handler_args_s
{
RIG *rig;
@ -259,6 +260,7 @@ static int morse_data_handler_start(RIG *rig);
static int morse_data_handler_stop(RIG *rig);
int morse_data_handler_set_keyspd(RIG *rig, int keyspd);
void *morse_data_handler(void *arg);
#endif
/*
* track which rig is opened (with rig_open)
@ -574,7 +576,7 @@ RIG *HAMLIB_API rig_init(rig_model_t rig_model)
* TODO: read the Preferences here!
*/
rs = &rig->state;
#ifdef HAVE_PTHREAD
#if defined(HAVE_PTHREAD)
pthread_mutex_init(&rs->mutex_set_transaction, NULL);
#endif
@ -1323,6 +1325,7 @@ int HAMLIB_API rig_open(RIG *rig)
RETURNFUNC2(status);
}
#if defined(HAVE_PTHREAD)
status = async_data_handler_start(rig);
if (status < 0)
@ -1332,6 +1335,8 @@ int HAMLIB_API rig_open(RIG *rig)
RETURNFUNC2(status);
}
#endif
rs->comm_state = 1;
rig_debug(RIG_DEBUG_VERBOSE, "%s: %p rs->comm_state==1?=%d\n", __func__,
&rs->comm_state,
@ -1382,8 +1387,10 @@ int HAMLIB_API rig_open(RIG *rig)
if (status != RIG_OK)
{
remove_opened_rig(rig);
#if defined(HAVE_PTHREAD)
async_data_handler_stop(rig);
morse_data_handler_stop(rig);
#endif
port_close(&rs->rigport, rs->rigport.type.rig);
memcpy(&rs->rigport_deprecated, &rs->rigport, sizeof(hamlib_port_t_deprecated));
rs->comm_state = 0;
@ -1437,6 +1444,7 @@ int HAMLIB_API rig_open(RIG *rig)
}
}
#if defined(HAVE_PTHREAD)
status = morse_data_handler_start(rig);
if (status < 0)
@ -1447,6 +1455,8 @@ int HAMLIB_API rig_open(RIG *rig)
RETURNFUNC2(status);
}
#endif
if (rs->auto_disable_screensaver)
{
// try to turn off the screensaver if possible
@ -1501,6 +1511,7 @@ int HAMLIB_API rig_open(RIG *rig)
memcpy(&rs->dcdport_deprecated, &rs->dcdport, sizeof(hamlib_port_t_deprecated));
rig_flush_force(&rs->rigport, 1);
#if defined(HAVE_PTHREAD)
enum multicast_item_e items = RIG_MULTICAST_POLL | RIG_MULTICAST_TRANSCEIVE
| RIG_MULTICAST_SPECTRUM;
retval = network_multicast_publisher_start(rig, rs->multicast_data_addr,
@ -1534,6 +1545,8 @@ int HAMLIB_API rig_open(RIG *rig)
// we will consider this non-fatal for now
}
#endif
rig->state.comm_status = RIG_COMM_STATUS_OK;
add_opened_rig(rig);
@ -1581,11 +1594,13 @@ int HAMLIB_API rig_close(RIG *rig)
rig->state.comm_status = RIG_COMM_STATUS_DISCONNECTED;
#if defined(HAVE_PTHREAD)
morse_data_handler_stop(rig);
async_data_handler_stop(rig);
rig_poll_routine_stop(rig);
network_multicast_receiver_stop(rig);
network_multicast_publisher_stop(rig);
#endif
/*
* Let the backend say 73s to the rig.
@ -7885,11 +7900,13 @@ int HAMLIB_API rig_cookie(RIG *rig, enum cookie_e cookie_cmd, char *cookie,
return ret;
}
#if defined(HAVE_PTHREAD)
static pthread_mutex_t initializer = PTHREAD_MUTEX_INITIALIZER;
#endif
HAMLIB_EXPORT(void) sync_callback(int lock)
{
#ifdef HAVE_PTHREAD
#if defined(HAVE_PTHREAD)
pthread_mutex_t client_lock = initializer;
if (lock)
@ -7908,7 +7925,7 @@ HAMLIB_EXPORT(void) sync_callback(int lock)
void rig_lock(RIG *rig, int lock)
{
#ifdef HAVE_PTHREAD
#if defined(HAVE_PTHREAD)
if (rig->state.multicast == NULL) { return; } // not initialized yet
@ -7936,10 +7953,10 @@ void rig_lock(RIG *rig, int lock)
/*! @} */
#ifdef HAVE_PTHREAD
#define MAX_FRAME_LENGTH 1024
#if defined(HAVE_PTHREAD)
static int async_data_handler_start(RIG *rig)
{
struct rig_state *rs = &rig->state;
@ -7957,8 +7974,6 @@ static int async_data_handler_start(RIG *rig)
sleep(2); // give other things a chance to finish opening up the rig
#ifdef HAVE_PTHREAD
rs->async_data_handler_thread_run = 1;
rs->async_data_handler_priv_data = calloc(1,
sizeof(async_data_handler_priv_data));
@ -7981,11 +7996,11 @@ static int async_data_handler_start(RIG *rig)
RETURNFUNC(-RIG_EINTERNAL);
}
#endif // HAVE_PTHREAD
RETURNFUNC(RIG_OK);
}
#endif
#if defined(HAVE_PTHREAD)
static int morse_data_handler_start(RIG *rig)
{
struct rig_state *rs = &rig->state;
@ -8023,8 +8038,10 @@ static int morse_data_handler_start(RIG *rig)
RETURNFUNC(RIG_OK);
}
#endif
#if defined(HAVE_PTHREAD)
static int async_data_handler_stop(RIG *rig)
{
struct rig_state *rs = &rig->state;
@ -8032,7 +8049,6 @@ static int async_data_handler_stop(RIG *rig)
ENTERFUNC;
#ifdef HAVE_PTHREAD
rs->async_data_handler_thread_run = 0;
async_data_handler_priv = (async_data_handler_priv_data *)
@ -8061,11 +8077,12 @@ static int async_data_handler_stop(RIG *rig)
rs->async_data_handler_priv_data = NULL;
}
#endif
RETURNFUNC(RIG_OK);
}
#endif
#if defined(HAVE_PTHREAD)
static int morse_data_handler_stop(RIG *rig)
{
struct rig_state *rs = &rig->state;
@ -8119,8 +8136,9 @@ static int morse_data_handler_stop(RIG *rig)
RETURNFUNC(RIG_OK);
}
#endif
#if defined(HAVE_PTHREAD)
void *async_data_handler(void *arg)
{
struct async_data_handler_args_s *args = (struct async_data_handler_args_s *)
@ -8207,6 +8225,7 @@ void *async_data_handler(void *arg)
}
#endif
#if defined(HAVE_PTHREAD)
void *morse_data_handler(void *arg)
{
struct morse_data_handler_args_s *args =
@ -8343,6 +8362,7 @@ void *morse_data_handler(void *arg)
pthread_exit(NULL);
return NULL;
}
#endif
HAMLIB_EXPORT(int) rig_password(RIG *rig, const char *key1)
@ -8514,6 +8534,7 @@ HAMLIB_EXPORT(int) rig_is_model(RIG *rig, rig_model_t model)
}
#if defined(HAVE_PTHREAD)
int morse_data_handler_set_keyspd(RIG *rig, int keyspd)
{
struct rig_state *rs = &rig->state;
@ -8523,3 +8544,4 @@ int morse_data_handler_set_keyspd(RIG *rig, int keyspd)
rig_debug(RIG_DEBUG_VERBOSE, "%s: keyspd=%d\n", __func__, keyspd);
return RIG_OK;
}
#endif

Wyświetl plik

@ -94,12 +94,16 @@ int HAMLIB_API rig_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
|| vfo == RIG_VFO_CURR
|| vfo == rig->state.current_vfo)
{
#if defined(HAVE_PTHREAD)
if (level == RIG_LEVEL_KEYSPD)
{
extern int morse_data_handler_set_keyspd(RIG * rig, int keyspd);
morse_data_handler_set_keyspd(rig, val.i);
}
#endif
return caps->set_level(rig, vfo, level, val);
}

Wyświetl plik

@ -1378,7 +1378,12 @@ void *handle_socket(void *arg)
}
while (!ctrl_c && (retcode == RIG_OK || RIG_IS_SOFT_ERRCODE(-retcode)));
#if defined(HAVE_PTHREAD)
if (rigctld_idle && client_count == 1)
#else
if (rigctld_idle)
#endif
{
rig_close(my_rig);

Wyświetl plik

@ -1416,7 +1416,12 @@ void *handle_socket(void *arg)
client_done:
#if defined(HAVE_PTHREAD)
if (rigctld_idle && client_count == 1)
#else
if (rigctld_idle)
#endif
{
rig_close(my_rig);