diff --git a/rigs/icom/icom.c b/rigs/icom/icom.c index d12721e46..b3c540023 100644 --- a/rigs/icom/icom.c +++ b/rigs/icom/icom.c @@ -2098,7 +2098,17 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) else if (VFO_HAS_MAIN_SUB_A_B_ONLY && rig->state.cache.satmode) { vfo = RIG_VFO_SUB; } } - if ((vfo == RIG_VFO_A || vfo == RIG_VFO_B) && !VFO_HAS_A_B && VFO_HAS_MAIN_SUB) + else if ((vfo == RIG_VFO_A || vfo == RIG_VFO_MAIN) && VFO_HAS_MAIN_SUB_A_B_ONLY) + { + // If we're being asked for A/Main but we are a MainA/MainB rig change it + vfo = RIG_VFO_MAIN_A; + } + else if ((vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) && VFO_HAS_MAIN_SUB_A_B_ONLY) + { + // If we're being asked for B/Sub but we are a MainA/MainB rig change it + vfo = RIG_VFO_MAIN_B; + } + else if ((vfo == RIG_VFO_A || vfo == RIG_VFO_B) && !VFO_HAS_A_B && VFO_HAS_MAIN_SUB) { // If we're being asked for A/B but we are a Main/Sub rig change it vfo_t vfo_old = vfo; @@ -2108,6 +2118,7 @@ int icom_set_vfo(RIG *rig, vfo_t vfo) rig_strvfo(vfo)); } + if ((vfo == RIG_VFO_MAIN || vfo == RIG_VFO_SUB) && !VFO_HAS_MAIN_SUB) { rig_debug(RIG_DEBUG_ERR, "%s: Rig does not have VFO Main/Sub?\n", diff --git a/rigs/icom/icom.h b/rigs/icom/icom.h index 9127cc628..6be6e773c 100644 --- a/rigs/icom/icom.h +++ b/rigs/icom/icom.h @@ -30,7 +30,7 @@ #include #endif -#define BACKEND_VER "20210318" +#define BACKEND_VER "20210319" /* * defines used by comp_cal_str in rig.c