diff --git a/nxdn/Control.cpp b/nxdn/Control.cpp index 362ca595..b6558930 100644 --- a/nxdn/Control.cpp +++ b/nxdn/Control.cpp @@ -130,6 +130,7 @@ Control::Control(uint32_t ran, uint32_t callHang, uint32_t queueSize, uint32_t t m_minRSSI(0U), m_aveRSSI(0U), m_rssiCount(0U), + m_dumpRCCH(dumpRCCHData), m_verbose(verbose), m_debug(debug) { @@ -140,9 +141,12 @@ Control::Control(uint32_t ran, uint32_t callHang, uint32_t queueSize, uint32_t t acl::AccessControl::init(m_ridLookup, m_tidLookup); - m_voice = new Voice(this, network, debug, verbose); - m_trunk = new Trunk(this, network, debug, verbose, dumpRCCHData); + m_voice = new Voice(this, network, dumpRCCHData, debug, verbose); + m_trunk = new Trunk(this, network, dumpRCCHData, debug, verbose); m_data = new Data(this, network, debug, verbose); + + m_rfLC.setVerbose(m_dumpRCCH); + m_netLC.setVerbose(m_dumpRCCH); } /// @@ -182,11 +186,13 @@ void Control::reset() m_queue.clear(); m_rfMask = 0x00U; + m_rfLC.setVerbose(m_dumpRCCH); m_rfLC.reset(); m_netState = RS_NET_IDLE; m_netMask = 0x00U; + m_netLC.setVerbose(m_dumpRCCH); m_netLC.reset(); } diff --git a/nxdn/Control.h b/nxdn/Control.h index d3c38b04..82339d8f 100644 --- a/nxdn/Control.h +++ b/nxdn/Control.h @@ -172,6 +172,8 @@ namespace nxdn uint32_t m_aveRSSI; uint32_t m_rssiCount; + bool m_dumpRCCH; + bool m_verbose; bool m_debug; diff --git a/nxdn/channel/CAC.cpp b/nxdn/channel/CAC.cpp index d6b0cd96..a2447f79 100644 --- a/nxdn/channel/CAC.cpp +++ b/nxdn/channel/CAC.cpp @@ -119,8 +119,7 @@ const uint32_t PUNCTURE_LIST_OUT[] = { /// Initializes a new instance of the CAC class. /// CAC::CAC() : - m_verbose(false), - m_ran(1U), + m_ran(0U), m_structure(NXDN_SR_RCCH_SINGLE), m_idleBusy(true), m_txContinuous(false), @@ -137,8 +136,7 @@ CAC::CAC() : /// /// CAC::CAC(const CAC& data) : - m_verbose(false), - m_ran(1U), + m_ran(0U), m_structure(NXDN_SR_RCCH_SINGLE), m_idleBusy(true), m_txContinuous(false), @@ -167,8 +165,6 @@ CAC& CAC::operator=(const CAC& data) if (&data != this) { ::memcpy(m_data, data.m_data, NXDN_CAC_CRC_LENGTH_BYTES); - m_verbose = data.m_verbose; - m_ran = m_data[0U] & 0x3FU; m_structure = (m_data[0U] >> 6) & 0x03U; @@ -224,9 +220,9 @@ bool CAC::decode(const uint8_t* data) conv.chainback(m_data, NXDN_CAC_SHORT_CRC_LENGTH_BITS); - if (m_verbose) { - Utils::dump(2U, "Decoded CAC", m_data, (NXDN_CAC_SHORT_CRC_LENGTH_BITS / 8U) + 1U); - } +#if DEBUG_NXDN_CAC + Utils::dump(2U, "Decoded CAC", m_data, (NXDN_CAC_SHORT_CRC_LENGTH_BITS / 8U) + 1U); +#endif // check CRC-16 bool ret = CRC::checkCRC16(m_data, NXDN_CAC_SHORT_LENGTH_BITS); @@ -251,10 +247,9 @@ bool CAC::decode(const uint8_t* data) m_rxCRC = (crc[0U] << 8) | (crc[1U] << 0); #if DEBUG_NXDN_CAC - if (m_verbose) { - Utils::dump(2U, "Raw CAC Buffer", m_data, NXDN_CAC_FEC_LENGTH_BYTES); - } + Utils::dump(2U, "Raw CAC Buffer", m_data, NXDN_CAC_FEC_LENGTH_BYTES); #endif + return true; } @@ -282,9 +277,9 @@ void CAC::encode(uint8_t* data) const CRC::addCRC16(buffer, NXDN_CAC_LENGTH_BITS); - if (m_verbose) { - Utils::dump(2U, "Encoded CAC", buffer, NXDN_CAC_FEC_LENGTH_BYTES); - } +#if DEBUG_NXDN_CAC + Utils::dump(2U, "Encoded CAC", buffer, NXDN_CAC_FEC_LENGTH_BYTES); +#endif // encode convolution uint8_t convolution[NXDN_CAC_FEC_CONV_LENGTH_BYTES]; @@ -293,10 +288,6 @@ void CAC::encode(uint8_t* data) const Convolution conv; conv.encode(buffer, convolution, NXDN_CAC_CRC_LENGTH_BITS); -#if DEBUG_NXDN_CAC - Utils::dump(2U, "CAC::encode(), CAC Convolution", convolution, NXDN_CAC_FEC_CONV_LENGTH_BYTES); -#endif - // puncture uint8_t puncture[NXDN_CAC_FEC_LENGTH_BYTES]; ::memset(puncture, 0x00U, NXDN_CAC_FEC_LENGTH_BYTES); diff --git a/nxdn/channel/CAC.h b/nxdn/channel/CAC.h index 1f9a1be1..75b3d6cc 100644 --- a/nxdn/channel/CAC.h +++ b/nxdn/channel/CAC.h @@ -64,9 +64,6 @@ namespace nxdn void setData(const uint8_t* data); public: - /// Flag indicating verbose log output. - __PROPERTY(bool, verbose, Verbose); - /** Common Data */ /// Radio Access Number __PROPERTY(uint8_t, ran, RAN); diff --git a/nxdn/channel/FACCH1.cpp b/nxdn/channel/FACCH1.cpp index 68fd1152..66c80c0a 100644 --- a/nxdn/channel/FACCH1.cpp +++ b/nxdn/channel/FACCH1.cpp @@ -72,7 +72,6 @@ const uint32_t PUNCTURE_LIST[] = { /// Initializes a new instance of the FACCH1 class. /// FACCH1::FACCH1() : - m_verbose(false), m_data(NULL) { m_data = new uint8_t[NXDN_FACCH1_CRC_LENGTH_BYTES]; @@ -84,7 +83,6 @@ FACCH1::FACCH1() : /// /// FACCH1::FACCH1(const FACCH1& data) : - m_verbose(false), m_data(NULL) { copy(data); @@ -107,8 +105,6 @@ FACCH1& FACCH1::operator=(const FACCH1& data) { if (&data != this) { ::memcpy(m_data, data.m_data, NXDN_FACCH1_CRC_LENGTH_BYTES); - - m_verbose = data.m_verbose; } return *this; @@ -171,9 +167,9 @@ bool FACCH1::decode(const uint8_t* data, uint32_t offset) conv.chainback(m_data, NXDN_FACCH1_CRC_LENGTH_BITS); - if (m_verbose) { - Utils::dump(2U, "Decoded FACCH1", m_data, NXDN_FACCH1_CRC_LENGTH_BYTES); - } +#if DEBUG_NXDN_FACCH1 + Utils::dump(2U, "Decoded FACCH1", m_data, NXDN_FACCH1_CRC_LENGTH_BYTES); +#endif // check CRC-12 bool ret = CRC::checkCRC12(m_data, NXDN_FACCH1_LENGTH_BITS); @@ -200,9 +196,9 @@ void FACCH1::encode(uint8_t* data, uint32_t offset) const CRC::addCRC12(buffer, NXDN_FACCH1_LENGTH_BITS); - if (m_verbose) { - Utils::dump(2U, "Encoded FACCH1", buffer, NXDN_FACCH1_CRC_LENGTH_BYTES); - } +#if DEBUG_NXDN_FACCH1 + Utils::dump(2U, "Encoded FACCH1", buffer, NXDN_FACCH1_CRC_LENGTH_BYTES); +#endif // encode convolution uint8_t convolution[NXDN_FACCH1_FEC_CONV_LENGTH_BYTES]; @@ -211,10 +207,6 @@ void FACCH1::encode(uint8_t* data, uint32_t offset) const Convolution conv; conv.encode(buffer, convolution, NXDN_FACCH1_CRC_LENGTH_BITS); -#if DEBUG_NXDN_FACCH1 - Utils::dump(2U, "FACCH1::encode(), FACCH1 Convolution", convolution, NXDN_FACCH1_FEC_CONV_LENGTH_BYTES); -#endif - // puncture uint8_t puncture[NXDN_FACCH1_FEC_LENGTH_BYTES]; ::memset(puncture, 0x00U, NXDN_FACCH1_FEC_LENGTH_BYTES); @@ -276,6 +268,4 @@ void FACCH1::copy(const FACCH1& data) { m_data = new uint8_t[NXDN_FACCH1_CRC_LENGTH_BYTES]; ::memcpy(m_data, data.m_data, NXDN_FACCH1_CRC_LENGTH_BYTES); - - m_verbose = data.m_verbose; } diff --git a/nxdn/channel/FACCH1.h b/nxdn/channel/FACCH1.h index 64683b56..ea2137c8 100644 --- a/nxdn/channel/FACCH1.h +++ b/nxdn/channel/FACCH1.h @@ -62,10 +62,6 @@ namespace nxdn void getData(uint8_t* data) const; /// Sets the raw FACCH1 data. void setData(const uint8_t* data); - - public: - /// Flag indicating verbose log output. - __PROPERTY(bool, verbose, Verbose); private: uint8_t* m_data; diff --git a/nxdn/channel/SACCH.cpp b/nxdn/channel/SACCH.cpp index e1af5d2a..d80f737b 100644 --- a/nxdn/channel/SACCH.cpp +++ b/nxdn/channel/SACCH.cpp @@ -65,8 +65,7 @@ const uint32_t PUNCTURE_LIST[] = { 5U, 11U, 17U, 23U, 29U, 35U, 41U, 47U, 53U, 5 /// Initializes a new instance of the SACCH class. /// SACCH::SACCH() : - m_verbose(false), - m_ran(1U), + m_ran(0U), m_structure(NXDN_SR_SINGLE), m_data(NULL) { @@ -79,8 +78,7 @@ SACCH::SACCH() : /// /// SACCH::SACCH(const SACCH& data) : - m_verbose(false), - m_ran(1U), + m_ran(0U), m_structure(NXDN_SR_SINGLE), m_data(NULL) { @@ -105,8 +103,6 @@ SACCH& SACCH::operator=(const SACCH& data) if (&data != this) { ::memcpy(m_data, data.m_data, NXDN_SACCH_CRC_LENGTH_BYTES); - m_verbose = data.m_verbose; - m_ran = m_data[0U] & 0x3FU; m_structure = (m_data[0U] >> 6) & 0x03U; } @@ -156,10 +152,6 @@ bool SACCH::decode(const uint8_t* data) puncture[n++] = 0U; } -#if DEBUG_NXDN_SACCH - Utils::dump(2U, "SACCH::decode(), SACCH Puncture List", puncture, 90U); -#endif - // decode convolution Convolution conv; conv.start(); @@ -177,9 +169,9 @@ bool SACCH::decode(const uint8_t* data) conv.chainback(m_data, NXDN_SACCH_CRC_LENGTH_BITS); - if (m_verbose) { - Utils::dump(2U, "Decoded SACCH", m_data, NXDN_SACCH_CRC_LENGTH_BYTES); - } +#if DEBUG_NXDN_SACCH + Utils::dump(2U, "Decoded SACCH", m_data, NXDN_SACCH_CRC_LENGTH_BYTES); +#endif // check CRC-6 bool ret = CRC::checkCRC6(m_data, NXDN_SACCH_LENGTH_BITS); @@ -218,9 +210,9 @@ void SACCH::encode(uint8_t* data) const CRC::addCRC6(buffer, NXDN_SACCH_LENGTH_BITS); - if (m_verbose) { +#if DEBUG_NXDN_SACCH Utils::dump(2U, "Encoded SACCH", buffer, NXDN_SACCH_CRC_LENGTH_BYTES); - } +#endif // encode convolution uint8_t convolution[NXDN_SACCH_FEC_CONV_LENGTH_BYTES]; @@ -229,10 +221,6 @@ void SACCH::encode(uint8_t* data) const Convolution conv; conv.encode(buffer, convolution, NXDN_SACCH_CRC_LENGTH_BITS); -#if DEBUG_NXDN_SACCH - Utils::dump(2U, "SACCH::encode(), SACCH Convolution", convolution, NXDN_SACCH_FEC_CONV_LENGTH_BYTES); -#endif - // puncture uint8_t puncture[NXDN_SACCH_FEC_LENGTH_BYTES]; ::memset(puncture, 0x00U, NXDN_SACCH_FEC_LENGTH_BYTES); diff --git a/nxdn/channel/SACCH.h b/nxdn/channel/SACCH.h index 62640ac0..5c17c608 100644 --- a/nxdn/channel/SACCH.h +++ b/nxdn/channel/SACCH.h @@ -65,9 +65,6 @@ namespace nxdn void setData(const uint8_t* data); public: - /// Flag indicating verbose log output. - __PROPERTY(bool, verbose, Verbose); - /** Common Data */ /// Radio Access Number __PROPERTY(uint8_t, ran, RAN); diff --git a/nxdn/channel/UDCH.cpp b/nxdn/channel/UDCH.cpp index 87442a59..6c384aa7 100644 --- a/nxdn/channel/UDCH.cpp +++ b/nxdn/channel/UDCH.cpp @@ -94,7 +94,6 @@ const uint32_t PUNCTURE_LIST[] = { /// Initializes a new instance of the UDCH class. /// UDCH::UDCH() : - m_verbose(false), m_ran(0U), m_data(NULL) { @@ -107,7 +106,6 @@ UDCH::UDCH() : /// /// UDCH::UDCH(const UDCH& data) : - m_verbose(false), m_ran(0U), m_data(NULL) { @@ -132,8 +130,6 @@ UDCH& UDCH::operator=(const UDCH& data) if (&data != this) { ::memcpy(m_data, data.m_data, NXDN_UDCH_CRC_LENGTH_BYTES); - m_verbose = data.m_verbose; - m_ran = m_data[0U] & 0x3FU; } @@ -197,9 +193,9 @@ bool UDCH::decode(const uint8_t* data) conv.chainback(m_data, NXDN_UDCH_CRC_LENGTH_BITS); - if (m_verbose) { - Utils::dump(2U, "Decoded UDCH", m_data, NXDN_UDCH_CRC_LENGTH_BYTES); - } +#if DEBUG_NXDN_UDCH + Utils::dump(2U, "Decoded UDCH", m_data, NXDN_UDCH_CRC_LENGTH_BYTES); +#endif // check CRC-15 bool ret = CRC::checkCRC15(m_data, NXDN_UDCH_LENGTH_BITS); @@ -229,9 +225,9 @@ void UDCH::encode(uint8_t* data) const CRC::addCRC15(buffer, NXDN_UDCH_LENGTH_BITS); - if (m_verbose) { - Utils::dump(2U, "Encoded UDCH", m_data, NXDN_UDCH_CRC_LENGTH_BYTES); - } +#if DEBUG_NXDN_UDCH + Utils::dump(2U, "Encoded UDCH", m_data, NXDN_UDCH_CRC_LENGTH_BYTES); +#endif // encode convolution uint8_t convolution[NXDN_UDCH_FEC_CONV_LENGTH_BYTES]; @@ -240,10 +236,6 @@ void UDCH::encode(uint8_t* data) const Convolution conv; conv.encode(buffer, convolution, NXDN_UDCH_CRC_LENGTH_BITS); -#if DEBUG_NXDN_UDCH - Utils::dump(2U, "UDCH::encode(), UDCH Convolution", convolution, NXDN_UDCH_FEC_CONV_LENGTH_BYTES); -#endif - // puncture uint8_t puncture[NXDN_UDCH_FEC_LENGTH_BYTES]; ::memset(puncture, 0x00U, NXDN_UDCH_FEC_LENGTH_BYTES); diff --git a/nxdn/channel/UDCH.h b/nxdn/channel/UDCH.h index 26c7e2d3..81049685 100644 --- a/nxdn/channel/UDCH.h +++ b/nxdn/channel/UDCH.h @@ -65,9 +65,6 @@ namespace nxdn void setData(const uint8_t* data); public: - /// Flag indicating verbose log output. - __PROPERTY(bool, verbose, Verbose); - /** Common Data */ /// Radio Access Number __PROPERTY(uint8_t, ran, RAN); diff --git a/nxdn/packet/Data.cpp b/nxdn/packet/Data.cpp index 36974283..adfeb7b8 100644 --- a/nxdn/packet/Data.cpp +++ b/nxdn/packet/Data.cpp @@ -182,7 +182,6 @@ bool Data::process(uint8_t option, uint8_t* data, uint32_t len) assert(data != NULL); channel::UDCH udch; - udch.setVerbose(m_verbose); bool validUDCH = udch.decode(data + 2U); if (m_nxdn->m_rfState == RS_RF_LISTENING && !validUDCH) return false; @@ -298,7 +297,6 @@ bool Data::processNetwork(uint8_t option, lc::RTCH& netLC, uint8_t* data, uint32 } channel::UDCH udch; - udch.setVerbose(m_verbose); bool validUDCH = udch.decode(data + 2U); if (m_nxdn->m_netState == RS_NET_IDLE && !validUDCH) return false; diff --git a/nxdn/packet/Trunk.cpp b/nxdn/packet/Trunk.cpp index 498a772d..7c856ca3 100644 --- a/nxdn/packet/Trunk.cpp +++ b/nxdn/packet/Trunk.cpp @@ -394,11 +394,11 @@ void Trunk::writeRF_Message(bool noNetwork, bool clearBeforeWrite) uint8_t buffer[NXDN_RCCH_LC_LENGTH_BYTES]; ::memset(buffer, 0x00U, NXDN_RCCH_LC_LENGTH_BYTES); + m_rfLC.setVerbose(m_dumpRCCH); m_rfLC.encode(buffer, NXDN_RCCH_LC_LENGTH_BITS); // generate the CAC channel::CAC cac; - cac.setVerbose(m_dumpRCCH); cac.setRAN(m_nxdn->m_ran); cac.setStructure(NXDN_SR_RCCH_SINGLE); cac.setData(buffer); @@ -700,12 +700,12 @@ void Trunk::writeRF_CC_Message_Site_Info() uint8_t buffer[NXDN_RCCH_LC_LENGTH_BYTES]; ::memset(buffer, 0x00U, NXDN_RCCH_LC_LENGTH_BYTES); + m_rfLC.setVerbose(m_dumpRCCH); m_rfLC.setMessageType(RCCH_MESSAGE_TYPE_SITE_INFO); m_rfLC.encode(buffer, NXDN_RCCH_LC_LENGTH_BITS); // generate the CAC channel::CAC cac; - cac.setVerbose(m_dumpRCCH); cac.setRAN(m_nxdn->m_ran); cac.setStructure(NXDN_SR_RCCH_HEAD_SINGLE); cac.setData(buffer); @@ -748,13 +748,13 @@ void Trunk::writeRF_CC_Message_Service_Info() uint8_t buffer[NXDN_RCCH_LC_LENGTH_BYTES]; ::memset(buffer, 0x00U, NXDN_RCCH_LC_LENGTH_BYTES); + m_rfLC.setVerbose(m_dumpRCCH); m_rfLC.setMessageType(MESSAGE_TYPE_SRV_INFO); m_rfLC.encode(buffer, NXDN_RCCH_LC_LENGTH_BITS / 2U); m_rfLC.encode(buffer, NXDN_RCCH_LC_LENGTH_BITS / 2U, NXDN_RCCH_LC_LENGTH_BITS / 2U); // generate the CAC channel::CAC cac; - cac.setVerbose(m_dumpRCCH); cac.setRAN(m_nxdn->m_ran); cac.setStructure(NXDN_SR_RCCH_DUAL); cac.setData(buffer); diff --git a/nxdn/packet/Voice.cpp b/nxdn/packet/Voice.cpp index 0b272c7c..268260f9 100644 --- a/nxdn/packet/Voice.cpp +++ b/nxdn/packet/Voice.cpp @@ -189,7 +189,6 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) assert(data != NULL); channel::SACCH sacch; - sacch.setVerbose(m_verbose); bool valid = sacch.decode(data + 2U); if (valid) { uint8_t ran = sacch.getRAN(); @@ -202,7 +201,6 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) if (fct == NXDN_LICH_USC_SACCH_NS) { // the SACCH on a non-superblock frame is usually an idle and not interesting apart from the RAN. channel::FACCH1 facch; - facch.setVerbose(m_verbose); bool valid = facch.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); if (!valid) valid = facch.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); @@ -213,7 +211,7 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) facch.getData(buffer); lc::RTCH lc; - lc.setVerbose(m_verbose); + lc.setVerbose(m_dumpRTCH); lc.decode(buffer, NXDN_FACCH1_FEC_LENGTH_BITS); uint16_t dstId = lc.getDstId(); uint16_t srcId = lc.getSrcId(); @@ -255,7 +253,6 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) // generate the SACCH channel::SACCH sacch; - sacch.setVerbose(m_verbose); sacch.setData(SACCH_IDLE); sacch.setRAN(m_nxdn->m_ran); sacch.setStructure(NXDN_SR_SINGLE); @@ -315,7 +312,6 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) } else { if (m_nxdn->m_rfState == RS_RF_LISTENING) { channel::FACCH1 facch; - facch.setVerbose(m_verbose); bool valid = false; switch (option) { case NXDN_LICH_STEAL_FACCH: @@ -339,7 +335,7 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) facch.getData(buffer); lc::RTCH lc; - lc.setVerbose(m_verbose); + lc.setVerbose(m_dumpRTCH); lc.decode(buffer, NXDN_FACCH1_FEC_LENGTH_BITS); hasInfo = lc.getMessageType() == RTCH_MESSAGE_TYPE_VCALL; @@ -437,7 +433,6 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) // generate the SACCH channel::SACCH sacch; - sacch.setVerbose(m_verbose); sacch.setData(SACCH_IDLE); sacch.setRAN(m_nxdn->m_ran); sacch.setStructure(NXDN_SR_SINGLE); @@ -479,7 +474,6 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) // regenerate SACCH if it's valid channel::SACCH sacch; - sacch.setVerbose(m_verbose); bool validSACCH = sacch.decode(data + 2U); if (validSACCH) { sacch.setRAN(m_nxdn->m_ran); @@ -518,7 +512,6 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) } } else if (option == NXDN_LICH_STEAL_FACCH1_1) { channel::FACCH1 facch1; - facch1.setVerbose(m_verbose); bool valid = facch1.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); if (valid) facch1.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); @@ -574,19 +567,16 @@ bool Voice::process(uint8_t fct, uint8_t option, uint8_t* data, uint32_t len) } channel::FACCH1 facch1; - facch1.setVerbose(m_verbose); bool valid = facch1.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); if (valid) facch1.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); } else { channel::FACCH1 facch11; - facch11.setVerbose(m_verbose); bool valid1 = facch11.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); if (valid1) facch11.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); channel::FACCH1 facch12; - facch12.setVerbose(m_verbose); bool valid2 = facch12.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); if (valid2) facch12.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); @@ -633,13 +623,11 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t } channel::SACCH sacch; - sacch.setVerbose(m_verbose); sacch.decode(data + 2U); if (fct == NXDN_LICH_USC_SACCH_NS) { // the SACCH on a non-superblock frame is usually an idle and not interesting apart from the RAN. channel::FACCH1 facch; - facch.setVerbose(m_verbose); bool valid = facch.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); if (!valid) valid = facch.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); @@ -650,7 +638,7 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t facch.getData(buffer); lc::RTCH lc; - lc.setVerbose(m_verbose); + lc.setVerbose(m_dumpRTCH); lc.decode(buffer, NXDN_FACCH1_FEC_LENGTH_BITS); uint16_t dstId = lc.getDstId(); uint16_t srcId = lc.getSrcId(); @@ -692,7 +680,6 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t // generate the SACCH channel::SACCH sacch; - sacch.setVerbose(m_verbose); sacch.setData(SACCH_IDLE); sacch.setRAN(m_nxdn->m_ran); sacch.setStructure(NXDN_SR_SINGLE); @@ -735,7 +722,6 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t } else { if (m_nxdn->m_netState == RS_NET_IDLE) { channel::FACCH1 facch; - facch.setVerbose(m_verbose); bool valid = false; switch (option) { case NXDN_LICH_STEAL_FACCH: @@ -759,7 +745,7 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t facch.getData(buffer); lc::RTCH lc; - lc.setVerbose(m_verbose); + lc.setVerbose(m_dumpRTCH); lc.decode(buffer, NXDN_FACCH1_FEC_LENGTH_BITS); hasInfo = lc.getMessageType() == RTCH_MESSAGE_TYPE_VCALL; @@ -850,7 +836,6 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t // generate the SACCH channel::SACCH sacch; - sacch.setVerbose(m_verbose); sacch.setData(SACCH_IDLE); sacch.setRAN(m_nxdn->m_ran); sacch.setStructure(NXDN_SR_SINGLE); @@ -888,7 +873,6 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t // regenerate SACCH if it's valid channel::SACCH sacch; - sacch.setVerbose(m_verbose); bool validSACCH = sacch.decode(data + 2U); if (validSACCH) { sacch.setRAN(m_nxdn->m_ran); @@ -914,7 +898,6 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t } } else if (option == NXDN_LICH_STEAL_FACCH1_1) { channel::FACCH1 facch1; - facch1.setVerbose(m_verbose); bool valid = facch1.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); if (valid) facch1.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); @@ -947,19 +930,16 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t LogMessage(LOG_NET, "NXDN, " NXDN_RTCH_MSG_TYPE_VCALL ", audio, errs = %u/94 (%.1f%%)", errors, float(errors) / 0.94F); } channel::FACCH1 facch1; - facch1.setVerbose(m_verbose); bool valid = facch1.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); if (valid) facch1.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); } else { channel::FACCH1 facch11; - facch11.setVerbose(m_verbose); bool valid1 = facch11.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); if (valid1) facch11.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS); channel::FACCH1 facch12; - facch12.setVerbose(m_verbose); bool valid2 = facch12.decode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); if (valid2) facch12.encode(data + 2U, NXDN_FSW_LENGTH_BITS + NXDN_LICH_LENGTH_BITS + NXDN_SACCH_FEC_LENGTH_BITS + NXDN_FACCH1_FEC_LENGTH_BITS); @@ -992,9 +972,10 @@ bool Voice::processNetwork(uint8_t fct, uint8_t option, lc::RTCH& netLC, uint8_t /// /// Instance of the Control class. /// Instance of the BaseNetwork class. +/// Flag indicating whether RTCH data is dumped to the log. /// Flag indicating whether NXDN debug is enabled. /// Flag indicating whether NXDN verbose logging is enabled. -Voice::Voice(Control* nxdn, network::BaseNetwork* network, bool debug, bool verbose) : +Voice::Voice(Control* nxdn, network::BaseNetwork* network, bool dumpRTCHData, bool debug, bool verbose) : m_nxdn(nxdn), m_network(network), m_rfFrames(0U), @@ -1005,6 +986,7 @@ Voice::Voice(Control* nxdn, network::BaseNetwork* network, bool debug, bool verb m_netLost(0U), m_lastRejectId(0U), m_silenceThreshold(DEFAULT_SILENCE_THRESHOLD), + m_dumpRTCH(dumpRTCHData), m_verbose(verbose), m_debug(debug) { diff --git a/nxdn/packet/Voice.h b/nxdn/packet/Voice.h index e12e3689..e3b60bee 100644 --- a/nxdn/packet/Voice.h +++ b/nxdn/packet/Voice.h @@ -84,11 +84,13 @@ namespace nxdn uint32_t m_silenceThreshold; + bool m_dumpRTCH; + bool m_verbose; bool m_debug; /// Initializes a new instance of the Voice class. - Voice(Control* nxdn, network::BaseNetwork* network, bool debug, bool verbose); + Voice(Control* nxdn, network::BaseNetwork* network, bool dumpRTCHData, bool debug, bool verbose); /// Finalizes a instance of the Voice class. virtual ~Voice();