diff options
Diffstat (limited to 'src/peripheral/inc')
| -rw-r--r-- | src/peripheral/inc/peripheral.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/peripheral/inc/peripheral.h b/src/peripheral/inc/peripheral.h new file mode 100644 index 0000000..c405c3c --- /dev/null +++ b/src/peripheral/inc/peripheral.h @@ -0,0 +1,64 @@ +#ifndef PERIPHERAL_H +#define PERIPHERAL_H + +#include <pad.h> +#include <keyboard.h> +#include <mouse.h> +#include <util.h> +#include <stddef.h> +#include <stdbool.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +enum peripheral_type +{ + PERIPHERAL_TYPE_PAD, + PERIPHERAL_TYPE_TOUCH, + PERIPHERAL_TYPE_KEYBOARD_MOUSE +}; + +union peripheral +{ + struct peripheral_common + { + enum peripheral_type type; + } common; + + struct peripheral_pad + { + struct peripheral_common common; + struct pad pad; + } pad; + + struct peripheral_kbm + { + struct peripheral_common common; + struct mouse mouse; + struct keyboard keyboard; + bool long_press; + unsigned int lp_t; + } kbm; +}; + +struct peripheral_cfg +{ + enum peripheral_type type; + int padn; +}; + +UTIL_STATIC_ASSERT(!offsetof(struct peripheral_pad, common), + "unexpected offsetof for struct peripheral_pad"); +UTIL_STATIC_ASSERT(!offsetof(struct peripheral_kbm, common), + "unexpected offsetof for struct peripheral_kbm"); + +void peripheral_init(const struct peripheral_cfg *cfg, union peripheral *p); +void peripheral_update(union peripheral *p); + +#ifdef __cplusplus +} +#endif + +#endif /* PERIPHERAL_H */ |
