From 6cb7e38be27435121bd6574c7c5ee4ba12913143 Mon Sep 17 00:00:00 2001 From: Joey Castillo Date: Tue, 3 Aug 2021 11:53:57 -0400 Subject: [PATCH] actually debounce button presses --- Sensor Watch Starter Project/app.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Sensor Watch Starter Project/app.c b/Sensor Watch Starter Project/app.c index 30c1b8ea..84cba19e 100644 --- a/Sensor Watch Starter Project/app.c +++ b/Sensor Watch Starter Project/app.c @@ -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; }