summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tmk_core/protocol/usb_descriptor.c12
-rw-r--r--tmk_core/protocol/vusb/vusb.c12
2 files changed, 16 insertions, 8 deletions
diff --git a/tmk_core/protocol/usb_descriptor.c b/tmk_core/protocol/usb_descriptor.c
index 1d5a62aaa1..4a5edb1907 100644
--- a/tmk_core/protocol/usb_descriptor.c
+++ b/tmk_core/protocol/usb_descriptor.c
@@ -386,7 +386,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
};
@@ -994,10 +998,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
@@ -1005,6 +1006,7 @@ const USB_Descriptor_String_t PROGMEM SerialNumberString = {
},
.UnicodeString = LSTR(SERIAL_NUMBER)
};
+#endif
// clang-format on
@@ -1056,11 +1058,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 692e2cc290..95de1019ef 100644
--- a/tmk_core/protocol/vusb/vusb.c
+++ b/tmk_core/protocol/vusb/vusb.c
@@ -541,10 +541,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
@@ -579,6 +575,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),
@@ -586,6 +583,7 @@ const PROGMEM usbStringDescriptor_t usbStringDescriptorSerial = {
},
.bString = LSTR(SERIAL_NUMBER)
};
+#endif
/*
* Device descriptor
@@ -605,7 +603,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
};
@@ -831,10 +833,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: