Merge branch 'master' into FM
This commit is contained in:
commit
dc5438e3aa
16
Conf.cpp
16
Conf.cpp
|
@ -163,12 +163,14 @@ m_p25NAC(0x293U),
|
||||||
m_p25SelfOnly(false),
|
m_p25SelfOnly(false),
|
||||||
m_p25OverrideUID(false),
|
m_p25OverrideUID(false),
|
||||||
m_p25RemoteGateway(false),
|
m_p25RemoteGateway(false),
|
||||||
|
m_p25TXHang(5U),
|
||||||
m_p25ModeHang(10U),
|
m_p25ModeHang(10U),
|
||||||
m_nxdnEnabled(false),
|
m_nxdnEnabled(false),
|
||||||
m_nxdnId(0U),
|
m_nxdnId(0U),
|
||||||
m_nxdnRAN(1U),
|
m_nxdnRAN(1U),
|
||||||
m_nxdnSelfOnly(false),
|
m_nxdnSelfOnly(false),
|
||||||
m_nxdnRemoteGateway(false),
|
m_nxdnRemoteGateway(false),
|
||||||
|
m_nxdnTXHang(5U),
|
||||||
m_nxdnModeHang(10U),
|
m_nxdnModeHang(10U),
|
||||||
m_pocsagEnabled(false),
|
m_pocsagEnabled(false),
|
||||||
m_pocsagFrequency(0U),
|
m_pocsagFrequency(0U),
|
||||||
|
@ -674,6 +676,8 @@ bool CConf::read()
|
||||||
m_p25SelfOnly = ::atoi(value) == 1;
|
m_p25SelfOnly = ::atoi(value) == 1;
|
||||||
else if (::strcmp(key, "RemoteGateway") == 0)
|
else if (::strcmp(key, "RemoteGateway") == 0)
|
||||||
m_p25RemoteGateway = ::atoi(value) == 1;
|
m_p25RemoteGateway = ::atoi(value) == 1;
|
||||||
|
else if (::strcmp(key, "TXHang") == 0)
|
||||||
|
m_p25TXHang = (unsigned int)::atoi(value);
|
||||||
else if (::strcmp(key, "ModeHang") == 0)
|
else if (::strcmp(key, "ModeHang") == 0)
|
||||||
m_p25ModeHang = (unsigned int)::atoi(value);
|
m_p25ModeHang = (unsigned int)::atoi(value);
|
||||||
} else if (section == SECTION_NXDN) {
|
} else if (section == SECTION_NXDN) {
|
||||||
|
@ -687,6 +691,8 @@ bool CConf::read()
|
||||||
m_nxdnSelfOnly = ::atoi(value) == 1;
|
m_nxdnSelfOnly = ::atoi(value) == 1;
|
||||||
else if (::strcmp(key, "RemoteGateway") == 0)
|
else if (::strcmp(key, "RemoteGateway") == 0)
|
||||||
m_nxdnRemoteGateway = ::atoi(value) == 1;
|
m_nxdnRemoteGateway = ::atoi(value) == 1;
|
||||||
|
else if (::strcmp(key, "TXHang") == 0)
|
||||||
|
m_nxdnTXHang = (unsigned int)::atoi(value);
|
||||||
else if (::strcmp(key, "ModeHang") == 0)
|
else if (::strcmp(key, "ModeHang") == 0)
|
||||||
m_nxdnModeHang = (unsigned int)::atoi(value);
|
m_nxdnModeHang = (unsigned int)::atoi(value);
|
||||||
} else if (section == SECTION_POCSAG) {
|
} else if (section == SECTION_POCSAG) {
|
||||||
|
@ -1461,6 +1467,11 @@ bool CConf::getP25RemoteGateway() const
|
||||||
return m_p25RemoteGateway;
|
return m_p25RemoteGateway;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int CConf::getP25TXHang() const
|
||||||
|
{
|
||||||
|
return m_p25TXHang;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int CConf::getP25ModeHang() const
|
unsigned int CConf::getP25ModeHang() const
|
||||||
{
|
{
|
||||||
return m_p25ModeHang;
|
return m_p25ModeHang;
|
||||||
|
@ -1491,6 +1502,11 @@ bool CConf::getNXDNRemoteGateway() const
|
||||||
return m_nxdnRemoteGateway;
|
return m_nxdnRemoteGateway;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int CConf::getNXDNTXHang() const
|
||||||
|
{
|
||||||
|
return m_nxdnTXHang;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int CConf::getNXDNModeHang() const
|
unsigned int CConf::getNXDNModeHang() const
|
||||||
{
|
{
|
||||||
return m_nxdnModeHang;
|
return m_nxdnModeHang;
|
||||||
|
|
4
Conf.h
4
Conf.h
|
@ -155,6 +155,7 @@ public:
|
||||||
bool getP25SelfOnly() const;
|
bool getP25SelfOnly() const;
|
||||||
bool getP25OverrideUID() const;
|
bool getP25OverrideUID() const;
|
||||||
bool getP25RemoteGateway() const;
|
bool getP25RemoteGateway() const;
|
||||||
|
unsigned int getP25TXHang() const;
|
||||||
unsigned int getP25ModeHang() const;
|
unsigned int getP25ModeHang() const;
|
||||||
|
|
||||||
// The NXDN section
|
// The NXDN section
|
||||||
|
@ -163,6 +164,7 @@ public:
|
||||||
unsigned int getNXDNRAN() const;
|
unsigned int getNXDNRAN() const;
|
||||||
bool getNXDNSelfOnly() const;
|
bool getNXDNSelfOnly() const;
|
||||||
bool getNXDNRemoteGateway() const;
|
bool getNXDNRemoteGateway() const;
|
||||||
|
unsigned int getNXDNTXHang() const;
|
||||||
unsigned int getNXDNModeHang() const;
|
unsigned int getNXDNModeHang() const;
|
||||||
|
|
||||||
// The POCSAG section
|
// The POCSAG section
|
||||||
|
@ -426,6 +428,7 @@ private:
|
||||||
bool m_p25SelfOnly;
|
bool m_p25SelfOnly;
|
||||||
bool m_p25OverrideUID;
|
bool m_p25OverrideUID;
|
||||||
bool m_p25RemoteGateway;
|
bool m_p25RemoteGateway;
|
||||||
|
unsigned int m_p25TXHang;
|
||||||
unsigned int m_p25ModeHang;
|
unsigned int m_p25ModeHang;
|
||||||
|
|
||||||
bool m_nxdnEnabled;
|
bool m_nxdnEnabled;
|
||||||
|
@ -433,6 +436,7 @@ private:
|
||||||
unsigned int m_nxdnRAN;
|
unsigned int m_nxdnRAN;
|
||||||
bool m_nxdnSelfOnly;
|
bool m_nxdnSelfOnly;
|
||||||
bool m_nxdnRemoteGateway;
|
bool m_nxdnRemoteGateway;
|
||||||
|
unsigned int m_nxdnTXHang;
|
||||||
unsigned int m_nxdnModeHang;
|
unsigned int m_nxdnModeHang;
|
||||||
|
|
||||||
bool m_pocsagEnabled;
|
bool m_pocsagEnabled;
|
||||||
|
|
|
@ -126,6 +126,7 @@ NAC=293
|
||||||
SelfOnly=0
|
SelfOnly=0
|
||||||
OverrideUIDCheck=0
|
OverrideUIDCheck=0
|
||||||
RemoteGateway=0
|
RemoteGateway=0
|
||||||
|
TXHang=5
|
||||||
# ModeHang=10
|
# ModeHang=10
|
||||||
|
|
||||||
[NXDN]
|
[NXDN]
|
||||||
|
@ -133,6 +134,7 @@ Enable=1
|
||||||
RAN=1
|
RAN=1
|
||||||
SelfOnly=0
|
SelfOnly=0
|
||||||
RemoteGateway=0
|
RemoteGateway=0
|
||||||
|
TXHang=5
|
||||||
# ModeHang=10
|
# ModeHang=10
|
||||||
|
|
||||||
[POCSAG]
|
[POCSAG]
|
||||||
|
|
|
@ -550,12 +550,13 @@ int CMMDVMHost::run()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_p25Enabled) {
|
if (m_p25Enabled) {
|
||||||
unsigned int id = m_conf.getP25Id();
|
unsigned int id = m_conf.getP25Id();
|
||||||
unsigned int nac = m_conf.getP25NAC();
|
unsigned int nac = m_conf.getP25NAC();
|
||||||
bool uidOverride = m_conf.getP25OverrideUID();
|
unsigned int txHang = m_conf.getP25TXHang();
|
||||||
bool selfOnly = m_conf.getP25SelfOnly();
|
bool uidOverride = m_conf.getP25OverrideUID();
|
||||||
bool remoteGateway = m_conf.getP25RemoteGateway();
|
bool selfOnly = m_conf.getP25SelfOnly();
|
||||||
m_p25RFModeHang = m_conf.getP25ModeHang();
|
bool remoteGateway = m_conf.getP25RemoteGateway();
|
||||||
|
m_p25RFModeHang = m_conf.getP25ModeHang();
|
||||||
|
|
||||||
LogInfo("P25 RF Parameters");
|
LogInfo("P25 RF Parameters");
|
||||||
LogInfo(" Id: %u", id);
|
LogInfo(" Id: %u", id);
|
||||||
|
@ -563,6 +564,7 @@ int CMMDVMHost::run()
|
||||||
LogInfo(" UID Override: %s", uidOverride ? "yes" : "no");
|
LogInfo(" UID Override: %s", uidOverride ? "yes" : "no");
|
||||||
LogInfo(" Self Only: %s", selfOnly ? "yes" : "no");
|
LogInfo(" Self Only: %s", selfOnly ? "yes" : "no");
|
||||||
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
||||||
|
LogInfo(" TX Hang: %us", txHang);
|
||||||
LogInfo(" Mode Hang: %us", m_p25RFModeHang);
|
LogInfo(" Mode Hang: %us", m_p25RFModeHang);
|
||||||
|
|
||||||
m_p25 = new CP25Control(nac, id, selfOnly, uidOverride, m_p25Network, m_display, m_timeout, m_duplex, m_dmrLookup, remoteGateway, rssi);
|
m_p25 = new CP25Control(nac, id, selfOnly, uidOverride, m_p25Network, m_display, m_timeout, m_duplex, m_dmrLookup, remoteGateway, rssi);
|
||||||
|
@ -580,17 +582,19 @@ int CMMDVMHost::run()
|
||||||
m_nxdnLookup = new CNXDNLookup(lookupFile, reloadTime);
|
m_nxdnLookup = new CNXDNLookup(lookupFile, reloadTime);
|
||||||
m_nxdnLookup->read();
|
m_nxdnLookup->read();
|
||||||
|
|
||||||
unsigned int id = m_conf.getNXDNId();
|
unsigned int id = m_conf.getNXDNId();
|
||||||
unsigned int ran = m_conf.getNXDNRAN();
|
unsigned int ran = m_conf.getNXDNRAN();
|
||||||
bool selfOnly = m_conf.getNXDNSelfOnly();
|
bool selfOnly = m_conf.getNXDNSelfOnly();
|
||||||
bool remoteGateway = m_conf.getNXDNRemoteGateway();
|
bool remoteGateway = m_conf.getNXDNRemoteGateway();
|
||||||
m_nxdnRFModeHang = m_conf.getNXDNModeHang();
|
unsigned int txHang = m_conf.getNXDNTXHang();
|
||||||
|
m_nxdnRFModeHang = m_conf.getNXDNModeHang();
|
||||||
|
|
||||||
LogInfo("NXDN RF Parameters");
|
LogInfo("NXDN RF Parameters");
|
||||||
LogInfo(" Id: %u", id);
|
LogInfo(" Id: %u", id);
|
||||||
LogInfo(" RAN: %u", ran);
|
LogInfo(" RAN: %u", ran);
|
||||||
LogInfo(" Self Only: %s", selfOnly ? "yes" : "no");
|
LogInfo(" Self Only: %s", selfOnly ? "yes" : "no");
|
||||||
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
LogInfo(" Remote Gateway: %s", remoteGateway ? "yes" : "no");
|
||||||
|
LogInfo(" TX Hang: %us", txHang);
|
||||||
LogInfo(" Mode Hang: %us", m_nxdnRFModeHang);
|
LogInfo(" Mode Hang: %us", m_nxdnRFModeHang);
|
||||||
|
|
||||||
m_nxdn = new CNXDNControl(ran, id, selfOnly, m_nxdnNetwork, m_display, m_timeout, m_duplex, remoteGateway, m_nxdnLookup, rssi);
|
m_nxdn = new CNXDNControl(ran, id, selfOnly, m_nxdnNetwork, m_display, m_timeout, m_duplex, remoteGateway, m_nxdnLookup, rssi);
|
||||||
|
@ -1164,7 +1168,9 @@ 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 txHang = m_conf.getFusionTXHang();
|
unsigned int ysfTXHang = m_conf.getFusionTXHang();
|
||||||
|
unsigned int p25TXHang = m_conf.getP25TXHang();
|
||||||
|
unsigned int nxdnTXHang = m_conf.getNXDNTXHang();
|
||||||
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 pocsagFrequency = m_conf.getPOCSAGFrequency();
|
unsigned int pocsagFrequency = m_conf.getPOCSAGFrequency();
|
||||||
|
@ -1206,7 +1212,9 @@ bool CMMDVMHost::createModem()
|
||||||
m_modem->setLevels(rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel, nxdnTXLevel, pocsagTXLevel, fmTXLevel);
|
m_modem->setLevels(rxLevel, cwIdTXLevel, dstarTXLevel, dmrTXLevel, ysfTXLevel, p25TXLevel, nxdnTXLevel, pocsagTXLevel, fmTXLevel);
|
||||||
m_modem->setRFParams(rxFrequency, rxOffset, txFrequency, txOffset, txDCOffset, rxDCOffset, rfLevel, pocsagFrequency);
|
m_modem->setRFParams(rxFrequency, rxOffset, txFrequency, txOffset, txDCOffset, rxDCOffset, rfLevel, pocsagFrequency);
|
||||||
m_modem->setDMRParams(colorCode);
|
m_modem->setDMRParams(colorCode);
|
||||||
m_modem->setYSFParams(lowDeviation, txHang);
|
m_modem->setYSFParams(lowDeviation, ysfTXHang);
|
||||||
|
m_modem->setP25Params(p25TXHang);
|
||||||
|
m_modem->setNXDNParams(nxdnTXHang);
|
||||||
|
|
||||||
if (m_fmEnabled) {
|
if (m_fmEnabled) {
|
||||||
std::string callsign = m_conf.getFMCallsign();
|
std::string callsign = m_conf.getFMCallsign();
|
||||||
|
|
24
Modem.cpp
24
Modem.cpp
|
@ -104,6 +104,8 @@ m_port(port),
|
||||||
m_dmrColorCode(0U),
|
m_dmrColorCode(0U),
|
||||||
m_ysfLoDev(false),
|
m_ysfLoDev(false),
|
||||||
m_ysfTXHang(4U),
|
m_ysfTXHang(4U),
|
||||||
|
m_p25TXHang(5U),
|
||||||
|
m_nxdnTXHang(5U),
|
||||||
m_duplex(duplex),
|
m_duplex(duplex),
|
||||||
m_rxInvert(rxInvert),
|
m_rxInvert(rxInvert),
|
||||||
m_txInvert(txInvert),
|
m_txInvert(txInvert),
|
||||||
|
@ -265,6 +267,16 @@ void CModem::setYSFParams(bool loDev, unsigned int txHang)
|
||||||
m_ysfTXHang = txHang;
|
m_ysfTXHang = txHang;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CModem::setP25Params(unsigned int txHang)
|
||||||
|
{
|
||||||
|
m_p25TXHang = txHang;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CModem::setNXDNParams(unsigned int txHang)
|
||||||
|
{
|
||||||
|
m_nxdnTXHang = txHang;
|
||||||
|
}
|
||||||
|
|
||||||
void CModem::setTransparentDataParams(unsigned int sendFrameType)
|
void CModem::setTransparentDataParams(unsigned int sendFrameType)
|
||||||
{
|
{
|
||||||
m_sendTransparentDataFrameType = sendFrameType;
|
m_sendTransparentDataFrameType = sendFrameType;
|
||||||
|
@ -1507,7 +1519,7 @@ bool CModem::setConfig()
|
||||||
|
|
||||||
buffer[0U] = MMDVM_FRAME_START;
|
buffer[0U] = MMDVM_FRAME_START;
|
||||||
|
|
||||||
buffer[1U] = 22U;
|
buffer[1U] = 24U;
|
||||||
|
|
||||||
buffer[2U] = MMDVM_SET_CONFIG;
|
buffer[2U] = MMDVM_SET_CONFIG;
|
||||||
|
|
||||||
|
@ -1571,10 +1583,14 @@ bool CModem::setConfig()
|
||||||
|
|
||||||
buffer[21U] = (unsigned char)(m_fmTXLevel * 2.55F + 0.5F);
|
buffer[21U] = (unsigned char)(m_fmTXLevel * 2.55F + 0.5F);
|
||||||
|
|
||||||
// CUtils::dump(1U, "Written", buffer, 22U);
|
buffer[22U] = (unsigned char)m_p25TXHang;
|
||||||
|
|
||||||
int ret = m_serial->write(buffer, 22U);
|
buffer[23U] = (unsigned char)m_nxdnTXHang;
|
||||||
if (ret != 22)
|
|
||||||
|
// CUtils::dump(1U, "Written", buffer, 24U);
|
||||||
|
|
||||||
|
int ret = m_serial->write(buffer, 24U);
|
||||||
|
if (ret != 24)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
unsigned int count = 0U;
|
unsigned int count = 0U;
|
||||||
|
|
4
Modem.h
4
Modem.h
|
@ -43,6 +43,8 @@ public:
|
||||||
virtual void setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel, float nxdnTXLevel, float pocsagLevel, float fmTXLevel);
|
virtual void setLevels(float rxLevel, float cwIdTXLevel, float dstarTXLevel, float dmrTXLevel, float ysfTXLevel, float p25TXLevel, float nxdnTXLevel, float pocsagLevel, float fmTXLevel);
|
||||||
virtual void setDMRParams(unsigned int colorCode);
|
virtual void setDMRParams(unsigned int colorCode);
|
||||||
virtual void setYSFParams(bool loDev, unsigned int txHang);
|
virtual void setYSFParams(bool loDev, unsigned int txHang);
|
||||||
|
virtual void setP25Params(unsigned int txHang);
|
||||||
|
virtual void setNXDNParams(unsigned int txHang);
|
||||||
virtual void setTransparentDataParams(unsigned int sendFrameType);
|
virtual void setTransparentDataParams(unsigned int sendFrameType);
|
||||||
|
|
||||||
virtual void setFMCallsignParams(const std::string& callsign, unsigned int callsignSpeed, unsigned int callsignFrequency, unsigned int callsignTime, unsigned int callsignHoldoff, float callsignHighLevel, float callsignLowLevel, bool callsignAtStart, bool callsignAtEnd, bool callsignAtLatch);
|
virtual void setFMCallsignParams(const std::string& callsign, unsigned int callsignSpeed, unsigned int callsignFrequency, unsigned int callsignTime, unsigned int callsignHoldoff, float callsignHighLevel, float callsignLowLevel, bool callsignAtStart, bool callsignAtEnd, bool callsignAtLatch);
|
||||||
|
@ -118,6 +120,8 @@ private:
|
||||||
unsigned int m_dmrColorCode;
|
unsigned int m_dmrColorCode;
|
||||||
bool m_ysfLoDev;
|
bool m_ysfLoDev;
|
||||||
unsigned int m_ysfTXHang;
|
unsigned int m_ysfTXHang;
|
||||||
|
unsigned int m_p25TXHang;
|
||||||
|
unsigned int m_nxdnTXHang;
|
||||||
bool m_duplex;
|
bool m_duplex;
|
||||||
bool m_rxInvert;
|
bool m_rxInvert;
|
||||||
bool m_txInvert;
|
bool m_txInvert;
|
||||||
|
|
Loading…
Reference in a new issue