From 36ce3f18f4027daa01c3775c54456569306e6834 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 17 Oct 2016 18:01:38 +0100 Subject: [PATCH] Alter CW Id timing behaviour. --- MMDVMHost.cpp | 16 ++++++++++++++-- MMDVMHost.h | 1 + 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index d579a99..4dd308e 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -138,6 +138,7 @@ m_dstarEnabled(false), m_dmrEnabled(false), m_ysfEnabled(false), m_p25Enabled(false), +m_cwIdTime(0U), m_lookup(NULL), m_callsign() { @@ -270,7 +271,9 @@ int CMMDVMHost::run() LogInfo("CW Id Parameters"); LogInfo(" Time: %u mins", time); - m_cwIdTimer.setTimeout(time * 60U); + m_cwIdTime = time * 60U; + + m_cwIdTimer.setTimeout(m_cwIdTime / 4U); m_cwIdTimer.start(); } @@ -698,7 +701,8 @@ int CMMDVMHost::run() m_display->writeCW(); m_modem->sendCWId(m_callsign); - m_cwIdTimer.start(); //reset only after sending ID, timer-overflow after 49 days doesnt matter + m_cwIdTimer.setTimeout(m_cwIdTime); + m_cwIdTimer.start(); } } @@ -1098,6 +1102,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modem->setMode(MODE_DSTAR); m_mode = MODE_DSTAR; m_modeTimer.start(); + m_cwIdTimer.stop(); break; case MODE_DMR: @@ -1114,6 +1119,7 @@ void CMMDVMHost::setMode(unsigned char mode) } m_mode = MODE_DMR; m_modeTimer.start(); + m_cwIdTimer.stop(); break; case MODE_YSF: @@ -1126,6 +1132,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modem->setMode(MODE_YSF); m_mode = MODE_YSF; m_modeTimer.start(); + m_cwIdTimer.stop(); break; case MODE_P25: @@ -1138,6 +1145,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modem->setMode(MODE_P25); m_mode = MODE_P25; m_modeTimer.start(); + m_cwIdTimer.stop(); break; case MODE_LOCKOUT: @@ -1197,6 +1205,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_modem->setMode(MODE_IDLE); if (m_mode == MODE_ERROR || m_mode == MODE_LOCKOUT) { m_modem->sendCWId(m_callsign); + m_cwIdTimer.setTimeout(m_cwIdTime); + m_cwIdTimer.start(); + } else { + m_cwIdTimer.setTimeout(m_cwIdTime / 4U); m_cwIdTimer.start(); } m_display->setIdle(); diff --git a/MMDVMHost.h b/MMDVMHost.h index b55f22b..8206d7d 100644 --- a/MMDVMHost.h +++ b/MMDVMHost.h @@ -59,6 +59,7 @@ private: bool m_dmrEnabled; bool m_ysfEnabled; bool m_p25Enabled; + unsigned int m_cwIdTime; CDMRLookup* m_lookup; std::string m_callsign;