Merge branch 'master' into nxdn

This commit is contained in:
Jonathan Naylor
2018-01-15 21:12:56 +00:00
8 changed files with 90 additions and 19 deletions

View File

@@ -148,6 +148,7 @@ m_ysfNetModeHang(3U),
m_p25NetModeHang(3U),
m_nxdnNetModeHang(3U),
m_modeTimer(1000U),
m_dmrBeaconTimer(1000U),
m_dmrTXTimer(1000U),
m_cwIdTimer(1000U),
m_duplex(false),
@@ -321,9 +322,6 @@ int CMMDVMHost::run()
m_cwIdTimer.start();
}
CTimer dmrBeaconTimer(1000U, 4U);
bool dmrBeaconsEnabled = m_dmrEnabled && m_conf.getDMRBeacons();
// For all modes we handle RSSI
std::string rssiMappingFile = m_conf.getModemRSSIMappingFile();
@@ -392,6 +390,7 @@ int CMMDVMHost::run()
unsigned int callHang = m_conf.getDMRCallHang();
unsigned int txHang = m_conf.getDMRTXHang();
m_dmrRFModeHang = m_conf.getDMRModeHang();
unsigned int dmrBeacons = m_conf.getDMRBeacons();
if (txHang > m_dmrRFModeHang)
txHang = m_dmrRFModeHang;
@@ -425,6 +424,12 @@ int CMMDVMHost::run()
LogInfo(" TX Hang: %us", txHang);
LogInfo(" Mode Hang: %us", m_dmrRFModeHang);
if (dmrBeacons > 0U) {
LogInfo(" DMR Roaming Beacons: %u mins", dmrBeacons);
m_dmrBeaconTimer.setTimeout(dmrBeacons * 60U);
m_dmrBeaconTimer.start();
}
dmr = new CDMRControl(id, colorCode, callHang, selfOnly, embeddedLCOnly, dumpTAData, prefixes, blackList, whiteList, slot1TGWhiteList, slot2TGWhiteList, m_timeout, m_modem, m_dmrNetwork, m_display, m_duplex, m_lookup, rssi);
m_dmrTXTimer.setTimeout(txHang);
@@ -490,6 +495,8 @@ int CMMDVMHost::run()
nxdn = new CNXDNControl(ran, id, selfOnly, m_nxdnNetwork, m_display, m_timeout, m_duplex, remoteGateway, rssi);
}
CTimer dmrBeaconTimer(1000U, 4U);
setMode(MODE_IDLE);
LogMessage("MMDVMHost-%s is running", VERSION);
@@ -785,14 +792,6 @@ int CMMDVMHost::run()
}
}
if (m_dmrNetwork != NULL) {
bool run = m_dmrNetwork->wantsBeacon();
if (dmrBeaconsEnabled && run && m_mode == MODE_IDLE && !m_modem->hasTX()) {
setMode(MODE_DMR);
dmrBeaconTimer.start();
}
}
unsigned int ms = stopWatch.elapsed();
stopWatch.start();
@@ -835,6 +834,15 @@ int CMMDVMHost::run()
}
}
m_dmrBeaconTimer.clock(ms);
if (m_dmrBeaconTimer.isRunning() && m_dmrBeaconTimer.hasExpired()) {
if (m_mode == MODE_IDLE && !m_modem->hasTX()) {
setMode(MODE_DMR);
m_dmrBeaconTimer.start();
dmrBeaconTimer.start();
}
}
dmrBeaconTimer.clock(ms);
if (dmrBeaconTimer.isRunning() && dmrBeaconTimer.hasExpired()) {
setMode(MODE_IDLE);