- #include "joystick.h"
-
- // clang-format off
- joystick_t joystick_status = {
- .buttons = {0},
- .axes = {
- #if JOYSTICK_AXES_COUNT > 0
- 0
- #endif
- },
- .status = 0
- };
- // clang-format on
-
- // array defining the reading of analog values for each axis
- __attribute__((weak)) joystick_config_t joystick_axes[JOYSTICK_AXES_COUNT] = {};
-
- // to be implemented in the hid protocol library
- void send_joystick_packet(joystick_t *joystick);
-
- void joystick_flush(void) {
- if ((joystick_status.status & JS_UPDATED) > 0) {
- send_joystick_packet(&joystick_status);
- joystick_status.status &= ~JS_UPDATED;
- }
- }
-
- void register_joystick_button(uint8_t button) {
- joystick_status.buttons[button / 8] |= 1 << (button % 8);
- joystick_status.status |= JS_UPDATED;
- joystick_flush();
- }
-
- void unregister_joystick_button(uint8_t button) {
- joystick_status.buttons[button / 8] &= ~(1 << (button % 8));
- joystick_status.status |= JS_UPDATED;
- joystick_flush();
- }
|