Send the CW Id after a DMR transmission.

This commit is contained in:
Jonathan Naylor
2016-05-12 18:04:50 +01:00
parent 55010aaaf6
commit d09b2fa30b

View File

@@ -306,6 +306,8 @@ int CMMDVMHost::run()
setMode(MODE_IDLE); setMode(MODE_IDLE);
LogMessage("MMDVMHost is running");
while (!m_killed) { while (!m_killed) {
bool lockout = m_modem->hasLockout(); bool lockout = m_modem->hasLockout();
if (lockout && m_mode != MODE_LOCKOUT) if (lockout && m_mode != MODE_LOCKOUT)
@@ -498,7 +500,7 @@ int CMMDVMHost::run()
if (m_dmrNetwork != NULL) { if (m_dmrNetwork != NULL) {
bool run = m_dmrNetwork->wantsBeacon(); bool run = m_dmrNetwork->wantsBeacon();
if (dmrBeaconsEnabled && run && m_mode == MODE_IDLE) { if (dmrBeaconsEnabled && run && m_mode == MODE_IDLE && !m_modem->hasTX()) {
setMode(MODE_DMR); setMode(MODE_DMR);
dmrBeaconTimer.start(); dmrBeaconTimer.start();
} }
@@ -526,6 +528,7 @@ int CMMDVMHost::run()
m_cwIdTimer.clock(ms); m_cwIdTimer.clock(ms);
if (m_cwIdTimer.isRunning() && m_cwIdTimer.hasExpired()) { if (m_cwIdTimer.isRunning() && m_cwIdTimer.hasExpired()) {
if (m_mode == MODE_IDLE && !m_modem->hasTX())
m_modem->sendCWId(m_callsign); m_modem->sendCWId(m_callsign);
m_cwIdTimer.start(); m_cwIdTimer.start();
} }
@@ -798,7 +801,6 @@ void CMMDVMHost::setMode(unsigned char mode)
m_modem->setMode(MODE_DSTAR); m_modem->setMode(MODE_DSTAR);
m_mode = MODE_DSTAR; m_mode = MODE_DSTAR;
m_modeTimer.start(); m_modeTimer.start();
m_cwIdTimer.stop();
break; break;
case MODE_DMR: case MODE_DMR:
@@ -811,7 +813,6 @@ void CMMDVMHost::setMode(unsigned char mode)
} }
m_mode = MODE_DMR; m_mode = MODE_DMR;
m_modeTimer.start(); m_modeTimer.start();
m_cwIdTimer.stop();
break; break;
case MODE_YSF: case MODE_YSF:
@@ -822,7 +823,6 @@ void CMMDVMHost::setMode(unsigned char mode)
m_modem->setMode(MODE_YSF); m_modem->setMode(MODE_YSF);
m_mode = MODE_YSF; m_mode = MODE_YSF;
m_modeTimer.start(); m_modeTimer.start();
m_cwIdTimer.stop();
break; break;
case MODE_LOCKOUT: case MODE_LOCKOUT:
@@ -868,10 +868,13 @@ void CMMDVMHost::setMode(unsigned char mode)
m_dmrTXTimer.stop(); m_dmrTXTimer.stop();
} }
m_modem->setMode(MODE_IDLE); m_modem->setMode(MODE_IDLE);
if (m_mode == MODE_ERROR || m_mode == MODE_LOCKOUT || m_mode == MODE_DMR) {
m_modem->sendCWId(m_callsign);
m_cwIdTimer.start();
}
m_display->setIdle(); m_display->setIdle();
m_mode = MODE_IDLE; m_mode = MODE_IDLE;
m_modeTimer.stop(); m_modeTimer.stop();
m_cwIdTimer.start();
break; break;
} }
} }