From 7d2a5078c48f188a54609fd7b0bbe654764a850a Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Mon, 5 Apr 2021 11:46:58 -0500 Subject: [PATCH] Fix get_vfo_info when VFOA is requested without setting VFOA first https://github.com/Hamlib/Hamlib/issues/648 --- src/rig.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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);