mirror of
https://github.com/g4klx/MMDVMHost.git
synced 2026-04-04 14:07:36 +00:00
Add locally timed DMR roaming beacons.
This commit is contained in:
parent
22ed285857
commit
d3395278c6
5 changed files with 29 additions and 20 deletions
|
|
@ -144,6 +144,7 @@ m_dmrNetModeHang(3U),
|
|||
m_ysfNetModeHang(3U),
|
||||
m_p25NetModeHang(3U),
|
||||
m_modeTimer(1000U),
|
||||
m_dmrBeaconTimer(1000U),
|
||||
m_dmrTXTimer(1000U),
|
||||
m_cwIdTimer(1000U),
|
||||
m_duplex(false),
|
||||
|
|
@ -310,9 +311,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();
|
||||
|
||||
|
|
@ -381,6 +379,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;
|
||||
|
|
@ -414,6 +413,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);
|
||||
|
|
@ -461,6 +466,8 @@ int CMMDVMHost::run()
|
|||
p25 = new CP25Control(nac, id, selfOnly, uidOverride, m_p25Network, m_display, m_timeout, m_duplex, m_lookup, remoteGateway, rssi);
|
||||
}
|
||||
|
||||
CTimer dmrBeaconTimer(1000U, 4U);
|
||||
|
||||
setMode(MODE_IDLE);
|
||||
|
||||
LogMessage("MMDVMHost-%s is running", VERSION);
|
||||
|
|
@ -720,14 +727,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();
|
||||
|
||||
|
|
@ -766,6 +765,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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue