From 9ac4919a4c9bc54b9e96da39ebb163ef35be37b7 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Fri, 14 Apr 2017 14:05:30 +0100 Subject: [PATCH] Move modem tracing to Trace and add a new modem Debug function. --- Conf.cpp | 8 ++++++++ Conf.h | 2 ++ MMDVM.ini | 1 + MMDVMHost.cpp | 3 ++- Modem.cpp | 57 +++++++++++++++++++++++++++------------------------ Modem.h | 3 ++- 6 files changed, 45 insertions(+), 29 deletions(-) diff --git a/Conf.cpp b/Conf.cpp index 5290adb..ac9f63e 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -92,6 +92,7 @@ m_modemDMRTXLevel(50U), m_modemYSFTXLevel(50U), m_modemP25TXLevel(50U), m_modemRSSIMappingFile(), +m_modemTrace(false), m_modemDebug(false), m_umpEnabled(false), m_umpPort(), @@ -341,6 +342,8 @@ bool CConf::read() m_modemP25TXLevel = (unsigned int)::atoi(value); else if (::strcmp(key, "RSSIMappingFile") == 0) m_modemRSSIMappingFile = value; + else if (::strcmp(key, "Trace") == 0) + m_modemTrace = ::atoi(value) == 1; else if (::strcmp(key, "Debug") == 0) m_modemDebug = ::atoi(value) == 1; } else if (section == SECTION_UMP) { @@ -762,6 +765,11 @@ std::string CConf::getModemRSSIMappingFile () const return m_modemRSSIMappingFile; } +bool CConf::getModemTrace() const +{ + return m_modemTrace; +} + bool CConf::getModemDebug() const { return m_modemDebug; diff --git a/Conf.h b/Conf.h index b92525f..4ef4dac 100644 --- a/Conf.h +++ b/Conf.h @@ -79,6 +79,7 @@ public: unsigned int getModemYSFTXLevel() const; unsigned int getModemP25TXLevel() const; std::string getModemRSSIMappingFile() const; + bool getModemTrace() const; bool getModemDebug() const; // The UMP section @@ -233,6 +234,7 @@ private: unsigned int m_modemYSFTXLevel; unsigned int m_modemP25TXLevel; std::string m_modemRSSIMappingFile; + bool m_modemTrace; bool m_modemDebug; bool m_umpEnabled; diff --git a/MMDVM.ini b/MMDVM.ini index dc18eae..7003a3d 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -51,6 +51,7 @@ TXLevel=50 # YSFTXLevel=50 # P25TXLevel=50 RSSIMappingFile=RSSI.dat +Trace=0 Debug=0 [UMP] diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index 6651b3e..abf0294 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -805,6 +805,7 @@ bool CMMDVMHost::createModem() unsigned int dmrTXLevel = m_conf.getModemDMRTXLevel(); unsigned int ysfTXLevel = m_conf.getModemYSFTXLevel(); unsigned int p25TXLevel = m_conf.getModemP25TXLevel(); + bool trace = m_conf.getModemTrace(); bool debug = m_conf.getModemDebug(); unsigned int colorCode = m_conf.getDMRColorCode(); bool lowDeviation = m_conf.getFusionLowDeviation(); @@ -827,7 +828,7 @@ bool CMMDVMHost::createModem() LogInfo(" RX Frequency: %uHz", rxFrequency); LogInfo(" TX Frequency: %uHz", txFrequency); - m_modem = new CModem(port, m_duplex, rxInvert, txInvert, pttInvert, txDelay, dmrDelay, debug); + m_modem = new CModem(port, m_duplex, rxInvert, txInvert, pttInvert, txDelay, dmrDelay, trace, debug); m_modem->setModeParams(m_dstarEnabled, m_dmrEnabled, m_ysfEnabled, m_p25Enabled); m_modem->setLevels(rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel); m_modem->setRFParams(rxFrequency, txFrequency); diff --git a/Modem.cpp b/Modem.cpp index a35418a..bc4f002 100644 --- a/Modem.cpp +++ b/Modem.cpp @@ -83,7 +83,7 @@ const unsigned int MAX_RESPONSES = 30U; const unsigned int BUFFER_LENGTH = 2000U; -CModem::CModem(const std::string& port, bool duplex, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int dmrDelay, bool debug) : +CModem::CModem(const std::string& port, bool duplex, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int dmrDelay, bool trace, bool debug) : m_port(port), m_dmrColorCode(0U), m_ysfLoDev(false), @@ -99,6 +99,7 @@ m_dstarTXLevel(0U), m_dmrTXLevel(0U), m_ysfTXLevel(0U), m_p25TXLevel(0U), +m_trace(trace), m_debug(debug), m_rxFrequency(0U), m_txFrequency(0U), @@ -248,7 +249,7 @@ void CModem::clock(unsigned int ms) // type == RTM_OK switch (m_buffer[2U]) { case MMDVM_DSTAR_HEADER: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX D-Star Header", m_buffer, m_length); unsigned char data = m_length - 2U; @@ -262,7 +263,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_DSTAR_DATA: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX D-Star Data", m_buffer, m_length); unsigned char data = m_length - 2U; @@ -276,7 +277,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_DSTAR_LOST: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX D-Star Lost", m_buffer, m_length); unsigned char data = 1U; @@ -288,7 +289,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_DSTAR_EOT: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX D-Star EOT", m_buffer, m_length); unsigned char data = 1U; @@ -300,7 +301,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_DMR_DATA1: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX DMR Data 1", m_buffer, m_length); unsigned char data = m_length - 2U; @@ -317,7 +318,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_DMR_DATA2: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX DMR Data 2", m_buffer, m_length); unsigned char data = m_length - 2U; @@ -334,7 +335,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_DMR_LOST1: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX DMR Lost 1", m_buffer, m_length); unsigned char data = 1U; @@ -346,7 +347,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_DMR_LOST2: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX DMR Lost 2", m_buffer, m_length); unsigned char data = 1U; @@ -358,7 +359,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_YSF_DATA: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX YSF Data", m_buffer, m_length); unsigned char data = m_length - 2U; @@ -372,7 +373,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_YSF_LOST: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX YSF Lost", m_buffer, m_length); unsigned char data = 1U; @@ -384,7 +385,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_P25_HDR: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX P25 Header", m_buffer, m_length); unsigned char data = m_length - 2U; @@ -398,7 +399,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_P25_LDU: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX P25 LDU", m_buffer, m_length); unsigned char data = m_length - 2U; @@ -412,7 +413,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_P25_LOST: { - if (m_debug) + if (m_trace) CUtils::dump(1U, "RX P25 Lost", m_buffer, m_length); unsigned char data = 1U; @@ -424,7 +425,7 @@ void CModem::clock(unsigned int ms) break; case MMDVM_GET_STATUS: { - // if (m_debug) + // if (m_trace) // CUtils::dump(1U, "GET_STATUS", m_buffer, m_length); m_tx = (m_buffer[5U] & 0x01U) == 0x01U; @@ -502,17 +503,17 @@ void CModem::clock(unsigned int ms) switch (buffer[3U]) { case MMDVM_DSTAR_HEADER: - if (m_debug) + if (m_trace) CUtils::dump(1U, "TX D-Star Header", m_buffer, len); m_dstarSpace -= 4U; break; case MMDVM_DSTAR_DATA: - if (m_debug) + if (m_trace) CUtils::dump(1U, "TX D-Star Data", m_buffer, len); m_dstarSpace -= 1U; break; default: - if (m_debug) + if (m_trace) CUtils::dump(1U, "TX D-Star EOT", m_buffer, len); m_dstarSpace -= 1U; break; @@ -531,7 +532,7 @@ void CModem::clock(unsigned int ms) m_txDMRData1.getData(&len, 1U); m_txDMRData1.getData(m_buffer, len); - if (m_debug) + if (m_trace) CUtils::dump(1U, "TX DMR Data 1", m_buffer, len); int ret = m_serial.write(m_buffer, len); @@ -548,7 +549,7 @@ void CModem::clock(unsigned int ms) m_txDMRData2.getData(&len, 1U); m_txDMRData2.getData(m_buffer, len); - if (m_debug) + if (m_trace) CUtils::dump(1U, "TX DMR Data 2", m_buffer, len); int ret = m_serial.write(m_buffer, len); @@ -565,7 +566,7 @@ void CModem::clock(unsigned int ms) m_txYSFData.getData(&len, 1U); m_txYSFData.getData(m_buffer, len); - if (m_debug) + if (m_trace) CUtils::dump(1U, "TX YSF Data", m_buffer, len); int ret = m_serial.write(m_buffer, len); @@ -582,7 +583,7 @@ void CModem::clock(unsigned int ms) m_txP25Data.getData(&len, 1U); m_txP25Data.getData(m_buffer, len); - if (m_debug) { + if (m_trace) { if (m_buffer[2U] == MMDVM_P25_HDR) CUtils::dump(1U, "TX P25 HDR", m_buffer, len); else @@ -955,6 +956,8 @@ bool CModem::setConfig() buffer[3U] |= 0x04U; if (m_ysfLoDev) buffer[3U] |= 0x08U; + if (m_debug) + buffer[3U] |= 0x10U; if (!m_duplex) buffer[3U] |= 0x80U; @@ -1272,21 +1275,21 @@ bool CModem::writeDMRShortLC(const unsigned char* lc) void CModem::printDebug() { - if (m_buffer[2U] == 0xF1U) { + if (m_buffer[2U] == MMDVM_DEBUG1) { LogMessage("Debug: %.*s", m_length - 3U, m_buffer + 3U); - } else if (m_buffer[2U] == 0xF2U) { + } else if (m_buffer[2U] == MMDVM_DEBUG2) { short val1 = (m_buffer[m_length - 2U] << 8) | m_buffer[m_length - 1U]; LogMessage("Debug: %.*s %d", m_length - 5U, m_buffer + 3U, val1); - } else if (m_buffer[2U] == 0xF3U) { + } else if (m_buffer[2U] == MMDVM_DEBUG3) { short val1 = (m_buffer[m_length - 4U] << 8) | m_buffer[m_length - 3U]; short val2 = (m_buffer[m_length - 2U] << 8) | m_buffer[m_length - 1U]; LogMessage("Debug: %.*s %d %d", m_length - 7U, m_buffer + 3U, val1, val2); - } else if (m_buffer[2U] == 0xF4U) { + } else if (m_buffer[2U] == MMDVM_DEBUG4) { short val1 = (m_buffer[m_length - 6U] << 8) | m_buffer[m_length - 5U]; short val2 = (m_buffer[m_length - 4U] << 8) | m_buffer[m_length - 3U]; short val3 = (m_buffer[m_length - 2U] << 8) | m_buffer[m_length - 1U]; LogMessage("Debug: %.*s %d %d %d", m_length - 9U, m_buffer + 3U, val1, val2, val3); - } else if (m_buffer[2U] == 0xF5U) { + } else if (m_buffer[2U] == MMDVM_DEBUG5) { short val1 = (m_buffer[m_length - 8U] << 8) | m_buffer[m_length - 7U]; short val2 = (m_buffer[m_length - 6U] << 8) | m_buffer[m_length - 5U]; short val3 = (m_buffer[m_length - 4U] << 8) | m_buffer[m_length - 3U]; diff --git a/Modem.h b/Modem.h index 4f5a6cb..7196220 100644 --- a/Modem.h +++ b/Modem.h @@ -34,7 +34,7 @@ enum RESP_TYPE_MMDVM { class CModem { public: - CModem(const std::string& port, bool duplex, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int dmrDelay, bool debug = false); + CModem(const std::string& port, bool duplex, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int dmrDelay, bool trace, bool debug); ~CModem(); void setRFParams(unsigned int rxFrequency, unsigned int txFrequency); @@ -103,6 +103,7 @@ private: unsigned int m_dmrTXLevel; unsigned int m_ysfTXLevel; unsigned int m_p25TXLevel; + bool m_trace; bool m_debug; unsigned int m_rxFrequency; unsigned int m_txFrequency;