diff --git a/include/hamlib/rig.h b/include/hamlib/rig.h index af26c1341..508fd2c37 100644 --- a/include/hamlib/rig.h +++ b/include/hamlib/rig.h @@ -2080,6 +2080,7 @@ struct rig_cache { freq_t freqMainC; // VFO_C, VFO_MAINC freq_t freqSubA; // VFO_SUBA -- only for rigs with dual Sub VFOs freq_t freqSubB; // VFO_SUBB -- only for rigs with dual Sub VFOs + freq_t freqMem; // VFO_MEM -- last MEM channel #if 0 // future freq_t freqSubC; // VFO_SUBC -- only for rigs with 3 Sub VFOs #endif @@ -2095,6 +2096,7 @@ struct rig_cache { struct timespec time_freqMainC; struct timespec time_freqSubA; struct timespec time_freqSubB; + struct timespec time_freqMem; struct timespec time_vfo; struct timespec time_mode; struct timespec time_ptt; diff --git a/src/rig.c b/src/rig.c index c11f64373..4629f781c 100644 --- a/src/rig.c +++ b/src/rig.c @@ -1394,13 +1394,10 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_SET); break; -#if 0 - case RIG_VFO_C: // is there a MainC/SubC we need to cover? rig->state.cache.freqMainC = freq; elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_SET); break; -#endif case RIG_VFO_SUB_A: rig->state.cache.freqSubA = freq; @@ -1412,6 +1409,11 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq) elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_SET); break; + case RIG_VFO_MEM: + rig->state.cache.freqMem = freq; + elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_SET); + break; + default: rig_debug(RIG_DEBUG_ERR, "%s: unknown vfo?, vfo=%s\n", __func__, rig_strvfo(vfo)); @@ -1460,20 +1462,24 @@ static int get_cache_freq(RIG *rig, vfo_t vfo, freq_t *freq, int *cache_ms) *cache_ms = elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_GET); break; -#if 0 // future - case RIG_VFO_C: - case RIG_VFO_MAINC: + //case RIG_VFO_MAINC: // not used by any rig yet *freq = rig->state.cache.freqMainC; - *cache_ms = rig->state.cache.time_freqMainC; + *cache_ms = elapsed_ms(&rig->state.cache.time_freqMainC, HAMLIB_ELAPSED_GET); break; +#if 0 // no known rigs use this yet case RIG_VFO_SUBC: *freq = rig->state.cache.freqSubC; *cache_ms = rig->state.cache.time_freqSubC; break; #endif + case RIG_VFO_MEM: + *freq = rig->state.cache.freqMem; + *cache_ms = elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_GET); + break; + default: rig_debug(RIG_DEBUG_ERR, "%s: unknown vfo?, vfo=%s\n", __func__, rig_strvfo(vfo));