* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
# List C source files here. (C dependencies are automatically generated.)\r
SRC = $(TARGET).c \\r
Descriptors.c \\r
+ $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
# List C source files here. (C dependencies are automatically generated.)\r
SRC = $(TARGET).c \\r
Descriptors.c \\r
+ $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
#define DTYPE_Report 0x22\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
# List C source files here. (C dependencies are automatically generated.)\r
SRC = $(TARGET).c \\r
Descriptors.c \\r
+ $(LUFA_PATH)/LUFA/Scheduler/Scheduler.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Host.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
\r
/** \file\r
*\r
- * Header file for AudioOutput.c.\r
+ * Header file for AudioInput.c.\r
*/\r
\r
-#ifndef _AUDIO_OUTPUT_H_\r
-#define _AUDIO_OUTPUT_H_\r
+#ifndef _AUDIO_INPUT_H_\r
+#define _AUDIO_INPUT_H_\r
\r
/* Includes: */\r
#include <avr/io.h>\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
#define DTYPE_Report 0x22\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
#define DTYPE_Report 0x22\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
#define DTYPE_Report 0x22\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
#define DTYPE_Report 0x22\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
#define DTYPE_Report 0x22\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
# List C++ source files here. (C dependencies are automatically generated.)\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
} USB_Descriptor_Configuration_t;\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
printf_P(PSTR(" -- In State %d\r\n"), USB_HostState);\r
}\r
\r
-/**\r
- * Event handler for the USB_DeviceError event. When fired, the event is logged to the USART and the program\r
- * execution aborted.\r
- */\r
-void EVENT_USB_DeviceError(const uint8_t ErrorCode)\r
-{\r
- puts_P(PSTR(EVENT_PREFIX ESC_BG_RED "Device Mode Error\r\n"));\r
- printf_P(PSTR(" -- Error Code %d\r\n"), ErrorCode);\r
-\r
- Abort_Program();\r
-}\r
-\r
/** Event handler for the USB_UnhandledControlPacket event. When fired, the event is logged to the USART. */\r
void EVENT_USB_UnhandledControlPacket(void)\r
{\r
void EVENT_USB_ConfigurationChanged(void);\r
void EVENT_USB_Suspend(void);\r
void EVENT_USB_WakeUp(void);\r
- void EVENT_USB_Reset(void);\r
- void EVENT_USB_DeviceError(const uint8_t ErrorCode); \r
+ void EVENT_USB_Reset(void); \r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \\r
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \\r
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \\r
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \\r
\r
\r
-<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="AudioInput"><File path="Demos\Device\AudioInput\AudioInput.c"></File><File path="Demos\Device\AudioInput\AudioInput.h"></File><File path="Demos\Device\AudioInput\AudioInput.txt"></File><File path="Demos\Device\AudioInput\Descriptors.c"></File><File path="Demos\Device\AudioInput\Descriptors.h"></File><File path="Demos\Device\AudioInput\Doxygen.conf"></File><File path="Demos\Device\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\AudioOutput\Descriptors.c"></File><File path="Demos\Device\AudioOutput\Descriptors.h"></File><File path="Demos\Device\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\CDC\CDC.c"></File><File path="Demos\Device\CDC\CDC.h"></File><File path="Demos\Device\CDC\CDC.txt"></File><File path="Demos\Device\CDC\Descriptors.c"></File><File path="Demos\Device\CDC\Descriptors.h"></File><File path="Demos\Device\CDC\Doxygen.conf"></File><File path="Demos\Device\CDC\LUFA CDC.inf"></File><File path="Demos\Device\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\DualCDC\Descriptors.c"></File><File path="Demos\Device\DualCDC\Descriptors.h"></File><File path="Demos\Device\DualCDC\Doxygen.conf"></File><File path="Demos\Device\DualCDC\DualCDC.c"></File><File path="Demos\Device\DualCDC\DualCDC.h"></File><File path="Demos\Device\DualCDC\DualCDC.txt"></File><File path="Demos\Device\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\GenericHID\Descriptors.c"></File><File path="Demos\Device\GenericHID\Descriptors.h"></File><File path="Demos\Device\GenericHID\GenericHID.c"></File><File path="Demos\Device\GenericHID\GenericHID.h"></File><File path="Demos\Device\GenericHID\makefile"></File><File path="Demos\Device\GenericHID\GenericHID.txt"></File><File path="Demos\Device\GenericHID\Doxygen.conf"></File></Folder><Folder name="Joystick"><File path="Demos\Device\Joystick\Descriptors.c"></File><File path="Demos\Device\Joystick\Descriptors.h"></File><File path="Demos\Device\Joystick\Doxygen.conf"></File><File path="Demos\Device\Joystick\Joystick.c"></File><File path="Demos\Device\Joystick\Joystick.h"></File><File path="Demos\Device\Joystick\Joystick.txt"></File><File path="Demos\Device\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\Keyboard\Descriptors.c"></File><File path="Demos\Device\Keyboard\Descriptors.h"></File><File path="Demos\Device\Keyboard\Doxygen.conf"></File><File path="Demos\Device\Keyboard\Keyboard.c"></File><File path="Demos\Device\Keyboard\Keyboard.h"></File><File path="Demos\Device\Keyboard\Keyboard.txt"></File><File path="Demos\Device\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><File path="Demos\Device\MassStorage\DataflashManager.c"></File><File path="Demos\Device\MassStorage\DataflashManager.h"></File><File path="Demos\Device\MassStorage\Descriptors.c"></File><File path="Demos\Device\MassStorage\Descriptors.h"></File><File path="Demos\Device\MassStorage\Doxygen.conf"></File><File path="Demos\Device\MassStorage\makefile"></File><File path="Demos\Device\MassStorage\MassStorage.c"></File><File path="Demos\Device\MassStorage\MassStorage.h"></File><File path="Demos\Device\MassStorage\MassStorage.txt"></File><File path="Demos\Device\MassStorage\SCSI.c"></File><File path="Demos\Device\MassStorage\SCSI.h"></File><File path="Demos\Device\MassStorage\SCSI_Codes.h"></File></Folder><Folder name="MIDI"><File path="Demos\Device\MIDI\Descriptors.c"></File><File path="Demos\Device\MIDI\Descriptors.h"></File><File path="Demos\Device\MIDI\Doxygen.conf"></File><File path="Demos\Device\MIDI\makefile"></File><File path="Demos\Device\MIDI\MIDI.c"></File><File path="Demos\Device\MIDI\MIDI.h"></File><File path="Demos\Device\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\Mouse\Descriptors.c"></File><File path="Demos\Device\Mouse\Descriptors.h"></File><File path="Demos\Device\Mouse\Doxygen.conf"></File><File path="Demos\Device\Mouse\makefile"></File><File path="Demos\Device\Mouse\Mouse.c"></File><File path="Demos\Device\Mouse\Mouse.h"></File><File path="Demos\Device\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><File path="Demos\Device\RNDISEthernet\ARP.c"></File><File path="Demos\Device\RNDISEthernet\ARP.h"></File><File path="Demos\Device\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\RNDISEthernet\DHCP.c"></File><File path="Demos\Device\RNDISEthernet\DHCP.h"></File><File path="Demos\Device\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\RNDISEthernet\Ethernet.c"></File><File path="Demos\Device\RNDISEthernet\Ethernet.h"></File><File path="Demos\Device\RNDISEthernet\EthernetProtocols.h"></File><File path="Demos\Device\RNDISEthernet\ICMP.c"></File><File path="Demos\Device\RNDISEthernet\ICMP.h"></File><File path="Demos\Device\RNDISEthernet\IP.c"></File><File path="Demos\Device\RNDISEthernet\IP.h"></File><File path="Demos\Device\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\RNDISEthernet\makefile"></File><File path="Demos\Device\RNDISEthernet\ProtocolDecoders.c"></File><File path="Demos\Device\RNDISEthernet\ProtocolDecoders.h"></File><File path="Demos\Device\RNDISEthernet\RNDIS.c"></File><File path="Demos\Device\RNDISEthernet\RNDIS.h"></File><File path="Demos\Device\RNDISEthernet\RNDISConstants.h"></File><File path="Demos\Device\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\RNDISEthernet\TCP.c"></File><File path="Demos\Device\RNDISEthernet\TCP.h"></File><File path="Demos\Device\RNDISEthernet\UDP.c"></File><File path="Demos\Device\RNDISEthernet\UDP.h"></File><File path="Demos\Device\RNDISEthernet\Webserver.c"></File><File path="Demos\Device\RNDISEthernet\Webserver.h"></File></Folder><Folder name="USBtoSerial"><File path="Demos\Device\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\USBtoSerial\makefile"></File><File path="Demos\Device\USBtoSerial\RingBuff.c"></File><File path="Demos\Device\USBtoSerial\RingBuff.h"></File><File path="Demos\Device\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="CDCHost"><File path="Demos\Host\CDCHost\CDCHost.c"></File><File path="Demos\Host\CDCHost\CDCHost.h"></File><File path="Demos\Host\CDCHost\CDCHost.txt"></File><File path="Demos\Host\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\CDCHost\Doxygen.conf"></File><File path="Demos\Host\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\GenericHIDHost\makefile"></File><File path="Demos\Host\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\GenericHIDHost\GenericHIDHost.txt"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\KeyboardHostWithParser\makefile"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\MassStorageHost\makefile"></File><File path="Demos\Host\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\MassStorageHost\MassStoreCommands.c"></File><File path="Demos\Host\MassStorageHost\MassStoreCommands.h"></File><File path="Demos\Host\MassStorageHost\SCSI_Codes.h"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\MouseHost\Doxygen.conf"></File><File path="Demos\Host\MouseHost\makefile"></File><File path="Demos\Host\MouseHost\MouseHost.c"></File><File path="Demos\Host\MouseHost\MouseHost.h"></File><File path="Demos\Host\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\MouseHostWithParser\makefile"></File><File path="Demos\Host\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\MouseHostWithParser\MouseHostWithParser.txt"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\StillImageHost\makefile"></File><File path="Demos\Host\StillImageHost\PIMACodes.h"></File><File path="Demos\Host\StillImageHost\StillImageCommands.c"></File><File path="Demos\Host\StillImageHost\StillImageCommands.h"></File><File path="Demos\Host\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\StillImageHost\StillImageHost.txt"></File></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.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></Folder><Folder name="Class"><File path="LUFA\Drivers\USB\Class\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\Class\ConfigDescriptor.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="Scheduler"><File path="LUFA\Scheduler\Scheduler.h"></File><File path="LUFA\Scheduler\Scheduler.c"></File></Folder><Folder name="MemoryAllocator"><File path="LUFA\MemoryAllocator\DynAlloc.h"></File><File path="LUFA\MemoryAllocator\DynAlloc.c"></File></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\GettingStarted.txt"></File><File path="LUFA\MainPage.txt"></File><File path="LUFA\SchedulerOverview.txt"></File><File path="LUFA\VIDAndPIDValues.txt"></File><File path="LUFA\ChangeLog.txt"></File><File path="LUFA\CompileTimeTokens.txt"></File><File path="LUFA\MigrationInformation.txt"></File><File path="LUFA\DirectorySummaries.txt"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\WritingBoardDrivers.txt"></File><File path="LUFA\LUFAPoweredProjects.txt"></File><File path="LUFA\Groups.txt"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><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\MagstripeHW.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\CircularBitBuffer.c"></File><File path="Projects\Magstripe\CircularBitBuffer.h"></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></Project>
\ No newline at end of file
+<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="AudioInput"><File path="Demos\Device\AudioInput\AudioInput.c"></File><File path="Demos\Device\AudioInput\AudioInput.h"></File><File path="Demos\Device\AudioInput\AudioInput.txt"></File><File path="Demos\Device\AudioInput\Descriptors.c"></File><File path="Demos\Device\AudioInput\Descriptors.h"></File><File path="Demos\Device\AudioInput\Doxygen.conf"></File><File path="Demos\Device\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\AudioOutput\Descriptors.c"></File><File path="Demos\Device\AudioOutput\Descriptors.h"></File><File path="Demos\Device\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\AudioOutput\makefile"></File></Folder><Folder name="CDC"><File path="Demos\Device\CDC\CDC.c"></File><File path="Demos\Device\CDC\CDC.h"></File><File path="Demos\Device\CDC\CDC.txt"></File><File path="Demos\Device\CDC\Descriptors.c"></File><File path="Demos\Device\CDC\Descriptors.h"></File><File path="Demos\Device\CDC\Doxygen.conf"></File><File path="Demos\Device\CDC\LUFA CDC.inf"></File><File path="Demos\Device\CDC\makefile"></File></Folder><Folder name="DualCDC"><File path="Demos\Device\DualCDC\Descriptors.c"></File><File path="Demos\Device\DualCDC\Descriptors.h"></File><File path="Demos\Device\DualCDC\Doxygen.conf"></File><File path="Demos\Device\DualCDC\DualCDC.c"></File><File path="Demos\Device\DualCDC\DualCDC.h"></File><File path="Demos\Device\DualCDC\DualCDC.txt"></File><File path="Demos\Device\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\Device\DualCDC\makefile"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\GenericHID\Descriptors.c"></File><File path="Demos\Device\GenericHID\Descriptors.h"></File><File path="Demos\Device\GenericHID\GenericHID.c"></File><File path="Demos\Device\GenericHID\GenericHID.h"></File><File path="Demos\Device\GenericHID\makefile"></File><File path="Demos\Device\GenericHID\GenericHID.txt"></File><File path="Demos\Device\GenericHID\Doxygen.conf"></File></Folder><Folder name="Joystick"><File path="Demos\Device\Joystick\Descriptors.c"></File><File path="Demos\Device\Joystick\Descriptors.h"></File><File path="Demos\Device\Joystick\Doxygen.conf"></File><File path="Demos\Device\Joystick\Joystick.c"></File><File path="Demos\Device\Joystick\Joystick.h"></File><File path="Demos\Device\Joystick\Joystick.txt"></File><File path="Demos\Device\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\Keyboard\Descriptors.c"></File><File path="Demos\Device\Keyboard\Descriptors.h"></File><File path="Demos\Device\Keyboard\Doxygen.conf"></File><File path="Demos\Device\Keyboard\Keyboard.c"></File><File path="Demos\Device\Keyboard\Keyboard.h"></File><File path="Demos\Device\Keyboard\Keyboard.txt"></File><File path="Demos\Device\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><File path="Demos\Device\MassStorage\DataflashManager.c"></File><File path="Demos\Device\MassStorage\DataflashManager.h"></File><File path="Demos\Device\MassStorage\Descriptors.c"></File><File path="Demos\Device\MassStorage\Descriptors.h"></File><File path="Demos\Device\MassStorage\Doxygen.conf"></File><File path="Demos\Device\MassStorage\makefile"></File><File path="Demos\Device\MassStorage\MassStorage.c"></File><File path="Demos\Device\MassStorage\MassStorage.h"></File><File path="Demos\Device\MassStorage\MassStorage.txt"></File><File path="Demos\Device\MassStorage\SCSI.c"></File><File path="Demos\Device\MassStorage\SCSI.h"></File><File path="Demos\Device\MassStorage\SCSI_Codes.h"></File></Folder><Folder name="MIDI"><File path="Demos\Device\MIDI\Descriptors.c"></File><File path="Demos\Device\MIDI\Descriptors.h"></File><File path="Demos\Device\MIDI\Doxygen.conf"></File><File path="Demos\Device\MIDI\makefile"></File><File path="Demos\Device\MIDI\MIDI.c"></File><File path="Demos\Device\MIDI\MIDI.h"></File><File path="Demos\Device\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\Mouse\Descriptors.c"></File><File path="Demos\Device\Mouse\Descriptors.h"></File><File path="Demos\Device\Mouse\Doxygen.conf"></File><File path="Demos\Device\Mouse\makefile"></File><File path="Demos\Device\Mouse\Mouse.c"></File><File path="Demos\Device\Mouse\Mouse.h"></File><File path="Demos\Device\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><File path="Demos\Device\RNDISEthernet\ARP.c"></File><File path="Demos\Device\RNDISEthernet\ARP.h"></File><File path="Demos\Device\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\RNDISEthernet\DHCP.c"></File><File path="Demos\Device\RNDISEthernet\DHCP.h"></File><File path="Demos\Device\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\RNDISEthernet\Ethernet.c"></File><File path="Demos\Device\RNDISEthernet\Ethernet.h"></File><File path="Demos\Device\RNDISEthernet\EthernetProtocols.h"></File><File path="Demos\Device\RNDISEthernet\ICMP.c"></File><File path="Demos\Device\RNDISEthernet\ICMP.h"></File><File path="Demos\Device\RNDISEthernet\IP.c"></File><File path="Demos\Device\RNDISEthernet\IP.h"></File><File path="Demos\Device\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\RNDISEthernet\makefile"></File><File path="Demos\Device\RNDISEthernet\ProtocolDecoders.c"></File><File path="Demos\Device\RNDISEthernet\ProtocolDecoders.h"></File><File path="Demos\Device\RNDISEthernet\RNDIS.c"></File><File path="Demos\Device\RNDISEthernet\RNDIS.h"></File><File path="Demos\Device\RNDISEthernet\RNDISConstants.h"></File><File path="Demos\Device\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\RNDISEthernet\TCP.c"></File><File path="Demos\Device\RNDISEthernet\TCP.h"></File><File path="Demos\Device\RNDISEthernet\UDP.c"></File><File path="Demos\Device\RNDISEthernet\UDP.h"></File><File path="Demos\Device\RNDISEthernet\Webserver.c"></File><File path="Demos\Device\RNDISEthernet\Webserver.h"></File></Folder><Folder name="USBtoSerial"><File path="Demos\Device\USBtoSerial\Descriptors.c"></File><File path="Demos\Device\USBtoSerial\Descriptors.h"></File><File path="Demos\Device\USBtoSerial\Doxygen.conf"></File><File path="Demos\Device\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\Device\USBtoSerial\makefile"></File><File path="Demos\Device\USBtoSerial\RingBuff.c"></File><File path="Demos\Device\USBtoSerial\RingBuff.h"></File><File path="Demos\Device\USBtoSerial\USBtoSerial.c"></File><File path="Demos\Device\USBtoSerial\USBtoSerial.h"></File><File path="Demos\Device\USBtoSerial\USBtoSerial.txt"></File></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="CDCHost"><File path="Demos\Host\CDCHost\CDCHost.c"></File><File path="Demos\Host\CDCHost\CDCHost.h"></File><File path="Demos\Host\CDCHost\CDCHost.txt"></File><File path="Demos\Host\CDCHost\ConfigDescriptor.c"></File><File path="Demos\Host\CDCHost\ConfigDescriptor.h"></File><File path="Demos\Host\CDCHost\Doxygen.conf"></File><File path="Demos\Host\CDCHost\makefile"></File></Folder><Folder name="GenericHIDHost"><File path="Demos\Host\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\GenericHIDHost\makefile"></File><File path="Demos\Host\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\GenericHIDHost\GenericHIDHost.txt"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\KeyboardHostWithParser\makefile"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\MassStorageHost\makefile"></File><File path="Demos\Host\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\MassStorageHost\MassStoreCommands.c"></File><File path="Demos\Host\MassStorageHost\MassStoreCommands.h"></File><File path="Demos\Host\MassStorageHost\SCSI_Codes.h"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\MouseHost\Doxygen.conf"></File><File path="Demos\Host\MouseHost\makefile"></File><File path="Demos\Host\MouseHost\MouseHost.c"></File><File path="Demos\Host\MouseHost\MouseHost.h"></File><File path="Demos\Host\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\MouseHostWithParser\makefile"></File><File path="Demos\Host\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\MouseHostWithParser\MouseHostWithParser.txt"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\StillImageHost\makefile"></File><File path="Demos\Host\StillImageHost\PIMACodes.h"></File><File path="Demos\Host\StillImageHost\StillImageCommands.c"></File><File path="Demos\Host\StillImageHost\StillImageCommands.h"></File><File path="Demos\Host\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\StillImageHost\StillImageHost.txt"></File></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"><File path="LUFA\Drivers\USB\Class\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\HIDReportData.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="Scheduler"><File path="LUFA\Scheduler\Scheduler.h"></File><File path="LUFA\Scheduler\Scheduler.c"></File></Folder><Folder name="MemoryAllocator"><File path="LUFA\MemoryAllocator\DynAlloc.h"></File><File path="LUFA\MemoryAllocator\DynAlloc.c"></File></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\GettingStarted.txt"></File><File path="LUFA\MainPage.txt"></File><File path="LUFA\SchedulerOverview.txt"></File><File path="LUFA\VIDAndPIDValues.txt"></File><File path="LUFA\ChangeLog.txt"></File><File path="LUFA\CompileTimeTokens.txt"></File><File path="LUFA\MigrationInformation.txt"></File><File path="LUFA\DirectorySummaries.txt"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\WritingBoardDrivers.txt"></File><File path="LUFA\LUFAPoweredProjects.txt"></File><File path="LUFA\Groups.txt"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><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\MagstripeHW.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\CircularBitBuffer.c"></File><File path="Projects\Magstripe\CircularBitBuffer.h"></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></Project>
\ No newline at end of file
* - Removed DESCRIPTOR_COMPARATOR() macro - comparators should now use regular function definitions to clarify user code\r
* - USB_IsConnected is now cleared before the USB_Disconnect() event is fired in response to VBUS being removed\r
* - Fixed incorrect PID value being used in the USBtoSerial project (thanks to Phill)\r
+ * - Deleted StdDescriptors.c, renamed USB_GetDescriptor() to CALLBACK_USB_GetDescriptor, moved ConfigDescriptor.c/.h from the\r
+ * LUFA/Drivers/USB/Class/ directory to LUFA/Drivers/USB/HighLevel/ in preperation for the new USB class APIs\r
*\r
*\r
* \section Sec_ChangeLog090510 Version 090510\r
+++ /dev/null
-/*\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
-#include "ConfigDescriptor.h"\r
-\r
-#if defined(USB_CAN_BE_HOST)\r
-uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr)\r
-{\r
- uint8_t ErrorCode;\r
-\r
- USB_ControlRequest = (USB_Request_Header_t)\r
- {\r
- .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
- .bRequest = REQ_GetDescriptor,\r
- .wValue = (DTYPE_Configuration << 8),\r
- .wIndex = 0,\r
- .wLength = sizeof(USB_Descriptor_Configuration_Header_t),\r
- };\r
- \r
- Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
-\r
- if (BufferPtr == NULL)\r
- {\r
- uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];\r
-\r
- ErrorCode = USB_Host_SendControlRequest(ConfigHeader);\r
-\r
- #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)\r
- *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).TotalConfigurationSize;\r
- #else\r
- *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).wTotalLength; \r
- #endif\r
- }\r
- else\r
- {\r
- USB_ControlRequest.wLength = *ConfigSizePtr;\r
- \r
- ErrorCode = USB_Host_SendControlRequest(BufferPtr); \r
- }\r
-\r
- return ErrorCode;\r
-}\r
-#endif\r
-\r
-void USB_GetNextDescriptorOfType(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc,\r
- const uint8_t Type)\r
-{\r
- while (*BytesRem)\r
- {\r
- USB_GetNextDescriptor(BytesRem, CurrConfigLoc); \r
-\r
- if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type)\r
- return;\r
- }\r
-}\r
-\r
-void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc,\r
- const uint8_t Type,\r
- const uint8_t BeforeType)\r
-{\r
- while (*BytesRem)\r
- {\r
- USB_GetNextDescriptor(BytesRem, CurrConfigLoc);\r
-\r
- if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type)\r
- {\r
- return;\r
- }\r
- else if (DESCRIPTOR_TYPE(*CurrConfigLoc) == BeforeType)\r
- {\r
- *BytesRem = 0;\r
- return;\r
- }\r
- }\r
-}\r
-\r
-void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc,\r
- const uint8_t Type,\r
- const uint8_t AfterType)\r
-{\r
- USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, AfterType);\r
- \r
- if (*BytesRem)\r
- USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, Type);\r
-}\r
- \r
-uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine)\r
-{\r
- uint8_t ErrorCode;\r
- \r
- while (*BytesRem)\r
- {\r
- uint8_t* PrevDescLoc = *CurrConfigLoc;\r
- uint16_t PrevBytesRem = *BytesRem;\r
-\r
- USB_GetNextDescriptor(BytesRem, CurrConfigLoc);\r
-\r
- if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound)\r
- {\r
- if (ErrorCode == DESCRIPTOR_SEARCH_Fail)\r
- {\r
- *CurrConfigLoc = PrevDescLoc;\r
- *BytesRem = PrevBytesRem;\r
- }\r
- \r
- return ErrorCode;\r
- }\r
- }\r
- \r
- return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor;\r
-}\r
+++ /dev/null
-/*\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
- * Configuration descriptor parser API. This section of the library gives a friendly API which can be used in\r
- * host applications to easily parse an attached device's configuration descriptor so that endpoint, interface\r
- * and other descriptor data can be extracted and used as needed.\r
- */\r
-\r
-/** \ingroup Group_Descriptors\r
- * @defgroup Group_ConfigDescriptorParser Configuration Descriptor Parser\r
- *\r
- * Functions, macros, variables, enums and types related to the parsing of Configuration Descriptors.\r
- *\r
- * @{\r
- */\r
-\r
-#ifndef __CONFIGDESCRIPTOR_H__\r
-#define __CONFIGDESCRIPTOR_H__\r
-\r
- /* Includes: */\r
- #include <avr/io.h>\r
- \r
- #include "../../../Common/Common.h"\r
- #include "../HighLevel/USBMode.h"\r
- #include "../LowLevel/HostChapter9.h"\r
- #include "../HighLevel/StdDescriptors.h"\r
- \r
- /* Enable C linkage for C++ Compilers: */\r
- #if defined(__cplusplus)\r
- extern "C" {\r
- #endif\r
-\r
- /* Public Interface - May be used in end-application: */ \r
- /* Macros: */\r
- /** Mask for determining the type of an endpoint from an endpoint descriptor. This should then be compared\r
- * with the EP_TYPE_* masks to determine the exact type of the endpoint.\r
- */\r
- #define EP_TYPE_MASK 0x03\r
-\r
- /** Casts a pointer to a descriptor inside the configuration descriptor into a pointer to the given\r
- * descriptor type.\r
- *\r
- * Usage Example:\r
- * \code\r
- * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header\r
- * USB_Descriptor_Configuration_Header_t* ConfigHeaderPtr = DESCRIPTOR_PCAST(CurrDescriptor,\r
- * USB_Descriptor_Configuration_Header_t);\r
- *\r
- * // Can now access elements of the configuration header struct using the -> indirection operator\r
- * \endcode\r
- */\r
- #define DESCRIPTOR_PCAST(DescriptorPtr, Type) ((Type*)DescriptorPtr)\r
-\r
- /** Casts a pointer to a descriptor inside the configuration descriptor into the given descriptor\r
- * type (as an actual struct instance rather than a pointer to a struct).\r
- *\r
- * Usage Example:\r
- * \code\r
- * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header\r
- * USB_Descriptor_Configuration_Header_t ConfigHeader = DESCRIPTOR_CAST(CurrDescriptor,\r
- * USB_Descriptor_Configuration_Header_t);\r
- *\r
- * // Can now access elements of the configuration header struct using the . operator\r
- * \endcode\r
- */\r
- #define DESCRIPTOR_CAST(DescriptorPtr, Type) (*DESCRIPTOR_PCAST(DescriptorPtr, Type))\r
-\r
- /** Returns the descriptor's type, expressed as the 8-bit type value in the header of the descriptor.\r
- * This value's meaning depends on the descriptor's placement in the descriptor, but standard type\r
- * values can be accessed in the \ref USB_DescriptorTypes_t enum.\r
- */\r
- #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)\r
- #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Type\r
- #else\r
- #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bDescriptorType \r
- #endif\r
- \r
- /** Returns the descriptor's size, expressed as the 8-bit value indicating the number of bytes. */\r
- #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)\r
- #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Size\r
- #else\r
- #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bLength\r
- #endif\r
-\r
- /* Type Defines: */\r
- /** Type define for a Configuration Descriptor comparator function (function taking a pointer to an array\r
- * of type void, returning a uint8_t value).\r
- *\r
- * \see \ref USB_GetNextDescriptorComp function for more details\r
- */\r
- typedef uint8_t (* const ConfigComparatorPtr_t)(void* const);\r
-\r
- /* Function Prototypes: */\r
- /** Searches for the next descriptor in the given configuration descriptor using a premade comparator\r
- * function. The routine updates the position and remaining configuration descriptor bytes values\r
- * automatically. If a comparator routine fails a search, the descriptor pointer is retreated back\r
- * so that the next descriptor search invocation will start from the descriptor which first caused the\r
- * original search to fail. This behaviour allows for one comparator to be used immediately after another\r
- * has failed, starting the second search from the descriptor which failed the first.\r
- *\r
- * Comparator functions should be standard functions which accept a pointer to the header of the current\r
- * descriptor inside the configuration descriptor which is being compared, and should return a value from\r
- * the \ref DSearch_Return_ErrorCodes_t enum as a uint8_t value.\r
- *\r
- * \note This function is available in USB Host mode only.\r
- *\r
- * \param BytesRem Pointer to an int storing the remaining bytes in the configuration descriptor\r
- * \param CurrConfigLoc Pointer to the current position in the configuration descriptor\r
- * \param ComparatorRoutine Name of the comparator search function to use on the configuration descriptor\r
- *\r
- * \return Value of one of the members of the \ref DSearch_Comp_Return_ErrorCodes_t enum\r
- *\r
- * Usage Example:\r
- * \code\r
- * uint8_t EndpointSearcher(void* CurrentDescriptor); // Comparator Prototype\r
- *\r
- * uint8_t EndpointSearcher(void* CurrentDescriptor)\r
- * {\r
- * if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
- * return DESCRIPTOR_SEARCH_Found;\r
- * else\r
- * return DESCRIPTOR_SEARCH_NotFound;\r
- * }\r
- *\r
- * //...\r
- * // After retrieving configuration descriptor:\r
- * if (USB_Host_GetNextDescriptorComp(&BytesRemaining, &ConfigDescriptorData, EndpointSearcher) ==\r
- * Descriptor_Search_Comp_Found)\r
- * {\r
- * // Do something with the endpoint descriptor\r
- * }\r
- * \endcode\r
- */\r
- uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine);\r
- \r
- /* Enums: */\r
- /** Enum for return values of a descriptor comparator function. */\r
- enum DSearch_Return_ErrorCodes_t\r
- {\r
- DESCRIPTOR_SEARCH_Found = 0, /**< Current descriptor matches comparator criteria. */\r
- DESCRIPTOR_SEARCH_Fail = 1, /**< No further descriptor could possibly match criteria, fail the search. */\r
- DESCRIPTOR_SEARCH_NotFound = 2, /**< Current descriptor does not match comparator criteria. */\r
- };\r
-\r
- /** Enum for return values of \ref USB_GetNextDescriptorComp(). */\r
- enum DSearch_Comp_Return_ErrorCodes_t\r
- {\r
- DESCRIPTOR_SEARCH_COMP_Found = 0, /**< Configuration descriptor now points to descriptor which matches\r
- * search criteria of the given comparator function. */\r
- DESCRIPTOR_SEARCH_COMP_Fail = 1, /**< Comparator function returned Descriptor_Search_Fail. */\r
- DESCRIPTOR_SEARCH_COMP_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */\r
- };\r
- \r
- /* Function Prototypes: */\r
- /** Retrieves the configuration descriptor data or size from an attached device via a standard request.\r
- *\r
- * \param ConfigSizePtr Pointer to a uint16_t for either storing or retrieving the configuration\r
- * descriptor size\r
- *\r
- * \param BufferPtr Pointer to the buffer for storing the configuration descriptor data. If this is\r
- * NULL, the size of the configuration descriptor will be retrieved instead and\r
- * placed in the variable pointed to by ConfigSizePtr. If this is non-NULL, the number\r
- * of bytes indicated by ConfigSizePtr of the configuration descriptor will be loaded\r
- * into the buffer\r
- */\r
- uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr)\r
- ATTR_NON_NULL_PTR_ARG(1);\r
-\r
- /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value.\r
- * The bytes remaining value is automatically decremented.\r
- *\r
- * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
- * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
- * \param Type Descriptor type value to search for\r
- */\r
- void USB_GetNextDescriptorOfType(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc,\r
- const uint8_t Type)\r
- ATTR_NON_NULL_PTR_ARG(1, 2);\r
-\r
- /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value,\r
- * which must come before a descriptor of the second given type value. If the BeforeType type\r
- * descriptor is reached first, the number of bytes remaining to process is set to zero and the\r
- * function exits. The bytes remaining value is automatically decremented.\r
- *\r
- * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
- * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
- * \param Type Descriptor type value to search for\r
- * \param BeforeType Descriptor type value which must not be reached before the given Type descriptor\r
- */\r
- void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc,\r
- const uint8_t Type,\r
- const uint8_t BeforeType)\r
- ATTR_NON_NULL_PTR_ARG(1, 2);\r
-\r
- /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value,\r
- * which must come after a descriptor of the second given type value. The bytes remaining value is\r
- * automatically decremented.\r
- *\r
- * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
- * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
- * \param Type Descriptor type value to search for\r
- * \param AfterType Descriptor type value which must be reached before the given Type descriptor\r
- */\r
- void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc,\r
- const uint8_t Type,\r
- const uint8_t AfterType)\r
- ATTR_NON_NULL_PTR_ARG(1, 2);\r
-\r
- /* Inline Functions: */\r
- /** Skips over the current sub-descriptor inside the configuration descriptor, so that the pointer then\r
- points to the next sub-descriptor. The bytes remaining value is automatically decremented.\r
- *\r
- * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
- * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
- */\r
- static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc) \r
- ATTR_NON_NULL_PTR_ARG(1, 2); \r
- static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
- uint8_t** const CurrConfigLoc)\r
- {\r
- #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)\r
- uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;\r
- #else\r
- uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).bLength; \r
- #endif\r
-\r
- *CurrConfigLoc += CurrDescriptorSize;\r
- *BytesRem -= CurrDescriptorSize;\r
- }\r
- \r
- /* Disable C linkage for C++ Compilers: */\r
- #if defined(__cplusplus)\r
- }\r
- #endif\r
-\r
-#endif\r
-\r
-/** @} */\r
--- /dev/null
+/*\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
+#include "ConfigDescriptor.h"\r
+\r
+#if defined(USB_CAN_BE_HOST)\r
+uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr)\r
+{\r
+ uint8_t ErrorCode;\r
+\r
+ USB_ControlRequest = (USB_Request_Header_t)\r
+ {\r
+ .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
+ .bRequest = REQ_GetDescriptor,\r
+ .wValue = (DTYPE_Configuration << 8),\r
+ .wIndex = 0,\r
+ .wLength = sizeof(USB_Descriptor_Configuration_Header_t),\r
+ };\r
+ \r
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+ if (BufferPtr == NULL)\r
+ {\r
+ uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];\r
+\r
+ ErrorCode = USB_Host_SendControlRequest(ConfigHeader);\r
+\r
+ #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)\r
+ *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).TotalConfigurationSize;\r
+ #else\r
+ *ConfigSizePtr = DESCRIPTOR_CAST(ConfigHeader, USB_Descriptor_Configuration_Header_t).wTotalLength; \r
+ #endif\r
+ }\r
+ else\r
+ {\r
+ USB_ControlRequest.wLength = *ConfigSizePtr;\r
+ \r
+ ErrorCode = USB_Host_SendControlRequest(BufferPtr); \r
+ }\r
+\r
+ return ErrorCode;\r
+}\r
+#endif\r
+\r
+void USB_GetNextDescriptorOfType(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc,\r
+ const uint8_t Type)\r
+{\r
+ while (*BytesRem)\r
+ {\r
+ USB_GetNextDescriptor(BytesRem, CurrConfigLoc); \r
+\r
+ if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type)\r
+ return;\r
+ }\r
+}\r
+\r
+void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc,\r
+ const uint8_t Type,\r
+ const uint8_t BeforeType)\r
+{\r
+ while (*BytesRem)\r
+ {\r
+ USB_GetNextDescriptor(BytesRem, CurrConfigLoc);\r
+\r
+ if (DESCRIPTOR_TYPE(*CurrConfigLoc) == Type)\r
+ {\r
+ return;\r
+ }\r
+ else if (DESCRIPTOR_TYPE(*CurrConfigLoc) == BeforeType)\r
+ {\r
+ *BytesRem = 0;\r
+ return;\r
+ }\r
+ }\r
+}\r
+\r
+void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc,\r
+ const uint8_t Type,\r
+ const uint8_t AfterType)\r
+{\r
+ USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, AfterType);\r
+ \r
+ if (*BytesRem)\r
+ USB_GetNextDescriptorOfType(BytesRem, CurrConfigLoc, Type);\r
+}\r
+ \r
+uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine)\r
+{\r
+ uint8_t ErrorCode;\r
+ \r
+ while (*BytesRem)\r
+ {\r
+ uint8_t* PrevDescLoc = *CurrConfigLoc;\r
+ uint16_t PrevBytesRem = *BytesRem;\r
+\r
+ USB_GetNextDescriptor(BytesRem, CurrConfigLoc);\r
+\r
+ if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound)\r
+ {\r
+ if (ErrorCode == DESCRIPTOR_SEARCH_Fail)\r
+ {\r
+ *CurrConfigLoc = PrevDescLoc;\r
+ *BytesRem = PrevBytesRem;\r
+ }\r
+ \r
+ return ErrorCode;\r
+ }\r
+ }\r
+ \r
+ return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor;\r
+}\r
--- /dev/null
+/*\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
+ * Configuration descriptor parser API. This section of the library gives a friendly API which can be used in\r
+ * host applications to easily parse an attached device's configuration descriptor so that endpoint, interface\r
+ * and other descriptor data can be extracted and used as needed.\r
+ */\r
+\r
+/** \ingroup Group_Descriptors\r
+ * @defgroup Group_ConfigDescriptorParser Configuration Descriptor Parser\r
+ *\r
+ * Functions, macros, variables, enums and types related to the parsing of Configuration Descriptors.\r
+ *\r
+ * @{\r
+ */\r
+\r
+#ifndef __CONFIGDESCRIPTOR_H__\r
+#define __CONFIGDESCRIPTOR_H__\r
+\r
+ /* Includes: */\r
+ #include <avr/io.h>\r
+ \r
+ #include "../../../Common/Common.h"\r
+ #include "../HighLevel/USBMode.h"\r
+ #include "../LowLevel/HostChapter9.h"\r
+ #include "../HighLevel/StdDescriptors.h"\r
+ \r
+ /* Enable C linkage for C++ Compilers: */\r
+ #if defined(__cplusplus)\r
+ extern "C" {\r
+ #endif\r
+\r
+ /* Public Interface - May be used in end-application: */ \r
+ /* Macros: */\r
+ /** Mask for determining the type of an endpoint from an endpoint descriptor. This should then be compared\r
+ * with the EP_TYPE_* masks to determine the exact type of the endpoint.\r
+ */\r
+ #define EP_TYPE_MASK 0x03\r
+\r
+ /** Casts a pointer to a descriptor inside the configuration descriptor into a pointer to the given\r
+ * descriptor type.\r
+ *\r
+ * Usage Example:\r
+ * \code\r
+ * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header\r
+ * USB_Descriptor_Configuration_Header_t* ConfigHeaderPtr = DESCRIPTOR_PCAST(CurrDescriptor,\r
+ * USB_Descriptor_Configuration_Header_t);\r
+ *\r
+ * // Can now access elements of the configuration header struct using the -> indirection operator\r
+ * \endcode\r
+ */\r
+ #define DESCRIPTOR_PCAST(DescriptorPtr, Type) ((Type*)DescriptorPtr)\r
+\r
+ /** Casts a pointer to a descriptor inside the configuration descriptor into the given descriptor\r
+ * type (as an actual struct instance rather than a pointer to a struct).\r
+ *\r
+ * Usage Example:\r
+ * \code\r
+ * uint8_t* CurrDescriptor = &ConfigDescriptor[0]; // Pointing to the configuration header\r
+ * USB_Descriptor_Configuration_Header_t ConfigHeader = DESCRIPTOR_CAST(CurrDescriptor,\r
+ * USB_Descriptor_Configuration_Header_t);\r
+ *\r
+ * // Can now access elements of the configuration header struct using the . operator\r
+ * \endcode\r
+ */\r
+ #define DESCRIPTOR_CAST(DescriptorPtr, Type) (*DESCRIPTOR_PCAST(DescriptorPtr, Type))\r
+\r
+ /** Returns the descriptor's type, expressed as the 8-bit type value in the header of the descriptor.\r
+ * This value's meaning depends on the descriptor's placement in the descriptor, but standard type\r
+ * values can be accessed in the \ref USB_DescriptorTypes_t enum.\r
+ */\r
+ #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)\r
+ #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Type\r
+ #else\r
+ #define DESCRIPTOR_TYPE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bDescriptorType \r
+ #endif\r
+ \r
+ /** Returns the descriptor's size, expressed as the 8-bit value indicating the number of bytes. */\r
+ #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES) || defined(__DOXYGEN__)\r
+ #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).Size\r
+ #else\r
+ #define DESCRIPTOR_SIZE(DescriptorPtr) DESCRIPTOR_CAST(DescriptorPtr, USB_Descriptor_Header_t).bLength\r
+ #endif\r
+\r
+ /* Type Defines: */\r
+ /** Type define for a Configuration Descriptor comparator function (function taking a pointer to an array\r
+ * of type void, returning a uint8_t value).\r
+ *\r
+ * \see \ref USB_GetNextDescriptorComp function for more details\r
+ */\r
+ typedef uint8_t (* const ConfigComparatorPtr_t)(void* const);\r
+\r
+ /* Function Prototypes: */\r
+ /** Searches for the next descriptor in the given configuration descriptor using a premade comparator\r
+ * function. The routine updates the position and remaining configuration descriptor bytes values\r
+ * automatically. If a comparator routine fails a search, the descriptor pointer is retreated back\r
+ * so that the next descriptor search invocation will start from the descriptor which first caused the\r
+ * original search to fail. This behaviour allows for one comparator to be used immediately after another\r
+ * has failed, starting the second search from the descriptor which failed the first.\r
+ *\r
+ * Comparator functions should be standard functions which accept a pointer to the header of the current\r
+ * descriptor inside the configuration descriptor which is being compared, and should return a value from\r
+ * the \ref DSearch_Return_ErrorCodes_t enum as a uint8_t value.\r
+ *\r
+ * \note This function is available in USB Host mode only.\r
+ *\r
+ * \param BytesRem Pointer to an int storing the remaining bytes in the configuration descriptor\r
+ * \param CurrConfigLoc Pointer to the current position in the configuration descriptor\r
+ * \param ComparatorRoutine Name of the comparator search function to use on the configuration descriptor\r
+ *\r
+ * \return Value of one of the members of the \ref DSearch_Comp_Return_ErrorCodes_t enum\r
+ *\r
+ * Usage Example:\r
+ * \code\r
+ * uint8_t EndpointSearcher(void* CurrentDescriptor); // Comparator Prototype\r
+ *\r
+ * uint8_t EndpointSearcher(void* CurrentDescriptor)\r
+ * {\r
+ * if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Endpoint)\r
+ * return DESCRIPTOR_SEARCH_Found;\r
+ * else\r
+ * return DESCRIPTOR_SEARCH_NotFound;\r
+ * }\r
+ *\r
+ * //...\r
+ * // After retrieving configuration descriptor:\r
+ * if (USB_Host_GetNextDescriptorComp(&BytesRemaining, &ConfigDescriptorData, EndpointSearcher) ==\r
+ * Descriptor_Search_Comp_Found)\r
+ * {\r
+ * // Do something with the endpoint descriptor\r
+ * }\r
+ * \endcode\r
+ */\r
+ uint8_t USB_GetNextDescriptorComp(uint16_t* BytesRem, uint8_t** CurrConfigLoc, ConfigComparatorPtr_t ComparatorRoutine);\r
+ \r
+ /* Enums: */\r
+ /** Enum for return values of a descriptor comparator function. */\r
+ enum DSearch_Return_ErrorCodes_t\r
+ {\r
+ DESCRIPTOR_SEARCH_Found = 0, /**< Current descriptor matches comparator criteria. */\r
+ DESCRIPTOR_SEARCH_Fail = 1, /**< No further descriptor could possibly match criteria, fail the search. */\r
+ DESCRIPTOR_SEARCH_NotFound = 2, /**< Current descriptor does not match comparator criteria. */\r
+ };\r
+\r
+ /** Enum for return values of \ref USB_GetNextDescriptorComp(). */\r
+ enum DSearch_Comp_Return_ErrorCodes_t\r
+ {\r
+ DESCRIPTOR_SEARCH_COMP_Found = 0, /**< Configuration descriptor now points to descriptor which matches\r
+ * search criteria of the given comparator function. */\r
+ DESCRIPTOR_SEARCH_COMP_Fail = 1, /**< Comparator function returned Descriptor_Search_Fail. */\r
+ DESCRIPTOR_SEARCH_COMP_EndOfDescriptor = 2, /**< End of configuration descriptor reached before match found. */\r
+ };\r
+ \r
+ /* Function Prototypes: */\r
+ /** Retrieves the configuration descriptor data or size from an attached device via a standard request.\r
+ *\r
+ * \param ConfigSizePtr Pointer to a uint16_t for either storing or retrieving the configuration\r
+ * descriptor size\r
+ *\r
+ * \param BufferPtr Pointer to the buffer for storing the configuration descriptor data. If this is\r
+ * NULL, the size of the configuration descriptor will be retrieved instead and\r
+ * placed in the variable pointed to by ConfigSizePtr. If this is non-NULL, the number\r
+ * of bytes indicated by ConfigSizePtr of the configuration descriptor will be loaded\r
+ * into the buffer\r
+ */\r
+ uint8_t USB_GetDeviceConfigDescriptor(uint16_t* const ConfigSizePtr, void* BufferPtr)\r
+ ATTR_NON_NULL_PTR_ARG(1);\r
+\r
+ /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value.\r
+ * The bytes remaining value is automatically decremented.\r
+ *\r
+ * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
+ * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
+ * \param Type Descriptor type value to search for\r
+ */\r
+ void USB_GetNextDescriptorOfType(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc,\r
+ const uint8_t Type)\r
+ ATTR_NON_NULL_PTR_ARG(1, 2);\r
+\r
+ /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value,\r
+ * which must come before a descriptor of the second given type value. If the BeforeType type\r
+ * descriptor is reached first, the number of bytes remaining to process is set to zero and the\r
+ * function exits. The bytes remaining value is automatically decremented.\r
+ *\r
+ * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
+ * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
+ * \param Type Descriptor type value to search for\r
+ * \param BeforeType Descriptor type value which must not be reached before the given Type descriptor\r
+ */\r
+ void USB_GetNextDescriptorOfTypeBefore(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc,\r
+ const uint8_t Type,\r
+ const uint8_t BeforeType)\r
+ ATTR_NON_NULL_PTR_ARG(1, 2);\r
+\r
+ /** Skips to the next sub-descriptor inside the configuration descriptor of the specified type value,\r
+ * which must come after a descriptor of the second given type value. The bytes remaining value is\r
+ * automatically decremented.\r
+ *\r
+ * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
+ * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
+ * \param Type Descriptor type value to search for\r
+ * \param AfterType Descriptor type value which must be reached before the given Type descriptor\r
+ */\r
+ void USB_GetNextDescriptorOfTypeAfter(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc,\r
+ const uint8_t Type,\r
+ const uint8_t AfterType)\r
+ ATTR_NON_NULL_PTR_ARG(1, 2);\r
+\r
+ /* Inline Functions: */\r
+ /** Skips over the current sub-descriptor inside the configuration descriptor, so that the pointer then\r
+ points to the next sub-descriptor. The bytes remaining value is automatically decremented.\r
+ *\r
+ * \param BytesRem Pointer to the number of bytes remaining of the configuration descriptor\r
+ * \param CurrConfigLoc Pointer to the current descriptor inside the configuration descriptor\r
+ */\r
+ static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc) \r
+ ATTR_NON_NULL_PTR_ARG(1, 2); \r
+ static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
+ uint8_t** const CurrConfigLoc)\r
+ {\r
+ #if defined(USE_NONSTANDARD_DESCRIPTOR_NAMES)\r
+ uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;\r
+ #else\r
+ uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).bLength; \r
+ #endif\r
+\r
+ *CurrConfigLoc += CurrDescriptorSize;\r
+ *BytesRem -= CurrDescriptorSize;\r
+ }\r
+ \r
+ /* Disable C linkage for C++ Compilers: */\r
+ #if defined(__cplusplus)\r
+ }\r
+ #endif\r
+\r
+#endif\r
+\r
+/** @} */\r
* \ref Group_USBManagement documentation).\r
*/\r
void EVENT_USB_Reset(void);\r
- \r
- /** Event for USB device mode error. This event fires when the USB interface is in device mode,\r
- * and an error occurs which prevents it from operating normally.\r
- *\r
- * \param ErrorCode Error code indicating the source of the error, a value in\r
- * \ref USB_Device_ErrorCodes_t\r
- *\r
- * \note This event does not exist if the USB_HOST_ONLY token is supplied to the compiler (see\r
- * \ref Group_USBManagement documentation).\r
- */\r
- void EVENT_USB_DeviceError(const uint8_t ErrorCode);\r
#endif\r
\r
/* Private Interface - For use in library only: */\r
void EVENT_USB_Suspend(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);\r
void EVENT_USB_WakeUp(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);\r
void EVENT_USB_Reset(void) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);\r
- void EVENT_USB_DeviceError(const uint8_t ErrorCode) ATTR_WEAK ATTR_ALIAS(USB_Event_Stub);\r
#endif\r
#endif\r
\r
+++ /dev/null
-/*\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
-#include "USBMode.h"\r
-\r
-#if defined(USB_CAN_BE_DEVICE)\r
-\r
-#include "StdDescriptors.h"\r
-\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
-{\r
- EVENT_USB_DeviceError(DEVICE_ERROR_GetDescriptorNotHooked);\r
-\r
- return 0;\r
-};\r
-\r
-#endif\r
#endif\r
} USB_Descriptor_String_t;\r
\r
- /* Function Prototypes: */\r
- /** Function to retrieve a given descriptor's size and memory location from the given descriptor type value,\r
- * index and language ID. This function MUST be overridden in the user application (added with full, identical \r
- * prototype and name except for the \ref ATTR_WEAK attribute) so that the library can call it to retrieve descriptor \r
- * data.\r
- *\r
- * \param wValue The type of the descriptor to retrieve in the upper byte, and the index in the \r
- * lower byte (when more than one descriptor of the given type exists, such as the\r
- * case of string descriptors). The type may be one of the standard types defined\r
- * in the DescriptorTypes_t enum, or may be a class-specific descriptor type value.\r
- * \param wIndex The language ID of the string to return if the wValue type indicates DTYPE_String,\r
- * otherwise zero for standard descriptors, or as defined in a class-specific\r
- * standards.\r
- * \param DescriptorAddress Pointer to the descriptor in memory. This should be set by the routine to\r
- * the address of the descriptor.\r
- *\r
- * \note By default, the library expects all descriptors to be located in flash memory via the PROGMEM attribute.\r
- * If descriptors should be located in RAM or EEPROM instead (to speed up access in the case of RAM, or to\r
- * allow the descriptors to be changed dynamically at runtime) either the USE_RAM_DESCRIPTORS or the \r
- * USE_EEPROM_DESCRIPTORS tokens may be defined in the project makefile and passed to the compiler by the -D\r
- * switch.\r
- *\r
- * \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise\r
- */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3);\r
-\r
/* Private Interface - For use in library only: */\r
#if !defined(__DOXYGEN__)\r
/* Macros: */\r
#else\r
USB_Descriptor_Device_t* DevDescriptorPtr;\r
\r
- if ((USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DevDescriptorPtr) == NO_DESCRIPTOR) ||\r
+ if ((CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DevDescriptorPtr) == NO_DESCRIPTOR) ||\r
#if defined(USE_RAM_DESCRIPTORS)\r
((uint8_t)USB_ControlRequest.wValue > DevDescriptorPtr->NumberOfConfigurations))\r
#elif defined (USE_EEPROM_DESCRIPTORS)\r
void* DescriptorPointer;\r
uint16_t DescriptorSize;\r
\r
- if ((DescriptorSize = USB_GetDescriptor(USB_ControlRequest.wValue, USB_ControlRequest.wIndex, &DescriptorPointer)) == NO_DESCRIPTOR)\r
- return;\r
+ if ((DescriptorSize = CALLBACK_USB_GetDescriptor(USB_ControlRequest.wValue,\r
+ USB_ControlRequest.wIndex, &DescriptorPointer)) == NO_DESCRIPTOR)\r
+ {\r
+ return;\r
+ }\r
\r
Endpoint_ClearSETUP();\r
\r
#define USB_Device_IsUSBSuspended() ((UDINT & (1 << SUSPI)) ? true : false)\r
#endif\r
\r
- /* Enums: */\r
- /** Enum for the ErrorCode parameter of the \ref EVENT_USB_DeviceError() event.\r
+ /* Function Prototypes: */\r
+ /** Function to retrieve a given descriptor's size and memory location from the given descriptor type value,\r
+ * index and language ID. This function MUST be overridden in the user application (added with full, identical \r
+ * prototype and name except for the \ref ATTR_WEAK attribute) so that the library can call it to retrieve descriptor \r
+ * data.\r
*\r
- * \see Events.h for more information on this event.\r
+ * \param wValue The type of the descriptor to retrieve in the upper byte, and the index in the \r
+ * lower byte (when more than one descriptor of the given type exists, such as the\r
+ * case of string descriptors). The type may be one of the standard types defined\r
+ * in the DescriptorTypes_t enum, or may be a class-specific descriptor type value.\r
+ * \param wIndex The language ID of the string to return if the wValue type indicates DTYPE_String,\r
+ * otherwise zero for standard descriptors, or as defined in a class-specific\r
+ * standards.\r
+ * \param DescriptorAddress Pointer to the descriptor in memory. This should be set by the routine to\r
+ * the address of the descriptor.\r
+ *\r
+ * \note By default, the library expects all descriptors to be located in flash memory via the PROGMEM attribute.\r
+ * If descriptors should be located in RAM or EEPROM instead (to speed up access in the case of RAM, or to\r
+ * allow the descriptors to be changed dynamically at runtime) either the USE_RAM_DESCRIPTORS or the \r
+ * USE_EEPROM_DESCRIPTORS tokens may be defined in the project makefile and passed to the compiler by the -D\r
+ * switch.\r
+ *\r
+ * \return Size in bytes of the descriptor if it exists, zero or \ref NO_DESCRIPTOR otherwise\r
*/\r
- enum USB_Device_ErrorCodes_t\r
- {\r
- DEVICE_ERROR_GetDescriptorNotHooked = 0, /**< Indicates that the \ref USB_GetDescriptor() method\r
- * has not been hooked by the user application.\r
- *\r
- * \see \ref Group_Descriptors for more information on\r
- * the \ref USB_GetDescriptor() method.\r
- */\r
- };\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_WEAK ATTR_NON_NULL_PTR_ARG(3);\r
\r
/* Private Interface - For use in library only: */\r
#if !defined(__DOXYGEN__)\r
{\r
USB_Descriptor_Device_t* DeviceDescriptorPtr;\r
\r
- if (USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR)\r
+ if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR)\r
{ \r
#if defined(USE_RAM_DESCRIPTORS)\r
USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size;\r
* - LUFA/Drivers/USB/LowLevel/LowLevel.c\r
* - LUFA/Drivers/USB/LowLevel/Pipe.c\r
* - LUFA/Drivers/USB/HighLevel/Events.c\r
- * - LUFA/Drivers/USB/HighLevel/StdDescriptors.c\r
* - LUFA/Drivers/USB/HighLevel/USBInterrupt.c\r
* - LUFA/Drivers/USB/HighLevel/USBTask.c\r
- * - LUFA/Drivers/USB/Class/ConfigDescriptor.c\r
+ * - LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c\r
* - LUFA/Drivers/USB/Class/HIDParser.c\r
*\r
* \section Module Description\r
#include "LowLevel/OTG.h"\r
#endif\r
\r
- #include "Class/ConfigDescriptor.h"\r
+ #include "HighLevel/ConfigDescriptor.h"\r
#include "Class/HIDParser.h"\r
\r
#endif\r
* \ref Group_Events for new API details.\r
* - The STREAM_CALLBACK() macro has been removed. User applications should replace all instances of the macro with regular\r
* function signatures of a function accepting no arguments and returning a uint8_t value.\r
+ * - The Event_DeviceError() event no longer exists, as its sole caller (unlinked USB_GetDescriptor() function) now produces a\r
+ * compilation error rather than a runtime error. The StdDescriptors.c file no longer exists as a result, and should be removed\r
+ * from project makefiles.\r
+ * - The USB_GetDescriptor() function has been renamed to CALLBACK_USB_GetDescriptor() to be in line with the new CALLBACK_ function\r
+ * prefixes for functions which *must* be implemented in the user application.\r
*\r
* <b>Host Mode</b>\r
* - Support for non-control data pipe interrupts has been dropped due to many issues in the implementation. All existing\r
\r
# Makefile for the LUFA library itself.\r
\r
-LUFA_SRC_FILES = ./Drivers/USB/LowLevel/LowLevel.c \\r
+LUFA_SRC_FILES = ./Drivers/USB/LowLevel/DevChapter9.c \\r
./Drivers/USB/LowLevel/Endpoint.c \\r
- ./Drivers/USB/LowLevel/Pipe.c \\r
- ./Drivers/USB/LowLevel/DevChapter9.c \\r
- ./Drivers/USB/LowLevel/HostChapter9.c \\r
./Drivers/USB/LowLevel/Host.c \\r
- ./Drivers/USB/HighLevel/USBTask.c \\r
- ./Drivers/USB/HighLevel/USBInterrupt.c \\r
+ ./Drivers/USB/LowLevel/HostChapter9.c \\r
+ ./Drivers/USB/LowLevel/LowLevel.c \\r
+ ./Drivers/USB/LowLevel/Pipe.c \\r
./Drivers/USB/HighLevel/Events.c \\r
./Drivers/USB/HighLevel/StdDescriptors.c \\r
- ./Drivers/USB/Class/HIDParser.c \\r
+ ./Drivers/USB/HighLevel/USBInterrupt.c \\r
+ ./Drivers/USB/HighLevel/USBTask.c \\r
./Drivers/USB/Class/ConfigDescriptor.c \\r
+ ./Drivers/USB/Class/HIDParser.c \\r
./Scheduler/Scheduler.c \\r
./MemoryAllocator/DynAlloc.c \\r
./Drivers/Board/Temperature.c \\r
* is called so that the descriptor details can be passed back and the appropriate descriptor sent back to the\r
* USB host.\r
*/\r
-uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
{\r
const uint8_t DescriptorType = (wValue >> 8);\r
const uint8_t DescriptorNumber = (wValue & 0xFF);\r
#define DTYPE_Report 0x22\r
\r
/* Function Prototypes: */\r
- uint16_t USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
- ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
+ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, void** const DescriptorAddress)\r
+ ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);\r
\r
#endif\r
void EVENT_USB_UnhandledControlPacket(void);\r
\r
bool GetNextReport(USB_KeyboardReport_Data_t* ReportData);\r
- void SendKey(USB_KeyboardReport_Data_t* KeyboardReportData, uint8_t Key);\r
- void Send(USB_KeyboardReport_Data_t* KeyboardReportData, bool SendReport);\r
\r
#endif\r
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/LowLevel.c \
$(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Pipe.c \
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/Events.c \
- $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/StdDescriptors.c \
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBInterrupt.c \
$(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/USBTask.c \
- $(LUFA_PATH)/LUFA/Drivers/USB/Class/ConfigDescriptor.c \
+ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \
$(LUFA_PATH)/LUFA/Drivers/USB/Class/HIDParser.c \