diff options
| author | hathach <[email protected]> | 2013-06-16 14:41:48 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-06-16 14:41:48 +0700 |
| commit | 357e8d32ec2c0a32cab79466131e38a103591975 (patch) | |
| tree | 7e442d40b454e4ef28b71fde886d49d76de9764b /tinyusb/device/usbd.c | |
| parent | 77e0834f3464d44de9c0bc560f5db22cf58c2fa0 (diff) | |
clean up some & add code for managing control request targeting interface
Diffstat (limited to 'tinyusb/device/usbd.c')
| -rw-r--r-- | tinyusb/device/usbd.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/tinyusb/device/usbd.c b/tinyusb/device/usbd.c index e827c9213..02a8b5f28 100644 --- a/tinyusb/device/usbd.c +++ b/tinyusb/device/usbd.c @@ -55,11 +55,12 @@ usbd_device_info_t usbd_devices[CONTROLLER_DEVICE_NUMBER]; // TODO fix/compress number of class driver -static device_class_driver_t const usbh_class_drivers[TUSB_CLASS_MAX_CONSEC_NUMBER] = +static device_class_driver_t const usbd_class_drivers[TUSB_CLASS_MAX_CONSEC_NUMBER] = { #if DEVICE_CLASS_HID [TUSB_CLASS_HID] = { - .init = hidd_init, + .init = hidd_init, + .control_request = hidd_control_request, }, #endif }; @@ -127,6 +128,13 @@ void usbd_setup_received(uint8_t coreid) if ( p_device->setup_packet.bmRequestType.recipient == TUSB_REQUEST_RECIPIENT_INTERFACE) { // TODO detect which class +// ASSERT( p_device->setup_packet.wIndex < USBD_MAX_INTERFACE, (void) 0); +// tusb_std_class_code_t const class_code = usbd_devices[coreid].interface2class[ p_device->setup_packet.wIndex ]; +// if ( usbd_class_drivers[class_code].control_request != NULL ) +// { +// usbd_class_drivers[class_code].control_request(coreid, &p_device->setup_packet); +// +// } hidd_control_request(coreid, &p_device->setup_packet); }else { @@ -169,7 +177,9 @@ tusb_error_t usbd_init (void) uint16_t length = 0; #if TUSB_CFG_DEVICE_HID_KEYBOARD - ASSERT_STATUS( hidd_init(0, &app_tusb_desc_configuration.keyboard_interface, &length) ); + tusb_descriptor_interface_t const * p_interface = &app_tusb_desc_configuration.keyboard_interface; + ASSERT_STATUS( hidd_init(0, p_interface, &length) ); + usbd_devices[0].interface2class[p_interface->bInterfaceNumber] = p_interface->bInterfaceClass; #endif #if TUSB_CFG_DEVICE_HID_MOUSE && 0 |
