blob: 5c2b172a6830a81ae56e75cd492931868d790c68 [file] [log] [blame]
#include <array>
#include "input.hpp"
#include "engine/api_private.hpp"
extern const InputDriver gpio_input_driver;
extern const InputDriver tca9555_driver;
extern const InputDriver usb_hid_driver;
static const InputDriver *input_drivers[] {
#ifdef BLIT_INPUT_GPIO
&gpio_input_driver,
#endif
#ifdef BLIT_INPUT_TCA9555
&tca9555_driver,
#endif
#ifdef BLIT_INPUT_USB_HID
&usb_hid_driver,
#endif
};
static constexpr unsigned num_input_drivers = sizeof(input_drivers) / sizeof(input_drivers[0]);
void init_input() {
for(unsigned i = 0; i < num_input_drivers; i++)
input_drivers[i]->init();
}
void update_input() {
uint32_t new_buttons = 0;
blit::Vec2 new_joystick;
for(unsigned i = 0; i < num_input_drivers; i++)
input_drivers[i]->update(new_buttons, new_joystick);
blit::api_data.buttons = new_buttons;
blit::api_data.joystick = new_joystick;
}