From 956e9e829ba453f28a0ac5bc9fddcad1aeed2092 Mon Sep 17 00:00:00 2001 From: Bryan Biedenkapp Date: Wed, 25 May 2022 16:59:00 -0400 Subject: [PATCH] add support to alter the processing tick delays; --- config.example.yml | 2 ++ host/Host.cpp | 23 ++++++++++++++++------- host/Host.h | 3 +++ 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/config.example.yml b/config.example.yml index 4bf1337f..c7cba6ff 100644 --- a/config.example.yml +++ b/config.example.yml @@ -86,6 +86,8 @@ system: # netModeHang: 10 # fixedMode: false rfTalkgroupHang: 10 + activeTickDelay: 5 + idleTickDelay: 5 info: latitude: -83.689428 longitude: -39.194973 diff --git a/host/Host.cpp b/host/Host.cpp index 499b6728..4295c79d 100644 --- a/host/Host.cpp +++ b/host/Host.cpp @@ -69,10 +69,8 @@ using namespace lookups; // Constants // --------------------------------------------------------------------------- -#define IDLE_SLEEP_MS 5U -#define ACTIVE_SLEEP_MS 1U - #define CW_IDLE_SLEEP_MS 50U +#define IDLE_WARMUP_MS 5U // --------------------------------------------------------------------------- // Public Class Members @@ -122,6 +120,8 @@ Host::Host(const std::string& confFile) : m_p25CCData(false), m_p25CtrlChannel(false), m_p25CtrlBroadcast(false), + m_activeTickDelay(5U), + m_idleTickDelay(5U), m_remoteControl(NULL) { UDPSocket::startup(); @@ -621,7 +621,7 @@ int Host::run() if (m_network != NULL) m_network->clock(ms); - Thread::sleep(IDLE_SLEEP_MS); + Thread::sleep(IDLE_WARMUP_MS); if (elapsedMs > 15000U) break; @@ -1302,10 +1302,10 @@ int Host::run() m_modeTimer.clock(ms); - if ((m_state != STATE_IDLE) && ms <= 1U) - Thread::sleep(ACTIVE_SLEEP_MS); + if ((m_state != STATE_IDLE) && ms <= m_activeTickDelay) + Thread::sleep(m_activeTickDelay); if (m_state == STATE_IDLE) - Thread::sleep(IDLE_SLEEP_MS); + Thread::sleep(m_idleTickDelay); } setState(HOST_STATE_QUIT); @@ -1359,6 +1359,13 @@ bool Host::readParams() if (!systemConf["modeHang"].isNone()) { m_rfModeHang = m_netModeHang = systemConf["modeHang"].as(); } + + m_activeTickDelay = (uint8_t)systemConf["activeTickDelay"].as(5U); + if (m_activeTickDelay < 1U) + m_activeTickDelay = 1U; + m_idleTickDelay = (uint8_t)systemConf["idleTickDelay"].as(5U); + if (m_idleTickDelay < 1U) + m_idleTickDelay = 1U; m_identity = systemConf["identity"].as(); m_fixedMode = systemConf["fixedMode"].as(false); @@ -1380,6 +1387,8 @@ bool Host::readParams() if (!m_duplex) { LogInfo(" Simplex Same Frequency: %s", simplexSameFreq ? "yes" : "no"); } + LogInfo(" Active Tick Delay: %ums", m_activeTickDelay); + LogInfo(" Idle Tick Delay: %ums", m_idleTickDelay); LogInfo(" Timeout: %us", m_timeout); LogInfo(" RF Mode Hang: %us", m_rfModeHang); LogInfo(" RF Talkgroup Hang: %us", m_rfTalkgroupHang); diff --git a/host/Host.h b/host/Host.h index 8e570d9b..456442e8 100644 --- a/host/Host.h +++ b/host/Host.h @@ -128,6 +128,9 @@ private: uint32_t m_p25SysId; uint8_t m_p25RfssId; + uint8_t m_activeTickDelay; + uint8_t m_idleTickDelay; + friend class RemoteControl; RemoteControl* m_remoteControl;