Przeglądaj źródła

Adds serial number string to USB descriptors (#1996)

* add serial number string to usb descriptors

* better name for serial number
Jack Humbert 7 lat temu
rodzic
commit
f5a9758cea
1 zmienionych plików z 17 dodań i 1 usunięć
  1. 17 1
      tmk_core/protocol/lufa/descriptor.c

+ 17 - 1
tmk_core/protocol/lufa/descriptor.c

@@ -275,7 +275,7 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
 
     .ManufacturerStrIndex   = 0x01,
     .ProductStrIndex        = 0x02,
-    .SerialNumStrIndex      = NO_DESCRIPTOR,
+    .SerialNumStrIndex      = 0x03,
 
     .NumberOfConfigurations = FIXED_NUM_CONFIGURATIONS
 };
@@ -860,6 +860,18 @@ const USB_Descriptor_String_t PROGMEM ProductString =
     .UnicodeString          = LSTR(PRODUCT)
 };
 
+#ifndef SERIAL_NUMBER
+    #define SERIAL_NUMBER 0
+#endif
+
+const USB_Descriptor_String_t PROGMEM SerialNumberString =
+{
+    /* subtract 1 for null terminator */
+    .Header                 = {.Size = USB_STRING_LEN(sizeof(STR(SERIAL_NUMBER))-1), .Type = DTYPE_String},
+
+    .UnicodeString          = LSTR(SERIAL_NUMBER)
+};
+
 
 /** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
  *  documentation) by the application code so that the address and size of a requested descriptor can be given
@@ -902,6 +914,10 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                     Address = &ProductString;
                     Size    = pgm_read_byte(&ProductString.Header.Size);
                     break;
+                case 0x03:
+                    Address = &SerialNumberString;
+                    Size    = pgm_read_byte(&SerialNumberString.Header.Size);
+                    break;
             }
             break;
         case HID_DTYPE_HID: