@@ -124,13 +124,18 @@ void tuh_mount_cb(uint8_t daddr) {
124
124
}
125
125
126
126
printf ("Device %u: ID %04x:%04x SN " , daddr , desc .device .idVendor , desc .device .idProduct );
127
- xfer_result = tuh_descriptor_get_serial_string_sync (daddr , LANGUAGE_ID , desc .serial , sizeof (desc .serial ));
127
+
128
+ xfer_result = XFER_RESULT_FAILED ;
129
+ if (desc .device .iSerialNumber != 0 ) {
130
+ xfer_result = tuh_descriptor_get_serial_string_sync (daddr , LANGUAGE_ID , desc .serial , sizeof (desc .serial ));
131
+ }
128
132
if (XFER_RESULT_SUCCESS != xfer_result ) {
129
133
uint16_t * serial = (uint16_t * )(uintptr_t ) desc .serial ;
130
- serial [0 ] = 'n' ;
131
- serial [1 ] = '/' ;
132
- serial [2 ] = 'a' ;
133
- serial [3 ] = 0 ;
134
+ serial [0 ] = (uint16_t ) ((TUSB_DESC_STRING << 8 ) | (2 * 3 + 2 ));
135
+ serial [1 ] = 'n' ;
136
+ serial [2 ] = '/' ;
137
+ serial [3 ] = 'a' ;
138
+ serial [4 ] = 0 ;
134
139
}
135
140
print_utf16 ((uint16_t * )(uintptr_t ) desc .serial , sizeof (desc .serial )/2 );
136
141
printf ("\r\n" );
@@ -150,16 +155,20 @@ void tuh_mount_cb(uint8_t daddr) {
150
155
// Get String descriptor using Sync API
151
156
152
157
printf (" iManufacturer %u " , desc .device .iManufacturer );
153
- xfer_result = tuh_descriptor_get_manufacturer_string_sync (daddr , LANGUAGE_ID , desc .buf , sizeof (desc .buf ));
154
- if (XFER_RESULT_SUCCESS == xfer_result ) {
155
- print_utf16 ((uint16_t * )(uintptr_t ) desc .buf , sizeof (desc .buf )/2 );
158
+ if (desc .device .iManufacturer != 0 ) {
159
+ xfer_result = tuh_descriptor_get_manufacturer_string_sync (daddr , LANGUAGE_ID , desc .buf , sizeof (desc .buf ));
160
+ if (XFER_RESULT_SUCCESS == xfer_result ) {
161
+ print_utf16 ((uint16_t * )(uintptr_t ) desc .buf , sizeof (desc .buf )/2 );
162
+ }
156
163
}
157
164
printf ("\r\n" );
158
165
159
166
printf (" iProduct %u " , desc .device .iProduct );
160
- xfer_result = tuh_descriptor_get_product_string_sync (daddr , LANGUAGE_ID , desc .buf , sizeof (desc .buf ));
161
- if (XFER_RESULT_SUCCESS == xfer_result ) {
162
- print_utf16 ((uint16_t * )(uintptr_t ) desc .buf , sizeof (desc .buf )/2 );
167
+ if (desc .device .iProduct != 0 ) {
168
+ xfer_result = tuh_descriptor_get_product_string_sync (daddr , LANGUAGE_ID , desc .buf , sizeof (desc .buf ));
169
+ if (XFER_RESULT_SUCCESS == xfer_result ) {
170
+ print_utf16 ((uint16_t * )(uintptr_t ) desc .buf , sizeof (desc .buf )/2 );
171
+ }
163
172
}
164
173
printf ("\r\n" );
165
174
0 commit comments