Add fine adjustments to DMR/YSF thresholds.

This commit is contained in:
Jonathan Naylor 2016-06-21 07:26:11 +01:00
parent 9240550de6
commit 768e3efcad
6 changed files with 62 additions and 19 deletions

View file

@ -82,6 +82,8 @@ m_modemDMRLevel1(0),
m_modemDMRLevel3(0),
m_modemYSFLevel1(0),
m_modemYSFLevel3(0),
m_modemDMRThreshold(0),
m_modemYSFThreshold(0),
m_modemOscOffset(0),
m_modemDebug(false),
m_dstarEnabled(true),
@ -280,6 +282,10 @@ bool CConf::read()
m_modemYSFLevel1 = ::atoi(value);
else if (::strcmp(key, "YSFLevel3") == 0)
m_modemYSFLevel3 = ::atoi(value);
else if (::strcmp(key, "DMRThreshold") == 0)
m_modemDMRThreshold = ::atoi(value);
else if (::strcmp(key, "YSFThreshold") == 0)
m_modemYSFThreshold = ::atoi(value);
else if (::strcmp(key, "OscOffset") == 0)
m_modemOscOffset = ::atoi(value);
else if (::strcmp(key, "Debug") == 0)
@ -641,6 +647,16 @@ int CConf::getModemYSFLevel3() const
return m_modemYSFLevel3;
}
int CConf::getModemDMRThreshold() const
{
return m_modemDMRThreshold;
}
int CConf::getModemYSFThreshold() const
{
return m_modemYSFThreshold;
}
int CConf::getModemOscOffset() const
{
return m_modemOscOffset;

4
Conf.h
View file

@ -73,6 +73,8 @@ public:
int getModemDMRLevel3() const;
int getModemYSFLevel1() const;
int getModemYSFLevel3() const;
int getModemDMRThreshold() const;
int getModemYSFThreshold() const;
int getModemOscOffset() const;
bool getModemDebug() const;
@ -192,6 +194,8 @@ private:
int m_modemDMRLevel3;
int m_modemYSFLevel1;
int m_modemYSFLevel3;
int m_modemDMRThreshold;
int m_modemYSFThreshold;
int m_modemOscOffset;
bool m_modemDebug;

View file

@ -43,6 +43,8 @@ DMRLevel1=0
DMRLevel3=0
YSFLevel1=0
YSFLevel3=0
DMRThreshold=0
YSFThreshold=0
OscOffset=0
Debug=0

View file

@ -640,6 +640,8 @@ bool CMMDVMHost::createModem()
int dmrLevel3 = m_conf.getModemDMRLevel3();
int ysfLevel1 = m_conf.getModemYSFLevel1();
int ysfLevel3 = m_conf.getModemYSFLevel3();
int dmrThreshold = m_conf.getModemDMRThreshold();
int ysfThreshold = m_conf.getModemYSFThreshold();
int oscOffset = m_conf.getModemOscOffset();
LogInfo("Modem Parameters");
@ -653,16 +655,27 @@ bool CMMDVMHost::createModem()
LogInfo(" TX Level: %u%%", txLevel);
LogInfo(" RX Frequency: %uHz", rxFrequency);
LogInfo(" TX Frequency: %uHz", txFrequency);
LogInfo(" D-Star Level: %.1f%%", float(dstarLevel) / 10.0F);
LogInfo(" DMR Level 1: %.1f%%", float(dmrLevel1) / 10.0F);
LogInfo(" DMR Level 3: %.1f%%", float(dmrLevel3) / 10.0F);
LogInfo(" YSF Level 1: %.1f%%", float(ysfLevel1) / 10.0F);
LogInfo(" YSF Level 3: %.1f%%", float(ysfLevel3) / 10.0F);
if (dstarLevel != 0)
LogInfo(" D-Star Level: %.1f%%", float(dstarLevel) / 10.0F);
if (dmrLevel1 != 0)
LogInfo(" DMR Level 1: %.1f%%", float(dmrLevel1) / 10.0F);
if (dmrLevel3 != 0)
LogInfo(" DMR Level 3: %.1f%%", float(dmrLevel3) / 10.0F);
if (ysfLevel1 != 0)
LogInfo(" YSF Level 1: %.1f%%", float(ysfLevel1) / 10.0F);
if (ysfLevel3 != 0)
LogInfo(" YSF Level 3: %.1f%%", float(ysfLevel3) / 10.0F);
if (dmrThreshold != 0)
LogInfo(" DMR Threshold: %.1f%%", float(dmrThreshold) / 10.0F);
if (ysfThreshold != 0)
LogInfo(" YSF Threshold: %.1f%%", float(ysfThreshold) / 10.0F);
LogInfo(" Osc. Offset: %dppm", oscOffset);
m_modem = new CModem(port, rxInvert, txInvert, pttInvert, txDelay, rxLevel, txLevel, dmrDelay, oscOffset, debug);
m_modem->setModeParams(m_dstarEnabled, m_dmrEnabled, m_ysfEnabled);
m_modem->setModeLevels(dstarLevel, dmrLevel1, dmrLevel3, ysfLevel1, ysfLevel3);
m_modem->setModeLevels(dstarLevel, dmrLevel1, dmrLevel3, ysfLevel1, ysfLevel3, dmrThreshold, ysfThreshold);
m_modem->setRFParams(rxFrequency, txFrequency);
m_modem->setDMRParams(colorCode);

View file

@ -86,12 +86,14 @@ m_txDelay(txDelay),
m_dmrDelay(dmrDelay),
m_rxLevel(rxLevel),
m_txLevel(txLevel),
m_oscOffset(oscOffset),
m_dstarLevel(0),
m_dmrLevel1(0),
m_dmrLevel3(0),
m_ysfLevel1(0),
m_ysfLevel3(0),
m_dmrThreshold(0),
m_ysfThreshold(0),
m_oscOffset(oscOffset),
m_debug(debug),
m_rxFrequency(0U),
m_txFrequency(0U),
@ -137,13 +139,15 @@ void CModem::setRFParams(unsigned int rxFrequency, unsigned int txFrequency)
m_txFrequency = txFrequency;
}
void CModem::setModeLevels(int dstarLevel, int dmrLevel1, int dmrLevel3, int ysfLevel1, int ysfLevel3)
void CModem::setModeLevels(int dstarLevel, int dmrLevel1, int dmrLevel3, int ysfLevel1, int ysfLevel3, int dmrThreshold, int ysfThreshold)
{
m_dstarLevel = dstarLevel;
m_dmrLevel1 = dmrLevel1;
m_dmrLevel3 = dmrLevel3;
m_ysfLevel1 = ysfLevel1;
m_ysfLevel3 = ysfLevel3;
m_dstarLevel = dstarLevel;
m_dmrLevel1 = dmrLevel1;
m_dmrLevel3 = dmrLevel3;
m_ysfLevel1 = ysfLevel1;
m_ysfLevel3 = ysfLevel3;
m_dmrThreshold = dmrThreshold;
m_ysfThreshold = ysfThreshold;
}
void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled)
@ -760,7 +764,7 @@ bool CModem::setConfig()
buffer[0U] = MMDVM_FRAME_START;
buffer[1U] = 17U;
buffer[1U] = 19U;
buffer[2U] = MMDVM_SET_CONFIG;
@ -798,11 +802,13 @@ bool CModem::setConfig()
buffer[14U] = (unsigned char)(m_dmrLevel3 + 128);
buffer[15U] = (unsigned char)(m_ysfLevel1 + 128);
buffer[16U] = (unsigned char)(m_ysfLevel3 + 128);
buffer[17U] = (unsigned char)(m_dmrThreshold + 128);
buffer[18U] = (unsigned char)(m_ysfThreshold + 128);
// CUtils::dump(1U, "Written", buffer, 17U);
// CUtils::dump(1U, "Written", buffer, 19U);
int ret = m_serial.write(buffer, 17U);
if (ret != 17)
int ret = m_serial.write(buffer, 19U);
if (ret != 19)
return false;
unsigned int count = 0U;

View file

@ -37,7 +37,7 @@ public:
~CModem();
void setRFParams(unsigned int rxFrequency, unsigned int txFrequency);
void setModeLevels(int dstarLevel, int dmrLevel1, int dmrLevel3, int ysfLevel1, int ysfLevel3);
void setModeLevels(int dstarLevel, int dmrLevel1, int dmrLevel3, int ysfLevel1, int ysfLevel3, int dmrThreshold, int ysfThreshold);
void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled);
void setDMRParams(unsigned int colorCode);
@ -85,12 +85,14 @@ private:
unsigned int m_dmrDelay;
unsigned int m_rxLevel;
unsigned int m_txLevel;
int m_oscOffset;
int m_dstarLevel;
int m_dmrLevel1;
int m_dmrLevel3;
int m_ysfLevel1;
int m_ysfLevel3;
int m_dmrThreshold;
int m_ysfThreshold;
int m_oscOffset;
bool m_debug;
unsigned int m_rxFrequency;
unsigned int m_txFrequency;