Allow the MMDVM levels to be specified as floating point values.

This commit is contained in:
Jonathan Naylor 2017-06-02 16:34:55 +01:00
parent ed9362845a
commit c1521ee445
5 changed files with 56 additions and 56 deletions

View file

@ -85,12 +85,12 @@ m_modemTXInvert(false),
m_modemPTTInvert(false), m_modemPTTInvert(false),
m_modemTXDelay(100U), m_modemTXDelay(100U),
m_modemDMRDelay(0U), m_modemDMRDelay(0U),
m_modemRXLevel(50U), m_modemRXLevel(50.0F),
m_modemCWIdTXLevel(50U), m_modemCWIdTXLevel(50.0F),
m_modemDStarTXLevel(50U), m_modemDStarTXLevel(50.0F),
m_modemDMRTXLevel(50U), m_modemDMRTXLevel(50.0F),
m_modemYSFTXLevel(50U), m_modemYSFTXLevel(50.0F),
m_modemP25TXLevel(50U), m_modemP25TXLevel(50.0F),
m_modemRSSIMappingFile(), m_modemRSSIMappingFile(),
m_modemTrace(false), m_modemTrace(false),
m_modemDebug(false), m_modemDebug(false),
@ -329,17 +329,17 @@ bool CConf::read()
else if (::strcmp(key, "RXLevel") == 0) else if (::strcmp(key, "RXLevel") == 0)
m_modemRXLevel = (unsigned int)::atoi(value); m_modemRXLevel = (unsigned int)::atoi(value);
else if (::strcmp(key, "TXLevel") == 0) else if (::strcmp(key, "TXLevel") == 0)
m_modemCWIdTXLevel = m_modemDStarTXLevel = m_modemDMRTXLevel = m_modemYSFTXLevel = m_modemP25TXLevel = (unsigned int)::atoi(value); m_modemCWIdTXLevel = m_modemDStarTXLevel = m_modemDMRTXLevel = m_modemYSFTXLevel = m_modemP25TXLevel = ::atof(value);
else if (::strcmp(key, "CWIdTXLevel") == 0) else if (::strcmp(key, "CWIdTXLevel") == 0)
m_modemCWIdTXLevel = (unsigned int)::atoi(value); m_modemCWIdTXLevel = ::atof(value);
else if (::strcmp(key, "D-StarTXLevel") == 0) else if (::strcmp(key, "D-StarTXLevel") == 0)
m_modemDStarTXLevel = (unsigned int)::atoi(value); m_modemDStarTXLevel = ::atof(value);
else if (::strcmp(key, "DMRTXLevel") == 0) else if (::strcmp(key, "DMRTXLevel") == 0)
m_modemDMRTXLevel = (unsigned int)::atoi(value); m_modemDMRTXLevel = ::atof(value);
else if (::strcmp(key, "YSFTXLevel") == 0) else if (::strcmp(key, "YSFTXLevel") == 0)
m_modemYSFTXLevel = (unsigned int)::atoi(value); m_modemYSFTXLevel = ::atof(value);
else if (::strcmp(key, "P25TXLevel") == 0) else if (::strcmp(key, "P25TXLevel") == 0)
m_modemP25TXLevel = (unsigned int)::atoi(value); m_modemP25TXLevel = ::atof(value);
else if (::strcmp(key, "RSSIMappingFile") == 0) else if (::strcmp(key, "RSSIMappingFile") == 0)
m_modemRSSIMappingFile = value; m_modemRSSIMappingFile = value;
else if (::strcmp(key, "Trace") == 0) else if (::strcmp(key, "Trace") == 0)
@ -730,32 +730,32 @@ unsigned int CConf::getModemDMRDelay() const
return m_modemDMRDelay; return m_modemDMRDelay;
} }
unsigned int CConf::getModemRXLevel() const float CConf::getModemRXLevel() const
{ {
return m_modemRXLevel; return m_modemRXLevel;
} }
unsigned int CConf::getModemCWIdTXLevel() const float CConf::getModemCWIdTXLevel() const
{ {
return m_modemCWIdTXLevel; return m_modemCWIdTXLevel;
} }
unsigned int CConf::getModemDStarTXLevel() const float CConf::getModemDStarTXLevel() const
{ {
return m_modemDStarTXLevel; return m_modemDStarTXLevel;
} }
unsigned int CConf::getModemDMRTXLevel() const float CConf::getModemDMRTXLevel() const
{ {
return m_modemDMRTXLevel; return m_modemDMRTXLevel;
} }
unsigned int CConf::getModemYSFTXLevel() const float CConf::getModemYSFTXLevel() const
{ {
return m_modemYSFTXLevel; return m_modemYSFTXLevel;
} }
unsigned int CConf::getModemP25TXLevel() const float CConf::getModemP25TXLevel() const
{ {
return m_modemP25TXLevel; return m_modemP25TXLevel;
} }

