diff --git a/right/keyboard_descriptors.c b/right/keyboard_descriptors.c index 91535fa..537f8ad 100644 --- a/right/keyboard_descriptors.c +++ b/right/keyboard_descriptors.c @@ -91,3 +91,27 @@ uint8_t UsbKeyboardReportDescriptor[USB_DESCRIPTOR_LENGTH_HID_KEYBOARD_REPORT] = 0x81U, 0x00U, // Input(Data, Array), Key arrays(6U bytes) 0xC0U, // End collection }; + +uint8_t g_UsbKeyboardString[USB_KEYBOARD_STRING_DESCRIPTOR_LENGTH] = { + sizeof(g_UsbKeyboardString), + USB_DESCRIPTOR_TYPE_STRING, + 'H', 0x00U, + 'I', 0x00U, + 'D', 0x00U, + ' ', 0x00U, + 'K', 0x00U, + 'E', 0x00U, + 'Y', 0x00U, + 'B', 0x00U, + 'O', 0x00U, + 'A', 0x00U, + 'R', 0x00U, + 'D', 0x00U, + ' ', 0x00U, + 'D', 0x00U, + 'E', 0x00U, + 'V', 0x00U, + 'I', 0x00U, + 'C', 0x00U, + 'E', 0x00U, +}; diff --git a/right/keyboard_descriptors.h b/right/keyboard_descriptors.h index 9a36e0c..a5cb10c 100644 --- a/right/keyboard_descriptors.h +++ b/right/keyboard_descriptors.h @@ -3,10 +3,24 @@ // Macros: + #define USB_HID_KEYBOARD_INTERFACE_COUNT (1U) + #define USB_DESCRIPTOR_LENGTH_HID_KEYBOARD_REPORT (63U) + #define USB_KEYBOARD_STRING_DESCRIPTOR_LENGTH (40U) #define USB_KEYBOARD_INTERFACE_ALTERNATE_SETTING (0U) + #define USB_HID_KEYBOARD_ENDPOINT_IN (2U) + #define FS_HID_KEYBOARD_INTERRUPT_IN_PACKET_SIZE (8U) + #define USB_HID_KEYBOARD_ENDPOINT_COUNT (1U) + #define USB_HID_KEYBOARD_CLASS (0x03U) + #define USB_HID_KEYBOARD_SUBCLASS (0x01U) + #define USB_HID_KEYBOARD_PROTOCOL (0x01U) + #define USB_HID_KEYBOARD_INTERFACE_INDEX (1U) + #define USB_HID_KEYBOARD_IN_BUFFER_LENGTH (8U) + #define FS_HID_KEYBOARD_INTERRUPT_IN_INTERVAL (0x04U) + #define USB_HID_KEYBOARD_REPORT_LENGTH (0x08U) -// Function prototypes: +// Variables: + extern uint8_t g_UsbKeyboardString[USB_KEYBOARD_STRING_DESCRIPTOR_LENGTH]; extern usb_device_class_struct_t UsbKeyboardClass; extern uint8_t UsbKeyboardReportDescriptor[USB_DESCRIPTOR_LENGTH_HID_KEYBOARD_REPORT]; diff --git a/right/usb_device_descriptor.c b/right/usb_device_descriptor.c index acf95c0..6b0418f 100644 --- a/right/usb_device_descriptor.c +++ b/right/usb_device_descriptor.c @@ -294,37 +294,13 @@ uint8_t g_UsbDeviceString3[USB_DESCRIPTOR_LENGTH_STRING3] = { 'E', 0x00U, }; -uint8_t g_UsbDeviceString4[USB_DESCRIPTOR_LENGTH_STRING4] = { - sizeof(g_UsbDeviceString4), - USB_DESCRIPTOR_TYPE_STRING, - 'H', 0x00U, - 'I', 0x00U, - 'D', 0x00U, - ' ', 0x00U, - 'K', 0x00U, - 'E', 0x00U, - 'Y', 0x00U, - 'B', 0x00U, - 'O', 0x00U, - 'A', 0x00U, - 'R', 0x00U, - 'D', 0x00U, - ' ', 0x00U, - 'D', 0x00U, - 'E', 0x00U, - 'V', 0x00U, - 'I', 0x00U, - 'C', 0x00U, - 'E', 0x00U, -}; - uint32_t g_UsbDeviceStringDescriptorLength[USB_DEVICE_STRING_COUNT] = { sizeof(g_UsbDeviceString0), sizeof(g_UsbDeviceString1), sizeof(g_UsbDeviceString2), - sizeof(g_UsbDeviceString3), sizeof(g_UsbDeviceString4), + sizeof(g_UsbDeviceString3), sizeof(g_UsbKeyboardString), }; uint8_t *g_UsbDeviceStringDescriptorArray[USB_DEVICE_STRING_COUNT] = { - g_UsbDeviceString0, g_UsbDeviceString1, g_UsbDeviceString2, g_UsbDeviceString3, g_UsbDeviceString4, + g_UsbDeviceString0, g_UsbDeviceString1, g_UsbDeviceString2, g_UsbDeviceString3, g_UsbKeyboardString, }; usb_language_t g_UsbDeviceLanguage[USB_DEVICE_LANGUAGE_COUNT] = {{ diff --git a/right/usb_device_descriptor.h b/right/usb_device_descriptor.h index 70894c1..3b76aee 100644 --- a/right/usb_device_descriptor.h +++ b/right/usb_device_descriptor.h @@ -1,7 +1,11 @@ #ifndef __USB_DEVICE_DESCRIPTOR_H__ #define __USB_DEVICE_DESCRIPTOR_H__ -/* Macros: */ +// Includes: + + #include "keyboard_descriptors.h" + +// Macros: #define USB_DEVICE_SPECIFIC_BCD_VERSION (0x0200U) #define USB_DEVICE_DEMO_BCD_VERSION (0x0101U) @@ -14,13 +18,11 @@ #define USB_DESCRIPTOR_LENGTH_CONFIGURATION_ALL (59U) #define USB_DESCRIPTOR_LENGTH_HID_MOUSE_REPORT (52U) - #define USB_DESCRIPTOR_LENGTH_HID_KEYBOARD_REPORT (63U) #define USB_DESCRIPTOR_LENGTH_HID (9U) #define USB_DESCRIPTOR_LENGTH_STRING0 (4U) #define USB_DESCRIPTOR_LENGTH_STRING1 (58U) #define USB_DESCRIPTOR_LENGTH_STRING2 (34U) #define USB_DESCRIPTOR_LENGTH_STRING3 (34U) - #define USB_DESCRIPTOR_LENGTH_STRING4 (40U) #define USB_DEVICE_CONFIGURATION_COUNT (1U) #define USB_DEVICE_STRING_COUNT (5U) @@ -40,31 +42,12 @@ #define USB_HID_MOUSE_SUBCLASS (0x01U) #define USB_HID_MOUSE_PROTOCOL (0x02U) - #define HS_HID_MOUSE_INTERRUPT_IN_PACKET_SIZE (8U) #define FS_HID_MOUSE_INTERRUPT_IN_PACKET_SIZE (8U) - #define HS_HID_MOUSE_INTERRUPT_IN_INTERVAL (0x06U) /* 2^(6-1) = 4ms */ #define FS_HID_MOUSE_INTERRUPT_IN_INTERVAL (0x04U) - #define USB_HID_KEYBOARD_CLASS (0x03U) - #define USB_HID_KEYBOARD_SUBCLASS (0x01U) - #define USB_HID_KEYBOARD_PROTOCOL (0x01U) - - #define USB_HID_KEYBOARD_INTERFACE_COUNT (1U) - #define USB_HID_KEYBOARD_INTERFACE_INDEX (1U) - #define USB_HID_KEYBOARD_IN_BUFFER_LENGTH (8U) - #define USB_HID_KEYBOARD_ENDPOINT_COUNT (1U) - #define USB_HID_KEYBOARD_ENDPOINT_IN (2U) - - #define HS_HID_KEYBOARD_INTERRUPT_IN_PACKET_SIZE (8U) - #define FS_HID_KEYBOARD_INTERRUPT_IN_PACKET_SIZE (8U) - #define HS_HID_KEYBOARD_INTERRUPT_IN_INTERVAL (0x06U) /* 2^(6-1) = 4ms */ - #define FS_HID_KEYBOARD_INTERRUPT_IN_INTERVAL (0x04U) - - #define USB_HID_KEYBOARD_REPORT_LENGTH (0x08U) - #define USB_COMPOSITE_INTERFACE_COUNT (USB_HID_KEYBOARD_INTERFACE_COUNT + USB_HID_MOUSE_INTERFACE_COUNT) -/* Function prototypes: */ +// Function prototypes: usb_status_t USB_DeviceGetDeviceDescriptor( usb_device_handle handle, usb_device_get_device_descriptor_struct_t *deviceDescriptor);