mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-31 05:52:55 +08:00
fix descriptor minor issue
This commit is contained in:
parent
4342325ee1
commit
2bff2a7d97
@ -146,8 +146,8 @@ void print_greeting(void)
|
||||
|
||||
printf("This DEVICE demo is configured to support:");
|
||||
printf(" - RTOS = %s\n", rtos_name[CFG_TUSB_OS]);
|
||||
if (CFG_TUD_HID_MOUSE ) puts(" - HID Mouse");
|
||||
if (CFG_TUD_HID_KEYBOARD ) puts(" - HID Keyboard");
|
||||
if (CFG_TUD_MSC ) puts(" - Mass Storage");
|
||||
if (CFG_TUD_CDC ) puts(" - Communication Device Class");
|
||||
if (CFG_TUD_MSC ) puts(" - Mass Storage");
|
||||
if (CFG_TUD_HID_KEYBOARD ) puts(" - HID Keyboard");
|
||||
if (CFG_TUD_HID_MOUSE ) puts(" - HID Mouse");
|
||||
}
|
||||
|
@ -66,6 +66,17 @@ uint16_t const * const string_desc_arr [] =
|
||||
// 5: MSC Interface
|
||||
TUD_DESC_STRCONV('t','u','s','b',' ','m','s','c'),
|
||||
#endif
|
||||
|
||||
#if CFG_TUD_HID_KEYBOARD
|
||||
// 6: Keyboard
|
||||
TUD_DESC_STRCONV('t','u','s','b',' ','k','e','y','b','o','a','r','d'),
|
||||
#endif
|
||||
|
||||
#if CFG_TUD_HID_MOUSE
|
||||
// 7: Mouse
|
||||
TUD_DESC_STRCONV('t','u','s','b',' ','m', 'o','u','s','e'),
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
// tud_desc_set is required by tinyusb stack
|
||||
|
@ -310,6 +310,36 @@ static void usbd_reset(uint8_t rhport)
|
||||
{
|
||||
if ( usbd_class_drivers[i].reset ) usbd_class_drivers[i].reset( rhport );
|
||||
}
|
||||
|
||||
#if CFG_TUD_DESC_AUTO
|
||||
extern tusb_desc_device_t const _desc_auto_device;
|
||||
extern uint8_t const * const _desc_auto_config;
|
||||
|
||||
tud_desc_set.device = &_desc_auto_device;
|
||||
tud_desc_set.config = _desc_auto_config;
|
||||
|
||||
#if CFG_TUD_HID_BOOT_PROTOCOL
|
||||
|
||||
#if CFG_TUD_HID_KEYBOARD
|
||||
extern uint8_t const _desc_auto_hid_kbd_report[];
|
||||
tud_desc_set.hid_report.boot_keyboard = _desc_auto_hid_kbd_report;
|
||||
#endif
|
||||
|
||||
#if CFG_TUD_HID_MOUSE && CFG_TUD_HID_BOOT_PROTOCOL
|
||||
extern uint8_t const _desc_auto_hid_mse_report[];
|
||||
tud_desc_set.hid_report.boot_mouse = _desc_auto_hid_kbd_report;
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#if CFG_TUD_HID_KEYBOARD + CFG_TUD_HID_MOUSE
|
||||
tud_desc_set.hid_report.composite = ;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif // CFG_TUD_DESC_AUTO
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------+
|
||||
@ -410,16 +440,9 @@ static tusb_error_t proc_set_config_req(uint8_t rhport, uint8_t config_number)
|
||||
_usbd_dev.config_num = config_number;
|
||||
|
||||
//------------- parse configuration & open drivers -------------//
|
||||
#if CFG_TUD_DESC_AUTO
|
||||
extern uint8_t const * const _desc_auto_config;
|
||||
uint8_t const * desc_cfg = _desc_auto_config;
|
||||
#else
|
||||
uint8_t const * desc_cfg = tud_desc_set.config;
|
||||
TU_ASSERT(desc_cfg != NULL, TUSB_ERROR_DESCRIPTOR_CORRUPTED);
|
||||
#endif
|
||||
|
||||
uint8_t const * p_desc = desc_cfg + sizeof(tusb_desc_configuration_t);
|
||||
|
||||
uint16_t const cfg_len = ((tusb_desc_configuration_t*)desc_cfg)->wTotalLength;
|
||||
|
||||
while( p_desc < desc_cfg + cfg_len )
|
||||
@ -473,25 +496,15 @@ static uint16_t get_descriptor(uint8_t rhport, tusb_control_request_t const * co
|
||||
uint8_t const * desc_data = NULL ;
|
||||
uint16_t len = 0;
|
||||
|
||||
tud_desc_set_t descs = tud_desc_set;
|
||||
|
||||
#if CFG_TUD_DESC_AUTO
|
||||
extern tusb_desc_device_t const _desc_auto_device;
|
||||
extern uint8_t const * const _desc_auto_config;
|
||||
|
||||
descs.device = (uint8_t const*) &_desc_auto_device;
|
||||
descs.config = _desc_auto_config;
|
||||
#endif
|
||||
|
||||
switch(desc_type)
|
||||
{
|
||||
case TUSB_DESC_DEVICE:
|
||||
desc_data = descs.device;
|
||||
desc_data = tud_desc_set.device;
|
||||
len = sizeof(tusb_desc_device_t);
|
||||
break;
|
||||
|
||||
case TUSB_DESC_CONFIGURATION:
|
||||
desc_data = descs.config;
|
||||
desc_data = tud_desc_set.config;
|
||||
len = ((tusb_desc_configuration_t const*) desc_data)->wTotalLength;
|
||||
break;
|
||||
|
||||
@ -499,7 +512,7 @@ static uint16_t get_descriptor(uint8_t rhport, tusb_control_request_t const * co
|
||||
// windows sometimes ask for string at index 238 !!!
|
||||
if ( !(desc_index < 100) ) return 0;
|
||||
|
||||
desc_data = descs.string_arr[desc_index];
|
||||
desc_data = tud_desc_set.string_arr[desc_index];
|
||||
VERIFY( desc_data != NULL, 0 );
|
||||
|
||||
len = desc_data[0]; // first byte of descriptor is its size
|
||||
|
@ -511,7 +511,7 @@ desc_auto_cfg_t const _desc_auto_config_struct =
|
||||
.bDescriptorType = TUSB_DESC_INTERFACE,
|
||||
.bInterfaceNumber = ITF_NUM_HID_KBD,
|
||||
.bAlternateSetting = 0x00,
|
||||
.bNumEndpoints = 2,
|
||||
.bNumEndpoints = 1,
|
||||
.bInterfaceClass = TUSB_CLASS_HID,
|
||||
.bInterfaceSubClass = HID_SUBCLASS_BOOT,
|
||||
.bInterfaceProtocol = HID_PROTOCOL_KEYBOARD,
|
||||
@ -629,9 +629,6 @@ desc_auto_cfg_t const _desc_auto_config_struct =
|
||||
|
||||
uint8_t const * const _desc_auto_config = (uint8_t const*) &_desc_auto_config_struct;
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/*------------------------------------------------------------------*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user