From ff375abb0eb11cde7e56ac01ddb4b1957bc5de19 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 14 May 2020 12:10:37 +0100 Subject: [PATCH] Hold off the mode change until the ack and callsign have been transmitted. --- FM.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/FM.cpp b/FM.cpp index 3bc0bbf..565e6eb 100644 --- a/FM.cpp +++ b/FM.cpp @@ -235,14 +235,16 @@ void CFM::stateMachine(bool validSignal) } if (m_state == FS_LISTENING && m_modemState == STATE_FM) { - DEBUG1("Change to STATE_IDLE"); - m_modemState = STATE_IDLE; - m_callsignTimer.stop(); - m_timeoutTimer.stop(); - m_kerchunkTimer.stop(); - m_ackMinTimer.stop(); - m_ackDelayTimer.stop(); - m_hangTimer.stop(); + if (!m_callsign.isRunning() && !m_rfAck.isRunning()) { + DEBUG1("Change to STATE_IDLE"); + m_modemState = STATE_IDLE; + m_callsignTimer.stop(); + m_timeoutTimer.stop(); + m_kerchunkTimer.stop(); + m_ackMinTimer.stop(); + m_ackDelayTimer.stop(); + m_hangTimer.stop(); + } } }