kopia lustrzana https://github.com/Hamlib/Hamlib
Allow asyncio rigs to use cached-only values for rig_get_freq and rig_get_mode
https://github.com/Hamlib/Hamlib/issues/894pull/948/head
rodzic
86c62d5dbb
commit
afd595d2da
|
@ -2532,6 +2532,10 @@ struct rig_state {
|
|||
hamlib_port_t dcdport; /*!< DCD port (internal use). */
|
||||
/********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
|
||||
/********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/
|
||||
/* flags instructing the rig_get routines to use cached values when asyncio is in use */
|
||||
int use_cached_freq; /*<! flag instructing rig_get_freq to use cached values when asyncio is in use */
|
||||
int use_cached_mode; /*<! flag instructing rig_get_mode to use cached values when asyncio is in use */
|
||||
int use_cached_ptt; /*<! flag instructing rig_get_ptt to use cached values when asyncio is in use */
|
||||
};
|
||||
|
||||
//! @cond Doxygen_Suppress
|
||||
|
|
|
@ -8775,6 +8775,7 @@ int icom_process_async_frame(RIG *rig, size_t frame_length,
|
|||
// TODO: rig_set_cache_timeout_ms(rig, HAMLIB_CACHE_FREQ, HAMLIB_CACHE_ALWAYS);
|
||||
freq_t freq = (freq_t) from_bcd(frame + 5, (priv->civ_731_mode ? 4 : 5) * 2);
|
||||
rig_fire_freq_event(rig, RIG_VFO_CURR, freq);
|
||||
rs->use_cached_freq = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -8783,6 +8784,7 @@ int icom_process_async_frame(RIG *rig, size_t frame_length,
|
|||
// TODO: rig_set_cache_timeout_ms(rig, HAMLIB_CACHE_MODE, HAMLIB_CACHE_ALWAYS);
|
||||
icom2rig_mode(rig, frame[5], frame[6], &mode, &width);
|
||||
rig_fire_mode_event(rig, RIG_VFO_CURR, mode, width);
|
||||
rs->use_cached_mode = 1;
|
||||
break;
|
||||
|
||||
case C_CTL_SCP:
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#define BACKEND_VER "20220123"
|
||||
#define BACKEND_VER "20220128"
|
||||
|
||||
#define ICOM_IS_SECONDARY_VFO(vfo) ((vfo) & (RIG_VFO_B | RIG_VFO_SUB | RIG_VFO_SUB_B | RIG_VFO_MAIN_B))
|
||||
#define ICOM_GET_VFO_NUMBER(vfo) (ICOM_IS_SECONDARY_VFO(vfo) ? 0x01 : 0x00)
|
||||
|
|
|
@ -1795,7 +1795,7 @@ int HAMLIB_API rig_get_freq(RIG *rig, vfo_t vfo, freq_t *freq)
|
|||
rig_cache_show(rig, __func__, __LINE__);
|
||||
|
||||
if (*freq != 0 && (cache_ms_freq < rig->state.cache.timeout_ms
|
||||
|| rig->state.cache.timeout_ms == HAMLIB_CACHE_ALWAYS))
|
||||
|| (rig->state.cache.timeout_ms == HAMLIB_CACHE_ALWAYS || rig->state.use_cached_freq)))
|
||||
{
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: %s cache hit age=%dms, freq=%.0f\n", __func__,
|
||||
rig_strvfo(vfo), cache_ms_freq, *freq);
|
||||
|
@ -2114,7 +2114,7 @@ int HAMLIB_API rig_get_mode(RIG *rig,
|
|||
|
||||
rig_cache_show(rig, __func__, __LINE__);
|
||||
|
||||
if (rig->state.cache.timeout_ms == HAMLIB_CACHE_ALWAYS)
|
||||
if (rig->state.cache.timeout_ms == HAMLIB_CACHE_ALWAYS || rig->state.use_cached_mode)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age mode=%dms, width=%dms\n",
|
||||
__func__, cache_ms_mode, cache_ms_width);
|
||||
|
|
Ładowanie…
Reference in New Issue