diff --git a/movement/movement.c b/movement/movement.c index cfe914ab..87110da4 100644 --- a/movement/movement.c +++ b/movement/movement.c @@ -490,6 +490,7 @@ static void _sleep_mode_app_loop(void) { // we also have to handle background tasks here in the mini-runloop if (movement_state.needs_background_tasks_handled) _movement_handle_background_tasks(); + movement_state.ignore_alarm_after_sleep = true; event.event_type = EVENT_LOW_ENERGY_UPDATE; watch_faces[movement_state.current_face_idx].loop(event, &movement_state.settings, watch_face_contexts[movement_state.current_face_idx]); @@ -675,9 +676,15 @@ void cb_mode_btn_interrupt(void) { void cb_alarm_btn_interrupt(void) { bool pin_level = watch_get_pin_level(BTN_ALARM); _movement_reset_inactivity_countdown(); - event.event_type = _figure_out_button_event(pin_level, EVENT_ALARM_BUTTON_DOWN, &movement_state.alarm_down_timestamp); + uint8_t event_type = _figure_out_button_event(pin_level, EVENT_ALARM_BUTTON_DOWN, &movement_state.alarm_down_timestamp); + if (movement_state.ignore_alarm_after_sleep){ + if (event_type == EVENT_ALARM_BUTTON_UP) movement_state.ignore_alarm_after_sleep = false; + return; + } + event.event_type = event_type; } + void cb_alarm_btn_extwake(void) { // wake up! _movement_reset_inactivity_countdown(); diff --git a/movement/movement.h b/movement/movement.h index 56dfc7dc..1af89753 100644 --- a/movement/movement.h +++ b/movement/movement.h @@ -271,6 +271,7 @@ typedef struct { // low energy mode countdown int32_t le_mode_ticks; + bool ignore_alarm_after_sleep; // app resignation countdown (TODO: consolidate with LE countdown?) int16_t timeout_ticks;