From 04fd9838b54b561e327aba0dc0702e01c9b98b06 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Tue, 21 Apr 2020 21:00:09 +0200 Subject: [PATCH] Fix state machine wrong kerchunk --- FM.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/FM.cpp b/FM.cpp index 37d73c1..b64e52e 100644 --- a/FM.cpp +++ b/FM.cpp @@ -191,23 +191,25 @@ void CFM::stateMachine(bool validSignal, uint8_t length) void CFM::listeningState(bool validSignal) { - if (m_kerchunkTimer.getTimeout() > 0U) { - DEBUG1("State to KERCHUNK"); - m_state = FS_KERCHUNK; - m_kerchunkTimer.start(); - } else { - DEBUG1("State to RELAYING"); - m_state = FS_RELAYING; - if (m_callsignAtStart) - sendCallsign(); + if(validSignal) { + if (m_kerchunkTimer.getTimeout() > 0U) { + DEBUG1("State to KERCHUNK"); + m_state = FS_KERCHUNK; + m_kerchunkTimer.start(); + } else { + DEBUG1("State to RELAYING"); + m_state = FS_RELAYING; + if (m_callsignAtStart) + sendCallsign(); + } + + beginRelaying(); + + m_callsignTimer.start(); + + DEBUG1("Change to STATE_FM"); + m_modemState = STATE_FM; } - - beginRelaying(); - - m_callsignTimer.start(); - - DEBUG1("Change to STATE_FM"); - m_modemState = STATE_FM; } void CFM::kerchunkState(bool validSignal)