Эх сурвалжийг харах

update: add langid in string desc

sakumisu 1 жил өмнө
parent
commit
66b893e64f

+ 0 - 4
cherryusb_config_template.h

@@ -33,10 +33,6 @@
 
 /* ================= USB Device Stack Configuration ================ */
 
-#ifndef CONFIG_USBDEV_STRING_LANGID
-#define CONFIG_USBDEV_STRING_LANGID 0x0409
-#endif
-
 /* Ep0 in and out transfer buffer */
 #ifndef CONFIG_USBDEV_REQUEST_BUFFER_LEN
 #define CONFIG_USBDEV_REQUEST_BUFFER_LEN 512

+ 9 - 10
core/usbd_core.c

@@ -187,22 +187,21 @@ static bool usbd_get_descriptor(uint8_t busid, uint16_t type_index, uint8_t **da
                 desc = (uint8_t *)g_usbd_core[busid].descriptors->msosv1_descriptor->string;
                 desc_len = g_usbd_core[busid].descriptors->msosv1_descriptor->string[0];
             } else {
-                if (index == USB_STRING_LANGID_INDEX) {
-                    uint16_t STRING_LANGID = CONFIG_USBDEV_STRING_LANGID;
+                string = g_usbd_core[busid].descriptors->string_descriptor_callback(g_usbd_core[busid].speed, index);
+                if (string == NULL) {
+                    found = false;
+                    break;
+                }
 
-                    (*data)[0] = 0x04;
+                if (index == USB_STRING_LANGID_INDEX) {
+                    (*data)[0] = 4;
                     (*data)[1] = USB_DESCRIPTOR_TYPE_STRING;
-                    (*data)[2] = (uint8_t)(STRING_LANGID & 0xff);
-                    (*data)[3] = (uint8_t)((STRING_LANGID & 0xff00) >> 8);
+                    (*data)[2] = string[0];
+                    (*data)[3] = string[1];
 
                     *len = 4;
                     return true;
                 }
-                string = g_usbd_core[busid].descriptors->string_descriptor_callback(g_usbd_core[busid].speed, index);
-                if (string == NULL) {
-                    found = false;
-                    break;
-                }
 
                 uint16_t str_size = strlen(string);
                 uint16_t total_size = 2 * str_size + 2;

+ 3 - 2
demo/cdc_acm_msc_template.c

@@ -63,8 +63,9 @@ static const uint8_t device_quality_descriptor[] = {
 };
 
 static const char *string_descriptors[] = {
+    (const char[]){ 0x09, 0x04 }, /* Langid */
     "CherryUSB",                  /* Manufacturer */
-    "CherryUSB CDC DEMO",         /* Product */
+    "CherryUSB CDC MSC DEMO",     /* Product */
     "2022123456",                 /* Serial Number */
 };
 
@@ -88,7 +89,7 @@ static const char *string_descriptor_callback(uint8_t speed, uint8_t index)
     if (index > 3) {
         return NULL;
     }
-    return string_descriptors[index - 1];
+    return string_descriptors[index];
 }
 
 const struct usb_descriptor cdc_msc_descriptor = {