mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-22 08:05:49 +08:00
Add the optional RX DC Offset parameter.
This commit is contained in:
8
Conf.cpp
8
Conf.cpp
@@ -86,6 +86,7 @@ m_modemTXDelay(100U),
|
|||||||
m_modemDMRDelay(0U),
|
m_modemDMRDelay(0U),
|
||||||
m_modemTXOffset(0),
|
m_modemTXOffset(0),
|
||||||
m_modemRXOffset(0),
|
m_modemRXOffset(0),
|
||||||
|
m_modemRXDCOffset(0),
|
||||||
m_modemTXDCOffset(0),
|
m_modemTXDCOffset(0),
|
||||||
m_modemRXLevel(50.0F),
|
m_modemRXLevel(50.0F),
|
||||||
m_modemCWIdTXLevel(50.0F),
|
m_modemCWIdTXLevel(50.0F),
|
||||||
@@ -351,6 +352,8 @@ bool CConf::read()
|
|||||||
m_modemRXOffset = ::atoi(value);
|
m_modemRXOffset = ::atoi(value);
|
||||||
else if (::strcmp(key, "TXOffset") == 0)
|
else if (::strcmp(key, "TXOffset") == 0)
|
||||||
m_modemTXOffset = ::atoi(value);
|
m_modemTXOffset = ::atoi(value);
|
||||||
|
else if (::strcmp(key, "RXDCOffset") == 0)
|
||||||
|
m_modemRXDCOffset = ::atoi(value);
|
||||||
else if (::strcmp(key, "TXDCOffset") == 0)
|
else if (::strcmp(key, "TXDCOffset") == 0)
|
||||||
m_modemTXDCOffset = ::atoi(value);
|
m_modemTXDCOffset = ::atoi(value);
|
||||||
else if (::strcmp(key, "RXLevel") == 0)
|
else if (::strcmp(key, "RXLevel") == 0)
|
||||||
@@ -793,6 +796,11 @@ int CConf::getModemTXOffset() const
|
|||||||
return m_modemTXOffset;
|
return m_modemTXOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CConf::getModemRXDCOffset() const
|
||||||
|
{
|
||||||
|
return m_modemRXDCOffset;
|
||||||
|
}
|
||||||
|
|
||||||
int CConf::getModemTXDCOffset() const
|
int CConf::getModemTXDCOffset() const
|
||||||
{
|
{
|
||||||
return m_modemTXDCOffset;
|
return m_modemTXDCOffset;
|
||||||
|
|||||||
2
Conf.h
2
Conf.h
@@ -73,6 +73,7 @@ public:
|
|||||||
unsigned int getModemDMRDelay() const;
|
unsigned int getModemDMRDelay() const;
|
||||||
int getModemTXOffset() const;
|
int getModemTXOffset() const;
|
||||||
int getModemRXOffset() const;
|
int getModemRXOffset() const;
|
||||||
|
int getModemRXDCOffset() const;
|
||||||
int getModemTXDCOffset() const;
|
int getModemTXDCOffset() const;
|
||||||
float getModemRXLevel() const;
|
float getModemRXLevel() const;
|
||||||
float getModemCWIdTXLevel() const;
|
float getModemCWIdTXLevel() const;
|
||||||
@@ -246,6 +247,7 @@ private:
|
|||||||
unsigned int m_modemDMRDelay;
|
unsigned int m_modemDMRDelay;
|
||||||
int m_modemTXOffset;
|
int m_modemTXOffset;
|
||||||
int m_modemRXOffset;
|
int m_modemRXOffset;
|
||||||
|
int m_modemRXDCOffset;
|
||||||
int m_modemTXDCOffset;
|
int m_modemTXDCOffset;
|
||||||
float m_modemRXLevel;
|
float m_modemRXLevel;
|
||||||
float m_modemCWIdTXLevel;
|
float m_modemCWIdTXLevel;
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ TXOffset=0
|
|||||||
DMRDelay=0
|
DMRDelay=0
|
||||||
RXLevel=50
|
RXLevel=50
|
||||||
TXLevel=50
|
TXLevel=50
|
||||||
|
RXDCOffset=0
|
||||||
TXDCOffset=0
|
TXDCOffset=0
|
||||||
# CWIdTXLevel=50
|
# CWIdTXLevel=50
|
||||||
# D-StarTXLevel=50
|
# D-StarTXLevel=50
|
||||||
|
|||||||
@@ -848,6 +848,7 @@ bool CMMDVMHost::createModem()
|
|||||||
unsigned int txFrequency = m_conf.getTXFrequency();
|
unsigned int txFrequency = m_conf.getTXFrequency();
|
||||||
int rxOffset = m_conf.getModemRXOffset();
|
int rxOffset = m_conf.getModemRXOffset();
|
||||||
int txOffset = m_conf.getModemTXOffset();
|
int txOffset = m_conf.getModemTXOffset();
|
||||||
|
int rxDCOffset = m_conf.getModemRXDCOffset();
|
||||||
int txDCOffset = m_conf.getModemTXDCOffset();
|
int txDCOffset = m_conf.getModemTXDCOffset();
|
||||||
|
|
||||||
LogInfo("Modem Parameters");
|
LogInfo("Modem Parameters");
|
||||||
@@ -858,6 +859,7 @@ bool CMMDVMHost::createModem()
|
|||||||
LogInfo(" TX Delay: %ums", txDelay);
|
LogInfo(" TX Delay: %ums", txDelay);
|
||||||
LogInfo(" RX Offset: %dHz", rxOffset);
|
LogInfo(" RX Offset: %dHz", rxOffset);
|
||||||
LogInfo(" TX Offset: %dHz", txOffset);
|
LogInfo(" TX Offset: %dHz", txOffset);
|
||||||
|
LogInfo(" RX DC Offset: %d", rxDCOffset);
|
||||||
LogInfo(" TX DC Offset: %d", txDCOffset);
|
LogInfo(" TX DC Offset: %d", txDCOffset);
|
||||||
LogInfo(" DMR Delay: %u (%.1fms)", dmrDelay, float(dmrDelay) * 0.0416666F);
|
LogInfo(" DMR Delay: %u (%.1fms)", dmrDelay, float(dmrDelay) * 0.0416666F);
|
||||||
LogInfo(" RX Level: %.1f%%", rxLevel);
|
LogInfo(" RX Level: %.1f%%", rxLevel);
|
||||||
@@ -872,7 +874,7 @@ bool CMMDVMHost::createModem()
|
|||||||
m_modem = new CModem(port, m_duplex, rxInvert, txInvert, pttInvert, txDelay, dmrDelay, trace, 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->setModeParams(m_dstarEnabled, m_dmrEnabled, m_ysfEnabled, m_p25Enabled);
|
||||||
m_modem->setLevels(rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel);
|
m_modem->setLevels(rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel);
|
||||||
m_modem->setRFParams(rxFrequency, rxOffset, txFrequency, txOffset, txDCOffset);
|
m_modem->setRFParams(rxFrequency, rxOffset, txFrequency, txOffset, txDCOffset, rxDCOffset);
|
||||||
m_modem->setDMRParams(colorCode);
|
m_modem->setDMRParams(colorCode);
|
||||||
m_modem->setYSFParams(lowDeviation);
|
m_modem->setYSFParams(lowDeviation);
|
||||||
|
|
||||||
|
|||||||
13
Modem.cpp
13
Modem.cpp
@@ -107,6 +107,7 @@ m_dstarEnabled(false),
|
|||||||
m_dmrEnabled(false),
|
m_dmrEnabled(false),
|
||||||
m_ysfEnabled(false),
|
m_ysfEnabled(false),
|
||||||
m_p25Enabled(false),
|
m_p25Enabled(false),
|
||||||
|
m_rxDCOffset(0),
|
||||||
m_txDCOffset(0),
|
m_txDCOffset(0),
|
||||||
m_serial(port, SERIAL_115200, true),
|
m_serial(port, SERIAL_115200, true),
|
||||||
m_buffer(NULL),
|
m_buffer(NULL),
|
||||||
@@ -146,11 +147,12 @@ CModem::~CModem()
|
|||||||
delete[] m_buffer;
|
delete[] m_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModem::setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset)
|
void CModem::setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset, int rxDCOffset)
|
||||||
{
|
{
|
||||||
m_rxFrequency = rxFrequency + rxOffset;
|
m_rxFrequency = rxFrequency + rxOffset;
|
||||||
m_txFrequency = txFrequency + txOffset;
|
m_txFrequency = txFrequency + txOffset;
|
||||||
m_txDCOffset = txDCOffset;
|
m_txDCOffset = txDCOffset;
|
||||||
|
m_rxDCOffset = rxDCOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled)
|
void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled)
|
||||||
@@ -945,7 +947,7 @@ bool CModem::setConfig()
|
|||||||
|
|
||||||
buffer[0U] = MMDVM_FRAME_START;
|
buffer[0U] = MMDVM_FRAME_START;
|
||||||
|
|
||||||
buffer[1U] = 17U;
|
buffer[1U] = 18U;
|
||||||
|
|
||||||
buffer[2U] = MMDVM_SET_CONFIG;
|
buffer[2U] = MMDVM_SET_CONFIG;
|
||||||
|
|
||||||
@@ -993,11 +995,12 @@ bool CModem::setConfig()
|
|||||||
buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
|
buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
|
||||||
|
|
||||||
buffer[16U] = (unsigned char)(m_txDCOffset + 128);
|
buffer[16U] = (unsigned char)(m_txDCOffset + 128);
|
||||||
|
buffer[17U] = (unsigned char)(m_rxDCOffset + 128);
|
||||||
|
|
||||||
// CUtils::dump(1U, "Written", buffer, 17U);
|
// CUtils::dump(1U, "Written", buffer, 18U);
|
||||||
|
|
||||||
int ret = m_serial.write(buffer, 17U);
|
int ret = m_serial.write(buffer, 18U);
|
||||||
if (ret != 17)
|
if (ret != 18)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned int count = 0U;
|
unsigned int count = 0U;
|
||||||
|
|||||||
3
Modem.h
3
Modem.h
@@ -37,7 +37,7 @@ public:
|
|||||||
CModem(const std::string& port, bool duplex, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int dmrDelay, bool trace, bool debug);
|
CModem(const std::string& port, bool duplex, bool rxInvert, bool txInvert, bool pttInvert, unsigned int txDelay, unsigned int dmrDelay, bool trace, bool debug);
|
||||||
~CModem();
|
~CModem();
|
||||||
|
|
||||||
void setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset);
|
void setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset, int rxDCOffset);
|
||||||
void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled);
|
void setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled);
|
||||||
void setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float 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);
|
||||||
@@ -111,6 +111,7 @@ private:
|
|||||||
bool m_dmrEnabled;
|
bool m_dmrEnabled;
|
||||||
bool m_ysfEnabled;
|
bool m_ysfEnabled;
|
||||||
bool m_p25Enabled;
|
bool m_p25Enabled;
|
||||||
|
int m_rxDCOffset;
|
||||||
int m_txDCOffset;
|
int m_txDCOffset;
|
||||||
CSerialController m_serial;
|
CSerialController m_serial;
|
||||||
unsigned char* m_buffer;
|
unsigned char* m_buffer;
|
||||||
|
|||||||
Reference in New Issue
Block a user