Fix IC9100 rigctld startup where it was starting on VFOA and ending up on VFOB

https://github.com/Hamlib/Hamlib/issues/1656
pull/1662/head
Michael Black W9MDB 2025-01-15 08:11:02 -06:00
rodzic 24d67437b7
commit a985b50eea
2 zmienionych plików z 12 dodań i 8 usunięć

Wyświetl plik

@ -111,12 +111,15 @@ static const struct icom_priv_caps ic9100_priv_caps =
.data_mode_supported = 1
};
// borrow this as they behave the same
extern int ic9700_set_vfo(RIG *rig, vfo_t vfo);
struct rig_caps ic9100_caps =
{
RIG_MODEL(RIG_MODEL_IC9100),
.model_name = "IC-9100",
.mfg_name = "Icom",
.version = BACKEND_VER ".5",
.version = BACKEND_VER ".6",
.copyright = "LGPL",
.status = RIG_STATUS_STABLE,
.rig_type = RIG_TYPE_TRANSCEIVER,
@ -250,8 +253,7 @@ struct rig_caps ic9100_caps =
.get_mode = icom_get_mode,
.set_mode = icom_set_mode,
.set_vfo = icom_set_vfo,
.set_vfo = ic9700_set_vfo,
// .get_vfo = icom_get_vfo,
.set_ant = icom_set_ant,
.get_ant = icom_get_ant,

Wyświetl plik

@ -1547,7 +1547,7 @@ int HAMLIB_API rig_open(RIG *rig)
{
vfo_t myvfo = RIG_VFO_A;
if (rig->caps->rig_model == RIG_MODEL_IC9700) { myvfo = RIG_VFO_MAIN_A; }
if (rig->caps->rig_model == RIG_MODEL_IC9700 || rig->caps->rig_model == RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_A; }
retval = rig_get_freq(rig, myvfo, &freq);
@ -1557,7 +1557,7 @@ int HAMLIB_API rig_open(RIG *rig)
vfo_t tx_vfo = RIG_VFO_NONE;
myvfo = RIG_VFO_B;
if (rig->caps->rig_model == RIG_MODEL_IC9700) { myvfo = RIG_VFO_MAIN_B; }
if (rig->caps->rig_model == RIG_MODEL_IC9700 || rig->caps->rig_model == RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_B; }
rig_get_freq(rig, myvfo, &freq);
rig_get_split_vfo(rig, RIG_VFO_RX, &split, &tx_vfo);
@ -1570,7 +1570,7 @@ int HAMLIB_API rig_open(RIG *rig)
{
myvfo = RIG_VFO_A;
if (rig->caps->rig_model == RIG_MODEL_IC9700) { myvfo = RIG_VFO_MAIN_A; }
if (rig->caps->rig_model == RIG_MODEL_IC9700 || rig->caps->rig_model == RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_A; }
rig_get_mode(rig, myvfo, &mode, &width);
@ -1578,7 +1578,7 @@ int HAMLIB_API rig_open(RIG *rig)
{
myvfo = RIG_VFO_B;
if (rig->caps->rig_model == RIG_MODEL_IC9700) { myvfo = RIG_VFO_MAIN_A; }
if (rig->caps->rig_model == RIG_MODEL_IC9700 || rig->caps->rig_model == RIG_MODEL_IC9100) { myvfo = RIG_VFO_MAIN_A; }
rig_debug(RIG_DEBUG_VERBOSE, "xxxsplit=%d\n", split);
HAMLIB_TRACE;
@ -2373,6 +2373,7 @@ int rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
rig_set_cache_freq(rig, vfo, freq_new);
rig_debug(RIG_DEBUG_ERR, "%s: vfo=%s, save=%s\n", __func__, rig_strvfo(vfo), rig_strvfo(vfo_save));
if (vfo != vfo_save && vfo != RIG_VFO_CURR)
{
HAMLIB_TRACE;
@ -2539,8 +2540,9 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
// WSJT-X senses rig precision with 55 and 56 Hz values
// We do not want to allow cache response with these values
int wsjtx_special = ((long) * freq % 100) == 55 || ((long) * freq % 100) == 56;
int rig_special = rig->caps->rig_model == RIG_MODEL_IC9100;
if (!wsjtx_special && *freq != 0 && (cache_ms_freq < cachep->timeout_ms
if (!rig_special && !wsjtx_special && *freq != 0 && (cache_ms_freq < cachep->timeout_ms
|| (cachep->timeout_ms == HAMLIB_CACHE_ALWAYS
|| rs->use_cached_freq)))
{