X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/544027da185fbfb51461460c607f956ccee9e54b..9da01ee78b59bcaed0d73e3f77d2f284885bfc76:/Projects/AVRISP-MKII/AVRISPDescriptors.c diff --git a/Projects/AVRISP-MKII/AVRISPDescriptors.c b/Projects/AVRISP-MKII/AVRISPDescriptors.c index ab30c0eaf..066dcf414 100644 --- a/Projects/AVRISP-MKII/AVRISPDescriptors.c +++ b/Projects/AVRISP-MKII/AVRISPDescriptors.c @@ -38,7 +38,7 @@ #include "AVRISPDescriptors.h" #if defined(RESET_TOGGLES_LIBUSB_COMPAT) || defined(__DOXYGEN__) - /** Indicates if an external reset has ocurred and the compatibility mode needs to be altered */ + /** Indicates if an external reset has occurred and the compatibility mode needs to be altered */ static bool AVRISP_NeedCompatibilitySwitch ATTR_NO_INIT; /** Current AVRISP data IN endpoint address. */ @@ -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; } @@ -255,7 +260,7 @@ uint16_t AVRISP_GetDescriptor(const uint16_t wValue, */ void CheckExternalReset(void) { - /* If an external reset occured, we need to change compatibility mode */ + /* If an external reset occurred, we need to change compatibility mode */ AVRISP_NeedCompatibilitySwitch = (MCUSR == (1 << EXTRF)); MCUSR = 0;