diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c index a0c0d4cdc8..7ea4b2e37c 100644 --- a/tmk_core/protocol/usb_descriptor.c +++ b/tmk_core/protocol/usb_descriptor.c @@ -374,7 +374,11 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor = { .ReleaseNumber = DEVICE_VER, .ManufacturerStrIndex = 0x01, .ProductStrIndex = 0x02, +#if defined(SERIAL_NUMBER) .SerialNumStrIndex = 0x03, +#else + .SerialNumStrIndex = 0x00, +#endif .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS }; @@ -950,10 +954,7 @@ const USB_Descriptor_String_t PROGMEM ProductString = { .UnicodeString = LSTR(PRODUCT) }; -#ifndef SERIAL_NUMBER -# define SERIAL_NUMBER 0 -#endif - +#if defined(SERIAL_NUMBER) const USB_Descriptor_String_t PROGMEM SerialNumberString = { .Header = { .Size = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1), // Subtract 1 for null terminator @@ -961,6 +962,7 @@ const USB_Descriptor_String_t PROGMEM SerialNumberString = { }, .UnicodeString = LSTR(SERIAL_NUMBER) }; +#endif // clang-format on @@ -1005,11 +1007,13 @@ uint16_t get_usb_descriptor(const uint16_t wValue, const uint16_t wIndex, const Size = pgm_read_byte(&ProductString.Header.Size); break; +#if defined(SERIAL_NUMBER) case 0x03: Address = &SerialNumberString; Size = pgm_read_byte(&SerialNumberString.Header.Size); break; +#endif } break; diff --git a/tmk_core/protocol/vusb/vusb.c b/tmk_core/protocol/vusb/vusb.c index 77bbbd7bd4..9b65ba9ac7 100644 --- a/tmk_core/protocol/vusb/vusb.c +++ b/tmk_core/protocol/vusb/vusb.c @@ -531,10 +531,6 @@ const PROGMEM uchar console_hid_report[] = { }; #endif -#ifndef SERIAL_NUMBER -# define SERIAL_NUMBER 0 -#endif - #ifndef USB_MAX_POWER_CONSUMPTION # define USB_MAX_POWER_CONSUMPTION 500 #endif @@ -569,6 +565,7 @@ const PROGMEM usbStringDescriptor_t usbStringDescriptorProduct = { .bString = LSTR(PRODUCT) }; +#if defined(SERIAL_NUMBER) const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = { .header = { .bLength = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER)) - 1), @@ -576,6 +573,7 @@ const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = { }, .bString = LSTR(SERIAL_NUMBER) }; +#endif /* * Device descriptor @@ -595,7 +593,11 @@ const PROGMEM usbDeviceDescriptor_t usbDeviceDescriptor = { .bcdDevice = DEVICE_VER, .iManufacturer = 0x01, .iProduct = 0x02, +#if defined(SERIAL_NUMBER) .iSerialNumber = 0x03, +#else + .iSerialNumber = 0x00, +#endif .bNumConfigurations = 1 }; @@ -821,10 +823,12 @@ USB_PUBLIC usbMsgLen_t usbFunctionDescriptor(struct usbRequest *rq) { usbMsgPtr = (usbMsgPtr_t)&usbStringDescriptorProduct; len = usbStringDescriptorProduct.header.bLength; break; +#if defined(SERIAL_NUMBER) case 3: // iSerialNumber usbMsgPtr = (usbMsgPtr_t)&usbStringDescriptorSerial; len = usbStringDescriptorSerial.header.bLength; break; +#endif } break; case USBDESCR_HID: