Remove ConfigDescriptor.c/.h files from the ClassDriver Host demos, as they will...
authorDean Camera <dean@fourwalledcubicle.com>
Mon, 15 Jun 2009 13:42:34 +0000 (13:42 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Mon, 15 Jun 2009 13:42:34 +0000 (13:42 +0000)
35 files changed:
Demos/Host/ClassDriver/CDCHost/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/CDCHost/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/GenericHIDHost/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/GenericHIDHost/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/GenericHIDHost/GenericHIDHost.h
Demos/Host/ClassDriver/GenericHIDHost/makefile
Demos/Host/ClassDriver/KeyboardHost/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/KeyboardHost/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.h
Demos/Host/ClassDriver/KeyboardHost/makefile
Demos/Host/ClassDriver/KeyboardHostWithParser/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/KeyboardHostWithParser/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/KeyboardHostWithParser/HIDReport.h
Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.h
Demos/Host/ClassDriver/KeyboardHostWithParser/makefile
Demos/Host/ClassDriver/MassStorageHost/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/MassStorageHost/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h
Demos/Host/ClassDriver/MassStorageHost/makefile
Demos/Host/ClassDriver/MouseHost/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/MouseHost/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/MouseHost/MouseHost.h
Demos/Host/ClassDriver/MouseHost/makefile
Demos/Host/ClassDriver/MouseHostWithParser/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/MouseHostWithParser/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/MouseHostWithParser/HIDReport.h
Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
Demos/Host/ClassDriver/MouseHostWithParser/makefile
Demos/Host/ClassDriver/StillImageHost/ConfigDescriptor.c [deleted file]
Demos/Host/ClassDriver/StillImageHost/ConfigDescriptor.h [deleted file]
Demos/Host/ClassDriver/StillImageHost/StillImageHost.h
Demos/Host/ClassDriver/StillImageHost/makefile
LUFA.pnproj
LUFA/Drivers/USB/Class/Common/StillImage.h [new file with mode: 0644]
LUFA/MigrationInformation.txt

diff --git a/Demos/Host/ClassDriver/CDCHost/ConfigDescriptor.c b/Demos/Host/ClassDriver/CDCHost/ConfigDescriptor.c
deleted file mode 100644 (file)
index baf02a2..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a CDC interface descriptor containing bulk data IN and OUT endpoints, and an interrupt event endpoint.\r
- *\r
- *  \return An error code from the CDCHost_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       uint8_t  FoundEndpoints = 0;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the CDC control interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextCDCControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoCDCInterfaceFound;\r
-       }\r
-\r
-       /* Get the IN and OUT data endpoints for the CDC interface */\r
-       while (FoundEndpoints != ((1 << CDC_NOTIFICATIONPIPE) | (1 << CDC_DATAPIPE_IN) | (1 << CDC_DATAPIPE_OUT)))\r
-       {\r
-               /* Fetch the next bulk or interrupt endpoint from the current CDC interface */\r
-               if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                             DComp_NextInterfaceCDCDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-               {\r
-                       /* Check to see if the control interface's notification pipe has been found, if so search for the data interface */\r
-                       if (FoundEndpoints & (1 << CDC_NOTIFICATIONPIPE))\r
-                       {\r
-                               /* Get the next CDC data interface from the configuration descriptor (CDC class has two CDC interfaces) */\r
-                               if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData, \r
-                                                             DComp_NextCDCDataInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-                               {\r
-                                       /* Descriptor not found, error out */\r
-                                       return NoCDCInterfaceFound;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               /* Clear the found endpoints mask, since any already processed endpoints aren't in the CDC interface we need */\r
-                               FoundEndpoints = 0;\r
-\r
-                               /* Disable any already configured pipes from the invalid CDC interfaces */\r
-                               Pipe_SelectPipe(CDC_NOTIFICATIONPIPE);\r
-                               Pipe_DisablePipe();\r
-                               Pipe_SelectPipe(CDC_DATAPIPE_IN);\r
-                               Pipe_DisablePipe();\r
-                               Pipe_SelectPipe(CDC_DATAPIPE_OUT);\r
-                               Pipe_DisablePipe();\r
-                       \r
-                               /* Get the next CDC control interface from the configuration descriptor (CDC class has two CDC interfaces) */\r
-                               if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                                             DComp_NextCDCControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-                               {\r
-                                       /* Descriptor not found, error out */\r
-                                       return NoCDCInterfaceFound;\r
-                               }\r
-                       }\r
-\r
-                       /* Fetch the next bulk or interrupt endpoint from the current CDC interface */\r
-                       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                                     DComp_NextInterfaceCDCDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-                       {\r
-                               /* Descriptor not found, error out */\r
-                               return NoEndpointFound;\r
-                       }\r
-               }\r
-               \r
-               USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-               /* Check if the found endpoint is a interrupt or bulk type descriptor */\r
-               if ((EndpointData->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT)\r
-               {\r
-                       /* If the endpoint is a IN type interrupt endpoint */\r
-                       if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-                       {                                                          \r
-                               /* Configure the notification pipe */\r
-                               Pipe_ConfigurePipe(CDC_NOTIFICATIONPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
-                                                                  EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-                               Pipe_SetInfiniteINRequests();\r
-                               Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS);\r
-                               \r
-                               /* Set the flag indicating that the notification pipe has been found */\r
-                               FoundEndpoints |= (1 << CDC_NOTIFICATIONPIPE);\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       /* Check if the endpoint is a bulk IN or bulk OUT endpoint */\r
-                       if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-                       {\r
-                               /* Configure the data IN pipe */\r
-                               Pipe_ConfigurePipe(CDC_DATAPIPE_IN, EP_TYPE_BULK, PIPE_TOKEN_IN,\r
-                                                                  EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-                               Pipe_SetInfiniteINRequests();\r
-                               Pipe_Unfreeze();\r
-                               \r
-                               /* Set the flag indicating that the data IN pipe has been found */\r
-                               FoundEndpoints |= (1 << CDC_DATAPIPE_IN);\r
-                       }\r
-                       else\r
-                       {\r
-                               /* Configure the data OUT pipe */\r
-                               Pipe_ConfigurePipe(CDC_DATAPIPE_OUT, EP_TYPE_BULK, PIPE_TOKEN_OUT,\r
-                                                                  EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-                               \r
-                               Pipe_Unfreeze();\r
-                               \r
-                               /* Set the flag indicating that the data OUT pipe has been found */\r
-                               FoundEndpoints |= (1 << CDC_DATAPIPE_OUT);\r
-                       }\r
-               }\r
-       }\r
-\r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct CDC control Class, Subclass and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextCDCControlInterface(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the CDC descriptor class, subclass and protocol, break out if correct control interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == CDC_CONTROL_CLASS)    &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_CONTROL_SUBCLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_CONTROL_PROTOCOL))\r
-               {\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct CDC data Class, Subclass and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextCDCDataInterface(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the CDC descriptor class, subclass and protocol, break out if correct data interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == CDC_DATA_CLASS)    &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == CDC_DATA_SUBCLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == CDC_DATA_PROTOCOL))\r
-               {\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next bulk IN or OUT endpoint, or interrupt IN endpoint within the current interface,\r
- *  aborting the search if another interface descriptor is found before the required endpoint (so that it may be compared\r
- *  using a different comparator to determine if it is another CDC class interface).\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextInterfaceCDCDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor,\r
-                                                       USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);\r
-       \r
-               if ((EndpointType == EP_TYPE_BULK) || (EndpointType == EP_TYPE_INTERRUPT))\r
-                 return DESCRIPTOR_SEARCH_Found;\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
diff --git a/Demos/Host/ClassDriver/CDCHost/ConfigDescriptor.h b/Demos/Host/ClassDriver/CDCHost/ConfigDescriptor.h
deleted file mode 100644 (file)
index 1a118ca..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "CDCHost.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the CDC class */\r
-               #define CDC_CONTROL_CLASS              0x02\r
-\r
-               /** Interface Class value for the CDC Communication Interface subclass */\r
-               #define CDC_CONTROL_SUBCLASS           0x02\r
-\r
-               /** Interface Class value for the CDC protocol */\r
-               #define CDC_CONTROL_PROTOCOL           0x01\r
-               \r
-               /** Interface Class value for the CDC data class */\r
-               #define CDC_DATA_CLASS                 0x0A\r
-\r
-               /** Interface Class value for the CDC data subclass (unused) */\r
-               #define CDC_DATA_SUBCLASS              0x00\r
-\r
-               /** Interface Class value for the CDC data protocol */\r
-               #define CDC_DATA_PROTOCOL              0x00\r
-\r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE     512\r
-       \r
-       /* Enums: */\r
-               /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */\r
-               enum CDCHost_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoCDCInterfaceFound             = 4, /**< A compatible CDC interface was not found in the device's Configuration Descriptor */\r
-                       NoEndpointFound                 = 5, /**< Compatible CDC endpoints were not found in the device's CDC interface */\r
-               };\r
-\r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);   \r
-               \r
-               uint8_t DComp_NextCDCControlInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextCDCDataInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextInterfaceCDCDataEndpoint(void* CurrentDescriptor);\r
-               \r
-#endif\r
diff --git a/Demos/Host/ClassDriver/GenericHIDHost/ConfigDescriptor.c b/Demos/Host/ClassDriver/GenericHIDHost/ConfigDescriptor.c
deleted file mode 100644 (file)
index 29fa60b..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
-\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a HID interface descriptor containing at least one Interrupt type IN endpoint.\r
- *\r
- *  \return An error code from the GenericHIDHost_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       \r
-       uint8_t  FoundEndpoints = 0;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the HID interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextHIDInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoHIDInterfaceFound;\r
-       }\r
-\r
-       while (FoundEndpoints != ((1 << HID_DATA_IN_PIPE) | (1 << HID_DATA_OUT_PIPE)))\r
-       {\r
-               /* Get the next HID interface's data endpoint descriptor */\r
-               if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                             DComp_NextInterfaceHIDDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-               {\r
-                       /* Not all HID devices have an OUT endpoint - if we've reached the end of the HID descriptor\r
-                        * but only found the mandatory IN endpoint, it's safe to continue with the device enumeration */\r
-                       if (FoundEndpoints == (1 << HID_DATA_IN_PIPE))\r
-                         break;\r
-                               \r
-                       /* Descriptor not found, error out */\r
-                       return NoEndpointFound;\r
-               }\r
-               \r
-               /* Retrieve the endpoint address from the endpoint descriptor */\r
-               USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-               /* If the endpoint is a IN type endpoint */\r
-               if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-               {\r
-                       /* Configure the HID data IN pipe */\r
-                       Pipe_ConfigurePipe(HID_DATA_IN_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
-                                                          EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-                       Pipe_SetInfiniteINRequests();\r
-                       \r
-                       FoundEndpoints |= (1 << HID_DATA_IN_PIPE);\r
-               }\r
-               else\r
-               {\r
-                       /* Configure the HID data OUT pipe */\r
-                       Pipe_ConfigurePipe(HID_DATA_OUT_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_OUT,\r
-                                                          EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-                       \r
-                       FoundEndpoints |= (1 << HID_DATA_OUT_PIPE);             \r
-               }\r
-       }\r
-                       \r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct HID Class value.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextHIDInterface(void* CurrentDescriptor)\r
-{\r
-       /* Determine if the current descriptor is an interface descriptor */\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */\r
-               if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class == HID_CLASS)\r
-               {\r
-                       /* Indicate that the descriptor being searched for has been found */\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       /* Current descriptor does not match what this comparator is looking for */\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Endpoint descriptor inside the current interface descriptor,\r
- *  aborting the search if another interface descriptor is found before the required endpoint.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextInterfaceHIDDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       /* Determine the type of the current descriptor */\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               /* Indicate that the descriptor being searched for has been found */\r
-               return DESCRIPTOR_SEARCH_Found;\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Indicate that the search has failed prematurely and should be aborted */\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       /* Current descriptor does not match what this comparator is looking for */\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
diff --git a/Demos/Host/ClassDriver/GenericHIDHost/ConfigDescriptor.h b/Demos/Host/ClassDriver/GenericHIDHost/ConfigDescriptor.h
deleted file mode 100644 (file)
index b58d440..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "GenericHIDHost.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the Human Interface Device class */\r
-               #define HID_CLASS                 0x03\r
-\r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE  512\r
-       \r
-       /* Enums: */\r
-               /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */\r
-               enum GenericHIDHost_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoHIDInterfaceFound             = 4, /**< A compatible HID interface was not found in the device's Configuration Descriptor */\r
-                       NoEndpointFound                 = 5, /**< A compatible HID IN endpoint was not found in the device's HID interface */\r
-               };      \r
-\r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);\r
-\r
-               uint8_t DComp_NextHIDInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextInterfaceHIDDataEndpoint(void* CurrentDescriptor);\r
-\r
-#endif\r
index 415dae0..74fb6f6 100644 (file)
 \r
                #include <LUFA/Version.h>\r
                #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
-               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
                #include <LUFA/Drivers/Board/LEDs.h>\r
-               \r
-               #include "ConfigDescriptor.h"\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/HID.h>\r
                \r
        /* Macros: */\r
                /** Pipe number for the HID data IN pipe */\r
index 49f8bf2..b41d935 100644 (file)
@@ -124,7 +124,6 @@ LUFA_PATH = ../../../..
 \r
 # List C source files here. (C dependencies are automatically generated.)\r
 SRC = $(TARGET).c                                                 \\r
-         ConfigDescriptor.c                                          \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
          $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \\r
diff --git a/Demos/Host/ClassDriver/KeyboardHost/ConfigDescriptor.c b/Demos/Host/ClassDriver/KeyboardHost/ConfigDescriptor.c
deleted file mode 100644 (file)
index e586ea5..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
-\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a HID interface descriptor containing at least one Interrupt type IN endpoint.\r
- *\r
- *  \return An error code from the KeyboardHost_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the keyboard interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextKeyboardInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoHIDInterfaceFound;\r
-       }\r
-\r
-       /* Get the keyboard interface's data endpoint descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextInterfaceKeyboardDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoEndpointFound;\r
-       }\r
-       \r
-       /* Retrieve the endpoint address from the endpoint descriptor */\r
-       USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-       /* Configure the keyboard data pipe */\r
-       Pipe_ConfigurePipe(KEYBOARD_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
-                          EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct Keyboard HID Class and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == KEYBOARD_CLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == KEYBOARD_PROTOCOL))\r
-               {\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,\r
- *  aborting the search if another interface descriptor is found before the required endpoint.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextInterfaceKeyboardDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-                 return DESCRIPTOR_SEARCH_Found;\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
diff --git a/Demos/Host/ClassDriver/KeyboardHost/ConfigDescriptor.h b/Demos/Host/ClassDriver/KeyboardHost/ConfigDescriptor.h
deleted file mode 100644 (file)
index 425f0a4..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "KeyboardHost.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the Human Interface Device class */\r
-               #define KEYBOARD_CLASS                 0x03\r
-\r
-               /** Interface Protocol value for a Boot Protocol Keyboard compliant device */\r
-               #define KEYBOARD_PROTOCOL              0x01\r
-               \r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE     512\r
-       \r
-       /* Enums: */\r
-               /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */\r
-               enum KeyboardHost_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoHIDInterfaceFound             = 4, /**< A compatible HID interface was not found in the device's Configuration Descriptor */\r
-                       NoEndpointFound                 = 5, /**< A compatible HID IN endpoint was not found in the device's HID interface */\r
-               };\r
-\r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);\r
-               \r
-               uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextInterfaceKeyboardDataEndpoint(void* CurrentDescriptor);\r
-\r
-#endif\r
index 4aa09e1..883e0ca 100644 (file)
 \r
                #include <LUFA/Version.h>\r
                #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
-               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
                #include <LUFA/Drivers/Board/LEDs.h>\r
-               \r
-               #include "ConfigDescriptor.h"\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/HID.h> \r
                \r
        /* Macros: */\r
                /** Pipe number for the keyboard data IN pipe */\r
index 9bc1e6a..a30c145 100644 (file)
@@ -124,7 +124,6 @@ LUFA_PATH = ../../../..
 \r
 # List C source files here. (C dependencies are automatically generated.)\r
 SRC = $(TARGET).c                                                 \\r
-         ConfigDescriptor.c                                          \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
          $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \\r
diff --git a/Demos/Host/ClassDriver/KeyboardHostWithParser/ConfigDescriptor.c b/Demos/Host/ClassDriver/KeyboardHostWithParser/ConfigDescriptor.c
deleted file mode 100644 (file)
index 4ee3b99..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
-\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a HID interface descriptor containing at least one Interrupt type IN endpoint and HID descriptor.\r
- *\r
- *  \return An error code from the KeyboardHostWithParser_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the keyboard interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextKeyboardInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoHIDInterfaceFound;\r
-       }\r
-       \r
-       /* Get the keyboard interface's HID descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextHID) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoHIDDescriptorFound;\r
-       }\r
-\r
-       /* Save the HID report size for later use */\r
-       HIDReportSize = DESCRIPTOR_CAST(ConfigDescriptorData, USB_Descriptor_HID_t).HIDReportLength;\r
-\r
-       /* Get the keyboard interface's data endpoint descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextInterfaceKeyboardDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoEndpointFound;\r
-       }\r
-       \r
-       /* Retrieve the endpoint address from the endpoint descriptor */\r
-       USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-       /* Configure the keyboard data pipe */\r
-       Pipe_ConfigurePipe(KEYBOARD_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
-                          EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct Keyboard HID Class and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == KEYBOARD_CLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == KEYBOARD_PROTOCOL))\r
-               {\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,\r
- *  aborting the search if another interface descriptor is found before the required endpoint.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextInterfaceKeyboardDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-                 return DESCRIPTOR_SEARCH_Found;\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next HID descriptor within the current HID interface descriptor.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextHID(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)\r
-         return DESCRIPTOR_SEARCH_Found;\r
-       else\r
-         return DESCRIPTOR_SEARCH_NotFound;      \r
-}\r
diff --git a/Demos/Host/ClassDriver/KeyboardHostWithParser/ConfigDescriptor.h b/Demos/Host/ClassDriver/KeyboardHostWithParser/ConfigDescriptor.h
deleted file mode 100644 (file)
index 338adc9..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "HIDReport.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the Human Interface Device class */\r
-               #define KEYBOARD_CLASS                 0x03\r
-\r
-               /** Interface Protocol value for a Boot Protocol Keyboard compliant device */\r
-               #define KEYBOARD_PROTOCOL              0x01\r
-               \r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE     512\r
-\r
-               /** Descriptor header type constant for a HID descriptor */\r
-               #define DTYPE_HID                      0x21\r
-\r
-               /** Descriptor header type constant for a HID report descriptor */\r
-               #define DTYPE_Report                   0x22\r
-       \r
-       /* Enums: */\r
-               enum KeyboardHostWithParser_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoHIDInterfaceFound             = 4, /**< A compatible HID interface was not found in the device's Configuration Descriptor */\r
-                       NoHIDDescriptorFound            = 5, /**< A compatible HID descriptor was not found in the device's HID interface */\r
-                       NoEndpointFound                 = 5, /**< A compatible HID IN endpoint was not found in the device's HID interface */\r
-               };\r
-\r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);\r
-\r
-               uint8_t DComp_NextKeyboardInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextInterfaceKeyboardDataEndpoint(void* CurrentDescriptor);\r
-               uint8_t DComp_NextHID(void* CurrentDescriptor);\r
-               \r
-#endif\r
index a141ffb..29fc848 100644 (file)
@@ -38,7 +38,7 @@
 \r
        /* Includes: */\r
                #include <LUFA/Drivers/USB/USB.h>\r
-               #include <LUFA/Drivers/USB/Class/Host/HIDParser.h>\r
+               #include <LUFA/Drivers/USB/Class/HID.h>\r
                \r
                #include "KeyboardHostWithParser.h"\r
 \r
index 90db94a..f5e1f74 100644 (file)
 \r
                #include <LUFA/Version.h>\r
                #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
-               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
                #include <LUFA/Drivers/Board/LEDs.h>
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/HID.h> \r
                \r
-               #include "ConfigDescriptor.h"\r
                #include "HIDReport.h"\r
 \r
        /* Macros: */\r
index 8b1f08b..41e15fa 100644 (file)
@@ -124,7 +124,6 @@ LUFA_PATH = ../../../..
 \r
 # List C source files here. (C dependencies are automatically generated.)\r
 SRC = $(TARGET).c                                                 \\r
-         ConfigDescriptor.c                                          \\r
          HIDReport.c                                                 \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
diff --git a/Demos/Host/ClassDriver/MassStorageHost/ConfigDescriptor.c b/Demos/Host/ClassDriver/MassStorageHost/ConfigDescriptor.c
deleted file mode 100644 (file)
index c951c79..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a MSD interface descriptor containing bulk IN and OUT data endpoints.\r
- *\r
- *  \return An error code from the MassStorageHost_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       uint8_t  FoundEndpoints = 0;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the mass storage interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextMassStorageInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoInterfaceFound;\r
-       }\r
-\r
-       /* Get the IN and OUT data endpoints for the mass storage interface */\r
-       while (FoundEndpoints != ((1 << MASS_STORE_DATA_IN_PIPE) | (1 << MASS_STORE_DATA_OUT_PIPE)))\r
-       {\r
-               /* Fetch the next bulk endpoint from the current mass storage interface */\r
-               if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                             DComp_NextInterfaceBulkDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-               {\r
-                       /* Descriptor not found, error out */\r
-                       return NoEndpointFound;\r
-               }\r
-               \r
-               USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-               /* Check if the endpoint is a bulk IN or bulk OUT endpoint, set appropriate globals */\r
-               if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-               {\r
-                       /* Configure the data IN pipe */\r
-                       Pipe_ConfigurePipe(MASS_STORE_DATA_IN_PIPE, EP_TYPE_BULK, PIPE_TOKEN_IN,\r
-                                          EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
-                                          PIPE_BANK_DOUBLE);\r
-\r
-                       Pipe_SetInfiniteINRequests();\r
-\r
-                       /* Set the flag indicating that the data IN pipe has been found */\r
-                       FoundEndpoints |= (1 << MASS_STORE_DATA_IN_PIPE);\r
-               }\r
-               else\r
-               {\r
-                       /* Configure the data OUT pipe */\r
-                       Pipe_ConfigurePipe(MASS_STORE_DATA_OUT_PIPE, EP_TYPE_BULK, PIPE_TOKEN_OUT,\r
-                                          EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
-                                          PIPE_BANK_DOUBLE);\r
-\r
-                       /* Set the flag indicating that the data OUT pipe has been found */\r
-                       FoundEndpoints |= (1 << MASS_STORE_DATA_OUT_PIPE);\r
-               }               \r
-       }\r
-\r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct Mass Storage Class, Subclass and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextMassStorageInterface(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the descriptor class and protocol, break out if correct class/protocol interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == MASS_STORE_CLASS)    &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == MASS_STORE_SUBCLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MASS_STORE_PROTOCOL))\r
-               {\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Bulk Endpoint descriptor of the correct MSD interface, aborting the search if\r
- *  another interface descriptor is found before the next endpoint.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextInterfaceBulkDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor,\r
-                                                       USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);\r
-\r
-               /* Check the endpoint type, break out if correct BULK type endpoint found */\r
-               if (EndpointType == EP_TYPE_BULK)\r
-                 return DESCRIPTOR_SEARCH_Found;\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
diff --git a/Demos/Host/ClassDriver/MassStorageHost/ConfigDescriptor.h b/Demos/Host/ClassDriver/MassStorageHost/ConfigDescriptor.h
deleted file mode 100644 (file)
index 6c0b8e6..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "MassStorageHost.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the Mass Storage Device class */\r
-               #define MASS_STORE_CLASS               0x08\r
-\r
-               /** Interface Class value for the Mass Storage Device subclass */\r
-               #define MASS_STORE_SUBCLASS            0x06\r
-\r
-               /** Interface Protocol value for the Bulk Only transport protocol */\r
-               #define MASS_STORE_PROTOCOL            0x50\r
-               \r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE     512\r
-\r
-       /* Enums: */\r
-               /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */\r
-               enum MassStorageHost_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoInterfaceFound                = 4, /**< A compatible MSD interface was not found in the device's Configuration Descriptor */\r
-                       NoEndpointFound                 = 5, /**< The correct MSD endpoint descriptors were not found in the device's MSD interface */\r
-               };\r
-               \r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);   \r
-\r
-               uint8_t DComp_NextMassStorageInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextInterfaceBulkDataEndpoint(void* CurrentDescriptor);\r
-               \r
-#endif\r
index a299b70..667f4ed 100644 (file)
                #include <stdio.h>\r
                #include <ctype.h>\r
 \r
