Add an optional transmi DC offset value.
This commit is contained in:
parent
7b93ed1839
commit
9a7828566d
28
Conf.cpp
28
Conf.cpp
|
@ -86,8 +86,9 @@ m_modemTXInvert(false),
|
||||||
m_modemPTTInvert(false),
|
m_modemPTTInvert(false),
|
||||||
m_modemTXDelay(100U),
|
m_modemTXDelay(100U),
|
||||||
m_modemDMRDelay(0U),
|
m_modemDMRDelay(0U),
|
||||||
m_modemTxOffset(0),
|
m_modemTXOffset(0),
|
||||||
m_modemRxOffset(0),
|
m_modemRXOffset(0),
|
||||||
|
m_modemTXDCOffset(0),
|
||||||
m_modemRXLevel(50.0F),
|
m_modemRXLevel(50.0F),
|
||||||
m_modemCWIdTXLevel(50.0F),
|
m_modemCWIdTXLevel(50.0F),
|
||||||
m_modemDStarTXLevel(50.0F),
|
m_modemDStarTXLevel(50.0F),
|
||||||
|
@ -340,9 +341,11 @@ bool CConf::read()
|
||||||
else if (::strcmp(key, "DMRDelay") == 0)
|
else if (::strcmp(key, "DMRDelay") == 0)
|
||||||
m_modemDMRDelay = (unsigned int)::atoi(value);
|
m_modemDMRDelay = (unsigned int)::atoi(value);
|
||||||
else if (::strcmp(key, "RXOffset") == 0)
|
else if (::strcmp(key, "RXOffset") == 0)
|
||||||
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, "TXDCOffset") == 0)
|
||||||
|
m_modemTXDCOffset = ::atoi(value);
|
||||||
else if (::strcmp(key, "RXLevel") == 0)
|
else if (::strcmp(key, "RXLevel") == 0)
|
||||||
m_modemRXLevel = float(::atof(value));
|
m_modemRXLevel = float(::atof(value));
|
||||||
else if (::strcmp(key, "TXLevel") == 0)
|
else if (::strcmp(key, "TXLevel") == 0)
|
||||||
|
@ -647,12 +650,12 @@ bool CConf::getDaemon() const
|
||||||
return m_daemon;
|
return m_daemon;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CConf::getRxFrequency() const
|
unsigned int CConf::getRXFrequency() const
|
||||||
{
|
{
|
||||||
return m_rxFrequency;
|
return m_rxFrequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CConf::getTxFrequency() const
|
unsigned int CConf::getTXFrequency() const
|
||||||
{
|
{
|
||||||
return m_txFrequency;
|
return m_txFrequency;
|
||||||
}
|
}
|
||||||
|
@ -767,14 +770,19 @@ unsigned int CConf::getModemDMRDelay() const
|
||||||
return m_modemDMRDelay;
|
return m_modemDMRDelay;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CConf::getModemRxOffset() const
|
int CConf::getModemRXOffset() const
|
||||||
{
|
{
|
||||||
return m_modemRxOffset;
|
return m_modemRXOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CConf::getModemTxOffset() const
|
int CConf::getModemTXOffset() const
|
||||||
{
|
{
|
||||||
return m_modemTxOffset;
|
return m_modemTXOffset;
|
||||||
|
}
|
||||||
|
|
||||||
|
int CConf::getModemTXDCOffset() const
|
||||||
|
{
|
||||||
|
return m_modemTXDCOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
float CConf::getModemRXLevel() const
|
float CConf::getModemRXLevel() const
|
||||||
|
|
14
Conf.h
14
Conf.h
|
@ -41,8 +41,8 @@ public:
|
||||||
bool getDaemon() const;
|
bool getDaemon() const;
|
||||||
|
|
||||||
// The Info section
|
// The Info section
|
||||||
unsigned int getRxFrequency() const;
|
unsigned int getRXFrequency() const;
|
||||||
unsigned int getTxFrequency() const;
|
unsigned int getTXFrequency() const;
|
||||||
unsigned int getPower() const;
|
unsigned int getPower() const;
|
||||||
float getLatitude() const;
|
float getLatitude() const;
|
||||||
float getLongitude() const;
|
float getLongitude() const;
|
||||||
|
@ -73,8 +73,9 @@ public:
|
||||||
bool getModemPTTInvert() const;
|
bool getModemPTTInvert() const;
|
||||||
unsigned int getModemTXDelay() const;
|
unsigned int getModemTXDelay() const;
|
||||||
unsigned int getModemDMRDelay() const;
|
unsigned int getModemDMRDelay() const;
|
||||||
int getModemTxOffset() const;
|
int getModemTXOffset() const;
|
||||||
int getModemRxOffset() const;
|
int getModemRXOffset() const;
|
||||||
|
int getModemTXDCOffset() const;
|
||||||
float getModemRXLevel() const;
|
float getModemRXLevel() const;
|
||||||
float getModemCWIdTXLevel() const;
|
float getModemCWIdTXLevel() const;
|
||||||
float getModemDStarTXLevel() const;
|
float getModemDStarTXLevel() const;
|
||||||
|
@ -239,8 +240,9 @@ private:
|
||||||
bool m_modemPTTInvert;
|
bool m_modemPTTInvert;
|
||||||
unsigned int m_modemTXDelay;
|
unsigned int m_modemTXDelay;
|
||||||
unsigned int m_modemDMRDelay;
|
unsigned int m_modemDMRDelay;
|
||||||
int m_modemTxOffset;
|
int m_modemTXOffset;
|
||||||
int m_modemRxOffset;
|
int m_modemRXOffset;
|
||||||
|
int m_modemTXDCOffset;
|
||||||
float m_modemRXLevel;
|
float m_modemRXLevel;
|
||||||
float m_modemCWIdTXLevel;
|
float m_modemCWIdTXLevel;
|
||||||
float m_modemDStarTXLevel;
|
float m_modemDStarTXLevel;
|
||||||
|
|
|
@ -48,6 +48,7 @@ TXOffset=0
|
||||||
DMRDelay=0
|
DMRDelay=0
|
||||||
RXLevel=50
|
RXLevel=50
|
||||||
TXLevel=50
|
TXLevel=50
|
||||||
|
TXDCOffset=0
|
||||||
# CWIdTXLevel=50
|
# CWIdTXLevel=50
|
||||||
# D-StarTXLevel=50
|
# D-StarTXLevel=50
|
||||||
# DMRTXLevel=50
|
# DMRTXLevel=50
|
||||||
|
|
|
@ -828,10 +828,11 @@ bool CMMDVMHost::createModem()
|
||||||
bool debug = m_conf.getModemDebug();
|
bool debug = m_conf.getModemDebug();
|
||||||
unsigned int colorCode = m_conf.getDMRColorCode();
|
unsigned int colorCode = m_conf.getDMRColorCode();
|
||||||
bool lowDeviation = m_conf.getFusionLowDeviation();
|
bool lowDeviation = m_conf.getFusionLowDeviation();
|
||||||
unsigned int rxFrequency = m_conf.getRxFrequency();
|
unsigned int rxFrequency = m_conf.getRXFrequency();
|
||||||
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 txDCOffset = m_conf.getModemTXDCOffset();
|
||||||
|
|
||||||
LogInfo("Modem Parameters");
|
LogInfo("Modem Parameters");
|
||||||
LogInfo(" Port: %s", port.c_str());
|
LogInfo(" Port: %s", port.c_str());
|
||||||
|
@ -841,6 +842,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(" 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);
|
||||||
LogInfo(" CW Id TX Level: %.1f%%", cwIdTXLevel);
|
LogInfo(" CW Id TX Level: %.1f%%", cwIdTXLevel);
|
||||||
|
@ -854,7 +856,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);
|
m_modem->setRFParams(rxFrequency, rxOffset, txFrequency, txOffset, txDCOffset);
|
||||||
m_modem->setDMRParams(colorCode);
|
m_modem->setDMRParams(colorCode);
|
||||||
m_modem->setYSFParams(lowDeviation);
|
m_modem->setYSFParams(lowDeviation);
|
||||||
|
|
||||||
|
@ -926,8 +928,8 @@ bool CMMDVMHost::createDMRNetwork()
|
||||||
m_dmrNetwork->setOptions(options);
|
m_dmrNetwork->setOptions(options);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int rxFrequency = m_conf.getRxFrequency();
|
unsigned int rxFrequency = m_conf.getRXFrequency();
|
||||||
unsigned int txFrequency = m_conf.getTxFrequency();
|
unsigned int txFrequency = m_conf.getTXFrequency();
|
||||||
unsigned int power = m_conf.getPower();
|
unsigned int power = m_conf.getPower();
|
||||||
unsigned int colorCode = m_conf.getDMRColorCode();
|
unsigned int colorCode = m_conf.getDMRColorCode();
|
||||||
float latitude = m_conf.getLatitude();
|
float latitude = m_conf.getLatitude();
|
||||||
|
|
12
Modem.cpp
12
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_txDCOffset(0),
|
||||||
m_serial(port, SERIAL_115200, true),
|
m_serial(port, SERIAL_115200, true),
|
||||||
m_buffer(NULL),
|
m_buffer(NULL),
|
||||||
m_length(0U),
|
m_length(0U),
|
||||||
|
@ -145,10 +146,11 @@ CModem::~CModem()
|
||||||
delete[] m_buffer;
|
delete[] m_buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModem::setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset)
|
void CModem::setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset)
|
||||||
{
|
{
|
||||||
m_rxFrequency = rxFrequency + rxOffset;
|
m_rxFrequency = rxFrequency + rxOffset;
|
||||||
m_txFrequency = txFrequency + txOffset;
|
m_txFrequency = txFrequency + txOffset;
|
||||||
|
m_txDCOffset = txDCOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled)
|
void CModem::setModeParams(bool dstarEnabled, bool dmrEnabled, bool ysfEnabled, bool p25Enabled)
|
||||||
|
@ -990,10 +992,12 @@ bool CModem::setConfig()
|
||||||
buffer[14U] = (unsigned char)(m_ysfTXLevel * 2.55F + 0.5F);
|
buffer[14U] = (unsigned char)(m_ysfTXLevel * 2.55F + 0.5F);
|
||||||
buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
|
buffer[15U] = (unsigned char)(m_p25TXLevel * 2.55F + 0.5F);
|
||||||
|
|
||||||
// CUtils::dump(1U, "Written", buffer, 16U);
|
buffer[16U] = (unsigned char)(m_txDCOffset + 128);
|
||||||
|
|
||||||
int ret = m_serial.write(buffer, 16U);
|
// CUtils::dump(1U, "Written", buffer, 17U);
|
||||||
if (ret != 16)
|
|
||||||
|
int ret = m_serial.write(buffer, 17U);
|
||||||
|
if (ret != 17)
|
||||||
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);
|
void setRFParams(unsigned int rxFrequency, int rxOffset, unsigned int txFrequency, int txOffset, int txDCOffset);
|
||||||
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_txDCOffset;
|
||||||
CSerialController m_serial;
|
CSerialController m_serial;
|
||||||
unsigned char* m_buffer;
|
unsigned char* m_buffer;
|
||||||
unsigned int m_length;
|
unsigned int m_length;
|
||||||
|
|
Loading…
Reference in a new issue