24
Conf.h
View file

@ -72,12 +72,12 @@ public:
bool getModemPTTInvert() const; bool getModemPTTInvert() const;
unsigned int getModemTXDelay() const; unsigned int getModemTXDelay() const;
unsigned int getModemDMRDelay() const; unsigned int getModemDMRDelay() const;
unsigned int getModemRXLevel() const; float getModemRXLevel() const;
unsigned int getModemCWIdTXLevel() const; float getModemCWIdTXLevel() const;
unsigned int getModemDStarTXLevel() const; float getModemDStarTXLevel() const;
unsigned int getModemDMRTXLevel() const; float getModemDMRTXLevel() const;
unsigned int getModemYSFTXLevel() const; float getModemYSFTXLevel() const;
unsigned int getModemP25TXLevel() const; float getModemP25TXLevel() const;
std::string getModemRSSIMappingFile() const; std::string getModemRSSIMappingFile() const;
bool getModemTrace() const; bool getModemTrace() const;
bool getModemDebug() const; bool getModemDebug() const;
@ -227,12 +227,12 @@ private:
bool m_modemPTTInvert; bool m_modemPTTInvert;
unsigned int m_modemTXDelay; unsigned int m_modemTXDelay;
unsigned int m_modemDMRDelay; unsigned int m_modemDMRDelay;
unsigned int m_modemRXLevel; float m_modemRXLevel;
unsigned int m_modemCWIdTXLevel; float m_modemCWIdTXLevel;
unsigned int m_modemDStarTXLevel; float m_modemDStarTXLevel;
unsigned int m_modemDMRTXLevel; float m_modemDMRTXLevel;
unsigned int m_modemYSFTXLevel; float m_modemYSFTXLevel;
unsigned int m_modemP25TXLevel; float m_modemP25TXLevel;
std::string m_modemRSSIMappingFile; std::string m_modemRSSIMappingFile;
bool m_modemTrace; bool m_modemTrace;
bool m_modemDebug; bool m_modemDebug;

View file

@ -799,12 +799,12 @@ bool CMMDVMHost::createModem()
bool pttInvert = m_conf.getModemPTTInvert(); bool pttInvert = m_conf.getModemPTTInvert();
unsigned int txDelay = m_conf.getModemTXDelay(); unsigned int txDelay = m_conf.getModemTXDelay();
unsigned int dmrDelay = m_conf.getModemDMRDelay(); unsigned int dmrDelay = m_conf.getModemDMRDelay();
unsigned int rxLevel = m_conf.getModemRXLevel(); float rxLevel = m_conf.getModemRXLevel();
unsigned int cwIdTXLevel = m_conf.getModemCWIdTXLevel(); float cwIdTXLevel = m_conf.getModemCWIdTXLevel();
unsigned int dstarTXLevel = m_conf.getModemDStarTXLevel(); float dstarTXLevel = m_conf.getModemDStarTXLevel();
unsigned int dmrTXLevel = m_conf.getModemDMRTXLevel(); float dmrTXLevel = m_conf.getModemDMRTXLevel();
unsigned int ysfTXLevel = m_conf.getModemYSFTXLevel(); float ysfTXLevel = m_conf.getModemYSFTXLevel();
unsigned int p25TXLevel = m_conf.getModemP25TXLevel(); float p25TXLevel = m_conf.getModemP25TXLevel();
bool trace = m_conf.getModemTrace(); bool trace = m_conf.getModemTrace();
bool debug = m_conf.getModemDebug(); bool debug = m_conf.getModemDebug();
unsigned int colorCode = m_conf.getDMRColorCode(); unsigned int colorCode = m_conf.getDMRColorCode();
@ -819,12 +819,12 @@ bool CMMDVMHost::createModem()
LogInfo(" PTT Invert: %s", pttInvert ? "yes" : "no"); LogInfo(" PTT Invert: %s", pttInvert ? "yes" : "no");
LogInfo(" TX Delay: %ums", txDelay); LogInfo(" TX Delay: %ums", txDelay);
LogInfo(" DMR Delay: %u (%.1fms)", dmrDelay, float(dmrDelay) * 0.0416666F); LogInfo(" DMR Delay: %u (%.1fms)", dmrDelay, float(dmrDelay) * 0.0416666F);
LogInfo(" RX Level: %u%%", rxLevel); LogInfo(" RX Level: %.1f%%", rxLevel);
LogInfo(" CW Id TX Level: %u%%", cwIdTXLevel); LogInfo(" CW Id TX Level: %.1f%%", cwIdTXLevel);
LogInfo(" D-Star TX Level: %u%%", dstarTXLevel); LogInfo(" D-Star TX Level: %.1f%%", dstarTXLevel);
LogInfo(" DMR TX Level: %u%%", dmrTXLevel); LogInfo(" DMR TX Level: %.1f%%", dmrTXLevel);
LogInfo(" YSF TX Level: %u%%", ysfTXLevel); LogInfo(" YSF TX Level: %.1f%%", ysfTXLevel);
LogInfo(" P25 TX Level: %u%%", p25TXLevel); LogInfo(" P25 TX Level: %.1f%%", p25TXLevel);
LogInfo(" RX Frequency: %uHz", rxFrequency); LogInfo(" RX Frequency: %uHz", rxFrequency);
LogInfo(" TX Frequency: %uHz", txFrequency); LogInfo(" TX Frequency: %uHz", txFrequency);

