From 09f25e613941a6cf1cba245d31453042b0db0fa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Thu, 3 Mar 2016 17:42:54 +0100 Subject: [PATCH] Feature HID descriptors within the configuration descriptor in the same order as HID interface indexes dictate. --- right/usb_descriptor_configuration.c | 136 +++++++++++++-------------- 1 file changed, 68 insertions(+), 68 deletions(-) diff --git a/right/usb_descriptor_configuration.c b/right/usb_descriptor_configuration.c index 2698636..d86a8f8 100644 --- a/right/usb_descriptor_configuration.c +++ b/right/usb_descriptor_configuration.c @@ -26,74 +26,6 @@ uint8_t UsbConfigurationDescriptor[USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH] = (USB_DEVICE_CONFIG_REMOTE_WAKEUP << USB_DESCRIPTOR_CONFIGURE_ATTRIBUTE_REMOTE_WAKEUP_SHIFT), USB_DEVICE_MAX_POWER, -// Mouse interface descriptor - - USB_DESCRIPTOR_LENGTH_INTERFACE, - USB_DESCRIPTOR_TYPE_INTERFACE, - USB_MOUSE_INTERFACE_INDEX, - USB_INTERFACE_ALTERNATE_SETTING_NONE, - USB_MOUSE_ENDPOINT_COUNT, - USB_MOUSE_CLASS, - USB_MOUSE_SUBCLASS, - USB_MOUSE_PROTOCOL, - USB_STRING_DESCRIPTOR_NONE, - -// Mouse HID descriptor - - USB_HID_DESCRIPTOR_LENGTH, - USB_DESCRIPTOR_TYPE_HID, - USB_SHORT_GET_LOW(USB_HID_VERSION), - USB_SHORT_GET_HIGH(USB_HID_VERSION), - USB_HID_COUNTRY_CODE_NOT_SUPPORTED, - USB_REPORT_DESCRIPTOR_COUNT_PER_HID_DEVICE, - USB_DESCRIPTOR_TYPE_HID_REPORT, - USB_SHORT_GET_LOW(USB_MOUSE_REPORT_DESCRIPTOR_LENGTH), - USB_SHORT_GET_HIGH(USB_MOUSE_REPORT_DESCRIPTOR_LENGTH), - -// Mouse endpoint descriptor - - USB_DESCRIPTOR_LENGTH_ENDPOINT, - USB_DESCRIPTOR_TYPE_ENDPOINT, - USB_MOUSE_ENDPOINT_ID | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT), - USB_ENDPOINT_INTERRUPT, - USB_SHORT_GET_LOW(USB_MOUSE_INTERRUPT_IN_PACKET_SIZE), - USB_SHORT_GET_HIGH(USB_MOUSE_INTERRUPT_IN_PACKET_SIZE), - USB_MOUSE_INTERRUPT_IN_INTERVAL, - -// Keyboard interface descriptor - - USB_DESCRIPTOR_LENGTH_INTERFACE, - USB_DESCRIPTOR_TYPE_INTERFACE, - USB_KEYBOARD_INTERFACE_INDEX, - USB_INTERFACE_ALTERNATE_SETTING_NONE, - USB_KEYBOARD_ENDPOINT_COUNT, - USB_KEYBOARD_CLASS, - USB_KEYBOARD_SUBCLASS, - USB_KEYBOARD_PROTOCOL, - USB_STRING_DESCRIPTOR_NONE, - -// Keyboard HID descriptor - - USB_HID_DESCRIPTOR_LENGTH, - USB_DESCRIPTOR_TYPE_HID, - USB_SHORT_GET_LOW(USB_HID_VERSION), - USB_SHORT_GET_HIGH(USB_HID_VERSION), - USB_HID_COUNTRY_CODE_NOT_SUPPORTED, - USB_REPORT_DESCRIPTOR_COUNT_PER_HID_DEVICE, - USB_DESCRIPTOR_TYPE_HID_REPORT, - USB_SHORT_GET_LOW(USB_KEYBOARD_REPORT_DESCRIPTOR_LENGTH), - USB_SHORT_GET_HIGH(USB_KEYBOARD_REPORT_DESCRIPTOR_LENGTH), - -// Keyboard endpoint descriptor - - USB_DESCRIPTOR_LENGTH_ENDPOINT, - USB_DESCRIPTOR_TYPE_ENDPOINT, - USB_KEYBOARD_ENDPOINT_ID | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT), - USB_ENDPOINT_INTERRUPT, - USB_SHORT_GET_LOW(USB_KEYBOARD_INTERRUPT_IN_PACKET_SIZE), - USB_SHORT_GET_HIGH(USB_KEYBOARD_INTERRUPT_IN_PACKET_SIZE), - USB_KEYBOARD_INTERRUPT_IN_INTERVAL, - // Generic HID interface descriptor USB_DESCRIPTOR_LENGTH_INTERFACE, @@ -137,6 +69,74 @@ uint8_t UsbConfigurationDescriptor[USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH] = USB_SHORT_GET_LOW(USB_GENERIC_HID_INTERRUPT_OUT_PACKET_SIZE), USB_SHORT_GET_HIGH(USB_GENERIC_HID_INTERRUPT_OUT_PACKET_SIZE), USB_GENERIC_HID_INTERRUPT_IN_INTERVAL, + +// Keyboard interface descriptor + + USB_DESCRIPTOR_LENGTH_INTERFACE, + USB_DESCRIPTOR_TYPE_INTERFACE, + USB_KEYBOARD_INTERFACE_INDEX, + USB_INTERFACE_ALTERNATE_SETTING_NONE, + USB_KEYBOARD_ENDPOINT_COUNT, + USB_KEYBOARD_CLASS, + USB_KEYBOARD_SUBCLASS, + USB_KEYBOARD_PROTOCOL, + USB_STRING_DESCRIPTOR_NONE, + +// Keyboard HID descriptor + + USB_HID_DESCRIPTOR_LENGTH, + USB_DESCRIPTOR_TYPE_HID, + USB_SHORT_GET_LOW(USB_HID_VERSION), + USB_SHORT_GET_HIGH(USB_HID_VERSION), + USB_HID_COUNTRY_CODE_NOT_SUPPORTED, + USB_REPORT_DESCRIPTOR_COUNT_PER_HID_DEVICE, + USB_DESCRIPTOR_TYPE_HID_REPORT, + USB_SHORT_GET_LOW(USB_KEYBOARD_REPORT_DESCRIPTOR_LENGTH), + USB_SHORT_GET_HIGH(USB_KEYBOARD_REPORT_DESCRIPTOR_LENGTH), + +// Keyboard endpoint descriptor + + USB_DESCRIPTOR_LENGTH_ENDPOINT, + USB_DESCRIPTOR_TYPE_ENDPOINT, + USB_KEYBOARD_ENDPOINT_ID | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT), + USB_ENDPOINT_INTERRUPT, + USB_SHORT_GET_LOW(USB_KEYBOARD_INTERRUPT_IN_PACKET_SIZE), + USB_SHORT_GET_HIGH(USB_KEYBOARD_INTERRUPT_IN_PACKET_SIZE), + USB_KEYBOARD_INTERRUPT_IN_INTERVAL, + +// Mouse interface descriptor + + USB_DESCRIPTOR_LENGTH_INTERFACE, + USB_DESCRIPTOR_TYPE_INTERFACE, + USB_MOUSE_INTERFACE_INDEX, + USB_INTERFACE_ALTERNATE_SETTING_NONE, + USB_MOUSE_ENDPOINT_COUNT, + USB_MOUSE_CLASS, + USB_MOUSE_SUBCLASS, + USB_MOUSE_PROTOCOL, + USB_STRING_DESCRIPTOR_NONE, + +// Mouse HID descriptor + + USB_HID_DESCRIPTOR_LENGTH, + USB_DESCRIPTOR_TYPE_HID, + USB_SHORT_GET_LOW(USB_HID_VERSION), + USB_SHORT_GET_HIGH(USB_HID_VERSION), + USB_HID_COUNTRY_CODE_NOT_SUPPORTED, + USB_REPORT_DESCRIPTOR_COUNT_PER_HID_DEVICE, + USB_DESCRIPTOR_TYPE_HID_REPORT, + USB_SHORT_GET_LOW(USB_MOUSE_REPORT_DESCRIPTOR_LENGTH), + USB_SHORT_GET_HIGH(USB_MOUSE_REPORT_DESCRIPTOR_LENGTH), + +// Mouse endpoint descriptor + + USB_DESCRIPTOR_LENGTH_ENDPOINT, + USB_DESCRIPTOR_TYPE_ENDPOINT, + USB_MOUSE_ENDPOINT_ID | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT), + USB_ENDPOINT_INTERRUPT, + USB_SHORT_GET_LOW(USB_MOUSE_INTERRUPT_IN_PACKET_SIZE), + USB_SHORT_GET_HIGH(USB_MOUSE_INTERRUPT_IN_PACKET_SIZE), + USB_MOUSE_INTERRUPT_IN_INTERVAL, }; usb_status_t USB_DeviceGetConfigurationDescriptor(