__interrupt #endif void touch_button_isr(void) { manage_button_isr(QT1081_TOUCH_SENSOR_UP, JOYSTICK_STATUS_UP, JOYSTICK_STATUS_RELEASED_UP); manage_button_isr(QT1081_TOUCH_SENSOR_DOWN, JOYSTICK_STATUS_DOWN, JOYSTICK_STATUS_RELEASED_DOWN); manage_button_isr(QT1081_TOUCH_SENSOR_RIGHT, JOYSTICK_STATUS_RIGHT, JOYSTICK_STATUS_RELEASED_RIGHT); manage_button_isr(QT1081_TOUCH_SENSOR_LEFT, JOYSTICK_STATUS_LEFT, JOYSTICK_STATUS_RELEASED_LEFT); manage_button_isr(QT1081_TOUCH_SENSOR_ENTER, JOYSTICK_STATUS_PRESSED, JOYSTICK_STATUS_RELEASED_PRESSED); // Handle left slide if (IS_JOYSTICK_RELEASED_KEY_PRESSED() && IS_JOYSTICK_KEY_LEFT()) { CLEAR_JOYSTICK_RELEASED_KEY_PRESSED(); CLEAR_JOYSTICK_KEY_LEFT(); joystick_status |= JOYSTICK_STATUS_SLIDING_LEFT; } if (IS_JOYSTICK_KEY_SLIDING_LEFT() && IS_JOYSTICK_RELEASED_KEY_LEFT()) { CLEAR_JOYSTICK_KEY_SLIDING_LEFT(); CLEAR_JOYSTICK_RELEASED_KEY_LEFT(); joystick_status |= JOYSTICK_STATUS_SLIDE_LEFT; } // Handle right slide if (IS_JOYSTICK_RELEASED_KEY_PRESSED() && IS_JOYSTICK_KEY_RIGHT()) { CLEAR_JOYSTICK_RELEASED_KEY_PRESSED(); CLEAR_JOYSTICK_KEY_RIGHT(); joystick_status |= JOYSTICK_STATUS_SLIDING_RIGHT; } if (IS_JOYSTICK_KEY_SLIDING_RIGHT() && IS_JOYSTICK_RELEASED_KEY_RIGHT()) { CLEAR_JOYSTICK_KEY_SLIDING_RIGHT(); CLEAR_JOYSTICK_RELEASED_KEY_RIGHT(); joystick_status |= JOYSTICK_STATUS_SLIDE_RIGHT; } if (fast_mode && cpu_is_timeout(&joystick_key_sensibility_timer)) { CLEAR_JOYSTICK_RELEASED_KEY_RIGHT(); CLEAR_JOYSTICK_RELEASED_KEY_LEFT(); } if (!IS_JOYSTICK_KEY_LEFT() && !IS_JOYSTICK_KEY_RIGHT()) fast_mode = false; gpio_tgl_gpio_pin(LED0_GPIO); }
bool controller_navigation_go_to_parent_directory(void) { bool status; if (IS_JOYSTICK_KEY_PRESSED()) return false; status = is_joystick_released_left(); CLEAR_JOYSTICK_RELEASED_KEY_LEFT(); return status; }
static bool is_joystick_released_left(void) { if (IS_JOYSTICK_ONLY_RELEASED_KEY_LEFT() && cpu_is_timeout(&joystick_key_sensibility_timer)) { CLEAR_JOYSTICK_RELEASED_KEY_LEFT(); cpu_set_timeout(cpu_ms_2_cy(JOYSTICK_KEY_DEBOUNCE_MS, static_fcpu_hz), &joystick_key_sensibility_timer); return true; } return false; }
bool controller_playback_previous_track(void) { bool status = false; if (IS_JOYSTICK_KEY_PRESSED() || (fast_mode && cpu_is_timeout(&joystick_key_sensibility_timer))) return false; if (IS_JOYSTICK_RELEASED_KEY_LEFT()) status = true; CLEAR_JOYSTICK_RELEASED_KEY_LEFT(); return status; }