Add raw_hid support to host driver (#25255)
This commit is contained in:
		
							parent
							
								
									c045c3e00c
								
							
						
					
					
						commit
						88c094908b
					
				
					 12 changed files with 95 additions and 36 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue