mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-22 16:25:45 +08:00
Make the compilation of POCSAG conditional.
This commit is contained in:
24
Conf.cpp
24
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
|
||||
{
|
||||
|
||||
16
Conf.h
16
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;
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
#include "Utils.h"
|
||||
#include "Log.h"
|
||||
|
||||
#if defined(USE_POCSAG)
|
||||
|
||||
#include <cstdio>
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
|
||||
// #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
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#include "RingBuffer.h"
|
||||
#include "Defines.h"
|
||||
|
||||
#if defined(USE_POCSAG)
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include <string>
|
||||
@@ -82,9 +84,6 @@ private:
|
||||
void packASCII(const std::string& text, std::deque<uint32_t>& buffer) const;
|
||||
void packNumeric(const std::string& text, std::deque<uint32_t>& 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
|
||||
|
||||
|
||||
@@ -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 <cstdio>
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
@@ -124,3 +125,6 @@ void CPOCSAGNetwork::enable(bool enabled)
|
||||
|
||||
m_enabled = enabled;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -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 <cstdint>
|
||||
#include <string>
|
||||
|
||||
@@ -54,3 +57,6 @@ private:
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user