]> git.earman.xyz Git - sensor-watch.git/commitdiff
actually debounce button presses
authorJoey Castillo <jose.castillo@gmail.com>
Tue, 3 Aug 2021 15:53:57 +0000 (11:53 -0400)
committerJoey Castillo <jose.castillo@gmail.com>
Tue, 3 Aug 2021 15:53:57 +0000 (11:53 -0400)
Sensor Watch Starter Project/app.c

index 30c1b8ea51d6ab5413cfe3e967ec2e95dc2487d0..84cba19e3001636a45d8bc1ae8603e8fc5b7d21b 100644 (file)
@@ -22,6 +22,7 @@ typedef struct ApplicationState {
     ApplicationMode mode;
     LightColor color;
     uint8_t wake_count;
+    bool debounce_wait;
 } ApplicationState;
 
 ApplicationState applicationState;
@@ -90,6 +91,7 @@ void app_setup() {
  * a press on one of the buttons).
  */
 void app_prepare_for_sleep() {
+    applicationState.debounce_wait = false;
 }
 
 /**
@@ -107,6 +109,9 @@ void app_wake_from_sleep() {
 bool app_loop() {
     // set the LED to a color
     switch (applicationState.color) {
+        case COLOR_OFF:
+            watch_set_led_off();
+            break;
         case COLOR_RED:
             watch_set_led_red();
             break;
@@ -116,9 +121,6 @@ bool app_loop() {
         case COLOR_YELLOW:
             watch_set_led_yellow();
             break;
-        default:
-            applicationState.color = COLOR_OFF;
-            watch_set_led_off();
     }
 
     // Display the number of times we've woken up (modulo 32 to fit in 2 digits at top right)
@@ -147,10 +149,14 @@ bool app_loop() {
 // Implementations for our callback functions. Replace these with whatever functionality
 // your app requires.
 void cb_light_pressed() {
+    if (applicationState.debounce_wait) return;
+    applicationState.debounce_wait = true;
     applicationState.color = (applicationState.color + 1) % 4;
 }
 
 void cb_mode_pressed() {
+    if (applicationState.debounce_wait) return;
+    applicationState.debounce_wait = true;
     applicationState.mode = (applicationState.mode + 1) % 2;
 }