Fix USB_DeviceGetHidDescriptor
This commit is contained in:
@@ -14,6 +14,10 @@
|
||||
#define USB_COMPOSITE_CONFIGURATION_INDEX 1
|
||||
#define USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH 141
|
||||
|
||||
// Variables:
|
||||
|
||||
extern uint8_t UsbConfigurationDescriptor[USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH];
|
||||
|
||||
// Functions:
|
||||
|
||||
usb_status_t USB_DeviceGetConfigurationDescriptor(
|
||||
|
||||
@@ -2,11 +2,52 @@
|
||||
#include "usb_descriptor_hid.h"
|
||||
#include "usb_descriptor_mouse_report.h"
|
||||
#include "usb_descriptor_generic_hid_report.h"
|
||||
#include "usb_descriptor_configuration.h"
|
||||
|
||||
#define USB_GENERIC_HID_DESCRIPTOR_INDEX \
|
||||
(USB_DESCRIPTOR_LENGTH_CONFIGURE + USB_DESCRIPTOR_LENGTH_INTERFACE)
|
||||
|
||||
#define USB_BASIC_KEYBOARD_HID_DESCRIPTOR_INDEX \
|
||||
(USB_GENERIC_HID_DESCRIPTOR_INDEX + USB_DESCRIPTOR_LENGTH_HID + \
|
||||
2 * USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_INTERFACE)
|
||||
|
||||
#define USB_MEDIA_KEYBOARD_HID_DESCRIPTOR_INDEX \
|
||||
(USB_BASIC_KEYBOARD_HID_DESCRIPTOR_INDEX + USB_DESCRIPTOR_LENGTH_HID + \
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_INTERFACE)
|
||||
|
||||
#define USB_SYSTEM_KEYBOARD_HID_DESCRIPTOR_INDEX \
|
||||
(USB_MEDIA_KEYBOARD_HID_DESCRIPTOR_INDEX + USB_DESCRIPTOR_LENGTH_HID + \
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_INTERFACE)
|
||||
|
||||
#define USB_MOUSE_HID_DESCRIPTOR_INDEX \
|
||||
(USB_SYSTEM_KEYBOARD_HID_DESCRIPTOR_INDEX + USB_DESCRIPTOR_LENGTH_HID + \
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_INTERFACE)
|
||||
|
||||
usb_status_t USB_DeviceGetHidDescriptor(
|
||||
usb_device_handle handle, usb_device_get_hid_descriptor_struct_t *hidDescriptor)
|
||||
{
|
||||
return kStatus_USB_InvalidRequest;
|
||||
hidDescriptor->length = USB_DESCRIPTOR_LENGTH_HID;
|
||||
|
||||
switch (hidDescriptor->interfaceNumber) {
|
||||
case USB_GENERIC_HID_INTERFACE_INDEX:
|
||||
hidDescriptor->buffer = &UsbConfigurationDescriptor[USB_GENERIC_HID_DESCRIPTOR_INDEX];
|
||||
break;
|
||||
case USB_BASIC_KEYBOARD_INTERFACE_INDEX:
|
||||
hidDescriptor->buffer = &UsbConfigurationDescriptor[USB_BASIC_KEYBOARD_HID_DESCRIPTOR_INDEX];
|
||||
break;
|
||||
case USB_MEDIA_KEYBOARD_INTERFACE_INDEX:
|
||||
hidDescriptor->buffer = &UsbConfigurationDescriptor[USB_MEDIA_KEYBOARD_HID_DESCRIPTOR_INDEX];
|
||||
break;
|
||||
case USB_SYSTEM_KEYBOARD_INTERFACE_INDEX:
|
||||
hidDescriptor->buffer = &UsbConfigurationDescriptor[USB_SYSTEM_KEYBOARD_HID_DESCRIPTOR_INDEX];
|
||||
break;
|
||||
case USB_MOUSE_INTERFACE_INDEX:
|
||||
hidDescriptor->buffer = &UsbConfigurationDescriptor[USB_MOUSE_HID_DESCRIPTOR_INDEX];
|
||||
break;
|
||||
default:
|
||||
return kStatus_USB_InvalidRequest;
|
||||
}
|
||||
return kStatus_USB_Success;
|
||||
}
|
||||
|
||||
usb_status_t USB_DeviceGetHidReportDescriptor(
|
||||
|
||||
Reference in New Issue
Block a user