Rename the Doxygen page source directory from ManPages/ to DoxygenPages/ to prevent...
[pub/USBasp.git] / Bootloaders / CDC / Descriptors.c
index 8973c4e..2b00d1e 100644 (file)
@@ -104,7 +104,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
 
        .CDC_Functional_Header =
                {
-                       .Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalHeader_t), .Type = DTYPE_CSInterface},
+                       .Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
                        .Subtype                = 0x00,
 
                        .CDCSpecification       = VERSION_BCD(01.10),
@@ -112,7 +112,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
 
        .CDC_Functional_ACM =
                {
-                       .Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalACM_t), .Type = DTYPE_CSInterface},
+                       .Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
                        .Subtype                = 0x02,
 
                        .Capabilities           = 0x04,
@@ -120,7 +120,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
 
        .CDC_Functional_Union =
                {
-                       .Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalUnion_t), .Type = DTYPE_CSInterface},
+                       .Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
                        .Subtype                = 0x06,
 
                        .MasterInterfaceNumber  = 0,
@@ -131,7 +131,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_NOTIFICATION_EPNUM),
+                       .EndpointAddress        = (ENDPOINT_DIR_IN | CDC_NOTIFICATION_EPNUM),
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = CDC_NOTIFICATION_EPSIZE,
                        .PollingIntervalMS      = 0xFF
@@ -157,7 +157,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | CDC_RX_EPNUM),
+                       .EndpointAddress        = (ENDPOINT_DIR_OUT | CDC_RX_EPNUM),
                        .Attributes             = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = CDC_TXRX_EPSIZE,
                        .PollingIntervalMS      = 0x01
@@ -167,7 +167,7 @@ const USB_Descriptor_Configuration_t ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | CDC_TX_EPNUM),
+                       .EndpointAddress        = (ENDPOINT_DIR_IN | CDC_TX_EPNUM),
                        .Attributes             = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = CDC_TXRX_EPSIZE,
                        .PollingIntervalMS      = 0x01
@@ -206,29 +206,38 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
                                     const uint8_t wIndex,
                                     const void** const DescriptorAddress)
 {
-       const uint8_t DescriptorType   = (wValue >> 8);
-       const uint8_t DescriptorNumber = (wValue & 0xFF);
+       const uint8_t  DescriptorType   = (wValue >> 8);
+       const uint8_t  DescriptorNumber = (wValue & 0xFF);
 
        const void* Address = NULL;
+       uint16_t    Size    = NO_DESCRIPTOR;
 
        switch (DescriptorType)
        {
                case DTYPE_Device:
                        Address = &DeviceDescriptor;
+                       Size    = sizeof(USB_Descriptor_Device_t);
                        break;
                case DTYPE_Configuration:
                        Address = &ConfigurationDescriptor;
+                       Size    = sizeof(USB_Descriptor_Configuration_t);
                        break;
                case DTYPE_String:
                        if (!(DescriptorNumber))
-                         Address = &LanguageString;
+                       {
+                               Address = &LanguageString;
+                               Size    = LanguageString.Header.Size;
+                       }
                        else
-                         Address = &ProductString;
+                       {
+                               Address = &ProductString;
+                               Size    = ProductString.Header.Size;
+                       }
 
                        break;
        }
 
        *DescriptorAddress = Address;
-       return (Address != NULL) ? ((USB_Descriptor_Header_t*)Address)->Size : NO_DESCRIPTOR;
+       return Size;
 }