View file

@ -159,7 +159,7 @@ void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled,
m_p25Enabled = p25Enabled; m_p25Enabled = p25Enabled;
} }
void CModem::setLevels(unsigned int rxLevel, unsigned int cwIdTXLevel, unsigned int dstarTXLevel, unsigned int dmrTXLevel, unsigned int ysfTXLevel, unsigned int p25TXLevel) void CModem::setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel)
{ {
m_rxLevel = rxLevel; m_rxLevel = rxLevel;
m_cwIdTXLevel = cwIdTXLevel; m_cwIdTXLevel = cwIdTXLevel;
@ -975,9 +975,9 @@ bool CModem::setConfig()
buffer[6U] = MODE_IDLE; buffer[6U] = MODE_IDLE;
buffer[7U] = (m_rxLevel * 255U) / 100U; buffer[7U] = (unsigned char)(m_rxLevel * 2.55F + 0.5F);
buffer[8U] = (m_cwIdTXLevel * 255U) / 100U; buffer[8U] = (unsigned char)(m_cwIdTXLevel * 2.55F + 0.5F);
buffer[9U] = m_dmrColorCode; buffer[9U] = m_dmrColorCode;
@ -985,10 +985,10 @@ bool CModem::setConfig()
buffer[11U] = 128U; // Was OscOffset buffer[11U] = 128U; // Was OscOffset
buffer[12U] = (m_dstarTXLevel * 255U) / 100U; buffer[12U] = (unsigned char)(m_dstarTXLevel * 2.55F + 0.5F);
buffer[13U] = (m_dmrTXLevel * 255U) / 100U; buffer[13U] = (unsigned char)(m_dmrTXLevel * 2.55F + 0.5F);
buffer[14U] = (m_ysfTXLevel * 255U) / 100U; buffer[14U] = (unsigned char)(m_ysfTXLevel * 2.55F + 0.5F);
buffer[15U] = (m_p25TXLevel * 255U) / 100U; buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
// CUtils::dump(1U, "Written", buffer, 16U); // CUtils::dump(1U, "Written", buffer, 16U);

14
Modem.h
View file

@ -39,7 +39,7 @@ public:
void setRFParams(unsigned int rxFrequency, unsigned int txFrequency); void setRFParams(unsigned int rxFrequency, unsigned int txFrequency);
void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled); void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled);
void setLevels(unsigned int rxLevel, unsigned int cwIdTXLevel, unsigned int dstarTXLevel, unsigned int dmrTXLevel, unsigned int ysfTXLevel, unsigned int p25Enabled); void setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25Enabled);
void setDMRParams(unsigned int colorCode); void setDMRParams(unsigned int colorCode);
void setYSFParams(bool loDev); void setYSFParams(bool loDev);
@ -97,12 +97,12 @@ private:
bool m_pttInvert; bool m_pttInvert;
unsigned int m_txDelay; unsigned int m_txDelay;
unsigned int m_dmrDelay; unsigned int m_dmrDelay;
unsigned int m_rxLevel; float m_rxLevel;
unsigned int m_cwIdTXLevel; float m_cwIdTXLevel;
unsigned int m_dstarTXLevel; float m_dstarTXLevel;
unsigned int m_dmrTXLevel; float m_dmrTXLevel;
unsigned int m_ysfTXLevel; float m_ysfTXLevel;
unsigned int m_p25TXLevel; float m_p25TXLevel;
bool m_trace; bool m_trace;
bool m_debug; bool m_debug;
unsigned int m_rxFrequency; unsigned int m_rxFrequency;