Disable icom_get_vfo as user twiddling VFO knob does not work while polling

current_vfo is still determined at startup
 https://github.com/Hamlib/Hamlib/issues/806
pull/816/head
Mike Black W9MDB 2021-09-29 05:46:53 -05:00
rodzic dd1376becf
commit a2b3a8d67e
2 zmienionych plików z 21 dodań i 13 usunięć
rigs/icom

Wyświetl plik

@ -967,10 +967,6 @@ icom_rig_open(RIG *rig)
rig_debug(RIG_DEBUG_ERR, "%s: Unable to determine USB echo status\n", __func__);
RETURNFUNC(retval);
}
// Determine active vfo again since it would have failed the 1st time
rig->state.current_vfo = icom_current_vfo(rig);
icom_current_vfo(rig);
}
rig->state.current_vfo = icom_current_vfo(rig);
@ -1736,7 +1732,12 @@ int icom_set_xit_new(RIG *rig, vfo_t vfo, shortfreq_t ts)
Has been tested for IC-746pro, Should work on the all dsp rigs ie pro models.
The 746 documentation says it has the get_if_filter, but doesn't give any decoding information ? Please test.
DSP filter setting ($1A$03), but not supported by every rig,
and some models like IC910/Omni VI Plus have a different meaning for
this subcommand
*/
pbwidth_t icom_get_dsp_flt(RIG *rig, rmode_t mode)
{
@ -1751,6 +1752,9 @@ pbwidth_t icom_get_dsp_flt(RIG *rig, rmode_t mode)
rig_debug(RIG_DEBUG_VERBOSE, "%s called, mode=%s\n", __func__,
rig_strrmode(mode));
// only these models that we know of -- keep set_dsp_flt in sync
if ((rig->caps->rig_model & (RIG_MODEL_IC7000 | RIG_MODEL_IC7800 | RIG_MODEL_IC7300 || RIG_MODEL_IC9700 || RIG_MODEL_IC7610)) == 0) RETURNFUNC(RIG_OK);
if (rig_has_get_func(rig, RIG_FUNC_RF)
&& (mode & (RIG_MODE_RTTY | RIG_MODE_RTTYR)))
{
@ -1831,6 +1835,9 @@ int icom_set_dsp_flt(RIG *rig, rmode_t mode, pbwidth_t width)
ENTERFUNC;
// only these models that we know of -- keep get_dsp in sync here
if ((rig->caps->rig_model & (RIG_MODEL_IC7000 | RIG_MODEL_IC7800 | RIG_MODEL_IC7300 || RIG_MODEL_IC9700 || RIG_MODEL_IC7610)) == 0) RETURNFUNC(RIG_OK);
if (RIG_PASSBAND_NOCHANGE == width)
{
RETURNFUNC(RIG_OK);
@ -2238,14 +2245,7 @@ int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
RETURNFUNC(-RIG_ERJCTED);
}
/* DSP filter setting ($1A$03), but not supported by every rig,
* and some models like IC910/Omni VI Plus have a different meaning for
* this subcommand
*/
if (rig->caps->rig_model == RIG_MODEL_IC7000)
{
icom_set_dsp_flt(rig, mode, width);
}
icom_set_dsp_flt(rig, mode, width);
RETURNFUNC(RIG_OK);
}
@ -2552,6 +2552,9 @@ int icom_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width)
RETURNFUNC(RIG_OK);
}
#if 0
// this seems to work but not for cqrlog and user twiddling VFO knob.
// may be able to use twiddle but will disable for now
/*
* icom_get_vfo
* Assumes rig!=NULL, rig->state.priv!=NULL
@ -2564,6 +2567,7 @@ int icom_get_vfo(RIG *rig, vfo_t *vfo)
RETURNFUNC(RIG_OK);
}
#endif
/*
* icom_set_vfo

Wyświetl plik

@ -30,7 +30,7 @@
#include <sys/time.h>
#endif
#define BACKEND_VER "20210928"
#define BACKEND_VER "20210929"
#define ICOM_IS_SECONDARY_VFO(vfo) ((vfo) & (RIG_VFO_B | RIG_VFO_SUB | RIG_VFO_SUB_B | RIG_VFO_MAIN_B))
#define ICOM_GET_VFO_NUMBER(vfo) (ICOM_IS_SECONDARY_VFO(vfo) ? 0x01 : 0x00)
@ -308,7 +308,11 @@ int icom_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width);
int icom_get_mode_with_data(RIG *rig, vfo_t vfo, rmode_t *mode,
pbwidth_t *width);
int icom_get_mode(RIG *rig, vfo_t vfo, rmode_t *mode, pbwidth_t *width);
#if 0 // see icom_get_vfo in icom.c
int icom_get_vfo(RIG *rig, vfo_t *vfo);
#else
#define icom_get_vfo NULL
#endif
int icom_set_vfo(RIG *rig, vfo_t vfo);
int icom_set_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t rptr_shift);
int icom_get_rptr_shift(RIG *rig, vfo_t vfo, rptr_shift_t *rptr_shift);