clean up some & add code for managing control request targeting interface

This commit is contained in:
hathach
2013-06-16 14:41:48 +07:00
parent 77e0834f34
commit 357e8d32ec
5 changed files with 63 additions and 48 deletions
+13 -3
View File
@@ -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