From b01ebe2d3774dfba696cf586221f6352d6cd0503 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 3 Sep 2012 20:26:34 +0000 Subject: [PATCH] Alter the AVRISP-MKII clone project code to report a different serial number in libUSB compatibility mode, so that both the Jungo drivers and the libUSB drivers can be installed at the same time (and switched back and forth based on the current compatibility mode). --- Projects/AVRISP-MKII/AVRISPDescriptors.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Projects/AVRISP-MKII/AVRISPDescriptors.c b/Projects/AVRISP-MKII/AVRISPDescriptors.c index 9ad7c15457..066dcf414c 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; }