diff options
Diffstat (limited to 'sw/picardy/src/main.rs')
-rw-r--r-- | sw/picardy/src/main.rs | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/sw/picardy/src/main.rs b/sw/picardy/src/main.rs index b6bf098..2e7d9a1 100644 --- a/sw/picardy/src/main.rs +++ b/sw/picardy/src/main.rs @@ -365,25 +365,31 @@ fn TIM2() { let cw_paddle_tip_low = shared.cw_paddle_tip.is_low().unwrap(); let cw_paddle_ring_low = shared.cw_paddle_ring.is_low().unwrap(); + if cw_paddle_tip_low || cw_paddle_ring_low { + shared.state.send_tone = false; + } + let cw_ptt_delay : u32 = TICKS_PER_SECOND * 800 / 1000; - let cw_ptt = match shared.state.mode { - Mode::CW(_) => { - if cw_paddle_tip_low || cw_paddle_ring_low { - shared.cw_ptt_timestamp = *ticks; - true - } - else { - shared.cw_ptt_timestamp + cw_ptt_delay > *ticks - } - }, - _ => false, - }; + let cw_ptt = shared.state.send_tone || + match shared.state.mode { + Mode::CW(_) => { + if cw_paddle_tip_low || cw_paddle_ring_low { + shared.cw_ptt_timestamp = *ticks; + true + } + else { + shared.cw_ptt_timestamp + cw_ptt_delay > *ticks + } + }, + _ => false, + }; - let cw_beep = match shared.state.mode { - Mode::CW(CWMode::StraightKey) => cw_paddle_tip_low, - Mode::CW(CWMode::Iambic) => shared.cw_keyer.tick(*ticks, cw_paddle_tip_low, cw_paddle_ring_low), - _ => false, - }; + let cw_beep = shared.state.send_tone || + match shared.state.mode { + Mode::CW(CWMode::StraightKey) => cw_paddle_tip_low, + Mode::CW(CWMode::Iambic) => shared.cw_keyer.tick(*ticks, cw_paddle_tip_low, cw_paddle_ring_low), + _ => false, + }; let next_state = match shared.state.sequence_state { SequenceState::Rx => { |