From d65c37ca280de190ab3a9dc48d39cf27ed7d70a0 Mon Sep 17 00:00:00 2001 From: Selene ToyKeeper Date: Sun, 12 Jul 2020 23:36:00 -0600 Subject: fixed bug: button release events were sending 0 as the arg instead of the number of ticks the button was held (bug had no effect in any current UIs, but I needed it fixed for a feature I want to add) --- spaghetti-monster/fsm-pcint.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'spaghetti-monster/fsm-pcint.c') diff --git a/spaghetti-monster/fsm-pcint.c b/spaghetti-monster/fsm-pcint.c index d362633..eacc699 100644 --- a/spaghetti-monster/fsm-pcint.c +++ b/spaghetti-monster/fsm-pcint.c @@ -93,18 +93,17 @@ ISR(PCINT0_vect) { // should only be called from PCINT and/or WDT // (is a separate function to reduce code duplication) void PCINT_inner(uint8_t pressed) { - uint8_t pushed; + button_last_state = pressed; - if (pressed) { - pushed = push_event(B_PRESS); - } else { - pushed = push_event(B_RELEASE); - } - - // send event to the current state callback - if (pushed) { - button_last_state = pressed; + // register the change, and send event to the current state callback + if (pressed) { // user pressed button + push_event(B_PRESS); emit_current_event(0); + } else { // user released button + // how long was the button held? + uint16_t ticks_since_last = ticks_since_last_event; + push_event(B_RELEASE); + emit_current_event(ticks_since_last); } } #endif -- cgit v1.2.3