update(core/usbh_core): check string support and then get string desc

Signed-off-by: sakumisu <1203593632@qq.com>
This commit is contained in:
sakumisu
2025-08-01 21:27:27 +08:00
parent 9ddcbf58ca
commit 20ceaced92

View File

@@ -530,35 +530,47 @@ int usbh_enumerate(struct usbh_hubport *hport)
#ifdef CONFIG_USBHOST_GET_STRING_DESC #ifdef CONFIG_USBHOST_GET_STRING_DESC
uint8_t string_buffer[128]; uint8_t string_buffer[128];
/* Get Manufacturer string */ if (hport->device_desc.iManufacturer > 0) {
memset(string_buffer, 0, 128); /* Get Manufacturer string */
ret = usbh_get_string_desc(hport, USB_STRING_MFC_INDEX, string_buffer, 128); memset(string_buffer, 0, 128);
if (ret < 0) { ret = usbh_get_string_desc(hport, USB_STRING_MFC_INDEX, string_buffer, 128);
USB_LOG_ERR("Failed to get Manufacturer string,errorcode:%d\r\n", ret); if (ret < 0) {
goto errout; USB_LOG_ERR("Failed to get Manufacturer string,errorcode:%d\r\n", ret);
goto errout;
}
USB_LOG_INFO("Manufacturer: %s\r\n", string_buffer);
} else {
USB_LOG_WRN("Do not support Manufacturer string\r\n");
} }
USB_LOG_INFO("Manufacturer: %s\r\n", string_buffer); if (hport->device_desc.iProduct > 0) {
/* Get Product string */
memset(string_buffer, 0, 128);
ret = usbh_get_string_desc(hport, USB_STRING_PRODUCT_INDEX, string_buffer, 128);
if (ret < 0) {
USB_LOG_ERR("Failed to get Product string,errorcode:%d\r\n", ret);
goto errout;
}
/* Get Product string */ USB_LOG_INFO("Product: %s\r\n", string_buffer);
memset(string_buffer, 0, 128); } else {
ret = usbh_get_string_desc(hport, USB_STRING_PRODUCT_INDEX, string_buffer, 128); USB_LOG_WRN("Do not support Product string\r\n");
if (ret < 0) {
USB_LOG_ERR("Failed to get get Product string,errorcode:%d\r\n", ret);
goto errout;
} }
USB_LOG_INFO("Product: %s\r\n", string_buffer); if (hport->device_desc.iSerialNumber > 0) {
/* Get SerialNumber string */
memset(string_buffer, 0, 128);
ret = usbh_get_string_desc(hport, USB_STRING_SERIAL_INDEX, string_buffer, 128);
if (ret < 0) {
USB_LOG_ERR("Failed to get SerialNumber string,errorcode:%d\r\n", ret);
goto errout;
}
/* Get SerialNumber string */ USB_LOG_INFO("SerialNumber: %s\r\n", string_buffer);
memset(string_buffer, 0, 128); } else {
ret = usbh_get_string_desc(hport, USB_STRING_SERIAL_INDEX, string_buffer, 128); USB_LOG_WRN("Do not support SerialNumber string\r\n");
if (ret < 0) {
USB_LOG_ERR("Failed to get get SerialNumber string,errorcode:%d\r\n", ret);
goto errout;
} }
USB_LOG_INFO("SerialNumber: %s\r\n", string_buffer);
#endif #endif
/* Select device configuration 1 */ /* Select device configuration 1 */
setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_STANDARD | USB_REQUEST_RECIPIENT_DEVICE; setup->bmRequestType = USB_REQUEST_DIR_OUT | USB_REQUEST_STANDARD | USB_REQUEST_RECIPIENT_DEVICE;