Changed the signature of the CALLBACK_USB_GetDescriptor() callback function so that the descriptor pointer is const, to remove the need for extra casting inside the callback (thanks to Jonathan Kollasch).

This commit is contained in:
Dean Camera 2010-08-24 13:02:38 +00:00
parent ed8ad18f26
commit 092f82e06f
88 changed files with 460 additions and 409 deletions

View file

@ -155,41 +155,41 @@ USB_Descriptor_String_t PROGMEM RelayBoard_SerialString =
*/
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress)
const void** const DescriptorAddress)
{
const uint8_t DescriptorType = (wValue >> 8);
const uint8_t DescriptorNumber = (wValue & 0xFF);
void* Address = NULL;
uint16_t Size = NO_DESCRIPTOR;
const void* Address = NULL;
uint16_t Size = NO_DESCRIPTOR;
switch (DescriptorType)
{
case DTYPE_Device:
Address = (void*)&RelayBoard_DeviceDescriptor;
Address = &RelayBoard_DeviceDescriptor;
Size = sizeof(USB_Descriptor_Device_t);
break;
case DTYPE_Configuration:
Address = (void*)&RelayBoard_ConfigurationDescriptor;
Address = &RelayBoard_ConfigurationDescriptor;
Size = sizeof(RelayBoard_USB_Descriptor_Configuration_t);
break;
case DTYPE_String:
switch (DescriptorNumber)
{
case 0x00:
Address = (void*)&RelayBoard_LanguageString;
Address = &RelayBoard_LanguageString;
Size = pgm_read_byte(&RelayBoard_LanguageString.Header.Size);
break;
case 0x01:
Address = (void*)&RelayBoard_ManufacturerString;
Address = &RelayBoard_ManufacturerString;
Size = pgm_read_byte(&RelayBoard_ManufacturerString.Header.Size);
break;
case 0x02:
Address = (void*)&RelayBoard_ProductString;
Address = &RelayBoard_ProductString;
Size = pgm_read_byte(&RelayBoard_ProductString.Header.Size);
break;
case 0x03:
Address = (void*)&RelayBoard_SerialString;
Address = &RelayBoard_SerialString;
Size = pgm_read_byte(&RelayBoard_SerialString.Header.Size);
break;
}

View file

@ -41,7 +41,6 @@
#include <avr/pgmspace.h>
#include <LUFA/Drivers/USB/USB.h>
/* Type Defines: */
/** Type define for the device configuration descriptor structure. This must be defined in the
* application code, as the configuration descriptor contains several sub-descriptors which
@ -56,6 +55,6 @@
/* Function Prototypes: */
uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
const uint8_t wIndex,
void** const DescriptorAddress);
const void** const DescriptorAddress)
ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
#endif