-               #include "ConfigDescriptor.h"\r
-\r
                #include "Lib/MassStoreCommands.h"\r
 \r
-               #include <LUFA/Version.h>                                // Library Version Information\r
-               #include <LUFA/Drivers/Misc/TerminalCodes.h>             // ANSI Terminal Escape Codes\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               #include <LUFA/Drivers/Peripheral/SerialStream.h>        // Serial stream driver\r
-               #include <LUFA/Drivers/Board/LEDs.h>                     // LEDs driver\r
-               #include <LUFA/Drivers/Board/Buttons.h>                  // Board Buttons driver\r
+               #include <LUFA/Version.h>\r
+               #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
+               #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
+               #include <LUFA/Drivers/Board/LEDs.h>\r
+               #include <LUFA/Drivers/Board/Buttons.h>\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/MassStorage.h> \r
 \r
        /* Macros: */\r
                /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */\r
index 91eb302..5adf3ca 100644 (file)
@@ -124,7 +124,6 @@ LUFA_PATH = ../../../..
 \r
 # List C source files here. (C dependencies are automatically generated.)\r
 SRC = $(TARGET).c                                                 \\r
-         ConfigDescriptor.c                                          \\r
          Lib/MassStoreCommands.c                                     \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
diff --git a/Demos/Host/ClassDriver/MouseHost/ConfigDescriptor.c b/Demos/Host/ClassDriver/MouseHost/ConfigDescriptor.c
deleted file mode 100644 (file)
index 0f6ab59..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
-\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a HID interface descriptor containing at least one Interrupt type IN endpoint.\r
- *\r
- *  \return An error code from the MouseHost_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the mouse interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextMouseInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoHIDInterfaceFound;\r
-       }\r
-\r
-       /* Get the mouse interface's data endpoint descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextInterfaceMouseDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoEndpointFound;\r
-       }\r
-       \r
-       /* Retrieve the endpoint address from the endpoint descriptor */\r
-       USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-       /* Configure the mouse data pipe */\r
-       Pipe_ConfigurePipe(MOUSE_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
-                          EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct Mouse HID Class and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextMouseInterface(void* CurrentDescriptor)\r
-{\r
-       /* Determine if the current descriptor is an interface descriptor */\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == MOUSE_CLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MOUSE_PROTOCOL))\r
-               {\r
-                       /* Indicate that the descriptor being searched for has been found */\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       /* Current descriptor does not match what this comparator is looking for */\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,\r
- *  aborting the search if another interface descriptor is found before the required endpoint.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextInterfaceMouseDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       /* Determine the type of the current descriptor */\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               /* Check if the current Endpoint descriptor is of type IN */\r
-               if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-               {\r
-                       /* Indicate that the descriptor being searched for has been found */\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Indicate that the search has failed prematurely and should be aborted */\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       /* Current descriptor does not match what this comparator is looking for */\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
diff --git a/Demos/Host/ClassDriver/MouseHost/ConfigDescriptor.h b/Demos/Host/ClassDriver/MouseHost/ConfigDescriptor.h
deleted file mode 100644 (file)
index cb1ae63..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "MouseHost.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the Human Interface Device class */\r
-               #define MOUSE_CLASS                 0x03\r
-\r
-               /** Interface Protocol value for a Boot Protocol Mouse compliant device */\r
-               #define MOUSE_PROTOCOL              0x02\r
-\r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE  512\r
-       \r
-       /* Enums: */\r
-               /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */\r
-               enum MouseHost_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoHIDInterfaceFound             = 4, /**< A compatible HID interface was not found in the device's Configuration Descriptor */\r
-                       NoEndpointFound                 = 5, /**< A compatible HID IN endpoint was not found in the device's HID interface */\r
-               };\r
-\r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);\r
-\r
-               uint8_t DComp_NextMouseInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextInterfaceMouseDataEndpoint(void* CurrentDescriptor);\r
-\r
-#endif\r
index 1abd560..9e3087f 100644 (file)
 \r
                #include <LUFA/Version.h>\r
                #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
