From 2f9595949a5c3f481d23fc7236401fa0e0f95bb4 Mon Sep 17 00:00:00 2001 From: Shawn Chain Date: Sat, 16 Nov 2019 23:06:26 +0800 Subject: [PATCH 1/5] Change ovcm config to int value --- Conf.cpp | 14 +++----------- Conf.h | 6 ++---- DMRControl.cpp | 4 ++-- DMRControl.h | 2 +- DMRSlot.cpp | 20 +++++++++----------- DMRSlot.h | 5 ++--- MMDVM.ini | 2 +- MMDVMHost.cpp | 13 ++++++++----- 8 files changed, 28 insertions(+), 38 deletions(-) diff --git a/Conf.cpp b/Conf.cpp index b299eb1..1db1f5b 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -146,8 +146,7 @@ m_dmrSlot2TGWhiteList(), m_dmrCallHang(10U), m_dmrTXHang(4U), m_dmrModeHang(10U), -m_dmrOVCM(false), -m_dmrOVCMRX(false), +m_dmrOVCM(0), m_fusionEnabled(false), m_fusionLowDeviation(false), m_fusionRemoteGateway(false), @@ -594,9 +593,7 @@ bool CConf::read() else if (::strcmp(key, "ModeHang") == 0) m_dmrModeHang = (unsigned int)::atoi(value); else if (::strcmp(key, "OVCM") == 0) - m_dmrOVCM = ::atoi(value) == 1; - else if (::strcmp(key, "OVCMRX") == 0) - m_dmrOVCMRX = ::atoi(value) == 1; + m_dmrOVCM = ::atoi(value); } else if (section == SECTION_FUSION) { if (::strcmp(key, "Enable") == 0) m_fusionEnabled = ::atoi(value) == 1; @@ -1258,16 +1255,11 @@ unsigned int CConf::getDMRModeHang() const return m_dmrModeHang; } -bool CConf::getDMROVCM() const +int CConf::getDMROVCM() const { return m_dmrOVCM; } -bool CConf::getDMROVCMRX() const -{ - return m_dmrOVCMRX; -} - bool CConf::getFusionEnabled() const { return m_fusionEnabled; diff --git a/Conf.h b/Conf.h index ead421d..ca30262 100644 --- a/Conf.h +++ b/Conf.h @@ -135,8 +135,7 @@ public: unsigned int getDMRCallHang() const; unsigned int getDMRTXHang() const; unsigned int getDMRModeHang() const; - bool getDMROVCM() const; - bool getDMROVCMRX() const; + int getDMROVCM() const; // The System Fusion section bool getFusionEnabled() const; @@ -375,8 +374,7 @@ private: unsigned int m_dmrCallHang; unsigned int m_dmrTXHang; unsigned int m_dmrModeHang; - bool m_dmrOVCM; - bool m_dmrOVCMRX; + int m_dmrOVCM; bool m_fusionEnabled; bool m_fusionLowDeviation; diff --git a/DMRControl.cpp b/DMRControl.cpp index e6fb411..de064a1 100644 --- a/DMRControl.cpp +++ b/DMRControl.cpp @@ -21,7 +21,7 @@ #include #include -CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, bool ovcm, bool ovcmRX) : +CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, int ovcm) : m_colorCode(colorCode), m_modem(modem), m_network(network), @@ -38,7 +38,7 @@ m_lookup(lookup) // Load black and white lists to DMRAccessControl CDMRAccessControl::init(blacklist, whitelist, slot1TGWhitelist, slot2TGWhitelist, selfOnly, prefixes, id); - CDMRSlot::init(colorCode, embeddedLCOnly, dumpTAData, callHang, modem, network, display, duplex, m_lookup, rssi, jitter, ovcm, ovcmRX); + CDMRSlot::init(colorCode, embeddedLCOnly, dumpTAData, callHang, modem, network, display, duplex, m_lookup, rssi, jitter, ovcm); } CDMRControl::~CDMRControl() diff --git a/DMRControl.h b/DMRControl.h index 30eb606..eb264d9 100644 --- a/DMRControl.h +++ b/DMRControl.h @@ -31,7 +31,7 @@ class CDMRControl { public: - CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, bool ovcm, bool ovcmRX); + CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, int ovcm); ~CDMRControl(); bool processWakeup(const unsigned char* data); diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 3e94484..8aa4c69 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -43,8 +43,7 @@ CDisplay* CDMRSlot::m_display = NULL; bool CDMRSlot::m_duplex = true; CDMRLookup* CDMRSlot::m_lookup = NULL; unsigned int CDMRSlot::m_hangCount = 3U * 17U; -bool CDMRSlot::m_ovcm = false; -bool CDMRSlot::m_ovcmRX = false; +int CDMRSlot::m_ovcm = 0; CRSSIInterpolator* CDMRSlot::m_rssiMapper = NULL; @@ -234,7 +233,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM(m_ovcm); + lc->setOVCM(m_ovcm & 0x02); m_rfLC = lc; // The standby LC data @@ -439,7 +438,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; // set the OVCM bit for the supported csbk - csbk.setOVCM(m_ovcm); + csbk.setOVCM(m_ovcm & 0x02); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId(); @@ -790,7 +789,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM(m_ovcm); + lc->setOVCM(m_ovcm & 0x02); m_rfLC = lc; // The standby LC data @@ -1046,7 +1045,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) dmrData.getSrcId(), dmrData.getFLCO() == FLCO_GROUP ? "TG" : "", dmrData.getDstId(), srcId, flco == FLCO_GROUP ? "TG" : "", dstId); - lc->setOVCM(m_ovcmRX); + lc->setOVCM(m_ovcm & 0x01); m_netLC = lc; // The standby LC data @@ -1120,7 +1119,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM(m_ovcmRX); + lc->setOVCM(m_ovcm & 0x01); m_netLC = lc; m_lastFrameValid = false; @@ -1306,7 +1305,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM(m_ovcmRX); + lc->setOVCM(m_ovcm & 0x01); m_netLC = lc; // The standby LC data @@ -1576,7 +1575,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) return; // set the OVCM bit for the supported csbk - csbk.setOVCM(m_ovcmRX); + csbk.setOVCM(m_ovcm & 0x01); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId(); @@ -1882,7 +1881,7 @@ void CDMRSlot::writeQueueNet(const unsigned char *data) m_queue.addData(data, len); } -void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, bool ovcm, bool ovcmRX) +void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, int ovcm) { assert(modem != NULL); assert(display != NULL); @@ -1899,7 +1898,6 @@ void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData m_lookup = lookup; m_hangCount = callHang * 17U; m_ovcm = ovcm; - m_ovcmRX = ovcmRX; m_rssiMapper = rssiMapper; diff --git a/DMRSlot.h b/DMRSlot.h index 6a03f3c..e229141 100644 --- a/DMRSlot.h +++ b/DMRSlot.h @@ -62,7 +62,7 @@ public: void enable(bool enabled); - static void init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, bool ovcm, bool ovcmRX); + static void init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, int ovcm); private: unsigned int m_slotNo; @@ -123,8 +123,7 @@ private: static bool m_duplex; static CDMRLookup* m_lookup; static unsigned int m_hangCount; - static bool m_ovcm; - static bool m_ovcmRX; + static int m_ovcm; static CRSSIInterpolator* m_rssiMapper; diff --git a/MMDVM.ini b/MMDVM.ini index 8a89e91..be00096 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -107,8 +107,8 @@ DumpTAData=1 CallHang=3 TXHang=4 # ModeHang=10 +# OVCM Values, 0=off, 1=rf_on, 2=net_on, 3=both_on # OVCM=0 -# OVCMRX=0 [System Fusion] Enable=1 diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index 3e2db4b..a164372 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -445,8 +445,7 @@ int CMMDVMHost::run() unsigned int jitter = m_conf.getDMRNetworkJitter(); m_dmrRFModeHang = m_conf.getDMRModeHang(); dmrBeacons = m_conf.getDMRBeacons(); - bool ovcm = m_conf.getDMROVCM(); - bool ovcmRX = m_conf.getDMROVCMRX(); + int ovcm = m_conf.getDMROVCM(); if (txHang > m_dmrRFModeHang) txHang = m_dmrRFModeHang; @@ -479,8 +478,12 @@ int CMMDVMHost::run() LogInfo(" Call Hang: %us", callHang); LogInfo(" TX Hang: %us", txHang); LogInfo(" Mode Hang: %us", m_dmrRFModeHang); - LogInfo(" OVCM: %s", ovcm ? "on" : "off"); - LogInfo(" OVCMRX: %s", ovcmRX ? "on" : "off"); + if (ovcm == 0) + LogInfo(" OVCM: off"); + else if (ovcm == 1) + LogInfo(" OVCM: on(rx)"); + else + LogInfo(" OVCM: on"); switch (dmrBeacons) { case DMR_BEACONS_NETWORK: { @@ -511,7 +514,7 @@ int CMMDVMHost::run() break; } - m_dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, dumpTAData, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_dmrLookup, rssi, jitter, ovcm, ovcmRX); + m_dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, dumpTAData, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_dmrLookup, rssi, jitter, ovcm); m_dmrTXTimer.setTimeout(txHang); } From d5b08ea7eadc9b08ca67f775fb94bef555988154 Mon Sep 17 00:00:00 2001 From: Shawn Chain Date: Sat, 16 Nov 2019 23:14:55 +0800 Subject: [PATCH 2/5] fix config comment typo --- MMDVM.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MMDVM.ini b/MMDVM.ini index be00096..c1b5060 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -107,7 +107,7 @@ DumpTAData=1 CallHang=3 TXHang=4 # ModeHang=10 -# OVCM Values, 0=off, 1=rf_on, 2=net_on, 3=both_on +# OVCM Values, 0=off, 1=net_on, 2=rf_on, 3=both_on # OVCM=0 [System Fusion] From 88d91e420af7e4153f00a61fc5f3ea89793b73fa Mon Sep 17 00:00:00 2001 From: Shawn Chain Date: Sun, 17 Nov 2019 10:57:58 +0800 Subject: [PATCH 3/5] use enum DMR_OVCM_TYPES --- Conf.cpp | 19 ++++++++++++++++--- Conf.h | 4 ++-- DMRControl.cpp | 2 +- DMRControl.h | 2 +- DMRSlot.cpp | 18 +++++++++--------- DMRSlot.h | 4 ++-- Defines.h | 7 +++++++ MMDVM.ini | 2 +- MMDVMHost.cpp | 13 ++++++++----- 9 files changed, 47 insertions(+), 24 deletions(-) diff --git a/Conf.cpp b/Conf.cpp index 1db1f5b..9325a1b 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -146,7 +146,7 @@ m_dmrSlot2TGWhiteList(), m_dmrCallHang(10U), m_dmrTXHang(4U), m_dmrModeHang(10U), -m_dmrOVCM(0), +m_dmrOVCM(DMR_OVCM_OFF), m_fusionEnabled(false), m_fusionLowDeviation(false), m_fusionRemoteGateway(false), @@ -593,7 +593,20 @@ bool CConf::read() else if (::strcmp(key, "ModeHang") == 0) m_dmrModeHang = (unsigned int)::atoi(value); else if (::strcmp(key, "OVCM") == 0) - m_dmrOVCM = ::atoi(value); + switch(::atoi(value)) { + case 1: + m_dmrOVCM = DMR_OVCM_RX_ON; + break; + case 2: + m_dmrOVCM = DMR_OVCM_TX_ON; + break; + case 3: + m_dmrOVCM = DMR_OVCM_ON; + break; + default: + m_dmrOVCM = DMR_OVCM_OFF; + break; + } } else if (section == SECTION_FUSION) { if (::strcmp(key, "Enable") == 0) m_fusionEnabled = ::atoi(value) == 1; @@ -1255,7 +1268,7 @@ unsigned int CConf::getDMRModeHang() const return m_dmrModeHang; } -int CConf::getDMROVCM() const +DMR_OVCM_TYPES CConf::getDMROVCM() const { return m_dmrOVCM; } diff --git a/Conf.h b/Conf.h index ca30262..c76b202 100644 --- a/Conf.h +++ b/Conf.h @@ -135,7 +135,7 @@ public: unsigned int getDMRCallHang() const; unsigned int getDMRTXHang() const; unsigned int getDMRModeHang() const; - int getDMROVCM() const; + DMR_OVCM_TYPES getDMROVCM() const; // The System Fusion section bool getFusionEnabled() const; @@ -374,7 +374,7 @@ private: unsigned int m_dmrCallHang; unsigned int m_dmrTXHang; unsigned int m_dmrModeHang; - int m_dmrOVCM; + DMR_OVCM_TYPES m_dmrOVCM; bool m_fusionEnabled; bool m_fusionLowDeviation; diff --git a/DMRControl.cpp b/DMRControl.cpp index de064a1..bd07082 100644 --- a/DMRControl.cpp +++ b/DMRControl.cpp @@ -21,7 +21,7 @@ #include #include -CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, int ovcm) : +CDMRControl::CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, DMR_OVCM_TYPES ovcm) : m_colorCode(colorCode), m_modem(modem), m_network(network), diff --git a/DMRControl.h b/DMRControl.h index eb264d9..4d2597e 100644 --- a/DMRControl.h +++ b/DMRControl.h @@ -31,7 +31,7 @@ class CDMRControl { public: - CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, int ovcm); + CDMRControl(unsigned int id, unsigned int colorCode, unsigned int callHang, bool selfOnly, bool embeddedLCOnly, bool dumpTAData, const std::vector& prefixes, const std::vector& blacklist, const std::vector& whitelist, const std::vector& slot1TGWhitelist, const std::vector& slot2TGWhitelist, unsigned int timeout, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssi, unsigned int jitter, DMR_OVCM_TYPES ovcm); ~CDMRControl(); bool processWakeup(const unsigned char* data); diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 8aa4c69..cf413a3 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -43,7 +43,7 @@ CDisplay* CDMRSlot::m_display = NULL; bool CDMRSlot::m_duplex = true; CDMRLookup* CDMRSlot::m_lookup = NULL; unsigned int CDMRSlot::m_hangCount = 3U * 17U; -int CDMRSlot::m_ovcm = 0; +DMR_OVCM_TYPES CDMRSlot::m_ovcm = DMR_OVCM_OFF; CRSSIInterpolator* CDMRSlot::m_rssiMapper = NULL; @@ -233,7 +233,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM(m_ovcm & 0x02); + lc->setOVCM(m_ovcm & DMR_OVCM_TX_ON); m_rfLC = lc; // The standby LC data @@ -438,7 +438,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; // set the OVCM bit for the supported csbk - csbk.setOVCM(m_ovcm & 0x02); + csbk.setOVCM(m_ovcm & DMR_OVCM_TX_ON); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId(); @@ -789,7 +789,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM(m_ovcm & 0x02); + lc->setOVCM(m_ovcm & DMR_OVCM_TX_ON); m_rfLC = lc; // The standby LC data @@ -1045,7 +1045,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) dmrData.getSrcId(), dmrData.getFLCO() == FLCO_GROUP ? "TG" : "", dmrData.getDstId(), srcId, flco == FLCO_GROUP ? "TG" : "", dstId); - lc->setOVCM(m_ovcm & 0x01); + lc->setOVCM(m_ovcm & DMR_OVCM_RX_ON); m_netLC = lc; // The standby LC data @@ -1119,7 +1119,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM(m_ovcm & 0x01); + lc->setOVCM(m_ovcm & DMR_OVCM_RX_ON); m_netLC = lc; m_lastFrameValid = false; @@ -1305,7 +1305,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM(m_ovcm & 0x01); + lc->setOVCM(m_ovcm & DMR_OVCM_RX_ON); m_netLC = lc; // The standby LC data @@ -1575,7 +1575,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) return; // set the OVCM bit for the supported csbk - csbk.setOVCM(m_ovcm & 0x01); + csbk.setOVCM(m_ovcm & DMR_OVCM_RX_ON); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId(); @@ -1881,7 +1881,7 @@ void CDMRSlot::writeQueueNet(const unsigned char *data) m_queue.addData(data, len); } -void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, int ovcm) +void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, DMR_OVCM_TYPES ovcm) { assert(modem != NULL); assert(display != NULL); diff --git a/DMRSlot.h b/DMRSlot.h index e229141..1e95dc2 100644 --- a/DMRSlot.h +++ b/DMRSlot.h @@ -62,7 +62,7 @@ public: void enable(bool enabled); - static void init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, int ovcm); + static void init(unsigned int colorCode, bool embeddedLCOnly, bool dumpTAData, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter, DMR_OVCM_TYPES ovcm); private: unsigned int m_slotNo; @@ -123,7 +123,7 @@ private: static bool m_duplex; static CDMRLookup* m_lookup; static unsigned int m_hangCount; - static int m_ovcm; + static DMR_OVCM_TYPES m_ovcm; static CRSSIInterpolator* m_rssiMapper; diff --git a/Defines.h b/Defines.h index 2f0baa8..dc12f24 100644 --- a/Defines.h +++ b/Defines.h @@ -70,4 +70,11 @@ enum DMR_BEACONS { DMR_BEACONS_TIMED }; +enum DMR_OVCM_TYPES { + DMR_OVCM_OFF, + DMR_OVCM_RX_ON, + DMR_OVCM_TX_ON, + DMR_OVCM_ON +}; + #endif diff --git a/MMDVM.ini b/MMDVM.ini index c1b5060..d6a8d84 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -107,7 +107,7 @@ DumpTAData=1 CallHang=3 TXHang=4 # ModeHang=10 -# OVCM Values, 0=off, 1=net_on, 2=rf_on, 3=both_on +# OVCM Values, 0=off, 1=rx_on, 2=tx_on, 3=both_on # OVCM=0 [System Fusion] diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index a164372..1c80ab7 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -445,7 +445,7 @@ int CMMDVMHost::run() unsigned int jitter = m_conf.getDMRNetworkJitter(); m_dmrRFModeHang = m_conf.getDMRModeHang(); dmrBeacons = m_conf.getDMRBeacons(); - int ovcm = m_conf.getDMROVCM(); + DMR_OVCM_TYPES ovcm = m_conf.getDMROVCM(); if (txHang > m_dmrRFModeHang) txHang = m_dmrRFModeHang; @@ -478,13 +478,16 @@ int CMMDVMHost::run() LogInfo(" Call Hang: %us", callHang); LogInfo(" TX Hang: %us", txHang); LogInfo(" Mode Hang: %us", m_dmrRFModeHang); - if (ovcm == 0) + if (ovcm == DMR_OVCM_OFF) LogInfo(" OVCM: off"); - else if (ovcm == 1) - LogInfo(" OVCM: on(rx)"); - else + else if (ovcm == DMR_OVCM_RX_ON) + LogInfo(" OVCM: on(rx only)"); + else if (ovcm == DMR_OVCM_TX_ON) + LogInfo(" OVCM: on(tx only)"); + else if (ovcm == DMR_OVCM_ON) LogInfo(" OVCM: on"); + switch (dmrBeacons) { case DMR_BEACONS_NETWORK: { unsigned int dmrBeaconDuration = m_conf.getDMRBeaconDuration(); From c2584066d80df756130ac146264a97594df4ce9e Mon Sep 17 00:00:00 2001 From: Shawn Chain Date: Mon, 18 Nov 2019 20:47:56 +0800 Subject: [PATCH 4/5] Correct the m_ovcm flag check in DMRSlot --- DMRSlot.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DMRSlot.cpp b/DMRSlot.cpp index cf413a3..39be4a2 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -233,7 +233,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM(m_ovcm & DMR_OVCM_TX_ON); + lc->setOVCM((m_ovcm & DMR_OVCM_TX_ON) > 0); m_rfLC = lc; // The standby LC data @@ -438,7 +438,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; // set the OVCM bit for the supported csbk - csbk.setOVCM(m_ovcm & DMR_OVCM_TX_ON); + csbk.setOVCM((m_ovcm & DMR_OVCM_TX_ON) > 0); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId(); @@ -789,7 +789,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM(m_ovcm & DMR_OVCM_TX_ON); + lc->setOVCM((m_ovcm & DMR_OVCM_TX_ON) > 0); m_rfLC = lc; // The standby LC data @@ -1045,7 +1045,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) dmrData.getSrcId(), dmrData.getFLCO() == FLCO_GROUP ? "TG" : "", dmrData.getDstId(), srcId, flco == FLCO_GROUP ? "TG" : "", dstId); - lc->setOVCM(m_ovcm & DMR_OVCM_RX_ON); + lc->setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); m_netLC = lc; // The standby LC data @@ -1119,7 +1119,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM(m_ovcm & DMR_OVCM_RX_ON); + lc->setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); m_netLC = lc; m_lastFrameValid = false; @@ -1305,7 +1305,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM(m_ovcm & DMR_OVCM_RX_ON); + lc->setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); m_netLC = lc; // The standby LC data @@ -1575,7 +1575,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) return; // set the OVCM bit for the supported csbk - csbk.setOVCM(m_ovcm & DMR_OVCM_RX_ON); + csbk.setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId(); From 2ecd9b344015cb0ccd93701d0a4df68b601a5815 Mon Sep 17 00:00:00 2001 From: Shawn Chain Date: Tue, 19 Nov 2019 11:05:45 +0800 Subject: [PATCH 5/5] fix OVCM enum logical check --- DMRSlot.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 39be4a2..4e4324a 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -233,7 +233,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM((m_ovcm & DMR_OVCM_TX_ON) > 0); + lc->setOVCM(m_ovcm == DMR_OVCM_TX_ON || m_ovcm == DMR_OVCM_ON); m_rfLC = lc; // The standby LC data @@ -438,7 +438,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; // set the OVCM bit for the supported csbk - csbk.setOVCM((m_ovcm & DMR_OVCM_TX_ON) > 0); + csbk.setOVCM(m_ovcm == DMR_OVCM_TX_ON || m_ovcm == DMR_OVCM_ON); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId(); @@ -789,7 +789,7 @@ bool CDMRSlot::writeModem(unsigned char *data, unsigned int len) return false; } - lc->setOVCM((m_ovcm & DMR_OVCM_TX_ON) > 0); + lc->setOVCM(m_ovcm == DMR_OVCM_TX_ON || m_ovcm == DMR_OVCM_ON); m_rfLC = lc; // The standby LC data @@ -1045,7 +1045,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) dmrData.getSrcId(), dmrData.getFLCO() == FLCO_GROUP ? "TG" : "", dmrData.getDstId(), srcId, flco == FLCO_GROUP ? "TG" : "", dstId); - lc->setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); + lc->setOVCM(m_ovcm == DMR_OVCM_RX_ON || m_ovcm == DMR_OVCM_ON); m_netLC = lc; // The standby LC data @@ -1119,7 +1119,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); + lc->setOVCM(m_ovcm == DMR_OVCM_RX_ON || m_ovcm == DMR_OVCM_ON); m_netLC = lc; m_lastFrameValid = false; @@ -1305,7 +1305,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) unsigned int dstId = lc->getDstId(); unsigned int srcId = lc->getSrcId(); - lc->setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); + lc->setOVCM(m_ovcm == DMR_OVCM_RX_ON || m_ovcm == DMR_OVCM_ON); m_netLC = lc; // The standby LC data @@ -1575,7 +1575,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) return; // set the OVCM bit for the supported csbk - csbk.setOVCM((m_ovcm & DMR_OVCM_RX_ON) > 0); + csbk.setOVCM(m_ovcm == DMR_OVCM_RX_ON || m_ovcm == DMR_OVCM_ON); bool gi = csbk.getGI(); unsigned int srcId = csbk.getSrcId();