Wait for lead up before enable longlong action (#7648)

This commit is contained in:
Jonathan Bennett
2025-08-16 06:10:44 -05:00
committed by GitHub
parent 8e552a9f0c
commit c64c196778
3 changed files with 10 additions and 5 deletions

View File

@@ -140,6 +140,10 @@ bool playNextLeadUpNote()
playTones(&note, 1); // Play single note using existing playTones function playTones(&note, 1); // Play single note using existing playTones function
leadUpNoteIndex++; leadUpNoteIndex++;
if (leadUpNoteIndex >= leadUpNotesCount) {
return false; // this was the final note
}
return true; // Note was played (playTones handles buzzer availability internally) return true; // Note was played (playTones handles buzzer availability internally)
} }

View File

@@ -140,8 +140,7 @@ int32_t ButtonThread::runOnce()
} }
// Progressive lead-up sound system // Progressive lead-up sound system
if (buttonCurrentlyPressed && (millis() - buttonPressStartTime) >= BUTTON_LEADUP_MS && if (buttonCurrentlyPressed && (millis() - buttonPressStartTime) >= BUTTON_LEADUP_MS) {
(millis() - buttonPressStartTime) < _longLongPressTime) {
// Start the progressive sequence if not already active // Start the progressive sequence if not already active
if (!leadUpSequenceActive) { if (!leadUpSequenceActive) {
@@ -153,13 +152,14 @@ int32_t ButtonThread::runOnce()
else if ((millis() - lastLeadUpNoteTime) >= 400) { // 400ms interval between notes else if ((millis() - lastLeadUpNoteTime) >= 400) { // 400ms interval between notes
if (playNextLeadUpNote()) { if (playNextLeadUpNote()) {
lastLeadUpNoteTime = millis(); lastLeadUpNoteTime = millis();
} else {
leadUpPlayed = true;
} }
} }
} }
// Reset when button is released // Reset when button is released
if (!buttonCurrentlyPressed && buttonWasPressed) { if (!buttonCurrentlyPressed && buttonWasPressed) {
leadUpPlayed = false;
leadUpSequenceActive = false; leadUpSequenceActive = false;
resetLeadUpSequence(); resetLeadUpSequence();
} }
@@ -256,12 +256,13 @@ int32_t ButtonThread::runOnce()
LOG_INFO("LONG PRESS RELEASE AFTER %u MILLIS", millis() - buttonPressStartTime); LOG_INFO("LONG PRESS RELEASE AFTER %u MILLIS", millis() - buttonPressStartTime);
if (millis() > 30000 && _longLongPress != INPUT_BROKER_NONE && if (millis() > 30000 && _longLongPress != INPUT_BROKER_NONE &&
(millis() - buttonPressStartTime) >= _longLongPressTime) { (millis() - buttonPressStartTime) >= _longLongPressTime && leadUpPlayed) {
evt.inputEvent = _longLongPress; evt.inputEvent = _longLongPress;
this->notifyObservers(&evt); this->notifyObservers(&evt);
} }
// Reset combination tracking // Reset combination tracking
waitingForLongPress = false; waitingForLongPress = false;
leadUpPlayed = false;
break; break;
} }

View File

@@ -92,7 +92,7 @@ class ButtonThread : public Observable<const InputEvent *>, public concurrency::
voidFuncPtr _intRoutine = nullptr; voidFuncPtr _intRoutine = nullptr;
uint16_t _longPressTime = 500; uint16_t _longPressTime = 500;
uint16_t _longLongPressTime = 5000; uint16_t _longLongPressTime = 3900;
int _pinNum = 0; int _pinNum = 0;
bool _activeLow = true; bool _activeLow = true;
bool _touchQuirk = false; bool _touchQuirk = false;