minor alteration to some debug/trace and logging;

pull/1/head
Bryan Biedenkapp 5 years ago
parent ce0657206e
commit dedaa57580

@ -152,6 +152,75 @@ void Utils::dump(int level, const std::string& title, const bool* bits, uint32_t
dump(level, title, bytes, nBytes); dump(level, title, bytes, nBytes);
} }
/// <summary>
///
/// </summary>
/// <param name="title"></param>
/// <param name="data"></param>
/// <param name="length"></param>
void Utils::symbols(const std::string& title, const uint8_t* data, uint32_t length)
{
assert(data != NULL);
::Log(2U, "SYMBOLS", "%s", title.c_str());
uint32_t offset = 0U;
uint32_t count = 0U;
std::string microslotHeader;
for (unsigned j = 0; j < 2; j++) {
char temp[27U];
::sprintf(temp, "_____________%u____________", j);
microslotHeader += temp;
::sprintf(temp, " ");
microslotHeader += temp;
}
::Log(2U, "SYMBOLS", "MCR: % s\r\n", microslotHeader.c_str());
uint32_t bufLen = length;
while (bufLen > 0U) {
std::string output;
uint32_t bytes = (bufLen > 18U) ? 18U : bufLen;
uint32_t symOffset = offset;
// iterate through bytes in groups of 2
for (unsigned j = 0; j < 2U; j++) {
if (symOffset + 1 > length) {
break;
}
for (unsigned i = 0U; i < 9U; i++) {
if (symOffset + i > length) {
break;
}
char temp[10U];
::sprintf(temp, "%02X ", data[symOffset + i]);
output += temp;
}
char temp[10U];
::sprintf(temp, " ");
output += temp;
symOffset += 9;
}
::Log(2U, "SYMBOLS", "%03u: %s\r\n", count, output.c_str());
offset += 18U;
count += 2U;
if (bufLen >= 18U)
bufLen -= 18U;
else
bufLen = 0U;
}
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>

@ -56,6 +56,9 @@ public:
/// <summary></summary> /// <summary></summary>
static void dump(int level, const std::string& title, const bool* bits, uint32_t length); static void dump(int level, const std::string& title, const bool* bits, uint32_t length);
/// <summary></summary>
static void symbols(const std::string& title, const uint8_t* data, uint32_t length);
/// <summary></summary> /// <summary></summary>
static void byteToBitsBE(uint8_t byte, bool* bits); static void byteToBitsBE(uint8_t byte, bool* bits);
/// <summary></summary> /// <summary></summary>

@ -212,10 +212,6 @@ bool ControlPacket::process(uint8_t* data, uint32_t len)
} }
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX DMR Frame - DT_CSBK", data + 2U, DMR_FRAME_LENGTH_BYTES);
}
return true; return true;
} }

