Rename mouse and keyboard related callbacks and variables.

This commit is contained in:
László Monda
2016-02-25 18:47:36 +01:00
parent 9e52743ba0
commit 23ffb23bd2
8 changed files with 85 additions and 89 deletions

View File

@@ -19,21 +19,21 @@
#include "usb_keyboard_descriptors.h" #include "usb_keyboard_descriptors.h"
#include "usb_mouse_descriptors.h" #include "usb_mouse_descriptors.h"
static usb_status_t USB_DeviceCallback(usb_device_handle handle, uint32_t event, void *param); static usb_status_t UsbDeviceCallback(usb_device_handle handle, uint32_t event, void *param);
static usb_device_composite_struct_t UsbDeviceComposite; static usb_device_composite_struct_t UsbCompositeDevice;
usb_device_class_config_struct_t UsbDeviceCompositeClassConfig[USB_COMPOSITE_INTERFACE_COUNT] = { usb_device_class_config_struct_t UsbDeviceCompositeClassConfig[USB_COMPOSITE_INTERFACE_COUNT] = {
{USB_DeviceHidKeyboardCallback, (class_handle_t)NULL, &UsbKeyboardClass}, {UsbKeyboardCallback, (class_handle_t)NULL, &UsbKeyboardClass},
{USB_DeviceHidMouseCallback, (class_handle_t)NULL, &UsbDeviceMouseClass} {UsbMouseCallback, (class_handle_t)NULL, &UsbMouseClass}
}; };
usb_device_class_config_list_struct_t g_UsbDeviceCompositeConfigList = { usb_device_class_config_list_struct_t UsbDeviceCompositeConfigList = {
UsbDeviceCompositeClassConfig, UsbDeviceCompositeClassConfig,
USB_DeviceCallback, UsbDeviceCallback,
USB_COMPOSITE_INTERFACE_COUNT, USB_COMPOSITE_INTERFACE_COUNT,
}; };
static usb_status_t USB_DeviceCallback(usb_device_handle handle, uint32_t event, void *param) static usb_status_t UsbDeviceCallback(usb_device_handle handle, uint32_t event, void *param)
{ {
usb_status_t error = kStatus_USB_Error; usb_status_t error = kStatus_USB_Error;
uint16_t *temp16 = (uint16_t *)param; uint16_t *temp16 = (uint16_t *)param;
@@ -45,28 +45,28 @@ static usb_status_t USB_DeviceCallback(usb_device_handle handle, uint32_t event,
switch (event) { switch (event) {
case kUSB_DeviceEventBusReset: case kUSB_DeviceEventBusReset:
UsbDeviceComposite.attach = 0U; UsbCompositeDevice.attach = 0U;
error = kStatus_USB_Success; error = kStatus_USB_Success;
break; break;
case kUSB_DeviceEventSetConfiguration: case kUSB_DeviceEventSetConfiguration:
UsbDeviceComposite.attach = 1U; UsbCompositeDevice.attach = 1U;
UsbDeviceComposite.currentConfiguration = *temp8; UsbCompositeDevice.currentConfiguration = *temp8;
USB_DeviceHidMouseSetConfigure(UsbDeviceComposite.hidMouseHandle, *temp8); UsbMouseSetConfigure(UsbCompositeDevice.hidMouseHandle, *temp8);
USB_DeviceHidKeyboardSetConfigure(UsbDeviceComposite.hidKeyboardHandle, *temp8); UsbKeyboardSetConfigure(UsbCompositeDevice.hidKeyboardHandle, *temp8);
error = kStatus_USB_Success; error = kStatus_USB_Success;
break; break;
case kUSB_DeviceEventGetConfiguration: case kUSB_DeviceEventGetConfiguration:
*temp8 = UsbDeviceComposite.currentConfiguration; *temp8 = UsbCompositeDevice.currentConfiguration;
error = kStatus_USB_Success; error = kStatus_USB_Success;
break; break;
case kUSB_DeviceEventSetInterface: case kUSB_DeviceEventSetInterface:
if (UsbDeviceComposite.attach) { if (UsbCompositeDevice.attach) {
uint8_t interface = (uint8_t)((*temp16 & 0xFF00U) >> 0x08U); uint8_t interface = (uint8_t)((*temp16 & 0xFF00U) >> 0x08U);
uint8_t alternateSetting = (uint8_t)(*temp16 & 0x00FFU); uint8_t alternateSetting = (uint8_t)(*temp16 & 0x00FFU);
if (interface < USB_COMPOSITE_INTERFACE_COUNT) { if (interface < USB_COMPOSITE_INTERFACE_COUNT) {
UsbDeviceComposite.currentInterfaceAlternateSetting[interface] = alternateSetting; UsbCompositeDevice.currentInterfaceAlternateSetting[interface] = alternateSetting;
USB_DeviceHidMouseSetInterface(UsbDeviceComposite.hidMouseHandle, interface, alternateSetting); UsbMouseSetInterface(UsbCompositeDevice.hidMouseHandle, interface, alternateSetting);
USB_DeviceHidKeyboardSetInterface(UsbDeviceComposite.hidKeyboardHandle, interface, UsbKeyboardSetInterface(UsbCompositeDevice.hidKeyboardHandle, interface,
alternateSetting); alternateSetting);
error = kStatus_USB_Success; error = kStatus_USB_Success;
} }
@@ -75,7 +75,7 @@ static usb_status_t USB_DeviceCallback(usb_device_handle handle, uint32_t event,
case kUSB_DeviceEventGetInterface: ; case kUSB_DeviceEventGetInterface: ;
uint8_t interface = (uint8_t)((*temp16 & 0xFF00U) >> 0x08U); uint8_t interface = (uint8_t)((*temp16 & 0xFF00U) >> 0x08U);
if (interface < USB_COMPOSITE_INTERFACE_COUNT) { if (interface < USB_COMPOSITE_INTERFACE_COUNT) {
*temp16 = (*temp16 & 0xFF00U) | UsbDeviceComposite.currentInterfaceAlternateSetting[interface]; *temp16 = (*temp16 & 0xFF00U) | UsbCompositeDevice.currentInterfaceAlternateSetting[interface];
error = kStatus_USB_Success; error = kStatus_USB_Success;
} else { } else {
error = kStatus_USB_InvalidRequest; error = kStatus_USB_InvalidRequest;
@@ -106,7 +106,7 @@ static usb_status_t USB_DeviceCallback(usb_device_handle handle, uint32_t event,
void USB0_IRQHandler(void) void USB0_IRQHandler(void)
{ {
USB_DeviceKhciIsrFunction(UsbDeviceComposite.deviceHandle); USB_DeviceKhciIsrFunction(UsbCompositeDevice.deviceHandle);
} }
static void USB_DeviceApplicationInit(void) static void USB_DeviceApplicationInit(void)
@@ -119,24 +119,24 @@ static void USB_DeviceApplicationInit(void)
CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcIrc48M, 48000000U); CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcIrc48M, 48000000U);
// Set composite device to default state. // Set composite device to default state.
UsbDeviceComposite.speed = USB_SPEED_FULL; UsbCompositeDevice.speed = USB_SPEED_FULL;
UsbDeviceComposite.attach = 0U; UsbCompositeDevice.attach = 0U;
UsbDeviceComposite.hidMouseHandle = (class_handle_t)NULL; UsbCompositeDevice.hidMouseHandle = (class_handle_t)NULL;
UsbDeviceComposite.hidKeyboardHandle = (class_handle_t)NULL; UsbCompositeDevice.hidKeyboardHandle = (class_handle_t)NULL;
UsbDeviceComposite.deviceHandle = NULL; UsbCompositeDevice.deviceHandle = NULL;
usb_status_t deviceStatus = USB_DeviceClassInit( usb_status_t deviceStatus = USB_DeviceClassInit(
CONTROLLER_ID, &g_UsbDeviceCompositeConfigList, &UsbDeviceComposite.deviceHandle); CONTROLLER_ID, &UsbDeviceCompositeConfigList, &UsbCompositeDevice.deviceHandle);
if (kStatus_USB_Success != deviceStatus) { if (kStatus_USB_Success != deviceStatus) {
usb_echo("USB device composite demo init failed\r\n"); usb_echo("USB device composite demo init failed\r\n");
return; return;
} else { } else {
usb_echo("USB device composite demo\r\n"); usb_echo("USB device composite demo\r\n");
UsbDeviceComposite.hidKeyboardHandle = g_UsbDeviceCompositeConfigList.config[0].classHandle; UsbCompositeDevice.hidKeyboardHandle = UsbDeviceCompositeConfigList.config[0].classHandle;
UsbDeviceComposite.hidMouseHandle = g_UsbDeviceCompositeConfigList.config[1].classHandle; UsbCompositeDevice.hidMouseHandle = UsbDeviceCompositeConfigList.config[1].classHandle;
USB_DeviceHidKeyboardInit(&UsbDeviceComposite); UsbKeyboardInit(&UsbCompositeDevice);
USB_DeviceHidMouseInit(&UsbDeviceComposite); UsbMouseInit(&UsbCompositeDevice);
} }
// Install ISR, set priority, and enable IRQ. // Install ISR, set priority, and enable IRQ.
@@ -144,7 +144,7 @@ static void USB_DeviceApplicationInit(void)
NVIC_EnableIRQ((IRQn_Type)irqNumber); NVIC_EnableIRQ((IRQn_Type)irqNumber);
// Start the device function. // Start the device function.
USB_DeviceRun(UsbDeviceComposite.deviceHandle); USB_DeviceRun(UsbCompositeDevice.deviceHandle);
} }
void main(void) void main(void)

View File

@@ -8,12 +8,10 @@
#include "composite.h" #include "composite.h"
#include "hid_keyboard.h" #include "hid_keyboard.h"
static usb_status_t USB_DeviceHidKeyboardAction(void); static usb_device_composite_struct_t *UsbCompositeDevice;
static usb_device_hid_keyboard_struct_t UsbKeyboardDevice;
static usb_device_composite_struct_t *s_UsbDeviceComposite; static usb_status_t UsbKeyboardAction(void)
static usb_device_hid_keyboard_struct_t s_UsbDeviceHidKeyboard;
static usb_status_t USB_DeviceHidKeyboardAction(void)
{ {
static int x = 0U; static int x = 0U;
enum { enum {
@@ -22,37 +20,37 @@ static usb_status_t USB_DeviceHidKeyboardAction(void)
}; };
static uint8_t dir = DOWN; static uint8_t dir = DOWN;
s_UsbDeviceHidKeyboard.buffer[2] = 0x00U; UsbKeyboardDevice.buffer[2] = 0x00U;
switch (dir) { switch (dir) {
case DOWN: case DOWN:
x++; x++;
if (x > 200U) { if (x > 200U) {
dir++; dir++;
s_UsbDeviceHidKeyboard.buffer[2] = KEY_PAGEUP; UsbKeyboardDevice.buffer[2] = KEY_PAGEUP;
} }
break; break;
case UP: case UP:
x--; x--;
if (x < 1U) { if (x < 1U) {
dir = DOWN; dir = DOWN;
s_UsbDeviceHidKeyboard.buffer[2] = KEY_PAGEDOWN; UsbKeyboardDevice.buffer[2] = KEY_PAGEDOWN;
} }
break; break;
default: default:
break; break;
} }
return USB_DeviceHidSend(s_UsbDeviceComposite->hidKeyboardHandle, USB_KEYBOARD_ENDPOINT_IN, return USB_DeviceHidSend(UsbCompositeDevice->hidKeyboardHandle, USB_KEYBOARD_ENDPOINT_IN,
s_UsbDeviceHidKeyboard.buffer, USB_KEYBOARD_REPORT_LENGTH); UsbKeyboardDevice.buffer, USB_KEYBOARD_REPORT_LENGTH);
} }
usb_status_t USB_DeviceHidKeyboardCallback(class_handle_t handle, uint32_t event, void *param) usb_status_t UsbKeyboardCallback(class_handle_t handle, uint32_t event, void *param)
{ {
usb_status_t error = kStatus_USB_Error; usb_status_t error = kStatus_USB_Error;
switch (event) { switch (event) {
case kUSB_DeviceHidEventSendResponse: case kUSB_DeviceHidEventSendResponse:
if (s_UsbDeviceComposite->attach) { if (UsbCompositeDevice->attach) {
return USB_DeviceHidKeyboardAction(); return UsbKeyboardAction();
} }
break; break;
case kUSB_DeviceHidEventGetReport: case kUSB_DeviceHidEventGetReport:
@@ -72,24 +70,24 @@ usb_status_t USB_DeviceHidKeyboardCallback(class_handle_t handle, uint32_t event
return error; return error;
} }
usb_status_t USB_DeviceHidKeyboardSetConfigure(class_handle_t handle, uint8_t configure) usb_status_t UsbKeyboardSetConfigure(class_handle_t handle, uint8_t configure)
{ {
if (USB_COMPOSITE_CONFIGURE_INDEX == configure) { if (USB_COMPOSITE_CONFIGURE_INDEX == configure) {
return USB_DeviceHidKeyboardAction(); return UsbKeyboardAction();
} }
return kStatus_USB_Error; return kStatus_USB_Error;
} }
usb_status_t USB_DeviceHidKeyboardSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting) usb_status_t UsbKeyboardSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting)
{ {
if (USB_KEYBOARD_INTERFACE_INDEX == interface) { if (USB_KEYBOARD_INTERFACE_INDEX == interface) {
return USB_DeviceHidKeyboardAction(); return UsbKeyboardAction();
} }
return kStatus_USB_Error; return kStatus_USB_Error;
} }
usb_status_t USB_DeviceHidKeyboardInit(usb_device_composite_struct_t *deviceComposite) usb_status_t UsbKeyboardInit(usb_device_composite_struct_t *compositeDevice)
{ {
s_UsbDeviceComposite = deviceComposite; UsbCompositeDevice = compositeDevice;
return kStatus_USB_Success; return kStatus_USB_Success;
} }

View File

@@ -240,9 +240,9 @@
// Functions: // Functions:
extern usb_status_t USB_DeviceHidKeyboardInit(usb_device_composite_struct_t *deviceComposite); extern usb_status_t UsbKeyboardInit(usb_device_composite_struct_t *deviceComposite);
extern usb_status_t USB_DeviceHidKeyboardCallback(class_handle_t handle, uint32_t event, void *param); extern usb_status_t UsbKeyboardCallback(class_handle_t handle, uint32_t event, void *param);
extern usb_status_t USB_DeviceHidKeyboardSetConfigure(class_handle_t handle, uint8_t configure); extern usb_status_t UsbKeyboardSetConfigure(class_handle_t handle, uint8_t configure);
extern usb_status_t USB_DeviceHidKeyboardSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting); extern usb_status_t UsbKeyboardSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting);
#endif #endif

View File

@@ -8,13 +8,11 @@
#include "composite.h" #include "composite.h"
#include "hid_mouse.h" #include "hid_mouse.h"
static usb_status_t USB_DeviceHidMouseAction(void); static usb_device_composite_struct_t *UsbCompositeDevice;
static usb_device_hid_mouse_struct_t UsbMouseDevice;
static usb_device_composite_struct_t *s_UsbDeviceComposite;
static usb_device_hid_mouse_struct_t s_UsbDeviceHidMouse;
/* Update mouse pointer location: draw a rectangular rotation. */ /* Update mouse pointer location: draw a rectangular rotation. */
static usb_status_t USB_DeviceHidMouseAction(void) static usb_status_t UsbMouseAction(void)
{ {
static int8_t x = 0U; static int8_t x = 0U;
static int8_t y = 0U; static int8_t y = 0U;
@@ -29,8 +27,8 @@ static usb_status_t USB_DeviceHidMouseAction(void)
switch (dir) { switch (dir) {
case RIGHT: case RIGHT:
/* Move right. Increase X value. */ /* Move right. Increase X value. */
s_UsbDeviceHidMouse.buffer[1] = 1U; UsbMouseDevice.buffer[1] = 1U;
s_UsbDeviceHidMouse.buffer[2] = 0U; UsbMouseDevice.buffer[2] = 0U;
x++; x++;
if (x > 99U) { if (x > 99U) {
dir++; dir++;
@@ -38,8 +36,8 @@ static usb_status_t USB_DeviceHidMouseAction(void)
break; break;
case DOWN: case DOWN:
/* Move down. Increase Y value. */ /* Move down. Increase Y value. */
s_UsbDeviceHidMouse.buffer[1] = 0U; UsbMouseDevice.buffer[1] = 0U;
s_UsbDeviceHidMouse.buffer[2] = 1U; UsbMouseDevice.buffer[2] = 1U;
y++; y++;
if (y > 99U) { if (y > 99U) {
dir++; dir++;
@@ -47,8 +45,8 @@ static usb_status_t USB_DeviceHidMouseAction(void)
break; break;
case LEFT: case LEFT:
/* Move left. Discrease X value. */ /* Move left. Discrease X value. */
s_UsbDeviceHidMouse.buffer[1] = (uint8_t)(0xFFU); UsbMouseDevice.buffer[1] = (uint8_t)(0xFFU);
s_UsbDeviceHidMouse.buffer[2] = 0U; UsbMouseDevice.buffer[2] = 0U;
x--; x--;
if (x < 1U) { if (x < 1U) {
dir++; dir++;
@@ -56,8 +54,8 @@ static usb_status_t USB_DeviceHidMouseAction(void)
break; break;
case UP: case UP:
/* Move up. Discrease Y value. */ /* Move up. Discrease Y value. */
s_UsbDeviceHidMouse.buffer[1] = 0U; UsbMouseDevice.buffer[1] = 0U;
s_UsbDeviceHidMouse.buffer[2] = (uint8_t)(0xFFU); UsbMouseDevice.buffer[2] = (uint8_t)(0xFFU);
y--; y--;
if (y < 1U) { if (y < 1U) {
dir = RIGHT; dir = RIGHT;
@@ -67,19 +65,19 @@ static usb_status_t USB_DeviceHidMouseAction(void)
break; break;
} }
return USB_DeviceHidSend(s_UsbDeviceComposite->hidMouseHandle, USB_MOUSE_ENDPOINT_IN, return USB_DeviceHidSend(UsbCompositeDevice->hidMouseHandle, USB_MOUSE_ENDPOINT_IN,
s_UsbDeviceHidMouse.buffer, USB_MOUSE_REPORT_LENGTH); UsbMouseDevice.buffer, USB_MOUSE_REPORT_LENGTH);
} }
usb_status_t USB_DeviceHidMouseCallback(class_handle_t handle, uint32_t event, void *param) usb_status_t UsbMouseCallback(class_handle_t handle, uint32_t event, void *param)
{ {
usb_status_t error = kStatus_USB_Error; usb_status_t error = kStatus_USB_Error;
switch (event) switch (event)
{ {
case kUSB_DeviceHidEventSendResponse: case kUSB_DeviceHidEventSendResponse:
if (s_UsbDeviceComposite->attach) { if (UsbCompositeDevice->attach) {
return USB_DeviceHidMouseAction(); return UsbMouseAction();
} }
break; break;
case kUSB_DeviceHidEventGetReport: case kUSB_DeviceHidEventGetReport:
@@ -99,24 +97,24 @@ usb_status_t USB_DeviceHidMouseCallback(class_handle_t handle, uint32_t event, v
return error; return error;
} }
usb_status_t USB_DeviceHidMouseSetConfigure(class_handle_t handle, uint8_t configure) usb_status_t UsbMouseSetConfigure(class_handle_t handle, uint8_t configure)
{ {
if (USB_COMPOSITE_CONFIGURE_INDEX == configure) { if (USB_COMPOSITE_CONFIGURE_INDEX == configure) {
return USB_DeviceHidMouseAction(); return UsbMouseAction();
} }
return kStatus_USB_Error; return kStatus_USB_Error;
} }
usb_status_t USB_DeviceHidMouseSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting) usb_status_t UsbMouseSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting)
{ {
if (USB_KEYBOARD_INTERFACE_INDEX == interface) { if (USB_KEYBOARD_INTERFACE_INDEX == interface) {
return USB_DeviceHidMouseAction(); return UsbMouseAction();
} }
return kStatus_USB_Error; return kStatus_USB_Error;
} }
usb_status_t USB_DeviceHidMouseInit(usb_device_composite_struct_t *deviceComposite) usb_status_t UsbMouseInit(usb_device_composite_struct_t *compositeDevice)
{ {
s_UsbDeviceComposite = deviceComposite; UsbCompositeDevice = compositeDevice;
return kStatus_USB_Success; return kStatus_USB_Success;
} }

View File

@@ -10,9 +10,9 @@
// Functions: // Functions:
extern usb_status_t USB_DeviceHidMouseInit(usb_device_composite_struct_t *deviceComposite); extern usb_status_t UsbMouseInit(usb_device_composite_struct_t *deviceComposite);
extern usb_status_t USB_DeviceHidMouseCallback(class_handle_t handle, uint32_t event, void *param); extern usb_status_t UsbMouseCallback(class_handle_t handle, uint32_t event, void *param);
extern usb_status_t USB_DeviceHidMouseSetConfigure(class_handle_t handle, uint8_t configure); extern usb_status_t UsbMouseSetConfigure(class_handle_t handle, uint8_t configure);
extern usb_status_t USB_DeviceHidMouseSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting); extern usb_status_t UsbMouseSetInterface(class_handle_t handle, uint8_t interface, uint8_t alternateSetting);
#endif #endif

View File

@@ -44,22 +44,22 @@
// Functions: // Functions:
usb_status_t USB_DeviceGetDeviceDescriptor( extern usb_status_t USB_DeviceGetDeviceDescriptor(
usb_device_handle handle, usb_device_get_device_descriptor_struct_t *deviceDescriptor); usb_device_handle handle, usb_device_get_device_descriptor_struct_t *deviceDescriptor);
usb_status_t USB_DeviceGetConfigurationDescriptor( extern usb_status_t USB_DeviceGetConfigurationDescriptor(
usb_device_handle handle, usb_device_get_configuration_descriptor_struct_t *configurationDescriptor); usb_device_handle handle, usb_device_get_configuration_descriptor_struct_t *configurationDescriptor);
usb_status_t USB_DeviceGetStringDescriptor( extern usb_status_t USB_DeviceGetStringDescriptor(
usb_device_handle handle, usb_device_get_string_descriptor_struct_t *stringDescriptor); usb_device_handle handle, usb_device_get_string_descriptor_struct_t *stringDescriptor);
usb_status_t USB_DeviceGetHidDescriptor( extern 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);
usb_status_t USB_DeviceGetHidReportDescriptor( extern usb_status_t USB_DeviceGetHidReportDescriptor(
usb_device_handle handle, usb_device_get_hid_report_descriptor_struct_t *hidReportDescriptor); usb_device_handle handle, usb_device_get_hid_report_descriptor_struct_t *hidReportDescriptor);
usb_status_t USB_DeviceGetHidPhysicalDescriptor( extern usb_status_t USB_DeviceGetHidPhysicalDescriptor(
usb_device_handle handle, usb_device_get_hid_physical_descriptor_struct_t *hidPhysicalDescriptor); usb_device_handle handle, usb_device_get_hid_physical_descriptor_struct_t *hidPhysicalDescriptor);
#endif #endif

View File

@@ -34,7 +34,7 @@ static usb_device_interface_list_t UsbMouseInterfaceList[USB_DEVICE_CONFIGURATIO
UsbMouseInterfaces, UsbMouseInterfaces,
}}; }};
usb_device_class_struct_t UsbDeviceMouseClass = { usb_device_class_struct_t UsbMouseClass = {
UsbMouseInterfaceList, UsbMouseInterfaceList,
kUSB_DeviceClassTypeHid, kUSB_DeviceClassTypeHid,
USB_DEVICE_CONFIGURATION_COUNT, USB_DEVICE_CONFIGURATION_COUNT,

View File

@@ -23,7 +23,7 @@
// Variables: // Variables:
extern usb_device_class_struct_t UsbDeviceMouseClass; extern usb_device_class_struct_t UsbMouseClass;
extern uint8_t UsbMouseReportDescriptor[USB_MOUSE_REPORT_DESCRIPTOR_LENGTH]; extern uint8_t UsbMouseReportDescriptor[USB_MOUSE_REPORT_DESCRIPTOR_LENGTH];
extern uint8_t UsbMouseString[USB_MOUSE_STRING_DESCRIPTOR_LENGTH]; extern uint8_t UsbMouseString[USB_MOUSE_STRING_DESCRIPTOR_LENGTH];