-               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
                #include <LUFA/Drivers/Board/LEDs.h>\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/HID.h> \r
                \r
                #include "ConfigDescriptor.h"\r
                \r
index b3c62b0..367ad9f 100644 (file)
@@ -124,7 +124,6 @@ LUFA_PATH = ../../../..
 \r
 # List C source files here. (C dependencies are automatically generated.)\r
 SRC = $(TARGET).c                                                 \\r
-         ConfigDescriptor.c                                          \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
          $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c        \\r
diff --git a/Demos/Host/ClassDriver/MouseHostWithParser/ConfigDescriptor.c b/Demos/Host/ClassDriver/MouseHostWithParser/ConfigDescriptor.c
deleted file mode 100644 (file)
index 5d9d3f0..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
-\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a HID interface descriptor containing at least one Interrupt type IN endpoint and HID descriptor.\r
- *\r
- *  \return An error code from the MouseHostWithParser_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the mouse interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextMouseInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoHIDInterfaceFound;\r
-       }\r
-       \r
-       /* Get the mouse interface's HID descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextHID) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoHIDDescriptorFound;\r
-       }\r
-\r
-       /* Save the HID report size for later use */\r
-       HIDReportSize = DESCRIPTOR_CAST(ConfigDescriptorData, USB_Descriptor_HID_t).HIDReportLength;\r
-\r
-       /* Get the mouse interface's data endpoint descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextInterfaceMouseDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoEndpointFound;\r
-       }\r
-       \r
-       /* Retrieve the endpoint address from the endpoint descriptor */\r
-       USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-       /* Configure the mouse data pipe */\r
-       Pipe_ConfigurePipe(MOUSE_DATAPIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
-                          EndpointData->EndpointAddress, EndpointData->EndpointSize, PIPE_BANK_SINGLE);\r
-\r
-       Pipe_SetInfiniteINRequests();\r
-                       \r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct Mouse HID Class and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextMouseInterface(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the HID descriptor class and protocol, break out if correct class/protocol interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == MOUSE_CLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == MOUSE_PROTOCOL))\r
-               {\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next IN Endpoint descriptor inside the current interface descriptor,\r
- *  aborting the search if another interface descriptor is found before the required endpoint.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextInterfaceMouseDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               if (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Endpoint_t).EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-                 return DESCRIPTOR_SEARCH_Found;\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next HID descriptor within the current HID interface descriptor.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextHID(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)\r
-         return DESCRIPTOR_SEARCH_Found;\r
-       else\r
-         return DESCRIPTOR_SEARCH_NotFound;      \r
-}\r
diff --git a/Demos/Host/ClassDriver/MouseHostWithParser/ConfigDescriptor.h b/Demos/Host/ClassDriver/MouseHostWithParser/ConfigDescriptor.h
deleted file mode 100644 (file)
index 08400c5..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "HIDReport.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the Human Interface Device class */\r
-               #define MOUSE_CLASS                 0x03\r
-\r
-               /** Interface Protocol value for a Boot Protocol Mouse compliant device */\r
-               #define MOUSE_PROTOCOL              0x02\r
-\r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE  512\r
-\r
-               /** Descriptor header type constant for a HID descriptor */\r
-               #define DTYPE_HID                   0x21\r
-\r
-               /** Descriptor header type constant for a HID report descriptor */\r
-               #define DTYPE_Report                0x22\r
-       \r
-       /* Enums: */\r
-               /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */\r
-               enum CDCHost_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoHIDInterfaceFound             = 4, /**< A compatible HID interface was not found in the device's Configuration Descriptor */\r
-                       NoHIDDescriptorFound            = 5, /**< A compatible HID descriptor was not found in the device's HID interface */\r
-                       NoEndpointFound                 = 5, /**< A compatible HID IN endpoint was not found in the device's HID interface */\r
-               };\r
-\r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);\r
-\r
-               uint8_t DComp_NextMouseInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextInterfaceMouseDataEndpoint(void* CurrentDescriptor);\r
-               uint8_t DComp_NextHID(void* CurrentDescriptor);\r
-\r
-#endif\r
index f5429f0..acfbc8a 100644 (file)
@@ -38,7 +38,7 @@
 \r
        /* Includes: */\r
                #include <LUFA/Drivers/USB/USB.h>\r