@ -33,6 +33,17 @@
#include "Defines.h" #include "Defines.h"
// Data Type ID String(s)
#define DMR_DT_TERMINATOR_WITH_LC "DMR_DT_TERMINATOR_WITH_LC (Terminator with Link Control)"
#define DMR_DT_DATA_HEADER "DMR_DT_DATA_HEADER (Data Header)"
#define DMR_DT_RATE_12_DATA "DMR_DT_RATE_12_DATA (1/2-rate Data)"
#define DMR_DT_RATE_34_DATA "DMR_DT_RATE_34_DATA (3/4-rate Data)"
#define DMR_DT_RATE_1_DATA "DMR_DT_RATE_1_DATA (1-rate Data)"
#define DMR_DT_VOICE_LC_HEADER "DMR_DT_VOICE_LC_HEADER (Voice Header with Link Control)"
#define DMR_DT_VOICE_PI_HEADER "DMR_DT_VOICE_PI_HEADER (Voice Header with Privacy Indicator)"
#define DMR_DT_VOICE_SYNC "DMR_DT_VOICE_SYNC (Voice Data with Sync)"
#define DMR_DT_VOICE "DMR_DT_VOICE (Voice Data)"
namespace dmr namespace dmr
{ {
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

@ -124,8 +124,8 @@ bool DataPacket::process(uint8_t* data, uint32_t len)
} }
} }
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Frame - DT_TERMINATOR_WITH_LC", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_RF, DMR_DT_TERMINATOR_WITH_LC ", slot = %u, dstId = %u", m_slot->m_slotNo, m_slot->m_rfLC->getDstId());
} }
if (m_slot->m_rssi != 0U) { if (m_slot->m_rssi != 0U) {
@ -207,8 +207,9 @@ bool DataPacket::process(uint8_t* data, uint32_t len)
m_slot->setShortLC(m_slot->m_slotNo, dstId, gi ? FLCO_GROUP : FLCO_PRIVATE, false); m_slot->setShortLC(m_slot->m_slotNo, dstId, gi ? FLCO_GROUP : FLCO_PRIVATE, false);
} }
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Frame - DT_DATA_HEADER", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_RF, DMR_DT_DATA_HEADER ", slot = %u, dstId = %u, srcId = %u, group = %u, blocks = %u", m_slot->m_slotNo, m_slot->m_rfLC->getDstId(), m_slot->m_rfLC->getSrcId(),
m_slot->m_rfLC->getFLCO() == FLCO_GROUP, dataHeader.getBlocks());
} }
::ActivityLog("DMR", true, "Slot %u RF data header from %u to %s%u, %u blocks", m_slot->m_slotNo, srcId, gi ? "TG " : "", dstId, m_slot->m_rfFrames); ::ActivityLog("DMR", true, "Slot %u RF data header from %u to %s%u, %u blocks", m_slot->m_slotNo, srcId, gi ? "TG " : "", dstId, m_slot->m_rfFrames);
@ -256,7 +257,7 @@ bool DataPacket::process(uint8_t* data, uint32_t len)
} }
else { else {
LogWarning(LOG_RF, "DMR Slot %u, DT_RATE_34_DATA, unfixable RF rate 3/4 data", m_slot->m_slotNo); LogWarning(LOG_RF, "DMR Slot %u, DT_RATE_34_DATA, unfixable RF rate 3/4 data", m_slot->m_slotNo);
Utils::dump(1U, "Data", data + 2U, DMR_FRAME_LENGTH_BYTES); Utils::dump(1U, "Unfixable PDU Data", data + 2U, DMR_FRAME_LENGTH_BYTES);
} }
m_pduDataOffset += 18U; m_pduDataOffset += 18U;
@ -288,8 +289,16 @@ bool DataPacket::process(uint8_t* data, uint32_t len)
m_slot->writeEndRF(); m_slot->writeEndRF();
} }
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Frame - DT_RATE_12/34_DATA", data + 2U, DMR_FRAME_LENGTH_BYTES); if (dataType == DT_RATE_12_DATA) {
LogMessage(LOG_RF, DMR_DT_RATE_12_DATA ", block = %u", m_slot->m_rfFrames + 1);
}
else if (dataType == DT_RATE_34_DATA) {
LogMessage(LOG_RF, DMR_DT_RATE_34_DATA ", block = %u", m_slot->m_rfFrames + 1);
}
else {
LogMessage(LOG_RF, DMR_DT_RATE_1_DATA ", block = %u", m_slot->m_rfFrames + 1);
}
} }
return true; return true;
@ -340,8 +349,8 @@ void DataPacket::processNetwork(const data::Data& dmrData)
} }
} }
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Network Frame - DT_TERMINATOR_WITH_LC", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_RF, DMR_DT_TERMINATOR_WITH_LC ", slot = %u, dstId = %u", m_slot->m_slotNo, m_slot->m_netLC->getDstId());
} }
// We've received the voice header and terminator haven't we? // We've received the voice header and terminator haven't we?
@ -396,8 +405,9 @@ void DataPacket::processNetwork(const data::Data& dmrData)
m_slot->setShortLC(m_slot->m_slotNo, dstId, gi ? FLCO_GROUP : FLCO_PRIVATE, false); m_slot->setShortLC(m_slot->m_slotNo, dstId, gi ? FLCO_GROUP : FLCO_PRIVATE, false);
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Network Frame - DT_DATA_HEADER", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_RF, DMR_DT_DATA_HEADER ", slot = %u, dstId = %u, srcId = %u, group = %u, blocks = %u", m_slot->m_slotNo, m_slot->m_rfLC->getDstId(), m_slot->m_rfLC->getSrcId(),
m_slot->m_rfLC->getFLCO() == FLCO_GROUP, dataHeader.getBlocks());
} }
::ActivityLog("DMR", false, "Slot %u network data header from %u to %s%u, %u blocks", ::ActivityLog("DMR", false, "Slot %u network data header from %u to %s%u, %u blocks",
@ -468,8 +478,16 @@ void DataPacket::processNetwork(const data::Data& dmrData)
m_slot->writeQueueNet(data); m_slot->writeQueueNet(data);
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Network Frame - DT_RATE_12/34_DATA", data + 2U, DMR_FRAME_LENGTH_BYTES); if (dataType == DT_RATE_12_DATA) {
LogMessage(LOG_RF, DMR_DT_RATE_12_DATA ", block = %u", m_slot->m_netFrames + 1);
}
else if (dataType == DT_RATE_34_DATA) {
LogMessage(LOG_RF, DMR_DT_RATE_34_DATA ", block = %u", m_slot->m_netFrames + 1);
}
else {
LogMessage(LOG_RF, DMR_DT_RATE_1_DATA ", block = %u", m_slot->m_netFrames + 1);
}
} }
} }

