aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Projects/AVRISP-MKII/AVRISPDescriptors.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/Projects/AVRISP-MKII/AVRISPDescriptors.c b/Projects/AVRISP-MKII/AVRISPDescriptors.c
index 9ad7c1545..066dcf414 100644
--- a/Projects/AVRISP-MKII/AVRISPDescriptors.c
+++ b/Projects/AVRISP-MKII/AVRISPDescriptors.c
@@ -174,7 +174,7 @@ const USB_Descriptor_String_t PROGMEM AVRISP_ProductString =
/** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
* series of uppercase hexadecimal digits.
*/
-const USB_Descriptor_String_t PROGMEM AVRISP_SerialString =
+USB_Descriptor_String_t AVRISP_SerialString =
{
.Header = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
@@ -233,7 +233,12 @@ uint16_t AVRISP_GetDescriptor(const uint16_t wValue,
break;
case 0x03:
Address = &AVRISP_SerialString;
- Size = pgm_read_byte(&AVRISP_SerialString.Header.Size);
+ Size = AVRISP_SerialString.Header.Size;
+
+ /* Update serial number to have a different serial based on the current endpoint address */
+ ((uint16_t*)&AVRISP_SerialString.UnicodeString)[6] = cpu_to_le16('0' + (AVRISP_DATA_IN_EPADDR & ENDPOINT_EPNUM_MASK));
+
+ *DescriptorMemorySpace = MEMSPACE_RAM;
break;
}