]> git.earman.xyz Git - sensor-watch.git/commitdiff
Leaving sleep with alarm button up doesn't trigger alarm button
authorDavid Volovskiy <devolov@gmail.com>
Mon, 29 Jul 2024 11:44:31 +0000 (07:44 -0400)
committerDavid Volovskiy <devolov@gmail.com>
Mon, 29 Jul 2024 11:44:31 +0000 (07:44 -0400)
movement/movement.c
movement/movement.h

index cfe914abd85ddcb33b10c779e7e1763922b3336b..87110da42ccc9aa24063000af8047571d22f1dfd 100644 (file)
@@ -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();
index 56dfc7dce9b403bafe2c424e8971aabcce1927a4..1af8975378a3a440f35f3bdaabf0264d22ad6668 100644 (file)
@@ -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;