Skip to content

Commit 9370464

Browse files
sandeepmistrycmaglie
authored andcommitted
Use SAMD21 serial number for USB serial number prefix
1 parent 4ffc9d2 commit 9370464

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

cores/arduino/USB/USBCore.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,15 @@ bool USBDeviceClass::sendDescriptor(USBSetup &setup)
221221
}
222222
else if (setup.wValueL == ISERIAL) {
223223
#ifdef PLUGGABLE_USB_ENABLED
224+
// from section 9.3.3 of the datasheet
225+
#define SERIAL_NUMBER_WORD_0 *(volatile uint32_t*)(0x0080A00C)
226+
#define SERIAL_NUMBER_WORD_1 *(volatile uint32_t*)(0x0080A040)
227+
#define SERIAL_NUMBER_WORD_2 *(volatile uint32_t*)(0x0080A044)
228+
#define SERIAL_NUMBER_WORD_3 *(volatile uint32_t*)(0x0080A048)
229+
224230
char name[ISERIAL_MAX_LEN];
225-
PluggableUSB().getShortName(name);
231+
sprintf(name, "%8X%8X%8X%8X", SERIAL_NUMBER_WORD_0, SERIAL_NUMBER_WORD_1, SERIAL_NUMBER_WORD_2, SERIAL_NUMBER_WORD_3);
232+
PluggableUSB().getShortName(&name[32]);
226233
return sendStringDescriptor((uint8_t*)name, setup.wLength);
227234
#endif
228235
}

cores/arduino/USB/USBDesc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
#define CDC_TX CDC_ENDPOINT_IN
4242
#endif
4343

44-
#define ISERIAL_MAX_LEN 33
44+
#define ISERIAL_MAX_LEN 65
4545

4646
// Defined string description
4747
#define IMANUFACTURER 1

0 commit comments

Comments
 (0)