correct issue where TDULC for Call Termination was incorrectly being sent while in simplex mode (should fix issue #3); add configuration option called "simplexSameFrequency" to control whether simplex operation takes place on a split frequency pair or a single frequency; fix issue where P25 nulls may be incorrectly transmitted in simplex mode;

pull/12/head
Bryan Biedenkapp 4 years ago
parent d2211633da
commit f5cb11b467

@ -78,6 +78,7 @@ system:
identity: ABCD123
timeout: 180
duplex: true
simplexSameFrequency: false
modeHang: 10
# rfModeHang: 10
# netModeHang: 10

@ -1306,6 +1306,7 @@ bool Host::readParams()
yaml::Node systemConf = m_conf["system"];
m_duplex = systemConf["duplex"].as<bool>(true);
bool simplexSameFreq = systemConf["simplexSameFrequency"].as<bool>(false);
m_timeout = systemConf["timeout"].as<uint32_t>(120U);
m_rfModeHang = systemConf["rfModeHang"].as<uint32_t>(10U);
@ -1332,6 +1333,9 @@ bool Host::readParams()
LogInfo(" P25: %s", m_p25Enabled ? "enabled" : "disabled");
LogInfo(" Duplex: %s", m_duplex ? "yes" : "no");
if (!udpMasterMode) {
if (!m_duplex) {
LogInfo(" Simplex Same Frequency: %s", simplexSameFreq ? "yes" : "no");
}
LogInfo(" Timeout: %us", m_timeout);
LogInfo(" RF Mode Hang: %us", m_rfModeHang);
LogInfo(" RF Talkgroup Hang: %us", m_rfTalkgroupHang);
@ -1391,7 +1395,6 @@ bool Host::readParams()
m_channelNo = 4095U;
}
if (m_duplex) {
if (entry.txOffsetMhz() == 0U) {
::LogError(LOG_HOST, "Channel Id %u has an invalid Tx offset.", m_channelId);
return false;
@ -1402,10 +1405,8 @@ bool Host::readParams()
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)) + calcTxOffset);
m_txFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
}
else {
uint32_t calcSpace = (uint32_t)(entry.chSpaceKhz() / 0.125);
if (!m_duplex && simplexSameFreq) {
m_rxFrequency = (uint32_t)((entry.baseFrequency() + ((calcSpace * 125) * m_channelNo)));
m_txFrequency = m_rxFrequency;
}

@ -573,7 +573,7 @@ bool Control::writeEndRF()
if (m_netState == RS_NET_IDLE && m_rfState == RS_RF_LISTENING) {
if (m_tailOnIdle) {
bool ret = m_voice->writeEndRF();
if (!m_control) {
if (!m_control && m_duplex) {
writeRF_Nulls();
}

@ -1496,6 +1496,10 @@ void TrunkPacket::writeRF_TDULC(lc::TDULC lc, bool noNetwork)
/// <param name="dstId"></param>
void TrunkPacket::writeRF_TDULC_ChanRelease(bool grp, uint32_t srcId, uint32_t dstId)
{
if (!m_p25->m_duplex) {
return;
}
uint32_t count = m_p25->m_hangCount / 2;
lc::TDULC lc = lc::TDULC(m_p25->m_siteData, m_p25->m_idenEntry, m_dumpTSBK);

Loading…
Cancel
Save

Powered by TurnKey Linux.