]> www.fi.muni.cz Git - bike-lights.git/blobdiff - firmware/buttons.c
Watchdog-based timing
[bike-lights.git] / firmware / buttons.c
index 017a56c6560632fa2a1afe5280fdb966dab05a1f..80ecce603c65503ad940ad05b6edab7b98bb099e 100644 (file)
@@ -7,6 +7,10 @@
 #include "lights.h"
 
 #define WAKEUP_LIMIT   5       // times 100 ms
+#define SHORT_PRESS_MIN 2       // in jiffies (16 Hz ticks)
+#define SHORT_PRESS_MAX 5
+#define LONG_PRESS_MIN  10
+
 static uint16_t button_start[3];
 union {
        unsigned char all;
@@ -166,16 +170,16 @@ static void handle_button(unsigned char button, unsigned char cur,
        } else if (cur && prev) {           // --- is still pressed ---
                uint16_t duration = jiffies - button_start[button];
 
-               if (duration > 160) {
+               if (duration >= LONG_PRESS_MIN) {
                        set_status_led(button, on1_pattern);
                                // acknowledge long press
                }
        } else if (!cur && prev) {            // --- just released ---
                uint16_t duration = jiffies - button_start[button];
 
-               if (duration > 6 && duration < 60) {
+               if (duration >= SHORT_PRESS_MIN && duration < SHORT_PRESS_MAX) {
                        short_press(button);
-               } else if (duration > 160) {
+               } else if (duration > LONG_PRESS_MIN) {
                        set_status_led(button, NULL);
                        long_press(button);
                }