@@ -180,22 +180,8 @@ static const pbdrv_usb_ev3_conf_1_union_t configuration_1_desc_fs = {
180180 }
181181};
182182
183- typedef struct PBDRV_PACKED {
184- uint8_t bLength ;
185- uint8_t bDescriptorType ;
186- uint16_t langID [1 ];
187- } pbdrv_usb_langid_t ;
188- PBDRV_USB_TYPE_PUNNING_HELPER (pbdrv_usb_langid );
189-
190- pbdrv_usb_langid_union_t usb_str_desc_langid = {
191- .s = {
192- .bLength = 4 ,
193- .bDescriptorType = DESC_TYPE_STRING ,
194- .langID = {0x0409 }, // English (United States)
195- }
196- };
197-
198- // We generate string descriptors at runtime, so this dynamic buffer is needed
183+ // We generate a serial number string descriptors at runtime
184+ // so this dynamic buffer is needed
199185#define STRING_DESC_MAX_SZ 64
200186static union {
201187 uint8_t b [STRING_DESC_MAX_SZ ];
@@ -456,36 +442,18 @@ static bool usb_get_descriptor(uint16_t wValue) {
456442 case DESC_TYPE_STRING :
457443 switch (desc_idx ) {
458444 case STRING_DESC_LANGID :
459- pbdrv_usb_setup_data_to_send = usb_str_desc_langid .u ;
460- pbdrv_usb_setup_data_to_send_sz = sizeof (usb_str_desc_langid );
445+ pbdrv_usb_setup_data_to_send = pbdrv_usb_str_desc_langid .u ;
446+ pbdrv_usb_setup_data_to_send_sz = sizeof (pbdrv_usb_str_desc_langid . s );
461447 return true;
462448
463449 case STRING_DESC_MFG :
464- usb_string_desc_buffer .b [1 ] = DESC_TYPE_STRING ;
465- i = 0 ;
466- while (PBDRV_CONFIG_USB_MFG_STR [i ]) {
467- usb_string_desc_buffer .b [2 + 2 * i ] = PBDRV_CONFIG_USB_MFG_STR [i ];
468- usb_string_desc_buffer .b [2 + 2 * i + 1 ] = 0 ;
469- i ++ ;
470- }
471- usb_string_desc_buffer .b [0 ] = 2 * i + 2 ;
472-
473- pbdrv_usb_setup_data_to_send = usb_string_desc_buffer .u ;
474- pbdrv_usb_setup_data_to_send_sz = usb_string_desc_buffer .b [0 ];
450+ pbdrv_usb_setup_data_to_send = pbdrv_usb_str_desc_mfg .u ;
451+ pbdrv_usb_setup_data_to_send_sz = pbdrv_usb_str_desc_mfg .s .bLength ;
475452 return true;
476453
477454 case STRING_DESC_PRODUCT :
478- usb_string_desc_buffer .b [1 ] = DESC_TYPE_STRING ;
479- i = 0 ;
480- while (PBDRV_CONFIG_USB_PROD_STR [i ]) {
481- usb_string_desc_buffer .b [2 + 2 * i ] = PBDRV_CONFIG_USB_PROD_STR [i ];
482- usb_string_desc_buffer .b [2 + 2 * i + 1 ] = 0 ;
483- i ++ ;
484- }
485- usb_string_desc_buffer .b [0 ] = 2 * i + 2 ;
486-
487- pbdrv_usb_setup_data_to_send = usb_string_desc_buffer .u ;
488- pbdrv_usb_setup_data_to_send_sz = usb_string_desc_buffer .b [0 ];
455+ pbdrv_usb_setup_data_to_send = pbdrv_usb_str_desc_prod .u ;
456+ pbdrv_usb_setup_data_to_send_sz = pbdrv_usb_str_desc_prod .s .bLength ;
489457 return true;
490458
491459 case STRING_DESC_SERIAL :
0 commit comments