Fix USB_DeviceGetHidDescriptor
This commit is contained in:
@@ -14,6 +14,10 @@
|
|||||||
#define USB_COMPOSITE_CONFIGURATION_INDEX 1
|
#define USB_COMPOSITE_CONFIGURATION_INDEX 1
|
||||||
#define USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH 141
|
#define USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH 141
|
||||||
|
|
||||||
|
// Variables:
|
||||||
|
|
||||||
|
extern uint8_t UsbConfigurationDescriptor[USB_CONFIGURATION_DESCRIPTOR_TOTAL_LENGTH];
|
||||||
|
|
||||||
// Functions:
|
// Functions:
|
||||||
|
|
||||||
usb_status_t USB_DeviceGetConfigurationDescriptor(
|
usb_status_t USB_DeviceGetConfigurationDescriptor(
|
||||||
|
|||||||
@@ -2,11 +2,52 @@
|
|||||||
#include "usb_descriptor_hid.h"
|
#include "usb_descriptor_hid.h"
|
||||||
#include "usb_descriptor_mouse_report.h"
|
#include "usb_descriptor_mouse_report.h"
|
||||||
#include "usb_descriptor_generic_hid_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_status_t USB_DeviceGetHidDescriptor(
|
||||||
usb_device_handle handle, usb_device_get_hid_descriptor_struct_t *hidDescriptor)
|
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(
|
usb_status_t USB_DeviceGetHidReportDescriptor(
|
||||||
|
|||||||
Reference in New Issue
Block a user