-               #include <LUFA/Drivers/USB/Class/Host/HIDParser.h>\r
+               #include <LUFA/Drivers/USB/Class/Host/HID.h>\r
                \r
                #include "MouseHostWithParser.h"\r
 \r
index b91d6d1..cc539fb 100644 (file)
 \r
                #include <LUFA/Version.h>\r
                #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
-               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
                #include <LUFA/Drivers/Board/LEDs.h>\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/HID.h> \r
                \r
-               #include "ConfigDescriptor.h"\r
                #include "HIDReport.h"\r
 \r
        /* Macros: */\r
index 1ae74da..5c31fce 100644 (file)
@@ -124,7 +124,6 @@ LUFA_PATH = ../../../..
 \r
 # List C source files here. (C dependencies are automatically generated.)\r
 SRC = $(TARGET).c                                                 \\r
-         ConfigDescriptor.c                                          \\r
          HIDReport.c                                                 \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
diff --git a/Demos/Host/ClassDriver/StillImageHost/ConfigDescriptor.c b/Demos/Host/ClassDriver/StillImageHost/ConfigDescriptor.c
deleted file mode 100644 (file)
index 1084969..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
- *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
- *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
- */\r
-\r
-#include "ConfigDescriptor.h"\r
-\r
-/** Reads and processes an attached device's descriptors, to determine compatibility and pipe configurations. This\r
- *  routine will read in the entire configuration descriptor, and configure the hosts pipes to correctly communicate\r
- *  with compatible devices.\r
- *\r
- *  This routine searches for a SI interface descriptor containing bulk IN and OUT data endpoints.\r
- *\r
- *  \return An error code from the StillImageHost_GetConfigDescriptorDataCodes_t enum.\r
- */\r
-uint8_t ProcessConfigurationDescriptor(void)\r
-{\r
-       uint8_t* ConfigDescriptorData;\r
-       uint16_t ConfigDescriptorSize;\r
-       uint8_t  FoundEndpoints = 0;\r
-       \r
-       /* Get Configuration Descriptor size from the device */\r
-       if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
-       \r
-       /* Ensure that the Configuration Descriptor isn't too large */\r
-       if (ConfigDescriptorSize > MAX_CONFIG_DESCRIPTOR_SIZE)\r
-         return DescriptorTooLarge;\r
-         \r
-       /* Allocate enough memory for the entire config descriptor */\r
-       ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
-\r
-       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
-       USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
-       \r
-       /* Validate returned data - ensure first entry is a configuration header descriptor */\r
-       if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
-       \r
-       /* Get the Still Image interface from the configuration descriptor */\r
-       if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                     DComp_NextStillImageInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
-       {\r
-               /* Descriptor not found, error out */\r
-               return NoInterfaceFound;\r
-       }\r
-\r
-       /* Get the IN and OUT data and event endpoints for the Still Image interface */\r
-       while (FoundEndpoints != ((1 << SIMAGE_EVENTS_PIPE) | (1 << SIMAGE_DATA_IN_PIPE) | (1 << SIMAGE_DATA_OUT_PIPE)))\r
-       {\r
-               /* Fetch the next endpoint from the current Still Image interface */\r
-               if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
-                                             DComp_NextSImageInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
-               {\r
-                       /* Descriptor not found, error out */\r
-                       return NoEndpointFound;\r
-               }\r
-               \r
-               USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(ConfigDescriptorData, USB_Descriptor_Endpoint_t);\r
-\r
-               /* Check if the found endpoint is a interrupt or bulk type descriptor */\r
-               if ((EndpointData->Attributes & EP_TYPE_MASK) == EP_TYPE_INTERRUPT)\r
-               {\r
-                       /* If the endpoint is a IN type interrupt endpoint */\r
-                       if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-                       {\r
-                               /* Configure the events pipe */\r
-                               Pipe_ConfigurePipe(SIMAGE_EVENTS_PIPE, EP_TYPE_INTERRUPT, PIPE_TOKEN_IN,\r
-                                                                  EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
-                                                                  PIPE_BANK_DOUBLE);                   \r
-\r
-                               Pipe_SetInfiniteINRequests();\r
-                               Pipe_SetInterruptPeriod(EndpointData->PollingIntervalMS);\r
-                               \r
-                               /* Set the flag indicating that the events pipe has been found */\r
-                               FoundEndpoints |= (1 << SIMAGE_EVENTS_PIPE);\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       /* Check if the endpoint is a bulk IN or bulk OUT endpoint */\r
-                       if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
-                       {\r
-                               /* Configure the data IN pipe */\r
-                               Pipe_ConfigurePipe(SIMAGE_DATA_IN_PIPE, EP_TYPE_BULK, PIPE_TOKEN_IN,\r
-                                                                  EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
-                                                                  PIPE_BANK_DOUBLE);\r
-\r
-                               Pipe_SetInfiniteINRequests();\r
-\r
-                               /* Set the flag indicating that the data IN pipe has been found */\r
-                               FoundEndpoints |= (1 << SIMAGE_DATA_IN_PIPE);\r
-                       }\r
-                       else\r
-                       {\r
-                               /* Configure the data OUT pipe */\r
-                               Pipe_ConfigurePipe(SIMAGE_DATA_OUT_PIPE, EP_TYPE_BULK, PIPE_TOKEN_OUT,\r
-                                                                  EndpointData->EndpointAddress, EndpointData->EndpointSize,\r
-                                                                  PIPE_BANK_DOUBLE);\r
-\r
-                               /* Set the flag indicating that the data OUT pipe has been found */\r
-                               FoundEndpoints |= (1 << SIMAGE_DATA_OUT_PIPE);\r
-                       }\r
-               }\r
-       }\r
-\r
-       /* Valid data found, return success */\r
-       return SuccessfulConfigRead;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interface descriptor of the correct Still Image Class, Subclass and Protocol values.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextStillImageInterface(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               /* Check the descriptor class and protocol, break out if correct class/protocol interface found */\r
-               if ((DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Class    == SIMAGE_CLASS)    &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).SubClass == SIMAGE_SUBCLASS) &&\r
-                   (DESCRIPTOR_CAST(CurrentDescriptor, USB_Descriptor_Interface_t).Protocol == SIMAGE_PROTOCOL))\r
-               {\r
-                       return DESCRIPTOR_SEARCH_Found;\r
-               }\r
-       }\r
-       \r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
-\r
-/** Descriptor comparator function. This comparator function is can be called while processing an attached USB device's\r
- *  configuration descriptor, to search for a specific sub descriptor. It can also be used to abort the configuration\r
- *  descriptor processing if an incompatible descriptor configuration is found.\r
- *\r
- *  This comparator searches for the next Interrupt or Bulk Endpoint descriptor of the current SI interface, aborting the\r
- *  search if another interface descriptor is found before the next endpoint.\r
- *\r
- *  \return A value from the DSEARCH_Return_ErrorCodes_t enum\r
- */\r
-uint8_t DComp_NextSImageInterfaceDataEndpoint(void* CurrentDescriptor)\r
-{\r
-       if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
-       {\r
-               uint8_t EndpointType = (DESCRIPTOR_CAST(CurrentDescriptor,\r
-                                                       USB_Descriptor_Endpoint_t).Attributes & EP_TYPE_MASK);\r
-       \r
-               if ((EndpointType == EP_TYPE_BULK) || (EndpointType == EP_TYPE_INTERRUPT))\r
-                 return DESCRIPTOR_SEARCH_Found;\r
-       }\r
-       else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)\r
-       {\r
-               return DESCRIPTOR_SEARCH_Fail;\r
-       }\r
-\r
-       return DESCRIPTOR_SEARCH_NotFound;\r
-}\r
diff --git a/Demos/Host/ClassDriver/StillImageHost/ConfigDescriptor.h b/Demos/Host/ClassDriver/StillImageHost/ConfigDescriptor.h
deleted file mode 100644 (file)
index 29df30c..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
-              \r
-  dean [at] fourwalledcubicle [dot] com\r
-      www.fourwalledcubicle.com\r
-*/\r
-\r
-/*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, and distribute this software\r
-  and its documentation for any purpose and without fee is hereby\r
-  granted, provided that the above copyright notice appear in all\r
-  copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *\r
- *  Header file for ConfigDescriptor.c.\r
- */\r
-\r
-#ifndef _CONFIGDESCRIPTOR_H_\r
-#define _CONFIGDESCRIPTOR_H_\r
-\r
-       /* Includes: */\r
-               #include <LUFA/Drivers/USB/USB.h>                        // USB Functionality\r
-               \r
-               #include "StillImageHost.h"\r
-               \r
-       /* Macros: */\r
-               /** Interface Class value for the Still Image Device class */\r
-               #define SIMAGE_CLASS                   0x06\r
-\r
-               /** Interface Class value for the Still Image Device subclass */\r
-               #define SIMAGE_SUBCLASS                0x01\r
-\r
-               /** Interface Class value for the Still Image Device protocol */\r
-               #define SIMAGE_PROTOCOL                0x01\r
-\r
-               /** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */\r
-               #define MAX_CONFIG_DESCRIPTOR_SIZE     512\r
-       \r
-       /* Enums: */\r
-               /** Enum for the possible return codes of the ProcessConfigurationDescriptor() function. */\r
-               enum MassStorageHost_GetConfigDescriptorDataCodes_t\r
-               {\r
-                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
-                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
-                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
-                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
-                       NoInterfaceFound                = 4, /**< A compatible SI interface was not found in the device's Configuration Descriptor */\r
-                       NoEndpointFound                 = 5, /**< The correct SI endpoint descriptors were not found in the device's SI interface */\r
-               };\r
-       \r
-       /* Function Prototypes: */\r
-               uint8_t ProcessConfigurationDescriptor(void);\r
-\r
-               uint8_t DComp_NextStillImageInterface(void* CurrentDescriptor);\r
-               uint8_t DComp_NextSImageInterfaceDataEndpoint(void* CurrentDescriptor);\r
-\r
-#endif\r
index 1896b8f..1ad0278 100644 (file)
                #include "Lib/StillImageCommands.h"\r
 \r
                #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
