projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Oops - Bootloader optimizations to GetDescriptor() don't work, as the Configuration...
[pub/USBasp.git]
/
Bootloaders
/
HID
/
Descriptors.c
diff --git
a/Bootloaders/HID/Descriptors.c
b/Bootloaders/HID/Descriptors.c
index
f79d346
..
fef43ab
100644
(file)
--- a/
Bootloaders/HID/Descriptors.c
+++ b/
Bootloaders/HID/Descriptors.c
@@
-154,23
+154,33
@@
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
\r
const void** const DescriptorAddress)
\r
{
\r
const uint8_t wIndex,
\r
const void** const DescriptorAddress)
\r
{
\r
- const uint8_t DescriptorType = (wValue >> 8);
\r
+ const uint8_t DescriptorType
= (wValue >> 8);
\r
\r
const void* Address = NULL;
\r
uint16_t Size = NO_DESCRIPTOR;
\r
\r
\r
const void* Address = NULL;
\r
uint16_t Size = NO_DESCRIPTOR;
\r
\r
+ /* If/Else If chain compiles slightly smaller than a switch case */
\r
if (DescriptorType == DTYPE_Device)
\r
if (DescriptorType == DTYPE_Device)
\r
- Address = &DeviceDescriptor;
\r
+ {
\r
+ Address = &DeviceDescriptor;
\r
+ Size = sizeof(USB_Descriptor_Device_t);
\r
+ }
\r
else if (DescriptorType == DTYPE_Configuration)
\r
else if (DescriptorType == DTYPE_Configuration)
\r
- Address = &ConfigurationDescriptor;
\r
+ {
\r
+ Address = &ConfigurationDescriptor;
\r
+ Size = sizeof(USB_Descriptor_Configuration_t);
\r
+ }
\r
else if (DescriptorType == HID_DTYPE_HID)
\r
else if (DescriptorType == HID_DTYPE_HID)
\r
- Address = &ConfigurationDescriptor.HID_VendorHID;
\r
+ {
\r
+ Address = &ConfigurationDescriptor.HID_VendorHID;
\r
+ Size = sizeof(USB_HID_Descriptor_HID_t);
\r
+ }
\r
else
\r
else
\r
- Address = &HIDReport;
\r
+ {
\r
+ Address = &HIDReport;
\r
+ Size = sizeof(HIDReport);
\r
+ }
\r
\r
\r
- if (Address != NULL)
\r
- Size = (Address == &HIDReport) ? sizeof(HIDReport) : ((USB_Descriptor_Header_t*)Address)->Size;
\r
-
\r
*DescriptorAddress = Address;
\r
return Size;
\r
}
\r
*DescriptorAddress = Address;
\r
return Size;
\r
}
\r