Added new incomplete AudioInputHost Host LowLevel demo.
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 29 May 2011 12:41:14 +0000 (12:41 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 29 May 2011 12:41:14 +0000 (12:41 +0000)
Added missing Audio class control request definitions.

Added support for the Audio class GET STATUS request so that it is correctly ACKed when sent by the host.

41 files changed:
Demos/Device/LowLevel/AudioInput/AudioInput.c
Demos/Device/LowLevel/AudioOutput/AudioOutput.c
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.c [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.h [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.o [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.h [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o [new file with mode: 0644]
Demos/Host/Incomplete/AudioInputHost/makefile [new file with mode: 0644]
LUFA.pnproj
LUFA/Drivers/USB/Class/Common/Audio.h
LUFA/Drivers/USB/Class/Device/Audio.c
LUFA/ManPages/ChangeLog.txt
LUFA/ManPages/FutureChanges.txt
Projects/AVRISP-MKII/AVRISP-MKII.c
Projects/AVRISP-MKII/AVRISP-MKII.h
Projects/AVRISP-MKII/Descriptors.c
Projects/AVRISP-MKII/Descriptors.h
Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h
Projects/AVRISP-MKII/Lib/V2Protocol.c
Projects/AVRISP-MKII/Lib/V2Protocol.h
Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h
Projects/AVRISP-MKII/Lib/V2ProtocolParams.c
Projects/AVRISP-MKII/Lib/V2ProtocolParams.h
Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h
Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h
Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
Projects/AVRISP-MKII/makefile

index 7a5a0a6..f62fcbe 100644 (file)
@@ -143,6 +143,15 @@ void EVENT_USB_Device_ControlRequest(void)
                        }
 
                        break;
+               case AUDIO_REQ_GetStatus:
+                       /* Get Status request can be directed at either the interface or endpoint, neither is currently used
+                        * according to the latest USB Audio 1.0 standard, but must be ACKed with no data when requested */
+                       if ((USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) ||
+                           (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT)))
+                       {
+                               Endpoint_ClearSETUP();
+                               Endpoint_ClearStatusStage();
+                       }
        }
 }
 
index 93ca370..22cfac4 100644 (file)
@@ -169,6 +169,15 @@ void EVENT_USB_Device_ControlRequest(void)
                        }
 
                        break;
+               case AUDIO_REQ_GetStatus:
+                       /* Get Status request can be directed at either the interface or endpoint, neither is currently used
+                        * according to the latest USB Audio 1.0 standard, but must be ACKed with no data when requested */
+                       if ((USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) ||
+                           (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT)))
+                       {
+                               Endpoint_ClearSETUP();
+                               Endpoint_ClearStatusStage();
+                       }
        }
 }
 
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.c b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.c
new file mode 100644 (file)
index 0000000..7ac8f00
--- /dev/null
@@ -0,0 +1,274 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all 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
+ *  Main source file for the AudioInputHost demo. This file contains the main tasks of\r
+ *  the demo and is responsible for the initial application hardware configuration.\r
+ */\r
+\r
+#include "AudioInputHost.h"\r
+\r
+/** Main program entry point. This routine configures the hardware required by the application, then\r
+ *  enters a loop to run the application tasks in sequence.\r
+ */\r
+int main(void)\r
+{\r
+       SetupHardware();\r
+\r
+       puts_P(PSTR(ESC_FG_CYAN "Audio Host Demo running.\r\n" ESC_FG_WHITE));\r
+\r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+       sei();\r
+\r
+       for (;;)\r
+       {\r
+               Audio_Task();\r
+               USB_USBTask();\r
+       }\r
+}\r
+\r
+/** Configures the board hardware and chip peripherals for the demo's functionality. */\r
+void SetupHardware(void)\r
+{\r
+       /* Disable watchdog if enabled by bootloader/fuses */\r
+       MCUSR &= ~(1 << WDRF);\r
+       wdt_disable();\r
+\r
+       /* Disable clock division */\r
+       clock_prescale_set(clock_div_1);\r
+\r
+       /* Hardware Initialization */\r
+       Serial_Init(9600, false);\r
+       LEDs_Init();\r
+       USB_Init();\r
+\r
+       /* Create a stdio stream for the serial port for stdin and stdout */\r
+       Serial_CreateStream(NULL);\r
+}\r
+\r
+/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and\r
+ *  starts the library USB task to begin the enumeration and USB management process.\r
+ */\r
+void EVENT_USB_Host_DeviceAttached(void)\r
+{\r
+       puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE));\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+}\r
+\r
+/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and\r
+ *  stops the library USB task management process.\r
+ */\r
+void EVENT_USB_Host_DeviceUnattached(void)\r
+{\r
+       puts_P(PSTR(ESC_FG_GREEN "Device Unattached.\r\n" ESC_FG_WHITE));\r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+}\r
+\r
+/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully\r
+ *  enumerated by the host and is now ready to be used by the application.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationComplete(void)\r
+{\r
+       LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+}\r
+\r
+/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */\r
+void EVENT_USB_Host_HostError(const uint8_t ErrorCode)\r
+{\r
+       USB_Disable();\r
+\r
+       printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"\r
+                                " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+       for(;;);\r
+}\r
+\r
+/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while\r
+ *  enumerating an attached USB device.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,\r
+                                            const uint8_t SubErrorCode)\r
+{\r
+       printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"\r
+                                " -- Error Code %d\r\n"\r
+                                " -- Sub Error Code %d\r\n"\r
+                                " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);\r
+\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+}\r
+\r
+void Audio_Task(void)\r
+{\r
+       uint8_t ErrorCode;\r
+\r
+       switch (USB_HostState)\r
+       {\r
+               case HOST_STATE_Addressed:\r
+                       puts_P(PSTR("Getting Config Data.\r\n"));\r
+\r
+                       /* Get and process the configuration descriptor data */\r
+                       if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)\r
+                       {\r
+                               if (ErrorCode == ControlError)\r
+                                 puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n"));\r
+                               else\r
+                                 puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n"));\r
+\r
+                               printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+\r
+                               /* Indicate error status */\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+\r
+                               /* Wait until USB device disconnected */\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                               break;\r
+                       }\r
+\r
+                       /* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */\r
+                       if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)\r
+                       {\r
+                               printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"\r
+                                                        " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+\r
+                               /* Indicate error status */\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+\r
+                               /* Wait until USB device disconnected */\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                               break;\r
+                       }\r
+                       \r
+                       if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,\r
+                                                                        StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)\r
+                       {\r
+                               printf_P(PSTR(ESC_FG_RED "Could not set alternative streaming interface setting.\r\n"\r
+                                                        " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+\r
+                               /* Indicate error status */\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+\r
+                               /* Wait until USB device disconnected */\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                               break;\r
+                       }\r
+\r
+                       USB_ControlRequest = (USB_Request_Header_t)\r
+                               {\r
+                                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT),\r
+                                       .bRequest      = AUDIO_REQ_SetCurrent,\r
+                                       .wValue        = 0x0100,\r
+                                       .wIndex        = StreamingEndpointAddress,\r
+                                       .wLength       = sizeof(USB_Audio_SampleFreq_t),\r
+                               };\r
+                               \r
+                       USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);\r
+\r
+                       /* Select the control pipe for the request transfer */\r
+                       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+                       /* Set the sample rate on the streaming interface endpoint */\r
+                       if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)\r
+                       {\r
+                               /* Indicate error status */\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+\r
+                               /* Wait until USB device disconnected */\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                               break;\r
+                       }\r
+       \r
+                       /* Sample reload timer initialization */\r
+                       TIMSK0  = (1 << OCIE0A);\r
+                       OCR0A   = ((F_CPU / 8 / 8000) - 1);\r
+                       TCCR0A  = (1 << WGM01);  // CTC mode\r
+                       TCCR0B  = (1 << CS01);   // Fcpu/8 speed        \r
+\r
+                       /* Set speaker as output */\r
+                       DDRC   |= (1 << 6);\r
+\r
+                       /* PWM speaker timer initialization */\r
+                       TCCR3A  = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)\r
+                                       | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP\r
+                       TCCR3B  = ((1 << WGM32) | (1 << CS30));  // Fast 8-Bit PWM, F_CPU speed\r
+                       \r
+                       puts_P(PSTR("Microphone Enumerated.\r\n"));\r
+\r
+                       USB_HostState = HOST_STATE_Configured;\r
+                       break;\r
+               case HOST_STATE_Configured:\r
+                       break;\r
+       }\r
+}\r
+\r
+/** ISR to handle the reloading of the PWM timer with the next sample. */\r
+ISR(TIMER0_COMPA_vect, ISR_BLOCK)\r
+{\r
+       uint8_t PrevPipe = Pipe_GetCurrentPipe();\r
+\r
+       Pipe_SelectPipe(AUDIO_DATA_IN_PIPE);\r
+       Pipe_Unfreeze();\r
+\r
+       /* Check if the current pipe can be read from (contains a packet) and the device is sending data */\r
+       if (Pipe_IsINReceived())\r
+       {\r
+               /* Retrieve the signed 16-bit audio sample, convert to 8-bit */\r
+               int8_t Sample_8Bit = (Pipe_Read_16_LE() >> 8);\r
+\r
+               /* Check to see if the bank is now empty */\r
+               if (!(Pipe_IsReadWriteAllowed()))\r
+               {\r
+                       /* Acknowledge the packet, clear the bank ready for the next packet */\r
+                       Pipe_ClearIN();\r
+               }\r
+\r
+               /* Load the sample into the PWM timer channel */\r
+               OCR3A = (Sample_8Bit ^ (1 << 7));\r
+\r
+               uint8_t LEDMask = LEDS_NO_LEDS;\r
+\r
+               /* Turn on LEDs as the sample amplitude increases */\r
+               if (Sample_8Bit > 16)\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);\r
+               else if (Sample_8Bit > 8)\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);\r
+               else if (Sample_8Bit > 4)\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2);\r
+               else if (Sample_8Bit > 2)\r
+                 LEDMask = (LEDS_LED1);\r
+\r
+               LEDs_SetAllLEDs(LEDMask);\r
+       }\r
+       \r
+       Pipe_Freeze();\r
+\r
+       Pipe_SelectPipe(PrevPipe);\r
+}\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep
new file mode 100644 (file)
index 0000000..1996e8f
--- /dev/null
@@ -0,0 +1 @@
+:00000001FF\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf
new file mode 100644 (file)
index 0000000..a41d735
Binary files /dev/null and b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf differ
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.h b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.h
new file mode 100644 (file)
index 0000000..6a3b850
--- /dev/null
@@ -0,0 +1,80 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ *  Header file for AudioHost.c.\r
+ */\r
+\r
+#ifndef _AUDIO_HOST_H_\r
+#define _AUDIO_HOST_H_\r
+\r
+       /* Includes: */\r
+               #include <avr/io.h>\r
+               #include <avr/wdt.h>\r
+               #include <avr/pgmspace.h>\r
+               #include <avr/power.h>\r
+               #include <avr/interrupt.h>\r
+               #include <stdio.h>\r
+\r
+               #include <LUFA/Version.h>\r
+               #include <LUFA/Drivers/Misc/TerminalCodes.h>\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+               #include <LUFA/Drivers/Peripheral/Serial.h>\r
+               #include <LUFA/Drivers/Board/LEDs.h>\r
+\r
+               #include "ConfigDescriptor.h"\r
+\r
+       /* Macros: */\r
+               /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */\r
+               #define LEDMASK_USB_NOTREADY      LEDS_LED1\r
+\r
+               /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */\r
+               #define LEDMASK_USB_ENUMERATING  (LEDS_LED2 | LEDS_LED3)\r
+\r
+               /** LED mask for the library LED driver, to indicate that the USB interface is ready. */\r
+               #define LEDMASK_USB_READY        (LEDS_LED2 | LEDS_LED4)\r
+\r
+               /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */\r
+               #define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)\r
+\r
+       /* Function Prototypes: */\r
+               void Audio_Task(void);\r
+               void SetupHardware(void);\r
+\r
+               void EVENT_USB_Host_HostError(const uint8_t ErrorCode);\r
+               void EVENT_USB_Host_DeviceAttached(void);\r
+               void EVENT_USB_Host_DeviceUnattached(void);\r
+               void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,\r
+                                                           const uint8_t SubErrorCode);\r
+               void EVENT_USB_Host_DeviceEnumerationComplete(void);\r
+\r
+#endif\r
+\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex
new file mode 100644 (file)
index 0000000..2c962aa
--- /dev/null
@@ -0,0 +1,403 @@
+:1000000051C100006DC100006BC1000069C100005A\r
+:1000100067C1000065C1000063C1000061C100004C\r
+:100020005FC100005DC10000D5C6000059C10000DD\r
+:1000300057C1000055C1000053C1000051C100006C\r
+:100040004FC100004DC100004BC1000049C100007C\r
+:1000500047C100008BC2000043C1000041C1000045\r
+:100060003FC100003DC100003BC1000039C100009C\r
+:1000700037C1000035C1000033C1000031C10000AC\r
+:100080002FC100002DC100002BC1000029C10000BC\r
+:1000900027C1000025C100004D6963726F70686F51\r
+:1000A0006E6520456E756D6572617465642E0D0A0E\r
+:1000B000001B5B33316D436F756C64206E6F742071\r
+:1000C00073657420616C7465726E61746976652005\r
+:1000D00073747265616D696E6720696E74657266AE\r
+:1000E0006163652073657474696E672E0D0A202D37\r
+:1000F0002D204572726F7220436F64653A2025642B\r
+:100100000D0A1B5B33376D001B5B33316D436F6E24\r
+:1001100074726F6C204572726F7220285365742060\r
+:10012000436F6E66696775726174696F6E292E0D13\r
+:100130000A202D2D204572726F7220436F64653A3C\r
+:100140002025640D0A1B5B33376D00202D2D2045C3\r
+:1001500072726F7220436F64653A2025640D0A1B2A\r
+:100160005B33376D001B5B33316D496E76616C69B3\r
+:1001700064204465766963652E0D0A001B5B33318C\r
+:100180006D436F6E74726F6C204572726F722028AF\r
+:1001900047657420436F6E66696775726174696F35\r
+:1001A0006E292E0D0A0047657474696E6720436FCF\r
+:1001B0006E66696720446174612E0D0A001B5B3313\r
+:1001C000316D44657620456E756D204572726F7293\r
+:1001D0000D0A202D2D204572726F7220436F6465C9\r
+:1001E0002025640D0A202D2D205375622045727242\r
+:1001F0006F7220436F64652025640D0A202D2D2029\r
+:10020000496E2053746174652025640D0A1B5B33AD\r
+:10021000376D001B5B33316D486F7374204D6F6415\r
+:1002200065204572726F720D0A202D2D2045727265\r
+:100230006F7220436F64652025640D0A1B5B3337A2\r
+:100240006D001B5B33326D44657669636520556EC6\r
+:1002500061747461636865642E0D0A1B5B33376DCE\r
+:10026000001B5B33326D44657669636520417474AD\r
+:1002700061636865642E0D0A1B5B33376D001B5B81\r
+:1002800033366D417564696F20486F73742044651F\r
+:100290006D6F2072756E6E696E672E0D0A1B5B3373\r
+:1002A000376D000011241FBECFEFD0E2DEBFCDBFFF\r
+:1002B00011E0A0E0B1E0EAEFF8E100E00BBF02C01E\r
+:1002C00007900D92AC31B107D9F711E0ACE1B1E084\r
+:1002D00001C01D92A034B107E1F73ED10C947B0C14\r
+:1002E0008FCE9BB19F70982B9BB9089584B7877F61\r
+:1002F00084BF28E10FB6F89420936000109260004C\r
+:100300000FBE90E080E80FB6F89480936100909360\r
+:1003100061000FBE83E390E09093CD008093CC000A\r
+:1003200086E08093CA001092C8002093C900539AB7\r
+:100330005A9A8AB1806F8AB98BB18F708BB934D5D4\r
+:10034000ECE2F1E0F0933B01E0933A01F0933D01E0\r
+:10035000E0933C018EE0DF011D928A95E9F783E08E\r
+:1003600080932F0185E699E09093350180933401C5\r
+:100370008EE699E09093370180933601089581E6E7\r
+:1003800092E0DED780EAADCF82E492E0D9D780E177\r
+:10039000A8CF80E6A6CFDF93CF930F92CDB7DEB77D\r
+:1003A00089839CD400D000D0EDB7FEB7319623E10D\r
+:1003B00032E0ADB7BEB712963C932E931197898168\r
+:1003C000828313829ED70F900F900F900F9080E939\r
+:1003D00088DFFFCF90912B012DB73EB728503040DA\r
+:1003E0000FB6F8943EBF0FBE2DBFEDB7FEB73196E6\r
+:1003F0002DEB31E0ADB7BEB712963C932E9311971B\r
+:100400008283138264831582968317827AD72DB7ED\r
+:100410003EB7285F3F4F0FB6F8943EBF0FBE2DBFCB\r
+:1004200080E95FCF1F93DF93CF9300D00F92CDB7BA\r
+:10043000DEB780912B018B3009F087C086EA91E00E\r
+:100440007FD730D1182F8823E9F0813019F48CE759\r
+:1004500091E002C085E691E073D700D000D0EDB7FF\r
+:10046000FEB731962BE431E0ADB7BEB712963C93A0\r
+:100470002E9311971283138244D70F900F900F90F1\r
+:100480000F904AC081E082D3882341F000D000D091\r
+:10049000EDB7FEB7319628E031E00EC080911C0127\r
+:1004A00060911D0189D3882379F000D000D0EDB789\r
+:1004B000FEB7319621EB30E0ADB7BEB712963C9354\r
+:1004C0002E9311978283D7CF20911E0182E28093D1\r
+:1004D000230181E08093240180E091E09093260144\r
+:1004E00080932501209327011092280183E090E05A\r
+:1004F00090932A0180932901DE011196E0E0F1E05A\r
+:1005000083E001900D928150E1F71092A700CE0197\r
+:100510000196B7D5882329F080E9E3DE10922B01FC\r
+:1005200014C082E080936E009CE797BD84BD85BDBA\r
+:100530003E9A81EF8093900089E08093910088E952\r
+:1005400090E0FED68CE080932B010F900F900F90DF\r
+:10055000CF91DF911F910895C9DE8EE792E0F0D62A\r
+:1005600080E1BFDE78945EDFA2D6FDCF1F920F92AE\r
+:100570000FB60F920BB60F9211241F932F933F9338\r
+:100580004F935F936F937F938F939F93AF93BF939B\r
+:10059000EF93FF931091A700177081E08093A7005D\r
+:1005A0008091A9008F7B8093A9008091A60080FF95\r
+:1005B0002BC08091AF004091AF008091A60085FDD7\r
+:1005C00005C08091A6008E778093A600842F99277E\r
+:1005D00087FD909520E830E082279327909399003B\r
+:1005E00080939800413144F4493044F4453044F458\r
+:1005F000433044F480E007C080EF05C080EB03C0C7\r
+:1006000080E301C080E16DDE8091A9008064809369\r
+:10061000A9001093A700FF91EF91BF91AF919F9117\r
+:100620008F917F916F915F914F913F912F911F918A\r
+:100630000F900BBE0F900FBE0F901F901895FC01EE\r
+:100640008181843049F48581813031F48681813023\r
+:1006500019F48781882311F082E0089580E00895DD\r
+:10066000FC018181843049F48581813031F48681B7\r
+:10067000823019F48781882311F082E0089580E0A8\r
+:100680000895FC018181853029F483818370813054\r
+:1006900019F404C0843021F082E0089580E00895C8\r
+:1006A00081E00895AF92BF92CF92DF92EF92FF92D6\r
+:1006B0000F931F93DF93CF93CDB7DEB7C450D240D3\r
+:1006C0000FB6F894DEBF0FBECDBFAE014B5F5F4FDC\r
+:1006D0005A83498323E0E22EF12CEC0EFD1E81E0CB\r
+:1006E000B70120E032E009D4853009F45CC08630DF\r
+:1006F00061F0882361F400E010E0CC24DD24570190\r
+:100700007E010894E11CF11C07C083E04FC081E02A\r
+:100710004DC09C01032F182FC114D10441F0C50115\r
+:10072000B70141E453E040D4882351F41CC0C50113\r
+:10073000B7014FE153E038D48823B9F5C980DA8096\r
+:10074000C501B70140E353E02FD4882349F0C50128\r
+:10075000B7014FE153E028D4882339F5C980DA8006\r
+:1007600009811A8135C0E981FA81828187FF30C011\r
+:10077000902F812F309769F2D80112968C911297A1\r
+:1007800080931C0113968C9180931D0122812093EC\r
+:100790001E010481158181E061E040E194E0E92ED1\r
+:1007A00022D280E003C082E001C084E0CC5FDD4F54\r
+:1007B0000FB6F894DEBF0FBECDBFCF91DF911F9172\r
+:1007C0000F91FF90EF90DF90CF90BF90AF90089582\r
+:1007D000902F812F9ECF80919E0090E0817090702D\r
+:1007E0002091A0002D7F2093A00020919E002260E8\r
+:1007F00020939E0020919E0021FDFCCF20919E0021\r
+:10080000216020939E002091A00030E02072307083\r
+:100810004091A0004F7D4093A00040919F004F7DEC\r
+:1008200040939F004AE050919F0055FF0BC04091BC\r
+:100830009F004F7D40939F0040919F004D7F4093CC\r
+:100840009F0008C0EFECF7E03197F1F700C000001F\r
+:10085000415049F72115310529F02091A00020626F\r
+:100860002093A000009729F480919E008E7F8093B2\r
+:100870009E008091A00082608093A0000895409126\r
+:100880009E0050E0417050702091A00030E0207236\r
+:1008900030709091A0009F7D9093A00090919F0058\r
+:1008A0009F7D90939F0090919E00916090939E00F9\r
+:1008B00026C090919F0095FF06C090919F009F7D5C\r
+:1008C00090939F00815090912B019230D9F090919C\r
+:1008D000A60094FF09C01092F5008091A6008F7EBB\r
+:1008E0008093A60082E00FC09091A60091FF07C000\r
+:1008F0008091A6008D7F8093A60083E004C08823AA\r
+:10090000C1F601C081E04115510529F490919E0086\r
+:100910009E7F90939E002115310529F09091A000B3\r
+:1009200090629093A0000895EF920F931F93DF932E\r
+:10093000CF93CDB7DEB728970FB6F894DEBF0FBEC2\r
+:10094000CDBF80912B01863009F499C0873070F4B7\r
+:100950008330C9F1843020F4813009F00BC113C019\r
+:100960008430C9F1853009F005C160C0883009F4D0\r
+:10097000A0C0883008F48FC0893009F4B9C08A302B\r
+:1009800009F0F8C0DEC0009120011091210101158D\r
+:10099000110509F4EFC081E072DF682F882331F080\r
+:1009A00080911F0180932B0181E0E0C00150104035\r
+:1009B00010932101009320010115110509F0DAC0FF\r
+:1009C00080911F01C3C088EE93E090932101809332\r
+:1009D000200184E0BBC080912001909121019C0105\r
+:1009E000215030403093210120932001009739F0AD\r
+:1009F0008FEC97E00197F1F700C00000BBC077983B\r
+:100A00008091D80080618093D8008091DD008B7F39\r
+:100A10008093DD008091D70080618093D700809122\r
+:100A2000DD0082608093DD0085E090C080919F00B2\r
+:100A300080FFA0C080919F008E7F80939F00809157\r
+:100A40009F008D7F80939F008091DF008D7F80933A\r
+:100A5000DF008091DE0082608093DE0080919E0046\r
+:100A6000816080939E0026D181E080932B0184E6F3\r
+:100A700090E0909321018093200186E05FC0ABDE7F\r
+:100A800081E080932B0188EC90E09093210180938A\r
+:100A9000200187E053C080E060E040E020E000E417\r
+:100AA00010E0EE24A0D08091AC0087FF5BC088E00E\r
+:100AB0004DC0A3E2B1E0E3E1F1E088E001900D92E6\r
+:100AC0008150E1F7CE010196DCD2682F882309F02E\r
+:100AD0004CC0888580931B017EDE81E080932B01D2\r
+:100AE00088EC90E0909321018093200189E026C05A\r
+:100AF00000911B0180E060E040E020E010E0EE2487\r
+:100B000072D08091AC0087FF2DC0A3E2B1E0EBE092\r
+:100B1000F1E088E001900D928150E1F780E090E0F3\r
+:100B2000B0D2682F882309F581E080932B0184E6F9\r
+:100B300090E090932101809320018AE080931F012F\r
+:100B400019C081E08093A10024DC8BE080932B010D\r
+:100B500011C040DC8091DD0081608093DD0014DCF9\r
+:100B6000D5D008C060E084E001C083E090912B0103\r
+:100B7000923079F728960FB6F894DEBF0FBECDBF3E\r
+:100B8000CF91DF911F910F91EF9008951092230163\r
+:100B900099E09093240180932501109226011092F0\r
+:100BA00028011092270110922A0110922901109217\r
+:100BB000A70080E090E065C2E3E2F1E091E090936D\r
+:100BC00023019BE09093240160932501138280937D\r
+:100BD0002701158210922A01109229011092A70074\r
+:100BE00080E090E04EC2EF920F931F935E2D6295CE\r
+:100BF000660F660F607C642B2F70622B982F5260FB\r
+:100C00004DC09093A7009817B1F428E030E040E081\r
+:100C100003C04F5F220F331F2017310710F44530F8\r
+:100C2000C1F7242F2295207F252BA62F40E070E0CE\r
+:100C3000E1E2F0E00CC0A091AA002091AB00F0919D\r
+:100C4000AD00E091A9007091A5004091AE003091F7\r
+:100C5000A90030623093A90021FF1FC03091A90084\r
+:100C60003E7F3093A9003091AB0032703093AB00DF\r
+:100C70003091A90031603093A900A093AA0020937D\r
+:100C8000AB00F093AD00E093A9007093A5004093F2\r
+:100C9000AE002091AC0027FF08C09F5F973008F49A\r
+:100CA000B0CF8093A70081E001C080E01F910F9139\r
+:100CB000EF9008951092F80080E08093A7001092C2\r
+:100CC000AE001092A6001092AB009091A9009E7FFA\r
+:100CD0009093A9008F5F873081F708956ED075D00B\r
+:100CE000E0EEF0E0808181608083E8EDF0E08081DB\r
+:100CF0008F77808319BCA7EDB0E08C918E7F8C93A9\r
+:100D000080818F7E808310922201089556D05DD01D\r
+:100D10008091D800982F9F779093D8008068809317\r
+:100D2000D8008091D8008F7D8093D8008091D70023\r
+:100D30008F778093D7008CE089BD89B5826089BDAB\r
+:100D400009B400FEFDCF82E080932B0180E4809304\r
+:100D50001B018091D80080648093D8008091DD00D1\r
+:100D600081608093DD008091DD0084608093DD00F0\r
+:100D70008091D7008F7E8093D7006F9A779A809169\r
+:100D8000DE0081608093DE008091DE0084608093CD\r
+:100D9000DE008091E0008E7F8093E0008091D8009B\r
+:100DA00080618093D8000895E7EDF0E08081816054\r
+:100DB000808381E080932201A9CFE8EDF0E080817B\r
+:100DC0008C7F80831092A00008951092DA00109218\r
+:100DD0009F0008951F920F920FB60F920BB60F92BD\r
+:100DE00011242F933F934F935F936F937F938F9330\r
+:100DF0009F93AF93BF93EF93FF9380919F0085FFE5\r
+:100E00000AC08091A00085FF06C080919F008F7D61\r
+:100E100080939F000CD180919F0081FF15C080912D\r
+:100E2000A00081FF11C080919F008D7F80939F0063\r
+:100E300080919F008E7F80939F008091A0008D7F86\r
+:100E40008093A000A1DA62DF8091DF0081FF15C0EE\r
+:100E50008091DE0081FF11C08091DF008D7F809343\r
+:100E6000DF0077988091DD0081608093DD0080E075\r
+:100E700092DA8ADA82E080932B018091DF0080FF92\r
+:100E800017C08091DE0080FF13C08091DF008E7F4D\r
+:100E90008093DF008091DE008E7F8093DE006FDA2A\r
+:100EA0008091A00082608093A00083E080932B015A\r
+:100EB0008091DF0082FF0EC08091DE0082FF0AC0B9\r
+:100EC0008091DF008B7F8093DF0082E060E082DA38\r
+:100ED0005BDA1CDFFF91EF91BF91AF919F918F91F2\r
+:100EE0007F916F915F914F913F912F910F900BBE2A\r
+:100EF0000F900FBE0F901F901895CF92DF92EF9238\r
+:100F0000FF920F931F93DF93CF93CDB7DEB729974F\r
+:100F10000FB6F894DEBF0FBECDBF6B018A01790119\r
+:100F200090E89093230196E09093240190E001973C\r
+:100F300092609093260180932501109228011092CF\r
+:100F4000270189E090E090932A0180932901109273\r
+:100F5000A700CE01019695D08823B9F48B819C819E\r
+:100F6000F60191838083E816F90670F090932A01C8\r
+:100F700080932901C80185D0882339F4F801918133\r
+:100F8000923019F086E001C085E029960FB6F894FA\r
+:100F9000DEBF0FBECDBFCF91DF911F910F91FF90AC\r
+:100FA000EF90DF90CF900895AF92BF92CF92DF92F3\r
+:100FB000EF92FF920F931F93CF93DF938C01EB017E\r
+:100FC0006A0123C0E881F9815F01208130E0C70117\r
+:100FD0002E153F0508F4C901E80FF91FF983E883CE\r
+:100FE000F80120813181281B390B318320838881CE\r
+:100FF0009981F6010995823041F0813069F4A88227\r
+:10100000B982F801F182E08207C0F801E080F18046\r
+:10101000E114F104B9F682E0DF91CF911F910F91B5\r
+:10102000FF90EF90DF90CF90BF90AF90089508951C\r
+:101030001F93CF93DF93182FC8EED3E007C081E052\r
+:101040001EDC8823D1F42097B9F02197112329F4CD\r
+:101050008091A60083FFF3CF0DC0113029F4809159\r
+:10106000A60080FFECCF06C0123049F78091A600A1\r
+:1010700082FFE5CF80E001C084E0DF91CF911F9136\r
+:101080000895EF92FF920F931F93CF93DF938C01FC\r
+:10109000E0909E00FF2481E0E822FF24C091290116\r
+:1010A000D0912A0180919E00816080939E0081E012\r
+:1010B000E6DB882309F0E2C08091AA008F7C809350\r
+:1010C000AA001092F5008091A6008F7E8093A60062\r
+:1010D0008091A9008F7B8093A90080912301809348\r
+:1010E000AF00809124018093AF0090912501809101\r
+:1010F00026019093AF008093AF00909127018091DB\r
+:1011000028019093AF008093AF00909129018091C6\r
+:101110002A019093AF008093AF008091A60087775B\r
+:101120008093A60080E084DF882309F0A7C0809127\r
+:10113000A90080648093A90081E0A1DB882309F0E5\r
+:101140009DC08091230187FF4FC08091AA008F7CB2\r
+:1011500080618093AA000115110561F52DC0809171\r
+:10116000A9008F7B8093A90081E062DF882309F0CA\r
+:1011700085C08091F6009091F700009749F4C0E097\r
+:10118000D0E006C08091AF00F80181938F012197D4\r
+:101190008091F6009091F700009711F0209791F759\r
+:1011A0008091A90080648093A9008091A6008E7729\r
+:1011B0008093A600209799F68091AA008F7C806288\r
+:1011C0008093AA008091A9008F7B8093A90082E080\r
+:1011D0002FDF882309F052C08091A6008B7780937F\r
+:1011E000A60082E025DF4AC00115110599F1809122\r
+:1011F000AA008F7C80628093AA008091A9008F7BD7\r
+:101200008093A9001CC082E013DF8823B9F5F801A0\r
+:1012100006C081918F018093AF00219759F08F0113\r
+:101220002091F6003091F70080911B0190E0281783\r
+:10123000390778F38091A6008B778093A6002097DA\r
+:1012400011F782E0F5DE8823C9F48091A90080645B\r
+:101250008093A9008091AA008F7C80618093AA006E\r
+:101260008091A9008F7B8093A90081E0E1DE882333\r
+:1012700029F49091A6009E779093A6009091A900E2\r
+:1012800090649093A900E114F10429F490919E00D8\r
+:101290009E7F90939E0091E09093A8001092A800EA\r
+:1012A000DF91CF911F910F91FF90EF9008951F93C1\r
+:1012B000CF93DF93C7EAD0E018811770188234DB30\r
+:1012C0001883DF91CF911F9108959091C80095FFE9\r
+:1012D000FCCF8093CE0080E090E008958091C8001C\r
+:1012E00087FF08C08091C80087FF07C02091CE000B\r
+:1012F00030E005C02EEF3FEF02C02FEF3FEFC901F6\r
+:101300000895DF93CF93CDB7DEB7FE013596619197\r
+:10131000719180913C0190913D01DC0113962C91DB\r
+:101320001397286013962C93AF0142D0E0913C01B3\r
+:10133000F0913D012381277F2383CF91DF91089591\r
+:10134000EF92FF920F931F93CF93DF938C01E09165\r
+:101350003C01F0913D01838181FF20C0C0E0D0E0DD\r
+:101360000CC0DB011896ED91FC9119970995009737\r
+:1013700011F0CFEFDFEF0F5F1F4FF8018491609105\r
+:101380003C0170913D01882361F7DB011896ED91D6\r
+:10139000FC9119978AE00995009711F0CFEFDFEFE4\r
+:1013A000CE01DF91CF911F910F91FF90EF900895A3\r
+:1013B0002F923F924F925F926F927F928F929F9265\r
+:1013C000AF92BF92CF92DF92EF92FF920F931F9353\r
+:1013D000DF93CF93CDB7DEB72C970FB6F894DEBF6F\r
+:1013E0000FBECDBF6C011B018A01FC011782168262\r
+:1013F000838181FFC4C12E010894411C511CF60158\r
+:101400009381F10193FD859193FF81911F018823C1\r
+:1014100009F4B1C1853239F493FD859193FF81912F\r
+:101420001F01853221F490E0B601DBD1E8CFEE2434\r
+:10143000FF2420E02032B0F48B3269F08C3228F4A3\r
+:10144000803251F0833271F40BC08D3239F0803329\r
+:1014500049F421602CC02260246029C0286027C084\r
+:10146000206125C027FD2CC0382F30533A3098F426\r
+:1014700026FF08C08E2D880FE82EEE0CEE0CE80E2D\r
+:10148000E30E15C08F2D880FF82EFF0CFF0CF80E01\r
+:10149000F30E20620CC08E3221F426FD6CC1206454\r
+:1014A00006C08C3611F4206802C0883649F4F10178\r
+:1014B00093FD859193FF81911F01882309F0BACF95\r
+:1014C000982F9554933018F09052933028F40C5F75\r
+:1014D0001F4FFFE3F9830DC0833631F0833771F07E\r
+:1014E000833509F05CC021C0F801808189830E5FDB\r
+:1014F0001F4F420171E0A72EB12C15C062E0662E8D\r
+:10150000712C600E711EF8018080918026FF03C04F\r
+:101510006E2D70E002C06FEF7FEFC4012C8756D1B3\r
+:101520005C0183012C852F7716C052E0652E712C4B\r
+:10153000600E711EF8018080918026FF03C06E2D21\r
+:1015400070E002C06FEF7FEFC4012C8734D15C01E3\r
+:101550002C852068830123FD1EC007C080E290E037\r
+:10156000B6012C873ED1FA942C858F2D90E0A816D9\r
+:10157000B906A0F310C0F40127FD859127FF8191E2\r
+:101580004F0190E0B6012C872CD12C85F110FA94F4\r
+:101590000894A108B108A114B10469F7E9C0843620\r
+:1015A00011F0893641F527FF08C0F801608171818B\r
+:1015B000828193810C5F1F4F09C0F80160817181A6\r
+:1015C000882777FD8095982F0E5F1F4F4FE6B42E2A\r
+:1015D000B22297FF09C090958095709561957F4FD5\r
+:1015E0008F4F9F4FF0E8BF2AA2012AE030E025D1BB\r
+:1015F000782E741844C0853731F43FEEB32EB222F2\r
+:101600002AE030E025C099EFB92EB2228F36C1F022\r
+:10161000803720F4883509F0AEC00DC0803721F046\r
+:10162000883709F0A8C002C020E1B22AB4FE0BC07E\r
+:1016300084E0B82A08C0B4FE09C0E6E0BE2A06C0AD\r
+:1016400028E030E005C020E130E002C020E132E0D7\r
+:10165000B7FE08C0F80160817181828193810C5FBF\r
+:101660001F4F07C0F8016081718180E090E00E5F3C\r
+:101670001F4FA201E2D0782E7418FFE7BF22B6FEFA\r
+:101680000BC02EEFB2227E1438F4B4FE07C0B2FCB9\r
+:1016900005C08FEEB82202C0A72C01C0AE2C8B2D46\r
+:1016A00090E0B4FE0DC0FE01E70DF11D2081203356\r
+:1016B00019F4E9EEBE2209C0A394B2FE06C004C02C\r
+:1016C00086789070009709F0A3948B2C9924B3FC32\r
+:1016D00013C0B0FE0EC0AF1428F4E72CEF0CEA18CC\r
+:1016E000AF2C07C0E72C05C080E290E0B60179D0AE\r
+:1016F000A394AF14C8F304C0AF1410F4FA1801C0D7\r
+:10170000FF2484FE0EC080E390E0B6016AD082FE22\r
+:101710001DC081FE03C088E590E010C088E790E01E\r
+:101720000DC0C40186789070009781F081FC02C0E2\r
+:1017300080E201C08BE2B7FC8DE290E0B60151D0AF\r
+:1017400005C080E390E0B6014CD0EA947E14C8F363\r
+:101750007A94F201E70DF11D808190E0B60141D04D\r
+:101760007720B1F705C080E290E0B6013AD0FA9454\r
+:10177000FF20C9F744CEF6012681378102C02FEF42\r
+:101780003FEFC9012C960FB6F894DEBF0FBECDBF58\r
+:10179000CF91DF911F910F91FF90EF90DF90CF904D\r
+:1017A000BF90AF909F908F907F906F905F904F9081\r
+:1017B0003F902F900895FC010590615070400110FA\r
+:1017C000D8F7809590958E0F9F1F0895FC0161506A\r
+:1017D000704001900110D8F7809590958E0F9F1F53\r
+:1017E00008950F931F93CF93DF938C01EB018B81AF\r
+:1017F00081FF1BC082FF0DC02E813F818C819D81A6\r
+:101800002817390764F4E881F9810193F983E883A3\r
+:1018100006C0E885F985802F0995009731F48E81FF\r
+:101820009F8101969F838E8302C00FEF1FEFC80137\r
+:10183000DF91CF911F910F910895FA01AA272830C7\r
+:1018400051F1203181F1E8946F936E7F6E5F7F4F8D\r
+:101850008F4F9F4FAF4FB1E03ED0B4E03CD0670F09\r
+:10186000781F891F9A1FA11D680F791F8A1F911D5C\r
+:10187000A11D6A0F711D811D911DA11D20D009F4AC\r
+:1018800068943F912AE0269F11243019305D3193EE\r
+:10189000DEF6CF010895462F4770405D4193B3E0D7\r
+:1018A0000FD0C9F7F6CF462F4F70405D4A3318F07E\r
+:1018B000495D31FD4052419302D0A9F7EACFB4E02F\r
+:1018C000A6959795879577956795BA95C9F70097E7\r
+:1018D0006105710508959B01AC010A2E0694579588\r
+:1018E000479537952795BA95C9F7620F731F841FDF\r
+:0A18F000951FA01D0895F894FFCF86\r
+:1018FA0080BB008006000100001200000501000004\r
+:0C190A0000000080060001000008004002\r
+:00000001FF\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss
new file mode 100644 (file)
index 0000000..1529174
--- /dev/null
@@ -0,0 +1,5024 @@
+\r
+AudioInputHost.elf:     file format elf32-avr\r
+\r
+Sections:\r
+Idx Name          Size      VMA       LMA       File off  Algn\r
+  0 .data         0000001c  00800100  000018fa  0000198e  2**0\r
+                  CONTENTS, ALLOC, LOAD, DATA\r
+  1 .text         000018fa  00000000  00000000  00000094  2**1\r
+                  CONTENTS, ALLOC, LOAD, READONLY, CODE\r
+  2 .bss          00000024  0080011c  0080011c  000019aa  2**0\r
+                  ALLOC\r
+  3 .stab         00000e28  00000000  00000000  000019ac  2**2\r
+                  CONTENTS, READONLY, DEBUGGING\r
+  4 .stabstr      0000026b  00000000  00000000  000027d4  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+  5 .debug_aranges 000003b0  00000000  00000000  00002a3f  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+  6 .debug_pubnames 0000089a  00000000  00000000  00002def  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+  7 .debug_info   000056c7  00000000  00000000  00003689  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+  8 .debug_abbrev 00001b65  00000000  00000000  00008d50  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+  9 .debug_line   000053bf  00000000  00000000  0000a8b5  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+ 10 .debug_frame  00000540  00000000  00000000  0000fc74  2**2\r
+                  CONTENTS, READONLY, DEBUGGING\r
+ 11 .debug_str    000026bf  00000000  00000000  000101b4  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+ 12 .debug_loc    00003422  00000000  00000000  00012873  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+ 13 .debug_pubtypes 00000a86  00000000  00000000  00015c95  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+ 14 .debug_ranges 00000490  00000000  00000000  0001671b  2**0\r
+                  CONTENTS, READONLY, DEBUGGING\r
+\r
+Disassembly of section .text:\r
+\r
+00000000 <__vectors>:\r
+       0:      51 c1           rjmp    .+674           ; 0x2a4 <__ctors_end>\r
+       2:      00 00           nop\r
+       4:      6d c1           rjmp    .+730           ; 0x2e0 <__bad_interrupt>\r
+       6:      00 00           nop\r
+       8:      6b c1           rjmp    .+726           ; 0x2e0 <__bad_interrupt>\r
+       a:      00 00           nop\r
+       c:      69 c1           rjmp    .+722           ; 0x2e0 <__bad_interrupt>\r
+       e:      00 00           nop\r
+      10:      67 c1           rjmp    .+718           ; 0x2e0 <__bad_interrupt>\r
+      12:      00 00           nop\r
+      14:      65 c1           rjmp    .+714           ; 0x2e0 <__bad_interrupt>\r
+      16:      00 00           nop\r
+      18:      63 c1           rjmp    .+710           ; 0x2e0 <__bad_interrupt>\r
+      1a:      00 00           nop\r
+      1c:      61 c1           rjmp    .+706           ; 0x2e0 <__bad_interrupt>\r
+      1e:      00 00           nop\r
+      20:      5f c1           rjmp    .+702           ; 0x2e0 <__bad_interrupt>\r
+      22:      00 00           nop\r
+      24:      5d c1           rjmp    .+698           ; 0x2e0 <__bad_interrupt>\r
+      26:      00 00           nop\r
+      28:      d5 c6           rjmp    .+3498          ; 0xdd4 <__vector_10>\r
+      2a:      00 00           nop\r
+      2c:      59 c1           rjmp    .+690           ; 0x2e0 <__bad_interrupt>\r
+      2e:      00 00           nop\r
+      30:      57 c1           rjmp    .+686           ; 0x2e0 <__bad_interrupt>\r
+      32:      00 00           nop\r
+      34:      55 c1           rjmp    .+682           ; 0x2e0 <__bad_interrupt>\r
+      36:      00 00           nop\r
+      38:      53 c1           rjmp    .+678           ; 0x2e0 <__bad_interrupt>\r
+      3a:      00 00           nop\r
+      3c:      51 c1           rjmp    .+674           ; 0x2e0 <__bad_interrupt>\r
+      3e:      00 00           nop\r
+      40:      4f c1           rjmp    .+670           ; 0x2e0 <__bad_interrupt>\r
+      42:      00 00           nop\r
+      44:      4d c1           rjmp    .+666           ; 0x2e0 <__bad_interrupt>\r
+      46:      00 00           nop\r
+      48:      4b c1           rjmp    .+662           ; 0x2e0 <__bad_interrupt>\r
+      4a:      00 00           nop\r
+      4c:      49 c1           rjmp    .+658           ; 0x2e0 <__bad_interrupt>\r
+      4e:      00 00           nop\r
+      50:      47 c1           rjmp    .+654           ; 0x2e0 <__bad_interrupt>\r
+      52:      00 00           nop\r
+      54:      8b c2           rjmp    .+1302          ; 0x56c <__vector_21>\r
+      56:      00 00           nop\r
+      58:      43 c1           rjmp    .+646           ; 0x2e0 <__bad_interrupt>\r
+      5a:      00 00           nop\r
+      5c:      41 c1           rjmp    .+642           ; 0x2e0 <__bad_interrupt>\r
+      5e:      00 00           nop\r
+      60:      3f c1           rjmp    .+638           ; 0x2e0 <__bad_interrupt>\r
+      62:      00 00           nop\r
+      64:      3d c1           rjmp    .+634           ; 0x2e0 <__bad_interrupt>\r
+      66:      00 00           nop\r
+      68:      3b c1           rjmp    .+630           ; 0x2e0 <__bad_interrupt>\r
+      6a:      00 00           nop\r
+      6c:      39 c1           rjmp    .+626           ; 0x2e0 <__bad_interrupt>\r
+      6e:      00 00           nop\r
+      70:      37 c1           rjmp    .+622           ; 0x2e0 <__bad_interrupt>\r
+      72:      00 00           nop\r
+      74:      35 c1           rjmp    .+618           ; 0x2e0 <__bad_interrupt>\r
+      76:      00 00           nop\r
+      78:      33 c1           rjmp    .+614           ; 0x2e0 <__bad_interrupt>\r
+      7a:      00 00           nop\r
+      7c:      31 c1           rjmp    .+610           ; 0x2e0 <__bad_interrupt>\r
+      7e:      00 00           nop\r
+      80:      2f c1           rjmp    .+606           ; 0x2e0 <__bad_interrupt>\r
+      82:      00 00           nop\r
+      84:      2d c1           rjmp    .+602           ; 0x2e0 <__bad_interrupt>\r
+      86:      00 00           nop\r
+      88:      2b c1           rjmp    .+598           ; 0x2e0 <__bad_interrupt>\r
+      8a:      00 00           nop\r
+      8c:      29 c1           rjmp    .+594           ; 0x2e0 <__bad_interrupt>\r
+      8e:      00 00           nop\r
+      90:      27 c1           rjmp    .+590           ; 0x2e0 <__bad_interrupt>\r
+      92:      00 00           nop\r
+      94:      25 c1           rjmp    .+586           ; 0x2e0 <__bad_interrupt>\r
+      96:      00 00           nop\r
+\r
+00000098 <__c.3939>:\r
+      98:      4d 69 63 72 6f 70 68 6f 6e 65 20 45 6e 75 6d 65     Microphone Enume\r
+      a8:      72 61 74 65 64 2e 0d 0a 00                          rated....\r
+\r
+000000b1 <__c.3935>:\r
+      b1:      1b 5b 33 31 6d 43 6f 75 6c 64 20 6e 6f 74 20 73     .[31mCould not s\r
+      c1:      65 74 20 61 6c 74 65 72 6e 61 74 69 76 65 20 73     et alternative s\r
+      d1:      74 72 65 61 6d 69 6e 67 20 69 6e 74 65 72 66 61     treaming interfa\r
+      e1:      63 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 2d 2d     ce setting... --\r
+      f1:      20 45 72 72 6f 72 20 43 6f 64 65 3a 20 25 64 0d      Error Code: %d.\r
+     101:      0a 1b 5b 33 37 6d 00                                ..[37m.\r
+\r
+00000108 <__c.3933>:\r
+     108:      1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72     .[31mControl Err\r
+     118:      6f 72 20 28 53 65 74 20 43 6f 6e 66 69 67 75 72     or (Set Configur\r
+     128:      61 74 69 6f 6e 29 2e 0d 0a 20 2d 2d 20 45 72 72     ation)... -- Err\r
+     138:      6f 72 20 43 6f 64 65 3a 20 25 64 0d 0a 1b 5b 33     or Code: %d...[3\r
+     148:      37 6d 00                                            7m.\r
+\r
+0000014b <__c.3930>:\r
+     14b:      20 2d 2d 20 45 72 72 6f 72 20 43 6f 64 65 3a 20      -- Error Code: \r
+     15b:      25 64 0d 0a 1b 5b 33 37 6d 00                       %d...[37m.\r
+\r
+00000165 <__c.3928>:\r
+     165:      1b 5b 33 31 6d 49 6e 76 61 6c 69 64 20 44 65 76     .[31mInvalid Dev\r
+     175:      69 63 65 2e 0d 0a 00                                ice....\r
+\r
+0000017c <__c.3926>:\r
+     17c:      1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72     .[31mControl Err\r
+     18c:      6f 72 20 28 47 65 74 20 43 6f 6e 66 69 67 75 72     or (Get Configur\r
+     19c:      61 74 69 6f 6e 29 2e 0d 0a 00                       ation)....\r
+\r
+000001a6 <__c.3924>:\r
+     1a6:      47 65 74 74 69 6e 67 20 43 6f 6e 66 69 67 20 44     Getting Config D\r
+     1b6:      61 74 61 2e 0d 0a 00                                ata....\r
+\r
+000001bd <__c.3917>:\r
+     1bd:      1b 5b 33 31 6d 44 65 76 20 45 6e 75 6d 20 45 72     .[31mDev Enum Er\r
+     1cd:      72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20 43     ror.. -- Error C\r
+     1dd:      6f 64 65 20 25 64 0d 0a 20 2d 2d 20 53 75 62 20     ode %d.. -- Sub \r
+     1ed:      45 72 72 6f 72 20 43 6f 64 65 20 25 64 0d 0a 20     Error Code %d.. \r
+     1fd:      2d 2d 20 49 6e 20 53 74 61 74 65 20 25 64 0d 0a     -- In State %d..\r
+     20d:      1b 5b 33 37 6d 00                                   .[37m.\r
+\r
+00000213 <__c.3910>:\r
+     213:      1b 5b 33 31 6d 48 6f 73 74 20 4d 6f 64 65 20 45     .[31mHost Mode E\r
+     223:      72 72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20     rror.. -- Error \r
+     233:      43 6f 64 65 20 25 64 0d 0a 1b 5b 33 37 6d 00        Code %d...[37m.\r
+\r
+00000242 <__c.3902>:\r
+     242:      1b 5b 33 32 6d 44 65 76 69 63 65 20 55 6e 61 74     .[32mDevice Unat\r
+     252:      74 61 63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00        tached....[37m.\r
+\r
+00000261 <__c.3897>:\r
+     261:      1b 5b 33 32 6d 44 65 76 69 63 65 20 41 74 74 61     .[32mDevice Atta\r
+     271:      63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00              ched....[37m.\r
+\r
+0000027e <__c.3888>:\r
+     27e:      1b 5b 33 36 6d 41 75 64 69 6f 20 48 6f 73 74 20     .[36mAudio Host \r
+     28e:      44 65 6d 6f 20 72 75 6e 6e 69 6e 67 2e 0d 0a 1b     Demo running....\r
+     29e:      5b 33 37 6d 00 00                                   [37m..\r
+\r
+000002a4 <__ctors_end>:\r
+     2a4:      11 24           eor     r1, r1\r
+     2a6:      1f be           out     0x3f, r1        ; 63\r
+     2a8:      cf ef           ldi     r28, 0xFF       ; 255\r
+     2aa:      d0 e2           ldi     r29, 0x20       ; 32\r
+     2ac:      de bf           out     0x3e, r29       ; 62\r
+     2ae:      cd bf           out     0x3d, r28       ; 61\r
+\r
+000002b0 <__do_copy_data>:\r
+     2b0:      11 e0           ldi     r17, 0x01       ; 1\r
+     2b2:      a0 e0           ldi     r26, 0x00       ; 0\r
+     2b4:      b1 e0           ldi     r27, 0x01       ; 1\r
+     2b6:      ea ef           ldi     r30, 0xFA       ; 250\r
+     2b8:      f8 e1           ldi     r31, 0x18       ; 24\r
+     2ba:      00 e0           ldi     r16, 0x00       ; 0\r
+     2bc:      0b bf           out     0x3b, r16       ; 59\r
+     2be:      02 c0           rjmp    .+4             ; 0x2c4 <__do_copy_data+0x14>\r
+     2c0:      07 90           elpm    r0, Z+\r
+     2c2:      0d 92           st      X+, r0\r
+     2c4:      ac 31           cpi     r26, 0x1C       ; 28\r
+     2c6:      b1 07           cpc     r27, r17\r
+     2c8:      d9 f7           brne    .-10            ; 0x2c0 <__do_copy_data+0x10>\r
+\r
+000002ca <__do_clear_bss>:\r
+     2ca:      11 e0           ldi     r17, 0x01       ; 1\r
+     2cc:      ac e1           ldi     r26, 0x1C       ; 28\r
+     2ce:      b1 e0           ldi     r27, 0x01       ; 1\r
+     2d0:      01 c0           rjmp    .+2             ; 0x2d4 <.do_clear_bss_start>\r
+\r
+000002d2 <.do_clear_bss_loop>:\r
+     2d2:      1d 92           st      X+, r1\r
+\r
+000002d4 <.do_clear_bss_start>:\r
+     2d4:      a0 34           cpi     r26, 0x40       ; 64\r
+     2d6:      b1 07           cpc     r27, r17\r
+     2d8:      e1 f7           brne    .-8             ; 0x2d2 <.do_clear_bss_loop>\r
+     2da:      3e d1           rcall   .+636           ; 0x558 <main>\r
+     2dc:      0c 94 7b 0c     jmp     0x18f6  ; 0x18f6 <_exit>\r
+\r
+000002e0 <__bad_interrupt>:\r
+     2e0:      8f ce           rjmp    .-738           ; 0x0 <__vectors>\r
+\r
+000002e2 <LEDs_SetAllLEDs>:\r
+                               PORTD &= ~LEDMask;\r
+                       }\r
+\r
+                       static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)\r
+                       {\r
+                               PORTD = ((PORTD & ~LEDS_ALL_LEDS) | LEDMask);\r
+     2e2:      9b b1           in      r25, 0x0b       ; 11\r
+     2e4:      9f 70           andi    r25, 0x0F       ; 15\r
+     2e6:      98 2b           or      r25, r24\r
+     2e8:      9b b9           out     0x0b, r25       ; 11\r
+                       }\r
+     2ea:      08 95           ret\r
+\r
+000002ec <SetupHardware>:\r
+\r
+/** Configures the board hardware and chip peripherals for the demo's functionality. */\r
+void SetupHardware(void)\r
+{\r
+       /* Disable watchdog if enabled by bootloader/fuses */\r
+       MCUSR &= ~(1 << WDRF);\r
+     2ec:      84 b7           in      r24, 0x34       ; 52\r
+     2ee:      87 7f           andi    r24, 0xF7       ; 247\r
+     2f0:      84 bf           out     0x34, r24       ; 52\r
+       wdt_disable();\r
+     2f2:      28 e1           ldi     r18, 0x18       ; 24\r
+     2f4:      0f b6           in      r0, 0x3f        ; 63\r
+     2f6:      f8 94           cli\r
+     2f8:      20 93 60 00     sts     0x0060, r18\r
+     2fc:      10 92 60 00     sts     0x0060, r1\r
+     300:      0f be           out     0x3f, r0        ; 63\r
+The type of x is clock_div_t.\r
+*/\r
+void clock_prescale_set(clock_div_t __x)\r
+{\r
+    uint8_t __tmp = _BV(CLKPCE);\r
+    __asm__ __volatile__ (\r
+     302:      90 e0           ldi     r25, 0x00       ; 0\r
+     304:      80 e8           ldi     r24, 0x80       ; 128\r
+     306:      0f b6           in      r0, 0x3f        ; 63\r
+     308:      f8 94           cli\r
+     30a:      80 93 61 00     sts     0x0061, r24\r
+     30e:      90 93 61 00     sts     0x0061, r25\r
+     312:      0f be           out     0x3f, r0        ; 63\r
+                        *  \param[in] DoubleSpeed  Enables double speed mode when set, halving the sample time to double the baud rate.\r
+                        */\r
+                       static inline void Serial_Init(const uint32_t BaudRate,\r
+                                                      const bool DoubleSpeed)\r
+                       {\r
+                               UBRR1  = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));\r
+     314:      83 e3           ldi     r24, 0x33       ; 51\r
+     316:      90 e0           ldi     r25, 0x00       ; 0\r
+     318:      90 93 cd 00     sts     0x00CD, r25\r
+     31c:      80 93 cc 00     sts     0x00CC, r24\r
+\r
+                               UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));\r
+     320:      86 e0           ldi     r24, 0x06       ; 6\r
+     322:      80 93 ca 00     sts     0x00CA, r24\r
+                               UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0);\r
+     326:      10 92 c8 00     sts     0x00C8, r1\r
+                               UCSR1B = ((1 << TXEN1)  | (1 << RXEN1));\r
+     32a:      20 93 c9 00     sts     0x00C9, r18\r
+\r
+                               DDRD  |= (1 << 3);\r
+     32e:      53 9a           sbi     0x0a, 3 ; 10\r
+                               PORTD |= (1 << 2);\r
+     330:      5a 9a           sbi     0x0b, 2 ; 11\r
+\r
+               /* Inline Functions: */\r
+               #if !defined(__DOXYGEN__)\r
+                       static inline void LEDs_Init(void)\r
+                       {\r
+                               DDRD  |=  LEDS_ALL_LEDS;\r
+     332:      8a b1           in      r24, 0x0a       ; 10\r
+     334:      80 6f           ori     r24, 0xF0       ; 240\r
+     336:      8a b9           out     0x0a, r24       ; 10\r
+                               PORTD &= ~LEDS_ALL_LEDS;\r
+     338:      8b b1           in      r24, 0x0b       ; 11\r
+     33a:      8f 70           andi    r24, 0x0F       ; 15\r
+     33c:      8b b9           out     0x0b, r24       ; 11\r
+       clock_prescale_set(clock_div_1);\r
+\r
+       /* Hardware Initialization */\r
+       Serial_Init(9600, false);\r
+       LEDs_Init();\r
+       USB_Init();\r
+     33e:      34 d5           rcall   .+2664          ; 0xda8 <USB_Init>\r
+                       static inline void Serial_CreateStream(FILE* Stream)\r
+                       {\r
+                               if (!(Stream))\r
+                               {\r
+                                       Stream = &USARTSerialStream;\r
+                                       stdin  = Stream;\r
+     340:      ec e2           ldi     r30, 0x2C       ; 44\r
+     342:      f1 e0           ldi     r31, 0x01       ; 1\r
+     344:      f0 93 3b 01     sts     0x013B, r31\r
+     348:      e0 93 3a 01     sts     0x013A, r30\r
+                                       stdout = Stream;\r
+     34c:      f0 93 3d 01     sts     0x013D, r31\r
+     350:      e0 93 3c 01     sts     0x013C, r30\r
+                               }\r
+                       \r
+                               *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW);\r
+     354:      8e e0           ldi     r24, 0x0E       ; 14\r
+     356:      df 01           movw    r26, r30\r
+     358:      1d 92           st      X+, r1\r
+     35a:      8a 95           dec     r24\r
+     35c:      e9 f7           brne    .-6             ; 0x358 <SetupHardware+0x6c>\r
+     35e:      83 e0           ldi     r24, 0x03       ; 3\r
+     360:      80 93 2f 01     sts     0x012F, r24\r
+     364:      85 e6           ldi     r24, 0x65       ; 101\r
+     366:      99 e0           ldi     r25, 0x09       ; 9\r
+     368:      90 93 35 01     sts     0x0135, r25\r
+     36c:      80 93 34 01     sts     0x0134, r24\r
+     370:      8e e6           ldi     r24, 0x6E       ; 110\r
+     372:      99 e0           ldi     r25, 0x09       ; 9\r
+     374:      90 93 37 01     sts     0x0137, r25\r
+     378:      80 93 36 01     sts     0x0136, r24\r
+\r
+       /* Create a stdio stream for the serial port for stdin and stdout */\r
+       Serial_CreateStream(NULL);\r
+}\r
+     37c:      08 95           ret\r
+\r
+0000037e <EVENT_USB_Host_DeviceAttached>:\r
+/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and\r
+ *  starts the library USB task to begin the enumeration and USB management process.\r
+ */\r
+void EVENT_USB_Host_DeviceAttached(void)\r
+{\r
+       puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE));\r
+     37e:      81 e6           ldi     r24, 0x61       ; 97\r
+     380:      92 e0           ldi     r25, 0x02       ; 2\r
+     382:      de d7           rcall   .+4028          ; 0x1340 <puts_P>\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+     384:      80 ea           ldi     r24, 0xA0       ; 160\r
+}\r
+     386:      ad cf           rjmp    .-166           ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000388 <EVENT_USB_Host_DeviceUnattached>:\r
+/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and\r
+ *  stops the library USB task management process.\r
+ */\r
+void EVENT_USB_Host_DeviceUnattached(void)\r
+{\r
+       puts_P(PSTR(ESC_FG_GREEN "Device Unattached.\r\n" ESC_FG_WHITE));\r
+     388:      82 e4           ldi     r24, 0x42       ; 66\r
+     38a:      92 e0           ldi     r25, 0x02       ; 2\r
+     38c:      d9 d7           rcall   .+4018          ; 0x1340 <puts_P>\r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+     38e:      80 e1           ldi     r24, 0x10       ; 16\r
+}\r
+     390:      a8 cf           rjmp    .-176           ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000392 <EVENT_USB_Host_DeviceEnumerationComplete>:\r
+/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully\r
+ *  enumerated by the host and is now ready to be used by the application.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationComplete(void)\r
+{\r
+       LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+     392:      80 e6           ldi     r24, 0x60       ; 96\r
+}\r
+     394:      a6 cf           rjmp    .-180           ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000396 <EVENT_USB_Host_HostError>:\r
+\r
+/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */\r
+void EVENT_USB_Host_HostError(const uint8_t ErrorCode)\r
+{\r
+     396:      df 93           push    r29\r
+     398:      cf 93           push    r28\r
+     39a:      0f 92           push    r0\r
+     39c:      cd b7           in      r28, 0x3d       ; 61\r
+     39e:      de b7           in      r29, 0x3e       ; 62\r
+       USB_Disable();\r
+     3a0:      89 83           std     Y+1, r24        ; 0x01\r
+     3a2:      9c d4           rcall   .+2360          ; 0xcdc <USB_Disable>\r
+\r
+       printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"\r
+     3a4:      00 d0           rcall   .+0             ; 0x3a6 <EVENT_USB_Host_HostError+0x10>\r
+     3a6:      00 d0           rcall   .+0             ; 0x3a8 <EVENT_USB_Host_HostError+0x12>\r
+     3a8:      ed b7           in      r30, 0x3d       ; 61\r
+     3aa:      fe b7           in      r31, 0x3e       ; 62\r
+     3ac:      31 96           adiw    r30, 0x01       ; 1\r
+     3ae:      23 e1           ldi     r18, 0x13       ; 19\r
+     3b0:      32 e0           ldi     r19, 0x02       ; 2\r
+     3b2:      ad b7           in      r26, 0x3d       ; 61\r
+     3b4:      be b7           in      r27, 0x3e       ; 62\r
+     3b6:      12 96           adiw    r26, 0x02       ; 2\r
+     3b8:      3c 93           st      X, r19\r
+     3ba:      2e 93           st      -X, r18\r
+     3bc:      11 97           sbiw    r26, 0x01       ; 1\r
+     3be:      89 81           ldd     r24, Y+1        ; 0x01\r
+     3c0:      82 83           std     Z+2, r24        ; 0x02\r
+     3c2:      13 82           std     Z+3, r1 ; 0x03\r
+     3c4:      9e d7           rcall   .+3900          ; 0x1302 <printf_P>\r
+                                " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+     3c6:      0f 90           pop     r0\r
+     3c8:      0f 90           pop     r0\r
+     3ca:      0f 90           pop     r0\r
+     3cc:      0f 90           pop     r0\r
+     3ce:      80 e9           ldi     r24, 0x90       ; 144\r
+     3d0:      88 df           rcall   .-240           ; 0x2e2 <LEDs_SetAllLEDs>\r
+     3d2:      ff cf           rjmp    .-2             ; 0x3d2 <EVENT_USB_Host_HostError+0x3c>\r
+\r
+000003d4 <EVENT_USB_Host_DeviceEnumerationFailed>:\r
+ *  enumerating an attached USB device.\r
+ */\r
+void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,\r
+                                            const uint8_t SubErrorCode)\r
+{\r
+       printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"\r
+     3d4:      90 91 2b 01     lds     r25, 0x012B\r
+     3d8:      2d b7           in      r18, 0x3d       ; 61\r
+     3da:      3e b7           in      r19, 0x3e       ; 62\r
+     3dc:      28 50           subi    r18, 0x08       ; 8\r
+     3de:      30 40           sbci    r19, 0x00       ; 0\r
+     3e0:      0f b6           in      r0, 0x3f        ; 63\r
+     3e2:      f8 94           cli\r
+     3e4:      3e bf           out     0x3e, r19       ; 62\r
+     3e6:      0f be           out     0x3f, r0        ; 63\r
+     3e8:      2d bf           out     0x3d, r18       ; 61\r
+     3ea:      ed b7           in      r30, 0x3d       ; 61\r
+     3ec:      fe b7           in      r31, 0x3e       ; 62\r
+     3ee:      31 96           adiw    r30, 0x01       ; 1\r
+     3f0:      2d eb           ldi     r18, 0xBD       ; 189\r
+     3f2:      31 e0           ldi     r19, 0x01       ; 1\r
+     3f4:      ad b7           in      r26, 0x3d       ; 61\r
+     3f6:      be b7           in      r27, 0x3e       ; 62\r
+     3f8:      12 96           adiw    r26, 0x02       ; 2\r
+     3fa:      3c 93           st      X, r19\r
+     3fc:      2e 93           st      -X, r18\r
+     3fe:      11 97           sbiw    r26, 0x01       ; 1\r
+     400:      82 83           std     Z+2, r24        ; 0x02\r
+     402:      13 82           std     Z+3, r1 ; 0x03\r
+     404:      64 83           std     Z+4, r22        ; 0x04\r
+     406:      15 82           std     Z+5, r1 ; 0x05\r
+     408:      96 83           std     Z+6, r25        ; 0x06\r
+     40a:      17 82           std     Z+7, r1 ; 0x07\r
+     40c:      7a d7           rcall   .+3828          ; 0x1302 <printf_P>\r
+                                " -- Error Code %d\r\n"\r
+                                " -- Sub Error Code %d\r\n"\r
+                                " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);\r
+\r
+       LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+     40e:      2d b7           in      r18, 0x3d       ; 61\r
+     410:      3e b7           in      r19, 0x3e       ; 62\r
+     412:      28 5f           subi    r18, 0xF8       ; 248\r
+     414:      3f 4f           sbci    r19, 0xFF       ; 255\r
+     416:      0f b6           in      r0, 0x3f        ; 63\r
+     418:      f8 94           cli\r
+     41a:      3e bf           out     0x3e, r19       ; 62\r
+     41c:      0f be           out     0x3f, r0        ; 63\r
+     41e:      2d bf           out     0x3d, r18       ; 61\r
+     420:      80 e9           ldi     r24, 0x90       ; 144\r
+}\r
+     422:      5f cf           rjmp    .-322           ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+00000424 <Audio_Task>:\r
+\r
+void Audio_Task(void)\r
+{\r
+     424:      1f 93           push    r17\r
+     426:      df 93           push    r29\r
+     428:      cf 93           push    r28\r
+     42a:      00 d0           rcall   .+0             ; 0x42c <Audio_Task+0x8>\r
+     42c:      0f 92           push    r0\r
+     42e:      cd b7           in      r28, 0x3d       ; 61\r
+     430:      de b7           in      r29, 0x3e       ; 62\r
+       uint8_t ErrorCode;\r
+\r
+       switch (USB_HostState)\r
+     432:      80 91 2b 01     lds     r24, 0x012B\r
+     436:      8b 30           cpi     r24, 0x0B       ; 11\r
+     438:      09 f0           breq    .+2             ; 0x43c <Audio_Task+0x18>\r
+     43a:      87 c0           rjmp    .+270           ; 0x54a <Audio_Task+0x126>\r
+       {\r
+               case HOST_STATE_Addressed:\r
+                       puts_P(PSTR("Getting Config Data.\r\n"));\r
+     43c:      86 ea           ldi     r24, 0xA6       ; 166\r
+     43e:      91 e0           ldi     r25, 0x01       ; 1\r
+     440:      7f d7           rcall   .+3838          ; 0x1340 <puts_P>\r
+\r
+                       /* Get and process the configuration descriptor data */\r
+                       if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)\r
+     442:      30 d1           rcall   .+608           ; 0x6a4 <ProcessConfigurationDescriptor>\r
+     444:      18 2f           mov     r17, r24\r
+     446:      88 23           and     r24, r24\r
+     448:      e9 f0           breq    .+58            ; 0x484 <Audio_Task+0x60>\r
+                       {\r
+                               if (ErrorCode == ControlError)\r
+     44a:      81 30           cpi     r24, 0x01       ; 1\r
+     44c:      19 f4           brne    .+6             ; 0x454 <Audio_Task+0x30>\r
+                                 puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n"));\r
+     44e:      8c e7           ldi     r24, 0x7C       ; 124\r
+     450:      91 e0           ldi     r25, 0x01       ; 1\r
+     452:      02 c0           rjmp    .+4             ; 0x458 <Audio_Task+0x34>\r
+                               else\r
+                                 puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n"));\r
+     454:      85 e6           ldi     r24, 0x65       ; 101\r
+     456:      91 e0           ldi     r25, 0x01       ; 1\r
+     458:      73 d7           rcall   .+3814          ; 0x1340 <puts_P>\r
+\r
+                               printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r
+     45a:      00 d0           rcall   .+0             ; 0x45c <Audio_Task+0x38>\r
+     45c:      00 d0           rcall   .+0             ; 0x45e <Audio_Task+0x3a>\r
+     45e:      ed b7           in      r30, 0x3d       ; 61\r
+     460:      fe b7           in      r31, 0x3e       ; 62\r
+     462:      31 96           adiw    r30, 0x01       ; 1\r
+     464:      2b e4           ldi     r18, 0x4B       ; 75\r
+     466:      31 e0           ldi     r19, 0x01       ; 1\r
+     468:      ad b7           in      r26, 0x3d       ; 61\r
+     46a:      be b7           in      r27, 0x3e       ; 62\r
+     46c:      12 96           adiw    r26, 0x02       ; 2\r
+     46e:      3c 93           st      X, r19\r
+     470:      2e 93           st      -X, r18\r
+     472:      11 97           sbiw    r26, 0x01       ; 1\r
+     474:      12 83           std     Z+2, r17        ; 0x02\r
+     476:      13 82           std     Z+3, r1 ; 0x03\r
+     478:      44 d7           rcall   .+3720          ; 0x1302 <printf_P>\r
+\r
+                               /* Indicate error status */\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+     47a:      0f 90           pop     r0\r
+     47c:      0f 90           pop     r0\r
+     47e:      0f 90           pop     r0\r
+     480:      0f 90           pop     r0\r
+     482:      4a c0           rjmp    .+148           ; 0x518 <Audio_Task+0xf4>\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                               break;\r
+                       }\r
+\r
+                       /* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */\r
+                       if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)\r
+     484:      81 e0           ldi     r24, 0x01       ; 1\r
+     486:      82 d3           rcall   .+1796          ; 0xb8c <USB_Host_SetDeviceConfiguration>\r
+     488:      88 23           and     r24, r24\r
+     48a:      41 f0           breq    .+16            ; 0x49c <Audio_Task+0x78>\r
+                       {\r
+                               printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"\r
+     48c:      00 d0           rcall   .+0             ; 0x48e <Audio_Task+0x6a>\r
+     48e:      00 d0           rcall   .+0             ; 0x490 <Audio_Task+0x6c>\r
+     490:      ed b7           in      r30, 0x3d       ; 61\r
+     492:      fe b7           in      r31, 0x3e       ; 62\r
+     494:      31 96           adiw    r30, 0x01       ; 1\r
+     496:      28 e0           ldi     r18, 0x08       ; 8\r
+     498:      31 e0           ldi     r19, 0x01       ; 1\r
+     49a:      0e c0           rjmp    .+28            ; 0x4b8 <Audio_Task+0x94>\r
+                               /* Wait until USB device disconnected */\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                               break;\r
+                       }\r
+                       \r
+                       if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,\r
+     49c:      80 91 1c 01     lds     r24, 0x011C\r
+     4a0:      60 91 1d 01     lds     r22, 0x011D\r
+     4a4:      89 d3           rcall   .+1810          ; 0xbb8 <USB_Host_SetInterfaceAltSetting>\r
+     4a6:      88 23           and     r24, r24\r
+     4a8:      79 f0           breq    .+30            ; 0x4c8 <Audio_Task+0xa4>\r
+                                                                        StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)\r
+                       {\r
+                               printf_P(PSTR(ESC_FG_RED "Could not set alternative streaming interface setting.\r\n"\r
+     4aa:      00 d0           rcall   .+0             ; 0x4ac <Audio_Task+0x88>\r
+     4ac:      00 d0           rcall   .+0             ; 0x4ae <Audio_Task+0x8a>\r
+     4ae:      ed b7           in      r30, 0x3d       ; 61\r
+     4b0:      fe b7           in      r31, 0x3e       ; 62\r
+     4b2:      31 96           adiw    r30, 0x01       ; 1\r
+     4b4:      21 eb           ldi     r18, 0xB1       ; 177\r
+     4b6:      30 e0           ldi     r19, 0x00       ; 0\r
+     4b8:      ad b7           in      r26, 0x3d       ; 61\r
+     4ba:      be b7           in      r27, 0x3e       ; 62\r
+     4bc:      12 96           adiw    r26, 0x02       ; 2\r
+     4be:      3c 93           st      X, r19\r
+     4c0:      2e 93           st      -X, r18\r
+     4c2:      11 97           sbiw    r26, 0x01       ; 1\r
+     4c4:      82 83           std     Z+2, r24        ; 0x02\r
+     4c6:      d7 cf           rjmp    .-82            ; 0x476 <Audio_Task+0x52>\r
+                               /* Wait until USB device disconnected */\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+                               break;\r
+                       }\r
+\r
+                       USB_ControlRequest = (USB_Request_Header_t)\r
+     4c8:      20 91 1e 01     lds     r18, 0x011E\r
+     4cc:      82 e2           ldi     r24, 0x22       ; 34\r
+     4ce:      80 93 23 01     sts     0x0123, r24\r
+     4d2:      81 e0           ldi     r24, 0x01       ; 1\r
+     4d4:      80 93 24 01     sts     0x0124, r24\r
+     4d8:      80 e0           ldi     r24, 0x00       ; 0\r
+     4da:      91 e0           ldi     r25, 0x01       ; 1\r
+     4dc:      90 93 26 01     sts     0x0126, r25\r
+     4e0:      80 93 25 01     sts     0x0125, r24\r
+     4e4:      20 93 27 01     sts     0x0127, r18\r
+     4e8:      10 92 28 01     sts     0x0128, r1\r
+     4ec:      83 e0           ldi     r24, 0x03       ; 3\r
+     4ee:      90 e0           ldi     r25, 0x00       ; 0\r
+     4f0:      90 93 2a 01     sts     0x012A, r25\r
+     4f4:      80 93 29 01     sts     0x0129, r24\r
+                                       .wValue        = 0x0100,\r
+                                       .wIndex        = StreamingEndpointAddress,\r
+                                       .wLength       = sizeof(USB_Audio_SampleFreq_t),\r
+                               };\r
+                               \r
+                       USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);\r
+     4f8:      de 01           movw    r26, r28\r
+     4fa:      11 96           adiw    r26, 0x01       ; 1\r
+     4fc:      e0 e0           ldi     r30, 0x00       ; 0\r
+     4fe:      f1 e0           ldi     r31, 0x01       ; 1\r
+     500:      83 e0           ldi     r24, 0x03       ; 3\r
+     502:      01 90           ld      r0, Z+\r
+     504:      0d 92           st      X+, r0\r
+     506:      81 50           subi    r24, 0x01       ; 1\r
+     508:      e1 f7           brne    .-8             ; 0x502 <Audio_Task+0xde>\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPNUM = PipeNumber;\r
+     50a:      10 92 a7 00     sts     0x00A7, r1\r
+\r
+                       /* Select the control pipe for the request transfer */\r
+                       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+                       /* Set the sample rate on the streaming interface endpoint */\r
+                       if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)\r
+     50e:      ce 01           movw    r24, r28\r
+     510:      01 96           adiw    r24, 0x01       ; 1\r
+     512:      b7 d5           rcall   .+2926          ; 0x1082 <USB_Host_SendControlRequest>\r
+     514:      88 23           and     r24, r24\r
+     516:      29 f0           breq    .+10            ; 0x522 <Audio_Task+0xfe>\r
+                       {\r
+                               /* Indicate error status */\r
+                               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+     518:      80 e9           ldi     r24, 0x90       ; 144\r
+     51a:      e3 de           rcall   .-570           ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+                               /* Wait until USB device disconnected */\r
+                               USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
+     51c:      10 92 2b 01     sts     0x012B, r1\r
+                               break;\r
+     520:      14 c0           rjmp    .+40            ; 0x54a <Audio_Task+0x126>\r
+                       }\r
+       \r
+                       /* Sample reload timer initialization */\r
+                       TIMSK0  = (1 << OCIE0A);\r
+     522:      82 e0           ldi     r24, 0x02       ; 2\r
+     524:      80 93 6e 00     sts     0x006E, r24\r
+                       OCR0A   = ((F_CPU / 8 / 8000) - 1);\r
+     528:      9c e7           ldi     r25, 0x7C       ; 124\r
+     52a:      97 bd           out     0x27, r25       ; 39\r
+                       TCCR0A  = (1 << WGM01);  // CTC mode\r
+     52c:      84 bd           out     0x24, r24       ; 36\r
+                       TCCR0B  = (1 << CS01);   // Fcpu/8 speed        \r
+     52e:      85 bd           out     0x25, r24       ; 37\r
+\r
+                       /* Set speaker as output */\r
+                       DDRC   |= (1 << 6);\r
+     530:      3e 9a           sbi     0x07, 6 ; 7\r
+\r
+                       /* PWM speaker timer initialization */\r
+                       TCCR3A  = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)\r
+     532:      81 ef           ldi     r24, 0xF1       ; 241\r
+     534:      80 93 90 00     sts     0x0090, r24\r
+                                       | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP\r
+                       TCCR3B  = ((1 << WGM32) | (1 << CS30));  // Fast 8-Bit PWM, F_CPU speed\r
+     538:      89 e0           ldi     r24, 0x09       ; 9\r
+     53a:      80 93 91 00     sts     0x0091, r24\r
+                       \r
+                       puts_P(PSTR("Microphone Enumerated.\r\n"));\r
+     53e:      88 e9           ldi     r24, 0x98       ; 152\r
+     540:      90 e0           ldi     r25, 0x00       ; 0\r
+     542:      fe d6           rcall   .+3580          ; 0x1340 <puts_P>\r
+\r
+                       USB_HostState = HOST_STATE_Configured;\r
+     544:      8c e0           ldi     r24, 0x0C       ; 12\r
+     546:      80 93 2b 01     sts     0x012B, r24\r
+                       break;\r
+               case HOST_STATE_Configured:\r
+                       break;\r
+       }\r
+}\r
+     54a:      0f 90           pop     r0\r
+     54c:      0f 90           pop     r0\r
+     54e:      0f 90           pop     r0\r
+     550:      cf 91           pop     r28\r
+     552:      df 91           pop     r29\r
+     554:      1f 91           pop     r17\r
+     556:      08 95           ret\r
+\r
+00000558 <main>:\r
+/** Main program entry point. This routine configures the hardware required by the application, then\r
+ *  enters a loop to run the application tasks in sequence.\r
+ */\r
+int main(void)\r
+{\r
+       SetupHardware();\r
+     558:      c9 de           rcall   .-622           ; 0x2ec <SetupHardware>\r
+\r
+       puts_P(PSTR(ESC_FG_CYAN "Audio Host Demo running.\r\n" ESC_FG_WHITE));\r
+     55a:      8e e7           ldi     r24, 0x7E       ; 126\r
+     55c:      92 e0           ldi     r25, 0x02       ; 2\r
+     55e:      f0 d6           rcall   .+3552          ; 0x1340 <puts_P>\r
+\r
+       LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);\r
+     560:      80 e1           ldi     r24, 0x10       ; 16\r
+     562:      bf de           rcall   .-642           ; 0x2e2 <LEDs_SetAllLEDs>\r
+       sei();\r
+     564:      78 94           sei\r
+\r
+       for (;;)\r
+       {\r
+               Audio_Task();\r
+     566:      5e df           rcall   .-324           ; 0x424 <Audio_Task>\r
+               USB_USBTask();\r
+     568:      a2 d6           rcall   .+3396          ; 0x12ae <USB_USBTask>\r
+     56a:      fd cf           rjmp    .-6             ; 0x566 <main+0xe>\r
+\r
+0000056c <__vector_21>:\r
+       }\r
+}\r
+\r
+/** ISR to handle the reloading of the PWM timer with the next sample. */\r
+ISR(TIMER0_COMPA_vect, ISR_BLOCK)\r
+{\r
+     56c:      1f 92           push    r1\r
+     56e:      0f 92           push    r0\r
+     570:      0f b6           in      r0, 0x3f        ; 63\r
+     572:      0f 92           push    r0\r
+     574:      0b b6           in      r0, 0x3b        ; 59\r
+     576:      0f 92           push    r0\r
+     578:      11 24           eor     r1, r1\r
+     57a:      1f 93           push    r17\r
+     57c:      2f 93           push    r18\r
+     57e:      3f 93           push    r19\r
+     580:      4f 93           push    r20\r
+     582:      5f 93           push    r21\r
+     584:      6f 93           push    r22\r
+     586:      7f 93           push    r23\r
+     588:      8f 93           push    r24\r
+     58a:      9f 93           push    r25\r
+     58c:      af 93           push    r26\r
+     58e:      bf 93           push    r27\r
+     590:      ef 93           push    r30\r
+     592:      ff 93           push    r31\r
+                        *  \return Index of the currently selected pipe.\r
+                        */\r
+                       static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_GetCurrentPipe(void)\r
+                       {\r
+                               return (UPNUM & PIPE_PIPENUM_MASK);\r
+     594:      10 91 a7 00     lds     r17, 0x00A7\r
+     598:      17 70           andi    r17, 0x07       ; 7\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPNUM = PipeNumber;\r
+     59a:      81 e0           ldi     r24, 0x01       ; 1\r
+     59c:      80 93 a7 00     sts     0x00A7, r24\r
+\r
+                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Unfreeze(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PFREEZE);\r
+     5a0:      80 91 a9 00     lds     r24, 0x00A9\r
+     5a4:      8f 7b           andi    r24, 0xBF       ; 191\r
+     5a6:      80 93 a9 00     sts     0x00A9, r24\r
+                        *  \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsINReceived(void)\r
+                       {\r
+                               return ((UPINTX & (1 << RXINI)) ? true : false);\r
+     5aa:      80 91 a6 00     lds     r24, 0x00A6\r
+\r
+       Pipe_SelectPipe(AUDIO_DATA_IN_PIPE);\r
+       Pipe_Unfreeze();\r
+\r
+       /* Check if the current pipe can be read from (contains a packet) and the device is sending data */\r
+       if (Pipe_IsINReceived())\r
+     5ae:      80 ff           sbrs    r24, 0\r
+     5b0:      2b c0           rjmp    .+86            ; 0x608 <__vector_21+0x9c>\r
+                               {\r
+                                       uint16_t Value;\r
+                                       uint8_t  Bytes[2];\r
+                               } Data;\r
+\r
+                               Data.Bytes[0] = UPDATX;\r
+     5b2:      80 91 af 00     lds     r24, 0x00AF\r
+                               Data.Bytes[1] = UPDATX;\r
+     5b6:      40 91 af 00     lds     r20, 0x00AF\r
+                        *          on its direction.\r
+                        */\r
+                       static inline bool Pipe_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsReadWriteAllowed(void)\r
+                       {\r
+                               return ((UPINTX & (1 << RWAL)) ? true : false);\r
+     5ba:      80 91 a6 00     lds     r24, 0x00A6\r
+       {\r
+               /* Retrieve the signed 16-bit audio sample, convert to 8-bit */\r
+               int8_t Sample_8Bit = (Pipe_Read_16_LE() >> 8);\r
+\r
+               /* Check to see if the bank is now empty */\r
+               if (!(Pipe_IsReadWriteAllowed()))\r
+     5be:      85 fd           sbrc    r24, 5\r
+     5c0:      05 c0           rjmp    .+10            ; 0x5cc <__vector_21+0x60>\r
+                        *  \ingroup Group_PipePacketManagement_AVR8\r
+                        */\r
+                       static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearIN(void)\r
+                       {\r
+                               UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));\r
+     5c2:      80 91 a6 00     lds     r24, 0x00A6\r
+     5c6:      8e 77           andi    r24, 0x7E       ; 126\r
+     5c8:      80 93 a6 00     sts     0x00A6, r24\r
+                       /* Acknowledge the packet, clear the bank ready for the next packet */\r
+                       Pipe_ClearIN();\r
+               }\r
+\r
+               /* Load the sample into the PWM timer channel */\r
+               OCR3A = (Sample_8Bit ^ (1 << 7));\r
+     5cc:      84 2f           mov     r24, r20\r
+     5ce:      99 27           eor     r25, r25\r
+     5d0:      87 fd           sbrc    r24, 7\r
+     5d2:      90 95           com     r25\r
+     5d4:      20 e8           ldi     r18, 0x80       ; 128\r
+     5d6:      30 e0           ldi     r19, 0x00       ; 0\r
+     5d8:      82 27           eor     r24, r18\r
+     5da:      93 27           eor     r25, r19\r
+     5dc:      90 93 99 00     sts     0x0099, r25\r
+     5e0:      80 93 98 00     sts     0x0098, r24\r
+\r
+               uint8_t LEDMask = LEDS_NO_LEDS;\r
+\r
+               /* Turn on LEDs as the sample amplitude increases */\r
+               if (Sample_8Bit > 16)\r
+     5e4:      41 31           cpi     r20, 0x11       ; 17\r
+     5e6:      44 f4           brge    .+16            ; 0x5f8 <__vector_21+0x8c>\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);\r
+               else if (Sample_8Bit > 8)\r
+     5e8:      49 30           cpi     r20, 0x09       ; 9\r
+     5ea:      44 f4           brge    .+16            ; 0x5fc <__vector_21+0x90>\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);\r
+               else if (Sample_8Bit > 4)\r
+     5ec:      45 30           cpi     r20, 0x05       ; 5\r
+     5ee:      44 f4           brge    .+16            ; 0x600 <__vector_21+0x94>\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2);\r
+               else if (Sample_8Bit > 2)\r
+     5f0:      43 30           cpi     r20, 0x03       ; 3\r
+     5f2:      44 f4           brge    .+16            ; 0x604 <__vector_21+0x98>\r
+               }\r
+\r
+               /* Load the sample into the PWM timer channel */\r
+               OCR3A = (Sample_8Bit ^ (1 << 7));\r
+\r
+               uint8_t LEDMask = LEDS_NO_LEDS;\r
+     5f4:      80 e0           ldi     r24, 0x00       ; 0\r
+     5f6:      07 c0           rjmp    .+14            ; 0x606 <__vector_21+0x9a>\r
+\r
+               /* Turn on LEDs as the sample amplitude increases */\r
+               if (Sample_8Bit > 16)\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);\r
+     5f8:      80 ef           ldi     r24, 0xF0       ; 240\r
+     5fa:      05 c0           rjmp    .+10            ; 0x606 <__vector_21+0x9a>\r
+               else if (Sample_8Bit > 8)\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);\r
+     5fc:      80 eb           ldi     r24, 0xB0       ; 176\r
+     5fe:      03 c0           rjmp    .+6             ; 0x606 <__vector_21+0x9a>\r
+               else if (Sample_8Bit > 4)\r
+                 LEDMask = (LEDS_LED1 | LEDS_LED2);\r
+     600:      80 e3           ldi     r24, 0x30       ; 48\r
+     602:      01 c0           rjmp    .+2             ; 0x606 <__vector_21+0x9a>\r
+               else if (Sample_8Bit > 2)\r
+                 LEDMask = (LEDS_LED1);\r
+     604:      80 e1           ldi     r24, 0x10       ; 16\r
+\r
+               LEDs_SetAllLEDs(LEDMask);\r
+     606:      6d de           rcall   .-806           ; 0x2e2 <LEDs_SetAllLEDs>\r
+\r
+                       /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+                       static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Freeze(void)\r
+                       {\r
+                               UPCONX |= (1 << PFREEZE);\r
+     608:      80 91 a9 00     lds     r24, 0x00A9\r
+     60c:      80 64           ori     r24, 0x40       ; 64\r
+     60e:      80 93 a9 00     sts     0x00A9, r24\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPNUM = PipeNumber;\r
+     612:      10 93 a7 00     sts     0x00A7, r17\r
+       }\r
+       \r
+       Pipe_Freeze();\r
+\r
+       Pipe_SelectPipe(PrevPipe);\r
+}\r
+     616:      ff 91           pop     r31\r
+     618:      ef 91           pop     r30\r
+     61a:      bf 91           pop     r27\r
+     61c:      af 91           pop     r26\r
+     61e:      9f 91           pop     r25\r
+     620:      8f 91           pop     r24\r
+     622:      7f 91           pop     r23\r
+     624:      6f 91           pop     r22\r
+     626:      5f 91           pop     r21\r
+     628:      4f 91           pop     r20\r
+     62a:      3f 91           pop     r19\r
+     62c:      2f 91           pop     r18\r
+     62e:      1f 91           pop     r17\r
+     630:      0f 90           pop     r0\r
+     632:      0b be           out     0x3b, r0        ; 59\r
+     634:      0f 90           pop     r0\r
+     636:      0f be           out     0x3f, r0        ; 63\r
+     638:      0f 90           pop     r0\r
+     63a:      1f 90           pop     r1\r
+     63c:      18 95           reti\r
+\r
+0000063e <DComp_NextAudioControlInterface>:\r
+       /* Valid data found, return success */\r
+       return SuccessfulConfigRead;\r
+}\r
+\r
+uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor)\r
+{\r
+     63e:      fc 01           movw    r30, r24\r
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+       if (Header->Type == DTYPE_Interface)\r
+     640:      81 81           ldd     r24, Z+1        ; 0x01\r
+     642:      84 30           cpi     r24, 0x04       ; 4\r
+     644:      49 f4           brne    .+18            ; 0x658 <DComp_NextAudioControlInterface+0x1a>\r
+       {\r
+               USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);\r
+\r
+               if ((Interface->Class    == AUDIO_CSCP_AudioClass) &&\r
+     646:      85 81           ldd     r24, Z+5        ; 0x05\r
+     648:      81 30           cpi     r24, 0x01       ; 1\r
+     64a:      31 f4           brne    .+12            ; 0x658 <DComp_NextAudioControlInterface+0x1a>\r
+     64c:      86 81           ldd     r24, Z+6        ; 0x06\r
+     64e:      81 30           cpi     r24, 0x01       ; 1\r
+     650:      19 f4           brne    .+6             ; 0x658 <DComp_NextAudioControlInterface+0x1a>\r
+                   (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&\r
+     652:      87 81           ldd     r24, Z+7        ; 0x07\r
+     654:      88 23           and     r24, r24\r
+     656:      11 f0           breq    .+4             ; 0x65c <DComp_NextAudioControlInterface+0x1e>\r
+               {\r
+                       return DESCRIPTOR_SEARCH_Found;\r
+               }\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+     658:      82 e0           ldi     r24, 0x02       ; 2\r
+     65a:      08 95           ret\r
+\r
+               if ((Interface->Class    == AUDIO_CSCP_AudioClass) &&\r
+                   (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&\r
+                   (Interface->Protocol == AUDIO_CSCP_ControlProtocol))\r
+               {\r
+                       return DESCRIPTOR_SEARCH_Found;\r
+     65c:      80 e0           ldi     r24, 0x00       ; 0\r
+               }\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+     65e:      08 95           ret\r
+\r
+00000660 <DComp_NextAudioStreamInterface>:\r
+\r
+uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor)\r
+{\r
+     660:      fc 01           movw    r30, r24\r
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+       if (Header->Type == DTYPE_Interface)\r
+     662:      81 81           ldd     r24, Z+1        ; 0x01\r
+     664:      84 30           cpi     r24, 0x04       ; 4\r
+     666:      49 f4           brne    .+18            ; 0x67a <DComp_NextAudioStreamInterface+0x1a>\r
+       {\r
+               USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);\r
+\r
+               if ((Interface->Class    == AUDIO_CSCP_AudioClass) &&\r
+     668:      85 81           ldd     r24, Z+5        ; 0x05\r
+     66a:      81 30           cpi     r24, 0x01       ; 1\r
+     66c:      31 f4           brne    .+12            ; 0x67a <DComp_NextAudioStreamInterface+0x1a>\r
+     66e:      86 81           ldd     r24, Z+6        ; 0x06\r
+     670:      82 30           cpi     r24, 0x02       ; 2\r
+     672:      19 f4           brne    .+6             ; 0x67a <DComp_NextAudioStreamInterface+0x1a>\r
+                   (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&\r
+     674:      87 81           ldd     r24, Z+7        ; 0x07\r
+     676:      88 23           and     r24, r24\r
+     678:      11 f0           breq    .+4             ; 0x67e <DComp_NextAudioStreamInterface+0x1e>\r
+               {\r
+                       return DESCRIPTOR_SEARCH_Found;\r
+               }\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+     67a:      82 e0           ldi     r24, 0x02       ; 2\r
+     67c:      08 95           ret\r
+\r
+               if ((Interface->Class    == AUDIO_CSCP_AudioClass) &&\r
+                   (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&\r
+                   (Interface->Protocol == AUDIO_CSCP_StreamingProtocol))\r
+               {\r
+                       return DESCRIPTOR_SEARCH_Found;\r
+     67e:      80 e0           ldi     r24, 0x00       ; 0\r
+               }\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+     680:      08 95           ret\r
+\r
+00000682 <DComp_NextAudioInterfaceDataEndpoint>:\r
+\r
+uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)\r
+{\r
+     682:      fc 01           movw    r30, r24\r
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+       if (Header->Type == DTYPE_Endpoint)\r
+     684:      81 81           ldd     r24, Z+1        ; 0x01\r
+     686:      85 30           cpi     r24, 0x05       ; 5\r
+     688:      29 f4           brne    .+10            ; 0x694 <DComp_NextAudioInterfaceDataEndpoint+0x12>\r
+       {\r
+               USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);\r
+\r
+               if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)\r
+     68a:      83 81           ldd     r24, Z+3        ; 0x03\r
+     68c:      83 70           andi    r24, 0x03       ; 3\r
+     68e:      81 30           cpi     r24, 0x01       ; 1\r
+     690:      19 f4           brne    .+6             ; 0x698 <DComp_NextAudioInterfaceDataEndpoint+0x16>\r
+     692:      04 c0           rjmp    .+8             ; 0x69c <DComp_NextAudioInterfaceDataEndpoint+0x1a>\r
+                 return DESCRIPTOR_SEARCH_Found;\r
+       }\r
+       else if (Header->Type == DTYPE_Interface)\r
+     694:      84 30           cpi     r24, 0x04       ; 4\r
+     696:      21 f0           breq    .+8             ; 0x6a0 <DComp_NextAudioInterfaceDataEndpoint+0x1e>\r
+       {\r
+               return DESCRIPTOR_SEARCH_Fail;\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+     698:      82 e0           ldi     r24, 0x02       ; 2\r
+     69a:      08 95           ret\r
+       if (Header->Type == DTYPE_Endpoint)\r
+       {\r
+               USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);\r
+\r
+               if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)\r
+                 return DESCRIPTOR_SEARCH_Found;\r
+     69c:      80 e0           ldi     r24, 0x00       ; 0\r
+     69e:      08 95           ret\r
+       }\r
+       else if (Header->Type == DTYPE_Interface)\r
+       {\r
+               return DESCRIPTOR_SEARCH_Fail;\r
+     6a0:      81 e0           ldi     r24, 0x01       ; 1\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+     6a2:      08 95           ret\r
+\r
+000006a4 <ProcessConfigurationDescriptor>:\r
+uint8_t StreamingInterfaceIndex      = 0;\r
+uint8_t StreamingInterfaceAltSetting = 0;\r
+uint8_t StreamingEndpointAddress     = 0;\r
+\r
+uint8_t ProcessConfigurationDescriptor(void)\r
+{\r
+     6a4:      af 92           push    r10\r
+     6a6:      bf 92           push    r11\r
+     6a8:      cf 92           push    r12\r
+     6aa:      df 92           push    r13\r
+     6ac:      ef 92           push    r14\r
+     6ae:      ff 92           push    r15\r
+     6b0:      0f 93           push    r16\r
+     6b2:      1f 93           push    r17\r
+     6b4:      df 93           push    r29\r
+     6b6:      cf 93           push    r28\r
+     6b8:      cd b7           in      r28, 0x3d       ; 61\r
+     6ba:      de b7           in      r29, 0x3e       ; 62\r
+     6bc:      c4 50           subi    r28, 0x04       ; 4\r
+     6be:      d2 40           sbci    r29, 0x02       ; 2\r
+     6c0:      0f b6           in      r0, 0x3f        ; 63\r
+     6c2:      f8 94           cli\r
+     6c4:      de bf           out     0x3e, r29       ; 62\r
+     6c6:      0f be           out     0x3f, r0        ; 63\r
+     6c8:      cd bf           out     0x3d, r28       ; 61\r
+       uint8_t  ConfigDescriptorData[512];\r
+       void*    CurrConfigLocation = ConfigDescriptorData;\r
+     6ca:      ae 01           movw    r20, r28\r
+     6cc:      4b 5f           subi    r20, 0xFB       ; 251\r
+     6ce:      5f 4f           sbci    r21, 0xFF       ; 255\r
+     6d0:      5a 83           std     Y+2, r21        ; 0x02\r
+     6d2:      49 83           std     Y+1, r20        ; 0x01\r
+       USB_Descriptor_Interface_t* AudioControlInterface   = NULL;\r
+       USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;\r
+       USB_Descriptor_Endpoint_t*  DataINEndpoint          = NULL;\r
+\r
+       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
+       switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))\r
+     6d4:      23 e0           ldi     r18, 0x03       ; 3\r
+     6d6:      e2 2e           mov     r14, r18\r
+     6d8:      f1 2c           mov     r15, r1\r
+     6da:      ec 0e           add     r14, r28\r
+     6dc:      fd 1e           adc     r15, r29\r
+     6de:      81 e0           ldi     r24, 0x01       ; 1\r
+     6e0:      b7 01           movw    r22, r14\r
+     6e2:      20 e0           ldi     r18, 0x00       ; 0\r
+     6e4:      32 e0           ldi     r19, 0x02       ; 2\r
+     6e6:      09 d4           rcall   .+2066          ; 0xefa <USB_Host_GetDeviceConfigDescriptor>\r
+     6e8:      85 30           cpi     r24, 0x05       ; 5\r
+     6ea:      09 f4           brne    .+2             ; 0x6ee <ProcessConfigurationDescriptor+0x4a>\r
+     6ec:      5c c0           rjmp    .+184           ; 0x7a6 <ProcessConfigurationDescriptor+0x102>\r
+     6ee:      86 30           cpi     r24, 0x06       ; 6\r
+     6f0:      61 f0           breq    .+24            ; 0x70a <ProcessConfigurationDescriptor+0x66>\r
+     6f2:      88 23           and     r24, r24\r
+     6f4:      61 f4           brne    .+24            ; 0x70e <ProcessConfigurationDescriptor+0x6a>\r
+     6f6:      00 e0           ldi     r16, 0x00       ; 0\r
+     6f8:      10 e0           ldi     r17, 0x00       ; 0\r
+     6fa:      cc 24           eor     r12, r12\r
+     6fc:      dd 24           eor     r13, r13\r
+     6fe:      57 01           movw    r10, r14\r
+     700:      7e 01           movw    r14, r28\r
+     702:      08 94           sec\r
+     704:      e1 1c           adc     r14, r1\r
+     706:      f1 1c           adc     r15, r1\r
+     708:      07 c0           rjmp    .+14            ; 0x718 <ProcessConfigurationDescriptor+0x74>\r
+       {\r
+               case HOST_GETCONFIG_Successful:\r
+                       break;\r
+               case HOST_GETCONFIG_InvalidData:\r
+                       return InvalidConfigDataReturned;\r
+     70a:      83 e0           ldi     r24, 0x03       ; 3\r
+     70c:      4f c0           rjmp    .+158           ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+               case HOST_GETCONFIG_BuffOverflow:\r
+                       return DescriptorTooLarge;\r
+               default:\r
+                       return ControlError;\r
+     70e:      81 e0           ldi     r24, 0x01       ; 1\r
+     710:      4d c0           rjmp    .+154           ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+       USB_Descriptor_Interface_t* AudioControlInterface   = NULL;\r
+       USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;\r
+       USB_Descriptor_Endpoint_t*  DataINEndpoint          = NULL;\r
+\r
+       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
+       switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))\r
+     712:      9c 01           movw    r18, r24\r
+     714:      03 2f           mov     r16, r19\r
+     716:      18 2f           mov     r17, r24\r
+                       return ControlError;\r
+       }\r
+\r
+       while (!(DataINEndpoint))\r
+       {\r
+               if (!(AudioControlInterface) ||\r
+     718:      c1 14           cp      r12, r1\r
+     71a:      d1 04           cpc     r13, r1\r
+     71c:      41 f0           breq    .+16            ; 0x72e <ProcessConfigurationDescriptor+0x8a>\r
+                   USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+     71e:      c5 01           movw    r24, r10\r
+     720:      b7 01           movw    r22, r14\r
+     722:      41 e4           ldi     r20, 0x41       ; 65\r
+     724:      53 e0           ldi     r21, 0x03       ; 3\r
+     726:      40 d4           rcall   .+2176          ; 0xfa8 <USB_GetNextDescriptorComp>\r
+                       return ControlError;\r
+       }\r
+\r
+       while (!(DataINEndpoint))\r
+       {\r
+               if (!(AudioControlInterface) ||\r
+     728:      88 23           and     r24, r24\r
+     72a:      51 f4           brne    .+20            ; 0x740 <ProcessConfigurationDescriptor+0x9c>\r
+     72c:      1c c0           rjmp    .+56            ; 0x766 <ProcessConfigurationDescriptor+0xc2>\r
+                   USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+                                             DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
+               {\r
+                       if (!(AudioControlInterface))\r
+                       {\r
+                               if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+     72e:      c5 01           movw    r24, r10\r
+     730:      b7 01           movw    r22, r14\r
+     732:      4f e1           ldi     r20, 0x1F       ; 31\r
+     734:      53 e0           ldi     r21, 0x03       ; 3\r
+     736:      38 d4           rcall   .+2160          ; 0xfa8 <USB_GetNextDescriptorComp>\r
+     738:      88 23           and     r24, r24\r
+     73a:      b9 f5           brne    .+110           ; 0x7aa <ProcessConfigurationDescriptor+0x106>\r
+                                       /* Descriptor not found, error out */\r
+                                       return NoCompatibleInterfaceFound;\r
+                               }\r
+\r
+                               /* Save the interface in case we need to refer back to it later */\r
+                               AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);                       \r
+     73c:      c9 80           ldd     r12, Y+1        ; 0x01\r
+     73e:      da 80           ldd     r13, Y+2        ; 0x02\r
+                       }\r
+               \r
+                       if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+     740:      c5 01           movw    r24, r10\r
+     742:      b7 01           movw    r22, r14\r
+     744:      40 e3           ldi     r20, 0x30       ; 48\r
+     746:      53 e0           ldi     r21, 0x03       ; 3\r
+     748:      2f d4           rcall   .+2142          ; 0xfa8 <USB_GetNextDescriptorComp>\r
+     74a:      88 23           and     r24, r24\r
+     74c:      49 f0           breq    .+18            ; 0x760 <ProcessConfigurationDescriptor+0xbc>\r
+                                                                                 DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+                       {\r
+                               if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+     74e:      c5 01           movw    r24, r10\r
+     750:      b7 01           movw    r22, r14\r
+     752:      4f e1           ldi     r20, 0x1F       ; 31\r
+     754:      53 e0           ldi     r21, 0x03       ; 3\r
+     756:      28 d4           rcall   .+2128          ; 0xfa8 <USB_GetNextDescriptorComp>\r
+     758:      88 23           and     r24, r24\r
+     75a:      39 f5           brne    .+78            ; 0x7aa <ProcessConfigurationDescriptor+0x106>\r
+                                       /* Descriptor not found, error out */\r
+                                       return NoCompatibleInterfaceFound;\r
+                               }\r
+\r
+                               /* Save the interface in case we need to refer back to it later */\r
+                               AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);\r
+     75c:      c9 80           ldd     r12, Y+1        ; 0x01\r
+     75e:      da 80           ldd     r13, Y+2        ; 0x02\r
+                       }\r
+\r
+                       /* Save the interface in case we need to refer back to it later */\r
+                       AudioStreamingInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);\r
+     760:      09 81           ldd     r16, Y+1        ; 0x01\r
+     762:      1a 81           ldd     r17, Y+2        ; 0x02\r
+\r
+                       /* Skip the remainder of the loop as we have not found an endpoint yet */\r
+                       continue;\r
+     764:      35 c0           rjmp    .+106           ; 0x7d0 <ProcessConfigurationDescriptor+0x12c>\r
+               }\r
+\r
+               /* Retrieve the endpoint address from the endpoint descriptor */\r
+               USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);\r
+     766:      e9 81           ldd     r30, Y+1        ; 0x01\r
+     768:      fa 81           ldd     r31, Y+2        ; 0x02\r
+\r
+               /* If the endpoint is a IN type endpoint */\r
+               if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
+     76a:      82 81           ldd     r24, Z+2        ; 0x02\r
+     76c:      87 ff           sbrs    r24, 7\r
+     76e:      30 c0           rjmp    .+96            ; 0x7d0 <ProcessConfigurationDescriptor+0x12c>\r
+     770:      90 2f           mov     r25, r16\r
+     772:      81 2f           mov     r24, r17\r
+                       return DescriptorTooLarge;\r
+               default:\r
+                       return ControlError;\r
+       }\r
+\r
+       while (!(DataINEndpoint))\r
+     774:      30 97           sbiw    r30, 0x00       ; 0\r
+     776:      69 f2           breq    .-102           ; 0x712 <ProcessConfigurationDescriptor+0x6e>\r
+               /* If the endpoint is a IN type endpoint */\r
+               if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
+                 DataINEndpoint = EndpointData;\r
+       }\r
+\r
+       StreamingInterfaceIndex      = AudioStreamingInterface->InterfaceNumber;\r
+     778:      d8 01           movw    r26, r16\r
+     77a:      12 96           adiw    r26, 0x02       ; 2\r
+     77c:      8c 91           ld      r24, X\r
+     77e:      12 97           sbiw    r26, 0x02       ; 2\r
+     780:      80 93 1c 01     sts     0x011C, r24\r
+       StreamingInterfaceAltSetting = AudioStreamingInterface->AlternateSetting;\r
+     784:      13 96           adiw    r26, 0x03       ; 3\r
+     786:      8c 91           ld      r24, X\r
+     788:      80 93 1d 01     sts     0x011D, r24\r
+       StreamingEndpointAddress     = DataINEndpoint->EndpointAddress;\r
+     78c:      22 81           ldd     r18, Z+2        ; 0x02\r
+     78e:      20 93 1e 01     sts     0x011E, r18\r
+\r
+       /* Configure the HID data IN pipe */\r
+       Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,\r
+     792:      04 81           ldd     r16, Z+4        ; 0x04\r
+     794:      15 81           ldd     r17, Z+5        ; 0x05\r
+     796:      81 e0           ldi     r24, 0x01       ; 1\r
+     798:      61 e0           ldi     r22, 0x01       ; 1\r
+     79a:      40 e1           ldi     r20, 0x10       ; 16\r
+     79c:      94 e0           ldi     r25, 0x04       ; 4\r
+     79e:      e9 2e           mov     r14, r25\r
+     7a0:      22 d2           rcall   .+1092          ; 0xbe6 <Pipe_ConfigurePipe>\r
+                          DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);\r
+\r
+       /* Valid data found, return success */\r
+       return SuccessfulConfigRead;\r
+     7a2:      80 e0           ldi     r24, 0x00       ; 0\r
+     7a4:      03 c0           rjmp    .+6             ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+               case HOST_GETCONFIG_Successful:\r
+                       break;\r
+               case HOST_GETCONFIG_InvalidData:\r
+                       return InvalidConfigDataReturned;\r
+               case HOST_GETCONFIG_BuffOverflow:\r
+                       return DescriptorTooLarge;\r
+     7a6:      82 e0           ldi     r24, 0x02       ; 2\r
+     7a8:      01 c0           rjmp    .+2             ; 0x7ac <ProcessConfigurationDescriptor+0x108>\r
+                       {\r
+                               if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+                                                                                         DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+                               {\r
+                                       /* Descriptor not found, error out */\r
+                                       return NoCompatibleInterfaceFound;\r
+     7aa:      84 e0           ldi     r24, 0x04       ; 4\r
+       Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,\r
+                          DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);\r
+\r
+       /* Valid data found, return success */\r
+       return SuccessfulConfigRead;\r
+}\r
+     7ac:      cc 5f           subi    r28, 0xFC       ; 252\r
+     7ae:      dd 4f           sbci    r29, 0xFD       ; 253\r
+     7b0:      0f b6           in      r0, 0x3f        ; 63\r
+     7b2:      f8 94           cli\r
+     7b4:      de bf           out     0x3e, r29       ; 62\r
+     7b6:      0f be           out     0x3f, r0        ; 63\r
+     7b8:      cd bf           out     0x3d, r28       ; 61\r
+     7ba:      cf 91           pop     r28\r
+     7bc:      df 91           pop     r29\r
+     7be:      1f 91           pop     r17\r
+     7c0:      0f 91           pop     r16\r
+     7c2:      ff 90           pop     r15\r
+     7c4:      ef 90           pop     r14\r
+     7c6:      df 90           pop     r13\r
+     7c8:      cf 90           pop     r12\r
+     7ca:      bf 90           pop     r11\r
+     7cc:      af 90           pop     r10\r
+     7ce:      08 95           ret\r
+       USB_Descriptor_Interface_t* AudioControlInterface   = NULL;\r
+       USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;\r
+       USB_Descriptor_Endpoint_t*  DataINEndpoint          = NULL;\r
+\r
+       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
+       switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))\r
+     7d0:      90 2f           mov     r25, r16\r
+     7d2:      81 2f           mov     r24, r17\r
+     7d4:      9e cf           rjmp    .-196           ; 0x712 <ProcessConfigurationDescriptor+0x6e>\r
+\r
+000007d6 <USB_Host_ResetDevice>:\r
+                        *  \return Boolean \c true if the bus is currently suspended, \c false otherwise.\r
+                        */\r
+                       static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool USB_Host_IsBusSuspended(void)\r
+                       {\r
+                               return ((UHCON & (1 << SOFEN)) ? false : true);\r
+     7d6:      80 91 9e 00     lds     r24, 0x009E\r
+     7da:      90 e0           ldi     r25, 0x00       ; 0\r
+     7dc:      81 70           andi    r24, 0x01       ; 1\r
+     7de:      90 70           andi    r25, 0x00       ; 0\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHIEN  &= ~(1 << DCONNE);\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               UHIEN  &= ~(1 << DDISCE);\r
+     7e0:      20 91 a0 00     lds     r18, 0x00A0\r
+     7e4:      2d 7f           andi    r18, 0xFD       ; 253\r
+     7e6:      20 93 a0 00     sts     0x00A0, r18\r
+                        *  woken up automatically and the bus resumed after the reset has been correctly issued.\r
+                        */\r
+                       static inline void USB_Host_ResetBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_ResetBus(void)\r
+                       {\r
+                               UHCON |=  (1 << RESET);\r
+     7ea:      20 91 9e 00     lds     r18, 0x009E\r
+     7ee:      22 60           ori     r18, 0x02       ; 2\r
+     7f0:      20 93 9e 00     sts     0x009E, r18\r
+                        *  \return Boolean \c true if no bus reset is currently being sent, \c false otherwise.\r
+                        */\r
+                       static inline bool USB_Host_IsBusResetComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool USB_Host_IsBusResetComplete(void)\r
+                       {\r
+                               return ((UHCON & (1 << RESET)) ? false : true);\r
+     7f4:      20 91 9e 00     lds     r18, 0x009E\r
+       bool BusSuspended = USB_Host_IsBusSuspended();\r
+\r
+       USB_INT_Disable(USB_INT_DDISCI);\r
+\r
+       USB_Host_ResetBus();\r
+       while (!(USB_Host_IsBusResetComplete()));\r
+     7f8:      21 fd           sbrc    r18, 1\r
+     7fa:      fc cf           rjmp    .-8             ; 0x7f4 <USB_Host_ResetDevice+0x1e>\r
+                        *  host and attached device may occur.\r
+                        */\r
+                       static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_ResumeBus(void)\r
+                       {\r
+                               UHCON |=  (1 << SOFEN);\r
+     7fc:      20 91 9e 00     lds     r18, 0x009E\r
+     800:      21 60           ori     r18, 0x01       ; 1\r
+     802:      20 93 9e 00     sts     0x009E, r18\r
+                                       case USB_INT_RXSTPI:\r
+                                               return (UEIENX & (1 << RXSTPE));\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHIEN  & (1 << HSOFE));\r
+     806:      20 91 a0 00     lds     r18, 0x00A0\r
+     80a:      30 e0           ldi     r19, 0x00       ; 0\r
+     80c:      20 72           andi    r18, 0x20       ; 32\r
+     80e:      30 70           andi    r19, 0x00       ; 0\r
+                                               UEIENX &= ~(1 << RXSTPE);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHIEN  &= ~(1 << HSOFE);\r
+     810:      40 91 a0 00     lds     r20, 0x00A0\r
+     814:      4f 7d           andi    r20, 0xDF       ; 223\r
+     816:      40 93 a0 00     sts     0x00A0, r20\r
+                                               UEINTX &= ~(1 << RXSTPI);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHINT  &= ~(1 << HSOFI);\r
+     81a:      40 91 9f 00     lds     r20, 0x009F\r
+     81e:      4f 7d           andi    r20, 0xDF       ; 223\r
+     820:      40 93 9f 00     sts     0x009F, r20\r
+     824:      4a e0           ldi     r20, 0x0A       ; 10\r
+                                       case USB_INT_RXSTPI:\r
+                                               return (UEINTX & (1 << RXSTPI));\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHINT  & (1 << HSOFI));\r
+     826:      50 91 9f 00     lds     r21, 0x009F\r
+               /* Workaround for powerless-pull-up devices. After a USB bus reset,\r
+                  all disconnection interrupts are suppressed while a USB frame is\r
+                  looked for - if it is found within 10ms, the device is still\r
+                  present.                                                        */\r
+\r
+               if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
+     82a:      55 ff           sbrs    r21, 5\r
+     82c:      0b c0           rjmp    .+22            ; 0x844 <USB_Host_ResetDevice+0x6e>\r
+                                               UEINTX &= ~(1 << RXSTPI);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHINT  &= ~(1 << HSOFI);\r
+     82e:      40 91 9f 00     lds     r20, 0x009F\r
+     832:      4f 7d           andi    r20, 0xDF       ; 223\r
+     834:      40 93 9f 00     sts     0x009F, r20\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHINT  &= ~(1 << DCONNI);\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               UHINT  &= ~(1 << DDISCI);\r
+     838:      40 91 9f 00     lds     r20, 0x009F\r
+     83c:      4d 7f           andi    r20, 0xFD       ; 253\r
+     83e:      40 93 9f 00     sts     0x009F, r20\r
+     842:      08 c0           rjmp    .+16            ; 0x854 <USB_Host_ResetDevice+0x7e>\r
+       #else\r
+               //round up by default\r
+               __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));\r
+       #endif\r
+\r
+       __builtin_avr_delay_cycles(__ticks_dc);\r
+     844:      ef ec           ldi     r30, 0xCF       ; 207\r
+     846:      f7 e0           ldi     r31, 0x07       ; 7\r
+     848:      31 97           sbiw    r30, 0x01       ; 1\r
+     84a:      f1 f7           brne    .-4             ; 0x848 <USB_Host_ResetDevice+0x72>\r
+     84c:      00 c0           rjmp    .+0             ; 0x84e <USB_Host_ResetDevice+0x78>\r
+     84e:      00 00           nop\r
+     850:      41 50           subi    r20, 0x01       ; 1\r
+       bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI);\r
+\r
+       USB_INT_Disable(USB_INT_HSOFI);\r
+       USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+       for (uint8_t MSRem = 10; MSRem != 0; MSRem--)\r
+     852:      49 f7           brne    .-46            ; 0x826 <USB_Host_ResetDevice+0x50>\r
+               }\r
+\r
+               Delay_MS(1);\r
+       }\r
+\r
+       if (HSOFIEnabled)\r
+     854:      21 15           cp      r18, r1\r
+     856:      31 05           cpc     r19, r1\r
+     858:      29 f0           breq    .+10            ; 0x864 <USB_Host_ResetDevice+0x8e>\r
+                                               UEIENX |= (1 << RXSTPE);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHIEN  |= (1 << HSOFE);\r
+     85a:      20 91 a0 00     lds     r18, 0x00A0\r
+     85e:      20 62           ori     r18, 0x20       ; 32\r
+     860:      20 93 a0 00     sts     0x00A0, r18\r
+         USB_INT_Enable(USB_INT_HSOFI);\r
+\r
+       if (BusSuspended)\r
+     864:      00 97           sbiw    r24, 0x00       ; 0\r
+     866:      29 f4           brne    .+10            ; 0x872 <USB_Host_ResetDevice+0x9c>\r
+                        *  messages to the device.\r
+                        */\r
+                       static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_SuspendBus(void)\r
+                       {\r
+                               UHCON &= ~(1 << SOFEN);\r
+     868:      80 91 9e 00     lds     r24, 0x009E\r
+     86c:      8e 7f           andi    r24, 0xFE       ; 254\r
+     86e:      80 93 9e 00     sts     0x009E, r24\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHIEN  |= (1 << DCONNE);\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               UHIEN  |= (1 << DDISCE);\r
+     872:      80 91 a0 00     lds     r24, 0x00A0\r
+     876:      82 60           ori     r24, 0x02       ; 2\r
+     878:      80 93 a0 00     sts     0x00A0, r24\r
+         USB_Host_SuspendBus();\r
+\r
+       USB_INT_Enable(USB_INT_DDISCI);\r
+}\r
+     87c:      08 95           ret\r
+\r
+0000087e <USB_Host_WaitMS>:\r
+                        *  \return Boolean \c true if the bus is currently suspended, \c false otherwise.\r
+                        */\r
+                       static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool USB_Host_IsBusSuspended(void)\r
+                       {\r
+                               return ((UHCON & (1 << SOFEN)) ? false : true);\r
+     87e:      40 91 9e 00     lds     r20, 0x009E\r
+     882:      50 e0           ldi     r21, 0x00       ; 0\r
+     884:      41 70           andi    r20, 0x01       ; 1\r
+     886:      50 70           andi    r21, 0x00       ; 0\r
+                                       case USB_INT_RXSTPI:\r
+                                               return (UEIENX & (1 << RXSTPE));\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHIEN  & (1 << HSOFE));\r
+     888:      20 91 a0 00     lds     r18, 0x00A0\r
+     88c:      30 e0           ldi     r19, 0x00       ; 0\r
+     88e:      20 72           andi    r18, 0x20       ; 32\r
+     890:      30 70           andi    r19, 0x00       ; 0\r
+                                               UEIENX &= ~(1 << RXSTPE);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHIEN  &= ~(1 << HSOFE);\r
+     892:      90 91 a0 00     lds     r25, 0x00A0\r
+     896:      9f 7d           andi    r25, 0xDF       ; 223\r
+     898:      90 93 a0 00     sts     0x00A0, r25\r
+                                               UEINTX &= ~(1 << RXSTPI);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHINT  &= ~(1 << HSOFI);\r
+     89c:      90 91 9f 00     lds     r25, 0x009F\r
+     8a0:      9f 7d           andi    r25, 0xDF       ; 223\r
+     8a2:      90 93 9f 00     sts     0x009F, r25\r
+                        *  host and attached device may occur.\r
+                        */\r
+                       static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_ResumeBus(void)\r
+                       {\r
+                               UHCON |=  (1 << SOFEN);\r
+     8a6:      90 91 9e 00     lds     r25, 0x009E\r
+     8aa:      91 60           ori     r25, 0x01       ; 1\r
+     8ac:      90 93 9e 00     sts     0x009E, r25\r
+       USB_INT_Disable(USB_INT_HSOFI);\r
+       USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+       USB_Host_ResumeBus();\r
+\r
+       while (MS)\r
+     8b0:      26 c0           rjmp    .+76            ; 0x8fe <USB_Host_WaitMS+0x80>\r
+                                       case USB_INT_RXSTPI:\r
+                                               return (UEINTX & (1 << RXSTPI));\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHINT  & (1 << HSOFI));\r
+     8b2:      90 91 9f 00     lds     r25, 0x009F\r
+       {\r
+               if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
+     8b6:      95 ff           sbrs    r25, 5\r
+     8b8:      06 c0           rjmp    .+12            ; 0x8c6 <USB_Host_WaitMS+0x48>\r
+                                               UEINTX &= ~(1 << RXSTPI);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHINT  &= ~(1 << HSOFI);\r
+     8ba:      90 91 9f 00     lds     r25, 0x009F\r
+     8be:      9f 7d           andi    r25, 0xDF       ; 223\r
+     8c0:      90 93 9f 00     sts     0x009F, r25\r
+               {\r
+                       USB_INT_Clear(USB_INT_HSOFI);\r
+                       MS--;\r
+     8c4:      81 50           subi    r24, 0x01       ; 1\r
+               }\r
+\r
+               if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host))\r
+     8c6:      90 91 2b 01     lds     r25, 0x012B\r
+     8ca:      92 30           cpi     r25, 0x02       ; 2\r
+     8cc:      d9 f0           breq    .+54            ; 0x904 <USB_Host_WaitMS+0x86>\r
+                        *  \return Boolean \c true if an error has occurred on the selected pipe, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsError(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsError(void)\r
+                       {\r
+                               return ((UPINTX & (1 << PERRI)) ? true : false);\r
+     8ce:      90 91 a6 00     lds     r25, 0x00A6\r
+                       ErrorCode = HOST_WAITERROR_DeviceDisconnect;\r
+\r
+                       break;\r
+               }\r
+\r
+               if (Pipe_IsError() == true)\r
+     8d2:      94 ff           sbrs    r25, 4\r
+     8d4:      09 c0           rjmp    .+18            ; 0x8e8 <USB_Host_WaitMS+0x6a>\r
+\r
+                       /** Clears the error flags for the currently selected pipe. */\r
+                       static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearError(void)\r
+                       {\r
+                               UPERRX = 0;\r
+     8d6:      10 92 f5 00     sts     0x00F5, r1\r
+                               UPINTX &= ~(1 << PERRI);\r
+     8da:      80 91 a6 00     lds     r24, 0x00A6\r
+     8de:      8f 7e           andi    r24, 0xEF       ; 239\r
+     8e0:      80 93 a6 00     sts     0x00A6, r24\r
+               {\r
+                       Pipe_ClearError();\r
+                       ErrorCode = HOST_WAITERROR_PipeError;\r
+     8e4:      82 e0           ldi     r24, 0x02       ; 2\r
+\r
+                       break;\r
+     8e6:      0f c0           rjmp    .+30            ; 0x906 <USB_Host_WaitMS+0x88>\r
+                        *  \return Boolean \c true if the current pipe has been stalled by the attached device, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsStalled(void)\r
+                       {\r
+                               return ((UPINTX & (1 << RXSTALLI)) ? true : false);\r
+     8e8:      90 91 a6 00     lds     r25, 0x00A6\r
+               }\r
+\r
+               if (Pipe_IsStalled() == true)\r
+     8ec:      91 ff           sbrs    r25, 1\r
+     8ee:      07 c0           rjmp    .+14            ; 0x8fe <USB_Host_WaitMS+0x80>\r
+                        *  \ingroup Group_PipePacketManagement_AVR8\r
+                        */\r
+                       static inline void Pipe_ClearStall(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearStall(void)\r
+                       {\r
+                               UPINTX &= ~(1 << RXSTALLI);\r
+     8f0:      80 91 a6 00     lds     r24, 0x00A6\r
+     8f4:      8d 7f           andi    r24, 0xFD       ; 253\r
+     8f6:      80 93 a6 00     sts     0x00A6, r24\r
+               {\r
+                       Pipe_ClearStall();\r
+                       ErrorCode = HOST_WAITERROR_SetupStalled;\r
+     8fa:      83 e0           ldi     r24, 0x03       ; 3\r
+\r
+                       break;\r
+     8fc:      04 c0           rjmp    .+8             ; 0x906 <USB_Host_WaitMS+0x88>\r
+       USB_INT_Disable(USB_INT_HSOFI);\r
+       USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+       USB_Host_ResumeBus();\r
+\r
+       while (MS)\r
+     8fe:      88 23           and     r24, r24\r
+     900:      c1 f6           brne    .-80            ; 0x8b2 <USB_Host_WaitMS+0x34>\r
+     902:      01 c0           rjmp    .+2             ; 0x906 <USB_Host_WaitMS+0x88>\r
+                       MS--;\r
+               }\r
+\r
+               if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host))\r
+               {\r
+                       ErrorCode = HOST_WAITERROR_DeviceDisconnect;\r
+     904:      81 e0           ldi     r24, 0x01       ; 1\r
+\r
+                       break;\r
+               }\r
+       }\r
+\r
+       if (BusSuspended)\r
+     906:      41 15           cp      r20, r1\r
+     908:      51 05           cpc     r21, r1\r
+     90a:      29 f4           brne    .+10            ; 0x916 <USB_Host_WaitMS+0x98>\r
+                        *  messages to the device.\r
+                        */\r
+                       static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_SuspendBus(void)\r
+                       {\r
+                               UHCON &= ~(1 << SOFEN);\r
+     90c:      90 91 9e 00     lds     r25, 0x009E\r
+     910:      9e 7f           andi    r25, 0xFE       ; 254\r
+     912:      90 93 9e 00     sts     0x009E, r25\r
+         USB_Host_SuspendBus();\r
+\r
+       if (HSOFIEnabled)\r
+     916:      21 15           cp      r18, r1\r
+     918:      31 05           cpc     r19, r1\r
+     91a:      29 f0           breq    .+10            ; 0x926 <USB_Host_WaitMS+0xa8>\r
+                                               UEIENX |= (1 << RXSTPE);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHIEN  |= (1 << HSOFE);\r
+     91c:      90 91 a0 00     lds     r25, 0x00A0\r
+     920:      90 62           ori     r25, 0x20       ; 32\r
+     922:      90 93 a0 00     sts     0x00A0, r25\r
+         USB_INT_Enable(USB_INT_HSOFI);\r
+\r
+       return ErrorCode;\r
+}\r
+     926:      08 95           ret\r
+\r
+00000928 <USB_Host_ProcessNextHostState>:\r
+\r
+#define  __INCLUDE_FROM_HOST_C\r
+#include "../Host.h"\r
+\r
+void USB_Host_ProcessNextHostState(void)\r
+{\r
+     928:      ef 92           push    r14\r
+     92a:      0f 93           push    r16\r
+     92c:      1f 93           push    r17\r
+     92e:      df 93           push    r29\r
+     930:      cf 93           push    r28\r
+     932:      cd b7           in      r28, 0x3d       ; 61\r
+     934:      de b7           in      r29, 0x3e       ; 62\r
+     936:      28 97           sbiw    r28, 0x08       ; 8\r
+     938:      0f b6           in      r0, 0x3f        ; 63\r
+     93a:      f8 94           cli\r
+     93c:      de bf           out     0x3e, r29       ; 62\r
+     93e:      0f be           out     0x3f, r0        ; 63\r
+     940:      cd bf           out     0x3d, r28       ; 61\r
+       uint8_t SubErrorCode = HOST_ENUMERROR_NoError;\r
+\r
+       static uint16_t WaitMSRemaining;\r
+       static uint8_t  PostWaitState;\r
+\r
+       switch (USB_HostState)\r
+     942:      80 91 2b 01     lds     r24, 0x012B\r
+     946:      86 30           cpi     r24, 0x06       ; 6\r
+     948:      09 f4           brne    .+2             ; 0x94c <USB_Host_ProcessNextHostState+0x24>\r
+     94a:      99 c0           rjmp    .+306           ; 0xa7e <USB_Host_ProcessNextHostState+0x156>\r
+     94c:      87 30           cpi     r24, 0x07       ; 7\r
+     94e:      70 f4           brcc    .+28            ; 0x96c <USB_Host_ProcessNextHostState+0x44>\r
+     950:      83 30           cpi     r24, 0x03       ; 3\r
+     952:      c9 f1           breq    .+114           ; 0x9c6 <USB_Host_ProcessNextHostState+0x9e>\r
+     954:      84 30           cpi     r24, 0x04       ; 4\r
+     956:      20 f4           brcc    .+8             ; 0x960 <USB_Host_ProcessNextHostState+0x38>\r
+     958:      81 30           cpi     r24, 0x01       ; 1\r
+     95a:      09 f0           breq    .+2             ; 0x95e <USB_Host_ProcessNextHostState+0x36>\r
+     95c:      0b c1           rjmp    .+534           ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+     95e:      13 c0           rjmp    .+38            ; 0x986 <USB_Host_ProcessNextHostState+0x5e>\r
+     960:      84 30           cpi     r24, 0x04       ; 4\r
+     962:      c9 f1           breq    .+114           ; 0x9d6 <USB_Host_ProcessNextHostState+0xae>\r
+     964:      85 30           cpi     r24, 0x05       ; 5\r
+     966:      09 f0           breq    .+2             ; 0x96a <USB_Host_ProcessNextHostState+0x42>\r
+     968:      05 c1           rjmp    .+522           ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+     96a:      60 c0           rjmp    .+192           ; 0xa2c <USB_Host_ProcessNextHostState+0x104>\r
+     96c:      88 30           cpi     r24, 0x08       ; 8\r
+     96e:      09 f4           brne    .+2             ; 0x972 <USB_Host_ProcessNextHostState+0x4a>\r
+     970:      a0 c0           rjmp    .+320           ; 0xab2 <USB_Host_ProcessNextHostState+0x18a>\r
+     972:      88 30           cpi     r24, 0x08       ; 8\r
+     974:      08 f4           brcc    .+2             ; 0x978 <USB_Host_ProcessNextHostState+0x50>\r
+     976:      8f c0           rjmp    .+286           ; 0xa96 <USB_Host_ProcessNextHostState+0x16e>\r
+     978:      89 30           cpi     r24, 0x09       ; 9\r
+     97a:      09 f4           brne    .+2             ; 0x97e <USB_Host_ProcessNextHostState+0x56>\r
+     97c:      b9 c0           rjmp    .+370           ; 0xaf0 <USB_Host_ProcessNextHostState+0x1c8>\r
+     97e:      8a 30           cpi     r24, 0x0A       ; 10\r
+     980:      09 f0           breq    .+2             ; 0x984 <USB_Host_ProcessNextHostState+0x5c>\r
+     982:      f8 c0           rjmp    .+496           ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+     984:      de c0           rjmp    .+444           ; 0xb42 <USB_Host_ProcessNextHostState+0x21a>\r
+       {\r
+               case HOST_STATE_WaitForDevice:\r
+                       if (WaitMSRemaining)\r
+     986:      00 91 20 01     lds     r16, 0x0120\r
+     98a:      10 91 21 01     lds     r17, 0x0121\r
+     98e:      01 15           cp      r16, r1\r
+     990:      11 05           cpc     r17, r1\r
+     992:      09 f4           brne    .+2             ; 0x996 <USB_Host_ProcessNextHostState+0x6e>\r
+     994:      ef c0           rjmp    .+478           ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+                       {\r
+                               if ((SubErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+     996:      81 e0           ldi     r24, 0x01       ; 1\r
+     998:      72 df           rcall   .-284           ; 0x87e <USB_Host_WaitMS>\r
+     99a:      68 2f           mov     r22, r24\r
+     99c:      88 23           and     r24, r24\r
+     99e:      31 f0           breq    .+12            ; 0x9ac <USB_Host_ProcessNextHostState+0x84>\r
+                               {\r
+                                       USB_HostState = PostWaitState;\r
+     9a0:      80 91 1f 01     lds     r24, 0x011F\r
+     9a4:      80 93 2b 01     sts     0x012B, r24\r
+                                       ErrorCode     = HOST_ENUMERROR_WaitStage;\r
+     9a8:      81 e0           ldi     r24, 0x01       ; 1\r
+                                       break;\r
+     9aa:      e0 c0           rjmp    .+448           ; 0xb6c <USB_Host_ProcessNextHostState+0x244>\r
+                               }\r
+\r
+                               if (!(--WaitMSRemaining))\r
+     9ac:      01 50           subi    r16, 0x01       ; 1\r
+     9ae:      10 40           sbci    r17, 0x00       ; 0\r
+     9b0:      10 93 21 01     sts     0x0121, r17\r
+     9b4:      00 93 20 01     sts     0x0120, r16\r
+     9b8:      01 15           cp      r16, r1\r
+     9ba:      11 05           cpc     r17, r1\r
+     9bc:      09 f0           breq    .+2             ; 0x9c0 <USB_Host_ProcessNextHostState+0x98>\r
+     9be:      da c0           rjmp    .+436           ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+                                 USB_HostState = PostWaitState;\r
+     9c0:      80 91 1f 01     lds     r24, 0x011F\r
+     9c4:      c3 c0           rjmp    .+390           ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+                       }\r
+\r
+                       break;\r
+               case HOST_STATE_Powered:\r
+                       WaitMSRemaining = HOST_DEVICE_SETTLE_DELAY_MS;\r
+     9c6:      88 ee           ldi     r24, 0xE8       ; 232\r
+     9c8:      93 e0           ldi     r25, 0x03       ; 3\r
+     9ca:      90 93 21 01     sts     0x0121, r25\r
+     9ce:      80 93 20 01     sts     0x0120, r24\r
+\r
+                       USB_HostState = HOST_STATE_Powered_WaitForDeviceSettle;\r
+     9d2:      84 e0           ldi     r24, 0x04       ; 4\r
+     9d4:      bb c0           rjmp    .+374           ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+                       break;\r
+               case HOST_STATE_Powered_WaitForDeviceSettle:\r
+                       if (WaitMSRemaining--)\r
+     9d6:      80 91 20 01     lds     r24, 0x0120\r
+     9da:      90 91 21 01     lds     r25, 0x0121\r
+     9de:      9c 01           movw    r18, r24\r
+     9e0:      21 50           subi    r18, 0x01       ; 1\r
+     9e2:      30 40           sbci    r19, 0x00       ; 0\r
+     9e4:      30 93 21 01     sts     0x0121, r19\r
+     9e8:      20 93 20 01     sts     0x0120, r18\r
+     9ec:      00 97           sbiw    r24, 0x00       ; 0\r
+     9ee:      39 f0           breq    .+14            ; 0x9fe <USB_Host_ProcessNextHostState+0xd6>\r
+     9f0:      8f ec           ldi     r24, 0xCF       ; 207\r
+     9f2:      97 e0           ldi     r25, 0x07       ; 7\r
+     9f4:      01 97           sbiw    r24, 0x01       ; 1\r
+     9f6:      f1 f7           brne    .-4             ; 0x9f4 <USB_Host_ProcessNextHostState+0xcc>\r
+     9f8:      00 c0           rjmp    .+0             ; 0x9fa <USB_Host_ProcessNextHostState+0xd2>\r
+     9fa:      00 00           nop\r
+     9fc:      bb c0           rjmp    .+374           ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Manual_Off(void)\r
+                       {\r
+                               PORTE  &= ~(1 << 7);\r
+     9fe:      77 98           cbi     0x0e, 7 ; 14\r
+\r
+                       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+                       static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_OTGPAD_On(void)\r
+                       {\r
+                               USBCON  |=  (1 << OTGPADE);\r
+     a00:      80 91 d8 00     lds     r24, 0x00D8\r
+     a04:      80 61           ori     r24, 0x10       ; 16\r
+     a06:      80 93 d8 00     sts     0x00D8, r24\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Auto_Enable(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Auto_Enable(void)\r
+                       {\r
+                               OTGCON &= ~(1 << VBUSHWC);\r
+     a0a:      80 91 dd 00     lds     r24, 0x00DD\r
+     a0e:      8b 7f           andi    r24, 0xFB       ; 251\r
+     a10:      80 93 dd 00     sts     0x00DD, r24\r
+                               UHWCON |=  (1 << UVCONE);\r
+     a14:      80 91 d7 00     lds     r24, 0x00D7\r
+     a18:      80 61           ori     r24, 0x10       ; 16\r
+     a1a:      80 93 d7 00     sts     0x00D7, r24\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Auto_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Auto_On(void)\r
+                       {\r
+                               OTGCON |=  (1 << VBUSREQ);\r
+     a1e:      80 91 dd 00     lds     r24, 0x00DD\r
+     a22:      82 60           ori     r24, 0x02       ; 2\r
+     a24:      80 93 dd 00     sts     0x00DD, r24\r
+\r
+                               USB_OTGPAD_On();\r
+                               USB_Host_VBUS_Auto_Enable();\r
+                               USB_Host_VBUS_Auto_On();\r
+\r
+                               USB_HostState = HOST_STATE_Powered_WaitForConnect;\r
+     a28:      85 e0           ldi     r24, 0x05       ; 5\r
+     a2a:      90 c0           rjmp    .+288           ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHINT  & (1 << HSOFI));\r
+                                       case USB_INT_DCONNI:\r
+                                               return (UHINT  & (1 << DCONNI));\r
+     a2c:      80 91 9f 00     lds     r24, 0x009F\r
+                       }\r
+\r
+                       break;\r
+               case HOST_STATE_Powered_WaitForConnect:\r
+                       if (USB_INT_HasOccurred(USB_INT_DCONNI))\r
+     a30:      80 ff           sbrs    r24, 0\r
+     a32:      a0 c0           rjmp    .+320           ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHINT  &= ~(1 << HSOFI);\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHINT  &= ~(1 << DCONNI);\r
+     a34:      80 91 9f 00     lds     r24, 0x009F\r
+     a38:      8e 7f           andi    r24, 0xFE       ; 254\r
+     a3a:      80 93 9f 00     sts     0x009F, r24\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               UHINT  &= ~(1 << DDISCI);\r
+     a3e:      80 91 9f 00     lds     r24, 0x009F\r
+     a42:      8d 7f           andi    r24, 0xFD       ; 253\r
+     a44:      80 93 9f 00     sts     0x009F, r24\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               OTGINT &= ~(1 << BCERRI);\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               OTGINT &= ~(1 << VBERRI);\r
+     a48:      80 91 df 00     lds     r24, 0x00DF\r
+     a4c:      8d 7f           andi    r24, 0xFD       ; 253\r
+     a4e:      80 93 df 00     sts     0x00DF, r24\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               OTGIEN |= (1 << BCERRE);\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               OTGIEN |= (1 << VBERRE);\r
+     a52:      80 91 de 00     lds     r24, 0x00DE\r
+     a56:      82 60           ori     r24, 0x02       ; 2\r
+     a58:      80 93 de 00     sts     0x00DE, r24\r
+                        *  host and attached device may occur.\r
+                        */\r
+                       static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_ResumeBus(void)\r
+                       {\r
+                               UHCON |=  (1 << SOFEN);\r
+     a5c:      80 91 9e 00     lds     r24, 0x009E\r
+     a60:      81 60           ori     r24, 0x01       ; 1\r
+     a62:      80 93 9e 00     sts     0x009E, r24\r
+\r
+                               USB_INT_Clear(USB_INT_VBERRI);\r
+                               USB_INT_Enable(USB_INT_VBERRI);\r
+\r
+                               USB_Host_ResumeBus();\r
+                               Pipe_ClearPipes();\r
+     a66:      26 d1           rcall   .+588           ; 0xcb4 <Pipe_ClearPipes>\r
+\r
+                               HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Powered_DoReset);\r
+     a68:      81 e0           ldi     r24, 0x01       ; 1\r
+     a6a:      80 93 2b 01     sts     0x012B, r24\r
+     a6e:      84 e6           ldi     r24, 0x64       ; 100\r
+     a70:      90 e0           ldi     r25, 0x00       ; 0\r
+     a72:      90 93 21 01     sts     0x0121, r25\r
+     a76:      80 93 20 01     sts     0x0120, r24\r
+     a7a:      86 e0           ldi     r24, 0x06       ; 6\r
+     a7c:      5f c0           rjmp    .+190           ; 0xb3c <USB_Host_ProcessNextHostState+0x214>\r
+                       }\r
+\r
+                       break;\r
+               case HOST_STATE_Powered_DoReset:\r
+                       USB_Host_ResetDevice();\r
+     a7e:      ab de           rcall   .-682           ; 0x7d6 <USB_Host_ResetDevice>\r
+\r
+                       HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Powered_ConfigPipe);\r
+     a80:      81 e0           ldi     r24, 0x01       ; 1\r
+     a82:      80 93 2b 01     sts     0x012B, r24\r
+     a86:      88 ec           ldi     r24, 0xC8       ; 200\r
+     a88:      90 e0           ldi     r25, 0x00       ; 0\r
+     a8a:      90 93 21 01     sts     0x0121, r25\r
+     a8e:      80 93 20 01     sts     0x0120, r24\r
+     a92:      87 e0           ldi     r24, 0x07       ; 7\r
+     a94:      53 c0           rjmp    .+166           ; 0xb3c <USB_Host_ProcessNextHostState+0x214>\r
+                       break;\r
+               case HOST_STATE_Powered_ConfigPipe:\r
+                       Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
+     a96:      80 e0           ldi     r24, 0x00       ; 0\r
+     a98:      60 e0           ldi     r22, 0x00       ; 0\r
+     a9a:      40 e0           ldi     r20, 0x00       ; 0\r
+     a9c:      20 e0           ldi     r18, 0x00       ; 0\r
+     a9e:      00 e4           ldi     r16, 0x40       ; 64\r
+     aa0:      10 e0           ldi     r17, 0x00       ; 0\r
+     aa2:      ee 24           eor     r14, r14\r
+     aa4:      a0 d0           rcall   .+320           ; 0xbe6 <Pipe_ConfigurePipe>\r
+                        *  \return Boolean \c true if the selected pipe is configured, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsConfigured(void)\r
+                       {\r
+                               return ((UPSTAX & (1 << CFGOK)) ? true : false);\r
+     aa6:      80 91 ac 00     lds     r24, 0x00AC\r
+                                                          PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
+                                                          PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE);\r
+\r
+                       if (!(Pipe_IsConfigured()))\r
+     aaa:      87 ff           sbrs    r24, 7\r
+     aac:      5b c0           rjmp    .+182           ; 0xb64 <USB_Host_ProcessNextHostState+0x23c>\r
+                               ErrorCode    = HOST_ENUMERROR_PipeConfigError;\r
+                               SubErrorCode = 0;\r
+                               break;\r
+                       }\r
+\r
+                       USB_HostState = HOST_STATE_Default;\r
+     aae:      88 e0           ldi     r24, 0x08       ; 8\r
+     ab0:      4d c0           rjmp    .+154           ; 0xb4c <USB_Host_ProcessNextHostState+0x224>\r
+                       break;\r
+               case HOST_STATE_Default:\r
+                       USB_ControlRequest = (USB_Request_Header_t)\r
+     ab2:      a3 e2           ldi     r26, 0x23       ; 35\r
+     ab4:      b1 e0           ldi     r27, 0x01       ; 1\r
+     ab6:      e3 e1           ldi     r30, 0x13       ; 19\r
+     ab8:      f1 e0           ldi     r31, 0x01       ; 1\r
+     aba:      88 e0           ldi     r24, 0x08       ; 8\r
+     abc:      01 90           ld      r0, Z+\r
+     abe:      0d 92           st      X+, r0\r
+     ac0:      81 50           subi    r24, 0x01       ; 1\r
+     ac2:      e1 f7           brne    .-8             ; 0xabc <USB_Host_ProcessNextHostState+0x194>\r
+                                       .wLength       = 8,\r
+                               };\r
+\r
+                       uint8_t DataBuffer[8];\r
+\r
+                       if ((SubErrorCode = USB_Host_SendControlRequest(DataBuffer)) != HOST_SENDCONTROL_Successful)\r
+     ac4:      ce 01           movw    r24, r28\r
+     ac6:      01 96           adiw    r24, 0x01       ; 1\r
+     ac8:      dc d2           rcall   .+1464          ; 0x1082 <USB_Host_SendControlRequest>\r
+     aca:      68 2f           mov     r22, r24\r
+     acc:      88 23           and     r24, r24\r
+     ace:      09 f0           breq    .+2             ; 0xad2 <USB_Host_ProcessNextHostState+0x1aa>\r
+     ad0:      4c c0           rjmp    .+152           ; 0xb6a <USB_Host_ProcessNextHostState+0x242>\r
+                       {\r
+                               ErrorCode = HOST_ENUMERROR_ControlError;\r
+                               break;\r
+                       }\r
+\r
+                       USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, Endpoint0Size)];\r
+     ad2:      88 85           ldd     r24, Y+8        ; 0x08\r
+     ad4:      80 93 1b 01     sts     0x011B, r24\r
+\r
+                       USB_Host_ResetDevice();\r
+     ad8:      7e de           rcall   .-772           ; 0x7d6 <USB_Host_ResetDevice>\r
+\r
+                       HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Default_PostReset);\r
+     ada:      81 e0           ldi     r24, 0x01       ; 1\r
+     adc:      80 93 2b 01     sts     0x012B, r24\r
+     ae0:      88 ec           ldi     r24, 0xC8       ; 200\r
+     ae2:      90 e0           ldi     r25, 0x00       ; 0\r
+     ae4:      90 93 21 01     sts     0x0121, r25\r
+     ae8:      80 93 20 01     sts     0x0120, r24\r
+     aec:      89 e0           ldi     r24, 0x09       ; 9\r
+     aee:      26 c0           rjmp    .+76            ; 0xb3c <USB_Host_ProcessNextHostState+0x214>\r
+                       break;\r
+               case HOST_STATE_Default_PostReset:\r
+                       Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
+     af0:      00 91 1b 01     lds     r16, 0x011B\r
+     af4:      80 e0           ldi     r24, 0x00       ; 0\r
+     af6:      60 e0           ldi     r22, 0x00       ; 0\r
+     af8:      40 e0           ldi     r20, 0x00       ; 0\r
+     afa:      20 e0           ldi     r18, 0x00       ; 0\r
+     afc:      10 e0           ldi     r17, 0x00       ; 0\r
+     afe:      ee 24           eor     r14, r14\r
+     b00:      72 d0           rcall   .+228           ; 0xbe6 <Pipe_ConfigurePipe>\r
+     b02:      80 91 ac 00     lds     r24, 0x00AC\r
+                                          PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
+                                          USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
+\r
+                       if (!(Pipe_IsConfigured()))\r
+     b06:      87 ff           sbrs    r24, 7\r
+     b08:      2d c0           rjmp    .+90            ; 0xb64 <USB_Host_ProcessNextHostState+0x23c>\r
+                               ErrorCode    = HOST_ENUMERROR_PipeConfigError;\r
+                               SubErrorCode = 0;\r
+                               break;\r
+                       }\r
+\r
+                       USB_ControlRequest = (USB_Request_Header_t)\r
+     b0a:      a3 e2           ldi     r26, 0x23       ; 35\r
+     b0c:      b1 e0           ldi     r27, 0x01       ; 1\r
+     b0e:      eb e0           ldi     r30, 0x0B       ; 11\r
+     b10:      f1 e0           ldi     r31, 0x01       ; 1\r
+     b12:      88 e0           ldi     r24, 0x08       ; 8\r
+     b14:      01 90           ld      r0, Z+\r
+     b16:      0d 92           st      X+, r0\r
+     b18:      81 50           subi    r24, 0x01       ; 1\r
+     b1a:      e1 f7           brne    .-8             ; 0xb14 <USB_Host_ProcessNextHostState+0x1ec>\r
+                                       .wValue        = USB_HOST_DEVICEADDRESS,\r
+                                       .wIndex        = 0,\r
+                                       .wLength       = 0,\r
+                               };\r
+\r
+                       if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
+     b1c:      80 e0           ldi     r24, 0x00       ; 0\r
+     b1e:      90 e0           ldi     r25, 0x00       ; 0\r
+     b20:      b0 d2           rcall   .+1376          ; 0x1082 <USB_Host_SendControlRequest>\r
+     b22:      68 2f           mov     r22, r24\r
+     b24:      88 23           and     r24, r24\r
+     b26:      09 f5           brne    .+66            ; 0xb6a <USB_Host_ProcessNextHostState+0x242>\r
+                       {\r
+                               ErrorCode = HOST_ENUMERROR_ControlError;\r
+                               break;\r
+                       }\r
+\r
+                       HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Default_PostAddressSet);\r
+     b28:      81 e0           ldi     r24, 0x01       ; 1\r
+     b2a:      80 93 2b 01     sts     0x012B, r24\r
+     b2e:      84 e6           ldi     r24, 0x64       ; 100\r
+     b30:      90 e0           ldi     r25, 0x00       ; 0\r
+     b32:      90 93 21 01     sts     0x0121, r25\r
+     b36:      80 93 20 01     sts     0x0120, r24\r
+     b3a:      8a e0           ldi     r24, 0x0A       ; 10\r
+     b3c:      80 93 1f 01     sts     0x011F, r24\r
+                       break;\r
+     b40:      19 c0           rjmp    .+50            ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+                       }\r
+\r
+                       static inline void USB_Host_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_SetDeviceAddress(const uint8_t Address)\r
+                       {\r
+                               UHADDR  =  (Address & 0x7F);\r
+     b42:      81 e0           ldi     r24, 0x01       ; 1\r
+     b44:      80 93 a1 00     sts     0x00A1, r24\r
+               case HOST_STATE_Default_PostAddressSet:\r
+                       USB_Host_SetDeviceAddress(USB_HOST_DEVICEADDRESS);\r
+\r
+                       EVENT_USB_Host_DeviceEnumerationComplete();\r
+     b48:      24 dc           rcall   .-1976          ; 0x392 <EVENT_USB_Host_DeviceEnumerationComplete>\r
+                       USB_HostState = HOST_STATE_Addressed;\r
+     b4a:      8b e0           ldi     r24, 0x0B       ; 11\r
+     b4c:      80 93 2b 01     sts     0x012B, r24\r
+                       break;\r
+     b50:      11 c0           rjmp    .+34            ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+       }\r
+\r
+       if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached))\r
+       {\r
+               EVENT_USB_Host_DeviceEnumerationFailed(ErrorCode, SubErrorCode);\r
+     b52:      40 dc           rcall   .-1920          ; 0x3d4 <EVENT_USB_Host_DeviceEnumerationFailed>\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Auto_Off(void)\r
+                       {\r
+                               OTGCON |=  (1 << VBUSRQC);\r
+     b54:      80 91 dd 00     lds     r24, 0x00DD\r
+     b58:      81 60           ori     r24, 0x01       ; 1\r
+     b5a:      80 93 dd 00     sts     0x00DD, r24\r
+\r
+               USB_Host_VBUS_Auto_Off();\r
+\r
+               EVENT_USB_Host_DeviceUnattached();\r
+     b5e:      14 dc           rcall   .-2008          ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+               USB_ResetInterface();\r
+     b60:      d5 d0           rcall   .+426           ; 0xd0c <USB_ResetInterface>\r
+     b62:      08 c0           rjmp    .+16            ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>\r
+                                          USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
+\r
+                       if (!(Pipe_IsConfigured()))\r
+                       {\r
+                               ErrorCode    = HOST_ENUMERROR_PipeConfigError;\r
+                               SubErrorCode = 0;\r
+     b64:      60 e0           ldi     r22, 0x00       ; 0\r
+                                          PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
+                                          USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
+\r
+                       if (!(Pipe_IsConfigured()))\r
+                       {\r
+                               ErrorCode    = HOST_ENUMERROR_PipeConfigError;\r
+     b66:      84 e0           ldi     r24, 0x04       ; 4\r
+     b68:      01 c0           rjmp    .+2             ; 0xb6c <USB_Host_ProcessNextHostState+0x244>\r
+                                       .wLength       = 0,\r
+                               };\r
+\r
+                       if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
+                       {\r
+                               ErrorCode = HOST_ENUMERROR_ControlError;\r
+     b6a:      83 e0           ldi     r24, 0x03       ; 3\r
+                       EVENT_USB_Host_DeviceEnumerationComplete();\r
+                       USB_HostState = HOST_STATE_Addressed;\r
+                       break;\r
+       }\r
+\r
+       if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached))\r
+     b6c:      90 91 2b 01     lds     r25, 0x012B\r
+     b70:      92 30           cpi     r25, 0x02       ; 2\r
+     b72:      79 f7           brne    .-34            ; 0xb52 <USB_Host_ProcessNextHostState+0x22a>\r
+\r
+               EVENT_USB_Host_DeviceUnattached();\r
+\r
+               USB_ResetInterface();\r
+       }\r
+}\r
+     b74:      28 96           adiw    r28, 0x08       ; 8\r
+     b76:      0f b6           in      r0, 0x3f        ; 63\r
+     b78:      f8 94           cli\r
+     b7a:      de bf           out     0x3e, r29       ; 62\r
+     b7c:      0f be           out     0x3f, r0        ; 63\r
+     b7e:      cd bf           out     0x3d, r28       ; 61\r
+     b80:      cf 91           pop     r28\r
+     b82:      df 91           pop     r29\r
+     b84:      1f 91           pop     r17\r
+     b86:      0f 91           pop     r16\r
+     b88:      ef 90           pop     r14\r
+     b8a:      08 95           ret\r
+\r
+00000b8c <USB_Host_SetDeviceConfiguration>:\r
+       USB_INT_Enable(USB_INT_DDISCI);\r
+}\r
+\r
+uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber)\r
+{\r
+       USB_ControlRequest = (USB_Request_Header_t)\r
+     b8c:      10 92 23 01     sts     0x0123, r1\r
+     b90:      99 e0           ldi     r25, 0x09       ; 9\r
+     b92:      90 93 24 01     sts     0x0124, r25\r
+     b96:      80 93 25 01     sts     0x0125, r24\r
+     b9a:      10 92 26 01     sts     0x0126, r1\r
+     b9e:      10 92 28 01     sts     0x0128, r1\r
+     ba2:      10 92 27 01     sts     0x0127, r1\r
+     ba6:      10 92 2a 01     sts     0x012A, r1\r
+     baa:      10 92 29 01     sts     0x0129, r1\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPNUM = PipeNumber;\r
+     bae:      10 92 a7 00     sts     0x00A7, r1\r
+                       .wLength       = 0,\r
+               };\r
+\r
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+       return USB_Host_SendControlRequest(NULL);\r
+     bb2:      80 e0           ldi     r24, 0x00       ; 0\r
+     bb4:      90 e0           ldi     r25, 0x00       ; 0\r
+}\r
+     bb6:      65 c2           rjmp    .+1226          ; 0x1082 <USB_Host_SendControlRequest>\r
+\r
+00000bb8 <USB_Host_SetInterfaceAltSetting>:\r
+}\r
+\r
+uint8_t USB_Host_SetInterfaceAltSetting(const uint8_t InterfaceNum,\r
+                                        const uint8_t AltSetting)\r
+{\r
+       USB_ControlRequest = (USB_Request_Header_t)\r
+     bb8:      e3 e2           ldi     r30, 0x23       ; 35\r
+     bba:      f1 e0           ldi     r31, 0x01       ; 1\r
+     bbc:      91 e0           ldi     r25, 0x01       ; 1\r
+     bbe:      90 93 23 01     sts     0x0123, r25\r
+     bc2:      9b e0           ldi     r25, 0x0B       ; 11\r
+     bc4:      90 93 24 01     sts     0x0124, r25\r
+     bc8:      60 93 25 01     sts     0x0125, r22\r
+     bcc:      13 82           std     Z+3, r1 ; 0x03\r
+     bce:      80 93 27 01     sts     0x0127, r24\r
+     bd2:      15 82           std     Z+5, r1 ; 0x05\r
+     bd4:      10 92 2a 01     sts     0x012A, r1\r
+     bd8:      10 92 29 01     sts     0x0129, r1\r
+     bdc:      10 92 a7 00     sts     0x00A7, r1\r
+                       .wLength       = 0,\r
+               };\r
+\r
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+       return USB_Host_SendControlRequest(NULL);\r
+     be0:      80 e0           ldi     r24, 0x00       ; 0\r
+     be2:      90 e0           ldi     r25, 0x00       ; 0\r
+}\r
+     be4:      4e c2           rjmp    .+1180          ; 0x1082 <USB_Host_SendControlRequest>\r
+\r
+00000be6 <Pipe_ConfigurePipe>:\r
+                        const uint8_t Type,\r
+                        const uint8_t Token,\r
+                        const uint8_t EndpointNumber,\r
+                        const uint16_t Size,\r
+                        const uint8_t Banks)\r
+{\r
+     be6:      ef 92           push    r14\r
+     be8:      0f 93           push    r16\r
+     bea:      1f 93           push    r17\r
+     bec:      5e 2d           mov     r21, r14\r
+\r
+               Pipe_SelectPipe(PNum);\r
+               \r
+               if (PNum == Number)\r
+               {\r
+                       UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+     bee:      62 95           swap    r22\r
+     bf0:      66 0f           add     r22, r22\r
+     bf2:      66 0f           add     r22, r22\r
+     bf4:      60 7c           andi    r22, 0xC0       ; 192\r
+     bf6:      64 2b           or      r22, r20\r
+     bf8:      2f 70           andi    r18, 0x0F       ; 15\r
+     bfa:      62 2b           or      r22, r18\r
+\r
+       Pipe_SetInfiniteINRequests();\r
+\r
+       return Pipe_IsConfigured();\r
+#else  \r
+       for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+     bfc:      98 2f           mov     r25, r24\r
+               Pipe_SelectPipe(PNum);\r
+               \r
+               if (PNum == Number)\r
+               {\r
+                       UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+                       UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+     bfe:      52 60           ori     r21, 0x02       ; 2\r
+\r
+       Pipe_SetInfiniteINRequests();\r
+\r
+       return Pipe_IsConfigured();\r
+#else  \r
+       for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+     c00:      4d c0           rjmp    .+154           ; 0xc9c <Pipe_ConfigurePipe+0xb6>\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPNUM = PipeNumber;\r
+     c02:      90 93 a7 00     sts     0x00A7, r25\r
+               uint8_t UPINRQXTemp;\r
+               uint8_t UPIENXTemp;\r
+\r
+               Pipe_SelectPipe(PNum);\r
+               \r
+               if (PNum == Number)\r
+     c06:      98 17           cp      r25, r24\r
+     c08:      b1 f4           brne    .+44            ; 0xc36 <Pipe_ConfigurePipe+0x50>\r
+     c0a:      28 e0           ldi     r18, 0x08       ; 8\r
+     c0c:      30 e0           ldi     r19, 0x00       ; 0\r
+     c0e:      40 e0           ldi     r20, 0x00       ; 0\r
+     c10:      03 c0           rjmp    .+6             ; 0xc18 <Pipe_ConfigurePipe+0x32>\r
+                               uint8_t  MaskVal    = 0;\r
+                               uint16_t CheckBytes = 8;\r
+\r
+                               while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))\r
+                               {\r
+                                       MaskVal++;\r
+     c12:      4f 5f           subi    r20, 0xFF       ; 255\r
+                                       CheckBytes <<= 1;\r
+     c14:      22 0f           add     r18, r18\r
+     c16:      33 1f           adc     r19, r19\r
+                       static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)\r
+                       {\r
+                               uint8_t  MaskVal    = 0;\r
+                               uint16_t CheckBytes = 8;\r
+\r
+                               while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))\r
+     c18:      20 17           cp      r18, r16\r
+     c1a:      31 07           cpc     r19, r17\r
+     c1c:      10 f4           brcc    .+4             ; 0xc22 <Pipe_ConfigurePipe+0x3c>\r
+     c1e:      45 30           cpi     r20, 0x05       ; 5\r
+     c20:      c1 f7           brne    .-16            ; 0xc12 <Pipe_ConfigurePipe+0x2c>\r
+                               {\r
+                                       MaskVal++;\r
+                                       CheckBytes <<= 1;\r
+                               }\r
+\r
+                               return (MaskVal << EPSIZE0);\r
+     c22:      24 2f           mov     r18, r20\r
+     c24:      22 95           swap    r18\r
+     c26:      20 7f           andi    r18, 0xF0       ; 240\r
+               {\r
+                       UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+                       UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+     c28:      25 2b           or      r18, r21\r
+\r
+               Pipe_SelectPipe(PNum);\r
+               \r
+               if (PNum == Number)\r
+               {\r
+                       UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+     c2a:      a6 2f           mov     r26, r22\r
+                       UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+                       UPCFG2XTemp = 0;\r
+                       UPCONXTemp  = ((1 << PEN) | (1 << INMODE));\r
+                       UPINRQXTemp = 0;\r
+                       UPIENXTemp  = 0;\r
+     c2c:      40 e0           ldi     r20, 0x00       ; 0\r
+               {\r
+                       UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+                       UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+                       UPCFG2XTemp = 0;\r
+                       UPCONXTemp  = ((1 << PEN) | (1 << INMODE));\r
+                       UPINRQXTemp = 0;\r
+     c2e:      70 e0           ldi     r23, 0x00       ; 0\r
+               if (PNum == Number)\r
+               {\r
+                       UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+                       UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+                       UPCFG2XTemp = 0;\r
+                       UPCONXTemp  = ((1 << PEN) | (1 << INMODE));\r
+     c30:      e1 e2           ldi     r30, 0x21       ; 33\r
+               \r
+               if (PNum == Number)\r
+               {\r
+                       UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));\r
+                       UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));\r
+                       UPCFG2XTemp = 0;\r
+     c32:      f0 e0           ldi     r31, 0x00       ; 0\r
+     c34:      0c c0           rjmp    .+24            ; 0xc4e <Pipe_ConfigurePipe+0x68>\r
+                       UPINRQXTemp = 0;\r
+                       UPIENXTemp  = 0;\r
+               }\r
+               else\r
+               {\r
+                       UPCFG0XTemp = UPCFG0X;\r
+     c36:      a0 91 aa 00     lds     r26, 0x00AA\r
+                       UPCFG1XTemp = UPCFG1X;\r
+     c3a:      20 91 ab 00     lds     r18, 0x00AB\r
+                       UPCFG2XTemp = UPCFG2X;\r
+     c3e:      f0 91 ad 00     lds     r31, 0x00AD\r
+                       UPCONXTemp  = UPCONX;\r
+     c42:      e0 91 a9 00     lds     r30, 0x00A9\r
+                       UPINRQXTemp = UPINRQX;\r
+     c46:      70 91 a5 00     lds     r23, 0x00A5\r
+                       UPIENXTemp  = UPIENX;\r
+     c4a:      40 91 ae 00     lds     r20, 0x00AE\r
+\r
+                       /** Configures the currently selected pipe to allow for an unlimited number of IN requests. */\r
+                       static inline void Pipe_SetInfiniteINRequests(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetInfiniteINRequests(void)\r
+                       {\r
+                               UPCONX |= (1 << INMODE);\r
+     c4e:      30 91 a9 00     lds     r19, 0x00A9\r
+     c52:      30 62           ori     r19, 0x20       ; 32\r
+     c54:      30 93 a9 00     sts     0x00A9, r19\r
+               }\r
+\r
+               Pipe_SetInfiniteINRequests();\r
+       \r
+               if (!(UPCFG1XTemp & (1 << ALLOC)))\r
+     c58:      21 ff           sbrs    r18, 1\r
+     c5a:      1f c0           rjmp    .+62            ; 0xc9a <Pipe_ConfigurePipe+0xb4>\r
+                        *  from an attached device.\r
+                        */\r
+                       static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_DisablePipe(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PEN);\r
+     c5c:      30 91 a9 00     lds     r19, 0x00A9\r
+     c60:      3e 7f           andi    r19, 0xFE       ; 254\r
+     c62:      30 93 a9 00     sts     0x00A9, r19\r
+                 continue;\r
+                 \r
+               Pipe_DisablePipe();\r
+               UPCFG1X &= (1 << ALLOC);\r
+     c66:      30 91 ab 00     lds     r19, 0x00AB\r
+     c6a:      32 70           andi    r19, 0x02       ; 2\r
+     c6c:      30 93 ab 00     sts     0x00AB, r19\r
+                        *  \pre The currently selected pipe must first be configured properly via \ref Pipe_ConfigurePipe().\r
+                        */\r
+                       static inline void Pipe_EnablePipe(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_EnablePipe(void)\r
+                       {\r
+                               UPCONX |= (1 << PEN);\r
+     c70:      30 91 a9 00     lds     r19, 0x00A9\r
+     c74:      31 60           ori     r19, 0x01       ; 1\r
+     c76:      30 93 a9 00     sts     0x00A9, r19\r
+\r
+               Pipe_EnablePipe();\r
+               UPCFG0X = UPCFG0XTemp;\r
+     c7a:      a0 93 aa 00     sts     0x00AA, r26\r
+               UPCFG1X = UPCFG1XTemp;\r
+     c7e:      20 93 ab 00     sts     0x00AB, r18\r
+               UPCFG2X = UPCFG2XTemp;\r
+     c82:      f0 93 ad 00     sts     0x00AD, r31\r
+               UPCONX  = UPCONXTemp;\r
+     c86:      e0 93 a9 00     sts     0x00A9, r30\r
+               UPINRQX = UPINRQXTemp;\r
+     c8a:      70 93 a5 00     sts     0x00A5, r23\r
+               UPIENX  = UPIENXTemp;\r
+     c8e:      40 93 ae 00     sts     0x00AE, r20\r
+                        *  \return Boolean \c true if the selected pipe is configured, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsConfigured(void)\r
+                       {\r
+                               return ((UPSTAX & (1 << CFGOK)) ? true : false);\r
+     c92:      20 91 ac 00     lds     r18, 0x00AC\r
+\r
+               if (!(Pipe_IsConfigured()))\r
+     c96:      27 ff           sbrs    r18, 7\r
+     c98:      08 c0           rjmp    .+16            ; 0xcaa <Pipe_ConfigurePipe+0xc4>\r
+\r
+       Pipe_SetInfiniteINRequests();\r
+\r
+       return Pipe_IsConfigured();\r
+#else  \r
+       for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+     c9a:      9f 5f           subi    r25, 0xFF       ; 255\r
+     c9c:      97 30           cpi     r25, 0x07       ; 7\r
+     c9e:      08 f4           brcc    .+2             ; 0xca2 <Pipe_ConfigurePipe+0xbc>\r
+     ca0:      b0 cf           rjmp    .-160           ; 0xc02 <Pipe_ConfigurePipe+0x1c>\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPNUM = PipeNumber;\r
+     ca2:      80 93 a7 00     sts     0x00A7, r24\r
+               if (!(Pipe_IsConfigured()))\r
+                 return false;         \r
+       }\r
+               \r
+       Pipe_SelectPipe(Number);        \r
+       return true;\r
+     ca6:      81 e0           ldi     r24, 0x01       ; 1\r
+     ca8:      01 c0           rjmp    .+2             ; 0xcac <Pipe_ConfigurePipe+0xc6>\r
+               UPCONX  = UPCONXTemp;\r
+               UPINRQX = UPINRQXTemp;\r
+               UPIENX  = UPIENXTemp;\r
+\r
+               if (!(Pipe_IsConfigured()))\r
+                 return false;         \r
+     caa:      80 e0           ldi     r24, 0x00       ; 0\r
+       }\r
+               \r
+       Pipe_SelectPipe(Number);        \r
+       return true;\r
+#endif\r
+}\r
+     cac:      1f 91           pop     r17\r
+     cae:      0f 91           pop     r16\r
+     cb0:      ef 90           pop     r14\r
+     cb2:      08 95           ret\r
+\r
+00000cb4 <Pipe_ClearPipes>:\r
+\r
+void Pipe_ClearPipes(void)\r
+{\r
+       UPINT = 0;\r
+     cb4:      10 92 f8 00     sts     0x00F8, r1\r
+\r
+       for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+     cb8:      80 e0           ldi     r24, 0x00       ; 0\r
+     cba:      80 93 a7 00     sts     0x00A7, r24\r
+       {\r
+               Pipe_SelectPipe(PNum);\r
+               UPIENX  = 0;\r
+     cbe:      10 92 ae 00     sts     0x00AE, r1\r
+               UPINTX  = 0;\r
+     cc2:      10 92 a6 00     sts     0x00A6, r1\r
+               UPCFG1X = 0;\r
+     cc6:      10 92 ab 00     sts     0x00AB, r1\r
+                        *  from an attached device.\r
+                        */\r
+                       static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_DisablePipe(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PEN);\r
+     cca:      90 91 a9 00     lds     r25, 0x00A9\r
+     cce:      9e 7f           andi    r25, 0xFE       ; 254\r
+     cd0:      90 93 a9 00     sts     0x00A9, r25\r
+\r
+void Pipe_ClearPipes(void)\r
+{\r
+       UPINT = 0;\r
+\r
+       for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+     cd4:      8f 5f           subi    r24, 0xFF       ; 255\r
+     cd6:      87 30           cpi     r24, 0x07       ; 7\r
+     cd8:      81 f7           brne    .-32            ; 0xcba <Pipe_ClearPipes+0x6>\r
+               UPIENX  = 0;\r
+               UPINTX  = 0;\r
+               UPCFG1X = 0;\r
+               Pipe_DisablePipe();\r
+       }\r
+}\r
+     cda:      08 95           ret\r
+\r
+00000cdc <USB_Disable>:\r
+       USB_ResetInterface();\r
+}\r
+\r
+void USB_Disable(void)\r
+{\r
+       USB_INT_DisableAllInterrupts();\r
+     cdc:      6e d0           rcall   .+220           ; 0xdba <USB_INT_DisableAllInterrupts>\r
+       USB_INT_ClearAllInterrupts();\r
+     cde:      75 d0           rcall   .+234           ; 0xdca <USB_INT_ClearAllInterrupts>\r
+                        *  enumerating the device once attached until \ref USB_Attach() is called.\r
+                        */\r
+                       static inline void USB_Detach(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Detach(void)\r
+                       {\r
+                               UDCON  |=  (1 << DETACH);\r
+     ce0:      e0 ee           ldi     r30, 0xE0       ; 224\r
+     ce2:      f0 e0           ldi     r31, 0x00       ; 0\r
+     ce4:      80 81           ld      r24, Z\r
+     ce6:      81 60           ori     r24, 0x01       ; 1\r
+     ce8:      80 83           st      Z, r24\r
+                       }\r
+\r
+                       static inline void USB_Controller_Disable(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Controller_Disable(void)\r
+                       {\r
+                               USBCON  &= ~(1 << USBE);\r
+     cea:      e8 ed           ldi     r30, 0xD8       ; 216\r
+     cec:      f0 e0           ldi     r31, 0x00       ; 0\r
+     cee:      80 81           ld      r24, Z\r
+     cf0:      8f 77           andi    r24, 0x7F       ; 127\r
+     cf2:      80 83           st      Z, r24\r
+                       }\r
+\r
+                       static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_PLL_Off(void)\r
+                       {\r
+                               PLLCSR  = 0;\r
+     cf4:      19 bc           out     0x29, r1        ; 41\r
+\r
+                       static inline void USB_REG_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_REG_Off(void)\r
+                       {\r
+                       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+                               UHWCON  &= ~(1 << UVREGE);\r
+     cf6:      a7 ed           ldi     r26, 0xD7       ; 215\r
+     cf8:      b0 e0           ldi     r27, 0x00       ; 0\r
+     cfa:      8c 91           ld      r24, X\r
+     cfc:      8e 7f           andi    r24, 0xFE       ; 254\r
+     cfe:      8c 93           st      X, r24\r
+                       }\r
+\r
+                       static inline void USB_OTGPAD_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_OTGPAD_Off(void)\r
+                       {\r
+                               USBCON  &= ~(1 << OTGPADE);\r
+     d00:      80 81           ld      r24, Z\r
+     d02:      8f 7e           andi    r24, 0xEF       ; 239\r
+     d04:      80 83           st      Z, r24\r
+\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       USB_CurrentMode = USB_MODE_None;\r
+       #endif\r
+\r
+       USB_IsInitialized = false;\r
+     d06:      10 92 22 01     sts     0x0122, r1\r
+}\r
+     d0a:      08 95           ret\r
+\r
+00000d0c <USB_ResetInterface>:\r
+{\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0);\r
+       #endif\r
+\r
+       USB_INT_DisableAllInterrupts();\r
+     d0c:      56 d0           rcall   .+172           ; 0xdba <USB_INT_DisableAllInterrupts>\r
+       USB_INT_ClearAllInterrupts();\r
+     d0e:      5d d0           rcall   .+186           ; 0xdca <USB_INT_ClearAllInterrupts>\r
+                       }\r
+\r
+                       static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Controller_Reset(void)\r
+                       {\r
+                               const uint8_t Temp = USBCON;\r
+     d10:      80 91 d8 00     lds     r24, 0x00D8\r
+\r
+                               USBCON = (Temp & ~(1 << USBE));\r
+     d14:      98 2f           mov     r25, r24\r
+     d16:      9f 77           andi    r25, 0x7F       ; 127\r
+     d18:      90 93 d8 00     sts     0x00D8, r25\r
+                               USBCON = (Temp |  (1 << USBE));\r
+     d1c:      80 68           ori     r24, 0x80       ; 128\r
+     d1e:      80 93 d8 00     sts     0x00D8, r24\r
+                       }\r
+\r
+                       static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_CLK_Unfreeze(void)\r
+                       {\r
+                               USBCON  &= ~(1 << FRZCLK);\r
+     d22:      80 91 d8 00     lds     r24, 0x00D8\r
+     d26:      8f 7d           andi    r24, 0xDF       ; 223\r
+     d28:      80 93 d8 00     sts     0x00D8, r24\r
+               #endif\r
+       }\r
+       else if (USB_CurrentMode == USB_MODE_Host)\r
+       {\r
+               #if defined(USB_CAN_BE_HOST)\r
+               UHWCON &= ~(1 << UIMOD);\r
+     d2c:      80 91 d7 00     lds     r24, 0x00D7\r
+     d30:      8f 77           andi    r24, 0x7F       ; 127\r
+     d32:      80 93 d7 00     sts     0x00D7, r24\r
+\r
+               /* Inline Functions: */\r
+                       static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_PLL_On(void)\r
+                       {\r
+                               PLLCSR  = USB_PLL_PSC;\r
+     d36:      8c e0           ldi     r24, 0x0C       ; 12\r
+     d38:      89 bd           out     0x29, r24       ; 41\r
+                               PLLCSR |= (1 << PLLE);\r
+     d3a:      89 b5           in      r24, 0x29       ; 41\r
+     d3c:      82 60           ori     r24, 0x02       ; 2\r
+     d3e:      89 bd           out     0x29, r24       ; 41\r
+\r
+               if (!(USB_Options & USB_OPT_MANUAL_PLL))\r
+               {\r
+                       #if defined(USB_CAN_BE_HOST)\r
+                       USB_PLL_On();\r
+                       while (!(USB_PLL_IsReady()));           \r
+     d40:      09 b4           in      r0, 0x29        ; 41\r
+     d42:      00 fe           sbrs    r0, 0\r
+     d44:      fd cf           rjmp    .-6             ; 0xd40 <USB_ResetInterface+0x34>\r
+#endif\r
+\r
+#if defined(USB_CAN_BE_HOST)\r
+static void USB_Init_Host(void)\r
+{\r
+       USB_HostState       = HOST_STATE_Unattached;\r
+     d46:      82 e0           ldi     r24, 0x02       ; 2\r
+     d48:      80 93 2b 01     sts     0x012B, r24\r
+       USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
+     d4c:      80 e4           ldi     r24, 0x40       ; 64\r
+     d4e:      80 93 1b 01     sts     0x011B, r24\r
+       #if !defined(__DOXYGEN__)\r
+               /* Macros: */\r
+                       static inline void USB_Host_HostMode_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_HostMode_On(void)\r
+                       {\r
+                               USBCON |=  (1 << HOST);\r
+     d52:      80 91 d8 00     lds     r24, 0x00D8\r
+     d56:      80 64           ori     r24, 0x40       ; 64\r
+     d58:      80 93 d8 00     sts     0x00D8, r24\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Auto_Off(void)\r
+                       {\r
+                               OTGCON |=  (1 << VBUSRQC);\r
+     d5c:      80 91 dd 00     lds     r24, 0x00DD\r
+     d60:      81 60           ori     r24, 0x01       ; 1\r
+     d62:      80 93 dd 00     sts     0x00DD, r24\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Manual_Enable(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Manual_Enable(void)\r
+                       {\r
+                               OTGCON |=  (1 << VBUSHWC);\r
+     d66:      80 91 dd 00     lds     r24, 0x00DD\r
+     d6a:      84 60           ori     r24, 0x04       ; 4\r
+     d6c:      80 93 dd 00     sts     0x00DD, r24\r
+                               UHWCON &= ~(1 << UVCONE);\r
+     d70:      80 91 d7 00     lds     r24, 0x00D7\r
+     d74:      8f 7e           andi    r24, 0xEF       ; 239\r
+     d76:      80 93 d7 00     sts     0x00D7, r24\r
+\r
+                               DDRE   |=  (1 << 7);\r
+     d7a:      6f 9a           sbi     0x0d, 7 ; 13\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Manual_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Manual_On(void)\r
+                       {\r
+                               PORTE  |=  (1 << 7);\r
+     d7c:      77 9a           sbi     0x0e, 7 ; 14\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               OTGIEN |= (1 << VBERRE);\r
+                                               break;\r
+                                       case USB_INT_SRPI:\r
+                                               OTGIEN |= (1 << SRPE);                                          \r
+     d7e:      80 91 de 00     lds     r24, 0x00DE\r
+     d82:      81 60           ori     r24, 0x01       ; 1\r
+     d84:      80 93 de 00     sts     0x00DE, r24\r
+                                               break;\r
+                                       case USB_INT_RSTI:\r
+                                               UHIEN  |= (1 << RSTE);\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               OTGIEN |= (1 << BCERRE);\r
+     d88:      80 91 de 00     lds     r24, 0x00DE\r
+     d8c:      84 60           ori     r24, 0x04       ; 4\r
+     d8e:      80 93 de 00     sts     0x00DE, r24\r
+                        *  register and despite the datasheet making no mention of its requirement in host mode.\r
+                        */\r
+                       static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Attach(void)\r
+                       {\r
+                               UDCON  &= ~(1 << DETACH);\r
+     d92:      80 91 e0 00     lds     r24, 0x00E0\r
+     d96:      8e 7f           andi    r24, 0xFE       ; 254\r
+     d98:      80 93 e0 00     sts     0x00E0, r24\r
+\r
+                       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+                       static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_OTGPAD_On(void)\r
+                       {\r
+                               USBCON  |=  (1 << OTGPADE);\r
+     d9c:      80 91 d8 00     lds     r24, 0x00D8\r
+     da0:      80 61           ori     r24, 0x10       ; 16\r
+     da2:      80 93 d8 00     sts     0x00D8, r24\r
+       }\r
+\r
+       #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))\r
+       USB_OTGPAD_On();\r
+       #endif\r
+}\r
+     da6:      08 95           ret\r
+\r
+00000da8 <USB_Init>:\r
+\r
+                       static inline void USB_REG_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_REG_On(void)\r
+                       {\r
+                       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+                               UHWCON  |=  (1 << UVREGE);\r
+     da8:      e7 ed           ldi     r30, 0xD7       ; 215\r
+     daa:      f0 e0           ldi     r31, 0x00       ; 0\r
+     dac:      80 81           ld      r24, Z\r
+     dae:      81 60           ori     r24, 0x01       ; 1\r
+     db0:      80 83           st      Z, r24\r
+               UHWCON &= ~(1 << UIDE);\r
+               USB_CurrentMode = Mode;\r
+       }\r
+       #endif\r
+\r
+       USB_IsInitialized = true;\r
+     db2:      81 e0           ldi     r24, 0x01       ; 1\r
+     db4:      80 93 22 01     sts     0x0122, r24\r
+\r
+       USB_ResetInterface();\r
+}\r
+     db8:      a9 cf           rjmp    .-174           ; 0xd0c <USB_ResetInterface>\r
+\r
+00000dba <USB_INT_DisableAllInterrupts>:\r
+#include "../USBInterrupt.h"\r
+\r
+void USB_INT_DisableAllInterrupts(void)\r
+{\r
+       #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+       USBCON &= ~((1 << VBUSTE) | (1 << IDTE));\r
+     dba:      e8 ed           ldi     r30, 0xD8       ; 216\r
+     dbc:      f0 e0           ldi     r31, 0x00       ; 0\r
+     dbe:      80 81           ld      r24, Z\r
+     dc0:      8c 7f           andi    r24, 0xFC       ; 252\r
+     dc2:      80 83           st      Z, r24\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       OTGIEN  = 0;\r
+       #endif\r
+\r
+       #if defined(USB_CAN_BE_HOST)\r
+       UHIEN   = 0;\r
+     dc4:      10 92 a0 00     sts     0x00A0, r1\r
+       #endif\r
+\r
+       #if defined(USB_CAN_BE_DEVICE)\r
+       UDIEN   = 0;\r
+       #endif\r
+}\r
+     dc8:      08 95           ret\r
+\r
+00000dca <USB_INT_ClearAllInterrupts>:\r
+\r
+void USB_INT_ClearAllInterrupts(void)\r
+{\r
+       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)\r
+       USBINT = 0;\r
+     dca:      10 92 da 00     sts     0x00DA, r1\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       OTGINT = 0;\r
+       #endif\r
+\r
+       #if defined(USB_CAN_BE_HOST)\r
+       UHINT  = 0;\r
+     dce:      10 92 9f 00     sts     0x009F, r1\r
+       #endif\r
+\r
+       #if defined(USB_CAN_BE_DEVICE)\r
+       UDINT  = 0;\r
+       #endif\r
+}\r
+     dd2:      08 95           ret\r
+\r
+00000dd4 <__vector_10>:\r
+\r
+ISR(USB_GEN_vect, ISR_BLOCK)\r
+{\r
+     dd4:      1f 92           push    r1\r
+     dd6:      0f 92           push    r0\r
+     dd8:      0f b6           in      r0, 0x3f        ; 63\r
+     dda:      0f 92           push    r0\r
+     ddc:      0b b6           in      r0, 0x3b        ; 59\r
+     dde:      0f 92           push    r0\r
+     de0:      11 24           eor     r1, r1\r
+     de2:      2f 93           push    r18\r
+     de4:      3f 93           push    r19\r
+     de6:      4f 93           push    r20\r
+     de8:      5f 93           push    r21\r
+     dea:      6f 93           push    r22\r
+     dec:      7f 93           push    r23\r
+     dee:      8f 93           push    r24\r
+     df0:      9f 93           push    r25\r
+     df2:      af 93           push    r26\r
+     df4:      bf 93           push    r27\r
+     df6:      ef 93           push    r30\r
+     df8:      ff 93           push    r31\r
+                                       case USB_INT_RXSTPI:\r
+                                               return (UEINTX & (1 << RXSTPI));\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHINT  & (1 << HSOFI));\r
+     dfa:      80 91 9f 00     lds     r24, 0x009F\r
+       }\r
+       #endif\r
+\r
+       #if defined(USB_CAN_BE_HOST)\r
+       #if !defined(NO_SOF_EVENTS)\r
+       if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))\r
+     dfe:      85 ff           sbrs    r24, 5\r
+     e00:      0a c0           rjmp    .+20            ; 0xe16 <__vector_10+0x42>\r
+                                       case USB_INT_RXSTPI:\r
+                                               return (UEIENX & (1 << RXSTPE));\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHIEN  & (1 << HSOFE));\r
+     e02:      80 91 a0 00     lds     r24, 0x00A0\r
+     e06:      85 ff           sbrs    r24, 5\r
+     e08:      06 c0           rjmp    .+12            ; 0xe16 <__vector_10+0x42>\r
+                                               UEINTX &= ~(1 << RXSTPI);\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHINT  &= ~(1 << HSOFI);\r
+     e0a:      80 91 9f 00     lds     r24, 0x009F\r
+     e0e:      8f 7d           andi    r24, 0xDF       ; 223\r
+     e10:      80 93 9f 00     sts     0x009F, r24\r
+       {\r
+               USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+               EVENT_USB_Host_StartOfFrame();\r
+     e14:      0c d1           rcall   .+536           ; 0x102e <USB_Event_Stub>\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHINT  & (1 << HSOFI));\r
+                                       case USB_INT_DCONNI:\r
+                                               return (UHINT  & (1 << DCONNI));\r
+                                       case USB_INT_DDISCI:\r
+                                               return (UHINT  & (1 << DDISCI));\r
+     e16:      80 91 9f 00     lds     r24, 0x009F\r
+       }\r
+       #endif\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))\r
+     e1a:      81 ff           sbrs    r24, 1\r
+     e1c:      15 c0           rjmp    .+42            ; 0xe48 <__vector_10+0x74>\r
+                                       case USB_INT_HSOFI:\r
+                                               return (UHIEN  & (1 << HSOFE));\r
+                                       case USB_INT_DCONNI:\r
+                                               return (UHIEN  & (1 << DCONNE));\r
+                                       case USB_INT_DDISCI:\r
+                                               return (UHIEN  & (1 << DDISCE));\r
+     e1e:      80 91 a0 00     lds     r24, 0x00A0\r
+     e22:      81 ff           sbrs    r24, 1\r
+     e24:      11 c0           rjmp    .+34            ; 0xe48 <__vector_10+0x74>\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHINT  &= ~(1 << DCONNI);\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               UHINT  &= ~(1 << DDISCI);\r
+     e26:      80 91 9f 00     lds     r24, 0x009F\r
+     e2a:      8d 7f           andi    r24, 0xFD       ; 253\r
+     e2c:      80 93 9f 00     sts     0x009F, r24\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               UHINT  &= ~(1 << HSOFI);\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHINT  &= ~(1 << DCONNI);\r
+     e30:      80 91 9f 00     lds     r24, 0x009F\r
+     e34:      8e 7f           andi    r24, 0xFE       ; 254\r
+     e36:      80 93 9f 00     sts     0x009F, r24\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHIEN  &= ~(1 << DCONNE);\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               UHIEN  &= ~(1 << DDISCE);\r
+     e3a:      80 91 a0 00     lds     r24, 0x00A0\r
+     e3e:      8d 7f           andi    r24, 0xFD       ; 253\r
+     e40:      80 93 a0 00     sts     0x00A0, r24\r
+       {\r
+               USB_INT_Clear(USB_INT_DDISCI);\r
+               USB_INT_Clear(USB_INT_DCONNI);\r
+               USB_INT_Disable(USB_INT_DDISCI);\r
+\r
+               EVENT_USB_Host_DeviceUnattached();\r
+     e44:      a1 da           rcall   .-2750          ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+               USB_ResetInterface();\r
+     e46:      62 df           rcall   .-316           ; 0xd0c <USB_ResetInterface>\r
+                                       case USB_INT_RSTI:\r
+                                               return (UHINT  & (1 << RSTI));\r
+                                       case USB_INT_BCERRI:\r
+                                               return (OTGINT & (1 << BCERRI));\r
+                                       case USB_INT_VBERRI:\r
+                                               return (OTGINT & (1 << VBERRI));\r
+     e48:      80 91 df 00     lds     r24, 0x00DF\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))\r
+     e4c:      81 ff           sbrs    r24, 1\r
+     e4e:      15 c0           rjmp    .+42            ; 0xe7a <__vector_10+0xa6>\r
+                                       case USB_INT_RSTI:\r
+                                               return (UHIEN  & (1 << RSTE));\r
+                                       case USB_INT_BCERRI:\r
+                                               return (OTGIEN & (1 << BCERRE));\r
+                                       case USB_INT_VBERRI:\r
+                                               return (OTGIEN & (1 << VBERRE));\r
+     e50:      80 91 de 00     lds     r24, 0x00DE\r
+     e54:      81 ff           sbrs    r24, 1\r
+     e56:      11 c0           rjmp    .+34            ; 0xe7a <__vector_10+0xa6>\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               OTGINT &= ~(1 << BCERRI);\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               OTGINT &= ~(1 << VBERRI);\r
+     e58:      80 91 df 00     lds     r24, 0x00DF\r
+     e5c:      8d 7f           andi    r24, 0xFD       ; 253\r
+     e5e:      80 93 df 00     sts     0x00DF, r24\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Manual_Off(void)\r
+                       {\r
+                               PORTE  &= ~(1 << 7);\r
+     e62:      77 98           cbi     0x0e, 7 ; 14\r
+                       }\r
+\r
+                       static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_VBUS_Auto_Off(void)\r
+                       {\r
+                               OTGCON |=  (1 << VBUSRQC);\r
+     e64:      80 91 dd 00     lds     r24, 0x00DD\r
+     e68:      81 60           ori     r24, 0x01       ; 1\r
+     e6a:      80 93 dd 00     sts     0x00DD, r24\r
+               USB_INT_Clear(USB_INT_VBERRI);\r
+\r
+               USB_Host_VBUS_Manual_Off();\r
+               USB_Host_VBUS_Auto_Off();\r
+\r
+               EVENT_USB_Host_HostError(HOST_ERROR_VBusVoltageDip);\r
+     e6e:      80 e0           ldi     r24, 0x00       ; 0\r
+     e70:      92 da           rcall   .-2780          ; 0x396 <EVENT_USB_Host_HostError>\r
+               EVENT_USB_Host_DeviceUnattached();\r
+     e72:      8a da           rcall   .-2796          ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+               USB_HostState = HOST_STATE_Unattached;\r
+     e74:      82 e0           ldi     r24, 0x02       ; 2\r
+     e76:      80 93 2b 01     sts     0x012B, r24\r
+                                       case USB_INT_BCERRI:\r
+                                               return (OTGINT & (1 << BCERRI));\r
+                                       case USB_INT_VBERRI:\r
+                                               return (OTGINT & (1 << VBERRI));\r
+                                       case USB_INT_SRPI:\r
+                                               return (OTGINT & (1 << SRPI));\r
+     e7a:      80 91 df 00     lds     r24, 0x00DF\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_SRPI) && USB_INT_IsEnabled(USB_INT_SRPI))\r
+     e7e:      80 ff           sbrs    r24, 0\r
+     e80:      17 c0           rjmp    .+46            ; 0xeb0 <__vector_10+0xdc>\r
+                                       case USB_INT_BCERRI:\r
+                                               return (OTGIEN & (1 << BCERRE));\r
+                                       case USB_INT_VBERRI:\r
+                                               return (OTGIEN & (1 << VBERRE));\r
+                                       case USB_INT_SRPI:\r
+                                               return (OTGIEN & (1 << SRPE));\r
+     e82:      80 91 de 00     lds     r24, 0x00DE\r
+     e86:      80 ff           sbrs    r24, 0\r
+     e88:      13 c0           rjmp    .+38            ; 0xeb0 <__vector_10+0xdc>\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               OTGINT &= ~(1 << VBERRI);\r
+                                               break;\r
+                                       case USB_INT_SRPI:\r
+                                               OTGINT &= ~(1 << SRPI);\r
+     e8a:      80 91 df 00     lds     r24, 0x00DF\r
+     e8e:      8e 7f           andi    r24, 0xFE       ; 254\r
+     e90:      80 93 df 00     sts     0x00DF, r24\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               OTGIEN &= ~(1 << VBERRE);\r
+                                               break;\r
+                                       case USB_INT_SRPI:\r
+                                               OTGIEN &= ~(1 << SRPE);                                         \r
+     e94:      80 91 de 00     lds     r24, 0x00DE\r
+     e98:      8e 7f           andi    r24, 0xFE       ; 254\r
+     e9a:      80 93 de 00     sts     0x00DE, r24\r
+       {\r
+               USB_INT_Clear(USB_INT_SRPI);\r
+               USB_INT_Disable(USB_INT_SRPI);\r
+\r
+               EVENT_USB_Host_DeviceAttached();\r
+     e9e:      6f da           rcall   .-2850          ; 0x37e <EVENT_USB_Host_DeviceAttached>\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               UHIEN  |= (1 << DCONNE);\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               UHIEN  |= (1 << DDISCE);\r
+     ea0:      80 91 a0 00     lds     r24, 0x00A0\r
+     ea4:      82 60           ori     r24, 0x02       ; 2\r
+     ea6:      80 93 a0 00     sts     0x00A0, r24\r
+\r
+               USB_INT_Enable(USB_INT_DDISCI);\r
+\r
+               USB_HostState = HOST_STATE_Powered;\r
+     eaa:      83 e0           ldi     r24, 0x03       ; 3\r
+     eac:      80 93 2b 01     sts     0x012B, r24\r
+                                       case USB_INT_DDISCI:\r
+                                               return (UHINT  & (1 << DDISCI));\r
+                                       case USB_INT_RSTI:\r
+                                               return (UHINT  & (1 << RSTI));\r
+                                       case USB_INT_BCERRI:\r
+                                               return (OTGINT & (1 << BCERRI));\r
+     eb0:      80 91 df 00     lds     r24, 0x00DF\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_BCERRI) && USB_INT_IsEnabled(USB_INT_BCERRI))\r
+     eb4:      82 ff           sbrs    r24, 2\r
+     eb6:      0e c0           rjmp    .+28            ; 0xed4 <__vector_10+0x100>\r
+                                       case USB_INT_DDISCI:\r
+                                               return (UHIEN  & (1 << DDISCE));\r
+                                       case USB_INT_RSTI:\r
+                                               return (UHIEN  & (1 << RSTE));\r
+                                       case USB_INT_BCERRI:\r
+                                               return (OTGIEN & (1 << BCERRE));\r
+     eb8:      80 91 de 00     lds     r24, 0x00DE\r
+     ebc:      82 ff           sbrs    r24, 2\r
+     ebe:      0a c0           rjmp    .+20            ; 0xed4 <__vector_10+0x100>\r
+                                               break;\r
+                                       case USB_INT_RSTI:\r
+                                               UHINT  &= ~(1 << RSTI);\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               OTGINT &= ~(1 << BCERRI);\r
+     ec0:      80 91 df 00     lds     r24, 0x00DF\r
+     ec4:      8b 7f           andi    r24, 0xFB       ; 251\r
+     ec6:      80 93 df 00     sts     0x00DF, r24\r
+       {\r
+               USB_INT_Clear(USB_INT_BCERRI);\r
+\r
+               EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);\r
+     eca:      82 e0           ldi     r24, 0x02       ; 2\r
+     ecc:      60 e0           ldi     r22, 0x00       ; 0\r
+     ece:      82 da           rcall   .-2812          ; 0x3d4 <EVENT_USB_Host_DeviceEnumerationFailed>\r
+               EVENT_USB_Host_DeviceUnattached();\r
+     ed0:      5b da           rcall   .-2890          ; 0x388 <EVENT_USB_Host_DeviceUnattached>\r
+\r
+               USB_ResetInterface();\r
+     ed2:      1c df           rcall   .-456           ; 0xd0c <USB_ResetInterface>\r
+               USB_ResetInterface();\r
+\r
+               EVENT_USB_UIDChange();\r
+       }\r
+       #endif\r
+}\r
+     ed4:      ff 91           pop     r31\r
+     ed6:      ef 91           pop     r30\r
+     ed8:      bf 91           pop     r27\r
+     eda:      af 91           pop     r26\r
+     edc:      9f 91           pop     r25\r
+     ede:      8f 91           pop     r24\r
+     ee0:      7f 91           pop     r23\r
+     ee2:      6f 91           pop     r22\r
+     ee4:      5f 91           pop     r21\r
+     ee6:      4f 91           pop     r20\r
+     ee8:      3f 91           pop     r19\r
+     eea:      2f 91           pop     r18\r
+     eec:      0f 90           pop     r0\r
+     eee:      0b be           out     0x3b, r0        ; 59\r
+     ef0:      0f 90           pop     r0\r
+     ef2:      0f be           out     0x3f, r0        ; 63\r
+     ef4:      0f 90           pop     r0\r
+     ef6:      1f 90           pop     r1\r
+     ef8:      18 95           reti\r
+\r
+00000efa <USB_Host_GetDeviceConfigDescriptor>:\r
+#if defined(USB_CAN_BE_HOST)\r
+uint8_t USB_Host_GetDeviceConfigDescriptor(const uint8_t ConfigNumber,\r
+                                           uint16_t* const ConfigSizePtr,\r
+                                           void* const BufferPtr,\r
+                                           const uint16_t BufferSize)\r
+{\r
+     efa:      cf 92           push    r12\r
+     efc:      df 92           push    r13\r
+     efe:      ef 92           push    r14\r
+     f00:      ff 92           push    r15\r
+     f02:      0f 93           push    r16\r
+     f04:      1f 93           push    r17\r
+     f06:      df 93           push    r29\r
+     f08:      cf 93           push    r28\r
+     f0a:      cd b7           in      r28, 0x3d       ; 61\r
+     f0c:      de b7           in      r29, 0x3e       ; 62\r
+     f0e:      29 97           sbiw    r28, 0x09       ; 9\r
+     f10:      0f b6           in      r0, 0x3f        ; 63\r
+     f12:      f8 94           cli\r
+     f14:      de bf           out     0x3e, r29       ; 62\r
+     f16:      0f be           out     0x3f, r0        ; 63\r
+     f18:      cd bf           out     0x3d, r28       ; 61\r
+     f1a:      6b 01           movw    r12, r22\r
+     f1c:      8a 01           movw    r16, r20\r
+     f1e:      79 01           movw    r14, r18\r
+       uint8_t ErrorCode;\r
+       uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];\r
+\r
+       USB_ControlRequest = (USB_Request_Header_t)\r
+     f20:      90 e8           ldi     r25, 0x80       ; 128\r
+     f22:      90 93 23 01     sts     0x0123, r25\r
+     f26:      96 e0           ldi     r25, 0x06       ; 6\r
+     f28:      90 93 24 01     sts     0x0124, r25\r
+               {\r
+                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
+                       .bRequest      = REQ_GetDescriptor,\r
+                       .wValue        = ((DTYPE_Configuration << 8) | (ConfigNumber - 1)),\r
+     f2c:      90 e0           ldi     r25, 0x00       ; 0\r
+     f2e:      01 97           sbiw    r24, 0x01       ; 1\r
+     f30:      92 60           ori     r25, 0x02       ; 2\r
+                                           const uint16_t BufferSize)\r
+{\r
+       uint8_t ErrorCode;\r
+       uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];\r
+\r
+       USB_ControlRequest = (USB_Request_Header_t)\r
+     f32:      90 93 26 01     sts     0x0126, r25\r
+     f36:      80 93 25 01     sts     0x0125, r24\r
+     f3a:      10 92 28 01     sts     0x0128, r1\r
+     f3e:      10 92 27 01     sts     0x0127, r1\r
+     f42:      89 e0           ldi     r24, 0x09       ; 9\r
+     f44:      90 e0           ldi     r25, 0x00       ; 0\r
+     f46:      90 93 2a 01     sts     0x012A, r25\r
+     f4a:      80 93 29 01     sts     0x0129, r24\r
+     f4e:      10 92 a7 00     sts     0x00A7, r1\r
+                       .wLength       = sizeof(USB_Descriptor_Configuration_Header_t),\r
+               };\r
+\r
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+       if ((ErrorCode = USB_Host_SendControlRequest(ConfigHeader)) != HOST_SENDCONTROL_Successful)\r
+     f52:      ce 01           movw    r24, r28\r
+     f54:      01 96           adiw    r24, 0x01       ; 1\r
+     f56:      95 d0           rcall   .+298           ; 0x1082 <USB_Host_SendControlRequest>\r
+     f58:      88 23           and     r24, r24\r
+     f5a:      b9 f4           brne    .+46            ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+         return ErrorCode;\r
+\r
+       *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize;\r
+     f5c:      8b 81           ldd     r24, Y+3        ; 0x03\r
+     f5e:      9c 81           ldd     r25, Y+4        ; 0x04\r
+     f60:      f6 01           movw    r30, r12\r
+     f62:      91 83           std     Z+1, r25        ; 0x01\r
+     f64:      80 83           st      Z, r24\r
+\r
+       if (*ConfigSizePtr > BufferSize)\r
+     f66:      e8 16           cp      r14, r24\r
+     f68:      f9 06           cpc     r15, r25\r
+     f6a:      70 f0           brcs    .+28            ; 0xf88 <USB_Host_GetDeviceConfigDescriptor+0x8e>\r
+         return HOST_GETCONFIG_BuffOverflow;\r
+\r
+       USB_ControlRequest.wLength = *ConfigSizePtr;\r
+     f6c:      90 93 2a 01     sts     0x012A, r25\r
+     f70:      80 93 29 01     sts     0x0129, r24\r
+\r
+       if ((ErrorCode = USB_Host_SendControlRequest(BufferPtr)) != HOST_SENDCONTROL_Successful)\r
+     f74:      c8 01           movw    r24, r16\r
+     f76:      85 d0           rcall   .+266           ; 0x1082 <USB_Host_SendControlRequest>\r
+     f78:      88 23           and     r24, r24\r
+     f7a:      39 f4           brne    .+14            ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+         return ErrorCode;\r
+\r
+       if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration)\r
+     f7c:      f8 01           movw    r30, r16\r
+     f7e:      91 81           ldd     r25, Z+1        ; 0x01\r
+     f80:      92 30           cpi     r25, 0x02       ; 2\r
+     f82:      19 f0           breq    .+6             ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+         return HOST_GETCONFIG_InvalidData;\r
+     f84:      86 e0           ldi     r24, 0x06       ; 6\r
+     f86:      01 c0           rjmp    .+2             ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>\r
+         return ErrorCode;\r
+\r
+       *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize;\r
+\r
+       if (*ConfigSizePtr > BufferSize)\r
+         return HOST_GETCONFIG_BuffOverflow;\r
+     f88:      85 e0           ldi     r24, 0x05       ; 5\r
+\r
+       if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration)\r
+         return HOST_GETCONFIG_InvalidData;\r
+\r
+       return HOST_GETCONFIG_Successful;\r
+}\r
+     f8a:      29 96           adiw    r28, 0x09       ; 9\r
+     f8c:      0f b6           in      r0, 0x3f        ; 63\r
+     f8e:      f8 94           cli\r
+     f90:      de bf           out     0x3e, r29       ; 62\r
+     f92:      0f be           out     0x3f, r0        ; 63\r
+     f94:      cd bf           out     0x3d, r28       ; 61\r
+     f96:      cf 91           pop     r28\r
+     f98:      df 91           pop     r29\r
+     f9a:      1f 91           pop     r17\r
+     f9c:      0f 91           pop     r16\r
+     f9e:      ff 90           pop     r15\r
+     fa0:      ef 90           pop     r14\r
+     fa2:      df 90           pop     r13\r
+     fa4:      cf 90           pop     r12\r
+     fa6:      08 95           ret\r
+\r
+00000fa8 <USB_GetNextDescriptorComp>:\r
+}\r
+\r
+uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem,\r
+                                  void** const CurrConfigLoc,\r
+                                  const ConfigComparatorPtr_t const ComparatorRoutine)\r
+{\r
+     fa8:      af 92           push    r10\r
+     faa:      bf 92           push    r11\r
+     fac:      cf 92           push    r12\r
+     fae:      df 92           push    r13\r
+     fb0:      ef 92           push    r14\r
+     fb2:      ff 92           push    r15\r
+     fb4:      0f 93           push    r16\r
+     fb6:      1f 93           push    r17\r
+     fb8:      cf 93           push    r28\r
+     fba:      df 93           push    r29\r
+     fbc:      8c 01           movw    r16, r24\r
+     fbe:      eb 01           movw    r28, r22\r
+     fc0:      6a 01           movw    r12, r20\r
+       uint8_t ErrorCode;\r
+\r
+       while (*BytesRem)\r
+     fc2:      23 c0           rjmp    .+70            ; 0x100a <USB_GetNextDescriptorComp+0x62>\r
+       {\r
+               uint8_t* PrevDescLoc  = *CurrConfigLoc;\r
+     fc4:      e8 81           ld      r30, Y\r
+     fc6:      f9 81           ldd     r31, Y+1        ; 0x01\r
+     fc8:      5f 01           movw    r10, r30\r
+                       static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
+                                                                void** CurrConfigLoc) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);\r
+                       static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,\r
+                                                                void** CurrConfigLoc)\r
+                       {\r
+                               uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;\r
+     fca:      20 81           ld      r18, Z\r
+     fcc:      30 e0           ldi     r19, 0x00       ; 0\r
+     fce:      c7 01           movw    r24, r14\r
+     fd0:      2e 15           cp      r18, r14\r
+     fd2:      3f 05           cpc     r19, r15\r
+     fd4:      08 f4           brcc    .+2             ; 0xfd8 <USB_GetNextDescriptorComp+0x30>\r
+     fd6:      c9 01           movw    r24, r18\r
+                               \r
+                               if (*BytesRem < CurrDescriptorSize)\r
+                                 CurrDescriptorSize = *BytesRem;\r
+\r
+                               *CurrConfigLoc  = (void*)((uintptr_t)*CurrConfigLoc + CurrDescriptorSize);\r
+     fd8:      e8 0f           add     r30, r24\r
+     fda:      f9 1f           adc     r31, r25\r
+     fdc:      f9 83           std     Y+1, r31        ; 0x01\r
+     fde:      e8 83           st      Y, r30\r
+                               *BytesRem      -= CurrDescriptorSize;\r
+     fe0:      f8 01           movw    r30, r16\r
+     fe2:      20 81           ld      r18, Z\r
+     fe4:      31 81           ldd     r19, Z+1        ; 0x01\r
+     fe6:      28 1b           sub     r18, r24\r
+     fe8:      39 0b           sbc     r19, r25\r
+     fea:      31 83           std     Z+1, r19        ; 0x01\r
+     fec:      20 83           st      Z, r18\r
+               uint16_t PrevBytesRem = *BytesRem;\r
+\r
+               USB_GetNextDescriptor(BytesRem, CurrConfigLoc);\r
+\r
+               if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound)\r
+     fee:      88 81           ld      r24, Y\r
+     ff0:      99 81           ldd     r25, Y+1        ; 0x01\r
+     ff2:      f6 01           movw    r30, r12\r
+     ff4:      09 95           icall\r
+     ff6:      82 30           cpi     r24, 0x02       ; 2\r
+     ff8:      41 f0           breq    .+16            ; 0x100a <USB_GetNextDescriptorComp+0x62>\r
+               {\r
+                       if (ErrorCode == DESCRIPTOR_SEARCH_Fail)\r
+     ffa:      81 30           cpi     r24, 0x01       ; 1\r
+     ffc:      69 f4           brne    .+26            ; 0x1018 <USB_GetNextDescriptorComp+0x70>\r
+                       {\r
+                               *CurrConfigLoc = PrevDescLoc;\r
+     ffe:      a8 82           st      Y, r10\r
+    1000:      b9 82           std     Y+1, r11        ; 0x01\r
+                               *BytesRem      = PrevBytesRem;\r
+    1002:      f8 01           movw    r30, r16\r
+    1004:      f1 82           std     Z+1, r15        ; 0x01\r
+    1006:      e0 82           st      Z, r14\r
+    1008:      07 c0           rjmp    .+14            ; 0x1018 <USB_GetNextDescriptorComp+0x70>\r
+                                  void** const CurrConfigLoc,\r
+                                  const ConfigComparatorPtr_t const ComparatorRoutine)\r
+{\r
+       uint8_t ErrorCode;\r
+\r
+       while (*BytesRem)\r
+    100a:      f8 01           movw    r30, r16\r
+    100c:      e0 80           ld      r14, Z\r
+    100e:      f1 80           ldd     r15, Z+1        ; 0x01\r
+    1010:      e1 14           cp      r14, r1\r
+    1012:      f1 04           cpc     r15, r1\r
+    1014:      b9 f6           brne    .-82            ; 0xfc4 <USB_GetNextDescriptorComp+0x1c>\r
+\r
+                       return ErrorCode;\r
+               }\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor;\r
+    1016:      82 e0           ldi     r24, 0x02       ; 2\r
+}\r
+    1018:      df 91           pop     r29\r
+    101a:      cf 91           pop     r28\r
+    101c:      1f 91           pop     r17\r
+    101e:      0f 91           pop     r16\r
+    1020:      ff 90           pop     r15\r
+    1022:      ef 90           pop     r14\r
+    1024:      df 90           pop     r13\r
+    1026:      cf 90           pop     r12\r
+    1028:      bf 90           pop     r11\r
+    102a:      af 90           pop     r10\r
+    102c:      08 95           ret\r
+\r
+0000102e <USB_Event_Stub>:\r
+#include "Events.h"\r
+\r
+void USB_Event_Stub(void)\r
+{\r
+\r
+}\r
+    102e:      08 95           ret\r
+\r
+00001030 <USB_Host_WaitForIOS>:\r
+\r
+       return ReturnStatus;\r
+}\r
+\r
+static uint8_t USB_Host_WaitForIOS(const uint8_t WaitType)\r
+{\r
+    1030:      1f 93           push    r17\r
+    1032:      cf 93           push    r28\r
+    1034:      df 93           push    r29\r
+    1036:      18 2f           mov     r17, r24\r
+       #if (USB_HOST_TIMEOUT_MS < 0xFF)\r
+       uint8_t  TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+       #else\r
+       uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+    1038:      c8 ee           ldi     r28, 0xE8       ; 232\r
+    103a:      d3 e0           ldi     r29, 0x03       ; 3\r
+       #endif\r
+\r
+       while (!(((WaitType == USB_HOST_WAITFOR_SetupSent)  && Pipe_IsSETUPSent())  ||\r
+    103c:      07 c0           rjmp    .+14            ; 0x104c <USB_Host_WaitForIOS+0x1c>\r
+                ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||\r
+                ((WaitType == USB_HOST_WAITFOR_OutReady)   && Pipe_IsOUTReady())))\r
+       {\r
+               uint8_t ErrorCode;\r
+\r
+               if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+    103e:      81 e0           ldi     r24, 0x01       ; 1\r
+    1040:      1e dc           rcall   .-1988          ; 0x87e <USB_Host_WaitMS>\r
+    1042:      88 23           and     r24, r24\r
+    1044:      d1 f4           brne    .+52            ; 0x107a <USB_Host_WaitForIOS+0x4a>\r
+                 return ErrorCode;\r
+\r
+               if (!(TimeoutCounter--))\r
+    1046:      20 97           sbiw    r28, 0x00       ; 0\r
+    1048:      b9 f0           breq    .+46            ; 0x1078 <USB_Host_WaitForIOS+0x48>\r
+    104a:      21 97           sbiw    r28, 0x01       ; 1\r
+       uint8_t  TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+       #else\r
+       uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+       #endif\r
+\r
+       while (!(((WaitType == USB_HOST_WAITFOR_SetupSent)  && Pipe_IsSETUPSent())  ||\r
+    104c:      11 23           and     r17, r17\r
+    104e:      29 f4           brne    .+10            ; 0x105a <USB_Host_WaitForIOS+0x2a>\r
+                        *  \return Boolean \c true if the current pipe is ready for a SETUP packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsSETUPSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsSETUPSent(void)\r
+                       {\r
+                               return ((UPINTX & (1 << TXSTPI)) ? true : false);\r
+    1050:      80 91 a6 00     lds     r24, 0x00A6\r
+    1054:      83 ff           sbrs    r24, 3\r
+    1056:      f3 cf           rjmp    .-26            ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+    1058:      0d c0           rjmp    .+26            ; 0x1074 <USB_Host_WaitForIOS+0x44>\r
+    105a:      11 30           cpi     r17, 0x01       ; 1\r
+    105c:      29 f4           brne    .+10            ; 0x1068 <USB_Host_WaitForIOS+0x38>\r
+                        *  \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsINReceived(void)\r
+                       {\r
+                               return ((UPINTX & (1 << RXINI)) ? true : false);\r
+    105e:      80 91 a6 00     lds     r24, 0x00A6\r
+                ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||\r
+    1062:      80 ff           sbrs    r24, 0\r
+    1064:      ec cf           rjmp    .-40            ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+    1066:      06 c0           rjmp    .+12            ; 0x1074 <USB_Host_WaitForIOS+0x44>\r
+       uint8_t  TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+       #else\r
+       uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;\r
+       #endif\r
+\r
+       while (!(((WaitType == USB_HOST_WAITFOR_SetupSent)  && Pipe_IsSETUPSent())  ||\r
+    1068:      12 30           cpi     r17, 0x02       ; 2\r
+    106a:      49 f7           brne    .-46            ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+                        *  \return Boolean \c true if the current pipe is ready for an OUT packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsOUTReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsOUTReady(void)\r
+                       {\r
+                               return ((UPINTX & (1 << TXOUTI)) ? true : false);\r
+    106c:      80 91 a6 00     lds     r24, 0x00A6\r
+                ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||\r
+                ((WaitType == USB_HOST_WAITFOR_OutReady)   && Pipe_IsOUTReady())))\r
+    1070:      82 ff           sbrs    r24, 2\r
+    1072:      e5 cf           rjmp    .-54            ; 0x103e <USB_Host_WaitForIOS+0xe>\r
+\r
+               if (!(TimeoutCounter--))\r
+                 return HOST_SENDCONTROL_SoftwareTimeOut;\r
+       }\r
+\r
+       return HOST_SENDCONTROL_Successful;\r
+    1074:      80 e0           ldi     r24, 0x00       ; 0\r
+    1076:      01 c0           rjmp    .+2             ; 0x107a <USB_Host_WaitForIOS+0x4a>\r
+\r
+               if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+                 return ErrorCode;\r
+\r
+               if (!(TimeoutCounter--))\r
+                 return HOST_SENDCONTROL_SoftwareTimeOut;\r
+    1078:      84 e0           ldi     r24, 0x04       ; 4\r
+       }\r
+\r
+       return HOST_SENDCONTROL_Successful;\r
+}\r
+    107a:      df 91           pop     r29\r
+    107c:      cf 91           pop     r28\r
+    107e:      1f 91           pop     r17\r
+    1080:      08 95           ret\r
+\r
+00001082 <USB_Host_SendControlRequest>:\r
+\r
+#define  __INCLUDE_FROM_HOSTSTDREQ_C\r
+#include "HostStandardReq.h"\r
+\r
+uint8_t USB_Host_SendControlRequest(void* const BufferPtr)\r
+{\r
+    1082:      ef 92           push    r14\r
+    1084:      ff 92           push    r15\r
+    1086:      0f 93           push    r16\r
+    1088:      1f 93           push    r17\r
+    108a:      cf 93           push    r28\r
+    108c:      df 93           push    r29\r
+    108e:      8c 01           movw    r16, r24\r
+                        *  \return Boolean \c true if the bus is currently suspended, \c false otherwise.\r
+                        */\r
+                       static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool USB_Host_IsBusSuspended(void)\r
+                       {\r
+                               return ((UHCON & (1 << SOFEN)) ? false : true);\r
+    1090:      e0 90 9e 00     lds     r14, 0x009E\r
+    1094:      ff 24           eor     r15, r15\r
+    1096:      81 e0           ldi     r24, 0x01       ; 1\r
+    1098:      e8 22           and     r14, r24\r
+    109a:      ff 24           eor     r15, r15\r
+       uint8_t* DataStream   = (uint8_t*)BufferPtr;\r
+       bool     BusSuspended = USB_Host_IsBusSuspended();\r
+       uint8_t  ReturnStatus = HOST_SENDCONTROL_Successful;\r
+       uint16_t DataLen      = USB_ControlRequest.wLength;\r
+    109c:      c0 91 29 01     lds     r28, 0x0129\r
+    10a0:      d0 91 2a 01     lds     r29, 0x012A\r
+                        *  host and attached device may occur.\r
+                        */\r
+                       static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_ResumeBus(void)\r
+                       {\r
+                               UHCON |=  (1 << SOFEN);\r
+    10a4:      80 91 9e 00     lds     r24, 0x009E\r
+    10a8:      81 60           ori     r24, 0x01       ; 1\r
+    10aa:      80 93 9e 00     sts     0x009E, r24\r
+\r
+       USB_Host_ResumeBus();\r
+\r
+       if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+    10ae:      81 e0           ldi     r24, 0x01       ; 1\r
+    10b0:      e6 db           rcall   .-2100          ; 0x87e <USB_Host_WaitMS>\r
+    10b2:      88 23           and     r24, r24\r
+    10b4:      09 f0           breq    .+2             ; 0x10b8 <USB_Host_SendControlRequest+0x36>\r
+    10b6:      e2 c0           rjmp    .+452           ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+                        *  \param[in] Token  New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+                        */\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+                       {\r
+                               UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+    10b8:      80 91 aa 00     lds     r24, 0x00AA\r
+    10bc:      8f 7c           andi    r24, 0xCF       ; 207\r
+    10be:      80 93 aa 00     sts     0x00AA, r24\r
+\r
+                       /** Clears the error flags for the currently selected pipe. */\r
+                       static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearError(void)\r
+                       {\r
+                               UPERRX = 0;\r
+    10c2:      10 92 f5 00     sts     0x00F5, r1\r
+                               UPINTX &= ~(1 << PERRI);\r
+    10c6:      80 91 a6 00     lds     r24, 0x00A6\r
+    10ca:      8f 7e           andi    r24, 0xEF       ; 239\r
+    10cc:      80 93 a6 00     sts     0x00A6, r24\r
+\r
+                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Unfreeze(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PFREEZE);\r
+    10d0:      80 91 a9 00     lds     r24, 0x00A9\r
+    10d4:      8f 7b           andi    r24, 0xBF       ; 191\r
+    10d6:      80 93 a9 00     sts     0x00A9, r24\r
+       Pipe_SetPipeToken(PIPE_TOKEN_SETUP);\r
+       Pipe_ClearError();\r
+\r
+       Pipe_Unfreeze();\r
+\r
+       Pipe_Write_8(USB_ControlRequest.bmRequestType);\r
+    10da:      80 91 23 01     lds     r24, 0x0123\r
+                        *  \param[in] Data  Data to write into the the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_8(const uint8_t Data)\r
+                       {\r
+                               UPDATX = Data;\r
+    10de:      80 93 af 00     sts     0x00AF, r24\r
+       Pipe_Write_8(USB_ControlRequest.bRequest);\r
+    10e2:      80 91 24 01     lds     r24, 0x0124\r
+    10e6:      80 93 af 00     sts     0x00AF, r24\r
+       Pipe_Write_16_LE(USB_ControlRequest.wValue);\r
+    10ea:      90 91 25 01     lds     r25, 0x0125\r
+    10ee:      80 91 26 01     lds     r24, 0x0126\r
+                        *  \param[in] Data  Data to write to the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_16_LE(const uint16_t Data)\r
+                       {\r
+                               UPDATX = (Data & 0xFF);\r
+    10f2:      90 93 af 00     sts     0x00AF, r25\r
+                               UPDATX = (Data >> 8);\r
+    10f6:      80 93 af 00     sts     0x00AF, r24\r
+       Pipe_Write_16_LE(USB_ControlRequest.wIndex);\r
+    10fa:      90 91 27 01     lds     r25, 0x0127\r
+    10fe:      80 91 28 01     lds     r24, 0x0128\r
+                        *  \param[in] Data  Data to write to the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_16_LE(const uint16_t Data)\r
+                       {\r
+                               UPDATX = (Data & 0xFF);\r
+    1102:      90 93 af 00     sts     0x00AF, r25\r
+                               UPDATX = (Data >> 8);\r
+    1106:      80 93 af 00     sts     0x00AF, r24\r
+       Pipe_Write_16_LE(USB_ControlRequest.wLength);\r
+    110a:      90 91 29 01     lds     r25, 0x0129\r
+    110e:      80 91 2a 01     lds     r24, 0x012A\r
+                        *  \param[in] Data  Data to write to the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_16_LE(const uint16_t Data)\r
+                       {\r
+                               UPDATX = (Data & 0xFF);\r
+    1112:      90 93 af 00     sts     0x00AF, r25\r
+                               UPDATX = (Data >> 8);\r
+    1116:      80 93 af 00     sts     0x00AF, r24\r
+                        *  \ingroup Group_PipePacketManagement_AVR8\r
+                        */\r
+                       static inline void Pipe_ClearSETUP(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearSETUP(void)\r
+                       {\r
+                               UPINTX &= ~((1 << TXSTPI) | (1 << FIFOCON));\r
+    111a:      80 91 a6 00     lds     r24, 0x00A6\r
+    111e:      87 77           andi    r24, 0x77       ; 119\r
+    1120:      80 93 a6 00     sts     0x00A6, r24\r
+\r
+       Pipe_ClearSETUP();\r
+\r
+       if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_SetupSent)) != HOST_SENDCONTROL_Successful)\r
+    1124:      80 e0           ldi     r24, 0x00       ; 0\r
+    1126:      84 df           rcall   .-248           ; 0x1030 <USB_Host_WaitForIOS>\r
+    1128:      88 23           and     r24, r24\r
+    112a:      09 f0           breq    .+2             ; 0x112e <USB_Host_SendControlRequest+0xac>\r
+    112c:      a7 c0           rjmp    .+334           ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+\r
+                       /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+                       static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Freeze(void)\r
+                       {\r
+                               UPCONX |= (1 << PFREEZE);\r
+    112e:      80 91 a9 00     lds     r24, 0x00A9\r
+    1132:      80 64           ori     r24, 0x40       ; 64\r
+    1134:      80 93 a9 00     sts     0x00A9, r24\r
+         goto End_Of_Control_Send;\r
+\r
+       Pipe_Freeze();\r
+\r
+       if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
+    1138:      81 e0           ldi     r24, 0x01       ; 1\r
+    113a:      a1 db           rcall   .-2238          ; 0x87e <USB_Host_WaitMS>\r
+    113c:      88 23           and     r24, r24\r
+    113e:      09 f0           breq    .+2             ; 0x1142 <USB_Host_SendControlRequest+0xc0>\r
+    1140:      9d c0           rjmp    .+314           ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+         goto End_Of_Control_Send;\r
+\r
+       if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) == REQDIR_DEVICETOHOST)\r
+    1142:      80 91 23 01     lds     r24, 0x0123\r
+    1146:      87 ff           sbrs    r24, 7\r
+    1148:      4f c0           rjmp    .+158           ; 0x11e8 <USB_Host_SendControlRequest+0x166>\r
+                        *  \param[in] Token  New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+                        */\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+                       {\r
+                               UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+    114a:      80 91 aa 00     lds     r24, 0x00AA\r
+    114e:      8f 7c           andi    r24, 0xCF       ; 207\r
+    1150:      80 61           ori     r24, 0x10       ; 16\r
+    1152:      80 93 aa 00     sts     0x00AA, r24\r
+       {\r
+               Pipe_SetPipeToken(PIPE_TOKEN_IN);\r
+\r
+               if (DataStream != NULL)\r
+    1156:      01 15           cp      r16, r1\r
+    1158:      11 05           cpc     r17, r1\r
+    115a:      61 f5           brne    .+88            ; 0x11b4 <USB_Host_SendControlRequest+0x132>\r
+    115c:      2d c0           rjmp    .+90            ; 0x11b8 <USB_Host_SendControlRequest+0x136>\r
+\r
+                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Unfreeze(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PFREEZE);\r
+    115e:      80 91 a9 00     lds     r24, 0x00A9\r
+    1162:      8f 7b           andi    r24, 0xBF       ; 191\r
+    1164:      80 93 a9 00     sts     0x00A9, r24\r
+               {\r
+                       while (DataLen)\r
+                       {\r
+                               Pipe_Unfreeze();\r
+\r
+                               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)\r
+    1168:      81 e0           ldi     r24, 0x01       ; 1\r
+    116a:      62 df           rcall   .-316           ; 0x1030 <USB_Host_WaitForIOS>\r
+    116c:      88 23           and     r24, r24\r
+    116e:      09 f0           breq    .+2             ; 0x1172 <USB_Host_SendControlRequest+0xf0>\r
+    1170:      85 c0           rjmp    .+266           ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+                        *  \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Pipe_BytesInPipe(void)\r
+                       {\r
+                               return UPBCX;\r
+    1172:      80 91 f6 00     lds     r24, 0x00F6\r
+    1176:      90 91 f7 00     lds     r25, 0x00F7\r
+                                 goto End_Of_Control_Send;\r
+\r
+                               if (!(Pipe_BytesInPipe()))\r
+    117a:      00 97           sbiw    r24, 0x00       ; 0\r
+    117c:      49 f4           brne    .+18            ; 0x1190 <USB_Host_SendControlRequest+0x10e>\r
+                                 DataLen = 0;\r
+    117e:      c0 e0           ldi     r28, 0x00       ; 0\r
+    1180:      d0 e0           ldi     r29, 0x00       ; 0\r
+    1182:      06 c0           rjmp    .+12            ; 0x1190 <USB_Host_SendControlRequest+0x10e>\r
+                        *  \return Next byte in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint8_t Pipe_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_Read_8(void)\r
+                       {\r
+                               return UPDATX;\r
+    1184:      80 91 af 00     lds     r24, 0x00AF\r
+\r
+                               while (Pipe_BytesInPipe() && DataLen)\r
+                               {\r
+                                       *(DataStream++) = Pipe_Read_8();\r
+    1188:      f8 01           movw    r30, r16\r
+    118a:      81 93           st      Z+, r24\r
+    118c:      8f 01           movw    r16, r30\r
+                                       DataLen--;\r
+    118e:      21 97           sbiw    r28, 0x01       ; 1\r
+                        *  \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Pipe_BytesInPipe(void)\r
+                       {\r
+                               return UPBCX;\r
+    1190:      80 91 f6 00     lds     r24, 0x00F6\r
+    1194:      90 91 f7 00     lds     r25, 0x00F7\r
+                                 goto End_Of_Control_Send;\r
+\r
+                               if (!(Pipe_BytesInPipe()))\r
+                                 DataLen = 0;\r
+\r
+                               while (Pipe_BytesInPipe() && DataLen)\r
+    1198:      00 97           sbiw    r24, 0x00       ; 0\r
+    119a:      11 f0           breq    .+4             ; 0x11a0 <USB_Host_SendControlRequest+0x11e>\r
+    119c:      20 97           sbiw    r28, 0x00       ; 0\r
+    119e:      91 f7           brne    .-28            ; 0x1184 <USB_Host_SendControlRequest+0x102>\r
+\r
+                       /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+                       static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Freeze(void)\r
+                       {\r
+                               UPCONX |= (1 << PFREEZE);\r
+    11a0:      80 91 a9 00     lds     r24, 0x00A9\r
+    11a4:      80 64           ori     r24, 0x40       ; 64\r
+    11a6:      80 93 a9 00     sts     0x00A9, r24\r
+                        *  \ingroup Group_PipePacketManagement_AVR8\r
+                        */\r
+                       static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearIN(void)\r
+                       {\r
+                               UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));\r
+    11aa:      80 91 a6 00     lds     r24, 0x00A6\r
+    11ae:      8e 77           andi    r24, 0x7E       ; 126\r
+    11b0:      80 93 a6 00     sts     0x00A6, r24\r
+       {\r
+               Pipe_SetPipeToken(PIPE_TOKEN_IN);\r
+\r
+               if (DataStream != NULL)\r
+               {\r
+                       while (DataLen)\r
+    11b4:      20 97           sbiw    r28, 0x00       ; 0\r
+    11b6:      99 f6           brne    .-90            ; 0x115e <USB_Host_SendControlRequest+0xdc>\r
+                        *  \param[in] Token  New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+                        */\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+                       {\r
+                               UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+    11b8:      80 91 aa 00     lds     r24, 0x00AA\r
+    11bc:      8f 7c           andi    r24, 0xCF       ; 207\r
+    11be:      80 62           ori     r24, 0x20       ; 32\r
+    11c0:      80 93 aa 00     sts     0x00AA, r24\r
+\r
+                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Unfreeze(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PFREEZE);\r
+    11c4:      80 91 a9 00     lds     r24, 0x00A9\r
+    11c8:      8f 7b           andi    r24, 0xBF       ; 191\r
+    11ca:      80 93 a9 00     sts     0x00A9, r24\r
+               }\r
+\r
+               Pipe_SetPipeToken(PIPE_TOKEN_OUT);\r
+               Pipe_Unfreeze();\r
+\r
+               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+    11ce:      82 e0           ldi     r24, 0x02       ; 2\r
+    11d0:      2f df           rcall   .-418           ; 0x1030 <USB_Host_WaitForIOS>\r
+    11d2:      88 23           and     r24, r24\r
+    11d4:      09 f0           breq    .+2             ; 0x11d8 <USB_Host_SendControlRequest+0x156>\r
+    11d6:      52 c0           rjmp    .+164           ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+                        *  \ingroup Group_PipePacketManagement_AVR8\r
+                        */\r
+                       static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearOUT(void)\r
+                       {\r
+                               UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON));\r
+    11d8:      80 91 a6 00     lds     r24, 0x00A6\r
+    11dc:      8b 77           andi    r24, 0x7B       ; 123\r
+    11de:      80 93 a6 00     sts     0x00A6, r24\r
+                 goto End_Of_Control_Send;\r
+\r
+               Pipe_ClearOUT();\r
+\r
+               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+    11e2:      82 e0           ldi     r24, 0x02       ; 2\r
+    11e4:      25 df           rcall   .-438           ; 0x1030 <USB_Host_WaitForIOS>\r
+    11e6:      4a c0           rjmp    .+148           ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+                 goto End_Of_Control_Send;\r
+       }\r
+       else\r
+       {\r
+               if (DataStream != NULL)\r
+    11e8:      01 15           cp      r16, r1\r
+    11ea:      11 05           cpc     r17, r1\r
+    11ec:      99 f1           breq    .+102           ; 0x1254 <USB_Host_SendControlRequest+0x1d2>\r
+                        *  \param[in] Token  New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+                        */\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+                       {\r
+                               UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+    11ee:      80 91 aa 00     lds     r24, 0x00AA\r
+    11f2:      8f 7c           andi    r24, 0xCF       ; 207\r
+    11f4:      80 62           ori     r24, 0x20       ; 32\r
+    11f6:      80 93 aa 00     sts     0x00AA, r24\r
+\r
+                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Unfreeze(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PFREEZE);\r
+    11fa:      80 91 a9 00     lds     r24, 0x00A9\r
+    11fe:      8f 7b           andi    r24, 0xBF       ; 191\r
+    1200:      80 93 a9 00     sts     0x00A9, r24\r
+               {\r
+                       Pipe_SetPipeToken(PIPE_TOKEN_OUT);\r
+                       Pipe_Unfreeze();\r
+\r
+                       while (DataLen)\r
+    1204:      1c c0           rjmp    .+56            ; 0x123e <USB_Host_SendControlRequest+0x1bc>\r
+                       {\r
+                               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+    1206:      82 e0           ldi     r24, 0x02       ; 2\r
+    1208:      13 df           rcall   .-474           ; 0x1030 <USB_Host_WaitForIOS>\r
+    120a:      88 23           and     r24, r24\r
+    120c:      b9 f5           brne    .+110           ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+    120e:      f8 01           movw    r30, r16\r
+    1210:      06 c0           rjmp    .+12            ; 0x121e <USB_Host_SendControlRequest+0x19c>\r
+                                 goto End_Of_Control_Send;\r
+\r
+                               while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize))\r
+                               {\r
+                                       Pipe_Write_8(*(DataStream++));\r
+    1212:      81 91           ld      r24, Z+\r
+    1214:      8f 01           movw    r16, r30\r
+                        *  \param[in] Data  Data to write into the the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_8(const uint8_t Data)\r
+                       {\r
+                               UPDATX = Data;\r
+    1216:      80 93 af 00     sts     0x00AF, r24\r
+                                       DataLen--;\r
+    121a:      21 97           sbiw    r28, 0x01       ; 1\r
+                       while (DataLen)\r
+                       {\r
+                               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+                                 goto End_Of_Control_Send;\r
+\r
+                               while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize))\r
+    121c:      59 f0           breq    .+22            ; 0x1234 <USB_Host_SendControlRequest+0x1b2>\r
+    121e:      8f 01           movw    r16, r30\r
+                        *  \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Pipe_BytesInPipe(void)\r
+                       {\r
+                               return UPBCX;\r
+    1220:      20 91 f6 00     lds     r18, 0x00F6\r
+    1224:      30 91 f7 00     lds     r19, 0x00F7\r
+    1228:      80 91 1b 01     lds     r24, 0x011B\r
+    122c:      90 e0           ldi     r25, 0x00       ; 0\r
+    122e:      28 17           cp      r18, r24\r
+    1230:      39 07           cpc     r19, r25\r
+    1232:      78 f3           brcs    .-34            ; 0x1212 <USB_Host_SendControlRequest+0x190>\r
+                        *  \ingroup Group_PipePacketManagement_AVR8\r
+                        */\r
+                       static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearOUT(void)\r
+                       {\r
+                               UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON));\r
+    1234:      80 91 a6 00     lds     r24, 0x00A6\r
+    1238:      8b 77           andi    r24, 0x7B       ; 123\r
+    123a:      80 93 a6 00     sts     0x00A6, r24\r
+               if (DataStream != NULL)\r
+               {\r
+                       Pipe_SetPipeToken(PIPE_TOKEN_OUT);\r
+                       Pipe_Unfreeze();\r
+\r
+                       while (DataLen)\r
+    123e:      20 97           sbiw    r28, 0x00       ; 0\r
+    1240:      11 f7           brne    .-60            ; 0x1206 <USB_Host_SendControlRequest+0x184>\r
+                               }\r
+\r
+                               Pipe_ClearOUT();\r
+                       }\r
+\r
+                       if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)\r
+    1242:      82 e0           ldi     r24, 0x02       ; 2\r
+    1244:      f5 de           rcall   .-534           ; 0x1030 <USB_Host_WaitForIOS>\r
+    1246:      88 23           and     r24, r24\r
+    1248:      c9 f4           brne    .+50            ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+\r
+                       /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+                       static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Freeze(void)\r
+                       {\r
+                               UPCONX |= (1 << PFREEZE);\r
+    124a:      80 91 a9 00     lds     r24, 0x00A9\r
+    124e:      80 64           ori     r24, 0x40       ; 64\r
+    1250:      80 93 a9 00     sts     0x00A9, r24\r
+                        *  \param[in] Token  New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+                        */\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+                       {\r
+                               UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);\r
+    1254:      80 91 aa 00     lds     r24, 0x00AA\r
+    1258:      8f 7c           andi    r24, 0xCF       ; 207\r
+    125a:      80 61           ori     r24, 0x10       ; 16\r
+    125c:      80 93 aa 00     sts     0x00AA, r24\r
+\r
+                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Unfreeze(void)\r
+                       {\r
+                               UPCONX &= ~(1 << PFREEZE);\r
+    1260:      80 91 a9 00     lds     r24, 0x00A9\r
+    1264:      8f 7b           andi    r24, 0xBF       ; 191\r
+    1266:      80 93 a9 00     sts     0x00A9, r24\r
+               }\r
+\r
+               Pipe_SetPipeToken(PIPE_TOKEN_IN);\r
+               Pipe_Unfreeze();\r
+\r
+               if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)\r
+    126a:      81 e0           ldi     r24, 0x01       ; 1\r
+    126c:      e1 de           rcall   .-574           ; 0x1030 <USB_Host_WaitForIOS>\r
+    126e:      88 23           and     r24, r24\r
+    1270:      29 f4           brne    .+10            ; 0x127c <USB_Host_SendControlRequest+0x1fa>\r
+                        *  \ingroup Group_PipePacketManagement_AVR8\r
+                        */\r
+                       static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearIN(void)\r
+                       {\r
+                               UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));\r
+    1272:      90 91 a6 00     lds     r25, 0x00A6\r
+    1276:      9e 77           andi    r25, 0x7E       ; 126\r
+    1278:      90 93 a6 00     sts     0x00A6, r25\r
+\r
+                       /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+                       static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Freeze(void)\r
+                       {\r
+                               UPCONX |= (1 << PFREEZE);\r
+    127c:      90 91 a9 00     lds     r25, 0x00A9\r
+    1280:      90 64           ori     r25, 0x40       ; 64\r
+    1282:      90 93 a9 00     sts     0x00A9, r25\r
+       }\r
+\r
+End_Of_Control_Send:\r
+       Pipe_Freeze();\r
+\r
+       if (BusSuspended)\r
+    1286:      e1 14           cp      r14, r1\r
+    1288:      f1 04           cpc     r15, r1\r
+    128a:      29 f4           brne    .+10            ; 0x1296 <USB_Host_SendControlRequest+0x214>\r
+                        *  messages to the device.\r
+                        */\r
+                       static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Host_SuspendBus(void)\r
+                       {\r
+                               UHCON &= ~(1 << SOFEN);\r
+    128c:      90 91 9e 00     lds     r25, 0x009E\r
+    1290:      9e 7f           andi    r25, 0xFE       ; 254\r
+    1292:      90 93 9e 00     sts     0x009E, r25\r
+                        *  \param[in] PipeNumber  Index of the pipe to reset.\r
+                        */\r
+                       static inline void Pipe_ResetPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ResetPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPRST = (1 << PipeNumber);\r
+    1296:      91 e0           ldi     r25, 0x01       ; 1\r
+    1298:      90 93 a8 00     sts     0x00A8, r25\r
+                               UPRST = 0;\r
+    129c:      10 92 a8 00     sts     0x00A8, r1\r
+         USB_Host_SuspendBus();\r
+\r
+       Pipe_ResetPipe(PIPE_CONTROLPIPE);\r
+\r
+       return ReturnStatus;\r
+}\r
+    12a0:      df 91           pop     r29\r
+    12a2:      cf 91           pop     r28\r
+    12a4:      1f 91           pop     r17\r
+    12a6:      0f 91           pop     r16\r
+    12a8:      ff 90           pop     r15\r
+    12aa:      ef 90           pop     r14\r
+    12ac:      08 95           ret\r
+\r
+000012ae <USB_USBTask>:\r
+#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)\r
+volatile uint8_t     USB_DeviceState;\r
+#endif\r
+\r
+void USB_USBTask(void)\r
+{\r
+    12ae:      1f 93           push    r17\r
+    12b0:      cf 93           push    r28\r
+    12b2:      df 93           push    r29\r
+                        *  \return Index of the currently selected pipe.\r
+                        */\r
+                       static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_GetCurrentPipe(void)\r
+                       {\r
+                               return (UPNUM & PIPE_PIPENUM_MASK);\r
+    12b4:      c7 ea           ldi     r28, 0xA7       ; 167\r
+    12b6:      d0 e0           ldi     r29, 0x00       ; 0\r
+    12b8:      18 81           ld      r17, Y\r
+    12ba:      17 70           andi    r17, 0x07       ; 7\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               UPNUM = PipeNumber;\r
+    12bc:      18 82           st      Y, r1\r
+{\r
+       uint8_t PrevPipe = Pipe_GetCurrentPipe();\r
+\r
+       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+\r
+       USB_Host_ProcessNextHostState();\r
+    12be:      34 db           rcall   .-2456          ; 0x928 <USB_Host_ProcessNextHostState>\r
+    12c0:      18 83           st      Y, r17\r
+               if (USB_CurrentMode == USB_MODE_Device)\r
+                 USB_DeviceTask();\r
+               else if (USB_CurrentMode == USB_MODE_Host)\r
+                 USB_HostTask();\r
+       #endif\r
+}\r
+    12c2:      df 91           pop     r29\r
+    12c4:      cf 91           pop     r28\r
+    12c6:      1f 91           pop     r17\r
+    12c8:      08 95           ret\r
+\r
+000012ca <Serial_putchar>:\r
+                        *  \param[in] DataByte  Byte to transmit through the USART.\r
+                        */\r
+                       static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE;\r
+                       static inline void Serial_SendByte(const char DataByte)\r
+                       {\r
+                               while (!(UCSR1A & (1 << UDRE1)));\r
+    12ca:      90 91 c8 00     lds     r25, 0x00C8\r
+    12ce:      95 ff           sbrs    r25, 5\r
+    12d0:      fc cf           rjmp    .-8             ; 0x12ca <Serial_putchar>\r
+                               UDR1 = DataByte;\r
+    12d2:      80 93 ce 00     sts     0x00CE, r24\r
+{\r
+       (void)Stream;\r
+\r
+       Serial_SendByte(DataByte);\r
+       return 0;\r
+}\r
+    12d6:      80 e0           ldi     r24, 0x00       ; 0\r
+    12d8:      90 e0           ldi     r25, 0x00       ; 0\r
+    12da:      08 95           ret\r
+\r
+000012dc <Serial_getchar>:\r
+                        *  \return Boolean \c true if a character has been received, \c false otherwise.\r
+                        */\r
+                       static inline bool Serial_IsCharReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Serial_IsCharReceived(void)\r
+                       {\r
+                               return ((UCSR1A & (1 << RXC1)) ? true : false);\r
+    12dc:      80 91 c8 00     lds     r24, 0x00C8\r
+\r
+int Serial_getchar(FILE *Stream)\r
+{\r
+       (void)Stream;\r
+\r
+       if (!(Serial_IsCharReceived()))\r
+    12e0:      87 ff           sbrs    r24, 7\r
+    12e2:      08 c0           rjmp    .+16            ; 0x12f4 <Serial_getchar+0x18>\r
+    12e4:      80 91 c8 00     lds     r24, 0x00C8\r
+                        *  \return Next byte received from the USART, or a negative value if no byte has been received.\r
+                        */\r
+                       static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE;\r
+                       static inline int16_t Serial_ReceiveByte(void)\r
+                       {\r
+                               if (!(Serial_IsCharReceived()))\r
+    12e8:      87 ff           sbrs    r24, 7\r
+    12ea:      07 c0           rjmp    .+14            ; 0x12fa <Serial_getchar+0x1e>\r
+                                 return -1;\r
+                               \r
+                               return UDR1;\r
+    12ec:      20 91 ce 00     lds     r18, 0x00CE\r
+    12f0:      30 e0           ldi     r19, 0x00       ; 0\r
+    12f2:      05 c0           rjmp    .+10            ; 0x12fe <Serial_getchar+0x22>\r
+         return _FDEV_EOF;\r
+    12f4:      2e ef           ldi     r18, 0xFE       ; 254\r
+    12f6:      3f ef           ldi     r19, 0xFF       ; 255\r
+    12f8:      02 c0           rjmp    .+4             ; 0x12fe <Serial_getchar+0x22>\r
+                        */\r
+                       static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE;\r
+                       static inline int16_t Serial_ReceiveByte(void)\r
+                       {\r
+                               if (!(Serial_IsCharReceived()))\r
+                                 return -1;\r
+    12fa:      2f ef           ldi     r18, 0xFF       ; 255\r
+    12fc:      3f ef           ldi     r19, 0xFF       ; 255\r
+\r
+       return Serial_ReceiveByte();\r
+}\r
+    12fe:      c9 01           movw    r24, r18\r
+    1300:      08 95           ret\r
+\r
+00001302 <printf_P>:\r
+    1302:      df 93           push    r29\r
+    1304:      cf 93           push    r28\r
+    1306:      cd b7           in      r28, 0x3d       ; 61\r
+    1308:      de b7           in      r29, 0x3e       ; 62\r
+    130a:      fe 01           movw    r30, r28\r
+    130c:      35 96           adiw    r30, 0x05       ; 5\r
+    130e:      61 91           ld      r22, Z+\r
+    1310:      71 91           ld      r23, Z+\r
+    1312:      80 91 3c 01     lds     r24, 0x013C\r
+    1316:      90 91 3d 01     lds     r25, 0x013D\r
+    131a:      dc 01           movw    r26, r24\r
+    131c:      13 96           adiw    r26, 0x03       ; 3\r
+    131e:      2c 91           ld      r18, X\r
+    1320:      13 97           sbiw    r26, 0x03       ; 3\r
+    1322:      28 60           ori     r18, 0x08       ; 8\r
+    1324:      13 96           adiw    r26, 0x03       ; 3\r
+    1326:      2c 93           st      X, r18\r
+    1328:      af 01           movw    r20, r30\r
+    132a:      42 d0           rcall   .+132           ; 0x13b0 <vfprintf>\r
+    132c:      e0 91 3c 01     lds     r30, 0x013C\r
+    1330:      f0 91 3d 01     lds     r31, 0x013D\r
+    1334:      23 81           ldd     r18, Z+3        ; 0x03\r
+    1336:      27 7f           andi    r18, 0xF7       ; 247\r
+    1338:      23 83           std     Z+3, r18        ; 0x03\r
+    133a:      cf 91           pop     r28\r
+    133c:      df 91           pop     r29\r
+    133e:      08 95           ret\r
+\r
+00001340 <puts_P>:\r
+    1340:      ef 92           push    r14\r
+    1342:      ff 92           push    r15\r
+    1344:      0f 93           push    r16\r
+    1346:      1f 93           push    r17\r
+    1348:      cf 93           push    r28\r
+    134a:      df 93           push    r29\r
+    134c:      8c 01           movw    r16, r24\r
+    134e:      e0 91 3c 01     lds     r30, 0x013C\r
+    1352:      f0 91 3d 01     lds     r31, 0x013D\r
+    1356:      83 81           ldd     r24, Z+3        ; 0x03\r
+    1358:      81 ff           sbrs    r24, 1\r
+    135a:      20 c0           rjmp    .+64            ; 0x139c <puts_P+0x5c>\r
+    135c:      c0 e0           ldi     r28, 0x00       ; 0\r
+    135e:      d0 e0           ldi     r29, 0x00       ; 0\r
+    1360:      0c c0           rjmp    .+24            ; 0x137a <puts_P+0x3a>\r
+    1362:      db 01           movw    r26, r22\r
+    1364:      18 96           adiw    r26, 0x08       ; 8\r
+    1366:      ed 91           ld      r30, X+\r
+    1368:      fc 91           ld      r31, X\r
+    136a:      19 97           sbiw    r26, 0x09       ; 9\r
+    136c:      09 95           icall\r
+    136e:      00 97           sbiw    r24, 0x00       ; 0\r
+    1370:      11 f0           breq    .+4             ; 0x1376 <puts_P+0x36>\r
+    1372:      cf ef           ldi     r28, 0xFF       ; 255\r
+    1374:      df ef           ldi     r29, 0xFF       ; 255\r
+    1376:      0f 5f           subi    r16, 0xFF       ; 255\r
+    1378:      1f 4f           sbci    r17, 0xFF       ; 255\r
+    137a:      f8 01           movw    r30, r16\r
+    137c:      84 91           lpm     r24, Z+\r
+    137e:      60 91 3c 01     lds     r22, 0x013C\r
+    1382:      70 91 3d 01     lds     r23, 0x013D\r
+    1386:      88 23           and     r24, r24\r
+    1388:      61 f7           brne    .-40            ; 0x1362 <puts_P+0x22>\r
+    138a:      db 01           movw    r26, r22\r
+    138c:      18 96           adiw    r26, 0x08       ; 8\r
+    138e:      ed 91           ld      r30, X+\r
+    1390:      fc 91           ld      r31, X\r
+    1392:      19 97           sbiw    r26, 0x09       ; 9\r
+    1394:      8a e0           ldi     r24, 0x0A       ; 10\r
+    1396:      09 95           icall\r
+    1398:      00 97           sbiw    r24, 0x00       ; 0\r
+    139a:      11 f0           breq    .+4             ; 0x13a0 <puts_P+0x60>\r
+    139c:      cf ef           ldi     r28, 0xFF       ; 255\r
+    139e:      df ef           ldi     r29, 0xFF       ; 255\r
+    13a0:      ce 01           movw    r24, r28\r
+    13a2:      df 91           pop     r29\r
+    13a4:      cf 91           pop     r28\r
+    13a6:      1f 91           pop     r17\r
+    13a8:      0f 91           pop     r16\r
+    13aa:      ff 90           pop     r15\r
+    13ac:      ef 90           pop     r14\r
+    13ae:      08 95           ret\r
+\r
+000013b0 <vfprintf>:\r
+    13b0:      2f 92           push    r2\r
+    13b2:      3f 92           push    r3\r
+    13b4:      4f 92           push    r4\r
+    13b6:      5f 92           push    r5\r
+    13b8:      6f 92           push    r6\r
+    13ba:      7f 92           push    r7\r
+    13bc:      8f 92           push    r8\r
+    13be:      9f 92           push    r9\r
+    13c0:      af 92           push    r10\r
+    13c2:      bf 92           push    r11\r
+    13c4:      cf 92           push    r12\r
+    13c6:      df 92           push    r13\r
+    13c8:      ef 92           push    r14\r
+    13ca:      ff 92           push    r15\r
+    13cc:      0f 93           push    r16\r
+    13ce:      1f 93           push    r17\r
+    13d0:      df 93           push    r29\r
+    13d2:      cf 93           push    r28\r
+    13d4:      cd b7           in      r28, 0x3d       ; 61\r
+    13d6:      de b7           in      r29, 0x3e       ; 62\r
+    13d8:      2c 97           sbiw    r28, 0x0c       ; 12\r
+    13da:      0f b6           in      r0, 0x3f        ; 63\r
+    13dc:      f8 94           cli\r
+    13de:      de bf           out     0x3e, r29       ; 62\r
+    13e0:      0f be           out     0x3f, r0        ; 63\r
+    13e2:      cd bf           out     0x3d, r28       ; 61\r
+    13e4:      6c 01           movw    r12, r24\r
+    13e6:      1b 01           movw    r2, r22\r
+    13e8:      8a 01           movw    r16, r20\r
+    13ea:      fc 01           movw    r30, r24\r
+    13ec:      17 82           std     Z+7, r1 ; 0x07\r
+    13ee:      16 82           std     Z+6, r1 ; 0x06\r
+    13f0:      83 81           ldd     r24, Z+3        ; 0x03\r
+    13f2:      81 ff           sbrs    r24, 1\r
+    13f4:      c4 c1           rjmp    .+904           ; 0x177e <vfprintf+0x3ce>\r
+    13f6:      2e 01           movw    r4, r28\r
+    13f8:      08 94           sec\r
+    13fa:      41 1c           adc     r4, r1\r
+    13fc:      51 1c           adc     r5, r1\r
+    13fe:      f6 01           movw    r30, r12\r
+    1400:      93 81           ldd     r25, Z+3        ; 0x03\r
+    1402:      f1 01           movw    r30, r2\r
+    1404:      93 fd           sbrc    r25, 3\r
+    1406:      85 91           lpm     r24, Z+\r
+    1408:      93 ff           sbrs    r25, 3\r
+    140a:      81 91           ld      r24, Z+\r
+    140c:      1f 01           movw    r2, r30\r
+    140e:      88 23           and     r24, r24\r
+    1410:      09 f4           brne    .+2             ; 0x1414 <vfprintf+0x64>\r
+    1412:      b1 c1           rjmp    .+866           ; 0x1776 <vfprintf+0x3c6>\r
+    1414:      85 32           cpi     r24, 0x25       ; 37\r
+    1416:      39 f4           brne    .+14            ; 0x1426 <vfprintf+0x76>\r
+    1418:      93 fd           sbrc    r25, 3\r
+    141a:      85 91           lpm     r24, Z+\r
+    141c:      93 ff           sbrs    r25, 3\r
+    141e:      81 91           ld      r24, Z+\r
+    1420:      1f 01           movw    r2, r30\r
+    1422:      85 32           cpi     r24, 0x25       ; 37\r
+    1424:      21 f4           brne    .+8             ; 0x142e <vfprintf+0x7e>\r
+    1426:      90 e0           ldi     r25, 0x00       ; 0\r
+    1428:      b6 01           movw    r22, r12\r
+    142a:      db d1           rcall   .+950           ; 0x17e2 <fputc>\r
+    142c:      e8 cf           rjmp    .-48            ; 0x13fe <vfprintf+0x4e>\r
+    142e:      ee 24           eor     r14, r14\r
+    1430:      ff 24           eor     r15, r15\r
+    1432:      20 e0           ldi     r18, 0x00       ; 0\r
+    1434:      20 32           cpi     r18, 0x20       ; 32\r
+    1436:      b0 f4           brcc    .+44            ; 0x1464 <vfprintf+0xb4>\r
+    1438:      8b 32           cpi     r24, 0x2B       ; 43\r
+    143a:      69 f0           breq    .+26            ; 0x1456 <vfprintf+0xa6>\r
+    143c:      8c 32           cpi     r24, 0x2C       ; 44\r
+    143e:      28 f4           brcc    .+10            ; 0x144a <vfprintf+0x9a>\r
+    1440:      80 32           cpi     r24, 0x20       ; 32\r
+    1442:      51 f0           breq    .+20            ; 0x1458 <vfprintf+0xa8>\r
+    1444:      83 32           cpi     r24, 0x23       ; 35\r
+    1446:      71 f4           brne    .+28            ; 0x1464 <vfprintf+0xb4>\r
+    1448:      0b c0           rjmp    .+22            ; 0x1460 <vfprintf+0xb0>\r
+    144a:      8d 32           cpi     r24, 0x2D       ; 45\r
+    144c:      39 f0           breq    .+14            ; 0x145c <vfprintf+0xac>\r
+    144e:      80 33           cpi     r24, 0x30       ; 48\r
+    1450:      49 f4           brne    .+18            ; 0x1464 <vfprintf+0xb4>\r
+    1452:      21 60           ori     r18, 0x01       ; 1\r
+    1454:      2c c0           rjmp    .+88            ; 0x14ae <vfprintf+0xfe>\r
+    1456:      22 60           ori     r18, 0x02       ; 2\r
+    1458:      24 60           ori     r18, 0x04       ; 4\r
+    145a:      29 c0           rjmp    .+82            ; 0x14ae <vfprintf+0xfe>\r
+    145c:      28 60           ori     r18, 0x08       ; 8\r
+    145e:      27 c0           rjmp    .+78            ; 0x14ae <vfprintf+0xfe>\r
+    1460:      20 61           ori     r18, 0x10       ; 16\r
+    1462:      25 c0           rjmp    .+74            ; 0x14ae <vfprintf+0xfe>\r
+    1464:      27 fd           sbrc    r18, 7\r
+    1466:      2c c0           rjmp    .+88            ; 0x14c0 <vfprintf+0x110>\r
+    1468:      38 2f           mov     r19, r24\r
+    146a:      30 53           subi    r19, 0x30       ; 48\r
+    146c:      3a 30           cpi     r19, 0x0A       ; 10\r
+    146e:      98 f4           brcc    .+38            ; 0x1496 <vfprintf+0xe6>\r
+    1470:      26 ff           sbrs    r18, 6\r
+    1472:      08 c0           rjmp    .+16            ; 0x1484 <vfprintf+0xd4>\r
+    1474:      8e 2d           mov     r24, r14\r
+    1476:      88 0f           add     r24, r24\r
+    1478:      e8 2e           mov     r14, r24\r
+    147a:      ee 0c           add     r14, r14\r
+    147c:      ee 0c           add     r14, r14\r
+    147e:      e8 0e           add     r14, r24\r
+    1480:      e3 0e           add     r14, r19\r
+    1482:      15 c0           rjmp    .+42            ; 0x14ae <vfprintf+0xfe>\r
+    1484:      8f 2d           mov     r24, r15\r
+    1486:      88 0f           add     r24, r24\r
+    1488:      f8 2e           mov     r15, r24\r
+    148a:      ff 0c           add     r15, r15\r
+    148c:      ff 0c           add     r15, r15\r
+    148e:      f8 0e           add     r15, r24\r
+    1490:      f3 0e           add     r15, r19\r
+    1492:      20 62           ori     r18, 0x20       ; 32\r
+    1494:      0c c0           rjmp    .+24            ; 0x14ae <vfprintf+0xfe>\r
+    1496:      8e 32           cpi     r24, 0x2E       ; 46\r
+    1498:      21 f4           brne    .+8             ; 0x14a2 <vfprintf+0xf2>\r
+    149a:      26 fd           sbrc    r18, 6\r
+    149c:      6c c1           rjmp    .+728           ; 0x1776 <vfprintf+0x3c6>\r
+    149e:      20 64           ori     r18, 0x40       ; 64\r
+    14a0:      06 c0           rjmp    .+12            ; 0x14ae <vfprintf+0xfe>\r
+    14a2:      8c 36           cpi     r24, 0x6C       ; 108\r
+    14a4:      11 f4           brne    .+4             ; 0x14aa <vfprintf+0xfa>\r
+    14a6:      20 68           ori     r18, 0x80       ; 128\r
+    14a8:      02 c0           rjmp    .+4             ; 0x14ae <vfprintf+0xfe>\r
+    14aa:      88 36           cpi     r24, 0x68       ; 104\r
+    14ac:      49 f4           brne    .+18            ; 0x14c0 <vfprintf+0x110>\r
+    14ae:      f1 01           movw    r30, r2\r
+    14b0:      93 fd           sbrc    r25, 3\r
+    14b2:      85 91           lpm     r24, Z+\r
+    14b4:      93 ff           sbrs    r25, 3\r
+    14b6:      81 91           ld      r24, Z+\r
+    14b8:      1f 01           movw    r2, r30\r
+    14ba:      88 23           and     r24, r24\r
+    14bc:      09 f0           breq    .+2             ; 0x14c0 <vfprintf+0x110>\r
+    14be:      ba cf           rjmp    .-140           ; 0x1434 <vfprintf+0x84>\r
+    14c0:      98 2f           mov     r25, r24\r
+    14c2:      95 54           subi    r25, 0x45       ; 69\r
+    14c4:      93 30           cpi     r25, 0x03       ; 3\r
+    14c6:      18 f0           brcs    .+6             ; 0x14ce <vfprintf+0x11e>\r
+    14c8:      90 52           subi    r25, 0x20       ; 32\r
+    14ca:      93 30           cpi     r25, 0x03       ; 3\r
+    14cc:      28 f4           brcc    .+10            ; 0x14d8 <vfprintf+0x128>\r
+    14ce:      0c 5f           subi    r16, 0xFC       ; 252\r
+    14d0:      1f 4f           sbci    r17, 0xFF       ; 255\r
+    14d2:      ff e3           ldi     r31, 0x3F       ; 63\r
+    14d4:      f9 83           std     Y+1, r31        ; 0x01\r
+    14d6:      0d c0           rjmp    .+26            ; 0x14f2 <vfprintf+0x142>\r
+    14d8:      83 36           cpi     r24, 0x63       ; 99\r
+    14da:      31 f0           breq    .+12            ; 0x14e8 <vfprintf+0x138>\r
+    14dc:      83 37           cpi     r24, 0x73       ; 115\r
+    14de:      71 f0           breq    .+28            ; 0x14fc <vfprintf+0x14c>\r
+    14e0:      83 35           cpi     r24, 0x53       ; 83\r
+    14e2:      09 f0           breq    .+2             ; 0x14e6 <vfprintf+0x136>\r
+    14e4:      5c c0           rjmp    .+184           ; 0x159e <vfprintf+0x1ee>\r
+    14e6:      21 c0           rjmp    .+66            ; 0x152a <vfprintf+0x17a>\r
+    14e8:      f8 01           movw    r30, r16\r
+    14ea:      80 81           ld      r24, Z\r
+    14ec:      89 83           std     Y+1, r24        ; 0x01\r
+    14ee:      0e 5f           subi    r16, 0xFE       ; 254\r
+    14f0:      1f 4f           sbci    r17, 0xFF       ; 255\r
+    14f2:      42 01           movw    r8, r4\r
+    14f4:      71 e0           ldi     r23, 0x01       ; 1\r
+    14f6:      a7 2e           mov     r10, r23\r
+    14f8:      b1 2c           mov     r11, r1\r
+    14fa:      15 c0           rjmp    .+42            ; 0x1526 <vfprintf+0x176>\r
+    14fc:      62 e0           ldi     r22, 0x02       ; 2\r
+    14fe:      66 2e           mov     r6, r22\r
+    1500:      71 2c           mov     r7, r1\r
+    1502:      60 0e           add     r6, r16\r
+    1504:      71 1e           adc     r7, r17\r
+    1506:      f8 01           movw    r30, r16\r
+    1508:      80 80           ld      r8, Z\r
+    150a:      91 80           ldd     r9, Z+1 ; 0x01\r
+    150c:      26 ff           sbrs    r18, 6\r
+    150e:      03 c0           rjmp    .+6             ; 0x1516 <vfprintf+0x166>\r
+    1510:      6e 2d           mov     r22, r14\r
+    1512:      70 e0           ldi     r23, 0x00       ; 0\r
+    1514:      02 c0           rjmp    .+4             ; 0x151a <vfprintf+0x16a>\r
+    1516:      6f ef           ldi     r22, 0xFF       ; 255\r
+    1518:      7f ef           ldi     r23, 0xFF       ; 255\r
+    151a:      c4 01           movw    r24, r8\r
+    151c:      2c 87           std     Y+12, r18       ; 0x0c\r
+    151e:      56 d1           rcall   .+684           ; 0x17cc <strnlen>\r
+    1520:      5c 01           movw    r10, r24\r
+    1522:      83 01           movw    r16, r6\r
+    1524:      2c 85           ldd     r18, Y+12       ; 0x0c\r
+    1526:      2f 77           andi    r18, 0x7F       ; 127\r
+    1528:      16 c0           rjmp    .+44            ; 0x1556 <vfprintf+0x1a6>\r
+    152a:      52 e0           ldi     r21, 0x02       ; 2\r
+    152c:      65 2e           mov     r6, r21\r
+    152e:      71 2c           mov     r7, r1\r
+    1530:      60 0e           add     r6, r16\r
+    1532:      71 1e           adc     r7, r17\r
+    1534:      f8 01           movw    r30, r16\r
+    1536:      80 80           ld      r8, Z\r
+    1538:      91 80           ldd     r9, Z+1 ; 0x01\r
+    153a:      26 ff           sbrs    r18, 6\r
+    153c:      03 c0           rjmp    .+6             ; 0x1544 <vfprintf+0x194>\r
+    153e:      6e 2d           mov     r22, r14\r
+    1540:      70 e0           ldi     r23, 0x00       ; 0\r
+    1542:      02 c0           rjmp    .+4             ; 0x1548 <vfprintf+0x198>\r
+    1544:      6f ef           ldi     r22, 0xFF       ; 255\r
+    1546:      7f ef           ldi     r23, 0xFF       ; 255\r
+    1548:      c4 01           movw    r24, r8\r
+    154a:      2c 87           std     Y+12, r18       ; 0x0c\r
+    154c:      34 d1           rcall   .+616           ; 0x17b6 <strnlen_P>\r
+    154e:      5c 01           movw    r10, r24\r
+    1550:      2c 85           ldd     r18, Y+12       ; 0x0c\r
+    1552:      20 68           ori     r18, 0x80       ; 128\r
+    1554:      83 01           movw    r16, r6\r
+    1556:      23 fd           sbrc    r18, 3\r
+    1558:      1e c0           rjmp    .+60            ; 0x1596 <vfprintf+0x1e6>\r
+    155a:      07 c0           rjmp    .+14            ; 0x156a <vfprintf+0x1ba>\r
+    155c:      80 e2           ldi     r24, 0x20       ; 32\r
+    155e:      90 e0           ldi     r25, 0x00       ; 0\r
+    1560:      b6 01           movw    r22, r12\r
+    1562:      2c 87           std     Y+12, r18       ; 0x0c\r
+    1564:      3e d1           rcall   .+636           ; 0x17e2 <fputc>\r
+    1566:      fa 94           dec     r15\r
+    1568:      2c 85           ldd     r18, Y+12       ; 0x0c\r
+    156a:      8f 2d           mov     r24, r15\r
+    156c:      90 e0           ldi     r25, 0x00       ; 0\r
+    156e:      a8 16           cp      r10, r24\r
+    1570:      b9 06           cpc     r11, r25\r
+    1572:      a0 f3           brcs    .-24            ; 0x155c <vfprintf+0x1ac>\r
+    1574:      10 c0           rjmp    .+32            ; 0x1596 <vfprintf+0x1e6>\r
+    1576:      f4 01           movw    r30, r8\r
+    1578:      27 fd           sbrc    r18, 7\r
+    157a:      85 91           lpm     r24, Z+\r
+    157c:      27 ff           sbrs    r18, 7\r
+    157e:      81 91           ld      r24, Z+\r
+    1580:      4f 01           movw    r8, r30\r
+    1582:      90 e0           ldi     r25, 0x00       ; 0\r
+    1584:      b6 01           movw    r22, r12\r
+    1586:      2c 87           std     Y+12, r18       ; 0x0c\r
+    1588:      2c d1           rcall   .+600           ; 0x17e2 <fputc>\r
+    158a:      2c 85           ldd     r18, Y+12       ; 0x0c\r
+    158c:      f1 10           cpse    r15, r1\r
+    158e:      fa 94           dec     r15\r
+    1590:      08 94           sec\r
+    1592:      a1 08           sbc     r10, r1\r
+    1594:      b1 08           sbc     r11, r1\r
+    1596:      a1 14           cp      r10, r1\r
+    1598:      b1 04           cpc     r11, r1\r
+    159a:      69 f7           brne    .-38            ; 0x1576 <vfprintf+0x1c6>\r
+    159c:      e9 c0           rjmp    .+466           ; 0x1770 <vfprintf+0x3c0>\r
+    159e:      84 36           cpi     r24, 0x64       ; 100\r
+    15a0:      11 f0           breq    .+4             ; 0x15a6 <vfprintf+0x1f6>\r
+    15a2:      89 36           cpi     r24, 0x69       ; 105\r
+    15a4:      41 f5           brne    .+80            ; 0x15f6 <vfprintf+0x246>\r
+    15a6:      27 ff           sbrs    r18, 7\r
+    15a8:      08 c0           rjmp    .+16            ; 0x15ba <vfprintf+0x20a>\r
+    15aa:      f8 01           movw    r30, r16\r
+    15ac:      60 81           ld      r22, Z\r
+    15ae:      71 81           ldd     r23, Z+1        ; 0x01\r
+    15b0:      82 81           ldd     r24, Z+2        ; 0x02\r
+    15b2:      93 81           ldd     r25, Z+3        ; 0x03\r
+    15b4:      0c 5f           subi    r16, 0xFC       ; 252\r
+    15b6:      1f 4f           sbci    r17, 0xFF       ; 255\r
+    15b8:      09 c0           rjmp    .+18            ; 0x15cc <vfprintf+0x21c>\r
+    15ba:      f8 01           movw    r30, r16\r
+    15bc:      60 81           ld      r22, Z\r
+    15be:      71 81           ldd     r23, Z+1        ; 0x01\r
+    15c0:      88 27           eor     r24, r24\r
+    15c2:      77 fd           sbrc    r23, 7\r
+    15c4:      80 95           com     r24\r
+    15c6:      98 2f           mov     r25, r24\r
+    15c8:      0e 5f           subi    r16, 0xFE       ; 254\r
+    15ca:      1f 4f           sbci    r17, 0xFF       ; 255\r
+    15cc:      4f e6           ldi     r20, 0x6F       ; 111\r
+    15ce:      b4 2e           mov     r11, r20\r
+    15d0:      b2 22           and     r11, r18\r
+    15d2:      97 ff           sbrs    r25, 7\r
+    15d4:      09 c0           rjmp    .+18            ; 0x15e8 <vfprintf+0x238>\r
+    15d6:      90 95           com     r25\r
+    15d8:      80 95           com     r24\r
+    15da:      70 95           com     r23\r
+    15dc:      61 95           neg     r22\r
+    15de:      7f 4f           sbci    r23, 0xFF       ; 255\r
+    15e0:      8f 4f           sbci    r24, 0xFF       ; 255\r
+    15e2:      9f 4f           sbci    r25, 0xFF       ; 255\r
+    15e4:      f0 e8           ldi     r31, 0x80       ; 128\r
+    15e6:      bf 2a           or      r11, r31\r
+    15e8:      a2 01           movw    r20, r4\r
+    15ea:      2a e0           ldi     r18, 0x0A       ; 10\r
+    15ec:      30 e0           ldi     r19, 0x00       ; 0\r
+    15ee:      25 d1           rcall   .+586           ; 0x183a <__ultoa_invert>\r
+    15f0:      78 2e           mov     r7, r24\r
+    15f2:      74 18           sub     r7, r4\r
+    15f4:      44 c0           rjmp    .+136           ; 0x167e <vfprintf+0x2ce>\r
+    15f6:      85 37           cpi     r24, 0x75       ; 117\r
+    15f8:      31 f4           brne    .+12            ; 0x1606 <vfprintf+0x256>\r
+    15fa:      3f ee           ldi     r19, 0xEF       ; 239\r
+    15fc:      b3 2e           mov     r11, r19\r
+    15fe:      b2 22           and     r11, r18\r
+    1600:      2a e0           ldi     r18, 0x0A       ; 10\r
+    1602:      30 e0           ldi     r19, 0x00       ; 0\r
+    1604:      25 c0           rjmp    .+74            ; 0x1650 <vfprintf+0x2a0>\r
+    1606:      99 ef           ldi     r25, 0xF9       ; 249\r
+    1608:      b9 2e           mov     r11, r25\r
+    160a:      b2 22           and     r11, r18\r
+    160c:      8f 36           cpi     r24, 0x6F       ; 111\r
+    160e:      c1 f0           breq    .+48            ; 0x1640 <vfprintf+0x290>\r
+    1610:      80 37           cpi     r24, 0x70       ; 112\r
+    1612:      20 f4           brcc    .+8             ; 0x161c <vfprintf+0x26c>\r
+    1614:      88 35           cpi     r24, 0x58       ; 88\r
+    1616:      09 f0           breq    .+2             ; 0x161a <vfprintf+0x26a>\r
+    1618:      ae c0           rjmp    .+348           ; 0x1776 <vfprintf+0x3c6>\r
+    161a:      0d c0           rjmp    .+26            ; 0x1636 <vfprintf+0x286>\r
+    161c:      80 37           cpi     r24, 0x70       ; 112\r
+    161e:      21 f0           breq    .+8             ; 0x1628 <vfprintf+0x278>\r
+    1620:      88 37           cpi     r24, 0x78       ; 120\r
+    1622:      09 f0           breq    .+2             ; 0x1626 <vfprintf+0x276>\r
+    1624:      a8 c0           rjmp    .+336           ; 0x1776 <vfprintf+0x3c6>\r
+    1626:      02 c0           rjmp    .+4             ; 0x162c <vfprintf+0x27c>\r
+    1628:      20 e1           ldi     r18, 0x10       ; 16\r
+    162a:      b2 2a           or      r11, r18\r
+    162c:      b4 fe           sbrs    r11, 4\r
+    162e:      0b c0           rjmp    .+22            ; 0x1646 <vfprintf+0x296>\r
+    1630:      84 e0           ldi     r24, 0x04       ; 4\r
+    1632:      b8 2a           or      r11, r24\r
+    1634:      08 c0           rjmp    .+16            ; 0x1646 <vfprintf+0x296>\r
+    1636:      b4 fe           sbrs    r11, 4\r
+    1638:      09 c0           rjmp    .+18            ; 0x164c <vfprintf+0x29c>\r
+    163a:      e6 e0           ldi     r30, 0x06       ; 6\r
+    163c:      be 2a           or      r11, r30\r
+    163e:      06 c0           rjmp    .+12            ; 0x164c <vfprintf+0x29c>\r
+    1640:      28 e0           ldi     r18, 0x08       ; 8\r
+    1642:      30 e0           ldi     r19, 0x00       ; 0\r
+    1644:      05 c0           rjmp    .+10            ; 0x1650 <vfprintf+0x2a0>\r
+    1646:      20 e1           ldi     r18, 0x10       ; 16\r
+    1648:      30 e0           ldi     r19, 0x00       ; 0\r
+    164a:      02 c0           rjmp    .+4             ; 0x1650 <vfprintf+0x2a0>\r
+    164c:      20 e1           ldi     r18, 0x10       ; 16\r
+    164e:      32 e0           ldi     r19, 0x02       ; 2\r
+    1650:      b7 fe           sbrs    r11, 7\r
+    1652:      08 c0           rjmp    .+16            ; 0x1664 <vfprintf+0x2b4>\r
+    1654:      f8 01           movw    r30, r16\r
+    1656:      60 81           ld      r22, Z\r
+    1658:      71 81           ldd     r23, Z+1        ; 0x01\r
+    165a:      82 81           ldd     r24, Z+2        ; 0x02\r
+    165c:      93 81           ldd     r25, Z+3        ; 0x03\r
+    165e:      0c 5f           subi    r16, 0xFC       ; 252\r
+    1660:      1f 4f           sbci    r17, 0xFF       ; 255\r
+    1662:      07 c0           rjmp    .+14            ; 0x1672 <vfprintf+0x2c2>\r
+    1664:      f8 01           movw    r30, r16\r
+    1666:      60 81           ld      r22, Z\r
+    1668:      71 81           ldd     r23, Z+1        ; 0x01\r
+    166a:      80 e0           ldi     r24, 0x00       ; 0\r
+    166c:      90 e0           ldi     r25, 0x00       ; 0\r
+    166e:      0e 5f           subi    r16, 0xFE       ; 254\r
+    1670:      1f 4f           sbci    r17, 0xFF       ; 255\r
+    1672:      a2 01           movw    r20, r4\r
+    1674:      e2 d0           rcall   .+452           ; 0x183a <__ultoa_invert>\r
+    1676:      78 2e           mov     r7, r24\r
+    1678:      74 18           sub     r7, r4\r
+    167a:      ff e7           ldi     r31, 0x7F       ; 127\r
+    167c:      bf 22           and     r11, r31\r
+    167e:      b6 fe           sbrs    r11, 6\r
+    1680:      0b c0           rjmp    .+22            ; 0x1698 <vfprintf+0x2e8>\r
+    1682:      2e ef           ldi     r18, 0xFE       ; 254\r
+    1684:      b2 22           and     r11, r18\r
+    1686:      7e 14           cp      r7, r14\r
+    1688:      38 f4           brcc    .+14            ; 0x1698 <vfprintf+0x2e8>\r
+    168a:      b4 fe           sbrs    r11, 4\r
+    168c:      07 c0           rjmp    .+14            ; 0x169c <vfprintf+0x2ec>\r
+    168e:      b2 fc           sbrc    r11, 2\r
+    1690:      05 c0           rjmp    .+10            ; 0x169c <vfprintf+0x2ec>\r
+    1692:      8f ee           ldi     r24, 0xEF       ; 239\r
+    1694:      b8 22           and     r11, r24\r
+    1696:      02 c0           rjmp    .+4             ; 0x169c <vfprintf+0x2ec>\r
+    1698:      a7 2c           mov     r10, r7\r
+    169a:      01 c0           rjmp    .+2             ; 0x169e <vfprintf+0x2ee>\r
+    169c:      ae 2c           mov     r10, r14\r
+    169e:      8b 2d           mov     r24, r11\r
+    16a0:      90 e0           ldi     r25, 0x00       ; 0\r
+    16a2:      b4 fe           sbrs    r11, 4\r
+    16a4:      0d c0           rjmp    .+26            ; 0x16c0 <vfprintf+0x310>\r
+    16a6:      fe 01           movw    r30, r28\r
+    16a8:      e7 0d           add     r30, r7\r
+    16aa:      f1 1d           adc     r31, r1\r
+    16ac:      20 81           ld      r18, Z\r
+    16ae:      20 33           cpi     r18, 0x30       ; 48\r
+    16b0:      19 f4           brne    .+6             ; 0x16b8 <vfprintf+0x308>\r
+    16b2:      e9 ee           ldi     r30, 0xE9       ; 233\r
+    16b4:      be 22           and     r11, r30\r
+    16b6:      09 c0           rjmp    .+18            ; 0x16ca <vfprintf+0x31a>\r
+    16b8:      a3 94           inc     r10\r
+    16ba:      b2 fe           sbrs    r11, 2\r
+    16bc:      06 c0           rjmp    .+12            ; 0x16ca <vfprintf+0x31a>\r
+    16be:      04 c0           rjmp    .+8             ; 0x16c8 <vfprintf+0x318>\r
+    16c0:      86 78           andi    r24, 0x86       ; 134\r
+    16c2:      90 70           andi    r25, 0x00       ; 0\r
+    16c4:      00 97           sbiw    r24, 0x00       ; 0\r
+    16c6:      09 f0           breq    .+2             ; 0x16ca <vfprintf+0x31a>\r
+    16c8:      a3 94           inc     r10\r
+    16ca:      8b 2c           mov     r8, r11\r
+    16cc:      99 24           eor     r9, r9\r
+    16ce:      b3 fc           sbrc    r11, 3\r
+    16d0:      13 c0           rjmp    .+38            ; 0x16f8 <vfprintf+0x348>\r
+    16d2:      b0 fe           sbrs    r11, 0\r
+    16d4:      0e c0           rjmp    .+28            ; 0x16f2 <vfprintf+0x342>\r
+    16d6:      af 14           cp      r10, r15\r
+    16d8:      28 f4           brcc    .+10            ; 0x16e4 <vfprintf+0x334>\r
+    16da:      e7 2c           mov     r14, r7\r
+    16dc:      ef 0c           add     r14, r15\r
+    16de:      ea 18           sub     r14, r10\r
+    16e0:      af 2c           mov     r10, r15\r
+    16e2:      07 c0           rjmp    .+14            ; 0x16f2 <vfprintf+0x342>\r
+    16e4:      e7 2c           mov     r14, r7\r
+    16e6:      05 c0           rjmp    .+10            ; 0x16f2 <vfprintf+0x342>\r
+    16e8:      80 e2           ldi     r24, 0x20       ; 32\r
+    16ea:      90 e0           ldi     r25, 0x00       ; 0\r
+    16ec:      b6 01           movw    r22, r12\r
+    16ee:      79 d0           rcall   .+242           ; 0x17e2 <fputc>\r
+    16f0:      a3 94           inc     r10\r
+    16f2:      af 14           cp      r10, r15\r
+    16f4:      c8 f3           brcs    .-14            ; 0x16e8 <vfprintf+0x338>\r
+    16f6:      04 c0           rjmp    .+8             ; 0x1700 <vfprintf+0x350>\r
+    16f8:      af 14           cp      r10, r15\r
+    16fa:      10 f4           brcc    .+4             ; 0x1700 <vfprintf+0x350>\r
+    16fc:      fa 18           sub     r15, r10\r
+    16fe:      01 c0           rjmp    .+2             ; 0x1702 <vfprintf+0x352>\r
+    1700:      ff 24           eor     r15, r15\r
+    1702:      84 fe           sbrs    r8, 4\r
+    1704:      0e c0           rjmp    .+28            ; 0x1722 <vfprintf+0x372>\r
+    1706:      80 e3           ldi     r24, 0x30       ; 48\r
+    1708:      90 e0           ldi     r25, 0x00       ; 0\r
+    170a:      b6 01           movw    r22, r12\r
+    170c:      6a d0           rcall   .+212           ; 0x17e2 <fputc>\r
+    170e:      82 fe           sbrs    r8, 2\r
+    1710:      1d c0           rjmp    .+58            ; 0x174c <vfprintf+0x39c>\r
+    1712:      81 fe           sbrs    r8, 1\r
+    1714:      03 c0           rjmp    .+6             ; 0x171c <vfprintf+0x36c>\r
+    1716:      88 e5           ldi     r24, 0x58       ; 88\r
+    1718:      90 e0           ldi     r25, 0x00       ; 0\r
+    171a:      10 c0           rjmp    .+32            ; 0x173c <vfprintf+0x38c>\r
+    171c:      88 e7           ldi     r24, 0x78       ; 120\r
+    171e:      90 e0           ldi     r25, 0x00       ; 0\r
+    1720:      0d c0           rjmp    .+26            ; 0x173c <vfprintf+0x38c>\r
+    1722:      c4 01           movw    r24, r8\r
+    1724:      86 78           andi    r24, 0x86       ; 134\r
+    1726:      90 70           andi    r25, 0x00       ; 0\r
+    1728:      00 97           sbiw    r24, 0x00       ; 0\r
+    172a:      81 f0           breq    .+32            ; 0x174c <vfprintf+0x39c>\r
+    172c:      81 fc           sbrc    r8, 1\r
+    172e:      02 c0           rjmp    .+4             ; 0x1734 <vfprintf+0x384>\r
+    1730:      80 e2           ldi     r24, 0x20       ; 32\r
+    1732:      01 c0           rjmp    .+2             ; 0x1736 <vfprintf+0x386>\r
+    1734:      8b e2           ldi     r24, 0x2B       ; 43\r
+    1736:      b7 fc           sbrc    r11, 7\r
+    1738:      8d e2           ldi     r24, 0x2D       ; 45\r
+    173a:      90 e0           ldi     r25, 0x00       ; 0\r
+    173c:      b6 01           movw    r22, r12\r
+    173e:      51 d0           rcall   .+162           ; 0x17e2 <fputc>\r
+    1740:      05 c0           rjmp    .+10            ; 0x174c <vfprintf+0x39c>\r
+    1742:      80 e3           ldi     r24, 0x30       ; 48\r
+    1744:      90 e0           ldi     r25, 0x00       ; 0\r
+    1746:      b6 01           movw    r22, r12\r
+    1748:      4c d0           rcall   .+152           ; 0x17e2 <fputc>\r
+    174a:      ea 94           dec     r14\r
+    174c:      7e 14           cp      r7, r14\r
+    174e:      c8 f3           brcs    .-14            ; 0x1742 <vfprintf+0x392>\r
+    1750:      7a 94           dec     r7\r
+    1752:      f2 01           movw    r30, r4\r
+    1754:      e7 0d           add     r30, r7\r
+    1756:      f1 1d           adc     r31, r1\r
+    1758:      80 81           ld      r24, Z\r
+    175a:      90 e0           ldi     r25, 0x00       ; 0\r
+    175c:      b6 01           movw    r22, r12\r
+    175e:      41 d0           rcall   .+130           ; 0x17e2 <fputc>\r
+    1760:      77 20           and     r7, r7\r
+    1762:      b1 f7           brne    .-20            ; 0x1750 <vfprintf+0x3a0>\r
+    1764:      05 c0           rjmp    .+10            ; 0x1770 <vfprintf+0x3c0>\r
+    1766:      80 e2           ldi     r24, 0x20       ; 32\r
+    1768:      90 e0           ldi     r25, 0x00       ; 0\r
+    176a:      b6 01           movw    r22, r12\r
+    176c:      3a d0           rcall   .+116           ; 0x17e2 <fputc>\r
+    176e:      fa 94           dec     r15\r
+    1770:      ff 20           and     r15, r15\r
+    1772:      c9 f7           brne    .-14            ; 0x1766 <vfprintf+0x3b6>\r
+    1774:      44 ce           rjmp    .-888           ; 0x13fe <vfprintf+0x4e>\r
+    1776:      f6 01           movw    r30, r12\r
+    1778:      26 81           ldd     r18, Z+6        ; 0x06\r
+    177a:      37 81           ldd     r19, Z+7        ; 0x07\r
+    177c:      02 c0           rjmp    .+4             ; 0x1782 <vfprintf+0x3d2>\r
+    177e:      2f ef           ldi     r18, 0xFF       ; 255\r
+    1780:      3f ef           ldi     r19, 0xFF       ; 255\r
+    1782:      c9 01           movw    r24, r18\r
+    1784:      2c 96           adiw    r28, 0x0c       ; 12\r
+    1786:      0f b6           in      r0, 0x3f        ; 63\r
+    1788:      f8 94           cli\r
+    178a:      de bf           out     0x3e, r29       ; 62\r
+    178c:      0f be           out     0x3f, r0        ; 63\r
+    178e:      cd bf           out     0x3d, r28       ; 61\r
+    1790:      cf 91           pop     r28\r
+    1792:      df 91           pop     r29\r
+    1794:      1f 91           pop     r17\r
+    1796:      0f 91           pop     r16\r
+    1798:      ff 90           pop     r15\r
+    179a:      ef 90           pop     r14\r
+    179c:      df 90           pop     r13\r
+    179e:      cf 90           pop     r12\r
+    17a0:      bf 90           pop     r11\r
+    17a2:      af 90           pop     r10\r
+    17a4:      9f 90           pop     r9\r
+    17a6:      8f 90           pop     r8\r
+    17a8:      7f 90           pop     r7\r
+    17aa:      6f 90           pop     r6\r
+    17ac:      5f 90           pop     r5\r
+    17ae:      4f 90           pop     r4\r
+    17b0:      3f 90           pop     r3\r
+    17b2:      2f 90           pop     r2\r
+    17b4:      08 95           ret\r
+\r
+000017b6 <strnlen_P>:\r
+    17b6:      fc 01           movw    r30, r24\r
+    17b8:      05 90           lpm     r0, Z+\r
+    17ba:      61 50           subi    r22, 0x01       ; 1\r
+    17bc:      70 40           sbci    r23, 0x00       ; 0\r
+    17be:      01 10           cpse    r0, r1\r
+    17c0:      d8 f7           brcc    .-10            ; 0x17b8 <strnlen_P+0x2>\r
+    17c2:      80 95           com     r24\r
+    17c4:      90 95           com     r25\r
+    17c6:      8e 0f           add     r24, r30\r
+    17c8:      9f 1f           adc     r25, r31\r
+    17ca:      08 95           ret\r
+\r
+000017cc <strnlen>:\r
+    17cc:      fc 01           movw    r30, r24\r
+    17ce:      61 50           subi    r22, 0x01       ; 1\r
+    17d0:      70 40           sbci    r23, 0x00       ; 0\r
+    17d2:      01 90           ld      r0, Z+\r
+    17d4:      01 10           cpse    r0, r1\r
+    17d6:      d8 f7           brcc    .-10            ; 0x17ce <strnlen+0x2>\r
+    17d8:      80 95           com     r24\r
+    17da:      90 95           com     r25\r
+    17dc:      8e 0f           add     r24, r30\r
+    17de:      9f 1f           adc     r25, r31\r
+    17e0:      08 95           ret\r
+\r
+000017e2 <fputc>:\r
+    17e2:      0f 93           push    r16\r
+    17e4:      1f 93           push    r17\r
+    17e6:      cf 93           push    r28\r
+    17e8:      df 93           push    r29\r
+    17ea:      8c 01           movw    r16, r24\r
+    17ec:      eb 01           movw    r28, r22\r
+    17ee:      8b 81           ldd     r24, Y+3        ; 0x03\r
+    17f0:      81 ff           sbrs    r24, 1\r
+    17f2:      1b c0           rjmp    .+54            ; 0x182a <fputc+0x48>\r
+    17f4:      82 ff           sbrs    r24, 2\r
+    17f6:      0d c0           rjmp    .+26            ; 0x1812 <fputc+0x30>\r
+    17f8:      2e 81           ldd     r18, Y+6        ; 0x06\r
+    17fa:      3f 81           ldd     r19, Y+7        ; 0x07\r
+    17fc:      8c 81           ldd     r24, Y+4        ; 0x04\r
+    17fe:      9d 81           ldd     r25, Y+5        ; 0x05\r
+    1800:      28 17           cp      r18, r24\r
+    1802:      39 07           cpc     r19, r25\r
+    1804:      64 f4           brge    .+24            ; 0x181e <fputc+0x3c>\r
+    1806:      e8 81           ld      r30, Y\r
+    1808:      f9 81           ldd     r31, Y+1        ; 0x01\r
+    180a:      01 93           st      Z+, r16\r
+    180c:      f9 83           std     Y+1, r31        ; 0x01\r
+    180e:      e8 83           st      Y, r30\r
+    1810:      06 c0           rjmp    .+12            ; 0x181e <fputc+0x3c>\r
+    1812:      e8 85           ldd     r30, Y+8        ; 0x08\r
+    1814:      f9 85           ldd     r31, Y+9        ; 0x09\r
+    1816:      80 2f           mov     r24, r16\r
+    1818:      09 95           icall\r
+    181a:      00 97           sbiw    r24, 0x00       ; 0\r
+    181c:      31 f4           brne    .+12            ; 0x182a <fputc+0x48>\r
+    181e:      8e 81           ldd     r24, Y+6        ; 0x06\r
+    1820:      9f 81           ldd     r25, Y+7        ; 0x07\r
+    1822:      01 96           adiw    r24, 0x01       ; 1\r
+    1824:      9f 83           std     Y+7, r25        ; 0x07\r
+    1826:      8e 83           std     Y+6, r24        ; 0x06\r
+    1828:      02 c0           rjmp    .+4             ; 0x182e <fputc+0x4c>\r
+    182a:      0f ef           ldi     r16, 0xFF       ; 255\r
+    182c:      1f ef           ldi     r17, 0xFF       ; 255\r
+    182e:      c8 01           movw    r24, r16\r
+    1830:      df 91           pop     r29\r
+    1832:      cf 91           pop     r28\r
+    1834:      1f 91           pop     r17\r
+    1836:      0f 91           pop     r16\r
+    1838:      08 95           ret\r
+\r
+0000183a <__ultoa_invert>:\r
+    183a:      fa 01           movw    r30, r20\r
+    183c:      aa 27           eor     r26, r26\r
+    183e:      28 30           cpi     r18, 0x08       ; 8\r
+    1840:      51 f1           breq    .+84            ; 0x1896 <__ultoa_invert+0x5c>\r
+    1842:      20 31           cpi     r18, 0x10       ; 16\r
+    1844:      81 f1           breq    .+96            ; 0x18a6 <__ultoa_invert+0x6c>\r
+    1846:      e8 94           clt\r
+    1848:      6f 93           push    r22\r
+    184a:      6e 7f           andi    r22, 0xFE       ; 254\r
+    184c:      6e 5f           subi    r22, 0xFE       ; 254\r
+    184e:      7f 4f           sbci    r23, 0xFF       ; 255\r
+    1850:      8f 4f           sbci    r24, 0xFF       ; 255\r
+    1852:      9f 4f           sbci    r25, 0xFF       ; 255\r
+    1854:      af 4f           sbci    r26, 0xFF       ; 255\r
+    1856:      b1 e0           ldi     r27, 0x01       ; 1\r
+    1858:      3e d0           rcall   .+124           ; 0x18d6 <__ultoa_invert+0x9c>\r
+    185a:      b4 e0           ldi     r27, 0x04       ; 4\r
+    185c:      3c d0           rcall   .+120           ; 0x18d6 <__ultoa_invert+0x9c>\r
+    185e:      67 0f           add     r22, r23\r
+    1860:      78 1f           adc     r23, r24\r
+    1862:      89 1f           adc     r24, r25\r
+    1864:      9a 1f           adc     r25, r26\r
+    1866:      a1 1d           adc     r26, r1\r
+    1868:      68 0f           add     r22, r24\r
+    186a:      79 1f           adc     r23, r25\r
+    186c:      8a 1f           adc     r24, r26\r
+    186e:      91 1d           adc     r25, r1\r
+    1870:      a1 1d           adc     r26, r1\r
+    1872:      6a 0f           add     r22, r26\r
+    1874:      71 1d           adc     r23, r1\r
+    1876:      81 1d           adc     r24, r1\r
+    1878:      91 1d           adc     r25, r1\r
+    187a:      a1 1d           adc     r26, r1\r
+    187c:      20 d0           rcall   .+64            ; 0x18be <__ultoa_invert+0x84>\r
+    187e:      09 f4           brne    .+2             ; 0x1882 <__ultoa_invert+0x48>\r
+    1880:      68 94           set\r
+    1882:      3f 91           pop     r19\r
+    1884:      2a e0           ldi     r18, 0x0A       ; 10\r
+    1886:      26 9f           mul     r18, r22\r
+    1888:      11 24           eor     r1, r1\r
+    188a:      30 19           sub     r19, r0\r
+    188c:      30 5d           subi    r19, 0xD0       ; 208\r
+    188e:      31 93           st      Z+, r19\r
+    1890:      de f6           brtc    .-74            ; 0x1848 <__ultoa_invert+0xe>\r
+    1892:      cf 01           movw    r24, r30\r
+    1894:      08 95           ret\r
+    1896:      46 2f           mov     r20, r22\r
+    1898:      47 70           andi    r20, 0x07       ; 7\r
+    189a:      40 5d           subi    r20, 0xD0       ; 208\r
+    189c:      41 93           st      Z+, r20\r
+    189e:      b3 e0           ldi     r27, 0x03       ; 3\r
+    18a0:      0f d0           rcall   .+30            ; 0x18c0 <__ultoa_invert+0x86>\r
+    18a2:      c9 f7           brne    .-14            ; 0x1896 <__ultoa_invert+0x5c>\r
+    18a4:      f6 cf           rjmp    .-20            ; 0x1892 <__ultoa_invert+0x58>\r
+    18a6:      46 2f           mov     r20, r22\r
+    18a8:      4f 70           andi    r20, 0x0F       ; 15\r
+    18aa:      40 5d           subi    r20, 0xD0       ; 208\r
+    18ac:      4a 33           cpi     r20, 0x3A       ; 58\r
+    18ae:      18 f0           brcs    .+6             ; 0x18b6 <__ultoa_invert+0x7c>\r
+    18b0:      49 5d           subi    r20, 0xD9       ; 217\r
+    18b2:      31 fd           sbrc    r19, 1\r
+    18b4:      40 52           subi    r20, 0x20       ; 32\r
+    18b6:      41 93           st      Z+, r20\r
+    18b8:      02 d0           rcall   .+4             ; 0x18be <__ultoa_invert+0x84>\r
+    18ba:      a9 f7           brne    .-22            ; 0x18a6 <__ultoa_invert+0x6c>\r
+    18bc:      ea cf           rjmp    .-44            ; 0x1892 <__ultoa_invert+0x58>\r
+    18be:      b4 e0           ldi     r27, 0x04       ; 4\r
+    18c0:      a6 95           lsr     r26\r
+    18c2:      97 95           ror     r25\r
+    18c4:      87 95           ror     r24\r
+    18c6:      77 95           ror     r23\r
+    18c8:      67 95           ror     r22\r
+    18ca:      ba 95           dec     r27\r
+    18cc:      c9 f7           brne    .-14            ; 0x18c0 <__ultoa_invert+0x86>\r
+    18ce:      00 97           sbiw    r24, 0x00       ; 0\r
+    18d0:      61 05           cpc     r22, r1\r
+    18d2:      71 05           cpc     r23, r1\r
+    18d4:      08 95           ret\r
+    18d6:      9b 01           movw    r18, r22\r
+    18d8:      ac 01           movw    r20, r24\r
+    18da:      0a 2e           mov     r0, r26\r
+    18dc:      06 94           lsr     r0\r
+    18de:      57 95           ror     r21\r
+    18e0:      47 95           ror     r20\r
+    18e2:      37 95           ror     r19\r
+    18e4:      27 95           ror     r18\r
+    18e6:      ba 95           dec     r27\r
+    18e8:      c9 f7           brne    .-14            ; 0x18dc <__ultoa_invert+0xa2>\r
+    18ea:      62 0f           add     r22, r18\r
+    18ec:      73 1f           adc     r23, r19\r
+    18ee:      84 1f           adc     r24, r20\r
+    18f0:      95 1f           adc     r25, r21\r
+    18f2:      a0 1d           adc     r26, r0\r
+    18f4:      08 95           ret\r
+\r
+000018f6 <_exit>:\r
+    18f6:      f8 94           cli\r
+\r
+000018f8 <__stop_program>:\r
+    18f8:      ff cf           rjmp    .-2             ; 0x18f8 <__stop_program>\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst
new file mode 100644 (file)
index 0000000..c99fb0e
--- /dev/null
@@ -0,0 +1,853 @@
+   1                           .file   "AudioInputHost.c"\r
+   2                   __SREG__ = 0x3f\r
+   3                   __SP_H__ = 0x3e\r
+   4                   __SP_L__ = 0x3d\r
+   5                   __CCP__ = 0x34\r
+   6                   __tmp_reg__ = 0\r
+   7                   __zero_reg__ = 1\r
+  15                   .Ltext0:\r
+  16                           .section        .text.LEDs_SetAllLEDs,"ax",@progbits\r
+  18                   LEDs_SetAllLEDs:\r
+  19                   .LFB127:\r
+  20                   .LSM0:\r
+  21                   .LVL0:\r
+  22                   /* prologue: function */\r
+  23                   /* frame size = 0 */\r
+  24                   /* stack size = 0 */\r
+  25                   .L__stack_usage = 0\r
+  26                   .LSM1:\r
+  27 0000 9BB1                 in r25,43-32\r
+  28 0002 9F70                 andi r25,lo8(15)\r
+  29 0004 982B                 or r25,r24\r
+  30 0006 9BB9                 out 43-32,r25\r
+  31                   /* epilogue start */\r
+  32                   .LSM2:\r
+  33 0008 0895                 ret\r
+  34                   .LFE127:\r
+  36                           .section        .text.SetupHardware,"ax",@progbits\r
+  37                   .global SetupHardware\r
+  39                   SetupHardware:\r
+  40                   .LFB132:\r
+  41                   .LSM3:\r
+  42                   /* prologue: function */\r
+  43                   /* frame size = 0 */\r
+  44                   /* stack size = 0 */\r
+  45                   .L__stack_usage = 0\r
+  46                   .LSM4:\r
+  47 0000 84B7                 in r24,84-32\r
+  48 0002 877F                 andi r24,lo8(-9)\r
+  49 0004 84BF                 out 84-32,r24\r
+  50                   .LSM5:\r
+  51 0006 28E1                 ldi r18,lo8(24)\r
+  52                   /* #APP */\r
+  53                    ;  63 "AudioInputHost.c" 1\r
+  54 0008 0FB6                 in __tmp_reg__, __SREG__\r
+  55 000a F894                 cli\r
+  56 000c 2093 6000            sts 96, r18\r
+  57 0010 1092 6000            sts 96, __zero_reg__\r
+  58 0014 0FBE                 out __SREG__,__tmp_reg__\r
+  59                           \r
+  60                    ;  0 "" 2\r
+  61                   .LVL1:\r
+  62                   /* #NOAPP */\r
+  63                   .LBB39:\r
+  64                   .LBB40:\r
+  65                   .LSM6:\r
+  66 0016 90E0                 ldi r25,lo8(0)\r
+  67 0018 80E8                 ldi r24,lo8(-128)\r
+  68                   /* #APP */\r
+  69                    ;  1614 "c:\program files (x86)\atmel\avr studio 5.0\extensions\application\avr toolchain\bin\../l\r
+  70 001a 0FB6                 in __tmp_reg__,__SREG__\r
+  71 001c F894                 cli\r
+  72 001e 8093 6100            sts 97, r24\r
+  73 0022 9093 6100            sts 97, r25\r
+  74 0026 0FBE                 out __SREG__, __tmp_reg__\r
+  75                    ;  0 "" 2\r
+  76                   .LVL2:\r
+  77                   /* #NOAPP */\r
+  78                   .LBE40:\r
+  79                   .LBE39:\r
+  80                   .LBB41:\r
+  81                   .LBB42:\r
+  82                   .LSM7:\r
+  83 0028 83E3                 ldi r24,lo8(51)\r
+  84 002a 90E0                 ldi r25,hi8(51)\r
+  85 002c 9093 CD00            sts 204+1,r25\r
+  86 0030 8093 CC00            sts 204,r24\r
+  87                   .LSM8:\r
+  88 0034 86E0                 ldi r24,lo8(6)\r
+  89 0036 8093 CA00            sts 202,r24\r
+  90                   .LSM9:\r
+  91 003a 1092 C800            sts 200,__zero_reg__\r
+  92                   .LSM10:\r
+  93 003e 2093 C900            sts 201,r18\r
+  94                   .LSM11:\r
+  95 0042 539A                 sbi 42-32,3\r
+  96                   .LSM12:\r
+  97 0044 5A9A                 sbi 43-32,2\r
+  98                   .LBE42:\r
+  99                   .LBE41:\r
+ 100                   .LBB43:\r
+ 101                   .LBB44:\r
+ 102                   .LSM13:\r
+ 103 0046 8AB1                 in r24,42-32\r
+ 104 0048 806F                 ori r24,lo8(-16)\r
+ 105 004a 8AB9                 out 42-32,r24\r
+ 106                   .LSM14:\r
+ 107 004c 8BB1                 in r24,43-32\r
+ 108 004e 8F70                 andi r24,lo8(15)\r
+ 109 0050 8BB9                 out 43-32,r24\r
+ 110                   .LBE44:\r
+ 111                   .LBE43:\r
+ 112                   .LSM15:\r
+ 113 0052 0E94 0000            call USB_Init\r
+ 114                   .LVL3:\r
+ 115                   .LBB45:\r
+ 116                   .LBB46:\r
+ 117                   .LSM16:\r
+ 118 0056 E0E0                 ldi r30,lo8(USARTSerialStream)\r
+ 119 0058 F0E0                 ldi r31,hi8(USARTSerialStream)\r
+ 120 005a F093 0000            sts __iob+1,r31\r
+ 121 005e E093 0000            sts __iob,r30\r
+ 122                   .LSM17:\r
+ 123 0062 F093 0000            sts __iob+2+1,r31\r
+ 124 0066 E093 0000            sts __iob+2,r30\r
+ 125                   .LSM18:\r
+ 126 006a 8EE0                 ldi r24,lo8(14)\r
+ 127 006c DF01                 movw r26,r30\r
+ 128 006e 1D92                 st X+,__zero_reg__\r
+ 129 0070 8A95                 dec r24\r
+ 130 0072 01F4                 brne .-6\r
+ 131 0074 83E0                 ldi r24,lo8(3)\r
+ 132 0076 8093 0000            sts USARTSerialStream+3,r24\r
+ 133 007a 80E0                 ldi r24,lo8(gs(Serial_putchar))\r
+ 134 007c 90E0                 ldi r25,hi8(gs(Serial_putchar))\r
+ 135 007e 9093 0000            sts USARTSerialStream+8+1,r25\r
+ 136 0082 8093 0000            sts USARTSerialStream+8,r24\r
+ 137 0086 80E0                 ldi r24,lo8(gs(Serial_getchar))\r
+ 138 0088 90E0                 ldi r25,hi8(gs(Serial_getchar))\r
+ 139 008a 9093 0000            sts USARTSerialStream+10+1,r25\r
+ 140 008e 8093 0000            sts USARTSerialStream+10,r24\r
+ 141                   /* epilogue start */\r
+ 142                   .LBE46:\r
+ 143                   .LBE45:\r
+ 144                   .LSM19:\r
+ 145 0092 0895                 ret\r
+ 146                   .LFE132:\r
+ 148                           .section        .text.EVENT_USB_Host_DeviceAttached,"ax",@progbits\r
+ 149                   .global EVENT_USB_Host_DeviceAttached\r
+ 151                   EVENT_USB_Host_DeviceAttached:\r
+ 152                   .LFB133:\r
+ 153                   .LSM20:\r
+ 154                   /* prologue: function */\r
+ 155                   /* frame size = 0 */\r
+ 156                   /* stack size = 0 */\r
+ 157                   .L__stack_usage = 0\r
+ 158                   .LSM21:\r
+ 159 0000 80E0                 ldi r24,lo8(__c.3897)\r
+ 160 0002 90E0                 ldi r25,hi8(__c.3897)\r
+ 161 0004 0E94 0000            call puts_P\r
+ 162                   .LSM22:\r
+ 163 0008 80EA                 ldi r24,lo8(-96)\r
+ 164 000a 0E94 0000            call LEDs_SetAllLEDs\r
+ 165                   /* epilogue start */\r
+ 166                   .LSM23:\r
+ 167 000e 0895                 ret\r
+ 168                   .LFE133:\r
+ 170                           .section        .text.EVENT_USB_Host_DeviceUnattached,"ax",@progbits\r
+ 171                   .global EVENT_USB_Host_DeviceUnattached\r
+ 173                   EVENT_USB_Host_DeviceUnattached:\r
+ 174                   .LFB134:\r
+ 175                   .LSM24:\r
+ 176                   /* prologue: function */\r
+ 177                   /* frame size = 0 */\r
+ 178                   /* stack size = 0 */\r
+ 179                   .L__stack_usage = 0\r
+ 180                   .LSM25:\r
+ 181 0000 80E0                 ldi r24,lo8(__c.3902)\r
+ 182 0002 90E0                 ldi r25,hi8(__c.3902)\r
+ 183 0004 0E94 0000            call puts_P\r
+ 184                   .LSM26:\r
+ 185 0008 80E1                 ldi r24,lo8(16)\r
+ 186 000a 0E94 0000            call LEDs_SetAllLEDs\r
+ 187                   /* epilogue start */\r
+ 188                   .LSM27:\r
+ 189 000e 0895                 ret\r
+ 190                   .LFE134:\r
+ 192                           .section        .text.EVENT_USB_Host_DeviceEnumerationComplete,"ax",@progbits\r
+ 193                   .global EVENT_USB_Host_DeviceEnumerationComplete\r
+ 195                   EVENT_USB_Host_DeviceEnumerationComplete:\r
+ 196                   .LFB135:\r
+ 197                   .LSM28:\r
+ 198                   /* prologue: function */\r
+ 199                   /* frame size = 0 */\r
+ 200                   /* stack size = 0 */\r
+ 201                   .L__stack_usage = 0\r
+ 202                   .LSM29:\r
+ 203 0000 80E6                 ldi r24,lo8(96)\r
+ 204 0002 0E94 0000            call LEDs_SetAllLEDs\r
+ 205                   /* epilogue start */\r
+ 206                   .LSM30:\r
+ 207 0006 0895                 ret\r
+ 208                   .LFE135:\r
+ 210                           .section        .text.EVENT_USB_Host_HostError,"ax",@progbits\r
+ 211                   .global EVENT_USB_Host_HostError\r
+ 213                   EVENT_USB_Host_HostError:\r
+ 214                   .LFB136:\r
+ 215                   .LSM31:\r
+ 216                   .LVL4:\r
+ 217 0000 DF93                 push r29\r
+ 218 0002 CF93                 push r28\r
+ 219 0004 0F92                 push __tmp_reg__\r
+ 220 0006 CDB7                 in r28,__SP_L__\r
+ 221 0008 DEB7                 in r29,__SP_H__\r
+ 222                   /* prologue: function */\r
+ 223                   /* frame size = 1 */\r
+ 224                   /* stack size = 3 */\r
+ 225                   .L__stack_usage = 3\r
+ 226                   .LSM32:\r
+ 227 000a 8983                 std Y+1,r24\r
+ 228 000c 0E94 0000            call USB_Disable\r
+ 229                   .LVL5:\r
+ 230                   .LSM33:\r
+ 231 0010 00D0                 rcall .\r
+ 232 0012 00D0                 rcall .\r
+ 233 0014 EDB7                 in r30,__SP_L__\r
+ 234 0016 FEB7                 in r31,__SP_H__\r
+ 235 0018 3196                 adiw r30,1\r
+ 236 001a 20E0                 ldi r18,lo8(__c.3910)\r
+ 237 001c 30E0                 ldi r19,hi8(__c.3910)\r
+ 238 001e ADB7                 in r26,__SP_L__\r
+ 239 0020 BEB7                 in r27,__SP_H__\r
+ 240 0022 1296                 adiw r26,1+1\r
+ 241 0024 3C93                 st X,r19\r
+ 242 0026 2E93                 st -X,r18\r
+ 243 0028 1197                 sbiw r26,1\r
+ 244 002a 8981                 ldd r24,Y+1\r
+ 245 002c 8283                 std Z+2,r24\r
+ 246 002e 1382                 std Z+3,__zero_reg__\r
+ 247 0030 0E94 0000            call printf_P\r
+ 248                   .LSM34:\r
+ 249 0034 0F90                 pop __tmp_reg__\r
+ 250 0036 0F90                 pop __tmp_reg__\r
+ 251 0038 0F90                 pop __tmp_reg__\r
+ 252 003a 0F90                 pop __tmp_reg__\r
+ 253 003c 80E9                 ldi r24,lo8(-112)\r
+ 254 003e 0E94 0000            call LEDs_SetAllLEDs\r
+ 255                   .L7:\r
+ 256 0042 00C0                 rjmp .L7\r
+ 257                   .LFE136:\r
+ 259                           .section        .text.EVENT_USB_Host_DeviceEnumerationFailed,"ax",@progbits\r
+ 260                   .global EVENT_USB_Host_DeviceEnumerationFailed\r
+ 262                   EVENT_USB_Host_DeviceEnumerationFailed:\r
+ 263                   .LFB137:\r
+ 264                   .LSM35:\r
+ 265                   .LVL6:\r
+ 266                   /* prologue: function */\r
+ 267                   /* frame size = 0 */\r
+ 268                   /* stack size = 0 */\r
+ 269                   .L__stack_usage = 0\r
+ 270                   .LSM36:\r
+ 271 0000 9091 0000            lds r25,USB_HostState\r
+ 272 0004 2DB7                 in r18,__SP_L__\r
+ 273 0006 3EB7                 in r19,__SP_H__\r
+ 274 0008 2850                 subi r18,lo8(-(-8))\r
+ 275 000a 3040                 sbci r19,hi8(-(-8))\r
+ 276 000c 0FB6                 in __tmp_reg__,__SREG__\r
+ 277 000e F894                 cli\r
+ 278 0010 3EBF                 out __SP_H__,r19\r
+ 279 0012 0FBE                 out __SREG__,__tmp_reg__\r
+ 280 0014 2DBF                 out __SP_L__,r18\r
+ 281 0016 EDB7                 in r30,__SP_L__\r
+ 282 0018 FEB7                 in r31,__SP_H__\r
+ 283 001a 3196                 adiw r30,1\r
+ 284 001c 20E0                 ldi r18,lo8(__c.3917)\r
+ 285 001e 30E0                 ldi r19,hi8(__c.3917)\r
+ 286 0020 ADB7                 in r26,__SP_L__\r
+ 287 0022 BEB7                 in r27,__SP_H__\r
+ 288 0024 1296                 adiw r26,1+1\r
+ 289 0026 3C93                 st X,r19\r
+ 290 0028 2E93                 st -X,r18\r
+ 291 002a 1197                 sbiw r26,1\r
+ 292 002c 8283                 std Z+2,r24\r
+ 293 002e 1382                 std Z+3,__zero_reg__\r
+ 294 0030 6483                 std Z+4,r22\r
+ 295 0032 1582                 std Z+5,__zero_reg__\r
+ 296 0034 9683                 std Z+6,r25\r
+ 297 0036 1782                 std Z+7,__zero_reg__\r
+ 298 0038 0E94 0000            call printf_P\r
+ 299                   .LVL7:\r
+ 300                   .LSM37:\r
+ 301 003c 2DB7                 in r18,__SP_L__\r
+ 302 003e 3EB7                 in r19,__SP_H__\r
+ 303 0040 285F                 subi r18,lo8(-(8))\r
+ 304 0042 3F4F                 sbci r19,hi8(-(8))\r
+ 305 0044 0FB6                 in __tmp_reg__,__SREG__\r
+ 306 0046 F894                 cli\r
+ 307 0048 3EBF                 out __SP_H__,r19\r
+ 308 004a 0FBE                 out __SREG__,__tmp_reg__\r
+ 309 004c 2DBF                 out __SP_L__,r18\r
+ 310 004e 80E9                 ldi r24,lo8(-112)\r
+ 311 0050 0E94 0000            call LEDs_SetAllLEDs\r
+ 312                   /* epilogue start */\r
+ 313                   .LSM38:\r
+ 314 0054 0895                 ret\r
+ 315                   .LFE137:\r
+ 317                           .section        .text.Audio_Task,"ax",@progbits\r
+ 318                   .global Audio_Task\r
+ 320                   Audio_Task:\r
+ 321                   .LFB138:\r
+ 322                   .LSM39:\r
+ 323 0000 1F93                 push r17\r
+ 324 0002 DF93                 push r29\r
+ 325 0004 CF93                 push r28\r
+ 326 0006 00D0                 rcall .\r
+ 327 0008 0F92                 push __tmp_reg__\r
+ 328 000a CDB7                 in r28,__SP_L__\r
+ 329 000c DEB7                 in r29,__SP_H__\r
+ 330                   /* prologue: function */\r
+ 331                   /* frame size = 3 */\r
+ 332                   /* stack size = 6 */\r
+ 333                   .L__stack_usage = 6\r
+ 334                   .LSM40:\r
+ 335 000e 8091 0000            lds r24,USB_HostState\r
+ 336 0012 8B30                 cpi r24,lo8(11)\r
+ 337 0014 01F0                 breq .+2\r
+ 338 0016 00C0                 rjmp .L9\r
+ 339                   .LBB47:\r
+ 340                   .LSM41:\r
+ 341 0018 80E0                 ldi r24,lo8(__c.3924)\r
+ 342 001a 90E0                 ldi r25,hi8(__c.3924)\r
+ 343 001c 0E94 0000            call puts_P\r
+ 344                   .LSM42:\r
+ 345 0020 0E94 0000            call ProcessConfigurationDescriptor\r
+ 346 0024 182F                 mov r17,r24\r
+ 347                   .LVL8:\r
+ 348 0026 8823                 tst r24\r
+ 349 0028 01F0                 breq .L12\r
+ 350                   .LSM43:\r
+ 351 002a 8130                 cpi r24,lo8(1)\r
+ 352 002c 01F4                 brne .L13\r
+ 353                   .LSM44:\r
+ 354 002e 80E0                 ldi r24,lo8(__c.3926)\r
+ 355 0030 90E0                 ldi r25,hi8(__c.3926)\r
+ 356                   .LVL9:\r
+ 357 0032 00C0                 rjmp .L20\r
+ 358                   .L13:\r
+ 359                   .LSM45:\r
+ 360 0034 80E0                 ldi r24,lo8(__c.3928)\r
+ 361 0036 90E0                 ldi r25,hi8(__c.3928)\r
+ 362                   .L20:\r
+ 363 0038 0E94 0000            call puts_P\r
+ 364                   .LSM46:\r
+ 365 003c 00D0                 rcall .\r
+ 366 003e 00D0                 rcall .\r
+ 367 0040 EDB7                 in r30,__SP_L__\r
+ 368 0042 FEB7                 in r31,__SP_H__\r
+ 369 0044 3196                 adiw r30,1\r
+ 370 0046 20E0                 ldi r18,lo8(__c.3930)\r
+ 371 0048 30E0                 ldi r19,hi8(__c.3930)\r
+ 372 004a ADB7                 in r26,__SP_L__\r
+ 373 004c BEB7                 in r27,__SP_H__\r
+ 374 004e 1296                 adiw r26,1+1\r
+ 375 0050 3C93                 st X,r19\r
+ 376 0052 2E93                 st -X,r18\r
+ 377 0054 1197                 sbiw r26,1\r
+ 378 0056 1283                 std Z+2,r17\r
+ 379                   .LVL10:\r
+ 380                   .L22:\r
+ 381 0058 1382                 std Z+3,__zero_reg__\r
+ 382 005a 0E94 0000            call printf_P\r
+ 383                   .LSM47:\r
+ 384 005e 0F90                 pop __tmp_reg__\r
+ 385 0060 0F90                 pop __tmp_reg__\r
+ 386 0062 0F90                 pop __tmp_reg__\r
+ 387 0064 0F90                 pop __tmp_reg__\r
+ 388 0066 00C0                 rjmp .L21\r
+ 389                   .LVL11:\r
+ 390                   .L12:\r
+ 391                   .LSM48:\r
+ 392 0068 81E0                 ldi r24,lo8(1)\r
+ 393 006a 0E94 0000            call USB_Host_SetDeviceConfiguration\r
+ 394                   .LVL12:\r
+ 395 006e 8823                 tst r24\r
+ 396 0070 01F0                 breq .L15\r
+ 397                   .LSM49:\r
+ 398 0072 00D0                 rcall .\r
+ 399 0074 00D0                 rcall .\r
+ 400 0076 EDB7                 in r30,__SP_L__\r
+ 401 0078 FEB7                 in r31,__SP_H__\r
+ 402 007a 3196                 adiw r30,1\r
+ 403 007c 20E0                 ldi r18,lo8(__c.3933)\r
+ 404 007e 30E0                 ldi r19,hi8(__c.3933)\r
+ 405 0080 00C0                 rjmp .L23\r
+ 406                   .L15:\r
+ 407                   .LSM50:\r
+ 408 0082 8091 0000            lds r24,StreamingInterfaceIndex\r
+ 409                   .LVL13:\r
+ 410 0086 6091 0000            lds r22,StreamingInterfaceAltSetting\r
+ 411 008a 0E94 0000            call USB_Host_SetInterfaceAltSetting\r
+ 412                   .LVL14:\r
+ 413 008e 8823                 tst r24\r
+ 414 0090 01F0                 breq .L16\r
+ 415                   .LSM51:\r
+ 416 0092 00D0                 rcall .\r
+ 417 0094 00D0                 rcall .\r
+ 418 0096 EDB7                 in r30,__SP_L__\r
+ 419 0098 FEB7                 in r31,__SP_H__\r
+ 420 009a 3196                 adiw r30,1\r
+ 421 009c 20E0                 ldi r18,lo8(__c.3935)\r
+ 422 009e 30E0                 ldi r19,hi8(__c.3935)\r
+ 423                   .L23:\r
+ 424 00a0 ADB7                 in r26,__SP_L__\r
+ 425 00a2 BEB7                 in r27,__SP_H__\r
+ 426 00a4 1296                 adiw r26,1+1\r
+ 427 00a6 3C93                 st X,r19\r
+ 428 00a8 2E93                 st -X,r18\r
+ 429 00aa 1197                 sbiw r26,1\r
+ 430 00ac 8283                 std Z+2,r24\r
+ 431 00ae 00C0                 rjmp .L22\r
+ 432                   .L16:\r
+ 433                   .LSM52:\r
+ 434 00b0 2091 0000            lds r18,StreamingEndpointAddress\r
+ 435 00b4 82E2                 ldi r24,lo8(34)\r
+ 436                   .LVL15:\r
+ 437 00b6 8093 0000            sts USB_ControlRequest,r24\r
+ 438 00ba 81E0                 ldi r24,lo8(1)\r
+ 439 00bc 8093 0000            sts USB_ControlRequest+1,r24\r
+ 440 00c0 80E0                 ldi r24,lo8(256)\r
+ 441 00c2 91E0                 ldi r25,hi8(256)\r
+ 442 00c4 9093 0000            sts USB_ControlRequest+2+1,r25\r
+ 443 00c8 8093 0000            sts USB_ControlRequest+2,r24\r
+ 444 00cc 2093 0000            sts USB_ControlRequest+4,r18\r
+ 445 00d0 1092 0000            sts USB_ControlRequest+5,__zero_reg__\r
+ 446 00d4 83E0                 ldi r24,lo8(3)\r
+ 447 00d6 90E0                 ldi r25,hi8(3)\r
+ 448 00d8 9093 0000            sts USB_ControlRequest+6+1,r25\r
+ 449 00dc 8093 0000            sts USB_ControlRequest+6,r24\r
+ 450                   .LSM53:\r
+ 451 00e0 DE01                 movw r26,r28\r
+ 452 00e2 1196                 adiw r26,1\r
+ 453 00e4 E0E0                 ldi r30,lo8(C.5.5024)\r
+ 454 00e6 F0E0                 ldi r31,hi8(C.5.5024)\r
+ 455 00e8 83E0                 ldi r24,lo8(3)\r
+ 456                   .L17:\r
+ 457 00ea 0190                 ld r0,Z+\r
+ 458 00ec 0D92                 st X+,r0\r
+ 459 00ee 8150                 subi r24,lo8(-(-1))\r
+ 460 00f0 01F4                 brne .L17\r
+ 461                   .LVL16:\r
+ 462                   .LBB48:\r
+ 463                   .LBB49:\r
+ 464                   .LSM54:\r
+ 465 00f2 1092 A700            sts 167,__zero_reg__\r
+ 466                   .LBE49:\r
+ 467                   .LBE48:\r
+ 468                   .LSM55:\r
+ 469 00f6 CE01                 movw r24,r28\r
+ 470 00f8 0196                 adiw r24,1\r
+ 471 00fa 0E94 0000            call USB_Host_SendControlRequest\r
+ 472                   .LVL17:\r
+ 473 00fe 8823                 tst r24\r
+ 474 0100 01F0                 breq .L18\r
+ 475                   .LVL18:\r
+ 476                   .L21:\r
+ 477                   .LSM56:\r
+ 478 0102 80E9                 ldi r24,lo8(-112)\r
+ 479 0104 0E94 0000            call LEDs_SetAllLEDs\r
+ 480                   .LSM57:\r
+ 481 0108 1092 0000            sts USB_HostState,__zero_reg__\r
+ 482                   .LSM58:\r
+ 483 010c 00C0                 rjmp .L9\r
+ 484                   .LVL19:\r
+ 485                   .L18:\r
+ 486                   .LSM59:\r
+ 487 010e 82E0                 ldi r24,lo8(2)\r
+ 488                   .LVL20:\r
+ 489 0110 8093 6E00            sts 110,r24\r
+ 490                   .LSM60:\r
+ 491 0114 9CE7                 ldi r25,lo8(124)\r
+ 492 0116 97BD                 out 71-32,r25\r
+ 493                   .LSM61:\r
+ 494 0118 84BD                 out 68-32,r24\r
+ 495                   .LSM62:\r
+ 496 011a 85BD                 out 69-32,r24\r
+ 497                   .LSM63:\r
+ 498 011c 3E9A                 sbi 39-32,6\r
+ 499                   .LSM64:\r
+ 500 011e 81EF                 ldi r24,lo8(-15)\r
+ 501 0120 8093 9000            sts 144,r24\r
+ 502                   .LSM65:\r
+ 503 0124 89E0                 ldi r24,lo8(9)\r
+ 504 0126 8093 9100            sts 145,r24\r
+ 505                   .LSM66:\r
+ 506 012a 80E0                 ldi r24,lo8(__c.3939)\r
+ 507 012c 90E0                 ldi r25,hi8(__c.3939)\r
+ 508 012e 0E94 0000            call puts_P\r
+ 509                   .LSM67:\r
+ 510 0132 8CE0                 ldi r24,lo8(12)\r
+ 511 0134 8093 0000            sts USB_HostState,r24\r
+ 512                   .LVL21:\r
+ 513                   .L9:\r
+ 514                   /* epilogue start */\r
+ 515                   .LBE47:\r
+ 516                   .LSM68:\r
+ 517 0138 0F90                 pop __tmp_reg__\r
+ 518 013a 0F90                 pop __tmp_reg__\r
+ 519 013c 0F90                 pop __tmp_reg__\r
+ 520 013e CF91                 pop r28\r
+ 521 0140 DF91                 pop r29\r
+ 522 0142 1F91                 pop r17\r
+ 523 0144 0895                 ret\r
+ 524                   .LFE138:\r
+ 526                           .section        .text.main,"ax",@progbits\r
+ 527                   .global main\r
+ 529                   main:\r
+ 530                   .LFB131:\r
+ 531                   .LSM69:\r
+ 532                   /* prologue: function */\r
+ 533                   /* frame size = 0 */\r
+ 534                   /* stack size = 0 */\r
+ 535                   .L__stack_usage = 0\r
+ 536                   .LSM70:\r
+ 537 0000 0E94 0000            call SetupHardware\r
+ 538                   .LSM71:\r
+ 539 0004 80E0                 ldi r24,lo8(__c.3888)\r
+ 540 0006 90E0                 ldi r25,hi8(__c.3888)\r
+ 541 0008 0E94 0000            call puts_P\r
+ 542                   .LSM72:\r
+ 543 000c 80E1                 ldi r24,lo8(16)\r
+ 544 000e 0E94 0000            call LEDs_SetAllLEDs\r
+ 545                   .LSM73:\r
+ 546                   /* #APP */\r
+ 547                    ;  49 "AudioInputHost.c" 1\r
+ 548 0012 7894                 sei\r
+ 549                    ;  0 "" 2\r
+ 550                   /* #NOAPP */\r
+ 551                   .L25:\r
+ 552                   .LSM74:\r
+ 553 0014 0E94 0000            call Audio_Task\r
+ 554                   .LSM75:\r
+ 555 0018 0E94 0000            call USB_USBTask\r
+ 556 001c 00C0                 rjmp .L25\r
+ 557                   .LFE131:\r
+ 559                           .section        .text.__vector_21,"ax",@progbits\r
+ 560                   .global __vector_21\r
+ 562                   __vector_21:\r
+ 563                   .LFB139:\r
+ 564                   .LSM76:\r
+ 565 0000 1F92                 push __zero_reg__\r
+ 566 0002 0F92                 push r0\r
+ 567 0004 0FB6                 in r0,__SREG__\r
+ 568 0006 0F92                 push r0\r
+ 569 0008 0BB6                 in r0,91-32\r
+ 570 000a 0F92                 push r0\r
+ 571 000c 1124                 clr __zero_reg__\r
+ 572 000e 1F93                 push r17\r
+ 573 0010 2F93                 push r18\r
+ 574 0012 3F93                 push r19\r
+ 575 0014 4F93                 push r20\r
+ 576 0016 5F93                 push r21\r
+ 577 0018 6F93                 push r22\r
+ 578 001a 7F93                 push r23\r
+ 579 001c 8F93                 push r24\r
+ 580 001e 9F93                 push r25\r
+ 581 0020 AF93                 push r26\r
+ 582 0022 BF93                 push r27\r
+ 583 0024 EF93                 push r30\r
+ 584 0026 FF93                 push r31\r
+ 585                   /* prologue: Signal */\r
+ 586                   /* frame size = 0 */\r
+ 587                   /* stack size = 17 */\r
+ 588                   .L__stack_usage = 17\r
+ 589                   .LBB50:\r
+ 590                   .LBB51:\r
+ 591                   .LSM77:\r
+ 592 0028 1091 A700            lds r17,167\r
+ 593 002c 1770                 andi r17,lo8(7)\r
+ 594                   .LVL22:\r
+ 595                   .LBE51:\r
+ 596                   .LBE50:\r
+ 597                   .LBB52:\r
+ 598                   .LBB53:\r
+ 599                   .LSM78:\r
+ 600 002e 81E0                 ldi r24,lo8(1)\r
+ 601 0030 8093 A700            sts 167,r24\r
+ 602                   .LBE53:\r
+ 603                   .LBE52:\r
+ 604                   .LBB54:\r
+ 605                   .LBB55:\r
+ 606                   .LSM79:\r
+ 607 0034 8091 A900            lds r24,169\r
+ 608 0038 8F7B                 andi r24,lo8(-65)\r
+ 609 003a 8093 A900            sts 169,r24\r
+ 610                   .LBE55:\r
+ 611                   .LBE54:\r
+ 612                   .LBB56:\r
+ 613                   .LBB57:\r
+ 614                   .LSM80:\r
+ 615 003e 8091 A600            lds r24,166\r
+ 616                   .LBE57:\r
+ 617                   .LBE56:\r
+ 618                   .LSM81:\r
+ 619 0042 80FF                 sbrs r24,0\r
+ 620 0044 00C0                 rjmp .L27\r
+ 621                   .LBB58:\r
+ 622                   .LBB59:\r
+ 623                   .LBB60:\r
+ 624                   .LSM82:\r
+ 625 0046 8091 AF00            lds r24,175\r
+ 626                   .LSM83:\r
+ 627 004a 4091 AF00            lds r20,175\r
+ 628                   .LVL23:\r
+ 629                   .LBE60:\r
+ 630                   .LBE59:\r
+ 631                   .LBB61:\r
+ 632                   .LBB62:\r
+ 633                   .LSM84:\r
+ 634 004e 8091 A600            lds r24,166\r
+ 635                   .LBE62:\r
+ 636                   .LBE61:\r
+ 637                   .LSM85:\r
+ 638 0052 85FD                 sbrc r24,5\r
+ 639 0054 00C0                 rjmp .L28\r
+ 640                   .LBB63:\r
+ 641                   .LBB64:\r
+ 642                   .LSM86:\r
+ 643 0056 8091 A600            lds r24,166\r
+ 644 005a 8E77                 andi r24,lo8(126)\r
+ 645 005c 8093 A600            sts 166,r24\r
+ 646                   .L28:\r
+ 647                   .LBE64:\r
+ 648                   .LBE63:\r
+ 649                   .LSM87:\r
+ 650 0060 842F                 mov r24,r20\r
+ 651 0062 9927                 clr r25\r
+ 652 0064 87FD                 sbrc r24,7\r
+ 653 0066 9095                 com r25\r
+ 654 0068 20E8                 ldi r18,lo8(128)\r
+ 655 006a 30E0                 ldi r19,hi8(128)\r
+ 656 006c 8227                 eor r24,r18\r
+ 657 006e 9327                 eor r25,r19\r
+ 658 0070 9093 9900            sts 152+1,r25\r
+ 659 0074 8093 9800            sts 152,r24\r
+ 660                   .LVL24:\r
+ 661                   .LSM88:\r
+ 662 0078 4131                 cpi r20,lo8(17)\r
+ 663 007a 04F4                 brge .L30\r
+ 664                   .LSM89:\r
+ 665 007c 4930                 cpi r20,lo8(9)\r
+ 666 007e 04F4                 brge .L31\r
+ 667                   .LSM90:\r
+ 668 0080 4530                 cpi r20,lo8(5)\r
+ 669 0082 04F4                 brge .L32\r
+ 670                   .LSM91:\r
+ 671 0084 4330                 cpi r20,lo8(3)\r
+ 672 0086 04F4                 brge .L33\r
+ 673                   .LSM92:\r
+ 674 0088 80E0                 ldi r24,lo8(0)\r
+ 675 008a 00C0                 rjmp .L29\r
+ 676                   .L30:\r
+ 677                   .LSM93:\r
+ 678 008c 80EF                 ldi r24,lo8(-16)\r
+ 679 008e 00C0                 rjmp .L29\r
+ 680                   .L31:\r
+ 681                   .LSM94:\r
+ 682 0090 80EB                 ldi r24,lo8(-80)\r
+ 683 0092 00C0                 rjmp .L29\r
+ 684                   .L32:\r
+ 685                   .LSM95:\r
+ 686 0094 80E3                 ldi r24,lo8(48)\r
+ 687 0096 00C0                 rjmp .L29\r
+ 688                   .L33:\r
+ 689                   .LSM96:\r
+ 690 0098 80E1                 ldi r24,lo8(16)\r
+ 691                   .L29:\r
+ 692                   .LVL25:\r
+ 693                   .LSM97:\r
+ 694 009a 0E94 0000            call LEDs_SetAllLEDs\r
+ 695                   .LVL26:\r
+ 696                   .L27:\r
+ 697                   .LBE58:\r
+ 698                   .LBB65:\r
+ 699                   .LBB66:\r
+ 700                   .LSM98:\r
+ 701 009e 8091 A900            lds r24,169\r
+ 702 00a2 8064                 ori r24,lo8(64)\r
+ 703 00a4 8093 A900            sts 169,r24\r
+ 704                   .LVL27:\r
+ 705                   .LBE66:\r
+ 706                   .LBE65:\r
+ 707                   .LBB67:\r
+ 708                   .LBB68:\r
+ 709                   .LSM99:\r
+ 710 00a8 1093 A700            sts 167,r17\r
+ 711                   /* epilogue start */\r
+ 712                   .LBE68:\r
+ 713                   .LBE67:\r
+ 714                   .LSM100:\r
+ 715 00ac FF91                 pop r31\r
+ 716 00ae EF91                 pop r30\r
+ 717 00b0 BF91                 pop r27\r
+ 718 00b2 AF91                 pop r26\r
+ 719 00b4 9F91                 pop r25\r
+ 720 00b6 8F91                 pop r24\r
+ 721 00b8 7F91                 pop r23\r
+ 722 00ba 6F91                 pop r22\r
+ 723 00bc 5F91                 pop r21\r
+ 724 00be 4F91                 pop r20\r
+ 725 00c0 3F91                 pop r19\r
+ 726 00c2 2F91                 pop r18\r
+ 727 00c4 1F91                 pop r17\r
+ 728                   .LVL28:\r
+ 729 00c6 0F90                 pop r0\r
+ 730 00c8 0BBE                 out 91-32,r0\r
+ 731 00ca 0F90                 pop r0\r
+ 732 00cc 0FBE                 out __SREG__,r0\r
+ 733 00ce 0F90                 pop r0\r
+ 734 00d0 1F90                 pop __zero_reg__\r
+ 735 00d2 1895                 reti\r
+ 736                   .LFE139:\r
+ 738                           .section        .progmem.data,"a",@progbits\r
+ 741                   __c.3939:\r
+ 742 0000 4D69 6372            .string "Microphone Enumerated.\r\n"\r
+ 742      6F70 686F \r
+ 742      6E65 2045 \r
+ 742      6E75 6D65 \r
+ 742      7261 7465 \r
+ 745                   __c.3935:\r
+ 746 0019 1B5B 3331            .ascii  "\033[31mCould not set alt"\r
+ 746      6D43 6F75 \r
+ 746      6C64 206E \r
+ 746      6F74 2073 \r
+ 746      6574 2061 \r
+ 747 002f 6572 6E61            .string "ernative streaming interface setting.\r\n -- Error Code: %d\r\n\033[37m"\r
+ 747      7469 7665 \r
+ 747      2073 7472 \r
+ 747      6561 6D69 \r
+ 747      6E67 2069 \r
+ 750                   __c.3933:\r
+ 751 0070 1B5B                 .ascii  "\033["\r
+ 752 0072 3331 6D43            .string "31mControl Error (Set Configuration).\r\n -- Error Code: %d\r\n\033[37m"\r
+ 752      6F6E 7472 \r
+ 752      6F6C 2045 \r
+ 752      7272 6F72 \r
+ 752      2028 5365 \r
+ 755                   __c.3930:\r
+ 756 00b3 202D 2D20            .string " -- Error Code: %d\r\n\033[37m"\r
+ 756      4572 726F \r
+ 756      7220 436F \r
+ 756      6465 3A20 \r
+ 756      2564 0D0A \r
+ 759                   __c.3928:\r
+ 760 00cd 1B5B 3331            .string "\033[31mInvalid Device.\r\n"\r
+ 760      6D49 6E76 \r
+ 760      616C 6964 \r
+ 760      2044 6576 \r
+ 760      6963 652E \r
+ 763                   __c.3926:\r
+ 764 00e4 1B5B 3331            .string "\033[31mControl Error (Get Configuration).\r\n"\r
+ 764      6D43 6F6E \r
+ 764      7472 6F6C \r
+ 764      2045 7272 \r
+ 764      6F72 2028 \r
+ 767                   __c.3924:\r
+ 768 010e 4765 7474            .string "Getting Config Data.\r\n"\r
+ 768      696E 6720 \r
+ 768      436F 6E66 \r
+ 768      6967 2044 \r
+ 768      6174 612E \r
+ 769                           .data\r
+ 772                   C.5.5024:\r
+ 773 0000 80                   .byte   -128\r
+ 774 0001 BB                   .byte   -69\r
+ 775 0002 00                   .byte   0\r
+ 776                           .section        .progmem.data\r
+ 779                   __c.3917:\r
+ 780 0125 1B5B 3331            .ascii  "\033[31mDev Enum Error\r\n"\r
+ 780      6D44 6576 \r
+ 780      2045 6E75 \r
+ 780      6D20 4572 \r
+ 780      726F 720D \r
+ 781 013a 202D 2D20            .string " -- Error Code %d\r\n -- Sub Error Code %d\r\n -- In State %d\r\n\033[37m"\r
+ 781      4572 726F \r
+ 781      7220 436F \r
+ 781      6465 2025 \r
+ 781      640D 0A20 \r
+ 784                   __c.3910:\r
+ 785 017b 1B5B 3331            .string "\033[31mHost Mode Error\r\n -- Error Code %d\r\n\033[37m"\r
+ 785      6D48 6F73 \r
+ 785      7420 4D6F \r
+ 785      6465 2045 \r
+ 785      7272 6F72 \r
+ 788                   __c.3902:\r
+ 789 01aa 1B5B 3332            .string "\033[32mDevice Unattached.\r\n\033[37m"\r
+ 789      6D44 6576 \r
+ 789      6963 6520 \r
+ 789      556E 6174 \r
+ 789      7461 6368 \r
+ 792                   __c.3897:\r
+ 793 01c9 1B5B 3332            .string "\033[32mDevice Attached.\r\n\033[37m"\r
+ 793      6D44 6576 \r
+ 793      6963 6520 \r
+ 793      4174 7461 \r
+ 793      6368 6564 \r
+ 796                   __c.3888:\r
+ 797 01e6 1B5B 3336            .string "\033[36mAudio Host Demo running.\r\n\033[37m"\r
+ 797      6D41 7564 \r
+ 797      696F 2048 \r
+ 797      6F73 7420 \r
+ 797      4465 6D6F \r
+ 894                   .Letext0:\r
+DEFINED SYMBOLS\r
+                            *ABS*:00000000 AudioInputHost.c\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:2      *ABS*:0000003f __SREG__\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:3      *ABS*:0000003e __SP_H__\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:4      *ABS*:0000003d __SP_L__\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:5      *ABS*:00000034 __CCP__\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:6      *ABS*:00000000 __tmp_reg__\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:7      *ABS*:00000001 __zero_reg__\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:18     .text.LEDs_SetAllLEDs:00000000 LEDs_SetAllLEDs\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:39     .text.SetupHardware:00000000 SetupHardware\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:151    .text.EVENT_USB_Host_DeviceAttached:00000000 EVENT_USB_Host_DeviceAttached\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:792    .progmem.data:000001c9 __c.3897\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:173    .text.EVENT_USB_Host_DeviceUnattached:00000000 EVENT_USB_Host_DeviceUnattached\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:788    .progmem.data:000001aa __c.3902\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:195    .text.EVENT_USB_Host_DeviceEnumerationComplete:00000000 EVENT_USB_Host_DeviceEnumerationComplete\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:213    .text.EVENT_USB_Host_HostError:00000000 EVENT_USB_Host_HostError\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:784    .progmem.data:0000017b __c.3910\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:262    .text.EVENT_USB_Host_DeviceEnumerationFailed:00000000 EVENT_USB_Host_DeviceEnumerationFailed\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:779    .progmem.data:00000125 __c.3917\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:320    .text.Audio_Task:00000000 Audio_Task\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:767    .progmem.data:0000010e __c.3924\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:763    .progmem.data:000000e4 __c.3926\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:759    .progmem.data:000000cd __c.3928\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:755    .progmem.data:000000b3 __c.3930\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:750    .progmem.data:00000070 __c.3933\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:745    .progmem.data:00000019 __c.3935\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:772    .data:00000000 C.5.5024\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:741    .progmem.data:00000000 __c.3939\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:529    .text.main:00000000 main\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:796    .progmem.data:000001e6 __c.3888\r
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:562    .text.__vector_21:00000000 __vector_21\r
+\r
+UNDEFINED SYMBOLS\r
+USB_Init\r
+USARTSerialStream\r
+__iob\r
+Serial_putchar\r
+Serial_getchar\r
+puts_P\r
+USB_Disable\r
+printf_P\r
+USB_HostState\r
+ProcessConfigurationDescriptor\r
+USB_Host_SetDeviceConfiguration\r
+StreamingInterfaceIndex\r
+StreamingInterfaceAltSetting\r
+USB_Host_SetInterfaceAltSetting\r
+StreamingEndpointAddress\r
+USB_ControlRequest\r
+USB_Host_SendControlRequest\r
+USB_USBTask\r
+__do_copy_data\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map
new file mode 100644 (file)
index 0000000..189341a
--- /dev/null
@@ -0,0 +1,1169 @@
+Archive member included because of file (symbol)\r
+\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o (exit)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+                              AudioInputHost.o (__do_copy_data)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+                              ConfigDescriptor.o (__do_clear_bss)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+                              AudioInputHost.o (__iob)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+                              AudioInputHost.o (printf_P)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+                              AudioInputHost.o (puts_P)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o) (vfprintf)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+                              ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__eerd_byte_usb1287)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+                              ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__eeupd_byte_usb1287)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen_P)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (strnlen)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (fputc)\r
+c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o) (__ultoa_invert)\r
+\r
+Allocating common symbols\r
+Common symbol       size              file\r
+\r
+USB_IsInitialized   0x1               ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+USARTSerialStream   0xe               ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+USB_ControlRequest  0x8               ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+USB_HostState       0x1               ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+__iob               0x6               c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+\r
+Discarded input sections\r
+\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ .text          0x00000000        0x0 AudioInputHost.o\r
+ .bss           0x00000000        0x0 AudioInputHost.o\r
+ .text          0x00000000        0x0 ConfigDescriptor.o\r
+ .data          0x00000000        0x0 ConfigDescriptor.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_GetDeviceDescriptor\r
+                0x00000000       0x1c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_GetDeviceStringDescriptor\r
+                0x00000000       0x34 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_ClearPipeStall\r
+                0x00000000       0x32 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .text.Pipe_IsEndpointBound\r
+                0x00000000       0x5c ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .text.Pipe_WaitUntilReady\r
+                0x00000000       0x5e ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Discard_Stream\r
+                0x00000000       0x9a ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Null_Stream\r
+                0x00000000       0x9e ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_Stream_LE\r
+                0x00000000       0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_Stream_BE\r
+                0x00000000       0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_Stream_LE\r
+                0x00000000       0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_Stream_BE\r
+                0x00000000       0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_PStream_LE\r
+                0x00000000       0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_PStream_BE\r
+                0x00000000       0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_EStream_LE\r
+                0x00000000       0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Write_EStream_BE\r
+                0x00000000       0xbc ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_EStream_LE\r
+                0x00000000       0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text.Pipe_Read_EStream_BE\r
+                0x00000000       0xbe ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text.USB_GetNextDescriptorOfType\r
+                0x00000000       0x4c ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text.USB_GetNextDescriptorOfTypeBefore\r
+                0x00000000       0x56 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text.USB_GetNextDescriptorOfTypeAfter\r
+                0x00000000       0x34 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_ProcessHIDReport\r
+                0x00000000      0x766 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_GetHIDReportItemInfo\r
+                0x00000000       0xb6 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_SetHIDReportItemInfo\r
+                0x00000000       0xc2 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text.USB_GetHIDReportSize\r
+                0x00000000       0x58 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .text          0x00000000        0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .data          0x00000000        0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .bss           0x00000000        0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_getchar_Blocking\r
+                0x00000000       0x20 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_SendString_P\r
+                0x00000000       0x1a ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_SendString\r
+                0x00000000       0x1c ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text.Serial_SendData\r
+                0x00000000       0x1e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .text.libgcc   0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .text.avr-libc\r
+                0x00000000       0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .text.avr-libc\r
+                0x00000000       0x24 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ .text          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ .data          0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+ .bss           0x00000000        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+\r
+Memory Configuration\r
+\r
+Name             Origin             Length             Attributes\r
+text             0x00000000         0x00020000         xr\r
+data             0x00800100         0x0000ff00         rw !x\r
+eeprom           0x00810000         0x00010000         rw !x\r
+fuse             0x00820000         0x00000400         rw !x\r
+lock             0x00830000         0x00000400         rw !x\r
+signature        0x00840000         0x00000400         rw !x\r
+*default*        0x00000000         0xffffffff\r
+\r
+Linker script and memory map\r
+\r
+Address of section .data set to 0x800100\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+LOAD AudioInputHost.o\r
+LOAD ConfigDescriptor.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/Events.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+LOAD ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+LOAD ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+LOAD ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libm.a\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a\r
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a\r
+\r
+.hash\r
+ *(.hash)\r
+\r
+.dynsym\r
+ *(.dynsym)\r
+\r
+.dynstr\r
+ *(.dynstr)\r
+\r
+.gnu.version\r
+ *(.gnu.version)\r
+\r
+.gnu.version_d\r
+ *(.gnu.version_d)\r
+\r
+.gnu.version_r\r
+ *(.gnu.version_r)\r
+\r
+.rel.init\r
+ *(.rel.init)\r
+\r
+.rela.init\r
+ *(.rela.init)\r
+\r
+.rel.text\r
+ *(.rel.text)\r
+ *(.rel.text.*)\r
+ *(.rel.gnu.linkonce.t*)\r
+\r
+.rela.text\r
+ *(.rela.text)\r
+ *(.rela.text.*)\r
+ *(.rela.gnu.linkonce.t*)\r
+\r
+.rel.fini\r
+ *(.rel.fini)\r
+\r
+.rela.fini\r
+ *(.rela.fini)\r
+\r
+.rel.rodata\r
+ *(.rel.rodata)\r
+ *(.rel.rodata.*)\r
+ *(.rel.gnu.linkonce.r*)\r
+\r
+.rela.rodata\r
+ *(.rela.rodata)\r
+ *(.rela.rodata.*)\r
+ *(.rela.gnu.linkonce.r*)\r
+\r
+.rel.data\r
+ *(.rel.data)\r
+ *(.rel.data.*)\r
+ *(.rel.gnu.linkonce.d*)\r
+\r
+.rela.data\r
+ *(.rela.data)\r
+ *(.rela.data.*)\r
+ *(.rela.gnu.linkonce.d*)\r
+\r
+.rel.ctors\r
+ *(.rel.ctors)\r
+\r
+.rela.ctors\r
+ *(.rela.ctors)\r
+\r
+.rel.dtors\r
+ *(.rel.dtors)\r
+\r
+.rela.dtors\r
+ *(.rela.dtors)\r
+\r
+.rel.got\r
+ *(.rel.got)\r
+\r
+.rela.got\r
+ *(.rela.got)\r
+\r
+.rel.bss\r
+ *(.rel.bss)\r
+\r
+.rela.bss\r
+ *(.rela.bss)\r
+\r
+.rel.plt\r
+ *(.rel.plt)\r
+\r
+.rela.plt\r
+ *(.rela.plt)\r
+\r
+.text           0x00000000     0x18fa\r
+ *(.vectors)\r
+ .vectors       0x00000000       0x98 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+                0x00000000                __vector_default\r
+                0x00000000                __vectors\r
+ *(.vectors)\r
+ *(.progmem.gcc*)\r
+ *(.progmem*)\r
+ .progmem.data  0x00000098      0x20b AudioInputHost.o\r
+                0x000002a4                . = ALIGN (0x2)\r
+ *fill*         0x000002a3        0x1 00\r
+                0x000002a4                __trampolines_start = .\r
+ *(.trampolines)\r
+ .trampolines   0x000002a4        0x0 linker stubs\r
+ *(.trampolines*)\r
+                0x000002a4                __trampolines_end = .\r
+ *(.jumptables)\r
+ *(.jumptables*)\r
+ *(.lowtext)\r
+ *(.lowtext*)\r
+                0x000002a4                __ctors_start = .\r
+ *(.ctors)\r
+                0x000002a4                __ctors_end = .\r
+                0x000002a4                __dtors_start = .\r
+ *(.dtors)\r
+                0x000002a4                __dtors_end = .\r
+ SORT(*)(.ctors)\r
+ SORT(*)(.dtors)\r
+ *(.init0)\r
+ .init0         0x000002a4        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+                0x000002a4                __init\r
+ *(.init0)\r
+ *(.init1)\r
+ *(.init1)\r
+ *(.init2)\r
+ .init2         0x000002a4        0xc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ *(.init2)\r
+ *(.init3)\r
+ *(.init3)\r
+ *(.init4)\r
+ .init4         0x000002b0       0x1a c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+                0x000002b0                __do_copy_data\r
+ .init4         0x000002ca       0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+                0x000002ca                __do_clear_bss\r
+ *(.init4)\r
+ *(.init5)\r
+ *(.init5)\r
+ *(.init6)\r
+ *(.init6)\r
+ *(.init7)\r
+ *(.init7)\r
+ *(.init8)\r
+ *(.init8)\r
+ *(.init9)\r
+ .init9         0x000002da        0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ *(.init9)\r
+ *(.text)\r
+ .text          0x000002e0        0x2 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+                0x000002e0                __vector_22\r
+                0x000002e0                __vector_28\r
+                0x000002e0                __vector_1\r
+                0x000002e0                __vector_32\r
+                0x000002e0                __vector_34\r
+                0x000002e0                __vector_24\r
+                0x000002e0                __vector_12\r
+                0x000002e0                __bad_interrupt\r
+                0x000002e0                __vector_6\r
+                0x000002e0                __vector_31\r
+                0x000002e0                __vector_35\r
+                0x000002e0                __vector_3\r
+                0x000002e0                __vector_23\r
+                0x000002e0                __vector_30\r
+                0x000002e0                __vector_25\r
+                0x000002e0                __vector_11\r
+                0x000002e0                __vector_13\r
+                0x000002e0                __vector_17\r
+                0x000002e0                __vector_19\r
+                0x000002e0                __vector_7\r
+                0x000002e0                __vector_27\r
+                0x000002e0                __vector_5\r
+                0x000002e0                __vector_33\r
+                0x000002e0                __vector_37\r
+                0x000002e0                __vector_4\r
+                0x000002e0                __vector_9\r
+                0x000002e0                __vector_2\r
+                0x000002e0                __vector_15\r
+                0x000002e0                __vector_36\r
+                0x000002e0                __vector_29\r
+                0x000002e0                __vector_8\r
+                0x000002e0                __vector_26\r
+                0x000002e0                __vector_14\r
+                0x000002e0                __vector_16\r
+                0x000002e0                __vector_18\r
+                0x000002e0                __vector_20\r
+                0x000002e2                . = ALIGN (0x2)\r
+ *(.text.*)\r
+ .text.LEDs_SetAllLEDs\r
+                0x000002e2        0xa AudioInputHost.o\r
+ .text.SetupHardware\r
+                0x000002ec       0x92 AudioInputHost.o\r
+                0x000002ec                SetupHardware\r
+ .text.EVENT_USB_Host_DeviceAttached\r
+                0x0000037e        0xa AudioInputHost.o\r
+                0x0000037e                EVENT_USB_Host_DeviceAttached\r
+ .text.EVENT_USB_Host_DeviceUnattached\r
+                0x00000388        0xa AudioInputHost.o\r
+                0x00000388                EVENT_USB_Host_DeviceUnattached\r
+ .text.EVENT_USB_Host_DeviceEnumerationComplete\r
+                0x00000392        0x4 AudioInputHost.o\r
+                0x00000392                EVENT_USB_Host_DeviceEnumerationComplete\r
+ .text.EVENT_USB_Host_HostError\r
+                0x00000396       0x3e AudioInputHost.o\r
+                0x00000396                EVENT_USB_Host_HostError\r
+ .text.EVENT_USB_Host_DeviceEnumerationFailed\r
+                0x000003d4       0x50 AudioInputHost.o\r
+                0x000003d4                EVENT_USB_Host_DeviceEnumerationFailed\r
+ .text.Audio_Task\r
+                0x00000424      0x134 AudioInputHost.o\r
+                0x00000424                Audio_Task\r
+ .text.main     0x00000558       0x14 AudioInputHost.o\r
+                0x00000558                main\r
+ .text.__vector_21\r
+                0x0000056c       0xd2 AudioInputHost.o\r
+                0x0000056c                __vector_21\r
+ .text.DComp_NextAudioControlInterface\r
+                0x0000063e       0x22 ConfigDescriptor.o\r
+                0x0000063e                DComp_NextAudioControlInterface\r
+ .text.DComp_NextAudioStreamInterface\r
+                0x00000660       0x22 ConfigDescriptor.o\r
+                0x00000660                DComp_NextAudioStreamInterface\r
+ .text.DComp_NextAudioInterfaceDataEndpoint\r
+                0x00000682       0x22 ConfigDescriptor.o\r
+                0x00000682                DComp_NextAudioInterfaceDataEndpoint\r
+ .text.ProcessConfigurationDescriptor\r
+                0x000006a4      0x132 ConfigDescriptor.o\r
+                0x000006a4                ProcessConfigurationDescriptor\r
+ .text.USB_Host_ResetDevice\r
+                0x000007d6       0xa8 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .text.USB_Host_WaitMS\r
+                0x0000087e       0xaa ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                0x0000087e                USB_Host_WaitMS\r
+ .text.USB_Host_ProcessNextHostState\r
+                0x00000928      0x264 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                0x00000928                USB_Host_ProcessNextHostState\r
+ .text.USB_Host_SetDeviceConfiguration\r
+                0x00000b8c       0x2c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                0x00000b8c                USB_Host_SetDeviceConfiguration\r
+ .text.USB_Host_SetInterfaceAltSetting\r
+                0x00000bb8       0x2e ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                0x00000bb8                USB_Host_SetInterfaceAltSetting\r
+ .text.Pipe_ConfigurePipe\r
+                0x00000be6       0xce ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                0x00000be6                Pipe_ConfigurePipe\r
+ .text.Pipe_ClearPipes\r
+                0x00000cb4       0x28 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                0x00000cb4                Pipe_ClearPipes\r
+ .text.USB_Disable\r
+                0x00000cdc       0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                0x00000cdc                USB_Disable\r
+ .text.USB_ResetInterface\r
+                0x00000d0c       0x9c ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                0x00000d0c                USB_ResetInterface\r
+ .text.USB_Init\r
+                0x00000da8       0x12 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                0x00000da8                USB_Init\r
+ .text.USB_INT_DisableAllInterrupts\r
+                0x00000dba       0x10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                0x00000dba                USB_INT_DisableAllInterrupts\r
+ .text.USB_INT_ClearAllInterrupts\r
+                0x00000dca        0xa ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                0x00000dca                USB_INT_ClearAllInterrupts\r
+ .text.__vector_10\r
+                0x00000dd4      0x126 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                0x00000dd4                __vector_10\r
+ .text.USB_Host_GetDeviceConfigDescriptor\r
+                0x00000efa       0xae ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+                0x00000efa                USB_Host_GetDeviceConfigDescriptor\r
+ .text.USB_GetNextDescriptorComp\r
+                0x00000fa8       0x86 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+                0x00000fa8                USB_GetNextDescriptorComp\r
+ .text.USB_Event_Stub\r
+                0x0000102e        0x2 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+                0x0000102e                EVENT_USB_Host_StartOfFrame\r
+                0x0000102e                USB_Event_Stub\r
+ .text.USB_Host_WaitForIOS\r
+                0x00001030       0x52 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .text.USB_Host_SendControlRequest\r
+                0x00001082      0x22c ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+                0x00001082                USB_Host_SendControlRequest\r
+ .text.USB_USBTask\r
+                0x000012ae       0x1c ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                0x000012ae                USB_USBTask\r
+ .text.Serial_putchar\r
+                0x000012ca       0x12 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                0x000012ca                Serial_putchar\r
+ .text.Serial_getchar\r
+                0x000012dc       0x26 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                0x000012dc                Serial_getchar\r
+ .text.avr-libc\r
+                0x00001302       0x3e c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+                0x00001302                printf_P\r
+ .text.avr-libc\r
+                0x00001340       0x70 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+                0x00001340                puts_P\r
+ .text.avr-libc\r
+                0x000013b0      0x406 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+                0x000013b0                vfprintf\r
+ .text.avr-libc\r
+                0x000017b6       0x16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+                0x000017b6                strnlen_P\r
+ .text.avr-libc\r
+                0x000017cc       0x16 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+                0x000017cc                strnlen\r
+ .text.avr-libc\r
+                0x000017e2       0x58 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+                0x000017e2                fputc\r
+ .text.avr-libc\r
+                0x0000183a       0xbc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+                0x0000183a                __ultoa_invert\r
+                0x000018f6                . = ALIGN (0x2)\r
+ *(.fini9)\r
+ .fini9         0x000018f6        0x0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+                0x000018f6                _exit\r
+                0x000018f6                exit\r
+ *(.fini9)\r
+ *(.fini8)\r
+ *(.fini8)\r
+ *(.fini7)\r
+ *(.fini7)\r
+ *(.fini6)\r
+ *(.fini6)\r
+ *(.fini5)\r
+ *(.fini5)\r
+ *(.fini4)\r
+ *(.fini4)\r
+ *(.fini3)\r
+ *(.fini3)\r
+ *(.fini2)\r
+ *(.fini2)\r
+ *(.fini1)\r
+ *(.fini1)\r
+ *(.fini0)\r
+ .fini0         0x000018f6        0x4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+ *(.fini0)\r
+                0x000018fa                _etext = .\r
+\r
+.data           0x00800100       0x1c load address 0x000018fa\r
+                0x00800100                PROVIDE (__data_start, .)\r
+ *(.data)\r
+ .data          0x00800100        0x3 AudioInputHost.o\r
+ .data          0x00800103       0x18 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .data          0x0080011b        0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                0x0080011b                USB_ControlPipeSize\r
+ *(.data*)\r
+ *(.rodata)\r
+ *(.rodata*)\r
+ *(.gnu.linkonce.d*)\r
+                0x0080011c                . = ALIGN (0x2)\r
+                0x0080011c                _edata = .\r
+                0x0080011c                PROVIDE (__data_end, .)\r
+\r
+.bss            0x0080011c       0x24\r
+                0x0080011c                PROVIDE (__bss_start, .)\r
+ *(.bss)\r
+ .bss           0x0080011c        0x3 ConfigDescriptor.o\r
+                0x0080011c                StreamingInterfaceIndex\r
+                0x0080011d                StreamingInterfaceAltSetting\r
+                0x0080011e                StreamingEndpointAddress\r
+ .bss           0x0080011f        0x3 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ *(.bss*)\r
+ *(COMMON)\r
+ COMMON         0x00800122        0xa ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                0x00800122                USB_IsInitialized\r
+                0x00800123                USB_ControlRequest\r
+                0x0080012b                USB_HostState\r
+ COMMON         0x0080012c        0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                0x0080012c                USARTSerialStream\r
+ COMMON         0x0080013a        0x6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+                0x0080013a                __iob\r
+                0x00800140                PROVIDE (__bss_end, .)\r
+                0x000018fa                __data_load_start = LOADADDR (.data)\r
+                0x00001916                __data_load_end = (__data_load_start + SIZEOF (.data))\r
+\r
+.noinit         0x00800140        0x0\r
+                0x00800140                PROVIDE (__noinit_start, .)\r
+ *(.noinit*)\r
+                0x00800140                PROVIDE (__noinit_end, .)\r
+                0x00800140                _end = .\r
+                0x00800140                PROVIDE (__heap_start, .)\r
+\r
+.eeprom         0x00810000        0x0\r
+ *(.eeprom*)\r
+                0x00810000                __eeprom_end = .\r
+\r
+.fuse\r
+ *(.fuse)\r
+ *(.lfuse)\r
+ *(.hfuse)\r
+ *(.efuse)\r
+\r
+.lock\r
+ *(.lock*)\r
+\r
+.signature\r
+ *(.signature*)\r
+\r
+.stab           0x00000000      0xe28\r
+ *(.stab)\r
+ .stab          0x00000000      0x6cc c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+ .stab          0x000006cc       0x90 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+                                 0x9c (size before relaxing)\r
+ .stab          0x0000075c      0x114 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+                                0x120 (size before relaxing)\r
+ .stab          0x00000870       0x9c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+                                 0xa8 (size before relaxing)\r
+ .stab          0x0000090c       0x9c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+                                 0xa8 (size before relaxing)\r
+ .stab          0x000009a8      0x480 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+                                0x48c (size before relaxing)\r
+\r
+.stabstr        0x00000000      0x26b\r
+ *(.stabstr)\r
+ .stabstr       0x00000000      0x26b c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+\r
+.stab.excl\r
+ *(.stab.excl)\r
+\r
+.stab.exclstr\r
+ *(.stab.exclstr)\r
+\r
+.stab.index\r
+ *(.stab.index)\r
+\r
+.stab.indexstr\r
+ *(.stab.indexstr)\r
+\r
+.comment\r
+ *(.comment)\r
+\r
+.debug\r
+ *(.debug)\r
+\r
+.line\r
+ *(.line)\r
+\r
+.debug_srcinfo\r
+ *(.debug_srcinfo)\r
+\r
+.debug_sfnames\r
+ *(.debug_sfnames)\r
+\r
+.debug_aranges  0x00000000      0x3b0\r
+ *(.debug_aranges)\r
+ .debug_aranges\r
+                0x00000000       0x68 AudioInputHost.o\r
+ .debug_aranges\r
+                0x00000068       0x38 ConfigDescriptor.o\r
+ .debug_aranges\r
+                0x000000a0       0x58 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_aranges\r
+                0x000000f8       0x38 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_aranges\r
+                0x00000130       0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_aranges\r
+                0x00000160       0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_aranges\r
+                0x00000190       0x78 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_aranges\r
+                0x00000208       0x40 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_aranges\r
+                0x00000248       0x20 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_aranges\r
+                0x00000268       0x28 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_aranges\r
+                0x00000290       0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_aranges\r
+                0x000002b0       0x38 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_aranges\r
+                0x000002e8       0x48 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_aranges\r
+                0x00000330       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_aranges\r
+                0x00000350       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_aranges\r
+                0x00000370       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_aranges\r
+                0x00000390       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_pubnames\r
+                0x00000000      0x89a\r
+ *(.debug_pubnames)\r
+ .debug_pubnames\r
+                0x00000000      0x107 AudioInputHost.o\r
+ .debug_pubnames\r
+                0x00000107       0xff ConfigDescriptor.o\r
+ .debug_pubnames\r
+                0x00000206       0xf4 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_pubnames\r
+                0x000002fa       0x86 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_pubnames\r
+                0x00000380       0x46 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_pubnames\r
+                0x000003c6       0x62 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_pubnames\r
+                0x00000428      0x13b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_pubnames\r
+                0x00000563       0xc2 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_pubnames\r
+                0x00000625       0x25 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_pubnames\r
+                0x0000064a       0x32 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_pubnames\r
+                0x0000067c       0x61 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_pubnames\r
+                0x000006dd       0x7e ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_pubnames\r
+                0x0000075b       0xac ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_pubnames\r
+                0x00000807       0x1c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_pubnames\r
+                0x00000823       0x1f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_pubnames\r
+                0x00000842       0x1d c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_pubnames\r
+                0x0000085f       0x1f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_pubnames\r
+                0x0000087e       0x1c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_info     0x00000000     0x56c7\r
+ *(.debug_info)\r
+ .debug_info    0x00000000      0x81f AudioInputHost.o\r
+ .debug_info    0x0000081f      0x5dd ConfigDescriptor.o\r
+ .debug_info    0x00000dfc        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .debug_info    0x00000dfc        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .debug_info    0x00000dfc      0xc19 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_info    0x00001a15      0x5b1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_info    0x00001fc6      0x409 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_info    0x000023cf      0x495 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_info    0x00002864        0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .debug_info    0x00002864      0xac6 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_info    0x0000332a      0x642 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_info    0x0000396c        0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .debug_info    0x0000396c       0x85 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_info    0x000039f1      0x62a ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_info    0x0000401b      0x1e8 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_info    0x00004203      0x6f9 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_info    0x000048fc      0x413 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_info    0x00004d0f      0x14f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_info    0x00004e5e      0x1c6 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_info    0x00005024      0x1ec c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_info    0x00005210      0x350 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_info    0x00005560      0x167 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+ *(.gnu.linkonce.wi.*)\r
+\r
+.debug_abbrev   0x00000000     0x1b65\r
+ *(.debug_abbrev)\r
+ .debug_abbrev  0x00000000      0x334 AudioInputHost.o\r
+ .debug_abbrev  0x00000334      0x185 ConfigDescriptor.o\r
+ .debug_abbrev  0x000004b9        0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .debug_abbrev  0x000004ba        0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .debug_abbrev  0x000004bb      0x2f6 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_abbrev  0x000007b1      0x1d9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_abbrev  0x0000098a      0x14d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_abbrev  0x00000ad7      0x12a ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_abbrev  0x00000c01        0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .debug_abbrev  0x00000c02      0x164 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_abbrev  0x00000d66      0x1ca ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_abbrev  0x00000f30        0x1 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .debug_abbrev  0x00000f31       0x41 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_abbrev  0x00000f72      0x1ea ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_abbrev  0x0000115c      0x11a ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_abbrev  0x00001276      0x1ec ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_abbrev  0x00001462      0x1d1 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_abbrev  0x00001633       0xc5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_abbrev  0x000016f8      0x11c c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_abbrev  0x00001814      0x119 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_abbrev  0x0000192d      0x15f c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_abbrev  0x00001a8c       0xd9 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_line     0x00000000     0x53bf\r
+ *(.debug_line)\r
+ .debug_line    0x00000000      0x725 AudioInputHost.o\r
+ .debug_line    0x00000725      0x3df ConfigDescriptor.o\r
+ .debug_line    0x00000b04       0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o\r
+ .debug_line    0x00000b28       0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o\r
+ .debug_line    0x00000b4c      0xa69 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_line    0x000015b5      0x5f9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_line    0x00001bae      0x3f1 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_line    0x00001f9f      0x464 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_line    0x00002403       0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o\r
+ .debug_line    0x00002427      0xcf7 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_line    0x0000311e      0x3e3 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_line    0x00003501       0x24 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o\r
+ .debug_line    0x00003525       0x86 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_line    0x000035ab      0x5f5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_line    0x00003ba0      0x1e4 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_line    0x00003d84      0x7b0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_line    0x00004534      0x326 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_line    0x0000485a       0xe5 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_line    0x0000493f      0x1a4 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_line    0x00004ae3      0x142 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_line    0x00004c25      0x659 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_line    0x0000527e      0x141 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_frame    0x00000000      0x540\r
+ *(.debug_frame)\r
+ .debug_frame   0x00000000       0xb0 AudioInputHost.o\r
+ .debug_frame   0x000000b0       0x50 ConfigDescriptor.o\r
+ .debug_frame   0x00000100       0x90 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_frame   0x00000190       0x50 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_frame   0x000001e0       0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_frame   0x00000220       0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_frame   0x00000260       0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_frame   0x00000330       0x60 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_frame   0x00000390       0x20 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_frame   0x000003b0       0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_frame   0x000003e0       0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_frame   0x00000400       0x50 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_frame   0x00000450       0x70 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_frame   0x000004c0       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_frame   0x000004e0       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_frame   0x00000500       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_frame   0x00000520       0x20 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_str      0x00000000     0x26bf\r
+ *(.debug_str)\r
+ .debug_str     0x00000000      0x830 AudioInputHost.o\r
+                                0x8aa (size before relaxing)\r
+ .debug_str     0x00000830      0x53e ConfigDescriptor.o\r
+                                0x7d0 (size before relaxing)\r
+ .debug_str     0x00000d6e      0x6cc ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                0xbc8 (size before relaxing)\r
+ .debug_str     0x0000143a      0x269 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                                0x5b7 (size before relaxing)\r
+ .debug_str     0x000016a3      0x16d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                                0x516 (size before relaxing)\r
+ .debug_str     0x00001810       0xaf ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                0x4f5 (size before relaxing)\r
+ .debug_str     0x000018bf      0x260 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+                                0x3a4 (size before relaxing)\r
+ .debug_str     0x00001b1f      0x234 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+                                0x81e (size before relaxing)\r
+ .debug_str     0x00001d53       0x3a ../../../../LUFA/Drivers/USB/Core/Events.o\r
+                                0x11f (size before relaxing)\r
+ .debug_str     0x00001d8d      0x15b ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+                                0x519 (size before relaxing)\r
+ .debug_str     0x00001ee8       0x45 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                                0x1ee (size before relaxing)\r
+ .debug_str     0x00001f2d      0x487 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+                                0x60d (size before relaxing)\r
+ .debug_str     0x000023b4       0xfd ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                                0x26d (size before relaxing)\r
+ .debug_str     0x000024b1       0x4b c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+                                 0xef (size before relaxing)\r
+ .debug_str     0x000024fc       0x7a c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+                                0x126 (size before relaxing)\r
+ .debug_str     0x00002576       0x55 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+                                0x120 (size before relaxing)\r
+ .debug_str     0x000025cb       0xa1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+                                0x174 (size before relaxing)\r
+ .debug_str     0x0000266c       0x53 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+                                 0xf8 (size before relaxing)\r
+\r
+.debug_loc      0x00000000     0x3422\r
+ *(.debug_loc)\r
+ .debug_loc     0x00000000       0xff AudioInputHost.o\r
+ .debug_loc     0x000000ff      0x280 ConfigDescriptor.o\r
+ .debug_loc     0x0000037f      0x3de ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_loc     0x0000075d      0x400 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_loc     0x00000b5d       0x13 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_loc     0x00000b70      0x118 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_loc     0x00000c88      0xfe0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_loc     0x00001c68      0x365 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_loc     0x00001fcd      0x2c5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_loc     0x00002292       0x1f ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_loc     0x000022b1      0x832 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_loc     0x00002ae3      0x15e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_loc     0x00002c41       0xe0 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_loc     0x00002d21      0x6b1 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_loc     0x000033d2       0x50 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_macinfo\r
+ *(.debug_macinfo)\r
+OUTPUT(AudioInputHost.elf elf32-avr)\r
+LOAD linker stubs\r
+\r
+.debug_pubtypes\r
+                0x00000000      0xa86\r
+ .debug_pubtypes\r
+                0x00000000      0x117 AudioInputHost.o\r
+ .debug_pubtypes\r
+                0x00000117      0x179 ConfigDescriptor.o\r
+ .debug_pubtypes\r
+                0x00000290      0x146 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_pubtypes\r
+                0x000003d6       0x66 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_pubtypes\r
+                0x0000043c       0x59 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_pubtypes\r
+                0x00000495       0x88 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_pubtypes\r
+                0x0000051d       0x4b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_pubtypes\r
+                0x00000568      0x17e ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_pubtypes\r
+                0x000006e6       0x12 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_pubtypes\r
+                0x000006f8       0xa0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_pubtypes\r
+                0x00000798       0x44 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_pubtypes\r
+                0x000007dc      0x145 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_pubtypes\r
+                0x00000921       0x42 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_pubtypes\r
+                0x00000963       0x29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+ .debug_pubtypes\r
+                0x0000098c       0x48 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_pubtypes\r
+                0x000009d4       0x36 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_pubtypes\r
+                0x00000a0a       0x53 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_pubtypes\r
+                0x00000a5d       0x29 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+.debug_ranges   0x00000000      0x490\r
+ .debug_ranges  0x00000000       0x58 AudioInputHost.o\r
+ .debug_ranges  0x00000058       0x58 ConfigDescriptor.o\r
+ .debug_ranges  0x000000b0       0x60 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+ .debug_ranges  0x00000110       0xb0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+ .debug_ranges  0x000001c0       0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+ .debug_ranges  0x000001e0       0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+ .debug_ranges  0x00000200       0x68 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ .debug_ranges  0x00000268       0x30 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+ .debug_ranges  0x00000298       0x10 ../../../../LUFA/Drivers/USB/Core/Events.o\r
+ .debug_ranges  0x000002a8       0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+ .debug_ranges  0x000002d8       0x10 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+ .debug_ranges  0x000002e8      0x100 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+ .debug_ranges  0x000003e8       0x50 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+ .debug_ranges  0x00000438       0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+ .debug_ranges  0x00000448       0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+ .debug_ranges  0x00000458       0x28 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+ .debug_ranges  0x00000480       0x10 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+\r
+Cross Reference Table\r
+\r
+Symbol                                            File\r
+Audio_Task                                        AudioInputHost.o\r
+CALLBACK_HIDParser_FilterHIDReportItem            ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+DComp_NextAudioControlInterface                   ConfigDescriptor.o\r
+DComp_NextAudioInterfaceDataEndpoint              ConfigDescriptor.o\r
+DComp_NextAudioStreamInterface                    ConfigDescriptor.o\r
+EVENT_USB_Host_DeviceAttached                     AudioInputHost.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+EVENT_USB_Host_DeviceEnumerationComplete          AudioInputHost.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+EVENT_USB_Host_DeviceEnumerationFailed            AudioInputHost.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+EVENT_USB_Host_DeviceUnattached                   AudioInputHost.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+EVENT_USB_Host_HostError                          AudioInputHost.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+EVENT_USB_Host_StartOfFrame                       ../../../../LUFA/Drivers/USB/Core/Events.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+Pipe_ClearPipes                                   ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+Pipe_ConfigurePipe                                ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  ConfigDescriptor.o\r
+Pipe_Discard_Stream                               ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_IsEndpointBound                              ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+Pipe_Null_Stream                                  ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_EStream_BE                              ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_EStream_LE                              ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_Stream_BE                               ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Read_Stream_LE                               ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_WaitUntilReady                               ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_EStream_BE                             ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_EStream_LE                             ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_PStream_BE                             ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_PStream_LE                             ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_Stream_BE                              ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+Pipe_Write_Stream_LE                              ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+ProcessConfigurationDescriptor                    ConfigDescriptor.o\r
+                                                  AudioInputHost.o\r
+Serial_SendData                                   ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_SendString                                 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_SendString_P                               ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_getchar                                    ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                                                  AudioInputHost.o\r
+Serial_getchar_Blocking                           ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+Serial_putchar                                    ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                                                  AudioInputHost.o\r
+SetupHardware                                     AudioInputHost.o\r
+StreamingEndpointAddress                          ConfigDescriptor.o\r
+                                                  AudioInputHost.o\r
+StreamingInterfaceAltSetting                      ConfigDescriptor.o\r
+                                                  AudioInputHost.o\r
+StreamingInterfaceIndex                           ConfigDescriptor.o\r
+                                                  AudioInputHost.o\r
+USARTSerialStream                                 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_ControlPipeSize                               ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_ControlRequest                                ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_Disable                                       ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_Event_Stub                                    ../../../../LUFA/Drivers/USB/Core/Events.o\r
+USB_GetHIDReportItemInfo                          ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_GetHIDReportSize                              ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_GetNextDescriptorComp                         ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+                                                  ConfigDescriptor.o\r
+USB_GetNextDescriptorOfType                       ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+USB_GetNextDescriptorOfTypeAfter                  ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+USB_GetNextDescriptorOfTypeBefore                 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+USB_HostState                                     ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_Host_ClearPipeStall                           ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_Host_GetDeviceConfigDescriptor                ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+                                                  ConfigDescriptor.o\r
+USB_Host_GetDeviceDescriptor                      ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_Host_GetDeviceStringDescriptor                ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_Host_ProcessNextHostState                     ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+USB_Host_SendControlRequest                       ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_Host_SetDeviceConfiguration                   ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_Host_SetInterfaceAltSetting                   ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_Host_WaitMS                                   ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o\r
+USB_INT_ClearAllInterrupts                        ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+USB_INT_DisableAllInterrupts                      ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+USB_Init                                          ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                                                  AudioInputHost.o\r
+USB_IsInitialized                                 ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+USB_ProcessHIDReport                              ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_ResetInterface                                ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+USB_SetHIDReportItemInfo                          ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o\r
+USB_USBTask                                       ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+                                                  AudioInputHost.o\r
+__bad_interrupt                                   c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__bss_end                                         c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+__bss_start                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+__data_end                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+__data_load_start                                 c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+__data_start                                      c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+__do_clear_bss                                    c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_clear_bss.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+                                                  ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/USBTask.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  ConfigDescriptor.o\r
+__do_copy_data                                    c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_copy_data.o)\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o\r
+                                                  AudioInputHost.o\r
+__eerd_byte_usb1287                               c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eerd_byte_at90usb1287.o)\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+__eeupd_byte_usb1287                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+                                                  ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o\r
+__eeupd_r18_usb1287                               c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(eeupd_byte_at90usb1287.o)\r
+__heap_end                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__init                                            c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__iob                                             c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(iob.o)\r
+                                                  AudioInputHost.o\r
+__stack                                           c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__ultoa_invert                                    c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(ultoa_invert.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+__vector_1                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_10                                       ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_11                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_12                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_13                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_14                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_15                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_16                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_17                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_18                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_19                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_2                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_20                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_21                                       AudioInputHost.o\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_22                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_23                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_24                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_25                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_26                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_27                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_28                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_29                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_3                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_30                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_31                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_32                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_33                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_34                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_35                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_36                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_37                                       c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_4                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_5                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_6                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_7                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_8                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_9                                        c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vector_default                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+__vectors                                         c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+_exit                                             c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+exit                                              c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a(_exit.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+fputc                                             c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(fputc.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+main                                              AudioInputHost.o\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51/crtusb1286.o\r
+printf_P                                          c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
+                                                  AudioInputHost.o\r
+puts_P                                            c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(puts_p.o)\r
+                                                  AudioInputHost.o\r
+strnlen                                           c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+strnlen_P                                         c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(strnlen_P.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+vfprintf                                          c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(vfprintf_std.o)\r
+                                                  c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr51\libc.a(printf_p.o)\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.o b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.o
new file mode 100644 (file)
index 0000000..f8bafd3
Binary files /dev/null and b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.o differ
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym
new file mode 100644 (file)
index 0000000..498ebbc
--- /dev/null
@@ -0,0 +1,267 @@
+         U CALLBACK_HIDParser_FilterHIDReportItem\r
+00000000 W __heap_end\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 a __tmp_reg__\r
+00000000 W __vector_default\r
+00000000 T __vectors\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000001 a __zero_reg__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+00000034 a __CCP__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003d a __SP_L__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003e a __SP_H__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+0000003f a __SREG__\r
+00000098 t __c.3939\r
+000000b1 t __c.3935\r
+00000108 t __c.3933\r
+0000014b t __c.3930\r
+00000165 t __c.3928\r
+0000017c t __c.3926\r
+000001a6 t __c.3924\r
+000001bd t __c.3917\r
+00000213 t __c.3910\r
+00000242 t __c.3902\r
+00000261 t __c.3897\r
+0000027e t __c.3888\r
+000002a4 T __ctors_end\r
+000002a4 T __ctors_start\r
+000002a4 T __dtors_end\r
+000002a4 T __dtors_start\r
+000002a4 W __init\r
+000002a4 T __trampolines_end\r
+000002a4 T __trampolines_start\r
+000002b0 T __do_copy_data\r
+000002ca T __do_clear_bss\r
+000002d2 t .do_clear_bss_loop\r
+000002d4 t .do_clear_bss_start\r
+000002e0 T __bad_interrupt\r
+000002e0 W __vector_1\r
+000002e0 W __vector_11\r
+000002e0 W __vector_12\r
+000002e0 W __vector_13\r
+000002e0 W __vector_14\r
+000002e0 W __vector_15\r
+000002e0 W __vector_16\r
+000002e0 W __vector_17\r
+000002e0 W __vector_18\r
+000002e0 W __vector_19\r
+000002e0 W __vector_2\r
+000002e0 W __vector_20\r
+000002e0 W __vector_22\r
+000002e0 W __vector_23\r
+000002e0 W __vector_24\r
+000002e0 W __vector_25\r
+000002e0 W __vector_26\r
+000002e0 W __vector_27\r
+000002e0 W __vector_28\r
+000002e0 W __vector_29\r
+000002e0 W __vector_3\r
+000002e0 W __vector_30\r
+000002e0 W __vector_31\r
+000002e0 W __vector_32\r
+000002e0 W __vector_33\r
+000002e0 W __vector_34\r
+000002e0 W __vector_35\r
+000002e0 W __vector_36\r
+000002e0 W __vector_37\r
+000002e0 W __vector_4\r
+000002e0 W __vector_5\r
+000002e0 W __vector_6\r
+000002e0 W __vector_7\r
+000002e0 W __vector_8\r
+000002e0 W __vector_9\r
+000002e2 t LEDs_SetAllLEDs\r
+000002ec T SetupHardware\r
+0000037e T EVENT_USB_Host_DeviceAttached\r
+00000388 T EVENT_USB_Host_DeviceUnattached\r
+00000392 T EVENT_USB_Host_DeviceEnumerationComplete\r
+00000396 T EVENT_USB_Host_HostError\r
+000003d4 T EVENT_USB_Host_DeviceEnumerationFailed\r
+00000424 T Audio_Task\r
+00000558 T main\r
+0000056c T __vector_21\r
+0000063e T DComp_NextAudioControlInterface\r
+00000660 T DComp_NextAudioStreamInterface\r
+00000682 T DComp_NextAudioInterfaceDataEndpoint\r
+000006a4 T ProcessConfigurationDescriptor\r
+000007d6 t USB_Host_ResetDevice\r
+0000087e T USB_Host_WaitMS\r
+00000928 T USB_Host_ProcessNextHostState\r
+00000b8c T USB_Host_SetDeviceConfiguration\r
+00000bb8 T USB_Host_SetInterfaceAltSetting\r
+00000be6 T Pipe_ConfigurePipe\r
+00000cb4 T Pipe_ClearPipes\r
+00000cdc T USB_Disable\r
+00000d0c T USB_ResetInterface\r
+00000da8 T USB_Init\r
+00000dba T USB_INT_DisableAllInterrupts\r
+00000dca T USB_INT_ClearAllInterrupts\r
+00000dd4 T __vector_10\r
+00000efa T USB_Host_GetDeviceConfigDescriptor\r
+00000fa8 T USB_GetNextDescriptorComp\r
+0000102e W EVENT_USB_Host_StartOfFrame\r
+0000102e T USB_Event_Stub\r
+00001030 t USB_Host_WaitForIOS\r
+00001082 T USB_Host_SendControlRequest\r
+000012ae T USB_USBTask\r
+000012ca T Serial_putchar\r
+000012dc T Serial_getchar\r
+00001302 T printf_P\r
+00001340 T puts_P\r
+000013b0 T vfprintf\r
+000017b6 T strnlen_P\r
+000017cc T strnlen\r
+000017e2 T fputc\r
+0000183a T __ultoa_invert\r
+000018f6 T _exit\r
+000018f6 W exit\r
+000018f8 t __stop_program\r
+000018fa A __data_load_start\r
+000018fa T _etext\r
+00001916 A __data_load_end\r
+000020ff W __stack\r
+00800100 d C.5.5024\r
+00800100 D __data_start\r
+00800103 d C.0.3420\r
+0080010b d C.10.3637\r
+00800113 d C.7.3627\r
+0080011b D USB_ControlPipeSize\r
+0080011c B StreamingInterfaceIndex\r
+0080011c B __bss_start\r
+0080011c D __data_end\r
+0080011c D _edata\r
+0080011d B StreamingInterfaceAltSetting\r
+0080011e B StreamingEndpointAddress\r
+0080011f b PostWaitState.2492\r
+00800120 b WaitMSRemaining.2491\r
+00800122 B USB_IsInitialized\r
+00800123 B USB_ControlRequest\r
+0080012b B USB_HostState\r
+0080012c B USARTSerialStream\r
+0080013a B __iob\r
+00800140 B __bss_end\r
+00800140 N _end\r
+00810000 N __eeprom_end\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c
new file mode 100644 (file)
index 0000000..d0ca91a
--- /dev/null
@@ -0,0 +1,183 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ *  USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations\r
+ *  needed to communication with an attached USB device. Descriptors are special  computer-readable structures\r
+ *  which the host requests upon device enumeration, to determine the device's capabilities and functions.\r
+ */\r
+\r
+#include "ConfigDescriptor.h"\r
+\r
+uint8_t StreamingInterfaceIndex      = 0;\r
+uint8_t StreamingInterfaceAltSetting = 0;\r
+uint8_t StreamingEndpointAddress     = 0;\r
+\r
+uint8_t ProcessConfigurationDescriptor(void)\r
+{\r
+       uint8_t  ConfigDescriptorData[512];\r
+       void*    CurrConfigLocation = ConfigDescriptorData;\r
+       uint16_t CurrConfigBytesRem;\r
+\r
+       USB_Descriptor_Interface_t* AudioControlInterface   = NULL;\r
+       USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;\r
+       USB_Descriptor_Endpoint_t*  DataINEndpoint          = NULL;\r
+\r
+       /* Retrieve the entire configuration descriptor into the allocated buffer */\r
+       switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))\r
+       {\r
+               case HOST_GETCONFIG_Successful:\r
+                       break;\r
+               case HOST_GETCONFIG_InvalidData:\r
+                       return InvalidConfigDataReturned;\r
+               case HOST_GETCONFIG_BuffOverflow:\r
+                       return DescriptorTooLarge;\r
+               default:\r
+                       return ControlError;\r
+       }\r
+\r
+       while (!(DataINEndpoint))\r
+       {\r
+               if (!(AudioControlInterface) ||\r
+                   USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+                                             DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
+               {\r
+                       if (!(AudioControlInterface))\r
+                       {\r
+                               if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+                                                                                         DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+                               {\r
+                                       /* Descriptor not found, error out */\r
+                                       return NoCompatibleInterfaceFound;\r
+                               }\r
+\r
+                               /* Save the interface in case we need to refer back to it later */\r
+                               AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);                       \r
+                       }\r
+               \r
+                       if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+                                                                                 DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+                       {\r
+                               if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,\r
+                                                                                         DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
+                               {\r
+                                       /* Descriptor not found, error out */\r
+                                       return NoCompatibleInterfaceFound;\r
+                               }\r
+\r
+                               /* Save the interface in case we need to refer back to it later */\r
+                               AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);\r
+                       }\r
+\r
+                       /* Save the interface in case we need to refer back to it later */\r
+                       AudioStreamingInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);\r
+\r
+                       /* Skip the remainder of the loop as we have not found an endpoint yet */\r
+                       continue;\r
+               }\r
+\r
+               /* Retrieve the endpoint address from the endpoint descriptor */\r
+               USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);\r
+\r
+               /* If the endpoint is a IN type endpoint */\r
+               if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)\r
+                 DataINEndpoint = EndpointData;\r
+       }\r
+\r
+       StreamingInterfaceIndex      = AudioStreamingInterface->InterfaceNumber;\r
+       StreamingInterfaceAltSetting = AudioStreamingInterface->AlternateSetting;\r
+       StreamingEndpointAddress     = DataINEndpoint->EndpointAddress;\r
+\r
+       /* Configure the HID data IN pipe */\r
+       Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,\r
+                          DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);\r
+\r
+       /* Valid data found, return success */\r
+       return SuccessfulConfigRead;\r
+}\r
+\r
+uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor)\r
+{\r
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+       if (Header->Type == DTYPE_Interface)\r
+       {\r
+               USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);\r
+\r
+               if ((Interface->Class    == AUDIO_CSCP_AudioClass) &&\r
+                   (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&\r
+                   (Interface->Protocol == AUDIO_CSCP_ControlProtocol))\r
+               {\r
+                       return DESCRIPTOR_SEARCH_Found;\r
+               }\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+\r
+uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor)\r
+{\r
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+       if (Header->Type == DTYPE_Interface)\r
+       {\r
+               USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);\r
+\r
+               if ((Interface->Class    == AUDIO_CSCP_AudioClass) &&\r
+                   (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&\r
+                   (Interface->Protocol == AUDIO_CSCP_StreamingProtocol))\r
+               {\r
+                       return DESCRIPTOR_SEARCH_Found;\r
+               }\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+\r
+uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)\r
+{\r
+       USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);\r
+\r
+       if (Header->Type == DTYPE_Endpoint)\r
+       {\r
+               USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);\r
+\r
+               if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)\r
+                 return DESCRIPTOR_SEARCH_Found;\r
+       }\r
+       else if (Header->Type == DTYPE_Interface)\r
+       {\r
+               return DESCRIPTOR_SEARCH_Fail;\r
+       }\r
+\r
+       return DESCRIPTOR_SEARCH_NotFound;\r
+}\r
+\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.h b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.h
new file mode 100644 (file)
index 0000000..4a1cf90
--- /dev/null
@@ -0,0 +1,72 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *\r
+ *  Header file for ConfigDescriptor.c.\r
+ */\r
+\r
+#ifndef _CONFIGDESCRIPTOR_H_\r
+#define _CONFIGDESCRIPTOR_H_\r
+\r
+       /* Includes: */\r
+               #include <LUFA/Drivers/USB/USB.h>\r
+\r
+               #include "AudioInputHost.h"\r
+\r
+       /* Macros: */\r
+               /** Pipe number for the Audio data IN pipe. */\r
+               #define AUDIO_DATA_IN_PIPE          1\r
+\r
+       /* Enums: */\r
+               /** Enum for the possible return codes of the \ref ProcessConfigurationDescriptor() function. */\r
+               enum KeyboardHost_GetConfigDescriptorDataCodes_t\r
+               {\r
+                       SuccessfulConfigRead            = 0, /**< Configuration Descriptor was processed successfully */\r
+                       ControlError                    = 1, /**< A control request to the device failed to complete successfully */\r
+                       DescriptorTooLarge              = 2, /**< The device's Configuration Descriptor is too large to process */\r
+                       InvalidConfigDataReturned       = 3, /**< The device returned an invalid Configuration Descriptor */\r
+                       NoCompatibleInterfaceFound      = 4, /**< A compatible interface with the required endpoints was not found */\r
+               };\r
+\r
+       /* External Variables: */\r
+               extern uint8_t StreamingInterfaceIndex;\r
+               extern uint8_t StreamingInterfaceAltSetting;\r
+               extern uint8_t StreamingEndpointAddress;\r
+\r
+       /* Function Prototypes: */\r
+               uint8_t ProcessConfigurationDescriptor(void);\r
+\r
+               uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor);\r
+               uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor);\r
+               uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor);\r
+\r
+#endif\r
+\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst
new file mode 100644 (file)
index 0000000..9a63786
--- /dev/null
@@ -0,0 +1,400 @@
+   1                           .file   "ConfigDescriptor.c"\r
+   2                   __SREG__ = 0x3f\r
+   3                   __SP_H__ = 0x3e\r
+   4                   __SP_L__ = 0x3d\r
+   5                   __CCP__ = 0x34\r
+   6                   __tmp_reg__ = 0\r
+   7                   __zero_reg__ = 1\r
+  15                   .Ltext0:\r
+  16                           .section        .text.DComp_NextAudioControlInterface,"ax",@progbits\r
+  17                   .global DComp_NextAudioControlInterface\r
+  19                   DComp_NextAudioControlInterface:\r
+  20                   .LFB132:\r
+  21                   .LSM0:\r
+  22                   .LVL0:\r
+  23                   /* prologue: function */\r
+  24                   /* frame size = 0 */\r
+  25                   /* stack size = 0 */\r
+  26                   .L__stack_usage = 0\r
+  27 0000 FC01                 movw r30,r24\r
+  28                   .LVL1:\r
+  29                   .LSM1:\r
+  30 0002 8181                 ldd r24,Z+1\r
+  31                   .LVL2:\r
+  32 0004 8430                 cpi r24,lo8(4)\r
+  33 0006 01F4                 brne .L5\r
+  34                   .LVL3:\r
+  35                   .LBB2:\r
+  36                   .LSM2:\r
+  37 0008 8581                 ldd r24,Z+5\r
+  38 000a 8130                 cpi r24,lo8(1)\r
+  39 000c 01F4                 brne .L5\r
+  40                   .LSM3:\r
+  41 000e 8681                 ldd r24,Z+6\r
+  42 0010 8130                 cpi r24,lo8(1)\r
+  43 0012 01F4                 brne .L5\r
+  44                   .LSM4:\r
+  45 0014 8781                 ldd r24,Z+7\r
+  46 0016 8823                 tst r24\r
+  47 0018 01F0                 breq .L6\r
+  48                   .LVL4:\r
+  49                   .L5:\r
+  50                   .LSM5:\r
+  51 001a 82E0                 ldi r24,lo8(2)\r
+  52 001c 0895                 ret\r
+  53                   .LVL5:\r
+  54                   .L6:\r
+  55                   .LSM6:\r
+  56 001e 80E0                 ldi r24,lo8(0)\r
+  57                   .LBE2:\r
+  58                   .LSM7:\r
+  59 0020 0895                 ret\r
+  60                   .LFE132:\r
+  62                           .section        .text.DComp_NextAudioStreamInterface,"ax",@progbits\r
+  63                   .global DComp_NextAudioStreamInterface\r
+  65                   DComp_NextAudioStreamInterface:\r
+  66                   .LFB133:\r
+  67                   .LSM8:\r
+  68                   .LVL6:\r
+  69                   /* prologue: function */\r
+  70                   /* frame size = 0 */\r
+  71                   /* stack size = 0 */\r
+  72                   .L__stack_usage = 0\r
+  73 0000 FC01                 movw r30,r24\r
+  74                   .LVL7:\r
+  75                   .LSM9:\r
+  76 0002 8181                 ldd r24,Z+1\r
+  77                   .LVL8:\r
+  78 0004 8430                 cpi r24,lo8(4)\r
+  79 0006 01F4                 brne .L11\r
+  80                   .LVL9:\r
+  81                   .LBB3:\r
+  82                   .LSM10:\r
+  83 0008 8581                 ldd r24,Z+5\r
+  84 000a 8130                 cpi r24,lo8(1)\r
+  85 000c 01F4                 brne .L11\r
+  86                   .LSM11:\r
+  87 000e 8681                 ldd r24,Z+6\r
+  88 0010 8230                 cpi r24,lo8(2)\r
+  89 0012 01F4                 brne .L11\r
+  90                   .LSM12:\r
+  91 0014 8781                 ldd r24,Z+7\r
+  92 0016 8823                 tst r24\r
+  93 0018 01F0                 breq .L12\r
+  94                   .LVL10:\r
+  95                   .L11:\r
+  96                   .LSM13:\r
+  97 001a 82E0                 ldi r24,lo8(2)\r
+  98 001c 0895                 ret\r
+  99                   .LVL11:\r
+ 100                   .L12:\r
+ 101                   .LSM14:\r
+ 102 001e 80E0                 ldi r24,lo8(0)\r
+ 103                   .LBE3:\r
+ 104                   .LSM15:\r
+ 105 0020 0895                 ret\r
+ 106                   .LFE133:\r
+ 108                           .section        .text.DComp_NextAudioInterfaceDataEndpoint,"ax",@progbits\r
+ 109                   .global DComp_NextAudioInterfaceDataEndpoint\r
+ 111                   DComp_NextAudioInterfaceDataEndpoint:\r
+ 112                   .LFB134:\r
+ 113                   .LSM16:\r
+ 114                   .LVL12:\r
+ 115                   /* prologue: function */\r
+ 116                   /* frame size = 0 */\r
+ 117                   /* stack size = 0 */\r
+ 118                   .L__stack_usage = 0\r
+ 119 0000 FC01                 movw r30,r24\r
+ 120                   .LVL13:\r
+ 121                   .LSM17:\r
+ 122 0002 8181                 ldd r24,Z+1\r
+ 123                   .LVL14:\r
+ 124 0004 8530                 cpi r24,lo8(5)\r
+ 125 0006 01F4                 brne .L14\r
+ 126                   .LVL15:\r
+ 127                   .LBB4:\r
+ 128                   .LSM18:\r
+ 129 0008 8381                 ldd r24,Z+3\r
+ 130 000a 8370                 andi r24,lo8(3)\r
+ 131 000c 8130                 cpi r24,lo8(1)\r
+ 132 000e 01F4                 brne .L18\r
+ 133 0010 00C0                 rjmp .L16\r
+ 134                   .LVL16:\r
+ 135                   .L14:\r
+ 136                   .LBE4:\r
+ 137                   .LSM19:\r
+ 138 0012 8430                 cpi r24,lo8(4)\r
+ 139 0014 01F0                 breq .L17\r
+ 140                   .L18:\r
+ 141                   .LSM20:\r
+ 142 0016 82E0                 ldi r24,lo8(2)\r
+ 143 0018 0895                 ret\r
+ 144                   .LVL17:\r
+ 145                   .L16:\r
+ 146                   .LBB5:\r
+ 147                   .LSM21:\r
+ 148 001a 80E0                 ldi r24,lo8(0)\r
+ 149 001c 0895                 ret\r
+ 150                   .LVL18:\r
+ 151                   .L17:\r
+ 152                   .LBE5:\r
+ 153                   .LSM22:\r
+ 154 001e 81E0                 ldi r24,lo8(1)\r
+ 155                   .LSM23:\r
+ 156 0020 0895                 ret\r
+ 157                   .LFE134:\r
+ 159                           .section        .text.ProcessConfigurationDescriptor,"ax",@progbits\r
+ 160                   .global ProcessConfigurationDescriptor\r
+ 162                   ProcessConfigurationDescriptor:\r
+ 163                   .LFB131:\r
+ 164                   .LSM24:\r
+ 165 0000 AF92                 push r10\r
+ 166 0002 BF92                 push r11\r
+ 167 0004 CF92                 push r12\r
+ 168 0006 DF92                 push r13\r
+ 169 0008 EF92                 push r14\r
+ 170 000a FF92                 push r15\r
+ 171 000c 0F93                 push r16\r
+ 172 000e 1F93                 push r17\r
+ 173 0010 DF93                 push r29\r
+ 174 0012 CF93                 push r28\r
+ 175 0014 CDB7                 in r28,__SP_L__\r
+ 176 0016 DEB7                 in r29,__SP_H__\r
+ 177 0018 C450                 subi r28,lo8(-(-516))\r
+ 178 001a D240                 sbci r29,hi8(-(-516))\r
+ 179 001c 0FB6                 in __tmp_reg__,__SREG__\r
+ 180 001e F894                 cli\r
+ 181 0020 DEBF                 out __SP_H__,r29\r
+ 182 0022 0FBE                 out __SREG__,__tmp_reg__\r
+ 183 0024 CDBF                 out __SP_L__,r28\r
+ 184                   /* prologue: function */\r
+ 185                   /* frame size = 516 */\r
+ 186                   /* stack size = 526 */\r
+ 187                   .L__stack_usage = 526\r
+ 188                   .LSM25:\r
+ 189 0026 AE01                 movw r20,r28\r
+ 190 0028 4B5F                 subi r20,lo8(-(5))\r
+ 191 002a 5F4F                 sbci r21,hi8(-(5))\r
+ 192 002c 5A83                 std Y+2,r21\r
+ 193 002e 4983                 std Y+1,r20\r
+ 194                   .LVL19:\r
+ 195                   .LSM26:\r
+ 196 0030 23E0                 ldi r18,lo8(3)\r
+ 197 0032 E22E                 mov r14,r18\r
+ 198 0034 F12C                 mov r15,__zero_reg__\r
+ 199 0036 EC0E                 add r14,r28\r
+ 200 0038 FD1E                 adc r15,r29\r
+ 201 003a 81E0                 ldi r24,lo8(1)\r
+ 202 003c B701                 movw r22,r14\r
+ 203 003e 20E0                 ldi r18,lo8(512)\r
+ 204 0040 32E0                 ldi r19,hi8(512)\r
+ 205 0042 0E94 0000            call USB_Host_GetDeviceConfigDescriptor\r
+ 206 0046 8530                 cpi r24,lo8(5)\r
+ 207 0048 01F4                 brne .+2\r
+ 208 004a 00C0                 rjmp .L31\r
+ 209 004c 8630                 cpi r24,lo8(6)\r
+ 210 004e 01F0                 breq .L23\r
+ 211 0050 8823                 tst r24\r
+ 212 0052 01F4                 brne .L34\r
+ 213 0054 00E0                 ldi r16,lo8(0)\r
+ 214 0056 10E0                 ldi r17,hi8(0)\r
+ 215 0058 CC24                 clr r12\r
+ 216 005a DD24                 clr r13\r
+ 217 005c 5701                 movw r10,r14\r
+ 218 005e 7E01                 movw r14,r28\r
+ 219 0060 0894                 sec\r
+ 220 0062 E11C                 adc r14,__zero_reg__\r
+ 221 0064 F11C                 adc r15,__zero_reg__\r
+ 222 0066 00C0                 rjmp .L24\r
+ 223                   .L23:\r
+ 224                   .LSM27:\r
+ 225 0068 83E0                 ldi r24,lo8(3)\r
+ 226 006a 00C0                 rjmp .L22\r
+ 227                   .L34:\r
+ 228                   .LSM28:\r
+ 229 006c 81E0                 ldi r24,lo8(1)\r
+ 230 006e 00C0                 rjmp .L22\r
+ 231                   .LVL20:\r
+ 232                   .L30:\r
+ 233                   .LSM29:\r
+ 234 0070 9C01                 movw r18,r24\r
+ 235 0072 032F                 mov r16,r19\r
+ 236 0074 182F                 mov r17,r24\r
+ 237                   .LVL21:\r
+ 238                   .L24:\r
+ 239                   .LBB6:\r
+ 240                   .LSM30:\r
+ 241 0076 C114                 cp r12,__zero_reg__\r
+ 242 0078 D104                 cpc r13,__zero_reg__\r
+ 243 007a 01F0                 breq .L25\r
+ 244                   .LSM31:\r
+ 245 007c C501                 movw r24,r10\r
+ 246 007e B701                 movw r22,r14\r
+ 247 0080 40E0                 ldi r20,lo8(gs(DComp_NextAudioInterfaceDataEndpoint))\r
+ 248 0082 50E0                 ldi r21,hi8(gs(DComp_NextAudioInterfaceDataEndpoint))\r
+ 249 0084 0E94 0000            call USB_GetNextDescriptorComp\r
+ 250                   .LSM32:\r
+ 251 0088 8823                 tst r24\r
+ 252 008a 01F4                 brne .L26\r
+ 253 008c 00C0                 rjmp .L36\r
+ 254                   .L25:\r
+ 255                   .LSM33:\r
+ 256 008e C501                 movw r24,r10\r
+ 257 0090 B701                 movw r22,r14\r
+ 258 0092 40E0                 ldi r20,lo8(gs(DComp_NextAudioControlInterface))\r
+ 259 0094 50E0                 ldi r21,hi8(gs(DComp_NextAudioControlInterface))\r
+ 260 0096 0E94 0000            call USB_GetNextDescriptorComp\r
+ 261 009a 8823                 tst r24\r
+ 262 009c 01F4                 brne .L33\r
+ 263                   .LSM34:\r
+ 264 009e C980                 ldd r12,Y+1\r
+ 265 00a0 DA80                 ldd r13,Y+2\r
+ 266                   .LVL22:\r
+ 267                   .L26:\r
+ 268                   .LSM35:\r
+ 269 00a2 C501                 movw r24,r10\r
+ 270 00a4 B701                 movw r22,r14\r
+ 271 00a6 40E0                 ldi r20,lo8(gs(DComp_NextAudioStreamInterface))\r
+ 272 00a8 50E0                 ldi r21,hi8(gs(DComp_NextAudioStreamInterface))\r
+ 273 00aa 0E94 0000            call USB_GetNextDescriptorComp\r
+ 274 00ae 8823                 tst r24\r
+ 275 00b0 01F0                 breq .L28\r
+ 276                   .LSM36:\r
+ 277 00b2 C501                 movw r24,r10\r
+ 278 00b4 B701                 movw r22,r14\r
+ 279 00b6 40E0                 ldi r20,lo8(gs(DComp_NextAudioControlInterface))\r
+ 280 00b8 50E0                 ldi r21,hi8(gs(DComp_NextAudioControlInterface))\r
+ 281 00ba 0E94 0000            call USB_GetNextDescriptorComp\r
+ 282 00be 8823                 tst r24\r
+ 283 00c0 01F4                 brne .L33\r
+ 284                   .LSM37:\r
+ 285 00c2 C980                 ldd r12,Y+1\r
+ 286 00c4 DA80                 ldd r13,Y+2\r
+ 287                   .LVL23:\r
+ 288                   .L28:\r
+ 289                   .LSM38:\r
+ 290 00c6 0981                 ldd r16,Y+1\r
+ 291 00c8 1A81                 ldd r17,Y+2\r
+ 292                   .LVL24:\r
+ 293                   .LSM39:\r
+ 294 00ca 00C0                 rjmp .L29\r
+ 295                   .LVL25:\r
+ 296                   .L36:\r
+ 297                   .LSM40:\r
+ 298 00cc E981                 ldd r30,Y+1\r
+ 299 00ce FA81                 ldd r31,Y+2\r
+ 300                   .LVL26:\r
+ 301                   .LSM41:\r
+ 302 00d0 8281                 ldd r24,Z+2\r
+ 303 00d2 87FF                 sbrs r24,7\r
+ 304 00d4 00C0                 rjmp .L29\r
+ 305                   .LSM42:\r
+ 306 00d6 902F                 mov r25,r16\r
+ 307 00d8 812F                 mov r24,r17\r
+ 308                   .LVL27:\r
+ 309                   .LBE6:\r
+ 310                   .LSM43:\r
+ 311 00da 3097                 sbiw r30,0\r
+ 312 00dc 01F0                 breq .L30\r
+ 313                   .LSM44:\r
+ 314 00de D801                 movw r26,r16\r
+ 315 00e0 1296                 adiw r26,2\r
+ 316 00e2 8C91                 ld r24,X\r
+ 317 00e4 1297                 sbiw r26,2\r
+ 318 00e6 8093 0000            sts StreamingInterfaceIndex,r24\r
+ 319                   .LSM45:\r
+ 320 00ea 1396                 adiw r26,3\r
+ 321 00ec 8C91                 ld r24,X\r
+ 322 00ee 8093 0000            sts StreamingInterfaceAltSetting,r24\r
+ 323                   .LSM46:\r
+ 324 00f2 2281                 ldd r18,Z+2\r
+ 325 00f4 2093 0000            sts StreamingEndpointAddress,r18\r
+ 326                   .LSM47:\r
+ 327 00f8 0481                 ldd r16,Z+4\r
+ 328 00fa 1581                 ldd r17,Z+5\r
+ 329                   .LVL28:\r
+ 330 00fc 81E0                 ldi r24,lo8(1)\r
+ 331 00fe 61E0                 ldi r22,lo8(1)\r
+ 332 0100 40E1                 ldi r20,lo8(16)\r
+ 333 0102 94E0                 ldi r25,lo8(4)\r
+ 334 0104 E92E                 mov r14,r25\r
+ 335                   .LVL29:\r
+ 336 0106 0E94 0000            call Pipe_ConfigurePipe\r
+ 337                   .LVL30:\r
+ 338                   .LSM48:\r
+ 339 010a 80E0                 ldi r24,lo8(0)\r
+ 340 010c 00C0                 rjmp .L22\r
+ 341                   .LVL31:\r
+ 342                   .L31:\r
+ 343                   .LSM49:\r
+ 344 010e 82E0                 ldi r24,lo8(2)\r
+ 345 0110 00C0                 rjmp .L22\r
+ 346                   .LVL32:\r
+ 347                   .L33:\r
+ 348                   .LBB7:\r
+ 349                   .LSM50:\r
+ 350 0112 84E0                 ldi r24,lo8(4)\r
+ 351                   .L22:\r
+ 352                   /* epilogue start */\r
+ 353                   .LBE7:\r
+ 354                   .LSM51:\r
+ 355 0114 CC5F                 subi r28,lo8(-(516))\r
+ 356 0116 DD4F                 sbci r29,hi8(-(516))\r
+ 357 0118 0FB6                 in __tmp_reg__,__SREG__\r
+ 358 011a F894                 cli\r
+ 359 011c DEBF                 out __SP_H__,r29\r
+ 360 011e 0FBE                 out __SREG__,__tmp_reg__\r
+ 361 0120 CDBF                 out __SP_L__,r28\r
+ 362 0122 CF91                 pop r28\r
+ 363 0124 DF91                 pop r29\r
+ 364 0126 1F91                 pop r17\r
+ 365 0128 0F91                 pop r16\r
+ 366 012a FF90                 pop r15\r
+ 367 012c EF90                 pop r14\r
+ 368 012e DF90                 pop r13\r
+ 369 0130 CF90                 pop r12\r
+ 370 0132 BF90                 pop r11\r
+ 371 0134 AF90                 pop r10\r
+ 372 0136 0895                 ret\r
+ 373                   .L29:\r
+ 374                   .LVL33:\r
+ 375                   .LSM52:\r
+ 376 0138 902F                 mov r25,r16\r
+ 377 013a 812F                 mov r24,r17\r
+ 378 013c 00C0                 rjmp .L30\r
+ 379                   .LFE131:\r
+ 381                   .global StreamingInterfaceIndex\r
+ 382                   .global StreamingInterfaceIndex\r
+ 383                           .section .bss\r
+ 386                   StreamingInterfaceIndex:\r
+ 387 0000 00                   .skip 1,0\r
+ 388                   .global StreamingInterfaceAltSetting\r
+ 389                   .global StreamingInterfaceAltSetting\r
+ 392                   StreamingInterfaceAltSetting:\r
+ 393 0001 00                   .skip 1,0\r
+ 394                   .global StreamingEndpointAddress\r
+ 395                   .global StreamingEndpointAddress\r
+ 398                   StreamingEndpointAddress:\r
+ 399 0002 00                   .skip 1,0\r
+ 448                   .Letext0:\r
+DEFINED SYMBOLS\r
+                            *ABS*:00000000 ConfigDescriptor.c\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:2      *ABS*:0000003f __SREG__\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:3      *ABS*:0000003e __SP_H__\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:4      *ABS*:0000003d __SP_L__\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:5      *ABS*:00000034 __CCP__\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:6      *ABS*:00000000 __tmp_reg__\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:7      *ABS*:00000001 __zero_reg__\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:19     .text.DComp_NextAudioControlInterface:00000000 DComp_NextAudioControlInterface\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:65     .text.DComp_NextAudioStreamInterface:00000000 DComp_NextAudioStreamInterface\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:111    .text.DComp_NextAudioInterfaceDataEndpoint:00000000 DComp_NextAudioInterfaceDataEndpoint\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:162    .text.ProcessConfigurationDescriptor:00000000 ProcessConfigurationDescriptor\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:386    .bss:00000000 StreamingInterfaceIndex\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:392    .bss:00000001 StreamingInterfaceAltSetting\r
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:398    .bss:00000002 StreamingEndpointAddress\r
+\r
+UNDEFINED SYMBOLS\r
+USB_Host_GetDeviceConfigDescriptor\r
+USB_GetNextDescriptorComp\r
+Pipe_ConfigurePipe\r
+__do_clear_bss\r
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o
new file mode 100644 (file)
index 0000000..8c4ba05
Binary files /dev/null and b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o differ
diff --git a/Demos/Host/Incomplete/AudioInputHost/makefile b/Demos/Host/Incomplete/AudioInputHost/makefile
new file mode 100644 (file)
index 0000000..6febc16
--- /dev/null
@@ -0,0 +1,714 @@
+# Hey Emacs, this is a -*- makefile -*-\r
+#----------------------------------------------------------------------------\r
+# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.\r
+#  >> Modified for use with the LUFA project. <<\r
+#\r
+# Released to the Public Domain\r
+#\r
+# Additional material for this makefile was written by:\r
+# Peter Fleury\r
+# Tim Henigan\r
+# Colin O'Flynn\r
+# Reiner Patommel\r
+# Markus Pfaff\r
+# Sander Pool\r
+# Frederik Rouleau\r
+# Carlos Lamas\r
+# Dean Camera\r
+# Opendous Inc.\r
+# Denver Gingerich\r
+#\r
+#----------------------------------------------------------------------------\r
+# On command line:\r
+#\r
+# make all = Make software.\r
+#\r
+# make clean = Clean out built project files.\r
+#\r
+# make coff = Convert ELF to AVR COFF.\r
+#\r
+# make extcoff = Convert ELF to AVR Extended COFF.\r
+#\r
+# make program = Download the hex file to the device, using avrdude.\r
+#                Please customize the avrdude settings below first!\r
+#\r
+# make dfu = Download the hex file to the device, using dfu-programmer (must\r
+#            have dfu-programmer installed).\r
+#\r
+# make flip = Download the hex file to the device, using Atmel FLIP (must\r
+#             have Atmel FLIP installed).\r
+#\r
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer\r
+#               (must have dfu-programmer installed).\r
+#\r
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP\r
+#                (must have Atmel FLIP installed).\r
+#\r
+# make doxygen = Generate DoxyGen documentation for the project (must have\r
+#                DoxyGen installed)\r
+#\r
+# make debug = Start either simulavr or avarice as specified for debugging,\r
+#              with avr-gdb or avr-insight as the front end for debugging.\r
+#\r
+# make filename.s = Just compile filename.c into the assembler code only.\r
+#\r
+# make filename.i = Create a preprocessed source file for use in submitting\r
+#                   bug reports to the GCC project.\r
+#\r
+# To rebuild project do "make clean" then "make all".\r
+#----------------------------------------------------------------------------\r
+\r
+\r
+# MCU name\r
+MCU = at90usb1287\r
+\r
+\r
+# Target architecture (see library "Board Types" documentation).\r
+ARCH = AVR8\r
+\r
+\r
+# Target board (see library "Board Types" documentation, NONE for projects not requiring\r
+# LUFA board drivers). If USER is selected, put custom board drivers in a directory called\r
+# "Board" inside the application directory.\r
+BOARD = USBKEY\r
+\r
+\r
+# Processor frequency.\r
+#     This will define a symbol, F_CPU, in all source code files equal to the\r
+#     processor frequency in Hz. You can then use this symbol in your source code to\r
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done\r
+#     automatically to create a 32-bit value in your source code.\r
+#\r
+#     This will be an integer division of F_USB below, as it is sourced by\r
+#     F_USB after it has run through any CPU prescalers. Note that this value\r
+#     does not *change* the processor frequency - it should merely be updated to\r
+#     reflect the processor speed set externally so that the code can use accurate\r
+#     software delays.\r
+F_CPU = 8000000\r
+\r
+\r
+# Input clock frequency.\r
+#     This will define a symbol, F_USB, in all source code files equal to the\r
+#     input clock frequency (before any prescaling is performed) in Hz. This value may\r
+#     differ from F_CPU if prescaling is used on the latter, and is required as the\r
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed\r
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'\r
+#     at the end, this will be done automatically to create a 32-bit value in your\r
+#     source code.\r
+#\r
+#     If no clock division is performed on the input clock inside the AVR (via the\r
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.\r
+F_USB = $(F_CPU)\r
+\r
+\r
+# Output format. (can be srec, ihex, binary)\r
+FORMAT = ihex\r
+\r
+\r
+# Target file name (without extension).\r
+TARGET = AudioInputHost\r
+\r
+\r
+# Object files directory\r
+#     To put object files in current directory, use a dot (.), do NOT make\r
+#     this an empty or blank macro!\r
+OBJDIR = .\r
+\r
+\r
+# Path to the LUFA library\r
+LUFA_PATH = ../../../..\r
+\r
+\r
+# LUFA library compile-time options and predefined tokens\r
+LUFA_OPTS  = -D USB_HOST_ONLY\r
+LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"\r
+\r
+\r
+# Create the LUFA source path variables by including the LUFA root makefile\r
+include $(LUFA_PATH)/LUFA/makefile\r
+\r
+\r
+# List C source files here. (C dependencies are automatically generated.)\r
+SRC = $(TARGET).c                                                 \\r
+         ConfigDescriptor.c                                          \\r
+         $(LUFA_SRC_USB)                                             \\r
+         $(LUFA_SRC_SERIAL)\r
+\r
+\r
+# List C++ source files here. (C dependencies are automatically generated.)\r
+CPPSRC =\r
+\r
+\r
+# List Assembler source files here.\r
+#     Make them always end in a capital .S.  Files ending in a lowercase .s\r
+#     will not be considered source files but generated files (assembler\r
+#     output from the compiler), and will be deleted upon "make clean"!\r
+#     Even though the DOS/Win* filesystem matches both .s and .S the same,\r
+#     it will preserve the spelling of the filenames, and gcc itself does\r
+#     care about how the name is spelled on its command-line.\r
+ASRC =\r
+\r
+\r
+# Optimization level, can be [0, 1, 2, 3, s].\r
+#     0 = turn off optimization. s = optimize for size.\r
+#     (Note: 3 is not always the best optimization level. See avr-libc FAQ.)\r
+OPT = s\r
+\r
+\r
+# Debugging format.\r
+#     Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.\r
+#     AVR Studio 4.10 requires dwarf-2.\r
+#     AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.\r
+DEBUG = dwarf-2\r
+\r
+\r
+# List any extra directories to look for include files here.\r
+#     Each directory must be seperated by a space.\r
+#     Use forward slashes for directory separators.\r
+#     For a directory that has spaces, enclose it in quotes.\r
+EXTRAINCDIRS = $(LUFA_PATH)/\r
+\r
+\r
+# Compiler flag to set the C Standard level.\r
+#     c89   = "ANSI" C\r
+#     gnu89 = c89 plus GCC extensions\r
+#     c99   = ISO C99 standard (not yet fully implemented)\r
+#     gnu99 = c99 plus GCC extensions\r
+CSTANDARD = -std=c99\r
+\r
+\r
+# Place -D or -U options here for C sources\r
+CDEFS  = -DF_CPU=$(F_CPU)UL\r
+CDEFS += -DF_USB=$(F_USB)UL\r
+CDEFS += -DBOARD=BOARD_$(BOARD) -DARCH=ARCH_$(ARCH)\r
+CDEFS += $(LUFA_OPTS)\r
+\r
+\r
+# Place -D or -U options here for ASM sources\r
+ADEFS  = -DF_CPU=$(F_CPU)\r
+ADEFS += -DF_USB=$(F_USB)UL\r
+ADEFS += -DBOARD=BOARD_$(BOARD)\r
+ADEFS += $(LUFA_OPTS)\r
+\r
+# Place -D or -U options here for C++ sources\r
+CPPDEFS  = -DF_CPU=$(F_CPU)UL\r
+CPPDEFS += -DF_USB=$(F_USB)UL\r
+CPPDEFS += -DBOARD=BOARD_$(BOARD)\r
+CPPDEFS += $(LUFA_OPTS)\r
+#CPPDEFS += -D__STDC_LIMIT_MACROS\r
+#CPPDEFS += -D__STDC_CONSTANT_MACROS\r
+\r
+\r
+\r
+#---------------- Compiler Options C ----------------\r
+#  -g*:          generate debugging information\r
+#  -O*:          optimization level\r
+#  -f...:        tuning, see GCC manual and avr-libc documentation\r
+#  -Wall...:     warning level\r
+#  -Wa,...:      tell GCC to pass this to the assembler.\r
+#    -adhlns...: create assembler listing\r
+CFLAGS = -g$(DEBUG)\r
+CFLAGS += $(CDEFS)\r
+CFLAGS += -O$(OPT)\r
+CFLAGS += -funsigned-char\r
+CFLAGS += -funsigned-bitfields\r
+CFLAGS += -ffunction-sections\r
+CFLAGS += -fno-inline-small-functions\r
+CFLAGS += -fpack-struct\r
+CFLAGS += -fshort-enums\r
+CFLAGS += -fno-strict-aliasing\r
+CFLAGS += -Wall\r
+CFLAGS += -Wstrict-prototypes\r
+#CFLAGS += -mshort-calls\r
+#CFLAGS += -fno-unit-at-a-time\r
+#CFLAGS += -Wundef\r
+#CFLAGS += -Wunreachable-code\r
+#CFLAGS += -Wsign-compare\r
+CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)\r
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))\r
+CFLAGS += $(CSTANDARD)\r
+\r
+\r
+#---------------- Compiler Options C++ ----------------\r
+#  -g*:          generate debugging information\r
+#  -O*:          optimization level\r
+#  -f...:        tuning, see GCC manual and avr-libc documentation\r
+#  -Wall...:     warning level\r
+#  -Wa,...:      tell GCC to pass this to the assembler.\r
+#    -adhlns...: create assembler listing\r
+CPPFLAGS = -g$(DEBUG)\r
+CPPFLAGS += $(CPPDEFS)\r
+CPPFLAGS += -O$(OPT)\r
+CPPFLAGS += -funsigned-char\r
+CPPFLAGS += -funsigned-bitfields\r
+CPPFLAGS += -fpack-struct\r
+CPPFLAGS += -fshort-enums\r
+CPPFLAGS += -fno-exceptions\r
+CPPFLAGS += -Wall\r
+CPPFLAGS += -Wundef\r
+#CPPFLAGS += -mshort-calls\r
+#CPPFLAGS += -fno-unit-at-a-time\r
+#CPPFLAGS += -Wstrict-prototypes\r
+#CPPFLAGS += -Wunreachable-code\r
+#CPPFLAGS += -Wsign-compare\r
+CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)\r
+CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))\r
+#CPPFLAGS += $(CSTANDARD)\r
+\r
+\r
+#---------------- Assembler Options ----------------\r
+#  -Wa,...:   tell GCC to pass this to the assembler.\r
+#  -adhlns:   create listing\r
+#  -gstabs:   have the assembler create line number information; note that\r
+#             for use in COFF files, additional information about filenames\r
+#             and function names needs to be present in the assembler source\r
+#             files -- see avr-libc docs [FIXME: not yet described there]\r
+#  -listing-cont-lines: Sets the maximum number of continuation lines of hex\r
+#       dump that will be displayed for a given single line of source input.\r
+ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100\r
+\r
+\r
+#---------------- Library Options ----------------\r
+# Minimalistic printf version\r
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min\r
+\r
+# Floating point printf version (requires MATH_LIB = -lm below)\r
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt\r
+\r
+# If this is left blank, then it will use the Standard printf version.\r
+PRINTF_LIB =\r
+#PRINTF_LIB = $(PRINTF_LIB_MIN)\r
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)\r
+\r
+\r
+# Minimalistic scanf version\r
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min\r
+\r
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)\r
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt\r
+\r
+# If this is left blank, then it will use the Standard scanf version.\r
+SCANF_LIB =\r
+#SCANF_LIB = $(SCANF_LIB_MIN)\r
+#SCANF_LIB = $(SCANF_LIB_FLOAT)\r
+\r
+\r
+MATH_LIB = -lm\r
+\r
+\r
+# List any extra directories to look for libraries here.\r
+#     Each directory must be seperated by a space.\r
+#     Use forward slashes for directory separators.\r
+#     For a directory that has spaces, enclose it in quotes.\r
+EXTRALIBDIRS =\r
+\r
+\r
+\r
+#---------------- External Memory Options ----------------\r
+\r
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),\r
+# used for variables (.data/.bss) and heap (malloc()).\r
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff\r
+\r
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),\r
+# only used for heap (malloc()).\r
+#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff\r
+\r
+EXTMEMOPTS =\r
+\r
+\r
+\r
+#---------------- Linker Options ----------------\r
+#  -Wl,...:     tell GCC to pass this to linker.\r
+#    -Map:      create map file\r
+#    --cref:    add cross reference to  map file\r
+LDFLAGS  = -Wl,-Map=$(TARGET).map,--cref\r
+LDFLAGS += -Wl,--relax\r
+LDFLAGS += -Wl,--gc-sections\r
+LDFLAGS += $(EXTMEMOPTS)\r
+LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))\r
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)\r
+#LDFLAGS += -T linker_script.x\r
+\r
+\r
+\r
+#---------------- Programming Options (avrdude) ----------------\r
+\r
+# Programming hardware\r
+# Type: avrdude -c ?\r
+# to get a full listing.\r
+#\r
+AVRDUDE_PROGRAMMER = jtagmkII\r
+\r
+# com1 = serial port. Use lpt1 to connect to parallel port.\r
+AVRDUDE_PORT = usb\r
+\r
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex\r
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep\r
+\r
+\r
+# Uncomment the following if you want avrdude's erase cycle counter.\r
+# Note that this counter needs to be initialized first using -Yn,\r
+# see avrdude manual.\r
+#AVRDUDE_ERASE_COUNTER = -y\r
+\r
+# Uncomment the following if you do /not/ wish a verification to be\r
+# performed after programming the device.\r
+#AVRDUDE_NO_VERIFY = -V\r
+\r
+# Increase verbosity level.  Please use this when submitting bug\r
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>\r
+# to submit bug reports.\r
+#AVRDUDE_VERBOSE = -v -v\r
+\r
+AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)\r
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)\r
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)\r
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)\r
+\r
+\r
+\r
+#---------------- Debugging Options ----------------\r
+\r
+# For simulavr only - target MCU frequency.\r
+DEBUG_MFREQ = $(F_CPU)\r
+\r
+# Set the DEBUG_UI to either gdb or insight.\r
+# DEBUG_UI = gdb\r
+DEBUG_UI = insight\r
+\r
+# Set the debugging back-end to either avarice, simulavr.\r
+DEBUG_BACKEND = avarice\r
+#DEBUG_BACKEND = simulavr\r
+\r
+# GDB Init Filename.\r
+GDBINIT_FILE = __avr_gdbinit\r
+\r
+# When using avarice settings for the JTAG\r
+JTAG_DEV = /dev/com1\r
+\r
+# Debugging port used to communicate between GDB / avarice / simulavr.\r
+DEBUG_PORT = 4242\r
+\r
+# Debugging host used to communicate between GDB / avarice / simulavr, normally\r
+#     just set to localhost unless doing some sort of crazy debugging when\r
+#     avarice is running on a different computer.\r
+DEBUG_HOST = localhost\r
+\r
+\r
+\r
+#============================================================================\r
+\r
+\r
+# Define programs and commands.\r
+SHELL = sh\r
+CC = avr-gcc\r
+OBJCOPY = avr-objcopy\r
+OBJDUMP = avr-objdump\r
+SIZE = avr-size\r
+AR = avr-ar rcs\r
+NM = avr-nm\r
+AVRDUDE = avrdude\r
+REMOVE = rm -f\r
+REMOVEDIR = rm -rf\r
+COPY = cp\r
+WINSHELL = cmd\r
+\r
+\r
+# Define Messages\r
+# English\r
+MSG_ERRORS_NONE = Errors: none\r
+MSG_BEGIN = -------- begin --------\r
+MSG_END = --------  end  --------\r
+MSG_SIZE_BEFORE = Size before:\r
+MSG_SIZE_AFTER = Size after:\r
+MSG_COFF = Converting to AVR COFF:\r
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:\r
+MSG_FLASH = Creating load file for Flash:\r
+MSG_EEPROM = Creating load file for EEPROM:\r
+MSG_EXTENDED_LISTING = Creating Extended Listing:\r
+MSG_SYMBOL_TABLE = Creating Symbol Table:\r
+MSG_LINKING = Linking:\r
+MSG_COMPILING = Compiling C:\r
+MSG_COMPILING_CPP = Compiling C++:\r
+MSG_ASSEMBLING = Assembling:\r
+MSG_CLEANING = Cleaning project:\r
+MSG_CREATING_LIBRARY = Creating library:\r
+\r
+\r
+\r
+\r
+# Define all object files.\r
+OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)\r
+\r
+# Define all listing files.\r
+LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)\r
+\r
+\r
+# Compiler flags to generate dependency files.\r
+GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d\r
+\r
+\r
+# Combine all necessary flags and optional flags.\r
+# Add target processor to flags.\r
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)\r
+ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)\r
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)\r
+\r
+\r
+\r
+\r
+\r
+# Default target.\r
+all: begin gccversion sizebefore build sizeafter end\r
+\r
+# Change the build target to build a HEX file or a library.\r
+build: elf hex eep lss sym\r
+#build: lib\r
+\r
+\r
+elf: $(TARGET).elf\r
+hex: $(TARGET).hex\r
+eep: $(TARGET).eep\r
+lss: $(TARGET).lss\r
+sym: $(TARGET).sym\r
+LIBNAME=lib$(TARGET).a\r
+lib: $(LIBNAME)\r
+\r
+\r
+\r
+# Eye candy.\r
+# AVR Studio 3.x does not check make's exit code but relies on\r
+# the following magic strings to be generated by the compile job.\r
+begin:\r
+       @echo\r
+       @echo $(MSG_BEGIN)\r
+\r
+end:\r
+       @echo $(MSG_END)\r
+       @echo\r
+\r
+\r
+# Display size of file.\r
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex\r
+ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf\r
+MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )\r
+FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )\r
+\r
+\r
+sizebefore:\r
+       @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \\r
+       2>/dev/null; echo; fi\r
+\r
+sizeafter:\r
+       @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \\r
+       2>/dev/null; echo; fi\r
+\r
+\r
+\r
+# Display compiler version information.\r
+gccversion :\r
+       @$(CC) --version\r
+\r
+\r
+# Program the device.\r
+program: $(TARGET).hex $(TARGET).eep\r
+       $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)\r
+\r
+flip: $(TARGET).hex\r
+       batchisp -hardware usb -device $(MCU) -operation erase f\r
+       batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program\r
+       batchisp -hardware usb -device $(MCU) -operation start reset 0\r
+\r
+dfu: $(TARGET).hex\r
+       dfu-programmer $(MCU) erase\r
+       dfu-programmer $(MCU) flash $(TARGET).hex\r
+       dfu-programmer $(MCU) reset\r
+\r
+flip-ee: $(TARGET).hex $(TARGET).eep\r
+       $(COPY) $(TARGET).eep $(TARGET)eep.hex\r
+       batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase\r
+       batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program\r
+       batchisp -hardware usb -device $(MCU) -operation start reset 0\r
+       $(REMOVE) $(TARGET)eep.hex\r
+\r
+dfu-ee: $(TARGET).hex $(TARGET).eep\r
+       dfu-programmer $(MCU) eeprom-flash $(TARGET).eep\r
+       dfu-programmer $(MCU) reset\r
+\r
+\r
+# Generate avr-gdb config/init file which does the following:\r
+#     define the reset signal, load the target file, connect to target, and set\r
+#     a breakpoint at main().\r
+gdb-config:\r
+       @$(REMOVE) $(GDBINIT_FILE)\r
+       @echo define reset >> $(GDBINIT_FILE)\r
+       @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)\r
+       @echo end >> $(GDBINIT_FILE)\r
+       @echo file $(TARGET).elf >> $(GDBINIT_FILE)\r
+       @echo target remote $(DEBUG_HOST):$(DEBUG_PORT)  >> $(GDBINIT_FILE)\r
+ifeq ($(DEBUG_BACKEND),simulavr)\r
+       @echo load  >> $(GDBINIT_FILE)\r
+endif\r
+       @echo break main >> $(GDBINIT_FILE)\r
+\r
+debug: gdb-config $(TARGET).elf\r
+ifeq ($(DEBUG_BACKEND), avarice)\r
+       @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.\r
+       @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \\r
+       $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)\r
+       @$(WINSHELL) /c pause\r
+\r
+else\r
+       @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \\r
+       $(DEBUG_MFREQ) --port $(DEBUG_PORT)\r
+endif\r
+       @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)\r
+\r
+\r
+\r
+\r
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.\r
+COFFCONVERT = $(OBJCOPY) --debugging\r
+COFFCONVERT += --change-section-address .data-0x800000\r
+COFFCONVERT += --change-section-address .bss-0x800000\r
+COFFCONVERT += --change-section-address .noinit-0x800000\r
+COFFCONVERT += --change-section-address .eeprom-0x810000\r
+\r
+\r
+\r
+coff: $(TARGET).elf\r
+       @echo\r
+       @echo $(MSG_COFF) $(TARGET).cof\r
+       $(COFFCONVERT) -O coff-avr $< $(TARGET).cof\r
+\r
+\r
+extcoff: $(TARGET).elf\r
+       @echo\r
+       @echo $(MSG_EXTENDED_COFF) $(TARGET).cof\r
+       $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof\r
+\r
+\r
+\r
+# Create final output files (.hex, .eep) from ELF output file.\r
+%.hex: %.elf\r
+       @echo\r
+       @echo $(MSG_FLASH) $@\r
+       $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@\r
+\r
+%.eep: %.elf\r
+       @echo\r
+       @echo $(MSG_EEPROM) $@\r
+       -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \\r
+       --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0\r
+\r
+# Create extended listing file from ELF output file.\r
+%.lss: %.elf\r
+       @echo\r
+       @echo $(MSG_EXTENDED_LISTING) $@\r
+       $(OBJDUMP) -h -S -z $< > $@\r
+\r
+# Create a symbol table from ELF output file.\r
+%.sym: %.elf\r
+       @echo\r
+       @echo $(MSG_SYMBOL_TABLE) $@\r
+       $(NM) -n $< > $@\r
+\r
+\r
+\r
+# Create library from object files.\r
+.SECONDARY : $(TARGET).a\r
+.PRECIOUS : $(OBJ)\r
+%.a: $(OBJ)\r
+       @echo\r
+       @echo $(MSG_CREATING_LIBRARY) $@\r
+       $(AR) $@ $(OBJ)\r
+\r
+\r
+# Link: create ELF output file from object files.\r
+.SECONDARY : $(TARGET).elf\r
+.PRECIOUS : $(OBJ)\r
+%.elf: $(OBJ)\r
+       @echo\r
+       @echo $(MSG_LINKING) $@\r
+       $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)\r
+\r
+\r
+# Compile: create object files from C source files.\r
+$(OBJDIR)/%.o : %.c\r
+       @echo\r
+       @echo $(MSG_COMPILING) $<\r
+       $(CC) -c $(ALL_CFLAGS) $< -o $@\r
+\r
+\r
+# Compile: create object files from C++ source files.\r
+$(OBJDIR)/%.o : %.cpp\r
+       @echo\r
+       @echo $(MSG_COMPILING_CPP) $<\r
+       $(CC) -c $(ALL_CPPFLAGS) $< -o $@\r
+\r
+\r
+# Compile: create assembler files from C source files.\r
+%.s : %.c\r
+       $(CC) -S $(ALL_CFLAGS) $< -o $@\r
+\r
+\r
+# Compile: create assembler files from C++ source files.\r
+%.s : %.cpp\r
+       $(CC) -S $(ALL_CPPFLAGS) $< -o $@\r
+\r
+\r
+# Assemble: create object files from assembler source files.\r
+$(OBJDIR)/%.o : %.S\r
+       @echo\r
+       @echo $(MSG_ASSEMBLING) $<\r
+       $(CC) -c $(ALL_ASFLAGS) $< -o $@\r
+\r
+\r
+# Create preprocessed source for use in sending a bug report.\r
+%.i : %.c\r
+       $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@\r
+\r
+\r
+# Target: clean project.\r
+clean: begin clean_list end\r
+\r
+clean_list :\r
+       @echo\r
+       @echo $(MSG_CLEANING)\r
+       $(REMOVE) $(TARGET).hex\r
+       $(REMOVE) $(TARGET).eep\r
+       $(REMOVE) $(TARGET).cof\r
+       $(REMOVE) $(TARGET).elf\r
+       $(REMOVE) $(TARGET).map\r
+       $(REMOVE) $(TARGET).sym\r
+       $(REMOVE) $(TARGET).lss\r
+       $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)\r
+       $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)\r
+       $(REMOVE) $(SRC:.c=.s)\r
+       $(REMOVE) $(SRC:.c=.d)\r
+       $(REMOVE) $(SRC:.c=.i)\r
+       $(REMOVEDIR) .dep\r
+\r
+doxygen:\r
+       @echo Generating Project Documentation...\r
+       @doxygen Doxygen.conf\r
+       @echo Documentation Generation Complete.\r
+\r
+clean_doxygen:\r
+       rm -rf Documentation\r
+\r
+# Create object files directory\r
+$(shell mkdir $(OBJDIR) 2>/dev/null)\r
+\r
+\r
+# Include the dependency files.\r
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)\r
+\r
+\r
+# Listing of phony targets.\r
+.PHONY : all begin finish end sizebefore sizeafter gccversion \\r
+build elf hex eep lss sym coff extcoff doxygen clean          \\r
+clean_list clean_doxygen program dfu flip flip-ee dfu-ee      \\r
+debug gdb-config\r
+\r
index c2426bd..8b0155b 100644 (file)
@@ -1 +1 @@
-<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="KeyboardMouseMultiReport"><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.aps"></File></Folder><Folder name="MassStorageKeyboard"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\makefile"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.txt"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.aps"></File></Folder><Folder name="VirtualSerialMassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\LUFA VirtualSerialMassStorage.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.aps"></File></Folder><Folder name="VirtualSerialMouse"><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\LUFA VirtualSerialMouse.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.aps"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\LowLevel\VirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.aps"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><Folder name="Lib"><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.h"></File></Folder><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File></Folder><Folder name="TestAndMeasurement"><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\makefile"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="JoystickHostWithParser"><File path="Demos\Host\ClassDriver\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\ClassDriver\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MIDIHost\makefile"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><File path="Demos\Host\ClassDriver\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\PrinterHost\makefile"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><File path="Demos\Host\ClassDriver\RNDISEthernetHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\makefile"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.c"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.h"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.txt"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.aps"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\ClassDriver\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\makefile"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.aps"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MIDIHost\makefile"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.h"></File></Folder><File path="Demos\Host\LowLevel\RNDISEthernetHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\makefile"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.h"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISHost.txt"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.aps"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\makefile"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Doxygen.conf"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.h"></File></Folder><Folder name="AndroidAccessoryHost"><File path="Demos\Host\Incomplete\AndroidAccessoryHost\AndroidAccessoryHost.c"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\AndroidAccessoryHost.h"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\DeviceDescriptor.h"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\Doxygen.conf"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\makefile"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="DualRole"><Folder name="ClassDriver"><Folder name="MouseHostDevice"><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Doxygen.conf"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\makefile"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.txt"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.aps"></File></Folder><File path="Demos\DualRole\ClassDriver\makefile"></File></Folder><File path="Demos\DualRole\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\BoardTypes.h"></File><File path="LUFA\Common\Attributes.h"></File><File path="LUFA\Common\Architectures.h"></File><File path="LUFA\Common\Endianness.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="Core"><Folder name="AVR8"><Folder name="Template"><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\Core\AVR8\Device_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Device_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\Endpoint_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Endpoint_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\Host_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Host_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\OTG_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\Pipe_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Pipe_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBController_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBController_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBInterrupt_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBInterrupt_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\EndpointStream_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\EndpointStream_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\PipeStream_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\PipeStream_AVR8.h"></File></Folder><Folder name="UC3"><Folder name="Template"><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\Core\UC3\Device_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Device_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\Endpoint_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Endpoint_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\Pipe_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Pipe_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\USBController_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\USBController_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\USBInterrupt_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\USBInterrupt_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\Host_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Host_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\EndpointStream_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\EndpointStream_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\PipeStream_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\PipeStream_UC3.h"></File></Folder><File path="LUFA\Drivers\USB\Core\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\Core\ConfigDescriptor.h"></File><File path="LUFA\Drivers\USB\Core\DeviceStandardReq.c"></File><File path="LUFA\Drivers\USB\Core\DeviceStandardReq.h"></File><File path="LUFA\Drivers\USB\Core\Events.c"></File><File path="LUFA\Drivers\USB\Core\Events.h"></File><File path="LUFA\Drivers\USB\Core\HostStandardReq.c"></File><File path="LUFA\Drivers\USB\Core\HostStandardReq.h"></File><File path="LUFA\Drivers\USB\Core\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\Core\StdRequestType.h"></File><File path="LUFA\Drivers\USB\Core\USBMode.h"></File><File path="LUFA\Drivers\USB\Core\USBTask.c"></File><File path="LUFA\Drivers\USB\Core\USBTask.h"></File><File path="LUFA\Drivers\USB\Core\Device.h"></File><File path="LUFA\Drivers\USB\Core\Endpoint.h"></File><File path="LUFA\Drivers\USB\Core\Host.h"></File><File path="LUFA\Drivers\USB\Core\Pipe.h"></File><File path="LUFA\Drivers\USB\Core\USBController.h"></File><File path="LUFA\Drivers\USB\Core\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\Core\OTG.h"></File><File path="LUFA\Drivers\USB\Core\EndpointStream.h"></File><File path="LUFA\Drivers\USB\Core\PipeStream.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Host\Printer.c"></File><File path="LUFA\Drivers\USB\Class\Host\Printer.h"></File><File path="LUFA\Drivers\USB\Class\Host\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Host\RNDIS.c"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Common\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Common\Printer.h"></File><File path="LUFA\Drivers\USB\Class\Common\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Common\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Common\HIDReportData.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Printer.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File><File path="LUFA\Drivers\Misc\RingBuffer.h"></File><File path="LUFA\Drivers\Misc\AT45DB321C.h"></File><File path="LUFA\Drivers\Misc\AT45DB642D.h"></File></Folder><Folder name="Board"><Folder name="AVR8"><Folder name="ADAFRUITU4"><File path="LUFA\Drivers\Board\AVR8\ADAFRUITU4\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\AVR8\ATAVRUSBRF01\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\ATAVRUSBRF01\LEDs.h"></File></Folder><Folder name="BENITO"><File path="LUFA\Drivers\Board\AVR8\BENITO\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\BENITO\LEDs.h"></File></Folder><Folder name="BLACKCAT"><File path="LUFA\Drivers\Board\AVR8\BLACKCAT\LEDs.h"></File></Folder><Folder name="BUI"><File path="LUFA\Drivers\Board\AVR8\BUI\LEDs.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\AVR8\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\BUMBLEB\LEDs.h"></File></Folder><Folder name="CULV3"><File path="LUFA\Drivers\Board\AVR8\CULV3\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\CULV3\LEDs.h"></File></Folder><Folder name="EVK527"><File path="LUFA\Drivers\Board\AVR8\EVK527\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\EVK527\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\EVK527\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\EVK527\LEDs.h"></File></Folder><Folder name="JMDBU2"><File path="LUFA\Drivers\Board\AVR8\JMDBU2\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\JMDBU2\LEDs.h"></File></Folder><Folder name="MAXIMUS"><File path="LUFA\Drivers\Board\AVR8\MAXIMUS\LEDs.h"></File></Folder><Folder name="MICROSIN162"><File path="LUFA\Drivers\Board\AVR8\MICROSIN162\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\MICROSIN162\LEDs.h"></File></Folder><Folder name="MINIMUS"><File path="LUFA\Drivers\Board\AVR8\MINIMUS\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\MINIMUS\LEDs.h"></File></Folder><Folder name="OLIMEX162"><File path="LUFA\Drivers\Board\AVR8\OLIMEX162\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\OLIMEX162\LEDs.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\AVR8\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="SPARKFUN8U2"><File path="LUFA\Drivers\Board\AVR8\SPARKFUN8U2\LEDs.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\AVR8\STK525\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\STK525\LEDs.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\AVR8\STK526\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\STK526\LEDs.h"></File></Folder><Folder name="TEENSY"><File path="LUFA\Drivers\Board\AVR8\TEENSY\LEDs.h"></File></Folder><Folder name="UDIP"><File path="LUFA\Drivers\Board\AVR8\UDIP\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\UDIP\LEDs.h"></File></Folder><Folder name="UNO"><File path="LUFA\Drivers\Board\AVR8\UNO\LEDs.h"></File></Folder><Folder name="USBFOO"><File path="LUFA\Drivers\Board\AVR8\USBFOO\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\USBFOO\LEDS.h"></File></Folder><Folder name="USBKEY"><File path="LUFA\Drivers\Board\AVR8\USBKEY\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\USBKEY\LEDs.h"></File></Folder><Folder name="USBTINYMKII"><File path="LUFA\Drivers\Board\AVR8\USBTINYMKII\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\USBTINYMKII\LEDs.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\AVR8\XPLAIN\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\XPLAIN\LEDs.h"></File></Folder></Folder><Folder name="UC3"><Folder name="EVK1101"><File path="LUFA\Drivers\Board\UC3\EVK1101\Buttons.h"></File><File path="LUFA\Drivers\Board\UC3\EVK1101\Joystick.h"></File><File path="LUFA\Drivers\Board\UC3\EVK1101\LEDs.h"></File></Folder></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="AVR8"><File path="LUFA\Drivers\Peripheral\AVR8\ADC_AVR8.h"></File><File path="LUFA\Drivers\Peripheral\AVR8\Serial_AVR8.c"></File><File path="LUFA\Drivers\Peripheral\AVR8\Serial_AVR8.h"></File><File path="LUFA\Drivers\Peripheral\AVR8\SPI_AVR8.h"></File><File path="LUFA\Drivers\Peripheral\AVR8\TWI_AVR8.c"></File><File path="LUFA\Drivers\Peripheral\AVR8\TWI_AVR8.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\TWI.h"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File></Folder></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File><File path="LUFA\ManPages\AlternativeStacks.txt"></File><File path="LUFA\ManPages\SoftwareBootloaderJump.txt"></File><File path="LUFA\ManPages\LicenseInfo.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><Folder name="CodeTemplates"><Folder name="DriverStubs"><File path="LUFA\CodeTemplates\DriverStubs\Buttons.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Dataflash.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Joystick.h"></File><File path="LUFA\CodeTemplates\DriverStubs\LEDs.h"></File></Folder><File path="LUFA\CodeTemplates\makefile_template.avr8"></File><File path="LUFA\CodeTemplates\makefile_template.uc3"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\License.txt"></File></Folder><Folder name="Bootloaders"><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><File path="Bootloaders\CDC\BootloaderCDC.aps"></File></Folder><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><File path="Bootloaders\DFU\BootloaderDFU.aps"></File></Folder><Folder name="HID"><Folder name="HostLoaderApp"><File path="Bootloaders\HID\HostLoaderApp\gpl3.txt"></File><File path="Bootloaders\HID\HostLoaderApp\Makefile"></File><File path="Bootloaders\HID\HostLoaderApp\Makefile.bsd"></File><File path="Bootloaders\HID\HostLoaderApp\hid_bootloader_cli.c"></File></Folder><File path="Bootloaders\HID\Descriptors.c"></File><File path="Bootloaders\HID\Descriptors.h"></File><File path="Bootloaders\HID\makefile"></File><File path="Bootloaders\HID\BootloaderHID.txt"></File><File path="Bootloaders\HID\BootloaderHID.c"></File><File path="Bootloaders\HID\BootloaderHID.h"></File><File path="Bootloaders\HID\Doxygen.conf"></File><File path="Bootloaders\HID\BootloaderHID.aps"></File></Folder><File path="Bootloaders\makefile"></File></Folder><Folder name="Projects"><Folder name="AVRISP-MKII"><Folder name="Lib"><Folder name="ISP"><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.h"></File></Folder><Folder name="XPROG"><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.h"></File></Folder><File path="Projects\AVRISP-MKII\Lib\V2Protocol.c"></File><File path="Projects\AVRISP-MKII\Lib\V2Protocol.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolConstants.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.c"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.h"></File></Folder><File path="Projects\AVRISP-MKII\Descriptors.c"></File><File path="Projects\AVRISP-MKII\Descriptors.h"></File><File path="Projects\AVRISP-MKII\Doxygen.conf"></File><File path="Projects\AVRISP-MKII\makefile"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.c"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.h"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.txt"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.aps"></File><File path="Projects\AVRISP-MKII\makefile.uc3"></File></Folder><Folder name="Benito"><File path="Projects\Benito\Benito.c"></File><File path="Projects\Benito\Benito.h"></File><File path="Projects\Benito\Descriptors.c"></File><File path="Projects\Benito\Descriptors.h"></File><File path="Projects\Benito\Doxygen.conf"></File><File path="Projects\Benito\makefile"></File><File path="Projects\Benito\Benito.txt"></File><File path="Projects\Benito\Benito Programmer.inf"></File><File path="Projects\Benito\Benito.aps"></File></Folder><Folder name="LEDNotifier"><Folder name="CPUUsageApp"><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.csproj"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.Designer.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.resx"></File><File path="Projects\LEDNotifier\CPUUsageApp\Program.cs"></File></Folder><Folder name="HotmailNotifierApp"><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.csproj"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.Designer.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.resx"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\Program.cs"></File></Folder><Folder name="LEDMixerApp"><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.csproj"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.Designer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.resx"></File><File path="Projects\LEDNotifier\LEDMixerApp\Program.cs"></File></Folder><File path="Projects\LEDNotifier\Descriptors.c"></File><File path="Projects\LEDNotifier\Descriptors.h"></File><File path="Projects\LEDNotifier\Doxygen.conf"></File><File path="Projects\LEDNotifier\LEDNotifier.c"></File><File path="Projects\LEDNotifier\LEDNotifier.h"></File><File path="Projects\LEDNotifier\LEDNotifier.txt"></File><File path="Projects\LEDNotifier\LUFA LED Notifier.inf"></File><File path="Projects\LEDNotifier\makefile"></File><File path="Projects\LEDNotifier\LEDNotifier.aps"></File></Folder><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\Magstripe.aps"></File></Folder><Folder name="MediaController"><File path="Projects\MediaController\Descriptors.c"></File><File path="Projects\MediaController\Descriptors.h"></File><File path="Projects\MediaController\Doxygen.conf"></File><File path="Projects\MediaController\makefile"></File><File path="Projects\MediaController\MediaController.c"></File><File path="Projects\MediaController\MediaController.h"></File><File path="Projects\MediaController\MediaController.txt"></File><File path="Projects\MediaController\MediaController.aps"></File></Folder><Folder name="MIDIToneGenerator"><File path="Projects\MIDIToneGenerator\Descriptors.c"></File><File path="Projects\MIDIToneGenerator\Descriptors.h"></File><File path="Projects\MIDIToneGenerator\makefile"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.c"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.h"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.txt"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.aps"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File><File path="Projects\MissileLauncher\MissileLauncher.aps"></File></Folder><Folder name="RelayBoard"><File path="Projects\RelayBoard\Descriptors.c"></File><File path="Projects\RelayBoard\Descriptors.h"></File><File path="Projects\RelayBoard\Doxygen.conf"></File><File path="Projects\RelayBoard\makefile"></File><File path="Projects\RelayBoard\RelayBoard.c"></File><File path="Projects\RelayBoard\RelayBoard.h"></File><File path="Projects\RelayBoard\RelayBoard.txt"></File><File path="Projects\RelayBoard\RelayBoard.aps"></File></Folder><Folder name="TempDataLogger"><Folder name="Lib"><Folder name="FATFs"><File path="Projects\TempDataLogger\Lib\FATFs\diskio.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\diskio.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ffconf.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\integer.h"></File></Folder><File path="Projects\TempDataLogger\Lib\DataflashManager.c"></File><File path="Projects\TempDataLogger\Lib\DataflashManager.h"></File><File path="Projects\TempDataLogger\Lib\DS1307.c"></File><File path="Projects\TempDataLogger\Lib\DS1307.h"></File><File path="Projects\TempDataLogger\Lib\SCSI.c"></File><File path="Projects\TempDataLogger\Lib\SCSI.h"></File></Folder><Folder name="TempLogHostApp"><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.Designer.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.resx"></File><File path="Projects\TempDataLogger\TempLogHostApp\Program.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\TempLoggerHostApp.csproj"></File></Folder><File path="Projects\TempDataLogger\Descriptors.c"></File><File path="Projects\TempDataLogger\Descriptors.h"></File><File path="Projects\TempDataLogger\Doxygen.conf"></File><File path="Projects\TempDataLogger\makefile"></File><File path="Projects\TempDataLogger\TempDataLogger.c"></File><File path="Projects\TempDataLogger\TempDataLogger.h"></File><File path="Projects\TempDataLogger\TemperatureDataLogger.txt"></File><File path="Projects\TempDataLogger\TempDataLogger.aps"></File></Folder><Folder name="USBtoSerial"><File path="Projects\USBtoSerial\Descriptors.h"></File><File path="Projects\USBtoSerial\Doxygen.conf"></File><File path="Projects\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Projects\USBtoSerial\makefile"></File><File path="Projects\USBtoSerial\USBtoSerial.c"></File><File path="Projects\USBtoSerial\USBtoSerial.h"></File><File path="Projects\USBtoSerial\USBtoSerial.txt"></File><File path="Projects\USBtoSerial\USBtoSerial.aps"></File><File path="Projects\USBtoSerial\Descriptors.c"></File></Folder><Folder name="Webserver"><Folder name="Lib"><Folder name="uip"><File path="Projects\Webserver\Lib\uip\clock.c"></File><File path="Projects\Webserver\Lib\uip\clock.h"></File><File path="Projects\Webserver\Lib\uip\timer.c"></File><File path="Projects\Webserver\Lib\uip\timer.h"></File><File path="Projects\Webserver\Lib\uip\uip.c"></File><File path="Projects\Webserver\Lib\uip\uip.h"></File><File path="Projects\Webserver\Lib\uip\uip_arp.c"></File><File path="Projects\Webserver\Lib\uip\uip_arp.h"></File><File path="Projects\Webserver\Lib\uip\uipopt.h"></File><File path="Projects\Webserver\Lib\uip\uip-split.c"></File><File path="Projects\Webserver\Lib\uip\uip-split.h"></File></Folder><Folder name="FATFs"><File path="Projects\Webserver\Lib\FATFs\diskio.c"></File><File path="Projects\Webserver\Lib\FATFs\diskio.h"></File><File path="Projects\Webserver\Lib\FATFs\ff.c"></File><File path="Projects\Webserver\Lib\FATFs\ff.h"></File><File path="Projects\Webserver\Lib\FATFs\ffconf.h"></File><File path="Projects\Webserver\Lib\FATFs\integer.h"></File></Folder><File path="Projects\Webserver\Lib\DataflashManager.c"></File><File path="Projects\Webserver\Lib\DataflashManager.h"></File><File path="Projects\Webserver\Lib\uIPManagement.c"></File><File path="Projects\Webserver\Lib\uIPManagement.h"></File><File path="Projects\Webserver\Lib\HTTPServerApp.c"></File><File path="Projects\Webserver\Lib\HTTPServerApp.h"></File><File path="Projects\Webserver\Lib\SCSI.c"></File><File path="Projects\Webserver\Lib\SCSI.h"></File><File path="Projects\Webserver\Lib\TELNETServerApp.c"></File><File path="Projects\Webserver\Lib\TELNETServerApp.h"></File><File path="Projects\Webserver\Lib\DHCPClientApp.c"></File><File path="Projects\Webserver\Lib\DHCPClientApp.h"></File><File path="Projects\Webserver\Lib\DHCPCommon.h"></File><File path="Projects\Webserver\Lib\DHCPServerApp.c"></File><File path="Projects\Webserver\Lib\DHCPServerApp.h"></File><File path="Projects\Webserver\Lib\DHCPCommon.c"></File></Folder><File path="Projects\Webserver\makefile"></File><File path="Projects\Webserver\Webserver.c"></File><File path="Projects\Webserver\Webserver.h"></File><File path="Projects\Webserver\Doxygen.conf"></File><File path="Projects\Webserver\Webserver.txt"></File><File path="Projects\Webserver\Descriptors.c"></File><File path="Projects\Webserver\Descriptors.h"></File><File path="Projects\Webserver\USBHostMode.c"></File><File path="Projects\Webserver\USBHostMode.h"></File><File path="Projects\Webserver\USBDeviceMode.c"></File><File path="Projects\Webserver\USBDeviceMode.h"></File><File path="Projects\Webserver\Webserver.aps"></File><File path="Projects\Webserver\LUFA Webserver RNDIS.inf"></File></Folder><Folder name="XPLAINBridge"><Folder name="Lib"><File path="Projects\XPLAINBridge\Lib\SoftUART.c"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.h"></File></Folder><File path="Projects\XPLAINBridge\XPLAINBridge.txt"></File><File path="Projects\XPLAINBridge\XPLAINBridge.h"></File><File path="Projects\XPLAINBridge\XPLAINBridge.c"></File><File path="Projects\XPLAINBridge\XPLAINBridge.aps"></File><File path="Projects\XPLAINBridge\USARTDescriptors.h"></File><File path="Projects\XPLAINBridge\USARTDescriptors.c"></File><File path="Projects\XPLAINBridge\makefile"></File><File path="Projects\XPLAINBridge\LUFA XPLAIN Bridge.inf"></File><File path="Projects\XPLAINBridge\Doxygen.conf"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.h"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.c"></File></Folder><Folder name="Incomplete"><Folder name="StandaloneProgrammer"><Folder name="Lib"><Folder name="PetiteFATFs"><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\integer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\makefile"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.h"></File></Folder></Folder><File path="Projects\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
+<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="KeyboardMouseMultiReport"><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.aps"></File></Folder><Folder name="MassStorageKeyboard"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\makefile"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.txt"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.aps"></File></Folder><Folder name="VirtualSerialMassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\LUFA VirtualSerialMassStorage.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMassStorage\VirtualSerialMassStorage.aps"></File></Folder><Folder name="VirtualSerialMouse"><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\LUFA VirtualSerialMouse.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.aps"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\LowLevel\VirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.aps"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><Folder name="Lib"><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.h"></File></Folder><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File></Folder><Folder name="TestAndMeasurement"><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\makefile"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="JoystickHostWithParser"><File path="Demos\Host\ClassDriver\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\ClassDriver\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MIDIHost\makefile"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><File path="Demos\Host\ClassDriver\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\PrinterHost\makefile"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><File path="Demos\Host\ClassDriver\RNDISEthernetHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\makefile"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.c"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.h"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.txt"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.aps"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\ClassDriver\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\makefile"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.aps"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MIDIHost\makefile"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.h"></File></Folder><File path="Demos\Host\LowLevel\RNDISEthernetHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\makefile"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.h"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISHost.txt"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.aps"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\makefile"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="AndroidAccessoryHost"><File path="Demos\Host\Incomplete\AndroidAccessoryHost\AndroidAccessoryHost.c"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\AndroidAccessoryHost.h"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\DeviceDescriptor.h"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\Doxygen.conf"></File><File path="Demos\Host\Incomplete\AndroidAccessoryHost\makefile"></File></Folder><Folder name="AudioInputHost"><File path="Demos\Host\Incomplete\AudioInputHost\AudioInputHost.c"></File><File path="Demos\Host\Incomplete\AudioInputHost\AudioInputHost.h"></File><File path="Demos\Host\Incomplete\AudioInputHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\AudioInputHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\AudioInputHost\makefile"></File></Folder><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Doxygen.conf"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="DualRole"><Folder name="ClassDriver"><Folder name="MouseHostDevice"><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Doxygen.conf"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\makefile"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.txt"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.aps"></File></Folder><File path="Demos\DualRole\ClassDriver\makefile"></File></Folder><File path="Demos\DualRole\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\BoardTypes.h"></File><File path="LUFA\Common\Attributes.h"></File><File path="LUFA\Common\Architectures.h"></File><File path="LUFA\Common\Endianness.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="Core"><Folder name="AVR8"><Folder name="Template"><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\Core\AVR8\Device_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Device_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\Endpoint_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Endpoint_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\Host_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Host_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\OTG_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\Pipe_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\Pipe_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBController_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBController_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBInterrupt_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\USBInterrupt_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\EndpointStream_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\EndpointStream_AVR8.h"></File><File path="LUFA\Drivers\USB\Core\AVR8\PipeStream_AVR8.c"></File><File path="LUFA\Drivers\USB\Core\AVR8\PipeStream_AVR8.h"></File></Folder><Folder name="UC3"><Folder name="Template"><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\Core\UC3\Device_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Device_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\Endpoint_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Endpoint_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\Pipe_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Pipe_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\USBController_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\USBController_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\USBInterrupt_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\USBInterrupt_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\Host_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Host_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\EndpointStream_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\EndpointStream_UC3.h"></File><File path="LUFA\Drivers\USB\Core\UC3\PipeStream_UC3.c"></File><File path="LUFA\Drivers\USB\Core\UC3\PipeStream_UC3.h"></File></Folder><File path="LUFA\Drivers\USB\Core\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\Core\ConfigDescriptor.h"></File><File path="LUFA\Drivers\USB\Core\DeviceStandardReq.c"></File><File path="LUFA\Drivers\USB\Core\DeviceStandardReq.h"></File><File path="LUFA\Drivers\USB\Core\Events.c"></File><File path="LUFA\Drivers\USB\Core\Events.h"></File><File path="LUFA\Drivers\USB\Core\HostStandardReq.c"></File><File path="LUFA\Drivers\USB\Core\HostStandardReq.h"></File><File path="LUFA\Drivers\USB\Core\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\Core\StdRequestType.h"></File><File path="LUFA\Drivers\USB\Core\USBMode.h"></File><File path="LUFA\Drivers\USB\Core\USBTask.c"></File><File path="LUFA\Drivers\USB\Core\USBTask.h"></File><File path="LUFA\Drivers\USB\Core\Device.h"></File><File path="LUFA\Drivers\USB\Core\Endpoint.h"></File><File path="LUFA\Drivers\USB\Core\Host.h"></File><File path="LUFA\Drivers\USB\Core\Pipe.h"></File><File path="LUFA\Drivers\USB\Core\USBController.h"></File><File path="LUFA\Drivers\USB\Core\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\Core\OTG.h"></File><File path="LUFA\Drivers\USB\Core\EndpointStream.h"></File><File path="LUFA\Drivers\USB\Core\PipeStream.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Host\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.c"></File><File path="LUFA\Drivers\USB\Class\Host\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Host\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Host\Printer.c"></File><File path="LUFA\Drivers\USB\Class\Host\Printer.h"></File><File path="LUFA\Drivers\USB\Class\Host\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Host\RNDIS.c"></File></Folder><Folder name="Common"><File path="LUFA\Drivers\USB\Class\Common\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Common\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Common\HID.h"></File><File path="LUFA\Drivers\USB\Class\Common\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Common\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\Common\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Common\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Common\Printer.h"></File><File path="LUFA\Drivers\USB\Class\Common\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Common\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Common\HIDReportData.h"></File></Folder><File path="LUFA\Drivers\USB\Class\Audio.h"></File><File path="LUFA\Drivers\USB\Class\CDC.h"></File><File path="LUFA\Drivers\USB\Class\HID.h"></File><File path="LUFA\Drivers\USB\Class\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\MIDI.h"></File><File path="LUFA\Drivers\USB\Class\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\StillImage.h"></File><File path="LUFA\Drivers\USB\Class\Printer.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File><File path="LUFA\Drivers\Misc\RingBuffer.h"></File><File path="LUFA\Drivers\Misc\AT45DB321C.h"></File><File path="LUFA\Drivers\Misc\AT45DB642D.h"></File></Folder><Folder name="Board"><Folder name="AVR8"><Folder name="ADAFRUITU4"><File path="LUFA\Drivers\Board\AVR8\ADAFRUITU4\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\AVR8\ATAVRUSBRF01\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\ATAVRUSBRF01\LEDs.h"></File></Folder><Folder name="BENITO"><File path="LUFA\Drivers\Board\AVR8\BENITO\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\BENITO\LEDs.h"></File></Folder><Folder name="BLACKCAT"><File path="LUFA\Drivers\Board\AVR8\BLACKCAT\LEDs.h"></File></Folder><Folder name="BUI"><File path="LUFA\Drivers\Board\AVR8\BUI\LEDs.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\AVR8\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\BUMBLEB\LEDs.h"></File></Folder><Folder name="CULV3"><File path="LUFA\Drivers\Board\AVR8\CULV3\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\CULV3\LEDs.h"></File></Folder><Folder name="EVK527"><File path="LUFA\Drivers\Board\AVR8\EVK527\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\EVK527\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\EVK527\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\EVK527\LEDs.h"></File></Folder><Folder name="JMDBU2"><File path="LUFA\Drivers\Board\AVR8\JMDBU2\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\JMDBU2\LEDs.h"></File></Folder><Folder name="MAXIMUS"><File path="LUFA\Drivers\Board\AVR8\MAXIMUS\LEDs.h"></File></Folder><Folder name="MICROSIN162"><File path="LUFA\Drivers\Board\AVR8\MICROSIN162\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\MICROSIN162\LEDs.h"></File></Folder><Folder name="MINIMUS"><File path="LUFA\Drivers\Board\AVR8\MINIMUS\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\MINIMUS\LEDs.h"></File></Folder><Folder name="OLIMEX162"><File path="LUFA\Drivers\Board\AVR8\OLIMEX162\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\OLIMEX162\LEDs.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\AVR8\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="SPARKFUN8U2"><File path="LUFA\Drivers\Board\AVR8\SPARKFUN8U2\LEDs.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\AVR8\STK525\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\STK525\LEDs.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\AVR8\STK526\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\STK526\LEDs.h"></File></Folder><Folder name="TEENSY"><File path="LUFA\Drivers\Board\AVR8\TEENSY\LEDs.h"></File></Folder><Folder name="UDIP"><File path="LUFA\Drivers\Board\AVR8\UDIP\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\UDIP\LEDs.h"></File></Folder><Folder name="UNO"><File path="LUFA\Drivers\Board\AVR8\UNO\LEDs.h"></File></Folder><Folder name="USBFOO"><File path="LUFA\Drivers\Board\AVR8\USBFOO\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\USBFOO\LEDS.h"></File></Folder><Folder name="USBKEY"><File path="LUFA\Drivers\Board\AVR8\USBKEY\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\AVR8\USBKEY\LEDs.h"></File></Folder><Folder name="USBTINYMKII"><File path="LUFA\Drivers\Board\AVR8\USBTINYMKII\Buttons.h"></File><File path="LUFA\Drivers\Board\AVR8\USBTINYMKII\LEDs.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\AVR8\XPLAIN\Dataflash.h"></File><File path="LUFA\Drivers\Board\AVR8\XPLAIN\LEDs.h"></File></Folder></Folder><Folder name="UC3"><Folder name="EVK1101"><File path="LUFA\Drivers\Board\UC3\EVK1101\Buttons.h"></File><File path="LUFA\Drivers\Board\UC3\EVK1101\Joystick.h"></File><File path="LUFA\Drivers\Board\UC3\EVK1101\LEDs.h"></File></Folder></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="AVR8"><File path="LUFA\Drivers\Peripheral\AVR8\ADC_AVR8.h"></File><File path="LUFA\Drivers\Peripheral\AVR8\Serial_AVR8.c"></File><File path="LUFA\Drivers\Peripheral\AVR8\Serial_AVR8.h"></File><File path="LUFA\Drivers\Peripheral\AVR8\SPI_AVR8.h"></File><File path="LUFA\Drivers\Peripheral\AVR8\TWI_AVR8.c"></File><File path="LUFA\Drivers\Peripheral\AVR8\TWI_AVR8.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\TWI.h"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File></Folder></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File><File path="LUFA\ManPages\AlternativeStacks.txt"></File><File path="LUFA\ManPages\SoftwareBootloaderJump.txt"></File><File path="LUFA\ManPages\LicenseInfo.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><Folder name="CodeTemplates"><Folder name="DriverStubs"><File path="LUFA\CodeTemplates\DriverStubs\Buttons.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Dataflash.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Joystick.h"></File><File path="LUFA\CodeTemplates\DriverStubs\LEDs.h"></File></Folder><File path="LUFA\CodeTemplates\makefile_template.avr8"></File><File path="LUFA\CodeTemplates\makefile_template.uc3"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\License.txt"></File></Folder><Folder name="Bootloaders"><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><File path="Bootloaders\CDC\BootloaderCDC.aps"></File></Folder><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><File path="Bootloaders\DFU\BootloaderDFU.aps"></File></Folder><Folder name="HID"><Folder name="HostLoaderApp"><File path="Bootloaders\HID\HostLoaderApp\gpl3.txt"></File><File path="Bootloaders\HID\HostLoaderApp\Makefile"></File><File path="Bootloaders\HID\HostLoaderApp\Makefile.bsd"></File><File path="Bootloaders\HID\HostLoaderApp\hid_bootloader_cli.c"></File></Folder><File path="Bootloaders\HID\Descriptors.c"></File><File path="Bootloaders\HID\Descriptors.h"></File><File path="Bootloaders\HID\makefile"></File><File path="Bootloaders\HID\BootloaderHID.txt"></File><File path="Bootloaders\HID\BootloaderHID.c"></File><File path="Bootloaders\HID\BootloaderHID.h"></File><File path="Bootloaders\HID\Doxygen.conf"></File><File path="Bootloaders\HID\BootloaderHID.aps"></File></Folder><File path="Bootloaders\makefile"></File></Folder><Folder name="Projects"><Folder name="AVRISP-MKII"><Folder name="Lib"><Folder name="ISP"><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.h"></File></Folder><Folder name="XPROG"><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.h"></File></Folder><File path="Projects\AVRISP-MKII\Lib\V2Protocol.c"></File><File path="Projects\AVRISP-MKII\Lib\V2Protocol.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolConstants.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.c"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.h"></File></Folder><File path="Projects\AVRISP-MKII\Descriptors.c"></File><File path="Projects\AVRISP-MKII\Descriptors.h"></File><File path="Projects\AVRISP-MKII\Doxygen.conf"></File><File path="Projects\AVRISP-MKII\makefile"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.c"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.h"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.txt"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.aps"></File><File path="Projects\AVRISP-MKII\makefile.uc3"></File></Folder><Folder name="Benito"><File path="Projects\Benito\Benito.c"></File><File path="Projects\Benito\Benito.h"></File><File path="Projects\Benito\Descriptors.c"></File><File path="Projects\Benito\Descriptors.h"></File><File path="Projects\Benito\Doxygen.conf"></File><File path="Projects\Benito\makefile"></File><File path="Projects\Benito\Benito.txt"></File><File path="Projects\Benito\Benito Programmer.inf"></File><File path="Projects\Benito\Benito.aps"></File></Folder><Folder name="LEDNotifier"><Folder name="CPUUsageApp"><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.csproj"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.Designer.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.resx"></File><File path="Projects\LEDNotifier\CPUUsageApp\Program.cs"></File></Folder><Folder name="HotmailNotifierApp"><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.csproj"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.Designer.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.resx"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\Program.cs"></File></Folder><Folder name="LEDMixerApp"><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.csproj"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.Designer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.resx"></File><File path="Projects\LEDNotifier\LEDMixerApp\Program.cs"></File></Folder><File path="Projects\LEDNotifier\Descriptors.c"></File><File path="Projects\LEDNotifier\Descriptors.h"></File><File path="Projects\LEDNotifier\Doxygen.conf"></File><File path="Projects\LEDNotifier\LEDNotifier.c"></File><File path="Projects\LEDNotifier\LEDNotifier.h"></File><File path="Projects\LEDNotifier\LEDNotifier.txt"></File><File path="Projects\LEDNotifier\LUFA LED Notifier.inf"></File><File path="Projects\LEDNotifier\makefile"></File><File path="Projects\LEDNotifier\LEDNotifier.aps"></File></Folder><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\Magstripe.aps"></File></Folder><Folder name="MediaController"><File path="Projects\MediaController\Descriptors.c"></File><File path="Projects\MediaController\Descriptors.h"></File><File path="Projects\MediaController\Doxygen.conf"></File><File path="Projects\MediaController\makefile"></File><File path="Projects\MediaController\MediaController.c"></File><File path="Projects\MediaController\MediaController.h"></File><File path="Projects\MediaController\MediaController.txt"></File><File path="Projects\MediaController\MediaController.aps"></File></Folder><Folder name="MIDIToneGenerator"><File path="Projects\MIDIToneGenerator\Descriptors.c"></File><File path="Projects\MIDIToneGenerator\Descriptors.h"></File><File path="Projects\MIDIToneGenerator\makefile"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.c"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.h"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.txt"></File><File path="Projects\MIDIToneGenerator\MIDIToneGenerator.aps"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File><File path="Projects\MissileLauncher\MissileLauncher.aps"></File></Folder><Folder name="RelayBoard"><File path="Projects\RelayBoard\Descriptors.c"></File><File path="Projects\RelayBoard\Descriptors.h"></File><File path="Projects\RelayBoard\Doxygen.conf"></File><File path="Projects\RelayBoard\makefile"></File><File path="Projects\RelayBoard\RelayBoard.c"></File><File path="Projects\RelayBoard\RelayBoard.h"></File><File path="Projects\RelayBoard\RelayBoard.txt"></File><File path="Projects\RelayBoard\RelayBoard.aps"></File></Folder><Folder name="TempDataLogger"><Folder name="Lib"><Folder name="FATFs"><File path="Projects\TempDataLogger\Lib\FATFs\diskio.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\diskio.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ffconf.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\integer.h"></File></Folder><File path="Projects\TempDataLogger\Lib\DataflashManager.c"></File><File path="Projects\TempDataLogger\Lib\DataflashManager.h"></File><File path="Projects\TempDataLogger\Lib\DS1307.c"></File><File path="Projects\TempDataLogger\Lib\DS1307.h"></File><File path="Projects\TempDataLogger\Lib\SCSI.c"></File><File path="Projects\TempDataLogger\Lib\SCSI.h"></File></Folder><Folder name="TempLogHostApp"><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.Designer.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.resx"></File><File path="Projects\TempDataLogger\TempLogHostApp\Program.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\TempLoggerHostApp.csproj"></File></Folder><File path="Projects\TempDataLogger\Descriptors.c"></File><File path="Projects\TempDataLogger\Descriptors.h"></File><File path="Projects\TempDataLogger\Doxygen.conf"></File><File path="Projects\TempDataLogger\makefile"></File><File path="Projects\TempDataLogger\TempDataLogger.c"></File><File path="Projects\TempDataLogger\TempDataLogger.h"></File><File path="Projects\TempDataLogger\TemperatureDataLogger.txt"></File><File path="Projects\TempDataLogger\TempDataLogger.aps"></File></Folder><Folder name="USBtoSerial"><File path="Projects\USBtoSerial\Descriptors.h"></File><File path="Projects\USBtoSerial\Doxygen.conf"></File><File path="Projects\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Projects\USBtoSerial\makefile"></File><File path="Projects\USBtoSerial\USBtoSerial.c"></File><File path="Projects\USBtoSerial\USBtoSerial.h"></File><File path="Projects\USBtoSerial\USBtoSerial.txt"></File><File path="Projects\USBtoSerial\USBtoSerial.aps"></File><File path="Projects\USBtoSerial\Descriptors.c"></File></Folder><Folder name="Webserver"><Folder name="Lib"><Folder name="uip"><File path="Projects\Webserver\Lib\uip\clock.c"></File><File path="Projects\Webserver\Lib\uip\clock.h"></File><File path="Projects\Webserver\Lib\uip\timer.c"></File><File path="Projects\Webserver\Lib\uip\timer.h"></File><File path="Projects\Webserver\Lib\uip\uip.c"></File><File path="Projects\Webserver\Lib\uip\uip.h"></File><File path="Projects\Webserver\Lib\uip\uip_arp.c"></File><File path="Projects\Webserver\Lib\uip\uip_arp.h"></File><File path="Projects\Webserver\Lib\uip\uipopt.h"></File><File path="Projects\Webserver\Lib\uip\uip-split.c"></File><File path="Projects\Webserver\Lib\uip\uip-split.h"></File></Folder><Folder name="FATFs"><File path="Projects\Webserver\Lib\FATFs\diskio.c"></File><File path="Projects\Webserver\Lib\FATFs\diskio.h"></File><File path="Projects\Webserver\Lib\FATFs\ff.c"></File><File path="Projects\Webserver\Lib\FATFs\ff.h"></File><File path="Projects\Webserver\Lib\FATFs\ffconf.h"></File><File path="Projects\Webserver\Lib\FATFs\integer.h"></File></Folder><File path="Projects\Webserver\Lib\DataflashManager.c"></File><File path="Projects\Webserver\Lib\DataflashManager.h"></File><File path="Projects\Webserver\Lib\uIPManagement.c"></File><File path="Projects\Webserver\Lib\uIPManagement.h"></File><File path="Projects\Webserver\Lib\HTTPServerApp.c"></File><File path="Projects\Webserver\Lib\HTTPServerApp.h"></File><File path="Projects\Webserver\Lib\SCSI.c"></File><File path="Projects\Webserver\Lib\SCSI.h"></File><File path="Projects\Webserver\Lib\TELNETServerApp.c"></File><File path="Projects\Webserver\Lib\TELNETServerApp.h"></File><File path="Projects\Webserver\Lib\DHCPClientApp.c"></File><File path="Projects\Webserver\Lib\DHCPClientApp.h"></File><File path="Projects\Webserver\Lib\DHCPCommon.h"></File><File path="Projects\Webserver\Lib\DHCPServerApp.c"></File><File path="Projects\Webserver\Lib\DHCPServerApp.h"></File><File path="Projects\Webserver\Lib\DHCPCommon.c"></File></Folder><File path="Projects\Webserver\makefile"></File><File path="Projects\Webserver\Webserver.c"></File><File path="Projects\Webserver\Webserver.h"></File><File path="Projects\Webserver\Doxygen.conf"></File><File path="Projects\Webserver\Webserver.txt"></File><File path="Projects\Webserver\Descriptors.c"></File><File path="Projects\Webserver\Descriptors.h"></File><File path="Projects\Webserver\USBHostMode.c"></File><File path="Projects\Webserver\USBHostMode.h"></File><File path="Projects\Webserver\USBDeviceMode.c"></File><File path="Projects\Webserver\USBDeviceMode.h"></File><File path="Projects\Webserver\Webserver.aps"></File><File path="Projects\Webserver\LUFA Webserver RNDIS.inf"></File></Folder><Folder name="XPLAINBridge"><Folder name="Lib"><File path="Projects\XPLAINBridge\Lib\SoftUART.c"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.h"></File></Folder><File path="Projects\XPLAINBridge\XPLAINBridge.txt"></File><File path="Projects\XPLAINBridge\XPLAINBridge.h"></File><File path="Projects\XPLAINBridge\XPLAINBridge.c"></File><File path="Projects\XPLAINBridge\XPLAINBridge.aps"></File><File path="Projects\XPLAINBridge\USARTDescriptors.h"></File><File path="Projects\XPLAINBridge\USARTDescriptors.c"></File><File path="Projects\XPLAINBridge\makefile"></File><File path="Projects\XPLAINBridge\LUFA XPLAIN Bridge.inf"></File><File path="Projects\XPLAINBridge\Doxygen.conf"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.h"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.c"></File></Folder><Folder name="Incomplete"><Folder name="StandaloneProgrammer"><Folder name="Lib"><Folder name="PetiteFATFs"><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\integer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\makefile"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.h"></File></Folder></Folder><File path="Projects\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
index c838411..713c96f 100644 (file)
                 *
                 *  \param[in] freq  Required audio sampling frequency in HZ
                 */
-               #define AUDIO_SAMPLE_FREQ(freq)           {.Byte1 = (freq & 0x0000FF), .Byte2 = ((freq >> 8) & 0xFF), .Byte3 = ((freq >> 16) & 0xFF)}
+               #define AUDIO_SAMPLE_FREQ(freq)           {.Byte1 = ((uint32_t)freq & 0x0000FF), .Byte2 = (((uint32_t)freq >> 8) & 0xFF), .Byte3 = (((uint32_t)freq >> 16) & 0xFF)}
 
                /** Mask for the attributes parameter of an Audio class-specific Endpoint descriptor, indicating that the endpoint
                 *  accepts only filled endpoint packets of audio samples.
                 *  will accept partially filled endpoint packets of audio samples.
                 */
                #define AUDIO_EP_ACCEPTS_SMALL_PACKETS    (0 << 7)
-
+               
        /* Enums: */
                /** Enum for possible Class, Subclass and Protocol values of device and interface descriptors relating to the Audio
                 *  device class.
                        AUDIO_DSUBTYPE_CSEndpoint_General         = 0x01, /**< Audio class specific endpoint general descriptor. */
                };
 
+               /** Enum for the Audio class specific control requests that can be issued by the USB bus host. */
+               enum Audio_ClassRequests_t
+               {
+                       AUDIO_REQ_SetCurrent    = 0x01, /**< Audio class-specific request to set the current value of a parameter within the device. */
+                       AUDIO_REQ_SetMinimum    = 0x02, /**< Audio class-specific request to set the minimum value of a parameter within the device. */
+                       AUDIO_REQ_SetMaximum    = 0x03, /**< Audio class-specific request to set the maximum value of a parameter within the device. */
+                       AUDIO_REQ_SetResolution = 0x04, /**< Audio class-specific request to set the resolution value of a parameter within the device. */
+                       AUDIO_REQ_SetMemory     = 0x05, /**< Audio class-specific request to set the memory value of a parameter within the device. */
+                       AUDIO_REQ_GetCurrent    = 0x81, /**< Audio class-specific request to get the current value of a parameter within the device. */
+                       AUDIO_REQ_GetMinimum    = 0x82, /**< Audio class-specific request to get the minimum value of a parameter within the device. */
+                       AUDIO_REQ_GetMaximum    = 0x83, /**< Audio class-specific request to get the maximum value of a parameter within the device. */
+                       AUDIO_REQ_GetResolution = 0x84, /**< Audio class-specific request to get the resolution value of a parameter within the device. */
+                       AUDIO_REQ_GetMemory     = 0x85, /**< Audio class-specific request to get the memory value of a parameter within the device. */
+                       AUDIO_REQ_GetStatus     = 0xFF, /**< Audio class-specific request to get the device status. */
+               };
+
        /* Type Defines: */
                /** \brief Audio class-specific Input Terminal Descriptor (LUFA naming conventions).
                 *
index f18db74..8c5c996 100644 (file)
@@ -57,6 +57,13 @@ void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const Audi
                        }
 
                        break;
+               case AUDIO_REQ_GetStatus:
+                       if ((USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) ||
+                           (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT)))
+                       {
+                               Endpoint_ClearSETUP();
+                               Endpoint_ClearStatusStage();
+                       }
        }
 }
 
index f619983..4fe3041 100644 (file)
   *   - Added USE_LUFA_CONFIG_HEADER compile time option to include a LUFAConfig.h header in the user director for LUFA configuration
   *     tokens as an alternative to tokens defined in the project makefile
   *   - Added new USB_Host_SetInterfaceAltSetting() convenience function for the selection of an interface's alternative setting
+  *   - Added Audio class control request definitions
   *  - Library Applications:
+  *   - Added RNDIS device mode to the Webserver project
   *   - Added new MediaControl project
   *   - Added new incomplete AndroidAccessoryHost Host LowLevel demo
-  *   - Added RNDIS device mode to the Webserver project
+  *   - Added new incomplete AudioInputHost Host LowLevel demo
   *
   *  <b>Changed:</b>
   *  - Core:
-  *   - <i>None</i>
+  *   - Added support for the Audio class GET STATUS request so that it is correctly ACKed when sent by the host
   *  - Library Applications:
   *   - <i>None</i>
   *
index 4e16d3a..154f862 100644 (file)
   *  - Demos/Projects
   *      -# Device/Host USB bridge
   *      -# Alternative (USB-IF endorsed) USB-CDC Ethernet Class
-  *      -# Finish Test and Measurement Class demo
-  *      -# Finish BluetoothHost demo
-  *      -# Finish SideShow demo
-  *      -# Finish StandaloneProgrammer project
-  *      -# Arduino Uno compatible USB-MIDI, USB-HID
+  *      -# Finish incomplete demos and projects
+  *      -# Add class driver support for Audio Host class
+  *      -# Add class driver support for Test and Measurement class
+  *      -# Fix up Audio class support - add support for mixers, etc., add support for GET/SET commands
   *  - Ports
   *      -# Atmel ARM7 series microcontrollers
   *      -# Other (commercial) C compilers
index 654ce54..d774b11 100644 (file)
@@ -45,14 +45,14 @@ int main(void)
        V2Protocol_Init();
 
        LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
-       sei();
-
+       GlobalInterruptEnable();
+       
        for (;;)
        {
                #if (BOARD == BOARD_USBTINYMKII)
-               /* On the USBTINY-MKII target, there is a secondary LED which indicates the current selected power
-                  mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */
-               LEDs_ChangeLEDs(LEDMASK_VBUSPOWER, (PIND & (1 << 0)) ? 0 : LEDMASK_VBUSPOWER);
+                       /* On the USBTINY-MKII board target, there is a secondary LED which indicates the current selected
+                          power mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */
+                       LEDs_ChangeLEDs(LEDS_LED3, (PIND & (1 << 0)) ? 0 : LEDS_LED3);
                #endif
 
                AVRISP_Task();
@@ -63,13 +63,35 @@ int main(void)
 /** Configures the board hardware and chip peripherals for the demo's functionality. */
 void SetupHardware(void)
 {
-       /* Disable watchdog if enabled by bootloader/fuses */
-       MCUSR &= ~(1 << WDRF);
-       wdt_disable();
-
-       /* Disable clock division */
-       clock_prescale_set(clock_div_1);
-
+       #if (ARCH == ARCH_AVR8)
+               /* Disable watchdog if enabled by bootloader/fuses */
+               MCUSR &= ~(1 << WDRF);
+               wdt_disable();
+
+               /* Disable clock division */
+               clock_prescale_set(clock_div_1);
+       #elif (ARCH == ARCH_UC3)
+               /* Select slow startup, external high frequency crystal attached to OSC0 */
+               AVR32_PM.OSCCTRL0.mode    = 7;
+               AVR32_PM.OSCCTRL0.startup = 6;
+               AVR32_PM.MCCTRL.osc0en    = true;
+               while (!(AVR32_PM.POSCSR.osc0rdy));
+
+               /* Switch CPU core to use OSC0 as the system clock */
+               AVR32_PM.MCCTRL.mcsel     = 1;
+
+               /* Start PLL1 to feed into the USB generic clock module */
+               AVR32_PM.PLL[1].pllmul    = (F_USB / F_CPU) ? (((F_USB / F_CPU) - 1) / 2) : 0;
+               AVR32_PM.PLL[1].plldiv    = 0;
+               AVR32_PM.PLL[1].pllosc    = 0;  
+               AVR32_PM.PLL[1].pllen     = true;
+               while (!(AVR32_PM.POSCSR.lock1));
+       
+               /* Configure interrupt management peripheral */
+//             INTC_Init();
+               INTC_RegisterGroupHandler(AVR32_USBB_IRQ, AVR32_INTC_INT0, USB_GEN_vect);       
+       #endif
+       
        /* Hardware Initialization */
        LEDs_Init();
        USB_Init();
index 2650b49..5a0d091 100644 (file)
 #define _AVRISP_H_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <avr/wdt.h>
-               #include <avr/interrupt.h>
-               #include <avr/power.h>
-
+               #include <LUFA/Common/Common.h>
                #include <LUFA/Version.h>
                #include <LUFA/Drivers/Board/LEDs.h>
                #include <LUFA/Drivers/USB/USB.h>
                        #include <LUFA/Drivers/Peripheral/ADC.h>
                #endif
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+                       #include <avr/wdt.h>
+                       #include <avr/interrupt.h>
+                       #include <avr/power.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>
+
+                       #include <LUFA/Platform/UC3/INTC_UC3.h> // TODO: FIXME
+               #endif
+
                #include "Descriptors.h"
                #include "Lib/V2Protocol.h"
 
@@ -69,9 +76,6 @@
                /** LED mask for the library LED driver, to indicate that the USB interface is busy. */
                #define LEDMASK_BUSY             (LEDS_LED1 | LEDS_LED2)
 
-               /** LED mask for the library LED driver, to indicate that the target is being powered by VBUS. */
-               #define LEDMASK_VBUSPOWER         LEDS_LED3
-
        /* Function Prototypes: */
                void SetupHardware(void);
                void AVRISP_Task(void);
index a84b75f..9889820 100644 (file)
@@ -53,8 +53,8 @@ const USB_Descriptor_Device_t PROGMEM DeviceDescriptor =
 
        .Endpoint0Size          = FIXED_CONTROL_ENDPOINT_SIZE,
 
-       .VendorID               = 0x03EB,
-       .ProductID              = 0x2104,
+       .VendorID               = CPU_TO_LE16(0x03EB),
+       .ProductID              = CPU_TO_LE16(0x2104),
        .ReleaseNumber          = VERSION_BCD(02.00),
 
        .ManufacturerStrIndex   = 0x01,
@@ -75,7 +75,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration},
 
-                       .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t),
+                       .TotalConfigurationSize = CPU_TO_LE16(sizeof(USB_Descriptor_Configuration_t)),
                        .TotalInterfaces        = 1,
 
                        .ConfigurationNumber    = 1,
@@ -108,7 +108,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
                        .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | AVRISP_DATA_IN_EPNUM),
                        .Attributes             = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
-                       .EndpointSize           = AVRISP_DATA_EPSIZE,
+                       .EndpointSize           = CPU_TO_LE16(AVRISP_DATA_EPSIZE),
                        .PollingIntervalMS      = 0x0A
                },
 
@@ -118,7 +118,7 @@ const USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
                        .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | AVRISP_DATA_OUT_EPNUM),
                        .Attributes             = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
-                       .EndpointSize           = AVRISP_DATA_EPSIZE,
+                       .EndpointSize           = CPU_TO_LE16(AVRISP_DATA_EPSIZE),
                        .PollingIntervalMS      = 0x0A
                },
 };
@@ -142,7 +142,17 @@ const USB_Descriptor_String_t PROGMEM ManufacturerString =
 {
        .Header                 = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String},
 
-       .UnicodeString          = L"Dean Camera"
+       .UnicodeString          = {CPU_TO_LE16('D'),
+                                  CPU_TO_LE16('e'), 
+                                  CPU_TO_LE16('a'), 
+                                  CPU_TO_LE16('n'), 
+                                  CPU_TO_LE16(' '), 
+                                  CPU_TO_LE16('C'), 
+                                  CPU_TO_LE16('a'), 
+                                  CPU_TO_LE16('m'), 
+                                  CPU_TO_LE16('e'), 
+                                  CPU_TO_LE16('r'), 
+                                  CPU_TO_LE16('a')}
 };
 
 /** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
@@ -153,7 +163,28 @@ const USB_Descriptor_String_t PROGMEM ProductString =
 {
        .Header                 = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String},
 
-       .UnicodeString          = L"LUFA AVRISP MkII Clone"
+       .UnicodeString          = {CPU_TO_LE16('L'), 
+                                  CPU_TO_LE16('U'), 
+                                  CPU_TO_LE16('F'), 
+                                  CPU_TO_LE16('A'), 
+                                  CPU_TO_LE16(' '), 
+                                  CPU_TO_LE16('A'), 
+                                  CPU_TO_LE16('V'), 
+                                  CPU_TO_LE16('R'), 
+                                  CPU_TO_LE16('I'), 
+                                  CPU_TO_LE16('S'), 
+                                  CPU_TO_LE16('P'), 
+                                  CPU_TO_LE16(' '), 
+                                  CPU_TO_LE16('M'), 
+                                  CPU_TO_LE16('k'), 
+                                  CPU_TO_LE16('I'), 
+                                  CPU_TO_LE16('I'), 
+                                  CPU_TO_LE16(' '), 
+                                  CPU_TO_LE16('C'), 
+                                  CPU_TO_LE16('l'), 
+                                  CPU_TO_LE16('o'), 
+                                  CPU_TO_LE16('n'), 
+                                  CPU_TO_LE16('e')}
 };
 
 /** Serial number string. This is a Unicode string containing the device's unique serial number, expressed as a
@@ -163,7 +194,19 @@ const USB_Descriptor_String_t PROGMEM SerialString =
 {
        .Header                 = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String},
 
-       .UnicodeString          = L"0000A00128255"
+       .UnicodeString          = {CPU_TO_LE16('0'), 
+                                  CPU_TO_LE16('0'), 
+                                  CPU_TO_LE16('0'), 
+                                  CPU_TO_LE16('0'), 
+                                  CPU_TO_LE16('A'), 
+                                  CPU_TO_LE16('0'), 
+                                  CPU_TO_LE16('0'), 
+                                  CPU_TO_LE16('1'), 
+                                  CPU_TO_LE16('2'), 
+                                  CPU_TO_LE16('8'), 
+                                  CPU_TO_LE16('2'), 
+                                  CPU_TO_LE16('5'), 
+                                  CPU_TO_LE16('5')}
 };
 
 /** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
index ca68fd5..c831cff 100644 (file)
 #define _DESCRIPTORS_H_
 
        /* Includes: */
-               #include <avr/pgmspace.h>
-
+               #include <LUFA/Common/Common.h>
                #include <LUFA/Drivers/USB/USB.h>
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/pgmspace.h>
+               #endif
+
        /* Macros: */
+               #if (ARCH == ARCH_UC3) // TODO: FIXME
+                       #define PROGMEM const
+               #endif
+       
                #if !defined(LIBUSB_DRIVER_COMPAT)
                        /** Endpoint number of the AVRISP data OUT endpoint. */
                        #define AVRISP_DATA_OUT_EPNUM      2
@@ -70,7 +77,7 @@
                        USB_Descriptor_Interface_t               AVRISP_Interface;
                        USB_Descriptor_Endpoint_t                AVRISP_DataInEndpoint;
                        USB_Descriptor_Endpoint_t                AVRISP_DataOutEndpoint;
-               } USB_Descriptor_Configuration_t;
+               } ATTR_PACKED USB_Descriptor_Configuration_t;
 
        /* Function Prototypes: */
                uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
index ccd31f3..2e31c18 100644 (file)
@@ -52,7 +52,7 @@ void ISPProtocol_EnterISPMode(void)
                uint8_t PollValue;
                uint8_t PollIndex;
                uint8_t EnterProgBytes[4];
-       } Enter_ISP_Params;
+       } ATTR_PACKED Enter_ISP_Params;
 
        Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NULL);
 
@@ -107,7 +107,7 @@ void ISPProtocol_LeaveISPMode(void)
        {
                uint8_t PreDelayMS;
                uint8_t PostDelayMS;
-       } Leave_ISP_Params;
+       } ATTR_PACKED Leave_ISP_Params;
 
        Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NULL);
 
@@ -141,12 +141,12 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
                uint8_t  ProgrammingCommands[3];
                uint8_t  PollValue1;
                uint8_t  PollValue2;
-               uint8_t  ProgData[256]; // Note, the Jungo driver has a very short ACK timeout period, need to buffer the
-       } Write_Memory_Params;      // whole page and ACK the packet as fast as possible to prevent it from aborting
+               uint8_t  ProgData[256];        // Note, the Jungo driver has a very short ACK timeout period, need to buffer the
+       } ATTR_PACKED Write_Memory_Params; // whole page and ACK the packet as fast as possible to prevent it from aborting
 
        Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) -
                                                       sizeof(Write_Memory_Params.ProgData)), NULL);
-       Write_Memory_Params.BytesToWrite = SwapEndian_16(Write_Memory_Params.BytesToWrite);
+       Write_Memory_Params.BytesToWrite = be16_to_cpu(Write_Memory_Params.BytesToWrite);
        
        if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))
        {
@@ -286,10 +286,10 @@ void ISPProtocol_ReadMemory(uint8_t V2Command)
        {
                uint16_t BytesToRead;
                uint8_t  ReadMemoryCommand;
-       } Read_Memory_Params;
+       } ATTR_PACKED Read_Memory_Params;
 
        Endpoint_Read_Stream_LE(&Read_Memory_Params, sizeof(Read_Memory_Params), NULL);
-       Read_Memory_Params.BytesToRead = SwapEndian_16(Read_Memory_Params.BytesToRead);
+       Read_Memory_Params.BytesToRead = be16_to_cpu(Read_Memory_Params.BytesToRead);
        
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -360,7 +360,7 @@ void ISPProtocol_ChipErase(void)
                uint8_t EraseDelayMS;
                uint8_t PollMethod;
                uint8_t EraseCommandBytes[4];
-       } Erase_Chip_Params;
+       } ATTR_PACKED Erase_Chip_Params;
 
        Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NULL);
 
@@ -396,7 +396,7 @@ void ISPProtocol_ReadFuseLockSigOSCCAL(uint8_t V2Command)
        {
                uint8_t RetByte;
                uint8_t ReadCommandBytes[4];
-       } Read_FuseLockSigOSCCAL_Params;
+       } ATTR_PACKED Read_FuseLockSigOSCCAL_Params;
 
        Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NULL);
 
@@ -427,7 +427,7 @@ void ISPProtocol_WriteFuseLock(uint8_t V2Command)
        struct
        {
                uint8_t WriteCommandBytes[4];
-       } Write_FuseLockSig_Params;
+       } ATTR_PACKED Write_FuseLockSig_Params;
 
        Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NULL);
 
@@ -454,7 +454,7 @@ void ISPProtocol_SPIMulti(void)
                uint8_t RxBytes;
                uint8_t RxStartAddr;
                uint8_t TxData[255];
-       } SPI_Multi_Params;
+       } ATTR_PACKED SPI_Multi_Params;
 
        Endpoint_Read_Stream_LE(&SPI_Multi_Params, (sizeof(SPI_Multi_Params) - sizeof(SPI_Multi_Params.TxData)), NULL);
        Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NULL);
index 213ce5c..8b08619 100644 (file)
 #define _ISP_PROTOCOL_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <util/delay.h>
-
+               #include <LUFA/Common/Common.h>
                #include <LUFA/Drivers/USB/USB.h>
+               
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>                   
+               #endif
 
                #include "../V2Protocol.h"
 
index 057aa7a..e183dee 100644 (file)
 #define _ISP_TARGET_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <avr/pgmspace.h>
-               #include <util/delay.h>
-
+               #include <LUFA/Common/Common.h>
                #include <LUFA/Drivers/USB/USB.h>
-               #include <LUFA/Drivers/Peripheral/SPI.h>
+               
+               #if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
+                       #include <LUFA/Drivers/Peripheral/SPI.h> // TODO: FIXME
+               #endif
+               
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+                       #include <avr/pgmspace.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>                   
+               #endif
 
                #include "../V2ProtocolParams.h"
 
@@ -84,6 +91,7 @@
                                                      const uint8_t ReadMemCommand);
 
        /* Inline Functions: */
+               #if defined(ENABLE_ISP_PROTOCOL) || defined(__DOXYGEN__)
                /** Sends a byte of ISP data to the attached target, using the appropriate SPI hardware or
                 *  software routines depending on the selected ISP speed.
                 *
                        else
                          return ISPTarget_TransferSoftSPIByte(Byte);
                }
+               #endif
 
 #endif
 
index f763d63..a955a95 100644 (file)
@@ -42,13 +42,17 @@ uint32_t CurrentAddress;
 /** Flag to indicate that the next read/write operation must update the device's current extended FLASH address */
 bool MustLoadExtendedAddress;
 
+/** Command timeout expiration flag. */
+volatile bool TimeoutExpired;
 
+#if (ARCH == ARCH_AVR8) // TODO: FIXME
 /** ISR to manage timeouts whilst processing a V2Protocol command */
 ISR(WDT_vect, ISR_BLOCK)
 {
        TimeoutExpired = true;
        wdt_disable();
 }
+#endif
 
 /** Initialises the hardware and software associated with the V2 protocol command handling. */
 void V2Protocol_Init(void)
@@ -75,10 +79,12 @@ void V2Protocol_ProcessCommand(void)
 {
        uint8_t V2Command = Endpoint_Read_8();
 
+       #if (ARCH == ARCH_AVR8) // TODO: FIXME
        /* Start the watchdog with timeout interrupt enabled to manage the timeout */
        TimeoutExpired = false;
        wdt_enable(WDTO_1S);
        WDTCSR |= (1 << WDIE);
+       #endif
 
        switch (V2Command)
        {
@@ -140,8 +146,10 @@ void V2Protocol_ProcessCommand(void)
                        break;
        }
 
+       #if (ARCH == ARCH_AVR8) // TODO: FIXME
        /* Disable the timeout management watchdog timer */
        wdt_disable();
+       #endif
 
        Endpoint_WaitUntilReady();
        Endpoint_SelectEndpoint(AVRISP_DATA_OUT_EPNUM);
index 8e9e6ff..c2f0ee0 100644 (file)
 #define _V2_PROTOCOL_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <avr/interrupt.h>
-               #include <avr/wdt.h>
-       
+               #include <LUFA/Common/Common.h>
                #include <LUFA/Drivers/USB/USB.h>
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+                       #include <avr/interrupt.h>
+                       #include <avr/wdt.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>
+               #endif
+               
                #include "../Descriptors.h"
                #include "V2ProtocolConstants.h"
                #include "V2ProtocolParams.h"
                /** Timeout period for each issued command from the host before it is aborted (in 10ms ticks). */
                #define COMMAND_TIMEOUT_TICKS      100
 
-               /** Command timeout expiration flag, GPIOR for speed. */
-               #define TimeoutExpired             GPIOR1
-
                /** MUX mask for the VTARGET ADC channel number. */
                #define VTARGET_ADC_CHANNEL_MASK   ADC_GET_CHANNEL_MASK(VTARGET_ADC_CHANNEL)
 
        /* External Variables: */
-               extern uint32_t CurrentAddress;
-               extern bool     MustLoadExtendedAddress;
+               extern uint32_t      CurrentAddress;
+               extern bool          MustLoadExtendedAddress;
+               extern volatile bool TimeoutExpired;
 
        /* Function Prototypes: */
                void V2Protocol_Init(void);
index 716e5fa..f4fad5e 100644 (file)
@@ -73,6 +73,7 @@
                #define STATUS_CONN_FAIL_SCK        0x04
                #define STATUS_TGT_NOT_DETECTED     0x10
                #define STATUS_TGT_REVERSE_INSERTED 0x20
+               #define STATUS_ANSWER_CKSUM_ERROR       0xB0
 
                #define PARAM_BUILD_NUMBER_LOW      0x80
                #define PARAM_BUILD_NUMBER_HIGH     0x81
index 3c1a881..6342d75 100644 (file)
@@ -37,7 +37,7 @@
 #include "V2ProtocolParams.h"
 
 /* Non-Volatile Parameter Values for EEPROM storage */
-static uint8_t EEMEM EEPROM_Rest_Polarity = 0x00;
+static uint8_t EEMEM EEPROM_Reset_Polarity = 0x00;
 
 /* Volatile Parameter Values for RAM storage */
 static ParameterItem_t ParameterTable[] =
@@ -88,7 +88,7 @@ static ParameterItem_t ParameterTable[] =
 void V2Params_LoadNonVolatileParamValues(void)
 {
        /* Target RESET line polarity is a non-volatile value, retrieve current parameter value from EEPROM */
-       V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Rest_Polarity);
+       V2Params_GetParamFromTable(PARAM_RESET_POLARITY)->ParamValue = eeprom_read_byte(&EEPROM_Reset_Polarity);
 }
 
 /** Updates any parameter values that are sourced from hardware rather than explicitly set by the host, such as
@@ -163,7 +163,7 @@ void V2Params_SetParameterValue(const uint8_t ParamID,
 
        /* The target RESET line polarity is a non-volatile parameter, save to EEPROM when changed */
        if (ParamID == PARAM_RESET_POLARITY)
-         eeprom_update_byte(&EEPROM_Rest_Polarity, Value);
+         eeprom_update_byte(&EEPROM_Reset_Polarity, Value);
 }
 
 /** Retrieves a parameter entry (including ID, value and privileges) from the parameter table that matches the given
index f4479d3..4ef091c 100644 (file)
 #define _V2_PROTOCOL_PARAMS_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <avr/eeprom.h>
-
+               #include <LUFA/Common/Common.h>
                #include <LUFA/Version.h>
 
                #if defined(ADC)
                        #include <LUFA/Drivers/Peripheral/ADC.h>
                #endif
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+                       #include <avr/eeprom.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>           
+               #endif
+
                #include "V2Protocol.h"
                #include "V2ProtocolConstants.h"
                #include "ISP/ISPTarget.h"
 
                /** Total number of parameters in the parameter table */
                #define TABLE_PARAM_COUNT   (sizeof(ParameterTable) / sizeof(ParameterTable[0]))
+               
+               #if (ARCH == ARCH_UC3) // TODO: FIXME
+                       #define EEMEM
+                       #define eeprom_read_byte(x) *x
+                       #define eeprom_update_byte(x,y) *x=y
+               #endif
 
        /* Type Defines: */
                /** Type define for a parameter table entry indicating a PC readable or writable device parameter. */
index b2b37e9..0893415 100644 (file)
 #define _TINY_NVM_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <avr/interrupt.h>
-               #include <stdbool.h>
-
                #include <LUFA/Common/Common.h>
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+                       #include <avr/interrupt.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>                   
+               #endif
+               
+               #include <stdbool.h>
+
                #include "XPROGProtocol.h"
                #include "XPROGTarget.h"
 
index 48fa8eb..11f7932 100644 (file)
 #define _XMEGA_NVM_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <avr/interrupt.h>
-               #include <stdbool.h>
-
                #include <LUFA/Common/Common.h>
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+                       #include <avr/interrupt.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>                   
+               #endif
+               
+               #include <stdbool.h>
+
                #include "XPROGProtocol.h"
                #include "XPROGTarget.h"
 
index 72cc536..778a7df 100644 (file)
@@ -60,7 +60,7 @@ void XPROGProtocol_SetMode(void)
        struct
        {
                uint8_t Protocol;
-       } SetMode_XPROG_Params;
+       } ATTR_PACKED SetMode_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&SetMode_XPROG_Params, sizeof(SetMode_XPROG_Params), NULL);
 
@@ -163,10 +163,10 @@ static void XPROGProtocol_Erase(void)
        {
                uint8_t  MemoryType;
                uint32_t Address;
-       } Erase_XPROG_Params;
+       } ATTR_PACKED Erase_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&Erase_XPROG_Params, sizeof(Erase_XPROG_Params), NULL);
-       Erase_XPROG_Params.Address = SwapEndian_32(Erase_XPROG_Params.Address);
+       Erase_XPROG_Params.Address = be32_to_cpu(Erase_XPROG_Params.Address);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -242,12 +242,12 @@ static void XPROGProtocol_WriteMemory(void)
                uint32_t Address;
                uint16_t Length;
                uint8_t  ProgData[256];
-       } WriteMemory_XPROG_Params;
+       } ATTR_PACKED WriteMemory_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params, (sizeof(WriteMemory_XPROG_Params) -
                                                            sizeof(WriteMemory_XPROG_Params).ProgData), NULL);
-       WriteMemory_XPROG_Params.Address = SwapEndian_32(WriteMemory_XPROG_Params.Address);
-       WriteMemory_XPROG_Params.Length  = SwapEndian_16(WriteMemory_XPROG_Params.Length);
+       WriteMemory_XPROG_Params.Address = be32_to_cpu(WriteMemory_XPROG_Params.Address);
+       WriteMemory_XPROG_Params.Length  = be16_to_cpu(WriteMemory_XPROG_Params.Length);
        Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params.ProgData, WriteMemory_XPROG_Params.Length, NULL);
 
        // The driver will terminate transfers that are a round multiple of the endpoint bank in size with a ZLP, need
@@ -335,11 +335,11 @@ static void XPROGProtocol_ReadMemory(void)
                uint8_t  MemoryType;
                uint32_t Address;
                uint16_t Length;
-       } ReadMemory_XPROG_Params;
+       } ATTR_PACKED ReadMemory_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&ReadMemory_XPROG_Params, sizeof(ReadMemory_XPROG_Params), NULL);
-       ReadMemory_XPROG_Params.Address = SwapEndian_32(ReadMemory_XPROG_Params.Address);
-       ReadMemory_XPROG_Params.Length  = SwapEndian_16(ReadMemory_XPROG_Params.Length);
+       ReadMemory_XPROG_Params.Address = be32_to_cpu(ReadMemory_XPROG_Params.Address);
+       ReadMemory_XPROG_Params.Length  = be16_to_cpu(ReadMemory_XPROG_Params.Length);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -380,7 +380,7 @@ static void XPROGProtocol_ReadCRC(void)
        struct
        {
                uint8_t CRCType;
-       } ReadCRC_XPROG_Params;
+       } ATTR_PACKED ReadCRC_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&ReadCRC_XPROG_Params, sizeof(ReadCRC_XPROG_Params), NULL);
 
index d637c79..9c7986e 100644 (file)
 #define _XPROG_PROTOCOL_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <util/delay.h>
-               #include <stdio.h>
-
+               #include <LUFA/Common/Common.h>
                #include <LUFA/Drivers/USB/USB.h>
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>                   
+               #endif
+               
+               #include <stdbool.h>
+               #include <stdio.h>
+
                #include "../V2Protocol.h"
                #include "XMEGANVM.h"
                #include "TINYNVM.h"
index 0a2dee7..70e49f7 100644 (file)
@@ -46,18 +46,22 @@ void XPROGTarget_EnableTargetPDI(void)
 {
        IsSending = false;
 
-       /* Set Tx and XCK as outputs, Rx as input */
-       DDRD |=  (1 << 5) | (1 << 3);
-       DDRD &= ~(1 << 2);
-
-       /* Set DATA line high for at least 90ns to disable /RESET functionality */
-       PORTD |= (1 << 3);
-       _delay_us(1);
-
-       /* Set up the synchronous USART for XMEGA communications - 8 data bits, even parity, 2 stop bits */
-       UBRR1  = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1);
-       UCSR1B = (1 << TXEN1);
-       UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
+       #if (ARCH == ARCH_AVR8)
+               /* Set Tx and XCK as outputs, Rx as input */
+               DDRD |=  (1 << 5) | (1 << 3);
+               DDRD &= ~(1 << 2);
+
+               /* Set DATA line high for at least 90ns to disable /RESET functionality */
+               PORTD |= (1 << 3);
+               Delay_MS(1);
+
+               /* Set up the synchronous USART for XMEGA communications - 8 data bits, even parity, 2 stop bits */
+               UBRR1  = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1);
+               UCSR1B = (1 << TXEN1);
+               UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 
        /* Send two IDLEs of 12 bits each to enable PDI interface (need at least 16 idle bits) */
        XPROGTarget_SendIdle();
@@ -69,19 +73,23 @@ void XPROGTarget_EnableTargetTPI(void)
 {
        IsSending = false;
 
-       /* Set /RESET line low for at least 400ns to enable TPI functionality */
-       AUX_LINE_DDR  |=  AUX_LINE_MASK;
-       AUX_LINE_PORT &= ~AUX_LINE_MASK;
-       _delay_us(1);
+       #if (ARCH == ARCH_AVR8)
+               /* Set /RESET line low for at least 400ns to enable TPI functionality */
+               AUX_LINE_DDR  |=  AUX_LINE_MASK;
+               AUX_LINE_PORT &= ~AUX_LINE_MASK;
+               Delay_MS(1);
 
-       /* Set Tx and XCK as outputs, Rx as input */
-       DDRD |=  (1 << 5) | (1 << 3);
-       DDRD &= ~(1 << 2);
+               /* Set Tx and XCK as outputs, Rx as input */
+               DDRD |=  (1 << 5) | (1 << 3);
+               DDRD &= ~(1 << 2);
 
-       /* Set up the synchronous USART for TINY communications - 8 data bits, even parity, 2 stop bits */
-       UBRR1  = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1);
-       UCSR1B = (1 << TXEN1);
-       UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
+               /* Set up the synchronous USART for TINY communications - 8 data bits, even parity, 2 stop bits */
+               UBRR1  = ((F_CPU / 2 / XPROG_HARDWARE_SPEED) - 1);
+               UCSR1B = (1 << TXEN1);
+               UCSR1C = (1 << UMSEL10) | (1 << UPM11) | (1 << USBS1) | (1 << UCSZ11) | (1 << UCSZ10) | (1 << UCPOL1);
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 
        /* Send two IDLEs of 12 bits each to enable TPI interface (need at least 16 idle bits) */
        XPROGTarget_SendIdle();
@@ -94,14 +102,18 @@ void XPROGTarget_DisableTargetPDI(void)
        /* Switch to Rx mode to ensure that all pending transmissions are complete */
        XPROGTarget_SetRxMode();
 
-       /* Turn off receiver and transmitter of the USART, clear settings */
-       UCSR1A  = ((1 << TXC1) | (1 << RXC1));
-       UCSR1B  = 0;
-       UCSR1C  = 0;
-
-       /* Tristate all pins */
-       DDRD  &= ~((1 << 5) | (1 << 3));
-       PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
+       #if (ARCH == ARCH_AVR8)
+               /* Turn off receiver and transmitter of the USART, clear settings */
+               UCSR1A  = ((1 << TXC1) | (1 << RXC1));
+               UCSR1B  = 0;
+               UCSR1C  = 0;
+
+               /* Tristate all pins */
+               DDRD  &= ~((1 << 5) | (1 << 3));
+               PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 }
 
 /** Disables the target's TPI interface, exits programming mode and starts the target's application. */
@@ -110,18 +122,22 @@ void XPROGTarget_DisableTargetTPI(void)
        /* Switch to Rx mode to ensure that all pending transmissions are complete */
        XPROGTarget_SetRxMode();
 
-       /* Turn off receiver and transmitter of the USART, clear settings */
-       UCSR1A |= (1 << TXC1) | (1 << RXC1);
-       UCSR1B  = 0;
-       UCSR1C  = 0;
-
-       /* Set all USART lines as inputs, tristate */
-       DDRD  &= ~((1 << 5) | (1 << 3));
-       PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
-       
-       /* Tristate target /RESET line */
-       AUX_LINE_DDR  &= ~AUX_LINE_MASK;
-       AUX_LINE_PORT &= ~AUX_LINE_MASK;
+       #if (ARCH == ARCH_AVR8)
+               /* Turn off receiver and transmitter of the USART, clear settings */
+               UCSR1A |= (1 << TXC1) | (1 << RXC1);
+               UCSR1B  = 0;
+               UCSR1C  = 0;
+
+               /* Set all USART lines as inputs, tristate */
+               DDRD  &= ~((1 << 5) | (1 << 3));
+               PORTD &= ~((1 << 5) | (1 << 3) | (1 << 2));
+               
+               /* Tristate target /RESET line */
+               AUX_LINE_DDR  &= ~AUX_LINE_MASK;
+               AUX_LINE_PORT &= ~AUX_LINE_MASK;
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 }
 
 /** Sends a byte via the USART.
@@ -134,10 +150,14 @@ void XPROGTarget_SendByte(const uint8_t Byte)
        if (!(IsSending))
          XPROGTarget_SetTxMode();
 
-       /* Wait until there is space in the hardware Tx buffer before writing */
-       while (!(UCSR1A & (1 << UDRE1)));
-       UCSR1A |= (1 << TXC1);
-       UDR1    = Byte;
+       #if (ARCH == ARCH_AVR8)
+               /* Wait until there is space in the hardware Tx buffer before writing */
+               while (!(UCSR1A & (1 << UDRE1)));
+               UCSR1A |= (1 << TXC1);
+               UDR1    = Byte;
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 }
 
 /** Receives a byte via the software USART, blocking until data is received.
@@ -150,10 +170,15 @@ uint8_t XPROGTarget_ReceiveByte(void)
        if (IsSending)
          XPROGTarget_SetRxMode();
 
-       /* Wait until a byte has been received before reading */
-       while (!(UCSR1A & (1 << RXC1)) && !(TimeoutExpired));
+       #if (ARCH == ARCH_AVR8)
+               /* Wait until a byte has been received before reading */
+               while (!(UCSR1A & (1 << RXC1)) && !(TimeoutExpired));
 
-       return UDR1;
+               return UDR1;
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+               return 0;
+       #endif
 }
 
 /** Sends an IDLE via the USART to the attached target, consisting of a full frame of idle bits. */
@@ -163,40 +188,52 @@ void XPROGTarget_SendIdle(void)
        if (!(IsSending))
          XPROGTarget_SetTxMode();
        
-       /* Need to do nothing for a full frame to send an IDLE */
-       for (uint8_t i = 0; i < BITS_IN_USART_FRAME; i++)
-       {
-               /* Wait for a full cycle of the clock */
-               while (PIND & (1 << 5));
-               while (!(PIND & (1 << 5)));
-       }
+       #if (ARCH == ARCH_AVR8)
+               /* Need to do nothing for a full frame to send an IDLE */
+               for (uint8_t i = 0; i < BITS_IN_USART_FRAME; i++)
+               {
+                       /* Wait for a full cycle of the clock */
+                       while (PIND & (1 << 5));
+                       while (!(PIND & (1 << 5)));
+               }
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 }
 
 static void XPROGTarget_SetTxMode(void)
 {
-       /* Wait for a full cycle of the clock */
-       while (PIND & (1 << 5));
-       while (!(PIND & (1 << 5)));
+       #if (ARCH == ARCH_AVR8)
+               /* Wait for a full cycle of the clock */
+               while (PIND & (1 << 5));
+               while (!(PIND & (1 << 5)));
 
-       PORTD  |=  (1 << 3);
-       DDRD   |=  (1 << 3);
+               PORTD  |=  (1 << 3);
+               DDRD   |=  (1 << 3);
 
-       UCSR1B &= ~(1 << RXEN1);
-       UCSR1B |=  (1 << TXEN1);
+               UCSR1B &= ~(1 << RXEN1);
+               UCSR1B |=  (1 << TXEN1);
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 
        IsSending = true;
 }
 
 static void XPROGTarget_SetRxMode(void)
 {
-       while (!(UCSR1A & (1 << TXC1)));
-       UCSR1A |=  (1 << TXC1);
-
-       UCSR1B &= ~(1 << TXEN1);
-       UCSR1B |=  (1 << RXEN1);
-
-       DDRD   &= ~(1 << 3);
-       PORTD  &= ~(1 << 3);
+       #if (ARCH == ARCH_AVR8)
+               while (!(UCSR1A & (1 << TXC1)));
+               UCSR1A |=  (1 << TXC1);
+
+               UCSR1B &= ~(1 << TXEN1);
+               UCSR1B |=  (1 << RXEN1);
+
+               DDRD   &= ~(1 << 3);
+               PORTD  &= ~(1 << 3);
+       #elif (ARCH == ARCH_UC3)
+               // TODO: FIXME
+       #endif
 
        IsSending = false;
 }
index ebc5639..e2194b3 100644 (file)
 #define _XPROG_TARGET_
 
        /* Includes: */
-               #include <avr/io.h>
-               #include <avr/interrupt.h>
-               #include <stdbool.h>
-
                #include <LUFA/Common/Common.h>
 
+               #if (ARCH == ARCH_AVR8)
+                       #include <avr/io.h>
+                       #include <avr/interrupt.h>
+               #elif (ARCH == ARCH_UC3)
+                       #include <avr32/io.h>                   
+               #endif
+
                #include "../V2Protocol.h"
                #include "XPROGProtocol.h"
 
index de1e225..d912923 100644 (file)
@@ -174,7 +174,7 @@ CPPSRC =
 #     Even though the DOS/Win* filesystem matches both .s and .S the same,
 #     it will preserve the spelling of the filenames, and gcc itself does
 #     care about how the name is spelled on its command-line.
-ASRC =
+ASRC = 
 
 
 # Optimization level, can be [0, 1, 2, 3, s].