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
dc34cae503
|
@ -2532,6 +2532,10 @@ struct rig_state {
|
||||||
hamlib_port_t dcdport; /*!< DCD port (internal use). */
|
hamlib_port_t dcdport; /*!< DCD port (internal use). */
|
||||||
/********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
|
/********* DO NOT ADD or CHANGE anything (or than to rename) ABOVE THIS LINE *********/
|
||||||
/********* ENSURE ANY NEW ITEMS ARE ADDED AFTER HERE *********/
|
/********* 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
|
//! @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);
|
// 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);
|
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);
|
rig_fire_freq_event(rig, RIG_VFO_CURR, freq);
|
||||||
|
rs->use_cached_freq = 1;
|
||||||
break;
|
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);
|
// TODO: rig_set_cache_timeout_ms(rig, HAMLIB_CACHE_MODE, HAMLIB_CACHE_ALWAYS);
|
||||||
icom2rig_mode(rig, frame[5], frame[6], &mode, &width);
|
icom2rig_mode(rig, frame[5], frame[6], &mode, &width);
|
||||||
rig_fire_mode_event(rig, RIG_VFO_CURR, mode, width);
|
rig_fire_mode_event(rig, RIG_VFO_CURR, mode, width);
|
||||||
|
rs->use_cached_mode = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case C_CTL_SCP:
|
case C_CTL_SCP:
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#endif
|
#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_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)
|
#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__);
|
rig_cache_show(rig, __func__, __LINE__);
|
||||||
|
|
||||||
if (*freq != 0 && (cache_ms_freq < rig->state.cache.timeout_ms
|
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_debug(RIG_DEBUG_TRACE, "%s: %s cache hit age=%dms, freq=%.0f\n", __func__,
|
||||||
rig_strvfo(vfo), cache_ms_freq, *freq);
|
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__);
|
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",
|
rig_debug(RIG_DEBUG_TRACE, "%s: cache hit age mode=%dms, width=%dms\n",
|
||||||
__func__, cache_ms_mode, cache_ms_width);
|
__func__, cache_ms_mode, cache_ms_width);
|
||||||
|
|
Ładowanie…
Reference in New Issue