Slow freq events to 4 per second

pull/1523/head
Mike Black W9MDB 2024-03-03 12:23:33 -06:00
rodzic c74b3c10c6
commit dc38d19449
2 zmienionych plików z 17 dodań i 6 usunięć

Wyświetl plik

@ -2663,7 +2663,7 @@ typedef unsigned int rig_comm_status_t;
* that may be updated (ie. customized)
*
* It is NOT fine to move fields around as it can break share library offset
* As of 2021-03-03 vfo_list is the last known item being reference externally
* As of 2024-03-03 freq_event_elapsed is the last known item being reference externally
* So any additions or changes to this structure must be at the end of the structure
*/
struct rig_state {
@ -2849,6 +2849,7 @@ struct rig_state {
char device_id[HAMLIB_RIGNAMSIZ];
int dual_watch; /*!< Boolean DUAL_WATCH status */
int post_ptt_delay; /*!< delay after PTT to allow for relays and such */
struct timespec freq_event_elapsed;
// New rig_state items go before this line ============================================
};

Wyświetl plik

@ -627,12 +627,22 @@ int rig_fire_freq_event(RIG *rig, vfo_t vfo, freq_t freq)
rig->state.use_cached_freq = 1;
}
network_publish_rig_transceive_data(rig);
if (rig->callbacks.freq_event)
if (rig->state.freq_event_elapsed.tv_sec == 0)
{
rig->callbacks.freq_event(rig, vfo, freq, rig->callbacks.freq_arg);
elapsed_ms(&rig->state.freq_event_elapsed, HAMLIB_ELAPSED_SET);
}
double e = elapsed_ms(&rig->state.freq_event_elapsed, HAMLIB_ELAPSED_GET);
if (e >= 250) // throttle events to 4 per sec
{
elapsed_ms(&rig->state.freq_event_elapsed, HAMLIB_ELAPSED_SET);
network_publish_rig_transceive_data(rig);
if (rig->callbacks.freq_event)
{
rig->callbacks.freq_event(rig, vfo, freq, rig->callbacks.freq_arg);
}
}
RETURNFUNC(0);