1,35 → 1,33 |
#ifndef CONTROLLERS_H |
#define CONTROLLERS_H |
|
#define CONTROLLER_READ 0xA |
#define CONTROLLER_WRITE 0xB |
#define CONTROLLER_CMD_READ 0xA |
#define CONTROLLER_CMD_WRITE 0xB |
#define CONTROLLER_CMD_RESET 0xC |
|
#define CONTROLLER_BTN_DEFAULT 0xC0 |
#define CONTROLLER_LED_DEFAULT 0x00 |
|
#define CONTROLLER_1_ADDRESS 0x24 |
#define CONTROLLER_2_ADDRESS 0x25 |
#define CONTROLLER_PREFIX_ADDRESS 0xA0 |
#define CONTROLLER_START_ADDRESS 0x01 |
#define CONTROLLER_END_ADDRESS 0x08 |
|
#define CONTROLLER_MAX_COUNT 8 |
|
typedef struct { |
void (*btn_change_callback)(uint8_t ctrl_1, uint8_t ctrl_2); |
uint8_t connected_controllers[CONTROLLER_MAX_COUNT]; |
uint8_t led_status[CONTROLLER_MAX_COUNT][2]; |
uint8_t btn_prev[CONTROLLER_MAX_COUNT]; |
uint8_t btn_last[CONTROLLER_MAX_COUNT]; |
|
uint8_t ctrl_1_connected; |
uint8_t ctrl_1_buttons_prev; |
uint8_t ctrl_1_leds; |
uint8_t ctrl_1_active; |
|
uint8_t ctrl_2_connected; |
uint8_t ctrl_2_buttons_prev; |
uint8_t ctrl_2_leds; |
uint8_t ctrl_2_active; |
uint8_t connected_count; |
} CONTROLLER_DATA; |
|
void Controller_Init(CONTROLLER_DATA *data, |
void (*btn_change_callback)(uint8_t, uint8_t)); |
void Controller_Init(CONTROLLER_DATA *data); |
void Controller_Poll_Connected(void); |
void Controller_Update(void); |
void Controller_Set_Leds(uint8_t ctrl_1, uint8_t ctrl_2); |
void Controller_Btn_Change(void (*callback)(uint8_t, uint8_t)); |
uint8_t Controller_Query(void); |
void Controller_Set_Leds(uint8_t controller, uint16_t value); |
uint8_t Controller_Query(uint8_t controller); |
|
#endif /* CONTROLLERS_H */ |
|