Skip to content
Snippets Groups Projects
Commit 113df487 authored by Dean Camera's avatar Dean Camera
Browse files

Fix up MissileLauncher demo's ConfigurationDescriptor.c so that it uses the...

Fix up MissileLauncher demo's ConfigurationDescriptor.c so that it uses the new USB_GetDeviceConfigDescriptor() function parameters.
parent 0e2ffebb
Branches
Tags
No related merge requests found
...@@ -24,9 +24,9 @@ ...@@ -24,9 +24,9 @@
* - Remake AVRStudio project files * - Remake AVRStudio project files
* - Add detailed overviews of how each demo works * - Add detailed overviews of how each demo works
* - Master LUFA include file rather than per-module includes * - Master LUFA include file rather than per-module includes
* - Add multiple-report HID demo to the library * - Add multiple-report HID device demo to the library
* - Add dual role Mouse Host/Keyboard Device demo to the library * - Add dual role Mouse Host/Keyboard Device demo to the library
* - Add Mouse/CDC dual class demo to the library * - Add Mouse/CDC dual class device demo to the library
* - Change makefiles to allow for absolute LUFA location to be used * - Change makefiles to allow for absolute LUFA location to be used
* - Port LUFA to other architectures * - Port LUFA to other architectures
* -# AVR32 UC3B series microcontrollers * -# AVR32 UC3B series microcontrollers
......
...@@ -47,31 +47,26 @@ ...@@ -47,31 +47,26 @@
*/ */
uint8_t ProcessConfigurationDescriptor(void) uint8_t ProcessConfigurationDescriptor(void)
{ {
uint8_t* ConfigDescriptorData; uint8_t ConfigDescriptorData[512];
uint16_t ConfigDescriptorSize; uint8_t* CurrConfigLocation = ConfigDescriptorData;
uint16_t CurrConfigBytesRem;
uint8_t FoundEndpoints = 0; uint8_t FoundEndpoints = 0;
/* Get Configuration Descriptor size from the device */
if (USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)
return ControlError;
/* Ensure that the Configuration Descriptor isn't too large */
if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)
return DescriptorTooLarge;
/* Allocate enough memory for the entire config descriptor */
ConfigDescriptorData = alloca(ConfigDescriptorSize);
/* Retrieve the entire configuration descriptor into the allocated buffer */ /* Retrieve the entire configuration descriptor into the allocated buffer */
USB_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData); switch (USB_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
{
/* Validate returned data - ensure first entry is a configuration header descriptor */ case HOST_GETCONFIG_Successful:
if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration) break;
case HOST_GETCONFIG_InvalidData:
return InvalidConfigDataReturned; return InvalidConfigDataReturned;
case HOST_GETCONFIG_BuffOverflow:
return DescriptorTooLarge;
default:
return ControlError;
}
/* Get the HID interface from the configuration descriptor */ /* Get the HID interface from the configuration descriptor */
if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DComp_NextHIDInterface) != DESCRIPTOR_SEARCH_COMP_Found) DComp_NextHIDInterface) != DESCRIPTOR_SEARCH_COMP_Found)
{ {
/* Descriptor not found, error out */ /* Descriptor not found, error out */
...@@ -81,7 +76,7 @@ uint8_t ProcessConfigurationDescriptor(void) ...@@ -81,7 +76,7 @@ uint8_t ProcessConfigurationDescriptor(void)
while (FoundEndpoints != ((1 << HID_DATA_IN_PIPE) | (1 << HID_DATA_OUT_PIPE))) while (FoundEndpoints != ((1 << HID_DATA_IN_PIPE) | (1 << HID_DATA_OUT_PIPE)))
{ {
/* Get the next HID interface's data endpoint descriptor */ /* Get the next HID interface's data endpoint descriptor */
if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
DComp_NextInterfaceHIDDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found) DComp_NextInterfaceHIDDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
{ {
/* Not all HID devices have an OUT endpoint - if we've reached the end of the HID descriptor /* Not all HID devices have an OUT endpoint - if we've reached the end of the HID descriptor
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment