@@ -177,21 +177,12 @@ uint32_t USBDeviceClass::sendConfiguration(uint32_t maxlen)
177
177
return true ;
178
178
}
179
179
180
- static void utox (uint32_t val, char * s) {
181
- // lead zero pad
182
- for (uint32_t i = 0x10000000 ; i > 1 ; i = i >> 4 ) {
183
- if (val < i) {
184
- *s++ = ' 0' ;
185
- }
186
- }
187
-
188
- // convert value to hex string
189
- utoa (val, s, 16 );
180
+ static void utox8 (uint32_t val, char * s) {
181
+ for (int i = 0 ; i < 8 ; i++) {
182
+ int d = val & 0XF ;
183
+ val = (val >> 4 );
190
184
191
- // make string uppercase
192
- while (s && *s) {
193
- *s = toupper (*s);
194
- s++;
185
+ s[7 - i] = d > 9 ? ' A' + d - 10 : ' 0' + d;
195
186
}
196
187
}
197
188
@@ -246,10 +237,10 @@ bool USBDeviceClass::sendDescriptor(USBSetup &setup)
246
237
#define SERIAL_NUMBER_WORD_3 *(volatile uint32_t *)(0x0080A048 )
247
238
248
239
char name[ISERIAL_MAX_LEN];
249
- utox (SERIAL_NUMBER_WORD_0, &name[0 ]);
250
- utox (SERIAL_NUMBER_WORD_1, &name[8 ]);
251
- utox (SERIAL_NUMBER_WORD_2, &name[16 ]);
252
- utox (SERIAL_NUMBER_WORD_3, &name[24 ]);
240
+ utox8 (SERIAL_NUMBER_WORD_0, &name[0 ]);
241
+ utox8 (SERIAL_NUMBER_WORD_1, &name[8 ]);
242
+ utox8 (SERIAL_NUMBER_WORD_2, &name[16 ]);
243
+ utox8 (SERIAL_NUMBER_WORD_3, &name[24 ]);
253
244
254
245
PluggableUSB ().getShortName (&name[32 ]);
255
246
return sendStringDescriptor ((uint8_t *)name, setup.wLength );
0 commit comments