From b524c14d1d3c9da111ea6aded42c8973b9f28a5c Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 29 Jun 2023 12:46:03 +0100 Subject: [PATCH] Make the compilation of POCSAG conditional. --- Conf.cpp | 24 +++++++++++++ Conf.h | 16 +++++++++ MMDVMHost.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++++++ MMDVMHost.h | 8 +++++ POCSAGControl.cpp | 57 ++----------------------------- POCSAGControl.h | 8 +++-- POCSAGNetwork.cpp | 8 +++-- POCSAGNetwork.h | 8 ++++- 8 files changed, 155 insertions(+), 60 deletions(-) diff --git a/Conf.cpp b/Conf.cpp index 41b357c..a74dd8b 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -44,7 +44,9 @@ enum SECTION { SECTION_P25, SECTION_NXDN, SECTION_M17, +#if defined(USE_POCSAG) SECTION_POCSAG, +#endif SECTION_FM, #if defined(USE_AX25) SECTION_AX25, @@ -55,7 +57,9 @@ enum SECTION { SECTION_P25_NETWORK, SECTION_NXDN_NETWORK, SECTION_M17_NETWORK, +#if defined(USE_POCSAG) SECTION_POCSAG_NETWORK, +#endif SECTION_FM_NETWORK, #if defined(USE_AX25) SECTION_AX25_NETWORK, @@ -188,7 +192,9 @@ m_m17SelfOnly(false), m_m17AllowEncryption(false), m_m17TXHang(5U), m_m17ModeHang(10U), +#if defined(USE_POCSAG) m_pocsagEnabled(false), +#endif m_pocsagFrequency(0U), m_fmEnabled(false), m_fmCallsign(), @@ -228,7 +234,9 @@ m_fmExtAudioBoost(1U), m_fmModeHang(10U), #if defined(USE_AX25) m_ax25Enabled(false), +#endif m_ax25TXDelay(300U), +#if defined(USE_AX25) m_ax25RXTwist(6), m_ax25SlotTime(30U), m_ax25PPersist(128U), @@ -280,6 +288,7 @@ m_m17LocalAddress(), m_m17LocalPort(0U), m_m17NetworkModeHang(3U), m_m17NetworkDebug(false), +#if defined(USE_POCSAG) m_pocsagNetworkEnabled(false), m_pocsagGatewayAddress(), m_pocsagGatewayPort(0U), @@ -287,6 +296,7 @@ m_pocsagLocalAddress(), m_pocsagLocalPort(0U), m_pocsagNetworkModeHang(3U), m_pocsagNetworkDebug(false), +#endif m_fmNetworkEnabled(false), m_fmNetworkProtocol("USRP"), m_fmGatewayAddress(), @@ -361,8 +371,10 @@ bool CConf::read() section = SECTION_NXDN; else if (::strncmp(buffer, "[M17]", 5U) == 0) section = SECTION_M17; +#if defined(USE_POCSAG) else if (::strncmp(buffer, "[POCSAG]", 8U) == 0) section = SECTION_POCSAG; +#endif else if (::strncmp(buffer, "[FM]", 4U) == 0) section = SECTION_FM; #if defined(USE_AX25) @@ -381,8 +393,10 @@ bool CConf::read() section = SECTION_NXDN_NETWORK; else if (::strncmp(buffer, "[M17 Network]", 13U) == 0) section = SECTION_M17_NETWORK; +#if defined(USE_POCSAG) else if (::strncmp(buffer, "[POCSAG Network]", 16U) == 0) section = SECTION_POCSAG_NETWORK; +#endif else if (::strncmp(buffer, "[FM Network]", 12U) == 0) section = SECTION_FM_NETWORK; #if defined(USE_AX25) @@ -772,11 +786,13 @@ bool CConf::read() m_m17TXHang = (unsigned int)::atoi(value); else if (::strcmp(key, "ModeHang") == 0) m_m17ModeHang = (unsigned int)::atoi(value); +#if defined(USE_POCSAG) } else if (section == SECTION_POCSAG) { if (::strcmp(key, "Enable") == 0) m_pocsagEnabled = ::atoi(value) == 1; else if (::strcmp(key, "Frequency") == 0) m_pocsagFrequency = (unsigned int)::atoi(value); +#endif } else if (section == SECTION_FM) { if (::strcmp(key, "Enable") == 0) m_fmEnabled = ::atoi(value) == 1; @@ -974,6 +990,7 @@ bool CConf::read() m_m17NetworkModeHang = (unsigned int)::atoi(value); else if (::strcmp(key, "Debug") == 0) m_m17NetworkDebug = ::atoi(value) == 1; +#if defined(USE_POCSAG) } else if (section == SECTION_POCSAG_NETWORK) { if (::strcmp(key, "Enable") == 0) m_pocsagNetworkEnabled = ::atoi(value) == 1; @@ -989,6 +1006,7 @@ bool CConf::read() m_pocsagNetworkModeHang = (unsigned int)::atoi(value); else if (::strcmp(key, "Debug") == 0) m_pocsagNetworkDebug = ::atoi(value) == 1; +#endif } else if (section == SECTION_FM_NETWORK) { if (::strcmp(key, "Enable") == 0) m_fmNetworkEnabled = ::atoi(value) == 1; @@ -1311,10 +1329,12 @@ float CConf::getModemM17TXLevel() const return m_modemM17TXLevel; } +#if defined(USE_POCSAG) float CConf::getModemPOCSAGTXLevel() const { return m_modemPOCSAGTXLevel; } +#endif float CConf::getModemFMTXLevel() const { @@ -1653,6 +1673,7 @@ unsigned int CConf::getM17ModeHang() const return m_m17ModeHang; } +#if defined(USE_POCSAG) bool CConf::getPOCSAGEnabled() const { return m_pocsagEnabled; @@ -1662,6 +1683,7 @@ unsigned int CConf::getPOCSAGFrequency() const { return m_pocsagFrequency; } +#endif bool CConf::getFMEnabled() const { @@ -2105,6 +2127,7 @@ bool CConf::getM17NetworkDebug() const return m_m17NetworkDebug; } +#if defined(USE_POCSAG) bool CConf::getPOCSAGNetworkEnabled() const { return m_pocsagNetworkEnabled; @@ -2139,6 +2162,7 @@ bool CConf::getPOCSAGNetworkDebug() const { return m_pocsagNetworkDebug; } +#endif bool CConf::getFMNetworkEnabled() const { diff --git a/Conf.h b/Conf.h index 9608f1f..b5f8b94 100644 --- a/Conf.h +++ b/Conf.h @@ -99,7 +99,9 @@ public: float getModemP25TXLevel() const; float getModemNXDNTXLevel() const; float getModemM17TXLevel() const; +#if defined(USE_POCSAG) float getModemPOCSAGTXLevel() const; +#endif float getModemFMTXLevel() const; #if defined(USE_AX25) float getModemAX25TXLevel() const; @@ -184,9 +186,11 @@ public: unsigned int getM17TXHang() const; unsigned int getM17ModeHang() const; +#if defined(USE_POCSAG) // The POCSAG section bool getPOCSAGEnabled() const; unsigned int getPOCSAGFrequency() const; +#endif #if defined(USE_AX25) // The AX.25 section @@ -294,6 +298,7 @@ public: unsigned int getM17NetworkModeHang() const; bool getM17NetworkDebug() const; +#if defined(USE_POCSAG) // The POCSAG Network section bool getPOCSAGNetworkEnabled() const; std::string getPOCSAGGatewayAddress() const; @@ -302,6 +307,7 @@ public: unsigned short getPOCSAGLocalPort() const; unsigned int getPOCSAGNetworkModeHang() const; bool getPOCSAGNetworkDebug() const; +#endif // The FM Network section bool getFMNetworkEnabled() const; @@ -471,7 +477,9 @@ private: unsigned int m_m17TXHang; unsigned int m_m17ModeHang; +#if defined(USE_POCSAG) bool m_pocsagEnabled; +#endif unsigned int m_pocsagFrequency; bool m_fmEnabled; @@ -511,12 +519,16 @@ private: unsigned int m_fmExtAudioBoost; unsigned int m_fmModeHang; +#if defined(USE_AX25) bool m_ax25Enabled; +#endif unsigned int m_ax25TXDelay; +#if defined(USE_AX25) int m_ax25RXTwist; unsigned int m_ax25SlotTime; unsigned int m_ax25PPersist; bool m_ax25Trace; +#endif bool m_dstarNetworkEnabled; std::string m_dstarGatewayAddress; @@ -570,6 +582,7 @@ private: unsigned int m_m17NetworkModeHang; bool m_m17NetworkDebug; +#if defined(USE_POCSAG) bool m_pocsagNetworkEnabled; std::string m_pocsagGatewayAddress; unsigned short m_pocsagGatewayPort; @@ -577,6 +590,7 @@ private: unsigned short m_pocsagLocalPort; unsigned int m_pocsagNetworkModeHang; bool m_pocsagNetworkDebug; +#endif bool m_fmNetworkEnabled; std::string m_fmNetworkProtocol; @@ -591,10 +605,12 @@ private: unsigned int m_fmNetworkModeHang; bool m_fmNetworkDebug; +#if defined(USE_AX25) bool m_ax25NetworkEnabled; std::string m_ax25NetworkPort; unsigned int m_ax25NetworkSpeed; bool m_ax25NetworkDebug; +#endif bool m_lockFileEnabled; std::string m_lockFileName; diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index 1ba6583..10d41ec 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -152,7 +152,9 @@ m_ysf(NULL), m_p25(NULL), m_nxdn(NULL), m_m17(NULL), +#if defined(USE_POCSAG) m_pocsag(NULL), +#endif m_fm(NULL), #if defined(USE_AX25) m_ax25(NULL), @@ -163,7 +165,9 @@ m_ysfNetwork(NULL), m_p25Network(NULL), m_nxdnNetwork(NULL), m_m17Network(NULL), +#if defined(USE_POCSAG) m_pocsagNetwork(NULL), +#endif m_fmNetwork(NULL), #if defined(USE_AX25) m_ax25Network(NULL), @@ -182,7 +186,9 @@ m_ysfNetModeHang(3U), m_p25NetModeHang(3U), m_nxdnNetModeHang(3U), m_m17NetModeHang(3U), +#if defined(USE_POCSAG) m_pocsagNetModeHang(3U), +#endif m_fmNetModeHang(3U), m_modeTimer(1000U), m_dmrTXTimer(1000U), @@ -355,10 +361,12 @@ int CMMDVMHost::run() m_fmEnabled = false; } +#if defined(USE_POCSAG) if (m_pocsagEnabled && !m_modem->hasPOCSAG()) { LogWarning("POCSAG enabled in the host but not in the modem firmware, disabling"); m_pocsagEnabled = false; } +#endif #if defined(USE_AX25) if (m_ax25Enabled && !m_modem->hasAX25()) { @@ -406,11 +414,13 @@ int CMMDVMHost::run() return 1; } +#if defined(USE_POCSAG) if (m_pocsagEnabled && m_conf.getPOCSAGNetworkEnabled()) { ret = createPOCSAGNetwork(); if (!ret) return 1; } +#endif if (m_fmEnabled && m_conf.getFMNetworkEnabled()) { ret = createFMNetwork(); @@ -726,6 +736,7 @@ int CMMDVMHost::run() m_m17 = new CM17Control(m_callsign, can, selfOnly, allowEncryption, m_m17Network, m_timeout, m_duplex, rssi); } +#if defined(USE_POCSAG) CTimer pocsagTimer(1000U, 30U); if (m_pocsagEnabled) { @@ -739,6 +750,7 @@ int CMMDVMHost::run() if (m_pocsagNetwork != NULL) pocsagTimer.start(); } +#endif #if defined(USE_AX25) if (m_ax25Enabled) { @@ -1133,6 +1145,7 @@ int CMMDVMHost::run() } } +#if defined(USE_POCSAG) if (m_pocsag != NULL) { ret = m_modem->hasPOCSAGSpace(); if (ret) { @@ -1151,6 +1164,7 @@ int CMMDVMHost::run() } } } +#endif if (m_fm != NULL) { unsigned int space = m_modem->getFMSpace(); @@ -1230,8 +1244,10 @@ int CMMDVMHost::run() m_nxdn->clock(ms); if (m_m17 != NULL) m_m17->clock(ms); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->clock(ms); +#endif if (m_fm != NULL) m_fm->clock(ms); @@ -1247,8 +1263,10 @@ int CMMDVMHost::run() m_nxdnNetwork->clock(ms); if (m_m17Network != NULL) m_m17Network->clock(ms); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->clock(ms); +#endif if (m_fmNetwork != NULL) m_fmNetwork->clock(ms); @@ -1308,12 +1326,14 @@ int CMMDVMHost::run() m_dmrTXTimer.stop(); } +#if defined(USE_POCSAG) pocsagTimer.clock(ms); if (pocsagTimer.isRunning() && pocsagTimer.hasExpired()) { assert(m_pocsagNetwork != NULL); m_pocsagNetwork->enable(m_mode == MODE_IDLE || m_mode == MODE_POCSAG); pocsagTimer.start(); } +#endif if (ms < 5U) CThread::sleep(5U); @@ -1360,10 +1380,12 @@ int CMMDVMHost::run() delete m_m17Network; } +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) { m_pocsagNetwork->close(); delete m_pocsagNetwork; } +#endif if (m_fmNetwork != NULL) { m_fmNetwork->close(); @@ -1393,7 +1415,9 @@ int CMMDVMHost::run() delete m_p25; delete m_nxdn; delete m_m17; +#if defined(USE_POCSAG) delete m_pocsag; +#endif delete m_fm; #if defined(USE_AX25) delete m_ax25; @@ -1437,7 +1461,11 @@ bool CMMDVMHost::createModem() float p25TXLevel = m_conf.getModemP25TXLevel(); float nxdnTXLevel = m_conf.getModemNXDNTXLevel(); float m17TXLevel = m_conf.getModemM17TXLevel(); +#if defined(USE_POCSAG) float pocsagTXLevel = m_conf.getModemPOCSAGTXLevel(); +#else + float pocsagTXLevel = 0.0F; +#endif float fmTXLevel = m_conf.getModemFMTXLevel(); #if defined(USE_AX25) float ax25TXLevel = m_conf.getModemAX25TXLevel(); @@ -1454,7 +1482,11 @@ bool CMMDVMHost::createModem() unsigned int m17TXHang = m_conf.getM17TXHang(); unsigned int rxFrequency = m_conf.getRXFrequency(); unsigned int txFrequency = m_conf.getTXFrequency(); +#if defined(USE_POCSAG) unsigned int pocsagFrequency = m_conf.getPOCSAGFrequency(); +#else + unsigned int pocsagFrequency = txFrequency; +#endif int rxOffset = m_conf.getModemRXOffset(); int txOffset = m_conf.getModemTXOffset(); int rxDCOffset = m_conf.getModemRXDCOffset(); @@ -1505,7 +1537,9 @@ bool CMMDVMHost::createModem() LogInfo(" P25 TX Level: %.1f%%", p25TXLevel); LogInfo(" NXDN TX Level: %.1f%%", nxdnTXLevel); LogInfo(" M17 TX Level: %.1f%%", m17TXLevel); +#if defined(USE_POCSAG) LogInfo(" POCSAG TX Level: %.1f%%", pocsagTXLevel); +#endif LogInfo(" FM TX Level: %.1f%%", fmTXLevel); #if defined(USE_AX25) LogInfo(" AX.25 TX Level: %.1f%%", ax25TXLevel); @@ -1846,6 +1880,7 @@ bool CMMDVMHost::createM17Network() return true; } +#if defined(USE_POCSAG) bool CMMDVMHost::createPOCSAGNetwork() { std::string gatewayAddress = m_conf.getPOCSAGGatewayAddress(); @@ -1875,6 +1910,7 @@ bool CMMDVMHost::createPOCSAGNetwork() return true; } +#endif bool CMMDVMHost::createFMNetwork() { @@ -1951,7 +1987,9 @@ void CMMDVMHost::readParams() m_p25Enabled = m_conf.getP25Enabled(); m_nxdnEnabled = m_conf.getNXDNEnabled(); m_m17Enabled = m_conf.getM17Enabled(); +#if defined(USE_POCSAG) m_pocsagEnabled = m_conf.getPOCSAGEnabled(); +#endif m_fmEnabled = m_conf.getFMEnabled(); #if defined(USE_AX25) m_ax25Enabled = m_conf.getAX25Enabled(); @@ -1972,7 +2010,9 @@ void CMMDVMHost::readParams() LogInfo(" P25: %s", m_p25Enabled ? "enabled" : "disabled"); LogInfo(" NXDN: %s", m_nxdnEnabled ? "enabled" : "disabled"); LogInfo(" M17: %s", m_m17Enabled ? "enabled" : "disabled"); +#if defined(USE_POCSAG) LogInfo(" POCSAG: %s", m_pocsagEnabled ? "enabled" : "disabled"); +#endif LogInfo(" FM: %s", m_fmEnabled ? "enabled" : "disabled"); #if defined(USE_AX25) LogInfo(" AX.25: %s", m_ax25Enabled ? "enabled" : "disabled"); @@ -1997,8 +2037,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2017,8 +2059,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2046,8 +2090,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2066,8 +2112,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2099,8 +2147,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2119,8 +2169,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2148,8 +2200,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2168,8 +2222,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2197,8 +2253,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(true); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2217,8 +2275,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(true); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2246,8 +2306,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(true); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2266,8 +2328,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(true); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2295,8 +2359,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(true); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2315,8 +2381,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(true); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2344,8 +2412,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(true); #if defined(USE_AX25) @@ -2364,8 +2434,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(true); #if defined(USE_AX25) @@ -2397,8 +2469,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2417,8 +2491,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2451,8 +2527,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_m17Network != NULL) m_m17Network->enable(false); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(false); #if defined(USE_AX25) @@ -2471,8 +2549,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_m17 != NULL) m_m17->enable(false); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(false); +#endif if (m_fm != NULL) m_fm->enable(false); #if defined(USE_AX25) @@ -2503,8 +2583,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(true); if (m_m17Network != NULL) m_m17Network->enable(true); +#if defined(USE_POCSAG) if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(true); +#endif if (m_fmNetwork != NULL) m_fmNetwork->enable(true); #if defined(USE_AX25) @@ -2523,8 +2605,10 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(true); if (m_m17 != NULL) m_m17->enable(true); +#if defined(USE_POCSAG) if (m_pocsag != NULL) m_pocsag->enable(true); +#endif if (m_fm != NULL) m_fm->enable(true); #if defined(USE_AX25) @@ -2704,6 +2788,7 @@ void CMMDVMHost::remoteControl(const std::string& commandString) processEnableCommand(m_ax25Enabled, false); break; #endif +#if defined(USE_POCSAG) case RCD_PAGE: if (m_pocsag != NULL) { unsigned int ric = m_remoteControl->getArgUInt(0U); @@ -2746,6 +2831,7 @@ void CMMDVMHost::remoteControl(const std::string& commandString) m_pocsag->sendPageAlert2(ric, text); } break; +#endif case RCD_CW: setMode(MODE_IDLE); // Force the modem to go idle so that we can send the CW text. if (!m_modem->hasTX()) { diff --git a/MMDVMHost.h b/MMDVMHost.h index dd65d3e..e525a7b 100644 --- a/MMDVMHost.h +++ b/MMDVMHost.h @@ -67,7 +67,9 @@ private: CP25Control* m_p25; CNXDNControl* m_nxdn; CM17Control* m_m17; +#if defined(USE_POCSAG) CPOCSAGControl* m_pocsag; +#endif CFMControl* m_fm; #if defined(USE_AX25) CAX25Control* m_ax25; @@ -78,7 +80,9 @@ private: CP25Network* m_p25Network; INXDNNetwork* m_nxdnNetwork; CM17Network* m_m17Network; +#if defined(USE_POCSAG) CPOCSAGNetwork* m_pocsagNetwork; +#endif CFMNetwork* m_fmNetwork; #if defined(USE_AX25) CAX25Network* m_ax25Network; @@ -97,7 +101,9 @@ private: unsigned int m_p25NetModeHang; unsigned int m_nxdnNetModeHang; unsigned int m_m17NetModeHang; +#if defined(USE_POCSAG) unsigned int m_pocsagNetModeHang; +#endif unsigned int m_fmNetModeHang; CTimer m_modeTimer; CTimer m_dmrTXTimer; @@ -132,7 +138,9 @@ private: bool createP25Network(); bool createNXDNNetwork(); bool createM17Network(); +#if defined(USE_POCSAG) bool createPOCSAGNetwork(); +#endif bool createFMNetwork(); #if defined(USE_AX25) bool createAX25Network(); diff --git a/POCSAGControl.cpp b/POCSAGControl.cpp index 2bb0189..0bd1c8f 100644 --- a/POCSAGControl.cpp +++ b/POCSAGControl.cpp @@ -15,13 +15,13 @@ #include "Utils.h" #include "Log.h" +#if defined(USE_POCSAG) + #include #include #include #include -// #define DUMP_POCSAG - const struct BCD { char m_c; uint32_t m_bcd[5U]; @@ -305,10 +305,6 @@ void CPOCSAGControl::clock(unsigned int ms) m_state = PS_WAITING; m_frames = 0U; m_count = 1U; - -#if defined(DUMP_POCSAG) - openFile(); -#endif } m_output.clear(); @@ -363,10 +359,6 @@ void CPOCSAGControl::clock(unsigned int ms) if (m_state == PS_ENDING) { LogMessage("POCSAG, transmitted %u frame(s) of data from %u message(s)", m_frames, m_count); m_state = PS_NONE; - -#if defined(DUMP_POCSAG) - closeFile(); -#endif } } @@ -503,10 +495,6 @@ void CPOCSAGControl::writeQueue() m_output.clear(); -#if defined(DUMP_POCSAG) - writeFile(data); -#endif - CUtils::dump(1U, "Data to MMDVM", data, len); assert(len == POCSAG_FRAME_LENGTH_BYTES); @@ -521,46 +509,6 @@ void CPOCSAGControl::writeQueue() m_queue.addData(data, len); } -bool CPOCSAGControl::openFile() -{ - if (m_fp != NULL) - return true; - - time_t t; - ::time(&t); - - struct tm* tm = ::localtime(&t); - - char name[100U]; - ::sprintf(name, "POCSAG_%04d%02d%02d_%02d%02d%02d.dat", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec); - - m_fp = ::fopen(name, "wb"); - if (m_fp == NULL) - return false; - - ::fwrite("POCSAG", 1U, 6U, m_fp); - - return true; -} - -bool CPOCSAGControl::writeFile(const unsigned char* data) -{ - if (m_fp == NULL) - return false; - - ::fwrite(data, 1U, POCSAG_FRAME_LENGTH_BYTES, m_fp); - - return true; -} - -void CPOCSAGControl::closeFile() -{ - if (m_fp != NULL) { - ::fclose(m_fp); - m_fp = NULL; - } -} - void CPOCSAGControl::enable(bool enabled) { if (!enabled && m_enabled) { @@ -614,4 +562,5 @@ void CPOCSAGControl::writeJSON(const char* source, unsigned int ric, const char* WriteJSON("POCSAG", json); } +#endif diff --git a/POCSAGControl.h b/POCSAGControl.h index 215483f..2e88623 100644 --- a/POCSAGControl.h +++ b/POCSAGControl.h @@ -24,6 +24,8 @@ #include "RingBuffer.h" #include "Defines.h" +#if defined(USE_POCSAG) + #include #include @@ -82,9 +84,6 @@ private: void packASCII(const std::string& text, std::deque& buffer) const; void packNumeric(const std::string& text, std::deque& buffer) const; void addBCHAndParity(uint32_t& word) const; - bool openFile(); - bool writeFile(const unsigned char* data); - void closeFile(); void decodeROT1(const std::string& in, unsigned int start, std::string& out) const; @@ -93,3 +92,6 @@ private: }; #endif + +#endif + diff --git a/POCSAGNetwork.cpp b/POCSAGNetwork.cpp index 2a4e650..163737e 100644 --- a/POCSAGNetwork.cpp +++ b/POCSAGNetwork.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018,2019,2020,2021 by Jonathan Naylor G4KLX + * Copyright (C) 2018,2019,2020,2021,2023 by Jonathan Naylor G4KLX * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,10 +18,11 @@ #include "POCSAGDefines.h" #include "POCSAGNetwork.h" -#include "Defines.h" #include "Utils.h" #include "Log.h" +#if defined(USE_POCSAG) + #include #include #include @@ -124,3 +125,6 @@ void CPOCSAGNetwork::enable(bool enabled) m_enabled = enabled; } + +#endif + diff --git a/POCSAGNetwork.h b/POCSAGNetwork.h index beceb9b..60e8eb7 100644 --- a/POCSAGNetwork.h +++ b/POCSAGNetwork.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018,2020,2021 by Jonathan Naylor G4KLX + * Copyright (C) 2018,2020,2021,2023 by Jonathan Naylor G4KLX * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,8 +22,11 @@ #include "POCSAGDefines.h" #include "RingBuffer.h" #include "UDPSocket.h" +#include "Defines.h" #include "Timer.h" +#if defined(USE_POCSAG) + #include #include @@ -54,3 +57,6 @@ private: }; #endif + +#endif +