From 1dbaec9331aedbb66ac96a98cc9af2e3cc403206 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 27 Feb 2017 20:17:55 +0000 Subject: [PATCH] Increase TA and GPS to message level, and allow it to be controlled from the ini file. --- Conf.cpp | 8 +++++ Conf.h | 2 ++ DMRControl.cpp | 4 +-- DMRControl.h | 2 +- DMRSlot.cpp | 80 ++++++++++++++++++++++++++++++++------------------ DMRSlot.h | 3 +- MMDVM.ini | 1 + MMDVMHost.cpp | 8 +++-- 8 files changed, 72 insertions(+), 36 deletions(-) diff --git a/Conf.cpp b/Conf.cpp index 3b1ef41..32297ca 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -107,6 +107,7 @@ m_dmrId(0U), m_dmrColorCode(2U), m_dmrSelfOnly(false), m_dmrEmbeddedLCOnly(false), +m_dmrDumpTAData(true), m_dmrPrefixes(), m_dmrBlackList(), m_dmrWhiteList(), @@ -378,6 +379,8 @@ bool CConf::read() m_dmrSelfOnly = ::atoi(value) == 1; else if (::strcmp(key, "EmbeddedLCOnly") == 0) m_dmrEmbeddedLCOnly = ::atoi(value) == 1; + else if (::strcmp(key, "DumpTAData") == 0) + m_dmrDumpTAData = ::atoi(value) == 1; else if (::strcmp(key, "Prefixes") == 0) { char* p = ::strtok(value, ",\r\n"); while (p != NULL) { @@ -824,6 +827,11 @@ bool CConf::getDMREmbeddedLCOnly() const return m_dmrEmbeddedLCOnly; } +bool CConf::getDMRDumpTAData() const +{ + return m_dmrDumpTAData; +} + std::vector CConf::getDMRPrefixes() const { return m_dmrPrefixes; diff --git a/Conf.h b/Conf.h index 4983643..1136a60 100644 --- a/Conf.h +++ b/Conf.h @@ -99,6 +99,7 @@ public: unsigned int getDMRId() const; unsigned int getDMRColorCode() const; bool getDMREmbeddedLCOnly() const; + bool getDMRDumpTAData() const; bool getDMRSelfOnly() const; std::vector getDMRPrefixes() const; std::vector getDMRBlackList() const; @@ -249,6 +250,7 @@ private: unsigned int m_dmrColorCode; bool m_dmrSelfOnly; bool m_dmrEmbeddedLCOnly; + bool m_dmrDumpTAData; std::vector m_dmrPrefixes; std::vector m_dmrBlackList; std::vector m_dmrWhiteList; diff --git a/DMRControl.cpp b/DMRControl.cpp index ba7b2d3..eb9a857 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, 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) : +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) : m_id(id), m_colorCode(colorCode), m_modem(modem), @@ -39,7 +39,7 @@ m_lookup(lookup) // Load black and white lists to DMRAccessControl CDMRAccessControl::init(blacklist, whitelist, slot1TGWhitelist, slot2TGWhitelist, selfOnly, prefixes, id); - CDMRSlot::init(colorCode, embeddedLCOnly, callHang, modem, network, display, duplex, m_lookup, rssi, jitter); + CDMRSlot::init(colorCode, embeddedLCOnly, dumpTAData, callHang, modem, network, display, duplex, m_lookup, rssi, jitter); } CDMRControl::~CDMRControl() diff --git a/DMRControl.h b/DMRControl.h index 2198e63..b000790 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, 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); + 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); ~CDMRControl(); bool processWakeup(const unsigned char* data); diff --git a/DMRSlot.cpp b/DMRSlot.cpp index 6130bf6..2c51697 100644 --- a/DMRSlot.cpp +++ b/DMRSlot.cpp @@ -32,6 +32,7 @@ unsigned int CDMRSlot::m_colorCode = 0U; bool CDMRSlot::m_embeddedLCOnly = false; +bool CDMRSlot::m_dumpTAData = true; CModem* CDMRSlot::m_modem = NULL; CDMRNetwork* CDMRSlot::m_network = NULL; @@ -558,35 +559,45 @@ void CDMRSlot::writeModem(unsigned char *data, unsigned int len) // CUtils::dump(1U, text, data, 9U); break; case FLCO_GPS_INFO: - ::sprintf(text, "DMR Slot %u, Embedded GPS Info", m_slotNo); - CUtils::dump(1U, text, data, 9U); + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded GPS Info", m_slotNo); + CUtils::dump(2U, text, data, 9U); + } break; case FLCO_TALKER_ALIAS_HEADER: if (!(m_rfTalkerId & TALKER_ID_HEADER)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_rfTalkerId |= TALKER_ID_HEADER; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_rfTalkerId |= TALKER_ID_HEADER; + } } break; case FLCO_TALKER_ALIAS_BLOCK1: if (!(m_rfTalkerId & TALKER_ID_BLOCK1)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_rfTalkerId |= TALKER_ID_BLOCK1; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_rfTalkerId |= TALKER_ID_BLOCK1; + } } break; case FLCO_TALKER_ALIAS_BLOCK2: if (!(m_rfTalkerId & TALKER_ID_BLOCK2)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_rfTalkerId |= TALKER_ID_BLOCK2; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_rfTalkerId |= TALKER_ID_BLOCK2; + } } break; case FLCO_TALKER_ALIAS_BLOCK3: if (!(m_rfTalkerId & TALKER_ID_BLOCK3)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_rfTalkerId |= TALKER_ID_BLOCK3; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_rfTalkerId |= TALKER_ID_BLOCK3; + } } break; default: @@ -1314,35 +1325,45 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData) // CUtils::dump(1U, text, data, 9U); break; case FLCO_GPS_INFO: - ::sprintf(text, "DMR Slot %u, Embedded GPS Info", m_slotNo); - CUtils::dump(1U, text, data, 9U); + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded GPS Info", m_slotNo); + CUtils::dump(2U, text, data, 9U); + } break; case FLCO_TALKER_ALIAS_HEADER: if (!(m_netTalkerId & TALKER_ID_HEADER)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_netTalkerId |= TALKER_ID_HEADER; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Header", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_netTalkerId |= TALKER_ID_HEADER; + } } break; case FLCO_TALKER_ALIAS_BLOCK1: if (!(m_netTalkerId & TALKER_ID_BLOCK1)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_netTalkerId |= TALKER_ID_BLOCK1; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 1", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_netTalkerId |= TALKER_ID_BLOCK1; + } } break; case FLCO_TALKER_ALIAS_BLOCK2: if (!(m_netTalkerId & TALKER_ID_BLOCK2)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_netTalkerId |= TALKER_ID_BLOCK2; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 2", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_netTalkerId |= TALKER_ID_BLOCK2; + } } break; case FLCO_TALKER_ALIAS_BLOCK3: if (!(m_netTalkerId & TALKER_ID_BLOCK3)) { - ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo); - CUtils::dump(1U, text, data, 9U); - m_netTalkerId |= TALKER_ID_BLOCK3; + if (m_dumpTAData) { + ::sprintf(text, "DMR Slot %u, Embedded Talker Alias Block 3", m_slotNo); + CUtils::dump(2U, text, data, 9U); + m_netTalkerId |= TALKER_ID_BLOCK3; + } } break; default: @@ -1635,7 +1656,7 @@ void CDMRSlot::writeQueueNet(const unsigned char *data) m_queue.addData(data, len); } -void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter) +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) { assert(modem != NULL); assert(display != NULL); @@ -1644,6 +1665,7 @@ void CDMRSlot::init(unsigned int colorCode, bool embeddedLCOnly, unsigned int ca m_colorCode = colorCode; m_embeddedLCOnly = embeddedLCOnly; + m_dumpTAData = dumpTAData; m_modem = modem; m_network = network; m_display = display; diff --git a/DMRSlot.h b/DMRSlot.h index a4f87ae..561bae8 100644 --- a/DMRSlot.h +++ b/DMRSlot.h @@ -50,7 +50,7 @@ public: void clock(); - static void init(unsigned int colorCode, bool embeddedLCOnly, unsigned int callHang, CModem* modem, CDMRNetwork* network, CDisplay* display, bool duplex, CDMRLookup* lookup, CRSSIInterpolator* rssiMapper, unsigned int jitter); + 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); private: unsigned int m_slotNo; @@ -101,6 +101,7 @@ private: static unsigned int m_colorCode; static bool m_embeddedLCOnly; + static bool m_dumpTAData; static CModem* m_modem; static CDMRNetwork* m_network; diff --git a/MMDVM.ini b/MMDVM.ini index 6332db6..56f6396 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -72,6 +72,7 @@ Id=123456 ColorCode=1 SelfOnly=0 EmbeddedLCOnly=0 +DumpTAData=1 # Prefixes=234,235 # Slot1TGWhiteList= # Slot2TGWhiteList= diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index a648007..8389ede 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -347,13 +347,14 @@ int CMMDVMHost::run() unsigned int id = m_conf.getDMRId(); unsigned int colorCode = m_conf.getDMRColorCode(); bool selfOnly = m_conf.getDMRSelfOnly(); - bool embeddedLCOnly = m_conf.getDMREmbeddedLCOnly(); + bool embeddedLCOnly = m_conf.getDMREmbeddedLCOnly(); + bool dumpTAData = m_conf.getDMRDumpTAData(); std::vector prefixes = m_conf.getDMRPrefixes(); std::vector blackList = m_conf.getDMRBlackList(); std::vector whiteList = m_conf.getDMRWhiteList(); std::vector slot1TGWhiteList = m_conf.getDMRSlot1TGWhiteList(); std::vector slot2TGWhiteList = m_conf.getDMRSlot2TGWhiteList(); - unsigned int callHang = m_conf.getDMRCallHang(); + unsigned int callHang = m_conf.getDMRCallHang(); unsigned int txHang = m_conf.getDMRTXHang(); unsigned int jitter = m_conf.getDMRNetworkJitter(); @@ -370,6 +371,7 @@ int CMMDVMHost::run() LogInfo(" Color Code: %u", colorCode); LogInfo(" Self Only: %s", selfOnly ? "yes" : "no"); LogInfo(" Embedded LC Only: %s", embeddedLCOnly ? "yes" : "no"); + LogInfo(" Dump Talker Alias Data: %s", dumpTAData ? "yes" : "no"); LogInfo(" Prefixes: %u", prefixes.size()); if (blackList.size() > 0U) @@ -384,7 +386,7 @@ int CMMDVMHost::run() LogInfo(" Call Hang: %us", callHang); LogInfo(" TX Hang: %us", txHang); - dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_lookup, rssi, jitter); + 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_lookup, rssi, jitter); m_dmrTXTimer.setTimeout(txHang); }