__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); }
static bool is_joystick_right(void) { if (IS_JOYSTICK_KEY_RIGHT() && cpu_is_timeout(&joystick_key_sensibility_timer)) { cpu_set_timeout(cpu_ms_2_cy(JOYSTICK_KEY_DEBOUNCE_MS, static_fcpu_hz), &joystick_key_sensibility_timer); return true; } return false; }
bool controller_key_pressed(void) { if (IS_JOYSTICK_KEY_UP() || IS_JOYSTICK_KEY_DOWN() || IS_JOYSTICK_KEY_RIGHT() || IS_JOYSTICK_KEY_LEFT() || IS_JOYSTICK_KEY_PRESSED()) return true; return false; }
bool controller_playback_ffw(bool new_track) { if (IS_JOYSTICK_KEY_RIGHT()) { if (new_track) cpu_set_timeout(cpu_ms_2_cy(2000, static_fcpu_hz), &joystick_key_sensibility_timer); if (!fast_mode) { cpu_set_timeout(cpu_ms_2_cy(1000, static_fcpu_hz), &joystick_key_sensibility_timer); fast_mode = true; } else if (cpu_is_timeout(&joystick_key_sensibility_timer)) return true; return false; } return false; }