kopia lustrzana https://github.com/Hamlib/Hamlib
Allow compilation for systems without pthreads
https://github.com/Hamlib/Hamlib/issues/1373pull/1458/head
rodzic
21cbd77047
commit
48b6b4910c
|
@ -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",
|
||||
|
|
17
src/event.c
17
src/event.c
|
@ -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
|
||||
|
||||
/** @} */
|
||||
|
|
48
src/rig.c
48
src/rig.c
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue