Add resetting of all VFO caches via set_cache_freq using RIG_VFO_ALL

https://github.com/Hamlib/Hamlib/issues/539
pull/544/head
Michael Black W9MDB 2021-02-09 15:41:33 -06:00
rodzic cfaa761c83
commit 5b59868191
2 zmienionych plików z 13 dodań i 0 usunięć

Wyświetl plik

@ -442,6 +442,10 @@ typedef unsigned int vfo_t;
/** \brief \c Flag to set if VFO can transmit */
#define RIG_VFO_TX_FLAG RIG_VFO_N(30)
/** \brief \c Flag to set all VFOS */
#define RIG_VFO_ALL RIG_VFO_N(31)
// we and also use RIG_VFO_N(31) if needed
// Misc VFO Macros

Wyświetl plik

@ -1377,6 +1377,14 @@ static int set_cache_freq(RIG *rig, vfo_t vfo, freq_t freq)
switch (vfo)
{
case RIG_VFO_ALL: // we'll use NONE to reset all VFO caches
elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_INVALIDATE);
elapsed_ms(&rig->state.cache.time_freqMainA, HAMLIB_ELAPSED_INVALIDATE);
elapsed_ms(&rig->state.cache.time_freqMainB, HAMLIB_ELAPSED_INVALIDATE);
elapsed_ms(&rig->state.cache.time_freqSubA, HAMLIB_ELAPSED_INVALIDATE);
elapsed_ms(&rig->state.cache.time_freqSubB, HAMLIB_ELAPSED_INVALIDATE);
elapsed_ms(&rig->state.cache.time_freqMem, HAMLIB_ELAPSED_INVALIDATE);
break;
case RIG_VFO_CURR:
rig->state.cache.freqCurr = freq;
elapsed_ms(&rig->state.cache.time_freqCurr, HAMLIB_ELAPSED_SET);
@ -1622,6 +1630,7 @@ int HAMLIB_API rig_set_freq(RIG *rig, vfo_t vfo, freq_t freq)
)
{
elapsed_ms(&rig->state.cache.time_freq, HAMLIB_ELAPSED_INVALIDATE);
set_cache_freq(rig, RIG_VFO_ALL, (freq_t)0);
retcode = rig_get_freq(rig, vfo, &freq_new);
if (retcode != RIG_OK) { RETURNFUNC(retcode); }