123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- #pragma once
- #include <hal_usb_cdc.h>
- #if HAL_USE_USB == FALSE
- # error "The USB Driver requires HAL_USE_USB"
- #endif
- typedef enum {
- QMKUSB_UNINIT = 0,
- QMKUSB_STOP = 1,
- QMKUSB_READY = 2
- } qmkusbstate_t;
- typedef struct QMKUSBDriver QMKUSBDriver;
- typedef struct {
-
- USBDriver *usbp;
-
- usbep_t bulk_in;
-
- usbep_t bulk_out;
-
- usbep_t int_in;
-
- size_t in_buffers;
- size_t out_buffers;
-
- size_t in_size;
- size_t out_size;
-
- bool fixed_size;
-
- uint8_t *ib;
-
- uint8_t *ob;
- } QMKUSBConfig;
- #define _qmk_usb_driver_data \
- _base_asynchronous_channel_data \
- qmkusbstate_t state; \
- \
- input_buffers_queue_t ibqueue; \
- \
- output_buffers_queue_t obqueue; \
- \
- \
- const QMKUSBConfig *config;
- #define _qmk_usb_driver_methods _base_asynchronous_channel_methods
- struct QMKUSBDriverVMT {
- _qmk_usb_driver_methods
- };
- struct QMKUSBDriver {
-
- const struct QMKUSBDriverVMT *vmt;
- _qmk_usb_driver_data
- };
- #ifdef __cplusplus
- extern "C" {
- #endif
- void qmkusbInit(void);
- void qmkusbObjectInit(QMKUSBDriver *qmkusbp, const QMKUSBConfig *config);
- void qmkusbStart(QMKUSBDriver *qmkusbp, const QMKUSBConfig *config);
- void qmkusbStop(QMKUSBDriver *qmkusbp);
- void qmkusbSuspendHookI(QMKUSBDriver *qmkusbp);
- void qmkusbWakeupHookI(QMKUSBDriver *qmkusbp);
- void qmkusbConfigureHookI(QMKUSBDriver *qmkusbp);
- bool qmkusbRequestsHook(USBDriver *usbp);
- void qmkusbSOFHookI(QMKUSBDriver *qmkusbp);
- void qmkusbDataTransmitted(USBDriver *usbp, usbep_t ep);
- void qmkusbDataReceived(USBDriver *usbp, usbep_t ep);
- void qmkusbInterruptTransmitted(USBDriver *usbp, usbep_t ep);
- #ifdef __cplusplus
- }
- #endif
|