From 0d091aee6235ee307103cd62e01f1e610badbe6a Mon Sep 17 00:00:00 2001 From: Martin Brodbeck Date: Tue, 13 Feb 2024 10:46:11 +0100 Subject: [PATCH] Iambic B mode (hopefully) corrected. --- src/keyer.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/keyer.cpp b/src/keyer.cpp index 37e0996..72d5207 100644 --- a/src/keyer.cpp +++ b/src/keyer.cpp @@ -49,6 +49,8 @@ void Keyer::run() case State::Wait: if (left_paddle_pressed() && right_paddle_pressed()) { + m_keyNextIambicB = false; + if (m_previousState == State::Dit) { state = State::Dah; @@ -57,16 +59,29 @@ void Keyer::run() { state = State::Dit; } - break; } - if (left_paddle_pressed()) + else if (left_paddle_pressed()) { + m_keyNextIambicB = false; state = State::Dit; } else if (right_paddle_pressed()) { + m_keyNextIambicB = false; state = State::Dah; } + else + { + if (m_mode == Mode::IAMBIC_B && m_keyNextIambicB) + { + if (m_previousState == State::Dit) + state = State::Dah; + else + state = State::Dit; + + m_keyNextIambicB = false; + } + } break; case State::Dit: if (!m_currentlyKeying) @@ -124,18 +139,6 @@ void Keyer::run() if (absolute_time_diff_us(timestamp, m_pausing_until) <= 0) { m_currentlyPausing = false; - - if (m_mode == Mode::IAMBIC_B && m_keyNextIambicB) - { - if (m_previousState == State::Dit) - state = State::Dah; - else - state = State::Dit; - - m_keyNextIambicB = false; - break; - } - state = State::Wait; }