@ -156,48 +156,48 @@ USB_OSCompatibleIDDescriptor_t PROGMEM DevCompatIDs =
uint16_t CALLBACK_USB_GetDescriptor ( const uint16_t wValue ,
uint16_t CALLBACK_USB_GetDescriptor ( const uint16_t wValue ,
const uint8_t wIndex ,
const uint8_t wIndex ,
void * * const DescriptorAddress )
const void * * const DescriptorAddress )
{
{
const uint8_t DescriptorType = ( wValue > > 8 ) ;
const uint8_t DescriptorType = ( wValue > > 8 ) ;
const uint8_t DescriptorNumber = ( wValue & 0xFF ) ;
const uint8_t DescriptorNumber = ( wValue & 0xFF ) ;
void * Address = NULL ;
const void * Address = NULL ;
uint16_t Size = NO_DESCRIPTOR ;
uint16_t Size = NO_DESCRIPTOR ;
switch ( DescriptorType )
switch ( DescriptorType )
{
{
case DTYPE_Device :
case DTYPE_Device :
Address = ( void * ) & DeviceDescriptor ;
Address = & DeviceDescriptor ;
Size = sizeof ( USB_Descriptor_Device_t ) ;
Size = sizeof ( USB_Descriptor_Device_t ) ;
break ;
break ;
case DTYPE_Configuration :
case DTYPE_Configuration :
Address = ( void * ) & ConfigurationDescriptor ;
Address = & ConfigurationDescriptor ;
Size = sizeof ( USB_Descriptor_Configuration_t ) ;
Size = sizeof ( USB_Descriptor_Configuration_t ) ;
break ;
break ;
case DTYPE_String :
case DTYPE_String :
switch ( DescriptorNumber )
switch ( DescriptorNumber )
{
{
case 0x00 :
case 0x00 :
Address = ( void * ) & LanguageString ;
Address = & LanguageString ;
Size = pgm_read_byte ( & LanguageString . Header . Size ) ;
Size = pgm_read_byte ( & LanguageString . Header . Size ) ;
break ;
break ;
case 0x01 :
case 0x01 :
Address = ( void * ) & ManufacturerString ;
Address = & ManufacturerString ;
Size = pgm_read_byte ( & ManufacturerString . Header . Size ) ;
Size = pgm_read_byte ( & ManufacturerString . Header . Size ) ;
break ;
break ;
case 0x02 :
case 0x02 :
Address = ( void * ) & ProductString ;
Address = & ProductString ;
Size = pgm_read_byte ( & ProductString . Header . Size ) ;
Size = pgm_read_byte ( & ProductString . Header . Size ) ;
break ;
break ;
case 0x03 :
case 0x03 :
Address = ( void * ) & SerialNumberString ;
Address = & SerialNumberString ;
Size = pgm_read_byte ( & SerialNumberString . Header . Size ) ;
Size = pgm_read_byte ( & SerialNumberString . Header . Size ) ;
break ;
break ;
case 0xEE :
case 0xEE :
/* A Microsoft-proprietary extension. String address 0xEE is used by Windows for
/* A Microsoft-proprietary extension. String address 0xEE is used by Windows for
" OS Descriptors " , which in this case allows us to indicate that our device is
" OS Descriptors " , which in this case allows us to indicate that our device is
Sideshow compatible regardless of VID / PID values . */
Sideshow compatible regardless of VID / PID values . */
Address = ( void * ) & OSDescriptorString ;
Address = & OSDescriptorString ;
Size = pgm_read_byte ( & OSDescriptorString . Header . Size ) ;
Size = pgm_read_byte ( & OSDescriptorString . Header . Size ) ;
break ;
break ;
}
}
@ -211,7 +211,7 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
uint16_t USB_GetOSFeatureDescriptor ( const uint16_t wValue ,
uint16_t USB_GetOSFeatureDescriptor ( const uint16_t wValue ,
const uint8_t wIndex ,
const uint8_t wIndex ,
void * * const DescriptorAddress )
const void * * const DescriptorAddress )
{
{
void * Address = NULL ;
void * Address = NULL ;
uint16_t Size = NO_DESCRIPTOR ;
uint16_t Size = NO_DESCRIPTOR ;