Add USB_STRING_DESCRIPTOR and make the Keyboard demo use it.
authorLászló Monda <laci@monda.hu>
Fri, 3 Jan 2014 23:14:45 +0000 (00:14 +0100)
committerDean Camera <dean@fourwalledcubicle.com>
Tue, 7 Jan 2014 23:36:18 +0000 (10:36 +1100)
Demos/Device/ClassDriver/Keyboard/Descriptors.c
LUFA/Drivers/USB/Core/StdDescriptors.h

index d5268a7..b14c5d6 100644 (file)
@@ -142,34 +142,19 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
  *  the string descriptor with index 0 (the first index). It is actually an array of 16-bit integers, which indicate
  *  via the language ID table available at USB.org what languages the device supports for its string descriptors.
  */
-const USB_Descriptor_String_t PROGMEM LanguageString =
-{
-       .Header                 = {.Size = USB_STRING_LEN(1), .Type = DTYPE_String},
-
-       .UnicodeString          = {LANGUAGE_ID_ENG}
-};
+const USB_Descriptor_String_t PROGMEM LanguageString = USB_STRING_DESCRIPTOR(LANGUAGE_ID_ENG);
 
 /** Manufacturer descriptor string. This is a Unicode string containing the manufacturer's details in human readable
  *  form, and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
  *  Descriptor.
  */
-const USB_Descriptor_String_t PROGMEM ManufacturerString =
-{
-       .Header                 = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
-
-       .UnicodeString          = L"Dean Camera"
-};
+const USB_Descriptor_String_t PROGMEM ManufacturerString = USB_STRING_DESCRIPTOR(L"Dean Camera");
 
 /** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
  *  and is read out upon request by the host when the appropriate string ID is requested, listed in the Device
  *  Descriptor.
  */
-const USB_Descriptor_String_t PROGMEM ProductString =
-{
-       .Header                 = {.Size = USB_STRING_LEN(18), .Type = DTYPE_String},
-
-       .UnicodeString          = L"LUFA Keyboard Demo"
-};
+const USB_Descriptor_String_t PROGMEM ProductString = USB_STRING_DESCRIPTOR(L"LUFA Keyboard Demo");
 
 /** 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
index 65c783b..cfd42c4 100644 (file)
                                #endif
                        } ATTR_PACKED USB_Descriptor_String_t;
 
+                       /** Convenience macro to easily create \ref USB_Descriptor_String_t instances without having to count characters. */
+                       #define USB_STRING_DESCRIPTOR(string) {.Header = {.Size = sizeof(string), .Type = DTYPE_String}, .UnicodeString = string}
+
                        /** \brief Standard USB String Descriptor (USB-IF naming conventions).
                         *
                         *  Type define for a standard string descriptor. Unlike other standard descriptors, the length