summaryrefslogtreecommitdiff
path: root/tinyusb/device/usbd.c
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-06-16 14:41:48 +0700
committerhathach <[email protected]>2013-06-16 14:41:48 +0700
commit357e8d32ec2c0a32cab79466131e38a103591975 (patch)
tree7e442d40b454e4ef28b71fde886d49d76de9764b /tinyusb/device/usbd.c
parent77e0834f3464d44de9c0bc560f5db22cf58c2fa0 (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.c16
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