kopia lustrzana https://github.com/Hamlib/Hamlib
rodzic
0fdc78c604
commit
55db73894f
|
@ -2490,6 +2490,7 @@ typedef hamlib_port_t port_t;
|
||||||
#define AMPPORT(a) (&a->state.ampport)
|
#define AMPPORT(a) (&a->state.ampport)
|
||||||
#define ROTPORT(r) (&r->state.rotport)
|
#define ROTPORT(r) (&r->state.rotport)
|
||||||
#define ROTPORT2(r) (&r->state.rotport2)
|
#define ROTPORT2(r) (&r->state.rotport2)
|
||||||
|
#define STATE(r) (&r->state)
|
||||||
/* Then when the rigport address is stored as a pointer somewhere else(say,
|
/* Then when the rigport address is stored as a pointer somewhere else(say,
|
||||||
* in the rig structure itself), the definition could be changed to
|
* in the rig structure itself), the definition could be changed to
|
||||||
* #define RIGPORT(r) r->somewhereelse
|
* #define RIGPORT(r) r->somewhereelse
|
||||||
|
@ -2504,6 +2505,7 @@ typedef hamlib_port_t port_t;
|
||||||
#define HAMLIB_AMPPORT(a) ((hamlib_port_t *)amp_data_pointer(a, RIG_PTRX_AMPPORT))
|
#define HAMLIB_AMPPORT(a) ((hamlib_port_t *)amp_data_pointer(a, RIG_PTRX_AMPPORT))
|
||||||
#define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT))
|
#define HAMLIB_ROTPORT(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT))
|
||||||
#define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2))
|
#define HAMLIB_ROTPORT2(r) ((hamlib_port_t *)rot_data_pointer(r, RIG_PTRX_ROTPORT2))
|
||||||
|
#define HAMLIB_STATE(r) ((struct rig_state *)rig_data_pointer(r, RIG_PTRX_STATE))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -2515,6 +2517,7 @@ typedef enum {
|
||||||
RIG_PTRX_AMPPORT,
|
RIG_PTRX_AMPPORT,
|
||||||
RIG_PTRX_ROTPORT,
|
RIG_PTRX_ROTPORT,
|
||||||
RIG_PTRX_ROTPORT2,
|
RIG_PTRX_ROTPORT2,
|
||||||
|
RIG_PTRX_STATE,
|
||||||
// New entries go directly above this line====================
|
// New entries go directly above this line====================
|
||||||
RIG_PTRX_MAXIMUM
|
RIG_PTRX_MAXIMUM
|
||||||
} rig_ptrx_t;
|
} rig_ptrx_t;
|
||||||
|
|
14
src/misc.c
14
src/misc.c
|
@ -2005,7 +2005,9 @@ vfo_t HAMLIB_API vfo_fixup2a(RIG *rig, vfo_t vfo, split_t split,
|
||||||
// We need to add some exceptions to this like the ID-5100
|
// We need to add some exceptions to this like the ID-5100
|
||||||
vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
||||||
{
|
{
|
||||||
vfo_t currvfo = rig->state.current_vfo;
|
struct rig_state *rs = STATE(rig);
|
||||||
|
vfo_t currvfo = rs->current_vfo;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s:(from %s:%d) vfo=%s, vfo_curr=%s, split=%d\n",
|
rig_debug(RIG_DEBUG_TRACE, "%s:(from %s:%d) vfo=%s, vfo_curr=%s, split=%d\n",
|
||||||
__func__, funcname, linenum,
|
__func__, funcname, linenum,
|
||||||
rig_strvfo(vfo), rig_strvfo(currvfo), split);
|
rig_strvfo(vfo), rig_strvfo(currvfo), split);
|
||||||
|
@ -2013,8 +2015,6 @@ vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
||||||
if (rig->caps->rig_model == RIG_MODEL_ID5100
|
if (rig->caps->rig_model == RIG_MODEL_ID5100
|
||||||
|| rig->caps->rig_model == RIG_MODEL_IC9700)
|
|| rig->caps->rig_model == RIG_MODEL_IC9700)
|
||||||
{
|
{
|
||||||
struct rig_state *rs = &rig->state;
|
|
||||||
|
|
||||||
// dualwatch on ID5100 is TX=Main, RX=Sub
|
// dualwatch on ID5100 is TX=Main, RX=Sub
|
||||||
if (rig->caps->rig_model == RIG_MODEL_ID5100 && rs->dual_watch)
|
if (rig->caps->rig_model == RIG_MODEL_ID5100 && rs->dual_watch)
|
||||||
{
|
{
|
||||||
|
@ -2032,7 +2032,7 @@ vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
||||||
vfo = RIG_VFO_MAIN_A;
|
vfo = RIG_VFO_MAIN_A;
|
||||||
|
|
||||||
// only have Main/Sub when in satmode
|
// only have Main/Sub when in satmode
|
||||||
if (rig->state.cache.satmode) { vfo = RIG_VFO_MAIN; }
|
if (CACHE(rig)->satmode) { vfo = RIG_VFO_MAIN; }
|
||||||
}
|
}
|
||||||
else if (vfo == RIG_VFO_B && (currvfo == RIG_VFO_MAIN
|
else if (vfo == RIG_VFO_B && (currvfo == RIG_VFO_MAIN
|
||||||
|| currvfo == RIG_VFO_MAIN_A))
|
|| currvfo == RIG_VFO_MAIN_A))
|
||||||
|
@ -2061,7 +2061,7 @@ vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
||||||
|
|
||||||
if (vfo == RIG_VFO_OTHER)
|
if (vfo == RIG_VFO_OTHER)
|
||||||
{
|
{
|
||||||
switch (rig->state.current_vfo)
|
switch (rs->current_vfo)
|
||||||
{
|
{
|
||||||
case RIG_VFO_A:
|
case RIG_VFO_A:
|
||||||
return RIG_VFO_B;
|
return RIG_VFO_B;
|
||||||
|
@ -2085,7 +2085,7 @@ vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
||||||
|
|
||||||
if (vfo == RIG_VFO_RX)
|
if (vfo == RIG_VFO_RX)
|
||||||
{
|
{
|
||||||
vfo = rig->state.rx_vfo;
|
vfo = rs->rx_vfo;
|
||||||
}
|
}
|
||||||
else if (vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN)
|
else if (vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN)
|
||||||
{
|
{
|
||||||
|
@ -2098,7 +2098,7 @@ vfo_t HAMLIB_API vfo_fixup(RIG *rig, vfo_t vfo, split_t split)
|
||||||
int satmode = CACHE(rig)->satmode;
|
int satmode = CACHE(rig)->satmode;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): split=%d, vfo==%s tx_vfo=%s\n", __func__,
|
rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): split=%d, vfo==%s tx_vfo=%s\n", __func__,
|
||||||
__LINE__, split, rig_strvfo(vfo), rig_strvfo(rig->state.tx_vfo));
|
__LINE__, split, rig_strvfo(vfo), rig_strvfo(rs->tx_vfo));
|
||||||
|
|
||||||
if (VFO_HAS_MAIN_SUB_ONLY && !split && !satmode && vfo != RIG_VFO_B) { vfo = RIG_VFO_MAIN; }
|
if (VFO_HAS_MAIN_SUB_ONLY && !split && !satmode && vfo != RIG_VFO_B) { vfo = RIG_VFO_MAIN; }
|
||||||
|
|
||||||
|
|
84
src/rig.c
84
src/rig.c
|
@ -606,7 +606,7 @@ RIG *HAMLIB_API rig_init(rig_model_t rig_model)
|
||||||
* populate the rig->state
|
* populate the rig->state
|
||||||
* TODO: read the Preferences here!
|
* TODO: read the Preferences here!
|
||||||
*/
|
*/
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
#if defined(HAVE_PTHREAD)
|
#if defined(HAVE_PTHREAD)
|
||||||
pthread_mutex_init(&rs->mutex_set_transaction, NULL);
|
pthread_mutex_init(&rs->mutex_set_transaction, NULL);
|
||||||
#endif
|
#endif
|
||||||
|
@ -623,10 +623,13 @@ RIG *HAMLIB_API rig_init(rig_model_t rig_model)
|
||||||
rs->rig_model = caps->rig_model;
|
rs->rig_model = caps->rig_model;
|
||||||
rs->priv = NULL;
|
rs->priv = NULL;
|
||||||
rs->async_data_enabled = 0;
|
rs->async_data_enabled = 0;
|
||||||
|
rs->depth = 1;
|
||||||
|
rs->comm_state = 0;
|
||||||
|
rs->comm_status = RIG_COMM_STATUS_CONNECTING;
|
||||||
|
rs->tuner_control_pathname = DEFAULT_TUNER_CONTROL_PATHNAME;
|
||||||
|
|
||||||
rp->fd = -1;
|
rp->fd = -1;
|
||||||
pttp->fd = -1;
|
pttp->fd = -1;
|
||||||
rs->comm_state = 0;
|
|
||||||
rig->state.depth = 1;
|
|
||||||
#if 0 // extra debug if needed
|
#if 0 // extra debug if needed
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): %p rs->comm_state==0?=%d\n", __func__,
|
rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): %p rs->comm_state==0?=%d\n", __func__,
|
||||||
__LINE__, &rs->comm_state,
|
__LINE__, &rs->comm_state,
|
||||||
|
@ -636,9 +639,6 @@ RIG *HAMLIB_API rig_init(rig_model_t rig_model)
|
||||||
#if defined(HAVE_PTHREAD)
|
#if defined(HAVE_PTHREAD)
|
||||||
rp->asyncio = 0;
|
rp->asyncio = 0;
|
||||||
#endif
|
#endif
|
||||||
rig->state.comm_status = RIG_COMM_STATUS_CONNECTING;
|
|
||||||
|
|
||||||
rs->tuner_control_pathname = DEFAULT_TUNER_CONTROL_PATHNAME;
|
|
||||||
|
|
||||||
switch (caps->port_type)
|
switch (caps->port_type)
|
||||||
{
|
{
|
||||||
|
@ -946,7 +946,7 @@ int HAMLIB_API rig_open(RIG *rig)
|
||||||
}
|
}
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
rp->rig = rig;
|
rp->rig = rig;
|
||||||
rs->rigport_deprecated.rig = rig;
|
rs->rigport_deprecated.rig = rig;
|
||||||
|
|
||||||
|
@ -1642,7 +1642,7 @@ int HAMLIB_API rig_close(RIG *rig)
|
||||||
|
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
if (!rs->comm_state)
|
if (!rs->comm_state)
|
||||||
{
|
{
|
||||||
|
@ -3039,7 +3039,7 @@ pbwidth_t HAMLIB_API rig_passband_normal(RIG *rig, rmode_t mode)
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
// return CW for CWR and RTTY for RTTYR
|
// return CW for CWR and RTTY for RTTYR
|
||||||
if (mode == RIG_MODE_CWR) { mode = RIG_MODE_CW; }
|
if (mode == RIG_MODE_CWR) { mode = RIG_MODE_CW; }
|
||||||
|
@ -3091,7 +3091,7 @@ pbwidth_t HAMLIB_API rig_passband_narrow(RIG *rig, rmode_t mode)
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
for (i = 0; i < HAMLIB_FLTLSTSIZ - 1 && rs->filters[i].modes; i++)
|
for (i = 0; i < HAMLIB_FLTLSTSIZ - 1 && rs->filters[i].modes; i++)
|
||||||
{
|
{
|
||||||
|
@ -3144,7 +3144,7 @@ pbwidth_t HAMLIB_API rig_passband_wide(RIG *rig, rmode_t mode)
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
for (i = 0; i < HAMLIB_FLTLSTSIZ - 1 && rs->filters[i].modes; i++)
|
for (i = 0; i < HAMLIB_FLTLSTSIZ - 1 && rs->filters[i].modes; i++)
|
||||||
{
|
{
|
||||||
|
@ -3428,7 +3428,7 @@ int HAMLIB_API rig_get_vfo(RIG *rig, vfo_t *vfo)
|
||||||
int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
|
int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
|
||||||
{
|
{
|
||||||
const struct rig_caps *caps;
|
const struct rig_caps *caps;
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
hamlib_port_t *rp = RIGPORT(rig);
|
hamlib_port_t *rp = RIGPORT(rig);
|
||||||
hamlib_port_t *pttp = PTTPORT(rig);
|
hamlib_port_t *pttp = PTTPORT(rig);
|
||||||
struct rig_cache *cachep = CACHE(rig);
|
struct rig_cache *cachep = CACHE(rig);
|
||||||
|
@ -3756,7 +3756,7 @@ int HAMLIB_API rig_set_ptt(RIG *rig, vfo_t vfo, ptt_t ptt)
|
||||||
int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
|
int HAMLIB_API rig_get_ptt(RIG *rig, vfo_t vfo, ptt_t *ptt)
|
||||||
{
|
{
|
||||||
const struct rig_caps *caps;
|
const struct rig_caps *caps;
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
hamlib_port_t *rp = RIGPORT(rig);
|
hamlib_port_t *rp = RIGPORT(rig);
|
||||||
hamlib_port_t *pttp = PTTPORT(rig);
|
hamlib_port_t *pttp = PTTPORT(rig);
|
||||||
struct rig_cache *cachep = CACHE(rig);
|
struct rig_cache *cachep = CACHE(rig);
|
||||||
|
@ -4563,7 +4563,7 @@ int HAMLIB_API rig_set_split_freq(RIG *rig, vfo_t vfo, freq_t tx_freq)
|
||||||
rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo), tx_freq);
|
rig_strvfo(vfo), rig_strvfo(rig->state.current_vfo), tx_freq);
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
||||||
tx_vfo = rs->tx_vfo;
|
tx_vfo = rs->tx_vfo;
|
||||||
|
@ -4753,7 +4753,7 @@ int HAMLIB_API rig_get_split_freq(RIG *rig, vfo_t vfo, freq_t *tx_freq)
|
||||||
}
|
}
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
||||||
tx_vfo = rs->tx_vfo;
|
tx_vfo = rs->tx_vfo;
|
||||||
|
@ -4930,7 +4930,7 @@ int HAMLIB_API rig_set_split_mode(RIG *rig,
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
||||||
tx_vfo = rs->tx_vfo;
|
tx_vfo = rs->tx_vfo;
|
||||||
|
@ -5167,7 +5167,7 @@ int HAMLIB_API rig_get_split_mode(RIG *rig, vfo_t vfo, rmode_t *tx_mode,
|
||||||
}
|
}
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
||||||
tx_vfo = rs->tx_vfo;
|
tx_vfo = rs->tx_vfo;
|
||||||
|
@ -5327,7 +5327,7 @@ int HAMLIB_API rig_set_split_freq_mode(RIG *rig,
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
||||||
tx_vfo = rs->tx_vfo;
|
tx_vfo = rs->tx_vfo;
|
||||||
|
@ -5474,7 +5474,7 @@ int HAMLIB_API rig_get_split_freq_mode(RIG *rig,
|
||||||
}
|
}
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
// Always use the previously selected TX VFO for split. The targeted VFO will have no effect.
|
||||||
tx_vfo = rs->tx_vfo;
|
tx_vfo = rs->tx_vfo;
|
||||||
|
@ -5557,7 +5557,7 @@ int HAMLIB_API rig_set_split_vfo(RIG *rig,
|
||||||
rig_strvfo(rx_vfo), split, rig_strvfo(tx_vfo), cachep->split);
|
rig_strvfo(rx_vfo), split, rig_strvfo(tx_vfo), cachep->split);
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
if (caps->set_split_vfo == NULL)
|
if (caps->set_split_vfo == NULL)
|
||||||
{
|
{
|
||||||
|
@ -5813,7 +5813,7 @@ int HAMLIB_API rig_get_split_vfo(RIG *rig,
|
||||||
}
|
}
|
||||||
|
|
||||||
caps = rig->caps;
|
caps = rig->caps;
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
if (MUTEX_CHECK(&morse_mutex))
|
if (MUTEX_CHECK(&morse_mutex))
|
||||||
{
|
{
|
||||||
|
@ -6656,7 +6656,7 @@ shortfreq_t HAMLIB_API rig_get_resolution(RIG *rig, rmode_t mode)
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
|
||||||
rs = &rig->state;
|
rs = STATE(rig);
|
||||||
|
|
||||||
for (i = 0; i < HAMLIB_TSLSTSIZ && rs->tuning_steps[i].ts; i++)
|
for (i = 0; i < HAMLIB_TSLSTSIZ && rs->tuning_steps[i].ts; i++)
|
||||||
{
|
{
|
||||||
|
@ -8249,7 +8249,7 @@ void rig_lock(RIG *rig, int lock)
|
||||||
#if defined(HAVE_PTHREAD)
|
#if defined(HAVE_PTHREAD)
|
||||||
static int async_data_handler_start(RIG *rig)
|
static int async_data_handler_start(RIG *rig)
|
||||||
{
|
{
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
async_data_handler_priv_data *async_data_handler_priv;
|
async_data_handler_priv_data *async_data_handler_priv;
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
@ -8293,7 +8293,7 @@ static int async_data_handler_start(RIG *rig)
|
||||||
#if defined(HAVE_PTHREAD)
|
#if defined(HAVE_PTHREAD)
|
||||||
static int morse_data_handler_start(RIG *rig)
|
static int morse_data_handler_start(RIG *rig)
|
||||||
{
|
{
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
morse_data_handler_priv_data *morse_data_handler_priv;
|
morse_data_handler_priv_data *morse_data_handler_priv;
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
@ -8334,7 +8334,7 @@ static int morse_data_handler_start(RIG *rig)
|
||||||
#if defined(HAVE_PTHREAD)
|
#if defined(HAVE_PTHREAD)
|
||||||
static int async_data_handler_stop(RIG *rig)
|
static int async_data_handler_stop(RIG *rig)
|
||||||
{
|
{
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
async_data_handler_priv_data *async_data_handler_priv;
|
async_data_handler_priv_data *async_data_handler_priv;
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
@ -8375,7 +8375,7 @@ static int async_data_handler_stop(RIG *rig)
|
||||||
#if defined(HAVE_PTHREAD)
|
#if defined(HAVE_PTHREAD)
|
||||||
static int morse_data_handler_stop(RIG *rig)
|
static int morse_data_handler_stop(RIG *rig)
|
||||||
{
|
{
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
morse_data_handler_priv_data *morse_data_handler_priv;
|
morse_data_handler_priv_data *morse_data_handler_priv;
|
||||||
|
|
||||||
ENTERFUNC;
|
ENTERFUNC;
|
||||||
|
@ -8390,7 +8390,7 @@ static int morse_data_handler_stop(RIG *rig)
|
||||||
hl_usleep(100 * 1000);
|
hl_usleep(100 * 1000);
|
||||||
|
|
||||||
//HAMLIB_TRACE;
|
//HAMLIB_TRACE;
|
||||||
while (peek(rig->state.fifo_morse) >= 0)
|
while (peek(rs->fifo_morse) >= 0)
|
||||||
{
|
{
|
||||||
HAMLIB_TRACE;
|
HAMLIB_TRACE;
|
||||||
rig_debug(RIG_DEBUG_TRACE, "%s: waiting for fifo queue to flush\n", __func__);
|
rig_debug(RIG_DEBUG_TRACE, "%s: waiting for fifo queue to flush\n", __func__);
|
||||||
|
@ -8435,7 +8435,7 @@ void *async_data_handler(void *arg)
|
||||||
arg;
|
arg;
|
||||||
RIG *rig = args->rig;
|
RIG *rig = args->rig;
|
||||||
unsigned char frame[MAX_FRAME_LENGTH];
|
unsigned char frame[MAX_FRAME_LENGTH];
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s: Starting async data handler thread\n",
|
rig_debug(RIG_DEBUG_VERBOSE, "%s: Starting async data handler thread\n",
|
||||||
__func__);
|
__func__);
|
||||||
|
@ -8521,18 +8521,19 @@ void *morse_data_handler(void *arg)
|
||||||
struct morse_data_handler_args_s *args =
|
struct morse_data_handler_args_s *args =
|
||||||
(struct morse_data_handler_args_s *) arg;
|
(struct morse_data_handler_args_s *) arg;
|
||||||
RIG *rig = args->rig;
|
RIG *rig = args->rig;
|
||||||
const struct rig_state *rs = &rig->state;
|
const struct rig_state *rs = STATE(rig);
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
rig_debug(RIG_DEBUG_VERBOSE, "%s: Starting morse data handler thread\n",
|
rig_debug(RIG_DEBUG_VERBOSE, "%s: Starting morse data handler thread\n",
|
||||||
__func__);
|
__func__);
|
||||||
|
|
||||||
if (rig->state.fifo_morse == NULL)
|
if (STATE(rig)->fifo_morse == NULL)
|
||||||
{
|
{
|
||||||
rig->state.fifo_morse = calloc(1, sizeof(FIFO_RIG));
|
// Can't use rs-> 'cuz it's const
|
||||||
|
STATE(rig)->fifo_morse = calloc(1, sizeof(FIFO_RIG));
|
||||||
}
|
}
|
||||||
|
|
||||||
initFIFO(rig->state.fifo_morse);
|
initFIFO(rs->fifo_morse);
|
||||||
|
|
||||||
char *c;
|
char *c;
|
||||||
int qsize = rig->caps->morse_qsize; // if backend overrides qsize
|
int qsize = rig->caps->morse_qsize; // if backend overrides qsize
|
||||||
|
@ -8548,14 +8549,14 @@ void *morse_data_handler(void *arg)
|
||||||
|
|
||||||
for (n = 0; n < qsize; n++)
|
for (n = 0; n < qsize; n++)
|
||||||
{
|
{
|
||||||
int d = peek(rig->state.fifo_morse);
|
int d = peek(rs->fifo_morse);
|
||||||
|
|
||||||
if (d < 0)
|
if (d < 0)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
d = pop(rig->state.fifo_morse);
|
d = pop(rs->fifo_morse);
|
||||||
c[n] = (char) d;
|
c[n] = (char) d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8623,7 +8624,7 @@ void *morse_data_handler(void *arg)
|
||||||
if (result == -RIG_EINVAL)
|
if (result == -RIG_EINVAL)
|
||||||
{
|
{
|
||||||
// severe error -- so flush it and stop
|
// severe error -- so flush it and stop
|
||||||
resetFIFO(rig->state.fifo_morse);
|
resetFIFO(rs->fifo_morse);
|
||||||
nloops = 0;
|
nloops = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8634,7 +8635,7 @@ void *morse_data_handler(void *arg)
|
||||||
nloops--;
|
nloops--;
|
||||||
|
|
||||||
}
|
}
|
||||||
while (result != RIG_OK && rig->state.fifo_morse->flush == 0 && --nloops > 0);
|
while (result != RIG_OK && STATE(rig)->fifo_morse->flush == 0 && --nloops > 0);
|
||||||
|
|
||||||
MUTEX_UNLOCK(morse_mutex);
|
MUTEX_UNLOCK(morse_mutex);
|
||||||
|
|
||||||
|
@ -8645,13 +8646,13 @@ void *morse_data_handler(void *arg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rig->state.fifo_morse->flush = 0; // reset flush flag
|
rs->fifo_morse->flush = 0; // reset flush flag
|
||||||
hl_usleep(100 * 1000);
|
hl_usleep(100 * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(rig->state.fifo_morse);
|
free(STATE(rig)->fifo_morse);
|
||||||
free(c);
|
free(c);
|
||||||
rig->state.fifo_morse = NULL;
|
STATE(rig)->fifo_morse = NULL;
|
||||||
pthread_exit(NULL);
|
pthread_exit(NULL);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -8830,7 +8831,7 @@ HAMLIB_EXPORT(int) rig_is_model(RIG *rig, rig_model_t model)
|
||||||
#if defined(HAVE_PTHREAD)
|
#if defined(HAVE_PTHREAD)
|
||||||
int morse_data_handler_set_keyspd(RIG *rig, int keyspd)
|
int morse_data_handler_set_keyspd(RIG *rig, int keyspd)
|
||||||
{
|
{
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = STATE(rig);
|
||||||
morse_data_handler_priv_data *morse_data_handler_priv =
|
morse_data_handler_priv_data *morse_data_handler_priv =
|
||||||
(morse_data_handler_priv_data *) rs->morse_data_handler_priv_data;
|
(morse_data_handler_priv_data *) rs->morse_data_handler_priv_data;
|
||||||
morse_data_handler_priv->keyspd = keyspd;
|
morse_data_handler_priv->keyspd = keyspd;
|
||||||
|
@ -8870,6 +8871,9 @@ HAMLIB_EXPORT(void *) rig_data_pointer(RIG *rig, rig_ptrx_t idx)
|
||||||
case RIG_PTRX_CACHE:
|
case RIG_PTRX_CACHE:
|
||||||
return CACHE(rig);
|
return CACHE(rig);
|
||||||
|
|
||||||
|
case RIG_PTRX_STATE:
|
||||||
|
return STATE(rig);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
rig_debug(RIG_DEBUG_ERR, "%s: Invalid data index=%d\n", __func__, idx);
|
rig_debug(RIG_DEBUG_ERR, "%s: Invalid data index=%d\n", __func__, idx);
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
Ładowanie…
Reference in New Issue