From dd029a3082a1c53a3c139bcb98bb48ba6a69fd06 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Thu, 8 Dec 2022 22:26:09 -0600 Subject: [PATCH] Fix FTDX3000 split problem with sticking on Sub VFO https://github.com/Hamlib/Hamlib/issues/1177 --- NEWS | 1 + src/rig.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 13a3d4e04..eb8e4432c 100644 --- a/NEWS +++ b/NEWS @@ -16,6 +16,7 @@ Version 4.6 * 2023-11-XX -- Planned for Nov 2023 * Add MDS 4710/9710 rigs * Add NB2 for FT2000 + * Fix FTDX3000 rig split Version 4.5.1 * 2022-XX-XX diff --git a/src/rig.c b/src/rig.c index 7c8b326f0..bddad1e8e 100644 --- a/src/rig.c +++ b/src/rig.c @@ -2888,12 +2888,12 @@ int HAMLIB_API rig_get_vfo(RIG *rig, vfo_t *vfo) } cache_ms = elapsed_ms(&rig->state.cache.time_vfo, HAMLIB_ELAPSED_GET); - rig_debug(RIG_DEBUG_TRACE, "%s: cache check age=%dms\n", __func__, cache_ms); + //rig_debug(RIG_DEBUG_TRACE, "%s: cache check age=%dms\n", __func__, cache_ms); if (cache_ms < rig->state.cache.timeout_ms) { - rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age=%dms\n", __func__, cache_ms); *vfo = rig->state.cache.vfo; + rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age=%dms, vfo=%s\n", __func__, cache_ms, rig_strvfo(*vfo)); ELAPSED2; RETURNFUNC(RIG_OK); } @@ -4424,12 +4424,12 @@ int HAMLIB_API rig_set_split_mode(RIG *rig, // so we turn it off, do our thing, and turn split back on rx_vfo = vfo; - if (tx_vfo == RIG_VFO_B) { rx_vfo = RIG_VFO_A; } + if (tx_vfo == RIG_VFO_B || tx_vfo == RIG_VFO_SUB) { rx_vfo = RIG_VFO_A; } - if (vfo == RIG_VFO_CURR && tx_vfo == RIG_VFO_B) { rx_vfo = RIG_VFO_A; } - else if (vfo == RIG_VFO_CURR && tx_vfo == RIG_VFO_A) { rx_vfo = RIG_VFO_B; } + if (vfo == RIG_VFO_CURR && tx_vfo == RIG_VFO_B) { rx_vfo = RIG_VFO_A; } + else if (vfo == RIG_VFO_CURR && tx_vfo == RIG_VFO_A) { rx_vfo = RIG_VFO_B; } else if (vfo == RIG_VFO_CURR && tx_vfo == RIG_VFO_MAIN) { rx_vfo = RIG_VFO_SUB; } - else if (vfo == RIG_VFO_CURR && tx_vfo == RIG_VFO_SUB) { rx_vfo = RIG_VFO_MAIN; } + else if (vfo == RIG_VFO_CURR && tx_vfo == RIG_VFO_SUB) { rx_vfo = RIG_VFO_MAIN; } rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): rx_vfo=%s, tx_vfo=%s\n", __func__, __LINE__, rig_strvfo(rx_vfo), rig_strvfo(tx_vfo)); @@ -4927,8 +4927,10 @@ int HAMLIB_API rig_set_split_vfo(RIG *rig, { switch (tx_vfo) { + case RIG_VFO_MAIN: case RIG_VFO_A: rx_vfo = split == 1 ? RIG_VFO_B : RIG_VFO_A; break; + case RIG_VFO_SUB: case RIG_VFO_B: rx_vfo = split == 1 ? RIG_VFO_A : RIG_VFO_B; break; }