diff --git a/Conf.cpp b/Conf.cpp index b1f5469..bf638e5 100644 --- a/Conf.cpp +++ b/Conf.cpp @@ -66,6 +66,7 @@ m_modemRXInvert(false), m_modemTXInvert(false), m_modemPTTInvert(false), m_modemTXDelay(100U), +m_modemDMRDelay(0U), m_modemRXLevel(100U), m_modemTXLevel(100U), m_modemDebug(false), @@ -205,6 +206,8 @@ bool CConf::read() m_modemPTTInvert = ::atoi(value) == 1; else if (::strcmp(key, "TXDelay") == 0) m_modemTXDelay = (unsigned int)::atoi(value); + else if (::strcmp(key, "DMRDelay") == 0) + m_modemDMRDelay = (unsigned int)::atoi(value); else if (::strcmp(key, "RXLevel") == 0) m_modemRXLevel = (unsigned int)::atoi(value); else if (::strcmp(key, "TXLevel") == 0) @@ -398,6 +401,11 @@ unsigned int CConf::getModemTXDelay() const return m_modemTXDelay; } +unsigned int CConf::getModemDMRDelay() const +{ + return m_modemDMRDelay; +} + unsigned int CConf::getModemRXLevel() const { return m_modemRXLevel; diff --git a/Conf.h b/Conf.h index ce59e71..5350f39 100644 --- a/Conf.h +++ b/Conf.h @@ -59,6 +59,7 @@ public: bool getModemTXInvert() const; bool getModemPTTInvert() const; unsigned int getModemTXDelay() const; + unsigned int getModemDMRDelay() const; unsigned int getModemRXLevel() const; unsigned int getModemTXLevel() const; bool getModemDebug() const; @@ -135,6 +136,7 @@ private: bool m_modemTXInvert; bool m_modemPTTInvert; unsigned int m_modemTXDelay; + unsigned int m_modemDMRDelay; unsigned int m_modemRXLevel; unsigned int m_modemTXLevel; bool m_modemDebug; diff --git a/MMDVM.ini b/MMDVM.ini index e95036e..183cf46 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -30,6 +30,7 @@ TXInvert=1 RXInvert=0 PTTInvert=0 TXDelay=100 +DMRDelay=0 RXLevel=50 TXLevel=50 Debug=0 diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index a2ba29b..ab3cf72 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -412,7 +412,8 @@ bool CMMDVMHost::createModem() bool txInvert = m_conf.getModemTXInvert(); bool pttInvert = m_conf.getModemPTTInvert(); unsigned int txDelay = m_conf.getModemTXDelay(); - unsigned int rxLevel = m_conf.getModemRXLevel(); + unsigned int dmrDelay = m_conf.getModemDMRDelay(); + unsigned int rxLevel = m_conf.getModemRXLevel(); unsigned int txLevel = m_conf.getModemTXLevel(); bool debug = m_conf.getModemDebug(); unsigned int colorCode = m_conf.getDMRColorCode(); @@ -424,13 +425,14 @@ bool CMMDVMHost::createModem() LogInfo(" RX Invert: %s", rxInvert ? "yes" : "no"); LogInfo(" TX Invert: %s", txInvert ? "yes" : "no"); LogInfo(" PTT Invert: %s", pttInvert ? "yes" : "no"); - LogInfo(" TX Delay: %u", txDelay); - LogInfo(" RX Level: %u", rxLevel); - LogInfo(" TX Level: %u", txLevel); + LogInfo(" TX Delay: %ums", txDelay); + LogInfo(" DMR Delay: %u", dmrDelay); + LogInfo(" RX Level: %u%%", rxLevel); + LogInfo(" TX Level: %u%%", txLevel); LogInfo(" RX Frequency: %uHz", rxFrequency); LogInfo(" TX Frequency: %uHz", txFrequency); - m_modem = new CModem(port, rxInvert, txInvert, pttInvert, txDelay, rxLevel, txLevel, debug); + m_modem = new CModem(port, rxInvert, txInvert, pttInvert, txDelay, rxLevel, txLevel, dmrDelay, debug); m_modem->setModeParams(m_dstarEnabled, m_dmrEnabled, m_ysfEnabled); m_modem->setRFParams(rxFrequency, txFrequency); m_modem->setDMRParams(colorCode); diff --git a/Modem.cpp b/Modem.cpp index d5d6ff5..848e9e9 100644 --- a/Modem.cpp +++ b/Modem.cpp @@ -74,13 +74,14 @@ const unsigned int MAX_RESPONSES = 30U; const unsigned int BUFFER_LENGTH = 500U; -CModem::CModem(const std::string& port, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int rxLevel, unsigned int txLevel, bool debug) : +CModem::CModem(const std::string& port, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int rxLevel, unsigned int txLevel, unsigned int dmrDelay, bool debug) : m_port(port), m_colorCode(0U), m_rxInvert(rxInvert), m_txInvert(txInvert), m_pttInvert(pttInvert), m_txDelay(txDelay), +m_dmrDelay(dmrDelay), m_rxLevel(rxLevel), m_txLevel(txLevel), m_debug(debug), @@ -735,11 +736,11 @@ bool CModem::readStatus() bool CModem::setConfig() { - unsigned char buffer[10U]; + unsigned char buffer[11U]; buffer[0U] = MMDVM_FRAME_START; - buffer[1U] = 10U; + buffer[1U] = 11U; buffer[2U] = MMDVM_SET_CONFIG; @@ -768,10 +769,12 @@ bool CModem::setConfig() buffer[9U] = m_colorCode; - // CUtils::dump(1U, "Written", buffer, 10U); + buffer[10U] = m_dmrDelay; - int ret = m_serial.write(buffer, 10U); - if (ret != 10) + // CUtils::dump(1U, "Written", buffer, 11U); + + int ret = m_serial.write(buffer, 11U); + if (ret != 11) return false; unsigned int count = 0U; diff --git a/Modem.h b/Modem.h index 6224f66..9374a6b 100644 --- a/Modem.h +++ b/Modem.h @@ -33,7 +33,7 @@ enum RESP_TYPE_MMDVM { class CModem { public: - CModem(const std::string& port, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int rxLevel, unsigned int txLevel, bool debug = false); + CModem(const std::string& port, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int rxLevel, unsigned int txLevel, unsigned int dmrDelay, bool debug = false); ~CModem(); void setRFParams(unsigned int rxFrequency, unsigned int txFrequency); @@ -75,6 +75,7 @@ private: bool m_txInvert; bool m_pttInvert; unsigned int m_txDelay; + unsigned int m_dmrDelay; unsigned int m_rxLevel; unsigned int m_txLevel; bool m_debug;