]> www.fi.muni.cz Git - bike-lights.git/blobdiff - firmware/buttons.c
buttons.c: param setup fixes
[bike-lights.git] / firmware / buttons.c
index 2419e89e86dd83b2d1091094193e52dc797f0f78..679d958cbec7e1585ae0e661a0140a740d0f3370 100644 (file)
@@ -40,7 +40,7 @@ pattern_t *status_pattern_select(unsigned char n)
                // error led
                return number_pattern(1 + ambient_zone);
        } else {
-               return off_pattern; // for now
+               return jiffies > 500 ? number_pattern(2) : zero_pattern; // for now
        }
 }
 
@@ -79,7 +79,7 @@ static inline void short_press(unsigned char button)
                if (user_params[param])
                        user_params[param]--;
                else
-                       user_params[param] = user_params_max[param];
+                       user_params[param] = user_params_max[param]-1;
        } else {
                user_params[param]++;
 
@@ -103,7 +103,7 @@ static inline void long_press(unsigned char button)
        // button 1 - cycle through states
        user_params_state++;
 
-       if (user_params_state >= MAX_USER_PARAMS)
+       if (user_params_state > MAX_USER_PARAMS)
                user_params_state = 1;
 
        set_status_led(0, status_pattern_select(0));
@@ -119,6 +119,7 @@ void init_buttons()
        button_start[0] = 0;
        button_start[1] = 0;
        prev_pin = _BV(PA3) | _BV(PA4);
+       user_params_state = 0;
 }
 
 static void handle_button(unsigned char button, unsigned char cur,
@@ -158,7 +159,7 @@ void timer_check_buttons()
 
        prev_pin = pin;
 
-       if (jiffies - user_params_starttime > 500) {
+       if (user_params_state && jiffies - user_params_starttime > 1000) {
                user_params_state = 0;
                set_status_led(0, status_pattern_select(0));
                set_status_led(1, status_pattern_select(1));