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();