-               #include <LUFA/Drivers/USB/USB.h>\r
                #include <LUFA/Drivers/Peripheral/SerialStream.h>\r
                #include <LUFA/Drivers/Board/LEDs.h>\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/USB/Class/StillImage.h>  \r
                \r
        /* Macros: */\r
                /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */\r
index 184f4f9..4c0181b 100644 (file)
@@ -123,7 +123,6 @@ LUFA_PATH = ../../../..
 \r
 # List C source files here. (C dependencies are automatically generated.)\r
 SRC = $(TARGET).c                                                 \\r
-         ConfigDescriptor.c                                          \\r
          Lib/StillImageCommands.c                                    \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/SerialStream.c         \\r
          $(LUFA_PATH)/LUFA/Drivers/Peripheral/Serial.c               \\r
index 801d87f..1a94c56 100644 (file)
@@ -1 +1 @@
-<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\ClassDriver\CDC\CDC.c"></File><File path="Demos\Device\ClassDriver\CDC\CDC.h"></File><File path="Demos\Device\ClassDriver\CDC\CDC.txt"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDC\LUFA CDC.inf"></File><File path="Demos\Device\ClassDriver\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualCDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.c"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.h"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.txt"></File><File path="Demos\Device\ClassDriver\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\ClassDriver\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\makefile"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\LowLevel\CDC\CDC.c"></File><File path="Demos\Device\LowLevel\CDC\CDC.h"></File><File path="Demos\Device\LowLevel\CDC\CDC.txt"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\CDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\CDC\LUFA CDC.inf"></File><File path="Demos\Device\LowLevel\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\LowLevel\DualCDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualCDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualCDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.c"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.h"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.txt"></File><File path="Demos\Device\LowLevel\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\LowLevel\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\LowLevel\USBtoSerial\makefile"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><File path="Demos\Device\Incomplete\Sideshow\SideshowContent.h"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowContent.c"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="CDCHost"><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.c"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.h"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.txt"></File><File path="Demos\Host\ClassDriver\CDCHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\ClassDriver\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\ClassDriver\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\ClassDriver\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\ClassDriver\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\ClassDriver\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\ClassDriver\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="CDCHost"><File path="Demos\Host\LowLevel\CDCHost\CDCHost.c"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.h"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.txt"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\CDCHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothStack.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="OTG"><Folder name="TestApp"><File path="Demos\OTG\TestApp\Descriptors.c"></File><File path="Demos\OTG\TestApp\Descriptors.h"></File><File path="Demos\OTG\TestApp\Doxygen.conf"></File><File path="Demos\OTG\TestApp\makefile"></File><File path="Demos\OTG\TestApp\TestApp.c"></File><File path="Demos\OTG\TestApp\TestApp.h"></File><File path="Demos\OTG\TestApp\TestApp.txt"></File><File path="Demos\OTG\TestApp\TestEvents.c"></File><File path="Demos\OTG\TestApp\TestEvents.h"></File></Folder><File path="Demos\OTG\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDISConstants.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AT90USBXXX67"><File path="LUFA\Drivers\Peripheral\AT90USBXXX67\ADC.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\BuildingLinkableLibraries.txt"></File><File path="LUFA\ChangeLog.txt"></File><File path="LUFA\CompileTimeTokens.txt"></File><File path="LUFA\DirectorySummaries.txt"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\GettingStarted.txt"></File><File path="LUFA\Groups.txt"></File><File path="LUFA\LUFAPoweredProjects.txt"></File><File path="LUFA\MainPage.txt"></File><File path="LUFA\MigrationInformation.txt"></File><File path="LUFA\VIDAndPIDValues.txt"></File><File path="LUFA\WritingBoardDrivers.txt"></File><File path="LUFA\FutureChanges.txt"></File><File path="LUFA\LibraryResources.txt"></File><File path="LUFA\DeviceSupport.txt"></File><File path="LUFA\License.txt"></File><File path="LUFA\AboutLUFA.txt"></File><File path="LUFA\DevelopingWithLUFA.txt"></File><File path="LUFA\Donating.txt"></File><File path="LUFA\Author.jpg"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
+<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\ClassDriver\CDC\CDC.c"></File><File path="Demos\Device\ClassDriver\CDC\CDC.h"></File><File path="Demos\Device\ClassDriver\CDC\CDC.txt"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\CDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\CDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\CDC\LUFA CDC.inf"></File><File path="Demos\Device\ClassDriver\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualCDC\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualCDC\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.c"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.h"></File><File path="Demos\Device\ClassDriver\DualCDC\DualCDC.txt"></File><File path="Demos\Device\ClassDriver\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\ClassDriver\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\ClassDriver\USBtoSerial\makefile"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\ClassDriver\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\LowLevel\CDC\CDC.c"></File><File path="Demos\Device\LowLevel\CDC\CDC.h"></File><File path="Demos\Device\LowLevel\CDC\CDC.txt"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\CDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\CDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\CDC\LUFA CDC.inf"></File><File path="Demos\Device\LowLevel\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\LowLevel\DualCDC\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualCDC\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualCDC\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.c"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.h"></File><File path="Demos\Device\LowLevel\DualCDC\DualCDC.txt"></File><File path="Demos\Device\LowLevel\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\LowLevel\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\LowLevel\USBtoSerial\makefile"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\LowLevel\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><File path="Demos\Device\Incomplete\Sideshow\SideshowContent.h"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\SideshowContent.c"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="CDCHost"><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.c"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.h"></File><File path="Demos\Host\ClassDriver\CDCHost\CDCHost.txt"></File><File path="Demos\Host\ClassDriver\CDCHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\ClassDriver\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\ClassDriver\GenericHIDHost\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\ClassDriver\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\ClassDriver\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="CDCHost"><File path="Demos\Host\LowLevel\CDCHost\CDCHost.c"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.h"></File><File path="Demos\Host\LowLevel\CDCHost\CDCHost.txt"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\CDCHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothStack.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="OTG"><Folder name="TestApp"><File path="Demos\OTG\TestApp\Descriptors.c"></File><File path="Demos\OTG\TestApp\Descriptors.h"></File><File path="Demos\OTG\TestApp\Doxygen.conf"></File><File path="Demos\OTG\TestApp\makefile"></File><File path="Demos\OTG\TestApp\TestApp.c"></File><File path="Demos\OTG\TestApp\TestApp.h"></File><File path="Demos\OTG\TestApp\TestApp.txt"></File><File path="Demos\OTG\TestApp\TestEvents.c"></File><File path="Demos\OTG\TestApp\TestEvents.h"></File></Folder><File path="Demos\OTG\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDISConstants.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Host\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Common\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AT90USBXXX67"><File path="LUFA\Drivers\Peripheral\AT90USBXXX67\ADC.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\BuildingLinkableLibraries.txt"></File><File path="LUFA\ChangeLog.txt"></File><File path="LUFA\CompileTimeTokens.txt"></File><File path="LUFA\DirectorySummaries.txt"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\GettingStarted.txt"></File><File path="LUFA\Groups.txt"></File><File path="LUFA\LUFAPoweredProjects.txt"></File><File path="LUFA\MainPage.txt"></File><File path="LUFA\MigrationInformation.txt"></File><File path="LUFA\VIDAndPIDValues.txt"></File><File path="LUFA\WritingBoardDrivers.txt"></File><File path="LUFA\FutureChanges.txt"></File><File path="LUFA\LibraryResources.txt"></File><File path="LUFA\DeviceSupport.txt"></File><File path="LUFA\License.txt"></File><File path="LUFA\AboutLUFA.txt"></File><File path="LUFA\DevelopingWithLUFA.txt"></File><File path="LUFA\Donating.txt"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
diff --git a/LUFA/Drivers/USB/Class/Common/StillImage.h b/LUFA/Drivers/USB/Class/Common/StillImage.h
new file mode 100644 (file)
index 0000000..dde7a74
--- /dev/null
@@ -0,0 +1,67 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2009.\r
+              \r
+  dean [at] fourwalledcubicle [dot] com\r
+      www.fourwalledcubicle.com\r
+*/\r
+\r
+/*\r
+  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, and distribute this software\r
+  and its documentation for any purpose and without fee is hereby\r
+  granted, provided that the above copyright notice appear in all\r
+  copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \ingroup Group_USBClassSI\r
+ *  @{\r
+ */\r
+\r
+#ifndef _SI_CLASS_COMMON_H_\r
+#define _SI_CLASS_COMMON_H_\r
+\r
+       /* Includes: */\r
+               #include "../../USB.h"\r
+\r
+               #include <string.h>\r
+\r
+       /* Enable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       extern "C" {\r
+               #endif\r
+\r
+       /* Macros: */\r
+\r
+\r
+       /* Type defines: */\r
+       \r
+               \r
+       /* Enums: */\r
+       \r
+       \r
+       /* Type Defines: */\r
+       \r
+       \r
+       /* Disable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       }\r
+               #endif\r
+               \r
+#endif\r
+\r
+/** @} */\r
index e00517b..34a1f97 100644 (file)
  *\r
  * \section Sec_MigrationXXXXXX Migrating from 090605 to XXXXXX\r
  *\r
+ *  <b>All</b>\r
+ *    - The "simple scheduler" has been removed, as it was little more than an abtracted loop and caused much confusion. User\r
+ *      applications using the scheduler should switch to regular loops instead.\r
+ *    - The "Dynamic Memory Block Allocator" has been removed, as it was unused in (and unrelated to) the LUFA library and never\r
+ *      used in user applications. The library is available from the author's website for those wishing to still use it in their\r
+ *      applications.\r
  *\r
  * \section Sec_Migration090605 Migrating from 090510 to 090605\r
  *\r