]> git.earman.xyz Git - sensor-watch.git/commitdiff
Tapping turned off when not being used since tap control uses 90uA
authorDavid Volovskiy <devolov@gmail.com>
Mon, 8 Sep 2025 23:44:14 +0000 (19:44 -0400)
committerDavid Volovskiy <devolov@gmail.com>
Mon, 8 Sep 2025 23:44:14 +0000 (19:44 -0400)
watch-faces/complication/blackjack_face.c

index 7b538e6b29ce5f569a59c4fc879e343616f086db..ff4d73a44fa35eca0f4830030b71c00009d27556 100755 (executable)
@@ -67,6 +67,7 @@ typedef enum {
     A, B, C, D, E, F, G\r
 } segment_t;\r
 \r
+static bool tap_turned_on = false;\r
 static game_state_t game_state;\r
 static uint8_t deck[DECK_SIZE] = {0};\r
 static uint8_t current_card = 0;\r
@@ -354,6 +355,9 @@ static void handle_button_presses(bool tap_control_on, bool hit) {
     switch (game_state)\r
     {\r
     case BJ_TITLE_SCREEN:\r
+        if (!tap_turned_on && tap_control_on) {\r
+            if (movement_enable_tap_detection_if_available()) tap_turned_on = true;\r
+        }\r
         begin_playing(tap_control_on);\r
         break;\r
     case BJ_PLAYING:\r
@@ -415,14 +419,7 @@ bool blackjack_face_loop(movement_event_t event, void *context) {
     }\r
     switch (event.event_type) {\r
         case EVENT_ACTIVATE:\r
-            if (state->tap_control_on) {\r
-                bool tap_could_enable = movement_enable_tap_detection_if_available();\r
-                if (tap_could_enable) {\r
-                    watch_set_indicator(WATCH_INDICATOR_SIGNAL);\r
-                } else {\r
-                    state->tap_control_on = false;\r
-                }\r
-            }\r
+            if (state->tap_control_on) watch_set_indicator(WATCH_INDICATOR_SIGNAL);\r
             break;\r
         case EVENT_TICK:\r
             if (game_state == BJ_DEALER_PLAYING) {\r
@@ -454,6 +451,10 @@ bool blackjack_face_loop(movement_event_t event, void *context) {
             }\r
             break;\r
         case EVENT_TIMEOUT:\r
+        case EVENT_LOW_ENERGY_UPDATE:\r
+            if (tap_turned_on) {\r
+                movement_disable_tap_detection_if_available();\r
+            }\r
             break;\r
         default:\r
             return movement_default_loop_handler(event);\r
@@ -463,4 +464,8 @@ bool blackjack_face_loop(movement_event_t event, void *context) {
 \r
 void blackjack_face_resign(void *context) {\r
     (void) context;\r
+    if (tap_turned_on) {\r
+        tap_turned_on = false;\r
+        movement_disable_tap_detection_if_available();\r
+    }\r
 }\r