diff --git a/src/rig.c b/src/rig.c index 40174d542..872760bda 100644 --- a/src/rig.c +++ b/src/rig.c @@ -6002,8 +6002,11 @@ int HAMLIB_API rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq, if (retval != RIG_OK) { RETURNFUNC(retval); } - if ((vfo == RIG_VFO_B || vfo == RIG_VFO_SUB) - && (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE)) + // we will ask for other vfo mode just once if not targetable + int allTheTimeA = vfo & (RIG_VFO_A | RIG_VFO_CURR | RIG_VFO_MAIN_A | RIG_VFO_SUB_A); + int allTheTimeB = (vfo &(RIG_VFO_B | RIG_VFO_SUB)) && (rig->caps->targetable_vfo & RIG_TARGETABLE_MODE); + int justOnceB = (vfo &(RIG_VFO_B | RIG_VFO_SUB)) && (rig->state.cache.modeMainB == RIG_MODE_NONE); + if (allTheTimeA || allTheTimeB || justOnceB) { retval = rig_get_mode(rig, vfo, mode, width);