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
|
#endif
|
||||||
rmode_t mode;
|
rmode_t mode;
|
||||||
pbwidth_t width;
|
pbwidth_t width;
|
||||||
|
pbwidth_t widthB; // if non-zero then rig has separate width for VFOB
|
||||||
ptt_t ptt;
|
ptt_t ptt;
|
||||||
split_t split;
|
split_t split;
|
||||||
vfo_t split_vfo; // split caches two values
|
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_freq; // last vfo cached
|
||||||
vfo_t vfo_mode; // last vfo cached
|
vfo_t vfo_mode; // last vfo cached
|
||||||
int satmode; // if rig is in satellite mode
|
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 */
|
int poll_interval; /*!< Event notification polling period in milliseconds */
|
||||||
freq_t current_freq; /*!< Frequency currently set */
|
freq_t current_freq; /*!< Frequency currently set */
|
||||||
rmode_t current_mode; /*!< Mode 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 */
|
pbwidth_t current_width; /*!< Passband width currently set */
|
||||||
vfo_t tx_vfo; /*!< Tx VFO currently set */
|
vfo_t tx_vfo; /*!< Tx VFO currently set */
|
||||||
rmode_t mode_list; /*!< Complete list of modes for this rig */
|
rmode_t mode_list; /*!< Complete list of modes for this rig */
|
||||||
|
|
38
src/rig.c
38
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.current_width = width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vfo == RIG_VFO_B || vfo == RIG_VFO_SUB || vfo == RIG_VFO_MAIN_B)
|
||||||
|
{
|
||||||
rig->state.cache.mode = mode;
|
rig->state.cache.mode = mode;
|
||||||
rig->state.cache.vfo_mode = vfo;
|
}
|
||||||
|
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);
|
elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_SET);
|
||||||
|
|
||||||
RETURNFUNC(retcode);
|
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);
|
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)
|
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);
|
rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age=%dms\n", __func__, cache_ms);
|
||||||
*mode = rig->state.cache.mode;
|
*mode = rig->state.cache.mode;
|
||||||
*width = rig->state.cache.width;
|
*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);
|
RETURNFUNC(RIG_OK);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2129,8 +2144,21 @@ int HAMLIB_API rig_get_mode(RIG *rig,
|
||||||
}
|
}
|
||||||
|
|
||||||
rig->state.cache.mode = *mode;
|
rig->state.cache.mode = *mode;
|
||||||
|
|
||||||
|
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.width = *width;
|
||||||
rig->state.cache.vfo_mode = vfo;
|
rig->state.cache.vfo_mode = vfo;
|
||||||
|
}
|
||||||
|
|
||||||
cache_ms = elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_SET);
|
cache_ms = elapsed_ms(&rig->state.cache.time_mode, HAMLIB_ELAPSED_SET);
|
||||||
|
|
||||||
RETURNFUNC(retcode);
|
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;
|
*freq = rig->state.cache.freqMainB;
|
||||||
*width = rig->state.cache.width;
|
*width = rig->state.cache.width;
|
||||||
|
|
||||||
|
if (rig->state.cache.widthB) { *width = rig->state.cache.widthB; }
|
||||||
}
|
}
|
||||||
else if (vfo == RIG_VFO_SUB_B)
|
else if (vfo == RIG_VFO_SUB_B)
|
||||||
{
|
{
|
||||||
*freq = rig->state.cache.freqSubB;
|
*freq = rig->state.cache.freqSubB;
|
||||||
*width = rig->state.cache.width;
|
*width = rig->state.cache.width;
|
||||||
|
|
||||||
|
if (rig->state.cache.widthB) { *width = rig->state.cache.widthB; }
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*freq = rig->state.cache.freqMainB;
|
*freq = rig->state.cache.freqMainB;
|
||||||
*width = rig->state.cache.width;
|
*width = rig->state.cache.width;
|
||||||
|
|
||||||
|
if (rig->state.cache.widthB) { *width = rig->state.cache.widthB; }
|
||||||
}
|
}
|
||||||
|
|
||||||
*split = rig->state.cache.split;
|
*split = rig->state.cache.split;
|
||||||
|
|
Ładowanie…
Reference in New Issue