Add raw_hid support to host driver (#25255)

This commit is contained in:
Joel Challis 2025-05-11 23:38:48 +01:00 committed by GitHub
parent c045c3e00c
commit 88c094908b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 95 additions and 36 deletions

View file

@ -75,11 +75,24 @@
static report_keyboard_t keyboard_report_sent;
/* Host driver */
static void send_keyboard(report_keyboard_t *report);
static void send_nkro(report_nkro_t *report);
static void send_mouse(report_mouse_t *report);
static void send_extra(report_extra_t *report);
host_driver_t lufa_driver = {.keyboard_leds = usb_device_state_get_leds, .send_keyboard = send_keyboard, .send_nkro = send_nkro, .send_mouse = send_mouse, .send_extra = send_extra};
static void send_keyboard(report_keyboard_t *report);
static void send_nkro(report_nkro_t *report);
static void send_mouse(report_mouse_t *report);
static void send_extra(report_extra_t *report);
#ifdef RAW_ENABLE
static void send_raw_hid(uint8_t *data, uint8_t length);
#endif
host_driver_t lufa_driver = {
.keyboard_leds = usb_device_state_get_leds,
.send_keyboard = send_keyboard,
.send_nkro = send_nkro,
.send_mouse = send_mouse,
.send_extra = send_extra,
#ifdef RAW_ENABLE
.send_raw_hid = send_raw_hid,
#endif
};
void send_report(uint8_t endpoint, void *report, size_t size) {
uint8_t timeout = 255;
@ -131,21 +144,11 @@ USB_ClassInfo_CDC_Device_t cdc_device = {
*
* FIXME: Needs doc
*/
void raw_hid_send(uint8_t *data, uint8_t length) {
static void send_raw_hid(uint8_t *data, uint8_t length) {
if (length != RAW_EPSIZE) return;
send_report(RAW_IN_EPNUM, data, RAW_EPSIZE);
}
/** \brief Raw HID Receive
*
* FIXME: Needs doc
*/
__attribute__((weak)) void raw_hid_receive(uint8_t *data, uint8_t length) {
// Users should #include "raw_hid.h" in their own code
// and implement this function there. Leave this as weak linkage
// so users can opt to not handle data coming in.
}
/** \brief Raw HID Task
*
* FIXME: Needs doc