@ -168,8 +168,6 @@ bool Slot::processFrame(uint8_t *data, uint32_t len)
{ {
assert(data != NULL); assert(data != NULL);
// Utils::dump(2U, "!!! *RX DMR Raw", data, len);
if (data[0U] == TAG_LOST && m_rfState == RS_RF_AUDIO) { if (data[0U] == TAG_LOST && m_rfState == RS_RF_AUDIO) {
if (m_rssi != 0U) { if (m_rssi != 0U) {
::ActivityLog("DMR", true, "Slot %u RF voice transmission lost, %.1f seconds, BER: %.1f%%, RSSI: -%u/-%u/-%u dBm", ::ActivityLog("DMR", true, "Slot %u RF voice transmission lost, %.1f seconds, BER: %.1f%%, RSSI: -%u/-%u/-%u dBm",
@ -252,7 +250,7 @@ bool Slot::processFrame(uint8_t *data, uint32_t len)
} }
if ((dataSync || voiceSync) && m_debug) { if ((dataSync || voiceSync) && m_debug) {
Utils::dump(1U, "!!! *RX DMR Modem Frame", data, len); Utils::symbols("!!! *Rx DMR", data + 2U, len - 2U);
} }
if ((dataSync || voiceSync) && m_rfState != RS_RF_LISTENING) if ((dataSync || voiceSync) && m_rfState != RS_RF_LISTENING)
@ -546,6 +544,10 @@ void Slot::writeQueueRF(const uint8_t *data)
return; return;
} }
if (m_debug) {
Utils::symbols("!!! *Tx DMR", data + 2U, len - 2U);
}
m_queue.addData(&len, 1U); m_queue.addData(&len, 1U);
m_queue.addData(data, len); m_queue.addData(data, len);
} }
@ -566,6 +568,10 @@ void Slot::writeQueueNet(const uint8_t *data)
return; return;
} }
if (m_debug) {
Utils::symbols("!!! *Tx DMR", data + 2U, len - 2U);
}
m_queue.addData(&len, 1U); m_queue.addData(&len, 1U);
m_queue.addData(data, len); m_queue.addData(data, len);
} }

