diff --git a/DGIdGateway/Conf.cpp b/DGIdGateway/Conf.cpp index 8d8064b..f0548d2 100644 --- a/DGIdGateway/Conf.cpp +++ b/DGIdGateway/Conf.cpp @@ -50,6 +50,7 @@ m_myAddress(), m_myPort(0U), m_rfHangTime(60U), m_netHangTime(60U), +m_bleep(true), m_debug(false), m_daemon(false), m_rxFrequency(0U), @@ -179,6 +180,8 @@ bool CConf::read() m_ysfRFHangTime = m_fcsRFHangTime = m_rfHangTime = (unsigned int)::atoi(value); else if (::strcmp(key, "NetHangTime") == 0) m_ysfNetHangTime = m_fcsNetHangTime = m_netHangTime = (unsigned int)::atoi(value); + else if (::strcmp(key, "Bleep") == 0) + m_bleep = ::atoi(value) == 1; else if (::strcmp(key, "Debug") == 0) m_debug = ::atoi(value) == 1; else if (::strcmp(key, "Daemon") == 0) @@ -331,6 +334,11 @@ unsigned int CConf::getMyPort() const return m_myPort; } +bool CConf::getBleep() const +{ + return m_bleep; +} + bool CConf::getDebug() const { return m_debug; diff --git a/DGIdGateway/Conf.h b/DGIdGateway/Conf.h index 97c4046..88931ce 100644 --- a/DGIdGateway/Conf.h +++ b/DGIdGateway/Conf.h @@ -58,6 +58,7 @@ public: unsigned int getRptPort() const; std::string getMyAddress() const; unsigned int getMyPort() const; + bool getBleep() const; bool getDebug() const; bool getDaemon() const; @@ -105,6 +106,7 @@ private: unsigned int m_myPort; unsigned int m_rfHangTime; unsigned int m_netHangTime; + bool m_bleep; bool m_debug; bool m_daemon; diff --git a/DGIdGateway/DGIdGateway.cpp b/DGIdGateway/DGIdGateway.cpp index f347a7a..f83e9bb 100644 --- a/DGIdGateway/DGIdGateway.cpp +++ b/DGIdGateway/DGIdGateway.cpp @@ -216,6 +216,7 @@ int CDGIdGateway::run() } unsigned int currentDGId = 0U; + bool fromRF = false; CDGIdNetwork* dgIdNetwork[100U]; for (unsigned int i = 0U; i < 100U; i++) @@ -397,6 +398,7 @@ int CDGIdGateway::run() createGPS(); CTimer inactivityTimer(1000U); + CTimer bleepTimer(1000U, 1U); CStopWatch stopWatch; stopWatch.start(); @@ -438,6 +440,7 @@ int CDGIdGateway::run() LogMessage("DG-ID set to %u (%s) via RF", dgId, desc.c_str()); currentDGId = dgId; state = DS_NOTLINKED; + fromRF = true; } if (m_gps != NULL) @@ -464,10 +467,8 @@ int CDGIdGateway::run() if ((buffer[34U] & 0x01U) == 0x01U) { if (m_gps != NULL) m_gps->reset(); - if (nPips > 0U) { - sendPips(nPips); - nPips = 0U; - } + if (nPips > 0U && fromRF) + bleepTimer.start(); } } } @@ -493,6 +494,7 @@ int CDGIdGateway::run() LogMessage("DG-ID set to %u (%s) via Network", i, desc.c_str()); currentDGId = i; state = DS_LINKED; + fromRF = false; } } } @@ -526,14 +528,25 @@ int CDGIdGateway::run() state = DS_NOTLINKED; currentDGId = 0U; inactivityTimer.stop(); - sendPips(2U); + + if (fromRF) { + sendPips(2U); + fromRF = false; + } + } + + bleepTimer.clock(ms); + if (bleepTimer.isRunning() && bleepTimer.hasExpired()) { + sendPips(nPips); + bleepTimer.stop(); + nPips = 0U; } if (dgIdNetwork[currentDGId] != NULL) { DGID_STATUS netState = dgIdNetwork[currentDGId]->getStatus(); - if (state != DS_LINKED && netState == DS_LINKED) + if (fromRF && state != DS_LINKED && netState == DS_LINKED) nPips = 1U; - else if (state == DS_LINKED && netState != DS_LINKED) + else if (fromRF && state == DS_LINKED && netState != DS_LINKED) nPips = 3U; state = netState; } @@ -665,5 +678,10 @@ std::string CDGIdGateway::calculateLocator() void CDGIdGateway::sendPips(unsigned int n) { - LogMessage("*** %u bleep!", n); + if (n == 0U) + return; + + bool bleep = m_conf.getBleep(); + if (bleep) + LogMessage("*** %u bleep!", n); } diff --git a/DGIdGateway/DGIdGateway.ini b/DGIdGateway/DGIdGateway.ini index ef6dfce..0ea6e82 100644 --- a/DGIdGateway/DGIdGateway.ini +++ b/DGIdGateway/DGIdGateway.ini @@ -1,5 +1,5 @@ [General] -Callsign=G9BF +Callsign=G4KLX Suffix=RPT # Suffix=ND Id=1234567 @@ -9,6 +9,7 @@ LocalAddress=127.0.0.1 LocalPort=4200 RFHangTime=120 NetHangTime=120 +Bleep=1 Debug=0 Daemon=0 @@ -134,7 +135,7 @@ Debug=0 [DGId=55] # YCS Reflector YCS310 (DG-ID 80) Type=YCS -Static=1 +Static=0 Name=US-C4FM-NA Local=42025 DGId=80 diff --git a/DGIdGateway/Version.h b/DGIdGateway/Version.h index d41dcb0..1006c28 100644 --- a/DGIdGateway/Version.h +++ b/DGIdGateway/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20200922"; +const char* VERSION = "20200923"; #endif