kopia lustrzana https://github.com/Hamlib/Hamlib
Add modeB to caching
update rig_vfo_get_info to recognize different VFO caches https://github.com/Hamlib/Hamlib/issues/578pull/574/head
rodzic
396d985261
commit
8371f335cd
|
@ -2093,6 +2093,7 @@ struct rig_cache {
|
|||
#endif
|
||||
rmode_t mode;
|
||||
pbwidth_t width;
|
||||
pbwidth_t widthB; // if non-zero then rig has separate width for VFOB
|
||||
ptt_t ptt;
|
||||
split_t split;
|
||||
vfo_t split_vfo; // split caches two values
|
||||
|
@ -2113,6 +2114,7 @@ struct rig_cache {
|
|||
vfo_t vfo_freq; // last vfo cached
|
||||
vfo_t vfo_mode; // last vfo cached
|
||||
int satmode; // if rig is in satellite mode
|
||||
rmode_t modeB;
|
||||
};
|
||||
|
||||
|
||||
|
@ -2182,6 +2184,7 @@ struct rig_state {
|
|||
int poll_interval; /*!< Event notification polling period in milliseconds */
|
||||
freq_t current_freq; /*!< Frequency currently set */
|
||||
rmode_t current_mode; /*!< Mode currently set */
|
||||
//rmode_t current_modeB; /*!< Mode currently set VFOB */
|
||||
pbwidth_t current_width; /*!< Passband width currently set */
|
||||
vfo_t tx_vfo; /*!< Tx VFO currently set */
|
||||
rmode_t mode_list; /*!< Complete list of modes for this rig */
|
||||
|
|
44
src/rig.c
44
src/rig.c
|
@ -2011,8 +2011,16 @@ int HAMLIB_API rig_set_mode(RIG *rig, vfo_t vfo, rmode_t mode, pbwidth_t width)
|
|||
rig->state.current_width = width;
|
||||
}
|
||||
|
||||
rig->state.cache.mode = mode;
|
||||
rig->state.cache.vfo_mode = vfo;
|
||||
if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB || vfo == RIG_VFO_MAIN_B)
|
||||
{
|
||||
rig->state.cache.mode = mode;
|
||||
}
|
||||
else
|
||||
{
|
||||
rig->state.cache.modeB = mode;
|
||||
}
|
||||
|
||||
rig->state.cache.vfo_mode = mode; // is this still needed?
|
||||
elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_SET);
|
||||
|
||||
RETURNFUNC(retcode);
|
||||
|
@ -2062,13 +2070,20 @@ int HAMLIB_API rig_get_mode(RIG *rig,
|
|||
}
|
||||
|
||||
cache_ms = elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_GET);
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: cache check age=%dms\n", __func__, cache_ms);
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: %s cache check age=%dms\n", __func__,
|
||||
rig_strvfo(vfo), cache_ms);
|
||||
|
||||
if (cache_ms < rig->state.cache.timeout_ms && rig->state.cache.vfo_mode == vfo)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age=%dms\n", __func__, cache_ms);
|
||||
*mode = rig->state.cache.mode;
|
||||
*width = rig->state.cache.width;
|
||||
|
||||
if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB || vfo == RIG_VFO_MAIN_B)
|
||||
{
|
||||
*width = rig->state.cache.widthB;
|
||||
}
|
||||
|
||||
RETURNFUNC(RIG_OK);
|
||||
}
|
||||
else
|
||||
|
@ -2129,8 +2144,21 @@ int HAMLIB_API rig_get_mode(RIG *rig,
|
|||
}
|
||||
|
||||
rig->state.cache.mode = *mode;
|
||||
rig->state.cache.width = *width;
|
||||
rig->state.cache.vfo_mode = vfo;
|
||||
|
||||
if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB || vfo == RIG_VFO_MAIN_B)
|
||||
{
|
||||
rig->state.cache.widthB = *width;
|
||||
|
||||
if (*width == 0) { *width = rig->state.cache.width; }
|
||||
|
||||
rig->state.cache.modeB = vfo;
|
||||
}
|
||||
else
|
||||
{
|
||||
rig->state.cache.width = *width;
|
||||
rig->state.cache.vfo_mode = vfo;
|
||||
}
|
||||
|
||||
cache_ms = elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_SET);
|
||||
|
||||
RETURNFUNC(retcode);
|
||||
|
@ -5762,16 +5790,22 @@ int HAMLIB_API rig_get_vfo_info(RIG *rig, vfo_t vfo, freq_t *freq,
|
|||
{
|
||||
*freq = rig->state.cache.freqMainB;
|
||||
*width = rig->state.cache.width;
|
||||
|
||||
if (rig->state.cache.widthB) { *width = rig->state.cache.widthB; }
|
||||
}
|
||||
else if (vfo == RIG_VFO_SUB_B)
|
||||
{
|
||||
*freq = rig->state.cache.freqSubB;
|
||||
*width = rig->state.cache.width;
|
||||
|
||||
if (rig->state.cache.widthB) { *width = rig->state.cache.widthB; }
|
||||
}
|
||||
else
|
||||
{
|
||||
*freq = rig->state.cache.freqMainB;
|
||||
*width = rig->state.cache.width;
|
||||
|
||||
if (rig->state.cache.widthB) { *width = rig->state.cache.widthB; }
|
||||
}
|
||||
|
||||
*split = rig->state.cache.split;
|
||||
|
|
Ładowanie…
Reference in New Issue