38 lines
		
	
	
	
		
			984 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			984 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #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();
 | |
| }
 | 
