Handle the case when the other paddle is pressed during the inter character space
This commit is contained in:
parent
aee58bf274
commit
026b1d0406
2 changed files with 33 additions and 5 deletions
|
@ -141,11 +141,37 @@ void Keyer::run()
|
||||||
m_pausing_until = make_timeout_time_us(m_elementDuration);
|
m_pausing_until = make_timeout_time_us(m_elementDuration);
|
||||||
m_currentlyPausing = true;
|
m_currentlyPausing = true;
|
||||||
}
|
}
|
||||||
|
// Handle the case when the other paddle is pressed during the inter character space
|
||||||
if (absolute_time_diff_us(timestamp, m_pausing_until) <= 0)
|
else if (absolute_time_diff_us(timestamp, m_pausing_until) > 0)
|
||||||
{
|
{
|
||||||
m_currentlyPausing = false;
|
if (left_paddle_pressed() && m_previousState == State::Dah && m_nextState == State::Wait)
|
||||||
state = State::Wait;
|
{
|
||||||
|
printf("--- Pause --- Next state is Dit!\n");
|
||||||
|
m_nextState = State::Dit;
|
||||||
|
|
||||||
|
m_keyNextIambicB = right_paddle_pressed() ? true : false;
|
||||||
|
}
|
||||||
|
else if (right_paddle_pressed() && m_previousState == State::Dit && m_nextState == State::Wait)
|
||||||
|
{
|
||||||
|
printf("--- Pause --- Next state is Dah!\n");
|
||||||
|
m_nextState = State::Dah;
|
||||||
|
|
||||||
|
m_keyNextIambicB = left_paddle_pressed() ? true : false;
|
||||||
|
}
|
||||||
|
else if (m_previousState == State::Wait)
|
||||||
|
{
|
||||||
|
m_nextState = State::Wait;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
if (absolute_time_diff_us(timestamp, m_pausing_until) <= 0)
|
||||||
|
{
|
||||||
|
m_currentlyPausing = false;
|
||||||
|
state = m_nextState;
|
||||||
|
m_nextState = State::Wait;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -156,6 +182,7 @@ void Keyer::run()
|
||||||
m_currentlyPausing = false;
|
m_currentlyPausing = false;
|
||||||
m_currentlyKeying = false;
|
m_currentlyKeying = false;
|
||||||
m_previousState = State::Abort;
|
m_previousState = State::Abort;
|
||||||
|
m_nextState = State::Wait;
|
||||||
state = State::Wait;
|
state = State::Wait;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -29,6 +29,7 @@ public:
|
||||||
private:
|
private:
|
||||||
State state{State::Wait};
|
State state{State::Wait};
|
||||||
State m_previousState{State::Wait};
|
State m_previousState{State::Wait};
|
||||||
|
State m_nextState{State::Wait};
|
||||||
uint8_t m_wpm{18};
|
uint8_t m_wpm{18};
|
||||||
Mode m_mode{Mode::IAMBIC_B};
|
Mode m_mode{Mode::IAMBIC_B};
|
||||||
uint64_t m_elementDuration{0};
|
uint64_t m_elementDuration{0};
|
||||||
|
|
Loading…
Reference in a new issue