@ -134,10 +134,6 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
m_slot->m_data->m_lastRejectId = 0U; m_slot->m_data->m_lastRejectId = 0U;
if (m_verbose) {
LogMessage(LOG_RF, "DMR Slot %u, DT_VOICE_LC_HEADER, srcId = %u, dstId = %u, FLCO = $%02X, FID = $%02X, PF = %u", m_slot->m_slotNo, lc->getSrcId(), lc->getDstId(), lc->getFLCO(), lc->getFID(), lc->getPF());
}
uint8_t fid = lc->getFID(); uint8_t fid = lc->getFID();
// NOTE: this is fiddly -- on Motorola a FID of 0x10 indicates a SU has transmitted with Enhanced Privacy enabled -- this might change // NOTE: this is fiddly -- on Motorola a FID of 0x10 indicates a SU has transmitted with Enhanced Privacy enabled -- this might change
@ -197,8 +193,8 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
m_slot->setShortLC(m_slot->m_slotNo, dstId, flco, true); m_slot->setShortLC(m_slot->m_slotNo, dstId, flco, true);
} }
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Frame - DT_VOICE_LC_HEADER", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_RF, DMR_DT_VOICE_LC_HEADER ", slot = %u, srcId = %u, dstId = %u, FLCO = $%02X, FID = $%02X, PF = %u", m_slot->m_slotNo, lc->getSrcId(), lc->getDstId(), lc->getFLCO(), lc->getFID(), lc->getPF());
} }
::ActivityLog("DMR", true, "Slot %u RF %svoice header from %u to %s%u", m_slot->m_slotNo, encrypted ? "encrypted " : "", srcId, flco == FLCO_GROUP ? "TG " : "", dstId); ::ActivityLog("DMR", true, "Slot %u RF %svoice header from %u to %s%u", m_slot->m_slotNo, encrypted ? "encrypted " : "", srcId, flco == FLCO_GROUP ? "TG " : "", dstId);
@ -228,8 +224,8 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
m_slot->writeNetworkRF(data, DT_VOICE_PI_HEADER); m_slot->writeNetworkRF(data, DT_VOICE_PI_HEADER);
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Frame - DT_VOICE_PI_HEADER", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_RF, DMR_DT_VOICE_PI_HEADER ", slot = %u", m_slot->m_slotNo);
} }
return true; return true;
@ -250,8 +246,8 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
if (fid == FID_ETSI || fid == FID_DMRA) { if (fid == FID_ETSI || fid == FID_DMRA) {
errors = m_fec.regenerateDMR(data + 2U); errors = m_fec.regenerateDMR(data + 2U);
if (m_verbose) { if (m_verbose) {
LogMessage(LOG_RF, "DMR Slot %u, DT_VOICE_SYNC audio, sequence no = 0, errs = %u/141 (%.1f%%)", LogMessage(LOG_RF, DMR_DT_VOICE_SYNC ", audio, slot = %u, srcId = %u, dstId = %u, seqNo = 0, errs = %u/141 (%.1f%%)", m_slot->m_slotNo, m_slot->m_rfLC->getSrcId(), m_slot->m_rfLC->getDstId(),
m_slot->m_slotNo, errors, float(errors) / 1.41F); errors, float(errors) / 1.41F);
} }
m_slot->m_rfErrs += errors; m_slot->m_rfErrs += errors;
@ -303,8 +299,8 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
if (fid == FID_ETSI || fid == FID_DMRA) { if (fid == FID_ETSI || fid == FID_DMRA) {
errors = m_fec.regenerateDMR(data + 2U); errors = m_fec.regenerateDMR(data + 2U);
if (m_verbose) { if (m_verbose) {
LogMessage(LOG_RF, "DMR Slot %u, DT_VOICE audio, sequence no = %u, errs = %u/141 (%.1f%%)", LogMessage(LOG_RF, DMR_DT_VOICE ", audio, slot = %u, srcId = %u, dstId = %u, seqNo = %u, errs = %u/141 (%.1f%%)", m_slot->m_slotNo, m_slot->m_rfLC->getSrcId(), m_slot->m_rfLC->getDstId(),
m_slot->m_slotNo, m_rfN, errors, float(errors) / 1.41F); m_rfN, errors, float(errors) / 1.41F);
} }
m_slot->m_rfErrs += errors; m_slot->m_rfErrs += errors;
@ -333,8 +329,6 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
switch (flco) { switch (flco) {
case FLCO_GROUP: case FLCO_GROUP:
case FLCO_PRIVATE: case FLCO_PRIVATE:
// ::sprintf(text, "DMR Slot %u, Embedded LC", m_slotNo);
// Utils::dump(1U, text, data, 9U);
break; break;
case FLCO_GPS_INFO: case FLCO_GPS_INFO:
@ -666,8 +660,8 @@ void VoicePacket::processNetwork(const data::Data& dmrData)
m_slot->setShortLC(m_slot->m_slotNo, dstId, flco, true); m_slot->setShortLC(m_slot->m_slotNo, dstId, flco, true);
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Network Frame - DT_VOICE_LC_HEADER", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_NET, DMR_DT_VOICE_LC_HEADER ", slot = %u, srcId = %u, dstId = %u, FLCO = $%02X, FID = $%02X, PF = %u", m_slot->m_slotNo, lc->getSrcId(), lc->getDstId(), lc->getFLCO(), lc->getFID(), lc->getPF());
} }
::ActivityLog("DMR", false, "Slot %u network voice header from %u to %s%u", m_slot->m_slotNo, srcId, flco == FLCO_GROUP ? "TG " : "", dstId); ::ActivityLog("DMR", false, "Slot %u network voice header from %u to %s%u", m_slot->m_slotNo, srcId, flco == FLCO_GROUP ? "TG " : "", dstId);
@ -755,8 +749,8 @@ void VoicePacket::processNetwork(const data::Data& dmrData)
m_slot->writeQueueNet(data); m_slot->writeQueueNet(data);
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX DMR Network Frame - DT_VOICE_PI_HEADER", data + 2U, DMR_FRAME_LENGTH_BYTES); LogMessage(LOG_NET, DMR_DT_VOICE_PI_HEADER ", slot = %u", m_slot->m_slotNo);
} }
} }
else if (dataType == DT_VOICE_SYNC) { else if (dataType == DT_VOICE_SYNC) {
@ -879,8 +873,8 @@ void VoicePacket::processNetwork(const data::Data& dmrData)
if (fid == FID_ETSI || fid == FID_DMRA) { if (fid == FID_ETSI || fid == FID_DMRA) {
m_slot->m_netErrs += m_fec.regenerateDMR(data + 2U); m_slot->m_netErrs += m_fec.regenerateDMR(data + 2U);
if (m_verbose) { if (m_verbose) {
LogMessage(LOG_NET, "DMR Slot %u, DT_VOICE audio, sequence no = %u, errs = %u/141 (%.1f%%)", LogMessage(LOG_NET, DMR_DT_VOICE ", audio, slot = %u, srcId = %u, dstId = %u, seqNo = %u, errs = %u/141 (%.1f%%)", m_slot->m_slotNo, m_slot->m_netLC->getSrcId(), m_slot->m_netLC->getDstId(),
m_slot->m_slotNo, m_netN, m_slot->m_netErrs, float(m_slot->m_netErrs) / 1.41F); m_netN, m_slot->m_netErrs, float(m_slot->m_netErrs) / 1.41F);
} }
} }
m_slot->m_netBits += 141U; m_slot->m_netBits += 141U;
@ -902,8 +896,6 @@ void VoicePacket::processNetwork(const data::Data& dmrData)
switch (flco) { switch (flco) {
case FLCO_GROUP: case FLCO_GROUP:
case FLCO_PRIVATE: case FLCO_PRIVATE:
// ::sprintf(text, "DMR Slot %u, Embedded LC", m_slotNo);
// Utils::dump(1U, text, data, 9U);
break; break;
case FLCO_GPS_INFO: case FLCO_GPS_INFO:
if (m_dumpTAData) { if (m_dumpTAData) {

@ -432,8 +432,9 @@ void Modem::clock(uint32_t ms)
/** Digital Mobile Radio */ /** Digital Mobile Radio */
case CMD_DMR_DATA1: case CMD_DMR_DATA1:
{ {
if (m_trace) //if (m_trace)
Utils::dump(1U, "RX DMR Data 1", m_buffer, m_length); // Utils::dump(1U, "RX DMR Data 1", m_buffer, m_length);
if (m_rspDoubleLength) { if (m_rspDoubleLength) {
LogError(LOG_MODEM, "CMD_DMR_DATA1 double length?; len = %u", m_length); LogError(LOG_MODEM, "CMD_DMR_DATA1 double length?; len = %u", m_length);
break; break;
@ -454,8 +455,9 @@ void Modem::clock(uint32_t ms)
case CMD_DMR_DATA2: case CMD_DMR_DATA2:
{ {
if (m_trace) //if (m_trace)
Utils::dump(1U, "RX DMR Data 2", m_buffer, m_length); // Utils::dump(1U, "RX DMR Data 2", m_buffer, m_length);
if (m_rspDoubleLength) { if (m_rspDoubleLength) {
LogError(LOG_MODEM, "CMD_DMR_DATA2 double length?; len = %u", m_length); LogError(LOG_MODEM, "CMD_DMR_DATA2 double length?; len = %u", m_length);
break; break;
@ -476,8 +478,9 @@ void Modem::clock(uint32_t ms)
case CMD_DMR_LOST1: case CMD_DMR_LOST1:
{ {
if (m_trace) //if (m_trace)
Utils::dump(1U, "RX DMR Lost 1", m_buffer, m_length); // Utils::dump(1U, "RX DMR Lost 1", m_buffer, m_length);
if (m_rspDoubleLength) { if (m_rspDoubleLength) {
LogError(LOG_MODEM, "CMD_DMR_LOST1 double length?; len = %u", m_length); LogError(LOG_MODEM, "CMD_DMR_LOST1 double length?; len = %u", m_length);
break; break;
@ -493,8 +496,9 @@ void Modem::clock(uint32_t ms)
case CMD_DMR_LOST2: case CMD_DMR_LOST2:
{ {
if (m_trace) //if (m_trace)
Utils::dump(1U, "RX DMR Lost 2", m_buffer, m_length); // Utils::dump(1U, "RX DMR Lost 2", m_buffer, m_length);
if (m_rspDoubleLength) { if (m_rspDoubleLength) {
LogError(LOG_MODEM, "CMD_DMR_LOST2 double length?; len = %u", m_length); LogError(LOG_MODEM, "CMD_DMR_LOST2 double length?; len = %u", m_length);
break; break;
@ -511,8 +515,9 @@ void Modem::clock(uint32_t ms)
/** Project 25 */ /** Project 25 */
case CMD_P25_DATA: case CMD_P25_DATA:
{ {
if (m_trace) //if (m_trace)
Utils::dump(1U, "RX P25 Data", m_buffer, m_length); // Utils::dump(1U, "RX P25 Data", m_buffer, m_length);
if (m_rspDoubleLength) { if (m_rspDoubleLength) {
LogError(LOG_MODEM, "CMD_P25_DATA double length?; len = %u", m_length); LogError(LOG_MODEM, "CMD_P25_DATA double length?; len = %u", m_length);
break; break;
@ -530,8 +535,9 @@ void Modem::clock(uint32_t ms)
case CMD_P25_LOST: case CMD_P25_LOST:
{ {
if (m_trace) //if (m_trace)
Utils::dump(1U, "RX P25 Lost", m_buffer, m_length); // Utils::dump(1U, "RX P25 Lost", m_buffer, m_length);
if (m_rspDoubleLength) { if (m_rspDoubleLength) {
LogError(LOG_MODEM, "CMD_P25_LOST double length?; len = %u", m_length); LogError(LOG_MODEM, "CMD_P25_LOST double length?; len = %u", m_length);
break; break;
@ -548,8 +554,8 @@ void Modem::clock(uint32_t ms)
/** General */ /** General */
case CMD_GET_STATUS: case CMD_GET_STATUS:
{ {
// if (m_trace) //if (m_trace)
// Utils::dump(1U, "Get Status", m_buffer, m_length); // Utils::dump(1U, "Get Status", m_buffer, m_length);
m_modemState = (DVM_STATE)m_buffer[4U]; m_modemState = (DVM_STATE)m_buffer[4U];
@ -674,8 +680,8 @@ void Modem::clock(uint32_t ms)
m_txDMRData1.getData(&len, 1U); m_txDMRData1.getData(&len, 1U);
m_txDMRData1.getData(m_buffer, len); m_txDMRData1.getData(m_buffer, len);
if (m_trace) //if (m_trace)
Utils::dump(1U, "TX DMR Data 1", m_buffer, len); // Utils::dump(1U, "TX DMR Data 1", m_buffer, len);
int ret = write(m_buffer, len); int ret = write(m_buffer, len);
if (ret != int(len)) if (ret != int(len))
@ -692,8 +698,8 @@ void Modem::clock(uint32_t ms)
m_txDMRData2.getData(&len, 1U); m_txDMRData2.getData(&len, 1U);
m_txDMRData2.getData(m_buffer, len); m_txDMRData2.getData(m_buffer, len);
if (m_trace) //if (m_trace)
Utils::dump(1U, "TX DMR Data 2", m_buffer, len); // Utils::dump(1U, "TX DMR Data 2", m_buffer, len);
int ret = write(m_buffer, len); int ret = write(m_buffer, len);
if (ret != int(len)) if (ret != int(len))
@ -710,9 +716,8 @@ void Modem::clock(uint32_t ms)
m_txP25Data.getData(&len, 1U); m_txP25Data.getData(&len, 1U);
m_txP25Data.getData(m_buffer, len); m_txP25Data.getData(m_buffer, len);
if (m_trace) { //if (m_trace)
Utils::dump(1U, "TX P25 Data", m_buffer, len); // Utils::dump(1U, "TX P25 Data", m_buffer, len);
}
int ret = write(m_buffer, len); int ret = write(m_buffer, len);
if (ret != int(len)) if (ret != int(len))
@ -1198,9 +1203,8 @@ bool Modem::sendCWId(const std::string& callsign)
for (uint32_t i = 0U; i < length; i++) for (uint32_t i = 0U; i < length; i++)
buffer[i + 3U] = callsign.at(i); buffer[i + 3U] = callsign.at(i);
if (m_trace) { //if (m_trace)
Utils::dump(1U, "CW ID Data", buffer, length + 3U); // Utils::dump(1U, "CW ID Data", buffer, length + 3U);
}
return write(buffer, length + 3U) == int(length + 3U); return write(buffer, length + 3U) == int(length + 3U);
} }

@ -285,8 +285,6 @@ bool Control::processFrame(uint8_t* data, uint32_t len)
{ {
assert(data != NULL); assert(data != NULL);
// Utils::dump(2U, "!!! *RX P25 Raw", data, len);
bool sync = data[1U] == 0x01U; bool sync = data[1U] == 0x01U;
if (data[0U] == TAG_LOST && m_rfState == RS_RF_AUDIO) { if (data[0U] == TAG_LOST && m_rfState == RS_RF_AUDIO) {
@ -373,7 +371,7 @@ bool Control::processFrame(uint8_t* data, uint32_t len)
} }
if (sync && m_debug) { if (sync && m_debug) {
Utils::dump(2U, "!!! *RX P25 Frame", data, len); Utils::symbols("!!! *Rx P25", data + 2U, len - 2U);
} }
// Decode the NID // Decode the NID
@ -672,6 +670,10 @@ void Control::writeQueueRF(const uint8_t* data, uint32_t length)
return; return;
} }
if (m_debug) {
Utils::symbols("!!! *Tx P25", data + 2U, length - 2U);
}
uint8_t len = length; uint8_t len = length;
m_queue.addData(&len, 1U); m_queue.addData(&len, 1U);
@ -696,6 +698,10 @@ void Control::writeQueueNet(const uint8_t* data, uint32_t length)
return; return;
} }
if (m_debug) {
Utils::symbols("!!! *Tx P25", data + 2U, length - 2U);
}
uint8_t len = length; uint8_t len = length;
m_queue.addData(&len, 1U); m_queue.addData(&len, 1U);
@ -729,7 +735,7 @@ void Control::processNetwork()
m_networkWatchdog.start(); m_networkWatchdog.start();
if (m_debug) { if (m_debug) {
Utils::dump(2U, "!!! *RX P25 Network Frame - Data Bytes", data, length); Utils::dump(2U, "!!! *P25 Network Frame", data, length);
} }
switch (duid) { switch (duid) {

@ -455,10 +455,6 @@ bool DataPacket::processNetwork(uint8_t* data, uint32_t len, lc::LC& control, da
m_p25->writeRF_Nulls(); m_p25->writeRF_Nulls();
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_PDU", pdu + 2U, newByteLength);
}
::ActivityLog("P25", true, "end of RF data transmission"); ::ActivityLog("P25", true, "end of RF data transmission");
m_netDataHeader.reset(); m_netDataHeader.reset();
@ -664,10 +660,6 @@ void DataPacket::writeRF_PDU()
if (!m_p25->m_ccRunning) { if (!m_p25->m_ccRunning) {
m_p25->writeRF_Nulls(); m_p25->writeRF_Nulls();
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_PDU", pdu + 2U, newByteLength);
}
} }
/// <summary> /// <summary>
@ -760,10 +752,6 @@ void DataPacket::writeRF_PDU_Reg_Response(uint8_t regType, uint32_t llId, ulong6
pdu[1U] = 0x00U; pdu[1U] = 0x00U;
m_p25->writeQueueRF(pdu, newByteLength + 2U); m_p25->writeQueueRF(pdu, newByteLength + 2U);
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_PDU", pdu + 2U, newByteLength);
}
} }
/// <summary> /// <summary>
@ -823,10 +811,6 @@ void DataPacket::writeRF_PDU_Ack_Response(uint8_t ackClass, uint8_t ackType, uin
pdu[1U] = 0x00U; pdu[1U] = 0x00U;
m_p25->writeQueueRF(pdu, newByteLength + 2U); m_p25->writeQueueRF(pdu, newByteLength + 2U);
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_PDU", pdu + 2U, newByteLength);
}
} }
/// <summary> /// <summary>

@ -1554,8 +1554,8 @@ void TrunkPacket::writeRF_TDULC(uint8_t duid, bool noNetwork)
m_p25->writeQueueRF(data, P25_TDULC_FRAME_LENGTH_BYTES + 2U); m_p25->writeQueueRF(data, P25_TDULC_FRAME_LENGTH_BYTES + 2U);
} }
if (m_debug) { if (m_verbose) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_TDULC", data + 2U, P25_TDULC_FRAME_LENGTH_BYTES); LogMessage(LOG_RF, P25_TDULC_STR ", lc = $%02X, srcId = %u", m_netTDULC.getLCO(), m_netTDULC.getSrcId());
} }
} }
@ -1660,10 +1660,6 @@ void TrunkPacket::writeRF_TSDU_SBF(bool noNetwork, bool clearBeforeWrite)
m_p25->writeQueueRF(data, P25_TSDU_FRAME_LENGTH_BYTES + 2U); m_p25->writeQueueRF(data, P25_TSDU_FRAME_LENGTH_BYTES + 2U);
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - (SBF) P25_DUID_TSDU", data + 2U, P25_TSDU_FRAME_LENGTH_BYTES);
}
} }
/// <summary> /// <summary>
@ -1755,10 +1751,6 @@ void TrunkPacket::writeRF_TSDU_MBF(bool clearBeforeWrite)
m_p25->writeQueueRF(data, P25_TSDU_TRIPLE_FRAME_LENGTH_BYTES + 2U); m_p25->writeQueueRF(data, P25_TSDU_TRIPLE_FRAME_LENGTH_BYTES + 2U);
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - (MBF) P25_DUID_TSDU", data + 2U, P25_TSDU_TRIPLE_FRAME_LENGTH_BYTES);
}
::memset(m_rfMBF, 0x00U, P25_MAX_PDU_COUNT * P25_LDU_FRAME_LENGTH_BYTES + 2U); ::memset(m_rfMBF, 0x00U, P25_MAX_PDU_COUNT * P25_LDU_FRAME_LENGTH_BYTES + 2U);
m_mbfCnt = 0U; m_mbfCnt = 0U;
return; return;
@ -2458,10 +2450,6 @@ void TrunkPacket::writeNet_TDULC()
LogMessage(LOG_NET, P25_TDULC_STR ", lc = $%02X, srcId = %u", m_netTDULC.getLCO(), m_netTDULC.getSrcId()); LogMessage(LOG_NET, P25_TDULC_STR ", lc = $%02X, srcId = %u", m_netTDULC.getLCO(), m_netTDULC.getSrcId());
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Network Frame - P25_DUID_TDULC", buffer + 2U, P25_TDULC_FRAME_LENGTH_BYTES);
}
if (m_p25->m_voice->m_netFrames > 0) { if (m_p25->m_voice->m_netFrames > 0) {
::ActivityLog("P25", false, "network end of transmission, %.1f seconds, %u%% packet loss", ::ActivityLog("P25", false, "network end of transmission, %.1f seconds, %u%% packet loss",
float(m_p25->m_voice->m_netFrames) / 50.0F, (m_p25->m_voice->m_netLost * 100U) / m_p25->m_voice->m_netFrames); float(m_p25->m_voice->m_netFrames) / 50.0F, (m_p25->m_voice->m_netLost * 100U) / m_p25->m_voice->m_netFrames);
@ -2509,10 +2497,6 @@ void TrunkPacket::writeNet_TSDU()
m_p25->writeQueueNet(buffer, P25_TSDU_FRAME_LENGTH_BYTES + 2U); m_p25->writeQueueNet(buffer, P25_TSDU_FRAME_LENGTH_BYTES + 2U);
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Network Frame - P25_DUID_TSDU", buffer + 2U, P25_TSDU_FRAME_LENGTH_BYTES);
}
if (m_network != NULL) if (m_network != NULL)
m_network->resetP25(); m_network->resetP25();
} }

@ -409,10 +409,6 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
if (m_verbose) { if (m_verbose) {
LogMessage(LOG_RF, P25_HDU_STR ", dstId = %u, algo = $%02X, kid = $%04X", m_rfLC.getDstId(), m_rfLC.getAlgId(), m_rfLC.getKId()); LogMessage(LOG_RF, P25_HDU_STR ", dstId = %u, algo = $%02X, kid = $%04X", m_rfLC.getDstId(), m_rfLC.getAlgId(), m_rfLC.getKId());
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_HDU", buffer + 2U, P25_HDU_FRAME_LENGTH_BYTES);
}
} }
if (m_p25->m_rfState == RS_RF_AUDIO) { if (m_p25->m_rfState == RS_RF_AUDIO) {
@ -526,10 +522,6 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
m_rfLC.getSrcId(), m_rfLC.getDstId(), m_rfLC.getGroup(), m_rfLC.getEmergency(), m_rfLC.getEncrypted(), m_rfLC.getPriority(), errors, float(errors) / 12.33F); m_rfLC.getSrcId(), m_rfLC.getDstId(), m_rfLC.getGroup(), m_rfLC.getEmergency(), m_rfLC.getEncrypted(), m_rfLC.getPriority(), errors, float(errors) / 12.33F);
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_LDU1", data + 2U, P25_LDU_FRAME_LENGTH_BYTES);
}
return true; return true;
} }
} }
@ -610,10 +602,6 @@ bool VoicePacket::process(uint8_t* data, uint32_t len)
m_rfLC.getAlgId(), m_rfLC.getKId(), errors, float(errors) / 12.33F); m_rfLC.getAlgId(), m_rfLC.getKId(), errors, float(errors) / 12.33F);
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Frame - P25_DUID_LDU2", data + 2U, P25_LDU_FRAME_LENGTH_BYTES);
}
return true; return true;
} }
} }
@ -1014,10 +1002,6 @@ void VoicePacket::writeNet_TDU()
LogMessage(LOG_NET, P25_TDU_STR ", srcId = %u", m_netLC.getSrcId()); LogMessage(LOG_NET, P25_TDU_STR ", srcId = %u", m_netLC.getSrcId());
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Network Frame - P25_DUID_TDU", buffer + 2U, P25_TDU_FRAME_LENGTH_BYTES);
}
if (m_netFrames > 0) { if (m_netFrames > 0) {
::ActivityLog("P25", false, "network end of transmission, %.1f seconds, %u%% packet loss", ::ActivityLog("P25", false, "network end of transmission, %.1f seconds, %u%% packet loss",
float(m_netFrames) / 50.0F, (m_netLost * 100U) / m_netFrames); float(m_netFrames) / 50.0F, (m_netLost * 100U) / m_netFrames);
@ -1157,7 +1141,9 @@ void VoicePacket::writeNet_LDU1(const lc::LC& control, const data::LowSpeedData&
::memcpy(mi + 3U, m_netLDU2 + 76U, 3U); ::memcpy(mi + 3U, m_netLDU2 + 76U, 3U);
::memcpy(mi + 6U, m_netLDU2 + 101U, 3U); ::memcpy(mi + 6U, m_netLDU2 + 101U, 3U);
// Utils::dump(1U, "HDU Network MI", mi, P25_MI_LENGTH_BYTES); if (m_verbose && m_debug) {
Utils::dump(1U, "Network HDU MI", mi, P25_MI_LENGTH_BYTES);
}
m_netLC.setMI(mi); m_netLC.setMI(mi);
m_rfLC.setMI(mi); m_rfLC.setMI(mi);
@ -1259,10 +1245,6 @@ void VoicePacket::writeNet_LDU1(const lc::LC& control, const data::LowSpeedData&
if (m_verbose) { if (m_verbose) {
LogMessage(LOG_NET, P25_HDU_STR ", dstId = %u, algo = $%02X, kid = $%04X", m_netLC.getDstId(), m_netLC.getAlgId(), m_netLC.getKId()); LogMessage(LOG_NET, P25_HDU_STR ", dstId = %u, algo = $%02X, kid = $%04X", m_netLC.getDstId(), m_netLC.getAlgId(), m_netLC.getKId());
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Network Frame - P25_DUID_HDU", buffer + 2U, P25_HDU_FRAME_LENGTH_BYTES);
}
} }
else { else {
if (m_verbose) { if (m_verbose) {
@ -1334,10 +1316,6 @@ void VoicePacket::writeNet_LDU1(const lc::LC& control, const data::LowSpeedData&
m_netLC.getSrcId(), m_netLC.getDstId(), m_netLC.getGroup(), m_netLC.getEmergency(), m_netLC.getEncrypted(), m_netLC.getPriority(), loss); m_netLC.getSrcId(), m_netLC.getDstId(), m_netLC.getGroup(), m_netLC.getEmergency(), m_netLC.getEncrypted(), m_netLC.getPriority(), loss);
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Network Frame - P25_DUID_LDU1", buffer + 2U, P25_LDU_FRAME_LENGTH_BYTES);
}
::memset(m_netLDU1, 0x00U, 9U * 25U); ::memset(m_netLDU1, 0x00U, 9U * 25U);
m_netFrames += 9U; m_netFrames += 9U;
@ -1383,7 +1361,9 @@ void VoicePacket::writeNet_LDU2(const lc::LC& control, const data::LowSpeedData&
::memcpy(mi + 3U, m_netLDU2 + 76U, 3U); ::memcpy(mi + 3U, m_netLDU2 + 76U, 3U);
::memcpy(mi + 6U, m_netLDU2 + 101U, 3U); ::memcpy(mi + 6U, m_netLDU2 + 101U, 3U);
// Utils::dump(1U, "LDU2 Network MI", mi, P25_MI_LENGTH_BYTES); if (m_verbose && m_debug) {
Utils::dump(1U, "Network LDU2 MI", mi, P25_MI_LENGTH_BYTES);
}
m_netLC.setMI(mi); m_netLC.setMI(mi);
m_netLC.setAlgId(algId); m_netLC.setAlgId(algId);
@ -1441,10 +1421,6 @@ void VoicePacket::writeNet_LDU2(const lc::LC& control, const data::LowSpeedData&
LogMessage(LOG_NET, P25_LDU2_STR " audio, algo = $%02X, kid = $%04X, %u%% packet loss", m_netLC.getAlgId(), m_netLC.getKId(), loss); LogMessage(LOG_NET, P25_LDU2_STR " audio, algo = $%02X, kid = $%04X, %u%% packet loss", m_netLC.getAlgId(), m_netLC.getKId(), loss);
} }
if (m_debug) {
Utils::dump(2U, "!!! *TX P25 Network Frame - P25_DUID_LDU2", buffer + 2U, P25_LDU_FRAME_LENGTH_BYTES);
}
::memset(m_netLDU2, 0x00U, 9U * 25U); ::memset(m_netLDU2, 0x00U, 9U * 25U);
m_netFrames += 9U; m_netFrames += 9U;

Loading…
Cancel
Save

Powered by TurnKey Linux.