diff --git a/right/composite.h b/right/composite.h index cb33b0f..a85b2d7 100644 --- a/right/composite.h +++ b/right/composite.h @@ -1,12 +1,12 @@ #ifndef __USB_DEVICE_COMPOSITE_H__ #define __USB_DEVICE_COMPOSITE_H__ -/* Macros: */ +// Macros: #define CONTROLLER_ID kUSB_ControllerKhci0 #define USB_DEVICE_INTERRUPT_PRIORITY (3U) -/* Type defines: */ +// Typedefs: typedef struct _usb_device_composite_struct { usb_device_handle deviceHandle; diff --git a/right/hid_keyboard.h b/right/hid_keyboard.h index 1f2e362..704b1c0 100644 --- a/right/hid_keyboard.h +++ b/right/hid_keyboard.h @@ -1,7 +1,7 @@ #ifndef __USB_DEVICE_HID_KEYBOARD_H__ #define __USB_DEVICE_HID_KEYBOARD_H__ -/* Macros: */ +// Macros: #define KEY_ERRORROLLOVER 0x01U #define KEY_POSTFAIL 0x02U @@ -231,14 +231,14 @@ #define MODIFERKEYS_RIGHT_ALT 0x40U #define MODIFERKEYS_RIGHT_GUI 0x80U -/* Type defines: */ +// Typedefs: typedef struct _usb_device_hid_keyboard_struct { uint8_t buffer[USB_KEYBOARD_REPORT_LENGTH]; uint8_t idleRate; } usb_device_hid_keyboard_struct_t; -/* Function prototypes: */ +// Functions: extern usb_status_t USB_DeviceHidKeyboardInit(usb_device_composite_struct_t *deviceComposite); extern usb_status_t USB_DeviceHidKeyboardCallback(class_handle_t handle, uint32_t event, void *param); diff --git a/right/hid_mouse.h b/right/hid_mouse.h index dfa7b19..31ea2b4 100644 --- a/right/hid_mouse.h +++ b/right/hid_mouse.h @@ -1,14 +1,14 @@ #ifndef __USB_DEVICE_HID_MOUSE_H__ #define __USB_DEVICE_HID_MOUSE_H__ -/* Type defines: */ +// Typedefs: typedef struct usb_device_hid_mouse_struct { uint8_t buffer[USB_MOUSE_REPORT_LENGTH]; uint8_t idleRate; } usb_device_hid_mouse_struct_t; -/* Function prototypes: */ +// Functions: extern usb_status_t USB_DeviceHidMouseInit(usb_device_composite_struct_t *deviceComposite); extern usb_status_t USB_DeviceHidMouseCallback(class_handle_t handle, uint32_t event, void *param); diff --git a/right/usb_device_descriptor.c b/right/usb_device_descriptor.c index dbe5e81..7db27bb 100644 --- a/right/usb_device_descriptor.c +++ b/right/usb_device_descriptor.c @@ -125,12 +125,15 @@ uint8_t UsbConfigurationDescriptor[USB_DESCRIPTOR_LENGTH_CONFIGURATION_ALL] = { USB_KEYBOARD_INTERRUPT_IN_INTERVAL, }; -uint8_t g_UsbDeviceString0[USB_DESCRIPTOR_LENGTH_STRING0] = { - sizeof(g_UsbDeviceString0), USB_DESCRIPTOR_TYPE_STRING, 0x09U, 0x04U, +uint8_t UsbLanguageListStringDescriptor[USB_DESCRIPTOR_LENGTH_STRING0] = { + sizeof(UsbLanguageListStringDescriptor), + USB_DESCRIPTOR_TYPE_STRING, + GET_LSB_OF_WORD(USB_LANGUAGE_ID_UNITED_STATES), + GET_MSB_OF_WORD(USB_LANGUAGE_ID_UNITED_STATES) }; -uint8_t g_UsbDeviceString1[USB_DESCRIPTOR_LENGTH_STRING1] = { - sizeof(g_UsbDeviceString1), +uint8_t UsbManufacturerString[USB_MANUFACTURER_STRING_DESCRIPTOR_LENGTH] = { + sizeof(UsbManufacturerString), USB_DESCRIPTOR_TYPE_STRING, 'F', 0x00U, 'R', 0x00U, @@ -162,8 +165,8 @@ uint8_t g_UsbDeviceString1[USB_DESCRIPTOR_LENGTH_STRING1] = { '.', 0x00U, }; -uint8_t g_UsbDeviceString2[USB_DESCRIPTOR_LENGTH_STRING2] = { - sizeof(g_UsbDeviceString2), +uint8_t UsbProductString[USB_DESCRIPTOR_LENGTH_STRING2] = { + sizeof(UsbProductString), USB_DESCRIPTOR_TYPE_STRING, 'C', 0x00U, 'O', 0x00U, @@ -183,21 +186,33 @@ uint8_t g_UsbDeviceString2[USB_DESCRIPTOR_LENGTH_STRING2] = { 'E', 0x00U, }; -uint32_t g_UsbDeviceStringDescriptorLength[USB_DEVICE_STRING_COUNT] = { - sizeof(g_UsbDeviceString0), sizeof(g_UsbDeviceString1), sizeof(g_UsbDeviceString2), - sizeof(UsbMouseString), sizeof(UsbKeyboardString), +uint32_t UsbStringDescriptorLengths[USB_STRING_DESCRIPTOR_COUNT] = { + sizeof(UsbLanguageListStringDescriptor), + sizeof(UsbManufacturerString), + sizeof(UsbProductString), + sizeof(UsbMouseString), + sizeof(UsbKeyboardString), }; -uint8_t *g_UsbDeviceStringDescriptorArray[USB_DEVICE_STRING_COUNT] = { - g_UsbDeviceString0, g_UsbDeviceString1, g_UsbDeviceString2, UsbMouseString, UsbKeyboardString, +uint8_t *UsbStringDescriptors[USB_STRING_DESCRIPTOR_COUNT] = { + UsbLanguageListStringDescriptor, + UsbManufacturerString, + UsbProductString, + UsbMouseString, + UsbKeyboardString, }; usb_language_t g_UsbDeviceLanguage[USB_DEVICE_LANGUAGE_COUNT] = {{ - g_UsbDeviceStringDescriptorArray, g_UsbDeviceStringDescriptorLength, (uint16_t)0x0409U, + UsbStringDescriptors, + UsbStringDescriptorLengths, + (uint16_t)USB_LANGUAGE_ID_UNITED_STATES, }}; -usb_language_list_t g_UsbDeviceLanguageList = { - g_UsbDeviceString0, sizeof(g_UsbDeviceString0), g_UsbDeviceLanguage, USB_DEVICE_LANGUAGE_COUNT, +usb_language_list_t UsbLanguageList = { + UsbLanguageListStringDescriptor, + sizeof(UsbLanguageListStringDescriptor), + g_UsbDeviceLanguage, + USB_DEVICE_LANGUAGE_COUNT, }; usb_status_t USB_DeviceGetDeviceDescriptor( @@ -223,26 +238,26 @@ usb_status_t USB_DeviceGetStringDescriptor( usb_device_handle handle, usb_device_get_string_descriptor_struct_t *stringDescriptor) { if (stringDescriptor->stringIndex == 0U) { - stringDescriptor->buffer = (uint8_t *)g_UsbDeviceLanguageList.languageString; - stringDescriptor->length = g_UsbDeviceLanguageList.stringLength; + stringDescriptor->buffer = (uint8_t *)UsbLanguageList.languageString; + stringDescriptor->length = UsbLanguageList.stringLength; } else { uint8_t languageId = 0U; - uint8_t languageIndex = USB_DEVICE_STRING_COUNT; + uint8_t languageIndex = USB_STRING_DESCRIPTOR_COUNT; - for (; languageId < USB_DEVICE_STRING_COUNT; languageId++) { - if (stringDescriptor->languageId == g_UsbDeviceLanguageList.languageList[languageId].languageId) { - if (stringDescriptor->stringIndex < USB_DEVICE_STRING_COUNT) { + for (; languageId < USB_STRING_DESCRIPTOR_COUNT; languageId++) { + if (stringDescriptor->languageId == UsbLanguageList.languageList[languageId].languageId) { + if (stringDescriptor->stringIndex < USB_STRING_DESCRIPTOR_COUNT) { languageIndex = stringDescriptor->stringIndex; } break; } } - if (USB_DEVICE_STRING_COUNT == languageIndex) { + if (USB_STRING_DESCRIPTOR_COUNT == languageIndex) { return kStatus_USB_InvalidRequest; } - stringDescriptor->buffer = (uint8_t *)g_UsbDeviceLanguageList.languageList[languageId].string[languageIndex]; - stringDescriptor->length = g_UsbDeviceLanguageList.languageList[languageId].length[languageIndex]; + stringDescriptor->buffer = (uint8_t *)UsbLanguageList.languageList[languageId].string[languageIndex]; + stringDescriptor->length = UsbLanguageList.languageList[languageId].length[languageIndex]; } return kStatus_USB_Success; } diff --git a/right/usb_device_descriptor.h b/right/usb_device_descriptor.h index 2c0f65b..0633344 100644 --- a/right/usb_device_descriptor.h +++ b/right/usb_device_descriptor.h @@ -11,6 +11,8 @@ #define USB_VENDOR_ID 0x15A2U #define USB_PRODUCT_ID 0x007EU + #define USB_LANGUAGE_ID_UNITED_STATES (0x0409U) + #define USB_DEVICE_SPECIFICATION_BCD_VERSION (0x0200U) #define USB_DEVICE_RELEASE_NUMBER (0x0101U) @@ -23,11 +25,11 @@ #define USB_DESCRIPTOR_LENGTH_CONFIGURATION_ALL (59U) #define USB_DESCRIPTOR_LENGTH_HID (9U) #define USB_DESCRIPTOR_LENGTH_STRING0 (4U) - #define USB_DESCRIPTOR_LENGTH_STRING1 (58U) + #define USB_MANUFACTURER_STRING_DESCRIPTOR_LENGTH (58U) #define USB_DESCRIPTOR_LENGTH_STRING2 (34U) #define USB_DEVICE_CONFIGURATION_COUNT (1U) - #define USB_DEVICE_STRING_COUNT (5U) + #define USB_STRING_DESCRIPTOR_COUNT (5U) #define USB_DEVICE_LANGUAGE_COUNT (1U) #define USB_STRING_DESCRIPTOR_ID_SERIAL_NUMBER 0x00U @@ -40,7 +42,7 @@ #define USB_COMPOSITE_INTERFACE_COUNT (USB_KEYBOARD_INTERFACE_COUNT + USB_MOUSE_INTERFACE_COUNT) -// Function prototypes: +// Functions: usb_status_t USB_DeviceGetDeviceDescriptor( usb_device_handle handle, usb_device_get_device_descriptor_struct_t *deviceDescriptor); diff --git a/right/usb_keyboard_descriptors.c b/right/usb_keyboard_descriptors.c index a1d4565..f8c119f 100644 --- a/right/usb_keyboard_descriptors.c +++ b/right/usb_keyboard_descriptors.c @@ -50,11 +50,11 @@ uint8_t UsbKeyboardReportDescriptor[USB_KEYBOARD_REPORT_DESCRIPTOR_LENGTH] = { 0x15U, 0x00U, // Logical Minimum (0U) 0x25U, 0x01U, // Logical Maximum (1U) - 0x81U, 0x02U, // Input(Data, Variable, Absolute) Modifier byte + 0x81U, 0x02U, // Input (Data, Variable, Absolute) modifier byte 0x95U, 0x01U, // Report count (1U) 0x75U, 0x08U, // Report Size (8U) - 0x81U, 0x01U, // Input (Constant), Reserved byte + 0x81U, 0x01U, // Input (Constant), reserved byte 0x95U, 0x05U, // Report count (5U) 0x75U, 0x01U, // Report Size (1U) @@ -74,7 +74,7 @@ uint8_t UsbKeyboardReportDescriptor[USB_KEYBOARD_REPORT_DESCRIPTOR_LENGTH] = { 0x19U, 0x00U, // Usage Minimum (0U) 0x29U, 0xFFU, // Usage Maximum (255U) - 0x81U, 0x00U, // Input(Data, Array), Key arrays(6U bytes) + 0x81U, 0x00U, // Input (Data, Array), Key arrays (6U bytes) 0xC0U, // End collection }; diff --git a/right/usb_mouse_descriptors.c b/right/usb_mouse_descriptors.c index 54848c3..7bf5a3a 100644 --- a/right/usb_mouse_descriptors.c +++ b/right/usb_mouse_descriptors.c @@ -71,7 +71,7 @@ uint8_t UsbMouseReportDescriptor[USB_MOUSE_REPORT_DESCRIPTOR_LENGTH] = { 0x75U, 0x08U, // Report Size (8U) 0x95U, 0x03U, // Report Count (3U) - 0x81U, 0x06U, // Input(Data, Variable, Relative), 3 position bytes (X & Y & Z) + 0x81U, 0x06U, // Input (Data, Variable, Relative), 3 position bytes (X & Y & Z) 0xC0U, // End collection, Close Pointer collection 0xC0U // End collection, Close Mouse collection }; diff --git a/right/util.h b/right/util.h index 37376f2..fa6d58e 100644 --- a/right/util.h +++ b/right/util.h @@ -3,7 +3,7 @@ // Macros: - #define GET_MSB_OF_WORD(word) ((uint8_t)(word >> 8)) - #define GET_LSB_OF_WORD(word) ((uint8_t)(word & 0xff)) + #define GET_MSB_OF_WORD(word) ((uint8_t)((word) >> 8)) + #define GET_LSB_OF_WORD(word) ((uint8_t)((word) & 0xff)) #endif