Allow for the fine adjustment of levels.

This commit is contained in:
Jonathan Naylor 2016-06-20 22:04:44 +01:00
parent 1e994e920a
commit 9240550de6
6 changed files with 97 additions and 5 deletions

View file

@ -77,6 +77,11 @@ m_modemTXDelay(100U),
m_modemDMRDelay(0U),
m_modemRXLevel(100U),
m_modemTXLevel(100U),
m_modemDStarLevel(0),
m_modemDMRLevel1(0),
m_modemDMRLevel3(0),
m_modemYSFLevel1(0),
m_modemYSFLevel3(0),
m_modemOscOffset(0),
m_modemDebug(false),
m_dstarEnabled(true),
@ -265,6 +270,16 @@ bool CConf::read()
m_modemRXLevel = (unsigned int)::atoi(value);
else if (::strcmp(key, "TXLevel") == 0)
m_modemTXLevel = (unsigned int)::atoi(value);
else if (::strcmp(key, "DStarLevel") == 0)
m_modemDStarLevel = ::atoi(value);
else if (::strcmp(key, "DMRLevel1") == 0)
m_modemDMRLevel1 = ::atoi(value);
else if (::strcmp(key, "DMRLevel3") == 0)
m_modemDMRLevel3 = ::atoi(value);
else if (::strcmp(key, "YSFLevel1") == 0)
m_modemYSFLevel1 = ::atoi(value);
else if (::strcmp(key, "YSFLevel3") == 0)
m_modemYSFLevel3 = ::atoi(value);
else if (::strcmp(key, "OscOffset") == 0)
m_modemOscOffset = ::atoi(value);
else if (::strcmp(key, "Debug") == 0)
@ -601,6 +616,31 @@ unsigned int CConf::getModemTXLevel() const
return m_modemTXLevel;
}
int CConf::getModemDStarLevel() const
{
return m_modemDStarLevel;
}
int CConf::getModemDMRLevel1() const
{
return m_modemDMRLevel1;
}
int CConf::getModemDMRLevel3() const
{
return m_modemDMRLevel3;
}
int CConf::getModemYSFLevel1() const
{
return m_modemYSFLevel1;
}
int CConf::getModemYSFLevel3() const
{
return m_modemYSFLevel3;
}
int CConf::getModemOscOffset() const
{
return m_modemOscOffset;

10
Conf.h
View file

@ -68,6 +68,11 @@ public:
unsigned int getModemDMRDelay() const;
unsigned int getModemRXLevel() const;
unsigned int getModemTXLevel() const;
int getModemDStarLevel() const;
int getModemDMRLevel1() const;
int getModemDMRLevel3() const;
int getModemYSFLevel1() const;
int getModemYSFLevel3() const;
int getModemOscOffset() const;
bool getModemDebug() const;
@ -182,6 +187,11 @@ private:
unsigned int m_modemDMRDelay;
unsigned int m_modemRXLevel;
unsigned int m_modemTXLevel;
int m_modemDStarLevel;
int m_modemDMRLevel1;
int m_modemDMRLevel3;
int m_modemYSFLevel1;
int m_modemYSFLevel3;
int m_modemOscOffset;
bool m_modemDebug;

View file

@ -38,6 +38,11 @@ TXDelay=100
DMRDelay=0
RXLevel=50
TXLevel=50
DStarLevel=0
DMRLevel1=0
DMRLevel3=0
YSFLevel1=0
YSFLevel3=0
OscOffset=0
Debug=0

View file

@ -635,6 +635,11 @@ bool CMMDVMHost::createModem()
unsigned int colorCode = m_conf.getDMRColorCode();
unsigned int rxFrequency = m_conf.getRxFrequency();
unsigned int txFrequency = m_conf.getTxFrequency();
int dstarLevel = m_conf.getModemDStarLevel();
int dmrLevel1 = m_conf.getModemDMRLevel1();
int dmrLevel3 = m_conf.getModemDMRLevel3();
int ysfLevel1 = m_conf.getModemYSFLevel1();
int ysfLevel3 = m_conf.getModemYSFLevel3();
int oscOffset = m_conf.getModemOscOffset();
LogInfo("Modem Parameters");
@ -648,10 +653,16 @@ 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);
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->setRFParams(rxFrequency, txFrequency);
m_modem->setDMRParams(colorCode);

View file

@ -87,6 +87,11 @@ 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_debug(debug),
m_rxFrequency(0U),
m_txFrequency(0U),
@ -132,6 +137,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)
{
m_dstarLevel = dstarLevel;
m_dmrLevel1 = dmrLevel1;
m_dmrLevel3 = dmrLevel3;
m_ysfLevel1 = ysfLevel1;
m_ysfLevel3 = ysfLevel3;
}
void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled)
{
m_dstarEnabled = dstarEnabled;
@ -742,11 +756,11 @@ bool CModem::readStatus()
bool CModem::setConfig()
{
unsigned char buffer[12U];
unsigned char buffer[20U];
buffer[0U] = MMDVM_FRAME_START;
buffer[1U] = 12U;
buffer[1U] = 17U;
buffer[2U] = MMDVM_SET_CONFIG;
@ -779,10 +793,16 @@ bool CModem::setConfig()
buffer[11U] = (unsigned char)(m_oscOffset + 128);
// CUtils::dump(1U, "Written", buffer, 12U);
buffer[12U] = (unsigned char)(m_dstarLevel + 128);
buffer[13U] = (unsigned char)(m_dmrLevel1 + 128);
buffer[14U] = (unsigned char)(m_dmrLevel3 + 128);
buffer[15U] = (unsigned char)(m_ysfLevel1 + 128);
buffer[16U] = (unsigned char)(m_ysfLevel3 + 128);
int ret = m_serial.write(buffer, 12U);
if (ret != 12)
// CUtils::dump(1U, "Written", buffer, 17U);
int ret = m_serial.write(buffer, 17U);
if (ret != 17)
return false;
unsigned int count = 0U;

View file

@ -37,6 +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 setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled);
void setDMRParams(unsigned int colorCode);
@ -85,6 +86,11 @@ private:
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;
bool m_debug;
unsigned int m_rxFrequency;
unsigned int m_txFrequency;