extern unsigned char led1_counter;
+static void inline long_press(unsigned char n)
+{
+ led_set_status(2);
+}
+
+static void inline short_press(unsigned char n)
+{
+ led_set_status(1);
+}
+
void timer_check_buttons()
{
unsigned char pinb = PINB;
};
for (i = 0; i < N_BUTTONS; i++) {
if (!port_states[i]) { // is pressed
- if (button_pressed[i]) { // been already pressed
- // TODO long button press
- /*
- uint16_t duration = jiffies - button_start[i];
- if (duration > 10 && duration < 40) {
- gpio_set(GPIO_LED2, 1);
- }
- */
- } else { // begin of button press
+ if (button_pressed[i] == 0) {
+ // begin of button press
button_pressed[i] = 1;
button_start[i] = jiffies;
+#if 0
// log_byte(0xC0);
// log_word(jiffies);
+#endif
+ } else if (button_pressed[i] == 1) {
+ // been already pressed
+ uint16_t duration = jiffies - button_start[i];
+ if (duration > 80) {
+ // long button press
+ button_pressed[i] = 2;
+ long_press(i);
+ }
}
} else { // is not pressed
if (button_pressed[i]) { // just depressed
uint16_t duration = jiffies - button_start[i];
+#if 1
log_byte(0xC1);
log_word(duration);
log_flush();
- // led_set_number_pattern(N_PWMLEDS, 1 + (duration >> 3));
+#endif
button_pressed[i] = 0;
+ if (duration > 6 && duration < 30)
+ short_press(i);
}
}
-
- break; // FIXME - delete this when btn1 is ready
}
}