aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Demos/Device/LowLevel/AudioInput/AudioInput.c9
-rw-r--r--Demos/Device/LowLevel/AudioOutput/AudioOutput.c9
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.c274
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep1
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elfbin0 -> 101354 bytes
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.h80
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex403
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss5024
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst853
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map1169
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.obin0 -> 20140 bytes
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym267
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c183
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.h72
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst400
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.obin0 -> 13752 bytes
-rw-r--r--Demos/Host/Incomplete/AudioInputHost/makefile714
-rw-r--r--LUFA.pnproj2
-rw-r--r--LUFA/Drivers/USB/Class/Common/Audio.h20
-rw-r--r--LUFA/Drivers/USB/Class/Device/Audio.c7
-rw-r--r--LUFA/ManPages/ChangeLog.txt6
-rw-r--r--LUFA/ManPages/FutureChanges.txt9
-rw-r--r--Projects/AVRISP-MKII/AVRISP-MKII.c46
-rw-r--r--Projects/AVRISP-MKII/AVRISP-MKII.h20
-rw-r--r--Projects/AVRISP-MKII/Descriptors.c59
-rw-r--r--Projects/AVRISP-MKII/Descriptors.h13
-rw-r--r--Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c22
-rw-r--r--Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h10
-rw-r--r--Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h19
-rw-r--r--Projects/AVRISP-MKII/Lib/V2Protocol.c8
-rw-r--r--Projects/AVRISP-MKII/Lib/V2Protocol.h21
-rw-r--r--Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h1
-rw-r--r--Projects/AVRISP-MKII/Lib/V2ProtocolParams.c6
-rw-r--r--Projects/AVRISP-MKII/Lib/V2ProtocolParams.h17
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h13
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h13
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c20
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h14
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c181
-rw-r--r--Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h11
-rw-r--r--Projects/AVRISP-MKII/makefile2
41 files changed, 9824 insertions, 174 deletions
diff --git a/Demos/Device/LowLevel/AudioInput/AudioInput.c b/Demos/Device/LowLevel/AudioInput/AudioInput.c
index 7a5a0a6ea..f62fcbec5 100644
--- a/Demos/Device/LowLevel/AudioInput/AudioInput.c
+++ b/Demos/Device/LowLevel/AudioInput/AudioInput.c
@@ -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();
+ }
}
}
diff --git a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c
index 93ca370a8..22cfac4d9 100644
--- a/Demos/Device/LowLevel/AudioOutput/AudioOutput.c
+++ b/Demos/Device/LowLevel/AudioOutput/AudioOutput.c
@@ -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
index 000000000..7ac8f0015
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.c
@@ -0,0 +1,274 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether
+ in an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software.
+*/
+
+/** \file
+ *
+ * Main source file for the AudioInputHost demo. This file contains the main tasks of
+ * the demo and is responsible for the initial application hardware configuration.
+ */
+
+#include "AudioInputHost.h"
+
+/** Main program entry point. This routine configures the hardware required by the application, then
+ * enters a loop to run the application tasks in sequence.
+ */
+int main(void)
+{
+ SetupHardware();
+
+ puts_P(PSTR(ESC_FG_CYAN "Audio Host Demo running.\r\n" ESC_FG_WHITE));
+
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
+ sei();
+
+ for (;;)
+ {
+ Audio_Task();
+ USB_USBTask();
+ }
+}
+
+/** 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);
+
+ /* Hardware Initialization */
+ Serial_Init(9600, false);
+ LEDs_Init();
+ USB_Init();
+
+ /* Create a stdio stream for the serial port for stdin and stdout */
+ Serial_CreateStream(NULL);
+}
+
+/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
+ * starts the library USB task to begin the enumeration and USB management process.
+ */
+void EVENT_USB_Host_DeviceAttached(void)
+{
+ puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE));
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
+}
+
+/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and
+ * stops the library USB task management process.
+ */
+void EVENT_USB_Host_DeviceUnattached(void)
+{
+ puts_P(PSTR(ESC_FG_GREEN "Device Unattached.\r\n" ESC_FG_WHITE));
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
+}
+
+/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully
+ * enumerated by the host and is now ready to be used by the application.
+ */
+void EVENT_USB_Host_DeviceEnumerationComplete(void)
+{
+ LEDs_SetAllLEDs(LEDMASK_USB_READY);
+}
+
+/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
+void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
+{
+ USB_Disable();
+
+ printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"
+ " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);
+
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+ for(;;);
+}
+
+/** Event handler for the USB_DeviceEnumerationFailed event. This indicates that a problem occurred while
+ * enumerating an attached USB device.
+ */
+void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
+ const uint8_t SubErrorCode)
+{
+ printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
+ " -- Error Code %d\r\n"
+ " -- Sub Error Code %d\r\n"
+ " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);
+
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+}
+
+void Audio_Task(void)
+{
+ uint8_t ErrorCode;
+
+ switch (USB_HostState)
+ {
+ case HOST_STATE_Addressed:
+ puts_P(PSTR("Getting Config Data.\r\n"));
+
+ /* Get and process the configuration descriptor data */
+ if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)
+ {
+ if (ErrorCode == ControlError)
+ puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n"));
+ else
+ puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n"));
+
+ printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
+
+ /* Indicate error status */
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+
+ /* Wait until USB device disconnected */
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ break;
+ }
+
+ /* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */
+ if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)
+ {
+ printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"
+ " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
+
+ /* Indicate error status */
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+
+ /* Wait until USB device disconnected */
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ break;
+ }
+
+ if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,
+ StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)
+ {
+ printf_P(PSTR(ESC_FG_RED "Could not set alternative streaming interface setting.\r\n"
+ " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
+
+ /* Indicate error status */
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+
+ /* Wait until USB device disconnected */
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ break;
+ }
+
+ USB_ControlRequest = (USB_Request_Header_t)
+ {
+ .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_ENDPOINT),
+ .bRequest = AUDIO_REQ_SetCurrent,
+ .wValue = 0x0100,
+ .wIndex = StreamingEndpointAddress,
+ .wLength = sizeof(USB_Audio_SampleFreq_t),
+ };
+
+ USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
+
+ /* Select the control pipe for the request transfer */
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ /* Set the sample rate on the streaming interface endpoint */
+ if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)
+ {
+ /* Indicate error status */
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+
+ /* Wait until USB device disconnected */
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ break;
+ }
+
+ /* Sample reload timer initialization */
+ TIMSK0 = (1 << OCIE0A);
+ OCR0A = ((F_CPU / 8 / 8000) - 1);
+ TCCR0A = (1 << WGM01); // CTC mode
+ TCCR0B = (1 << CS01); // Fcpu/8 speed
+
+ /* Set speaker as output */
+ DDRC |= (1 << 6);
+
+ /* PWM speaker timer initialization */
+ TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)
+ | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP
+ TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, F_CPU speed
+
+ puts_P(PSTR("Microphone Enumerated.\r\n"));
+
+ USB_HostState = HOST_STATE_Configured;
+ break;
+ case HOST_STATE_Configured:
+ break;
+ }
+}
+
+/** ISR to handle the reloading of the PWM timer with the next sample. */
+ISR(TIMER0_COMPA_vect, ISR_BLOCK)
+{
+ uint8_t PrevPipe = Pipe_GetCurrentPipe();
+
+ Pipe_SelectPipe(AUDIO_DATA_IN_PIPE);
+ Pipe_Unfreeze();
+
+ /* Check if the current pipe can be read from (contains a packet) and the device is sending data */
+ if (Pipe_IsINReceived())
+ {
+ /* Retrieve the signed 16-bit audio sample, convert to 8-bit */
+ int8_t Sample_8Bit = (Pipe_Read_16_LE() >> 8);
+
+ /* Check to see if the bank is now empty */
+ if (!(Pipe_IsReadWriteAllowed()))
+ {
+ /* Acknowledge the packet, clear the bank ready for the next packet */
+ Pipe_ClearIN();
+ }
+
+ /* Load the sample into the PWM timer channel */
+ OCR3A = (Sample_8Bit ^ (1 << 7));
+
+ uint8_t LEDMask = LEDS_NO_LEDS;
+
+ /* Turn on LEDs as the sample amplitude increases */
+ if (Sample_8Bit > 16)
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);
+ else if (Sample_8Bit > 8)
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);
+ else if (Sample_8Bit > 4)
+ LEDMask = (LEDS_LED1 | LEDS_LED2);
+ else if (Sample_8Bit > 2)
+ LEDMask = (LEDS_LED1);
+
+ LEDs_SetAllLEDs(LEDMask);
+ }
+
+ Pipe_Freeze();
+
+ Pipe_SelectPipe(PrevPipe);
+}
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep
new file mode 100644
index 000000000..1996e8fde
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.eep
@@ -0,0 +1 @@
+:00000001FF
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf
new file mode 100644
index 000000000..a41d735eb
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.elf
Binary files differ
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.h b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.h
new file mode 100644
index 000000000..6a3b8502c
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.h
@@ -0,0 +1,80 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether
+ in an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software.
+*/
+
+/** \file
+ *
+ * Header file for AudioHost.c.
+ */
+
+#ifndef _AUDIO_HOST_H_
+#define _AUDIO_HOST_H_
+
+ /* Includes: */
+ #include <avr/io.h>
+ #include <avr/wdt.h>
+ #include <avr/pgmspace.h>
+ #include <avr/power.h>
+ #include <avr/interrupt.h>
+ #include <stdio.h>
+
+ #include <LUFA/Version.h>
+ #include <LUFA/Drivers/Misc/TerminalCodes.h>
+ #include <LUFA/Drivers/USB/USB.h>
+ #include <LUFA/Drivers/Peripheral/Serial.h>
+ #include <LUFA/Drivers/Board/LEDs.h>
+
+ #include "ConfigDescriptor.h"
+
+ /* Macros: */
+ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
+ #define LEDMASK_USB_NOTREADY LEDS_LED1
+
+ /** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
+ #define LEDMASK_USB_ENUMERATING (LEDS_LED2 | LEDS_LED3)
+
+ /** LED mask for the library LED driver, to indicate that the USB interface is ready. */
+ #define LEDMASK_USB_READY (LEDS_LED2 | LEDS_LED4)
+
+ /** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
+ #define LEDMASK_USB_ERROR (LEDS_LED1 | LEDS_LED3)
+
+ /* Function Prototypes: */
+ void Audio_Task(void);
+ void SetupHardware(void);
+
+ void EVENT_USB_Host_HostError(const uint8_t ErrorCode);
+ void EVENT_USB_Host_DeviceAttached(void);
+ void EVENT_USB_Host_DeviceUnattached(void);
+ void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
+ const uint8_t SubErrorCode);
+ void EVENT_USB_Host_DeviceEnumerationComplete(void);
+
+#endif
+
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex
new file mode 100644
index 000000000..2c962aabd
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.hex
@@ -0,0 +1,403 @@
+:1000000051C100006DC100006BC1000069C100005A
+:1000100067C1000065C1000063C1000061C100004C
+:100020005FC100005DC10000D5C6000059C10000DD
+:1000300057C1000055C1000053C1000051C100006C
+:100040004FC100004DC100004BC1000049C100007C
+:1000500047C100008BC2000043C1000041C1000045
+:100060003FC100003DC100003BC1000039C100009C
+:1000700037C1000035C1000033C1000031C10000AC
+:100080002FC100002DC100002BC1000029C10000BC
+:1000900027C1000025C100004D6963726F70686F51
+:1000A0006E6520456E756D6572617465642E0D0A0E
+:1000B000001B5B33316D436F756C64206E6F742071
+:1000C00073657420616C7465726E61746976652005
+:1000D00073747265616D696E6720696E74657266AE
+:1000E0006163652073657474696E672E0D0A202D37
+:1000F0002D204572726F7220436F64653A2025642B
+:100100000D0A1B5B33376D001B5B33316D436F6E24
+:1001100074726F6C204572726F7220285365742060
+:10012000436F6E66696775726174696F6E292E0D13
+:100130000A202D2D204572726F7220436F64653A3C
+:100140002025640D0A1B5B33376D00202D2D2045C3
+:1001500072726F7220436F64653A2025640D0A1B2A
+:100160005B33376D001B5B33316D496E76616C69B3
+:1001700064204465766963652E0D0A001B5B33318C
+:100180006D436F6E74726F6C204572726F722028AF
+:1001900047657420436F6E66696775726174696F35
+:1001A0006E292E0D0A0047657474696E6720436FCF
+:1001B0006E66696720446174612E0D0A001B5B3313
+:1001C000316D44657620456E756D204572726F7293
+:1001D0000D0A202D2D204572726F7220436F6465C9
+:1001E0002025640D0A202D2D205375622045727242
+:1001F0006F7220436F64652025640D0A202D2D2029
+:10020000496E2053746174652025640D0A1B5B33AD
+:10021000376D001B5B33316D486F7374204D6F6415
+:1002200065204572726F720D0A202D2D2045727265
+:100230006F7220436F64652025640D0A1B5B3337A2
+:100240006D001B5B33326D44657669636520556EC6
+:1002500061747461636865642E0D0A1B5B33376DCE
+:10026000001B5B33326D44657669636520417474AD
+:1002700061636865642E0D0A1B5B33376D001B5B81
+:1002800033366D417564696F20486F73742044651F
+:100290006D6F2072756E6E696E672E0D0A1B5B3373
+:1002A000376D000011241FBECFEFD0E2DEBFCDBFFF
+:1002B00011E0A0E0B1E0EAEFF8E100E00BBF02C01E
+:1002C00007900D92AC31B107D9F711E0ACE1B1E084
+:1002D00001C01D92A034B107E1F73ED10C947B0C14
+:1002E0008FCE9BB19F70982B9BB9089584B7877F61
+:1002F00084BF28E10FB6F89420936000109260004C
+:100300000FBE90E080E80FB6F89480936100909360
+:1003100061000FBE83E390E09093CD008093CC000A
+:1003200086E08093CA001092C8002093C900539AB7
+:100330005A9A8AB1806F8AB98BB18F708BB934D5D4
+:10034000ECE2F1E0F0933B01E0933A01F0933D01E0
+:10035000E0933C018EE0DF011D928A95E9F783E08E
+:1003600080932F0185E699E09093350180933401C5
+:100370008EE699E09093370180933601089581E6E7
+:1003800092E0DED780EAADCF82E492E0D9D780E177
+:10039000A8CF80E6A6CFDF93CF930F92CDB7DEB77D
+:1003A00089839CD400D000D0EDB7FEB7319623E10D
+:1003B00032E0ADB7BEB712963C932E931197898168
+:1003C000828313829ED70F900F900F900F9080E939
+:1003D00088DFFFCF90912B012DB73EB728503040DA
+:1003E0000FB6F8943EBF0FBE2DBFEDB7FEB73196E6
+:1003F0002DEB31E0ADB7BEB712963C932E9311971B
+:100400008283138264831582968317827AD72DB7ED
+:100410003EB7285F3F4F0FB6F8943EBF0FBE2DBFCB
+:1004200080E95FCF1F93DF93CF9300D00F92CDB7BA
+:10043000DEB780912B018B3009F087C086EA91E00E
+:100440007FD730D1182F8823E9F0813019F48CE759
+:1004500091E002C085E691E073D700D000D0EDB7FF
+:10046000FEB731962BE431E0ADB7BEB712963C93A0
+:100470002E9311971283138244D70F900F900F90F1
+:100480000F904AC081E082D3882341F000D000D091
+:10049000EDB7FEB7319628E031E00EC080911C0127
+:1004A00060911D0189D3882379F000D000D0EDB789
+:1004B000FEB7319621EB30E0ADB7BEB712963C9354
+:1004C0002E9311978283D7CF20911E0182E28093D1
+:1004D000230181E08093240180E091E09093260144
+:1004E00080932501209327011092280183E090E05A
+:1004F00090932A0180932901DE011196E0E0F1E05A
+:1005000083E001900D928150E1F71092A700CE0197
+:100510000196B7D5882329F080E9E3DE10922B01FC
+:1005200014C082E080936E009CE797BD84BD85BDBA
+:100530003E9A81EF8093900089E08093910088E952
+:1005400090E0FED68CE080932B010F900F900F90DF
+:10055000CF91DF911F910895C9DE8EE792E0F0D62A
+:1005600080E1BFDE78945EDFA2D6FDCF1F920F92AE
+:100570000FB60F920BB60F9211241F932F933F9338
+:100580004F935F936F937F938F939F93AF93BF939B
+:10059000EF93FF931091A700177081E08093A7005D
+:1005A0008091A9008F7B8093A9008091A60080FF95
+:1005B0002BC08091AF004091AF008091A60085FDD7
+:1005C00005C08091A6008E778093A600842F99277E
+:1005D00087FD909520E830E082279327909399003B
+:1005E00080939800413144F4493044F4453044F458
+:1005F000433044F480E007C080EF05C080EB03C0C7
+:1006000080E301C080E16DDE8091A9008064809369
+:10061000A9001093A700FF91EF91BF91AF919F9117
+:100620008F917F916F915F914F913F912F911F918A
+:100630000F900BBE0F900FBE0F901F901895FC01EE
+:100640008181843049F48581813031F48681813023
+:1006500019F48781882311F082E0089580E00895DD
+:10066000FC018181843049F48581813031F48681B7
+:10067000823019F48781882311F082E0089580E0A8
+:100680000895FC018181853029F483818370813054
+:1006900019F404C0843021F082E0089580E00895C8
+:1006A00081E00895AF92BF92CF92DF92EF92FF92D6
+:1006B0000F931F93DF93CF93CDB7DEB7C450D240D3
+:1006C0000FB6F894DEBF0FBECDBFAE014B5F5F4FDC
+:1006D0005A83498323E0E22EF12CEC0EFD1E81E0CB
+:1006E000B70120E032E009D4853009F45CC08630DF
+:1006F00061F0882361F400E010E0CC24DD24570190
+:100700007E010894E11CF11C07C083E04FC081E02A
+:100710004DC09C01032F182FC114D10441F0C50115
+:10072000B70141E453E040D4882351F41CC0C50113
+:10073000B7014FE153E038D48823B9F5C980DA8096
+:10074000C501B70140E353E02FD4882349F0C50128
+:10075000B7014FE153E028D4882339F5C980DA8006
+:1007600009811A8135C0E981FA81828187FF30C011
+:10077000902F812F309769F2D80112968C911297A1
+:1007800080931C0113968C9180931D0122812093EC
+:100790001E010481158181E061E040E194E0E92ED1
+:1007A00022D280E003C082E001C084E0CC5FDD4F54
+:1007B0000FB6F894DEBF0FBECDBFCF91DF911F9172
+:1007C0000F91FF90EF90DF90CF90BF90AF90089582
+:1007D000902F812F9ECF80919E0090E0817090702D
+:1007E0002091A0002D7F2093A00020919E002260E8
+:1007F00020939E0020919E0021FDFCCF20919E0021
+:10080000216020939E002091A00030E02072307083
+:100810004091A0004F7D4093A00040919F004F7DEC
+:1008200040939F004AE050919F0055FF0BC04091BC
+:100830009F004F7D40939F0040919F004D7F4093CC
+:100840009F0008C0EFECF7E03197F1F700C000001F
+:10085000415049F72115310529F02091A00020626F
+:100860002093A000009729F480919E008E7F8093B2
+:100870009E008091A00082608093A0000895409126
+:100880009E0050E0417050702091A00030E0207236
+:1008900030709091A0009F7D9093A00090919F0058
+:1008A0009F7D90939F0090919E00916090939E00F9
+:1008B00026C090919F0095FF06C090919F009F7D5C
+:1008C00090939F00815090912B019230D9F090919C
+:1008D000A60094FF09C01092F5008091A6008F7EBB
+:1008E0008093A60082E00FC09091A60091FF07C000
+:1008F0008091A6008D7F8093A60083E004C08823AA
+:10090000C1F601C081E04115510529F490919E0086
+:100910009E7F90939E002115310529F09091A000B3
+:1009200090629093A0000895EF920F931F93DF932E
+:10093000CF93CDB7DEB728970FB6F894DEBF0FBEC2
+:10094000CDBF80912B01863009F499C0873070F4B7
+:100950008330C9F1843020F4813009F00BC113C019
+:100960008430C9F1853009F005C160C0883009F4D0
+:10097000A0C0883008F48FC0893009F4B9C08A302B
+:1009800009F0F8C0DEC0009120011091210101158D
+:10099000110509F4EFC081E072DF682F882331F080
+:1009A00080911F0180932B0181E0E0C00150104035
+:1009B00010932101009320010115110509F0DAC0FF
+:1009C00080911F01C3C088EE93E090932101809332
+:1009D000200184E0BBC080912001909121019C0105
+:1009E000215030403093210120932001009739F0AD
+:1009F0008FEC97E00197F1F700C00000BBC077983B
+:100A00008091D80080618093D8008091DD008B7F39
+:100A10008093DD008091D70080618093D700809122
+:100A2000DD0082608093DD0085E090C080919F00B2
+:100A300080FFA0C080919F008E7F80939F00809157
+:100A40009F008D7F80939F008091DF008D7F80933A
+:100A5000DF008091DE0082608093DE0080919E0046
+:100A6000816080939E0026D181E080932B0184E6F3
+:100A700090E0909321018093200186E05FC0ABDE7F
+:100A800081E080932B0188EC90E09093210180938A
+:100A9000200187E053C080E060E040E020E000E417
+:100AA00010E0EE24A0D08091AC0087FF5BC088E00E
+:100AB0004DC0A3E2B1E0E3E1F1E088E001900D92E6
+:100AC0008150E1F7CE010196DCD2682F882309F02E
+:100AD0004CC0888580931B017EDE81E080932B01D2
+:100AE00088EC90E0909321018093200189E026C05A
+:100AF00000911B0180E060E040E020E010E0EE2487
+:100B000072D08091AC0087FF2DC0A3E2B1E0EBE092
+:100B1000F1E088E001900D928150E1F780E090E0F3
+:100B2000B0D2682F882309F581E080932B0184E6F9
+:100B300090E090932101809320018AE080931F012F
+:100B400019C081E08093A10024DC8BE080932B010D
+:100B500011C040DC8091DD0081608093DD0014DCF9
+:100B6000D5D008C060E084E001C083E090912B0103
+:100B7000923079F728960FB6F894DEBF0FBECDBF3E
+:100B8000CF91DF911F910F91EF9008951092230163
+:100B900099E09093240180932501109226011092F0
+:100BA00028011092270110922A0110922901109217
+:100BB000A70080E090E065C2E3E2F1E091E090936D
+:100BC00023019BE09093240160932501138280937D
+:100BD0002701158210922A01109229011092A70074
+:100BE00080E090E04EC2EF920F931F935E2D6295CE
+:100BF000660F660F607C642B2F70622B982F5260FB
+:100C00004DC09093A7009817B1F428E030E040E081
+:100C100003C04F5F220F331F2017310710F44530F8
+:100C2000C1F7242F2295207F252BA62F40E070E0CE
+:100C3000E1E2F0E00CC0A091AA002091AB00F0919D
+:100C4000AD00E091A9007091A5004091AE003091F7
+:100C5000A90030623093A90021FF1FC03091A90084
+:100C60003E7F3093A9003091AB0032703093AB00DF
+:100C70003091A90031603093A900A093AA0020937D
+:100C8000AB00F093AD00E093A9007093A5004093F2
+:100C9000AE002091AC0027FF08C09F5F973008F49A
+:100CA000B0CF8093A70081E001C080E01F910F9139
+:100CB000EF9008951092F80080E08093A7001092C2
+:100CC000AE001092A6001092AB009091A9009E7FFA
+:100CD0009093A9008F5F873081F708956ED075D00B
+:100CE000E0EEF0E0808181608083E8EDF0E08081DB
+:100CF0008F77808319BCA7EDB0E08C918E7F8C93A9
+:100D000080818F7E808310922201089556D05DD01D
+:100D10008091D800982F9F779093D8008068809317
+:100D2000D8008091D8008F7D8093D8008091D70023
+:100D30008F778093D7008CE089BD89B5826089BDAB
+:100D400009B400FEFDCF82E080932B0180E4809304
+:100D50001B018091D80080648093D8008091DD00D1
+:100D600081608093DD008091DD0084608093DD00F0
+:100D70008091D7008F7E8093D7006F9A779A809169
+:100D8000DE0081608093DE008091DE0084608093CD
+:100D9000DE008091E0008E7F8093E0008091D8009B
+:100DA00080618093D8000895E7EDF0E08081816054
+:100DB000808381E080932201A9CFE8EDF0E080817B
+:100DC0008C7F80831092A00008951092DA00109218
+:100DD0009F0008951F920F920FB60F920BB60F92BD
+:100DE00011242F933F934F935F936F937F938F9330
+:100DF0009F93AF93BF93EF93FF9380919F0085FFE5
+:100E00000AC08091A00085FF06C080919F008F7D61
+:100E100080939F000CD180919F0081FF15C080912D
+:100E2000A00081FF11C080919F008D7F80939F0063
+:100E300080919F008E7F80939F008091A0008D7F86
+:100E40008093A000A1DA62DF8091DF0081FF15C0EE
+:100E50008091DE0081FF11C08091DF008D7F809343
+:100E6000DF0077988091DD0081608093DD0080E075
+:100E700092DA8ADA82E080932B018091DF0080FF92
+:100E800017C08091DE0080FF13C08091DF008E7F4D
+:100E90008093DF008091DE008E7F8093DE006FDA2A
+:100EA0008091A00082608093A00083E080932B015A
+:100EB0008091DF0082FF0EC08091DE0082FF0AC0B9
+:100EC0008091DF008B7F8093DF0082E060E082DA38
+:100ED0005BDA1CDFFF91EF91BF91AF919F918F91F2
+:100EE0007F916F915F914F913F912F910F900BBE2A
+:100EF0000F900FBE0F901F901895CF92DF92EF9238
+:100F0000FF920F931F93DF93CF93CDB7DEB729974F
+:100F10000FB6F894DEBF0FBECDBF6B018A01790119
+:100F200090E89093230196E09093240190E001973C
+:100F300092609093260180932501109228011092CF
+:100F4000270189E090E090932A0180932901109273
+:100F5000A700CE01019695D08823B9F48B819C819E
+:100F6000F60191838083E816F90670F090932A01C8
+:100F700080932901C80185D0882339F4F801918133
+:100F8000923019F086E001C085E029960FB6F894FA
+:100F9000DEBF0FBECDBFCF91DF911F910F91FF90AC
+:100FA000EF90DF90CF900895AF92BF92CF92DF92F3
+:100FB000EF92FF920F931F93CF93DF938C01EB017E
+:100FC0006A0123C0E881F9815F01208130E0C70117
+:100FD0002E153F0508F4C901E80FF91FF983E883CE
+:100FE000F80120813181281B390B318320838881CE
+:100FF0009981F6010995823041F0813069F4A88227
+:10100000B982F801F182E08207C0F801E080F18046
+:10101000E114F104B9F682E0DF91CF911F910F91B5
+:10102000FF90EF90DF90CF90BF90AF90089508951C
+:101030001F93CF93DF93182FC8EED3E007C081E052
+:101040001EDC8823D1F42097B9F02197112329F4CD
+:101050008091A60083FFF3CF0DC0113029F4809159
+:10106000A60080FFECCF06C0123049F78091A600A1
+:1010700082FFE5CF80E001C084E0DF91CF911F9136
+:101080000895EF92FF920F931F93CF93DF938C01FC
+:10109000E0909E00FF2481E0E822FF24C091290116
+:1010A000D0912A0180919E00816080939E0081E012
+:1010B000E6DB882309F0E2C08091AA008F7C809350
+:1010C000AA001092F5008091A6008F7E8093A60062
+:1010D0008091A9008F7B8093A90080912301809348
+:1010E000AF00809124018093AF0090912501809101
+:1010F00026019093AF008093AF00909127018091DB
+:1011000028019093AF008093AF00909129018091C6
+:101110002A019093AF008093AF008091A60087775B
+:101120008093A60080E084DF882309F0A7C0809127
+:10113000A90080648093A90081E0A1DB882309F0E5
+:101140009DC08091230187FF4FC08091AA008F7CB2
+:1011500080618093AA000115110561F52DC0809171
+:10116000A9008F7B8093A90081E062DF882309F0CA
+:1011700085C08091F6009091F700009749F4C0E097
+:10118000D0E006C08091AF00F80181938F012197D4
+:101190008091F6009091F700009711F0209791F759
+:1011A0008091A90080648093A9008091A6008E7729
+:1011B0008093A600209799F68091AA008F7C806288
+:1011C0008093AA008091A9008F7B8093A90082E080
+:1011D0002FDF882309F052C08091A6008B7780937F
+:1011E000A60082E025DF4AC00115110599F1809122
+:1011F000AA008F7C80628093AA008091A9008F7BD7
+:101200008093A9001CC082E013DF8823B9F5F801A0
+:1012100006C081918F018093AF00219759F08F0113
+:101220002091F6003091F70080911B0190E0281783
+:10123000390778F38091A6008B778093A6002097DA
+:1012400011F782E0F5DE8823C9F48091A90080645B
+:101250008093A9008091AA008F7C80618093AA006E
+:101260008091A9008F7B8093A90081E0E1DE882333
+:1012700029F49091A6009E779093A6009091A900E2
+:1012800090649093A900E114F10429F490919E00D8
+:101290009E7F90939E0091E09093A8001092A800EA
+:1012A000DF91CF911F910F91FF90EF9008951F93C1
+:1012B000CF93DF93C7EAD0E018811770188234DB30
+:1012C0001883DF91CF911F9108959091C80095FFE9
+:1012D000FCCF8093CE0080E090E008958091C8001C
+:1012E00087FF08C08091C80087FF07C02091CE000B
+:1012F00030E005C02EEF3FEF02C02FEF3FEFC901F6
+:101300000895DF93CF93CDB7DEB7FE013596619197
+:10131000719180913C0190913D01DC0113962C91DB
+:101320001397286013962C93AF0142D0E0913C01B3
+:10133000F0913D012381277F2383CF91DF91089591
+:10134000EF92FF920F931F93CF93DF938C01E09165
+:101350003C01F0913D01838181FF20C0C0E0D0E0DD
+:101360000CC0DB011896ED91FC9119970995009737
+:1013700011F0CFEFDFEF0F5F1F4FF8018491609105
+:101380003C0170913D01882361F7DB011896ED91D6
+:10139000FC9119978AE00995009711F0CFEFDFEFE4
+:1013A000CE01DF91CF911F910F91FF90EF900895A3
+:1013B0002F923F924F925F926F927F928F929F9265
+:1013C000AF92BF92CF92DF92EF92FF920F931F9353
+:1013D000DF93CF93CDB7DEB72C970FB6F894DEBF6F
+:1013E0000FBECDBF6C011B018A01FC011782168262
+:1013F000838181FFC4C12E010894411C511CF60158
+:101400009381F10193FD859193FF81911F018823C1
+:1014100009F4B1C1853239F493FD859193FF81912F
+:101420001F01853221F490E0B601DBD1E8CFEE2434
+:10143000FF2420E02032B0F48B3269F08C3228F4A3
+:10144000803251F0833271F40BC08D3239F0803329
+:1014500049F421602CC02260246029C0286027C084
+:10146000206125C027FD2CC0382F30533A3098F426
+:1014700026FF08C08E2D880FE82EEE0CEE0CE80E2D
+:10148000E30E15C08F2D880FF82EFF0CFF0CF80E01
+:10149000F30E20620CC08E3221F426FD6CC1206454
+:1014A00006C08C3611F4206802C0883649F4F10178
+:1014B00093FD859193FF81911F01882309F0BACF95
+:1014C000982F9554933018F09052933028F40C5F75
+:1014D0001F4FFFE3F9830DC0833631F0833771F07E
+:1014E000833509F05CC021C0F801808189830E5FDB
+:1014F0001F4F420171E0A72EB12C15C062E0662E8D
+:10150000712C600E711EF8018080918026FF03C04F
+:101510006E2D70E002C06FEF7FEFC4012C8756D1B3
+:101520005C0183012C852F7716C052E0652E712C4B
+:10153000600E711EF8018080918026FF03C06E2D21
+:1015400070E002C06FEF7FEFC4012C8734D15C01E3
+:101550002C852068830123FD1EC007C080E290E037
+:10156000B6012C873ED1FA942C858F2D90E0A816D9
+:10157000B906A0F310C0F40127FD859127FF8191E2
+:101580004F0190E0B6012C872CD12C85F110FA94F4
+:101590000894A108B108A114B10469F7E9C0843620
+:1015A00011F0893641F527FF08C0F801608171818B
+:1015B000828193810C5F1F4F09C0F80160817181A6
+:1015C000882777FD8095982F0E5F1F4F4FE6B42E2A
+:1015D000B22297FF09C090958095709561957F4FD5
+:1015E0008F4F9F4FF0E8BF2AA2012AE030E025D1BB
+:1015F000782E741844C0853731F43FEEB32EB222F2
+:101600002AE030E025C099EFB92EB2228F36C1F022
+:10161000803720F4883509F0AEC00DC0803721F046
+:10162000883709F0A8C002C020E1B22AB4FE0BC07E
+:1016300084E0B82A08C0B4FE09C0E6E0BE2A06C0AD
+:1016400028E030E005C020E130E002C020E132E0D7
+:10165000B7FE08C0F80160817181828193810C5FBF
+:101660001F4F07C0F8016081718180E090E00E5F3C
+:101670001F4FA201E2D0782E7418FFE7BF22B6FEFA
+:101680000BC02EEFB2227E1438F4B4FE07C0B2FCB9
+:1016900005C08FEEB82202C0A72C01C0AE2C8B2D46
+:1016A00090E0B4FE0DC0FE01E70DF11D2081203356
+:1016B00019F4E9EEBE2209C0A394B2FE06C004C02C
+:1016C00086789070009709F0A3948B2C9924B3FC32
+:1016D00013C0B0FE0EC0AF1428F4E72CEF0CEA18CC
+:1016E000AF2C07C0E72C05C080E290E0B60179D0AE
+:1016F000A394AF14C8F304C0AF1410F4FA1801C0D7
+:10170000FF2484FE0EC080E390E0B6016AD082FE22
+:101710001DC081FE03C088E590E010C088E790E01E
+:101720000DC0C40186789070009781F081FC02C0E2
+:1017300080E201C08BE2B7FC8DE290E0B60151D0AF
+:1017400005C080E390E0B6014CD0EA947E14C8F363
+:101750007A94F201E70DF11D808190E0B60141D04D
+:101760007720B1F705C080E290E0B6013AD0FA9454
+:10177000FF20C9F744CEF6012681378102C02FEF42
+:101780003FEFC9012C960FB6F894DEBF0FBECDBF58
+:10179000CF91DF911F910F91FF90EF90DF90CF904D
+:1017A000BF90AF909F908F907F906F905F904F9081
+:1017B0003F902F900895FC010590615070400110FA
+:1017C000D8F7809590958E0F9F1F0895FC0161506A
+:1017D000704001900110D8F7809590958E0F9F1F53
+:1017E00008950F931F93CF93DF938C01EB018B81AF
+:1017F00081FF1BC082FF0DC02E813F818C819D81A6
+:101800002817390764F4E881F9810193F983E883A3
+:1018100006C0E885F985802F0995009731F48E81FF
+:101820009F8101969F838E8302C00FEF1FEFC80137
+:10183000DF91CF911F910F910895FA01AA272830C7
+:1018400051F1203181F1E8946F936E7F6E5F7F4F8D
+:101850008F4F9F4FAF4FB1E03ED0B4E03CD0670F09
+:10186000781F891F9A1FA11D680F791F8A1F911D5C
+:10187000A11D6A0F711D811D911DA11D20D009F4AC
+:1018800068943F912AE0269F11243019305D3193EE
+:10189000DEF6CF010895462F4770405D4193B3E0D7
+:1018A0000FD0C9F7F6CF462F4F70405D4A3318F07E
+:1018B000495D31FD4052419302D0A9F7EACFB4E02F
+:1018C000A6959795879577956795BA95C9F70097E7
+:1018D0006105710508959B01AC010A2E0694579588
+:1018E000479537952795BA95C9F7620F731F841FDF
+:0A18F000951FA01D0895F894FFCF86
+:1018FA0080BB008006000100001200000501000004
+:0C190A0000000080060001000008004002
+:00000001FF
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss
new file mode 100644
index 000000000..152917403
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lss
@@ -0,0 +1,5024 @@
+
+AudioInputHost.elf: file format elf32-avr
+
+Sections:
+Idx Name Size VMA LMA File off Algn
+ 0 .data 0000001c 00800100 000018fa 0000198e 2**0
+ CONTENTS, ALLOC, LOAD, DATA
+ 1 .text 000018fa 00000000 00000000 00000094 2**1
+ CONTENTS, ALLOC, LOAD, READONLY, CODE
+ 2 .bss 00000024 0080011c 0080011c 000019aa 2**0
+ ALLOC
+ 3 .stab 00000e28 00000000 00000000 000019ac 2**2
+ CONTENTS, READONLY, DEBUGGING
+ 4 .stabstr 0000026b 00000000 00000000 000027d4 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 5 .debug_aranges 000003b0 00000000 00000000 00002a3f 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 6 .debug_pubnames 0000089a 00000000 00000000 00002def 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 7 .debug_info 000056c7 00000000 00000000 00003689 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 8 .debug_abbrev 00001b65 00000000 00000000 00008d50 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 9 .debug_line 000053bf 00000000 00000000 0000a8b5 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 10 .debug_frame 00000540 00000000 00000000 0000fc74 2**2
+ CONTENTS, READONLY, DEBUGGING
+ 11 .debug_str 000026bf 00000000 00000000 000101b4 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 12 .debug_loc 00003422 00000000 00000000 00012873 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 13 .debug_pubtypes 00000a86 00000000 00000000 00015c95 2**0
+ CONTENTS, READONLY, DEBUGGING
+ 14 .debug_ranges 00000490 00000000 00000000 0001671b 2**0
+ CONTENTS, READONLY, DEBUGGING
+
+Disassembly of section .text:
+
+00000000 <__vectors>:
+ 0: 51 c1 rjmp .+674 ; 0x2a4 <__ctors_end>
+ 2: 00 00 nop
+ 4: 6d c1 rjmp .+730 ; 0x2e0 <__bad_interrupt>
+ 6: 00 00 nop
+ 8: 6b c1 rjmp .+726 ; 0x2e0 <__bad_interrupt>
+ a: 00 00 nop
+ c: 69 c1 rjmp .+722 ; 0x2e0 <__bad_interrupt>
+ e: 00 00 nop
+ 10: 67 c1 rjmp .+718 ; 0x2e0 <__bad_interrupt>
+ 12: 00 00 nop
+ 14: 65 c1 rjmp .+714 ; 0x2e0 <__bad_interrupt>
+ 16: 00 00 nop
+ 18: 63 c1 rjmp .+710 ; 0x2e0 <__bad_interrupt>
+ 1a: 00 00 nop
+ 1c: 61 c1 rjmp .+706 ; 0x2e0 <__bad_interrupt>
+ 1e: 00 00 nop
+ 20: 5f c1 rjmp .+702 ; 0x2e0 <__bad_interrupt>
+ 22: 00 00 nop
+ 24: 5d c1 rjmp .+698 ; 0x2e0 <__bad_interrupt>
+ 26: 00 00 nop
+ 28: d5 c6 rjmp .+3498 ; 0xdd4 <__vector_10>
+ 2a: 00 00 nop
+ 2c: 59 c1 rjmp .+690 ; 0x2e0 <__bad_interrupt>
+ 2e: 00 00 nop
+ 30: 57 c1 rjmp .+686 ; 0x2e0 <__bad_interrupt>
+ 32: 00 00 nop
+ 34: 55 c1 rjmp .+682 ; 0x2e0 <__bad_interrupt>
+ 36: 00 00 nop
+ 38: 53 c1 rjmp .+678 ; 0x2e0 <__bad_interrupt>
+ 3a: 00 00 nop
+ 3c: 51 c1 rjmp .+674 ; 0x2e0 <__bad_interrupt>
+ 3e: 00 00 nop
+ 40: 4f c1 rjmp .+670 ; 0x2e0 <__bad_interrupt>
+ 42: 00 00 nop
+ 44: 4d c1 rjmp .+666 ; 0x2e0 <__bad_interrupt>
+ 46: 00 00 nop
+ 48: 4b c1 rjmp .+662 ; 0x2e0 <__bad_interrupt>
+ 4a: 00 00 nop
+ 4c: 49 c1 rjmp .+658 ; 0x2e0 <__bad_interrupt>
+ 4e: 00 00 nop
+ 50: 47 c1 rjmp .+654 ; 0x2e0 <__bad_interrupt>
+ 52: 00 00 nop
+ 54: 8b c2 rjmp .+1302 ; 0x56c <__vector_21>
+ 56: 00 00 nop
+ 58: 43 c1 rjmp .+646 ; 0x2e0 <__bad_interrupt>
+ 5a: 00 00 nop
+ 5c: 41 c1 rjmp .+642 ; 0x2e0 <__bad_interrupt>
+ 5e: 00 00 nop
+ 60: 3f c1 rjmp .+638 ; 0x2e0 <__bad_interrupt>
+ 62: 00 00 nop
+ 64: 3d c1 rjmp .+634 ; 0x2e0 <__bad_interrupt>
+ 66: 00 00 nop
+ 68: 3b c1 rjmp .+630 ; 0x2e0 <__bad_interrupt>
+ 6a: 00 00 nop
+ 6c: 39 c1 rjmp .+626 ; 0x2e0 <__bad_interrupt>
+ 6e: 00 00 nop
+ 70: 37 c1 rjmp .+622 ; 0x2e0 <__bad_interrupt>
+ 72: 00 00 nop
+ 74: 35 c1 rjmp .+618 ; 0x2e0 <__bad_interrupt>
+ 76: 00 00 nop
+ 78: 33 c1 rjmp .+614 ; 0x2e0 <__bad_interrupt>
+ 7a: 00 00 nop
+ 7c: 31 c1 rjmp .+610 ; 0x2e0 <__bad_interrupt>
+ 7e: 00 00 nop
+ 80: 2f c1 rjmp .+606 ; 0x2e0 <__bad_interrupt>
+ 82: 00 00 nop
+ 84: 2d c1 rjmp .+602 ; 0x2e0 <__bad_interrupt>
+ 86: 00 00 nop
+ 88: 2b c1 rjmp .+598 ; 0x2e0 <__bad_interrupt>
+ 8a: 00 00 nop
+ 8c: 29 c1 rjmp .+594 ; 0x2e0 <__bad_interrupt>
+ 8e: 00 00 nop
+ 90: 27 c1 rjmp .+590 ; 0x2e0 <__bad_interrupt>
+ 92: 00 00 nop
+ 94: 25 c1 rjmp .+586 ; 0x2e0 <__bad_interrupt>
+ 96: 00 00 nop
+
+00000098 <__c.3939>:
+ 98: 4d 69 63 72 6f 70 68 6f 6e 65 20 45 6e 75 6d 65 Microphone Enume
+ a8: 72 61 74 65 64 2e 0d 0a 00 rated....
+
+000000b1 <__c.3935>:
+ b1: 1b 5b 33 31 6d 43 6f 75 6c 64 20 6e 6f 74 20 73 .[31mCould not s
+ c1: 65 74 20 61 6c 74 65 72 6e 61 74 69 76 65 20 73 et alternative s
+ d1: 74 72 65 61 6d 69 6e 67 20 69 6e 74 65 72 66 61 treaming interfa
+ e1: 63 65 20 73 65 74 74 69 6e 67 2e 0d 0a 20 2d 2d ce setting... --
+ f1: 20 45 72 72 6f 72 20 43 6f 64 65 3a 20 25 64 0d Error Code: %d.
+ 101: 0a 1b 5b 33 37 6d 00 ..[37m.
+
+00000108 <__c.3933>:
+ 108: 1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72 .[31mControl Err
+ 118: 6f 72 20 28 53 65 74 20 43 6f 6e 66 69 67 75 72 or (Set Configur
+ 128: 61 74 69 6f 6e 29 2e 0d 0a 20 2d 2d 20 45 72 72 ation)... -- Err
+ 138: 6f 72 20 43 6f 64 65 3a 20 25 64 0d 0a 1b 5b 33 or Code: %d...[3
+ 148: 37 6d 00 7m.
+
+0000014b <__c.3930>:
+ 14b: 20 2d 2d 20 45 72 72 6f 72 20 43 6f 64 65 3a 20 -- Error Code:
+ 15b: 25 64 0d 0a 1b 5b 33 37 6d 00 %d...[37m.
+
+00000165 <__c.3928>:
+ 165: 1b 5b 33 31 6d 49 6e 76 61 6c 69 64 20 44 65 76 .[31mInvalid Dev
+ 175: 69 63 65 2e 0d 0a 00 ice....
+
+0000017c <__c.3926>:
+ 17c: 1b 5b 33 31 6d 43 6f 6e 74 72 6f 6c 20 45 72 72 .[31mControl Err
+ 18c: 6f 72 20 28 47 65 74 20 43 6f 6e 66 69 67 75 72 or (Get Configur
+ 19c: 61 74 69 6f 6e 29 2e 0d 0a 00 ation)....
+
+000001a6 <__c.3924>:
+ 1a6: 47 65 74 74 69 6e 67 20 43 6f 6e 66 69 67 20 44 Getting Config D
+ 1b6: 61 74 61 2e 0d 0a 00 ata....
+
+000001bd <__c.3917>:
+ 1bd: 1b 5b 33 31 6d 44 65 76 20 45 6e 75 6d 20 45 72 .[31mDev Enum Er
+ 1cd: 72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20 43 ror.. -- Error C
+ 1dd: 6f 64 65 20 25 64 0d 0a 20 2d 2d 20 53 75 62 20 ode %d.. -- Sub
+ 1ed: 45 72 72 6f 72 20 43 6f 64 65 20 25 64 0d 0a 20 Error Code %d..
+ 1fd: 2d 2d 20 49 6e 20 53 74 61 74 65 20 25 64 0d 0a -- In State %d..
+ 20d: 1b 5b 33 37 6d 00 .[37m.
+
+00000213 <__c.3910>:
+ 213: 1b 5b 33 31 6d 48 6f 73 74 20 4d 6f 64 65 20 45 .[31mHost Mode E
+ 223: 72 72 6f 72 0d 0a 20 2d 2d 20 45 72 72 6f 72 20 rror.. -- Error
+ 233: 43 6f 64 65 20 25 64 0d 0a 1b 5b 33 37 6d 00 Code %d...[37m.
+
+00000242 <__c.3902>:
+ 242: 1b 5b 33 32 6d 44 65 76 69 63 65 20 55 6e 61 74 .[32mDevice Unat
+ 252: 74 61 63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00 tached....[37m.
+
+00000261 <__c.3897>:
+ 261: 1b 5b 33 32 6d 44 65 76 69 63 65 20 41 74 74 61 .[32mDevice Atta
+ 271: 63 68 65 64 2e 0d 0a 1b 5b 33 37 6d 00 ched....[37m.
+
+0000027e <__c.3888>:
+ 27e: 1b 5b 33 36 6d 41 75 64 69 6f 20 48 6f 73 74 20 .[36mAudio Host
+ 28e: 44 65 6d 6f 20 72 75 6e 6e 69 6e 67 2e 0d 0a 1b Demo running....
+ 29e: 5b 33 37 6d 00 00 [37m..
+
+000002a4 <__ctors_end>:
+ 2a4: 11 24 eor r1, r1
+ 2a6: 1f be out 0x3f, r1 ; 63
+ 2a8: cf ef ldi r28, 0xFF ; 255
+ 2aa: d0 e2 ldi r29, 0x20 ; 32
+ 2ac: de bf out 0x3e, r29 ; 62
+ 2ae: cd bf out 0x3d, r28 ; 61
+
+000002b0 <__do_copy_data>:
+ 2b0: 11 e0 ldi r17, 0x01 ; 1
+ 2b2: a0 e0 ldi r26, 0x00 ; 0
+ 2b4: b1 e0 ldi r27, 0x01 ; 1
+ 2b6: ea ef ldi r30, 0xFA ; 250
+ 2b8: f8 e1 ldi r31, 0x18 ; 24
+ 2ba: 00 e0 ldi r16, 0x00 ; 0
+ 2bc: 0b bf out 0x3b, r16 ; 59
+ 2be: 02 c0 rjmp .+4 ; 0x2c4 <__do_copy_data+0x14>
+ 2c0: 07 90 elpm r0, Z+
+ 2c2: 0d 92 st X+, r0
+ 2c4: ac 31 cpi r26, 0x1C ; 28
+ 2c6: b1 07 cpc r27, r17
+ 2c8: d9 f7 brne .-10 ; 0x2c0 <__do_copy_data+0x10>
+
+000002ca <__do_clear_bss>:
+ 2ca: 11 e0 ldi r17, 0x01 ; 1
+ 2cc: ac e1 ldi r26, 0x1C ; 28
+ 2ce: b1 e0 ldi r27, 0x01 ; 1
+ 2d0: 01 c0 rjmp .+2 ; 0x2d4 <.do_clear_bss_start>
+
+000002d2 <.do_clear_bss_loop>:
+ 2d2: 1d 92 st X+, r1
+
+000002d4 <.do_clear_bss_start>:
+ 2d4: a0 34 cpi r26, 0x40 ; 64
+ 2d6: b1 07 cpc r27, r17
+ 2d8: e1 f7 brne .-8 ; 0x2d2 <.do_clear_bss_loop>
+ 2da: 3e d1 rcall .+636 ; 0x558 <main>
+ 2dc: 0c 94 7b 0c jmp 0x18f6 ; 0x18f6 <_exit>
+
+000002e0 <__bad_interrupt>:
+ 2e0: 8f ce rjmp .-738 ; 0x0 <__vectors>
+
+000002e2 <LEDs_SetAllLEDs>:
+ PORTD &= ~LEDMask;
+ }
+
+ static inline void LEDs_SetAllLEDs(const uint8_t LEDMask)
+ {
+ PORTD = ((PORTD & ~LEDS_ALL_LEDS) | LEDMask);
+ 2e2: 9b b1 in r25, 0x0b ; 11
+ 2e4: 9f 70 andi r25, 0x0F ; 15
+ 2e6: 98 2b or r25, r24
+ 2e8: 9b b9 out 0x0b, r25 ; 11
+ }
+ 2ea: 08 95 ret
+
+000002ec <SetupHardware>:
+
+/** 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);
+ 2ec: 84 b7 in r24, 0x34 ; 52
+ 2ee: 87 7f andi r24, 0xF7 ; 247
+ 2f0: 84 bf out 0x34, r24 ; 52
+ wdt_disable();
+ 2f2: 28 e1 ldi r18, 0x18 ; 24
+ 2f4: 0f b6 in r0, 0x3f ; 63
+ 2f6: f8 94 cli
+ 2f8: 20 93 60 00 sts 0x0060, r18
+ 2fc: 10 92 60 00 sts 0x0060, r1
+ 300: 0f be out 0x3f, r0 ; 63
+The type of x is clock_div_t.
+*/
+void clock_prescale_set(clock_div_t __x)
+{
+ uint8_t __tmp = _BV(CLKPCE);
+ __asm__ __volatile__ (
+ 302: 90 e0 ldi r25, 0x00 ; 0
+ 304: 80 e8 ldi r24, 0x80 ; 128
+ 306: 0f b6 in r0, 0x3f ; 63
+ 308: f8 94 cli
+ 30a: 80 93 61 00 sts 0x0061, r24
+ 30e: 90 93 61 00 sts 0x0061, r25
+ 312: 0f be out 0x3f, r0 ; 63
+ * \param[in] DoubleSpeed Enables double speed mode when set, halving the sample time to double the baud rate.
+ */
+ static inline void Serial_Init(const uint32_t BaudRate,
+ const bool DoubleSpeed)
+ {
+ UBRR1 = (DoubleSpeed ? SERIAL_2X_UBBRVAL(BaudRate) : SERIAL_UBBRVAL(BaudRate));
+ 314: 83 e3 ldi r24, 0x33 ; 51
+ 316: 90 e0 ldi r25, 0x00 ; 0
+ 318: 90 93 cd 00 sts 0x00CD, r25
+ 31c: 80 93 cc 00 sts 0x00CC, r24
+
+ UCSR1C = ((1 << UCSZ11) | (1 << UCSZ10));
+ 320: 86 e0 ldi r24, 0x06 ; 6
+ 322: 80 93 ca 00 sts 0x00CA, r24
+ UCSR1A = (DoubleSpeed ? (1 << U2X1) : 0);
+ 326: 10 92 c8 00 sts 0x00C8, r1
+ UCSR1B = ((1 << TXEN1) | (1 << RXEN1));
+ 32a: 20 93 c9 00 sts 0x00C9, r18
+
+ DDRD |= (1 << 3);
+ 32e: 53 9a sbi 0x0a, 3 ; 10
+ PORTD |= (1 << 2);
+ 330: 5a 9a sbi 0x0b, 2 ; 11
+
+ /* Inline Functions: */
+ #if !defined(__DOXYGEN__)
+ static inline void LEDs_Init(void)
+ {
+ DDRD |= LEDS_ALL_LEDS;
+ 332: 8a b1 in r24, 0x0a ; 10
+ 334: 80 6f ori r24, 0xF0 ; 240
+ 336: 8a b9 out 0x0a, r24 ; 10
+ PORTD &= ~LEDS_ALL_LEDS;
+ 338: 8b b1 in r24, 0x0b ; 11
+ 33a: 8f 70 andi r24, 0x0F ; 15
+ 33c: 8b b9 out 0x0b, r24 ; 11
+ clock_prescale_set(clock_div_1);
+
+ /* Hardware Initialization */
+ Serial_Init(9600, false);
+ LEDs_Init();
+ USB_Init();
+ 33e: 34 d5 rcall .+2664 ; 0xda8 <USB_Init>
+ static inline void Serial_CreateStream(FILE* Stream)
+ {
+ if (!(Stream))
+ {
+ Stream = &USARTSerialStream;
+ stdin = Stream;
+ 340: ec e2 ldi r30, 0x2C ; 44
+ 342: f1 e0 ldi r31, 0x01 ; 1
+ 344: f0 93 3b 01 sts 0x013B, r31
+ 348: e0 93 3a 01 sts 0x013A, r30
+ stdout = Stream;
+ 34c: f0 93 3d 01 sts 0x013D, r31
+ 350: e0 93 3c 01 sts 0x013C, r30
+ }
+
+ *Stream = (FILE)FDEV_SETUP_STREAM(Serial_putchar, Serial_getchar, _FDEV_SETUP_RW);
+ 354: 8e e0 ldi r24, 0x0E ; 14
+ 356: df 01 movw r26, r30
+ 358: 1d 92 st X+, r1
+ 35a: 8a 95 dec r24
+ 35c: e9 f7 brne .-6 ; 0x358 <SetupHardware+0x6c>
+ 35e: 83 e0 ldi r24, 0x03 ; 3
+ 360: 80 93 2f 01 sts 0x012F, r24
+ 364: 85 e6 ldi r24, 0x65 ; 101
+ 366: 99 e0 ldi r25, 0x09 ; 9
+ 368: 90 93 35 01 sts 0x0135, r25
+ 36c: 80 93 34 01 sts 0x0134, r24
+ 370: 8e e6 ldi r24, 0x6E ; 110
+ 372: 99 e0 ldi r25, 0x09 ; 9
+ 374: 90 93 37 01 sts 0x0137, r25
+ 378: 80 93 36 01 sts 0x0136, r24
+
+ /* Create a stdio stream for the serial port for stdin and stdout */
+ Serial_CreateStream(NULL);
+}
+ 37c: 08 95 ret
+
+0000037e <EVENT_USB_Host_DeviceAttached>:
+/** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and
+ * starts the library USB task to begin the enumeration and USB management process.
+ */
+void EVENT_USB_Host_DeviceAttached(void)
+{
+ puts_P(PSTR(ESC_FG_GREEN "Device Attached.\r\n" ESC_FG_WHITE));
+ 37e: 81 e6 ldi r24, 0x61 ; 97
+ 380: 92 e0 ldi r25, 0x02 ; 2
+ 382: de d7 rcall .+4028 ; 0x1340 <puts_P>
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);
+ 384: 80 ea ldi r24, 0xA0 ; 160
+}
+ 386: ad cf rjmp .-166 ; 0x2e2 <LEDs_SetAllLEDs>
+
+00000388 <EVENT_USB_Host_DeviceUnattached>:
+/** Event handler for the USB_DeviceUnattached event. This indicates that a device has been removed from the host, and
+ * stops the library USB task management process.
+ */
+void EVENT_USB_Host_DeviceUnattached(void)
+{
+ puts_P(PSTR(ESC_FG_GREEN "Device Unattached.\r\n" ESC_FG_WHITE));
+ 388: 82 e4 ldi r24, 0x42 ; 66
+ 38a: 92 e0 ldi r25, 0x02 ; 2
+ 38c: d9 d7 rcall .+4018 ; 0x1340 <puts_P>
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
+ 38e: 80 e1 ldi r24, 0x10 ; 16
+}
+ 390: a8 cf rjmp .-176 ; 0x2e2 <LEDs_SetAllLEDs>
+
+00000392 <EVENT_USB_Host_DeviceEnumerationComplete>:
+/** Event handler for the USB_DeviceEnumerationComplete event. This indicates that a device has been successfully
+ * enumerated by the host and is now ready to be used by the application.
+ */
+void EVENT_USB_Host_DeviceEnumerationComplete(void)
+{
+ LEDs_SetAllLEDs(LEDMASK_USB_READY);
+ 392: 80 e6 ldi r24, 0x60 ; 96
+}
+ 394: a6 cf rjmp .-180 ; 0x2e2 <LEDs_SetAllLEDs>
+
+00000396 <EVENT_USB_Host_HostError>:
+
+/** Event handler for the USB_HostError event. This indicates that a hardware error occurred while in host mode. */
+void EVENT_USB_Host_HostError(const uint8_t ErrorCode)
+{
+ 396: df 93 push r29
+ 398: cf 93 push r28
+ 39a: 0f 92 push r0
+ 39c: cd b7 in r28, 0x3d ; 61
+ 39e: de b7 in r29, 0x3e ; 62
+ USB_Disable();
+ 3a0: 89 83 std Y+1, r24 ; 0x01
+ 3a2: 9c d4 rcall .+2360 ; 0xcdc <USB_Disable>
+
+ printf_P(PSTR(ESC_FG_RED "Host Mode Error\r\n"
+ 3a4: 00 d0 rcall .+0 ; 0x3a6 <EVENT_USB_Host_HostError+0x10>
+ 3a6: 00 d0 rcall .+0 ; 0x3a8 <EVENT_USB_Host_HostError+0x12>
+ 3a8: ed b7 in r30, 0x3d ; 61
+ 3aa: fe b7 in r31, 0x3e ; 62
+ 3ac: 31 96 adiw r30, 0x01 ; 1
+ 3ae: 23 e1 ldi r18, 0x13 ; 19
+ 3b0: 32 e0 ldi r19, 0x02 ; 2
+ 3b2: ad b7 in r26, 0x3d ; 61
+ 3b4: be b7 in r27, 0x3e ; 62
+ 3b6: 12 96 adiw r26, 0x02 ; 2
+ 3b8: 3c 93 st X, r19
+ 3ba: 2e 93 st -X, r18
+ 3bc: 11 97 sbiw r26, 0x01 ; 1
+ 3be: 89 81 ldd r24, Y+1 ; 0x01
+ 3c0: 82 83 std Z+2, r24 ; 0x02
+ 3c2: 13 82 std Z+3, r1 ; 0x03
+ 3c4: 9e d7 rcall .+3900 ; 0x1302 <printf_P>
+ " -- Error Code %d\r\n" ESC_FG_WHITE), ErrorCode);
+
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+ 3c6: 0f 90 pop r0
+ 3c8: 0f 90 pop r0
+ 3ca: 0f 90 pop r0
+ 3cc: 0f 90 pop r0
+ 3ce: 80 e9 ldi r24, 0x90 ; 144
+ 3d0: 88 df rcall .-240 ; 0x2e2 <LEDs_SetAllLEDs>
+ 3d2: ff cf rjmp .-2 ; 0x3d2 <EVENT_USB_Host_HostError+0x3c>
+
+000003d4 <EVENT_USB_Host_DeviceEnumerationFailed>:
+ * enumerating an attached USB device.
+ */
+void EVENT_USB_Host_DeviceEnumerationFailed(const uint8_t ErrorCode,
+ const uint8_t SubErrorCode)
+{
+ printf_P(PSTR(ESC_FG_RED "Dev Enum Error\r\n"
+ 3d4: 90 91 2b 01 lds r25, 0x012B
+ 3d8: 2d b7 in r18, 0x3d ; 61
+ 3da: 3e b7 in r19, 0x3e ; 62
+ 3dc: 28 50 subi r18, 0x08 ; 8
+ 3de: 30 40 sbci r19, 0x00 ; 0
+ 3e0: 0f b6 in r0, 0x3f ; 63
+ 3e2: f8 94 cli
+ 3e4: 3e bf out 0x3e, r19 ; 62
+ 3e6: 0f be out 0x3f, r0 ; 63
+ 3e8: 2d bf out 0x3d, r18 ; 61
+ 3ea: ed b7 in r30, 0x3d ; 61
+ 3ec: fe b7 in r31, 0x3e ; 62
+ 3ee: 31 96 adiw r30, 0x01 ; 1
+ 3f0: 2d eb ldi r18, 0xBD ; 189
+ 3f2: 31 e0 ldi r19, 0x01 ; 1
+ 3f4: ad b7 in r26, 0x3d ; 61
+ 3f6: be b7 in r27, 0x3e ; 62
+ 3f8: 12 96 adiw r26, 0x02 ; 2
+ 3fa: 3c 93 st X, r19
+ 3fc: 2e 93 st -X, r18
+ 3fe: 11 97 sbiw r26, 0x01 ; 1
+ 400: 82 83 std Z+2, r24 ; 0x02
+ 402: 13 82 std Z+3, r1 ; 0x03
+ 404: 64 83 std Z+4, r22 ; 0x04
+ 406: 15 82 std Z+5, r1 ; 0x05
+ 408: 96 83 std Z+6, r25 ; 0x06
+ 40a: 17 82 std Z+7, r1 ; 0x07
+ 40c: 7a d7 rcall .+3828 ; 0x1302 <printf_P>
+ " -- Error Code %d\r\n"
+ " -- Sub Error Code %d\r\n"
+ " -- In State %d\r\n" ESC_FG_WHITE), ErrorCode, SubErrorCode, USB_HostState);
+
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+ 40e: 2d b7 in r18, 0x3d ; 61
+ 410: 3e b7 in r19, 0x3e ; 62
+ 412: 28 5f subi r18, 0xF8 ; 248
+ 414: 3f 4f sbci r19, 0xFF ; 255
+ 416: 0f b6 in r0, 0x3f ; 63
+ 418: f8 94 cli
+ 41a: 3e bf out 0x3e, r19 ; 62
+ 41c: 0f be out 0x3f, r0 ; 63
+ 41e: 2d bf out 0x3d, r18 ; 61
+ 420: 80 e9 ldi r24, 0x90 ; 144
+}
+ 422: 5f cf rjmp .-322 ; 0x2e2 <LEDs_SetAllLEDs>
+
+00000424 <Audio_Task>:
+
+void Audio_Task(void)
+{
+ 424: 1f 93 push r17
+ 426: df 93 push r29
+ 428: cf 93 push r28
+ 42a: 00 d0 rcall .+0 ; 0x42c <Audio_Task+0x8>
+ 42c: 0f 92 push r0
+ 42e: cd b7 in r28, 0x3d ; 61
+ 430: de b7 in r29, 0x3e ; 62
+ uint8_t ErrorCode;
+
+ switch (USB_HostState)
+ 432: 80 91 2b 01 lds r24, 0x012B
+ 436: 8b 30 cpi r24, 0x0B ; 11
+ 438: 09 f0 breq .+2 ; 0x43c <Audio_Task+0x18>
+ 43a: 87 c0 rjmp .+270 ; 0x54a <Audio_Task+0x126>
+ {
+ case HOST_STATE_Addressed:
+ puts_P(PSTR("Getting Config Data.\r\n"));
+ 43c: 86 ea ldi r24, 0xA6 ; 166
+ 43e: 91 e0 ldi r25, 0x01 ; 1
+ 440: 7f d7 rcall .+3838 ; 0x1340 <puts_P>
+
+ /* Get and process the configuration descriptor data */
+ if ((ErrorCode = ProcessConfigurationDescriptor()) != SuccessfulConfigRead)
+ 442: 30 d1 rcall .+608 ; 0x6a4 <ProcessConfigurationDescriptor>
+ 444: 18 2f mov r17, r24
+ 446: 88 23 and r24, r24
+ 448: e9 f0 breq .+58 ; 0x484 <Audio_Task+0x60>
+ {
+ if (ErrorCode == ControlError)
+ 44a: 81 30 cpi r24, 0x01 ; 1
+ 44c: 19 f4 brne .+6 ; 0x454 <Audio_Task+0x30>
+ puts_P(PSTR(ESC_FG_RED "Control Error (Get Configuration).\r\n"));
+ 44e: 8c e7 ldi r24, 0x7C ; 124
+ 450: 91 e0 ldi r25, 0x01 ; 1
+ 452: 02 c0 rjmp .+4 ; 0x458 <Audio_Task+0x34>
+ else
+ puts_P(PSTR(ESC_FG_RED "Invalid Device.\r\n"));
+ 454: 85 e6 ldi r24, 0x65 ; 101
+ 456: 91 e0 ldi r25, 0x01 ; 1
+ 458: 73 d7 rcall .+3814 ; 0x1340 <puts_P>
+
+ printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
+ 45a: 00 d0 rcall .+0 ; 0x45c <Audio_Task+0x38>
+ 45c: 00 d0 rcall .+0 ; 0x45e <Audio_Task+0x3a>
+ 45e: ed b7 in r30, 0x3d ; 61
+ 460: fe b7 in r31, 0x3e ; 62
+ 462: 31 96 adiw r30, 0x01 ; 1
+ 464: 2b e4 ldi r18, 0x4B ; 75
+ 466: 31 e0 ldi r19, 0x01 ; 1
+ 468: ad b7 in r26, 0x3d ; 61
+ 46a: be b7 in r27, 0x3e ; 62
+ 46c: 12 96 adiw r26, 0x02 ; 2
+ 46e: 3c 93 st X, r19
+ 470: 2e 93 st -X, r18
+ 472: 11 97 sbiw r26, 0x01 ; 1
+ 474: 12 83 std Z+2, r17 ; 0x02
+ 476: 13 82 std Z+3, r1 ; 0x03
+ 478: 44 d7 rcall .+3720 ; 0x1302 <printf_P>
+
+ /* Indicate error status */
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+ 47a: 0f 90 pop r0
+ 47c: 0f 90 pop r0
+ 47e: 0f 90 pop r0
+ 480: 0f 90 pop r0
+ 482: 4a c0 rjmp .+148 ; 0x518 <Audio_Task+0xf4>
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ break;
+ }
+
+ /* Set the device configuration to the first configuration (rarely do devices use multiple configurations) */
+ if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)
+ 484: 81 e0 ldi r24, 0x01 ; 1
+ 486: 82 d3 rcall .+1796 ; 0xb8c <USB_Host_SetDeviceConfiguration>
+ 488: 88 23 and r24, r24
+ 48a: 41 f0 breq .+16 ; 0x49c <Audio_Task+0x78>
+ {
+ printf_P(PSTR(ESC_FG_RED "Control Error (Set Configuration).\r\n"
+ 48c: 00 d0 rcall .+0 ; 0x48e <Audio_Task+0x6a>
+ 48e: 00 d0 rcall .+0 ; 0x490 <Audio_Task+0x6c>
+ 490: ed b7 in r30, 0x3d ; 61
+ 492: fe b7 in r31, 0x3e ; 62
+ 494: 31 96 adiw r30, 0x01 ; 1
+ 496: 28 e0 ldi r18, 0x08 ; 8
+ 498: 31 e0 ldi r19, 0x01 ; 1
+ 49a: 0e c0 rjmp .+28 ; 0x4b8 <Audio_Task+0x94>
+ /* Wait until USB device disconnected */
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ break;
+ }
+
+ if ((ErrorCode = USB_Host_SetInterfaceAltSetting(StreamingInterfaceIndex,
+ 49c: 80 91 1c 01 lds r24, 0x011C
+ 4a0: 60 91 1d 01 lds r22, 0x011D
+ 4a4: 89 d3 rcall .+1810 ; 0xbb8 <USB_Host_SetInterfaceAltSetting>
+ 4a6: 88 23 and r24, r24
+ 4a8: 79 f0 breq .+30 ; 0x4c8 <Audio_Task+0xa4>
+ StreamingInterfaceAltSetting)) != HOST_SENDCONTROL_Successful)
+ {
+ printf_P(PSTR(ESC_FG_RED "Could not set alternative streaming interface setting.\r\n"
+ 4aa: 00 d0 rcall .+0 ; 0x4ac <Audio_Task+0x88>
+ 4ac: 00 d0 rcall .+0 ; 0x4ae <Audio_Task+0x8a>
+ 4ae: ed b7 in r30, 0x3d ; 61
+ 4b0: fe b7 in r31, 0x3e ; 62
+ 4b2: 31 96 adiw r30, 0x01 ; 1
+ 4b4: 21 eb ldi r18, 0xB1 ; 177
+ 4b6: 30 e0 ldi r19, 0x00 ; 0
+ 4b8: ad b7 in r26, 0x3d ; 61
+ 4ba: be b7 in r27, 0x3e ; 62
+ 4bc: 12 96 adiw r26, 0x02 ; 2
+ 4be: 3c 93 st X, r19
+ 4c0: 2e 93 st -X, r18
+ 4c2: 11 97 sbiw r26, 0x01 ; 1
+ 4c4: 82 83 std Z+2, r24 ; 0x02
+ 4c6: d7 cf rjmp .-82 ; 0x476 <Audio_Task+0x52>
+ /* Wait until USB device disconnected */
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ break;
+ }
+
+ USB_ControlRequest = (USB_Request_Header_t)
+ 4c8: 20 91 1e 01 lds r18, 0x011E
+ 4cc: 82 e2 ldi r24, 0x22 ; 34
+ 4ce: 80 93 23 01 sts 0x0123, r24
+ 4d2: 81 e0 ldi r24, 0x01 ; 1
+ 4d4: 80 93 24 01 sts 0x0124, r24
+ 4d8: 80 e0 ldi r24, 0x00 ; 0
+ 4da: 91 e0 ldi r25, 0x01 ; 1
+ 4dc: 90 93 26 01 sts 0x0126, r25
+ 4e0: 80 93 25 01 sts 0x0125, r24
+ 4e4: 20 93 27 01 sts 0x0127, r18
+ 4e8: 10 92 28 01 sts 0x0128, r1
+ 4ec: 83 e0 ldi r24, 0x03 ; 3
+ 4ee: 90 e0 ldi r25, 0x00 ; 0
+ 4f0: 90 93 2a 01 sts 0x012A, r25
+ 4f4: 80 93 29 01 sts 0x0129, r24
+ .wValue = 0x0100,
+ .wIndex = StreamingEndpointAddress,
+ .wLength = sizeof(USB_Audio_SampleFreq_t),
+ };
+
+ USB_Audio_SampleFreq_t SampleRate = AUDIO_SAMPLE_FREQ(48000);
+ 4f8: de 01 movw r26, r28
+ 4fa: 11 96 adiw r26, 0x01 ; 1
+ 4fc: e0 e0 ldi r30, 0x00 ; 0
+ 4fe: f1 e0 ldi r31, 0x01 ; 1
+ 500: 83 e0 ldi r24, 0x03 ; 3
+ 502: 01 90 ld r0, Z+
+ 504: 0d 92 st X+, r0
+ 506: 81 50 subi r24, 0x01 ; 1
+ 508: e1 f7 brne .-8 ; 0x502 <Audio_Task+0xde>
+ * \param[in] PipeNumber Index of the pipe to select.
+ */
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)
+ {
+ UPNUM = PipeNumber;
+ 50a: 10 92 a7 00 sts 0x00A7, r1
+
+ /* Select the control pipe for the request transfer */
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ /* Set the sample rate on the streaming interface endpoint */
+ if ((ErrorCode = USB_Host_SendControlRequest(&SampleRate)) != HOST_SENDCONTROL_Successful)
+ 50e: ce 01 movw r24, r28
+ 510: 01 96 adiw r24, 0x01 ; 1
+ 512: b7 d5 rcall .+2926 ; 0x1082 <USB_Host_SendControlRequest>
+ 514: 88 23 and r24, r24
+ 516: 29 f0 breq .+10 ; 0x522 <Audio_Task+0xfe>
+ {
+ /* Indicate error status */
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+ 518: 80 e9 ldi r24, 0x90 ; 144
+ 51a: e3 de rcall .-570 ; 0x2e2 <LEDs_SetAllLEDs>
+
+ /* Wait until USB device disconnected */
+ USB_HostState = HOST_STATE_WaitForDeviceRemoval;
+ 51c: 10 92 2b 01 sts 0x012B, r1
+ break;
+ 520: 14 c0 rjmp .+40 ; 0x54a <Audio_Task+0x126>
+ }
+
+ /* Sample reload timer initialization */
+ TIMSK0 = (1 << OCIE0A);
+ 522: 82 e0 ldi r24, 0x02 ; 2
+ 524: 80 93 6e 00 sts 0x006E, r24
+ OCR0A = ((F_CPU / 8 / 8000) - 1);
+ 528: 9c e7 ldi r25, 0x7C ; 124
+ 52a: 97 bd out 0x27, r25 ; 39
+ TCCR0A = (1 << WGM01); // CTC mode
+ 52c: 84 bd out 0x24, r24 ; 36
+ TCCR0B = (1 << CS01); // Fcpu/8 speed
+ 52e: 85 bd out 0x25, r24 ; 37
+
+ /* Set speaker as output */
+ DDRC |= (1 << 6);
+ 530: 3e 9a sbi 0x07, 6 ; 7
+
+ /* PWM speaker timer initialization */
+ TCCR3A = ((1 << WGM30) | (1 << COM3A1) | (1 << COM3A0)
+ 532: 81 ef ldi r24, 0xF1 ; 241
+ 534: 80 93 90 00 sts 0x0090, r24
+ | (1 << COM3B1) | (1 << COM3B0)); // Set on match, clear on TOP
+ TCCR3B = ((1 << WGM32) | (1 << CS30)); // Fast 8-Bit PWM, F_CPU speed
+ 538: 89 e0 ldi r24, 0x09 ; 9
+ 53a: 80 93 91 00 sts 0x0091, r24
+
+ puts_P(PSTR("Microphone Enumerated.\r\n"));
+ 53e: 88 e9 ldi r24, 0x98 ; 152
+ 540: 90 e0 ldi r25, 0x00 ; 0
+ 542: fe d6 rcall .+3580 ; 0x1340 <puts_P>
+
+ USB_HostState = HOST_STATE_Configured;
+ 544: 8c e0 ldi r24, 0x0C ; 12
+ 546: 80 93 2b 01 sts 0x012B, r24
+ break;
+ case HOST_STATE_Configured:
+ break;
+ }
+}
+ 54a: 0f 90 pop r0
+ 54c: 0f 90 pop r0
+ 54e: 0f 90 pop r0
+ 550: cf 91 pop r28
+ 552: df 91 pop r29
+ 554: 1f 91 pop r17
+ 556: 08 95 ret
+
+00000558 <main>:
+/** Main program entry point. This routine configures the hardware required by the application, then
+ * enters a loop to run the application tasks in sequence.
+ */
+int main(void)
+{
+ SetupHardware();
+ 558: c9 de rcall .-622 ; 0x2ec <SetupHardware>
+
+ puts_P(PSTR(ESC_FG_CYAN "Audio Host Demo running.\r\n" ESC_FG_WHITE));
+ 55a: 8e e7 ldi r24, 0x7E ; 126
+ 55c: 92 e0 ldi r25, 0x02 ; 2
+ 55e: f0 d6 rcall .+3552 ; 0x1340 <puts_P>
+
+ LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY);
+ 560: 80 e1 ldi r24, 0x10 ; 16
+ 562: bf de rcall .-642 ; 0x2e2 <LEDs_SetAllLEDs>
+ sei();
+ 564: 78 94 sei
+
+ for (;;)
+ {
+ Audio_Task();
+ 566: 5e df rcall .-324 ; 0x424 <Audio_Task>
+ USB_USBTask();
+ 568: a2 d6 rcall .+3396 ; 0x12ae <USB_USBTask>
+ 56a: fd cf rjmp .-6 ; 0x566 <main+0xe>
+
+0000056c <__vector_21>:
+ }
+}
+
+/** ISR to handle the reloading of the PWM timer with the next sample. */
+ISR(TIMER0_COMPA_vect, ISR_BLOCK)
+{
+ 56c: 1f 92 push r1
+ 56e: 0f 92 push r0
+ 570: 0f b6 in r0, 0x3f ; 63
+ 572: 0f 92 push r0
+ 574: 0b b6 in r0, 0x3b ; 59
+ 576: 0f 92 push r0
+ 578: 11 24 eor r1, r1
+ 57a: 1f 93 push r17
+ 57c: 2f 93 push r18
+ 57e: 3f 93 push r19
+ 580: 4f 93 push r20
+ 582: 5f 93 push r21
+ 584: 6f 93 push r22
+ 586: 7f 93 push r23
+ 588: 8f 93 push r24
+ 58a: 9f 93 push r25
+ 58c: af 93 push r26
+ 58e: bf 93 push r27
+ 590: ef 93 push r30
+ 592: ff 93 push r31
+ * \return Index of the currently selected pipe.
+ */
+ static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline uint8_t Pipe_GetCurrentPipe(void)
+ {
+ return (UPNUM & PIPE_PIPENUM_MASK);
+ 594: 10 91 a7 00 lds r17, 0x00A7
+ 598: 17 70 andi r17, 0x07 ; 7
+ * \param[in] PipeNumber Index of the pipe to select.
+ */
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)
+ {
+ UPNUM = PipeNumber;
+ 59a: 81 e0 ldi r24, 0x01 ; 1
+ 59c: 80 93 a7 00 sts 0x00A7, r24
+
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Unfreeze(void)
+ {
+ UPCONX &= ~(1 << PFREEZE);
+ 5a0: 80 91 a9 00 lds r24, 0x00A9
+ 5a4: 8f 7b andi r24, 0xBF ; 191
+ 5a6: 80 93 a9 00 sts 0x00A9, r24
+ * \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.
+ */
+ static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsINReceived(void)
+ {
+ return ((UPINTX & (1 << RXINI)) ? true : false);
+ 5aa: 80 91 a6 00 lds r24, 0x00A6
+
+ Pipe_SelectPipe(AUDIO_DATA_IN_PIPE);
+ Pipe_Unfreeze();
+
+ /* Check if the current pipe can be read from (contains a packet) and the device is sending data */
+ if (Pipe_IsINReceived())
+ 5ae: 80 ff sbrs r24, 0
+ 5b0: 2b c0 rjmp .+86 ; 0x608 <__vector_21+0x9c>
+ {
+ uint16_t Value;
+ uint8_t Bytes[2];
+ } Data;
+
+ Data.Bytes[0] = UPDATX;
+ 5b2: 80 91 af 00 lds r24, 0x00AF
+ Data.Bytes[1] = UPDATX;
+ 5b6: 40 91 af 00 lds r20, 0x00AF
+ * on its direction.
+ */
+ static inline bool Pipe_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsReadWriteAllowed(void)
+ {
+ return ((UPINTX & (1 << RWAL)) ? true : false);
+ 5ba: 80 91 a6 00 lds r24, 0x00A6
+ {
+ /* Retrieve the signed 16-bit audio sample, convert to 8-bit */
+ int8_t Sample_8Bit = (Pipe_Read_16_LE() >> 8);
+
+ /* Check to see if the bank is now empty */
+ if (!(Pipe_IsReadWriteAllowed()))
+ 5be: 85 fd sbrc r24, 5
+ 5c0: 05 c0 rjmp .+10 ; 0x5cc <__vector_21+0x60>
+ * \ingroup Group_PipePacketManagement_AVR8
+ */
+ static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearIN(void)
+ {
+ UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));
+ 5c2: 80 91 a6 00 lds r24, 0x00A6
+ 5c6: 8e 77 andi r24, 0x7E ; 126
+ 5c8: 80 93 a6 00 sts 0x00A6, r24
+ /* Acknowledge the packet, clear the bank ready for the next packet */
+ Pipe_ClearIN();
+ }
+
+ /* Load the sample into the PWM timer channel */
+ OCR3A = (Sample_8Bit ^ (1 << 7));
+ 5cc: 84 2f mov r24, r20
+ 5ce: 99 27 eor r25, r25
+ 5d0: 87 fd sbrc r24, 7
+ 5d2: 90 95 com r25
+ 5d4: 20 e8 ldi r18, 0x80 ; 128
+ 5d6: 30 e0 ldi r19, 0x00 ; 0
+ 5d8: 82 27 eor r24, r18
+ 5da: 93 27 eor r25, r19
+ 5dc: 90 93 99 00 sts 0x0099, r25
+ 5e0: 80 93 98 00 sts 0x0098, r24
+
+ uint8_t LEDMask = LEDS_NO_LEDS;
+
+ /* Turn on LEDs as the sample amplitude increases */
+ if (Sample_8Bit > 16)
+ 5e4: 41 31 cpi r20, 0x11 ; 17
+ 5e6: 44 f4 brge .+16 ; 0x5f8 <__vector_21+0x8c>
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);
+ else if (Sample_8Bit > 8)
+ 5e8: 49 30 cpi r20, 0x09 ; 9
+ 5ea: 44 f4 brge .+16 ; 0x5fc <__vector_21+0x90>
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);
+ else if (Sample_8Bit > 4)
+ 5ec: 45 30 cpi r20, 0x05 ; 5
+ 5ee: 44 f4 brge .+16 ; 0x600 <__vector_21+0x94>
+ LEDMask = (LEDS_LED1 | LEDS_LED2);
+ else if (Sample_8Bit > 2)
+ 5f0: 43 30 cpi r20, 0x03 ; 3
+ 5f2: 44 f4 brge .+16 ; 0x604 <__vector_21+0x98>
+ }
+
+ /* Load the sample into the PWM timer channel */
+ OCR3A = (Sample_8Bit ^ (1 << 7));
+
+ uint8_t LEDMask = LEDS_NO_LEDS;
+ 5f4: 80 e0 ldi r24, 0x00 ; 0
+ 5f6: 07 c0 rjmp .+14 ; 0x606 <__vector_21+0x9a>
+
+ /* Turn on LEDs as the sample amplitude increases */
+ if (Sample_8Bit > 16)
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3 | LEDS_LED4);
+ 5f8: 80 ef ldi r24, 0xF0 ; 240
+ 5fa: 05 c0 rjmp .+10 ; 0x606 <__vector_21+0x9a>
+ else if (Sample_8Bit > 8)
+ LEDMask = (LEDS_LED1 | LEDS_LED2 | LEDS_LED3);
+ 5fc: 80 eb ldi r24, 0xB0 ; 176
+ 5fe: 03 c0 rjmp .+6 ; 0x606 <__vector_21+0x9a>
+ else if (Sample_8Bit > 4)
+ LEDMask = (LEDS_LED1 | LEDS_LED2);
+ 600: 80 e3 ldi r24, 0x30 ; 48
+ 602: 01 c0 rjmp .+2 ; 0x606 <__vector_21+0x9a>
+ else if (Sample_8Bit > 2)
+ LEDMask = (LEDS_LED1);
+ 604: 80 e1 ldi r24, 0x10 ; 16
+
+ LEDs_SetAllLEDs(LEDMask);
+ 606: 6d de rcall .-806 ; 0x2e2 <LEDs_SetAllLEDs>
+
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Freeze(void)
+ {
+ UPCONX |= (1 << PFREEZE);
+ 608: 80 91 a9 00 lds r24, 0x00A9
+ 60c: 80 64 ori r24, 0x40 ; 64
+ 60e: 80 93 a9 00 sts 0x00A9, r24
+ * \param[in] PipeNumber Index of the pipe to select.
+ */
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)
+ {
+ UPNUM = PipeNumber;
+ 612: 10 93 a7 00 sts 0x00A7, r17
+ }
+
+ Pipe_Freeze();
+
+ Pipe_SelectPipe(PrevPipe);
+}
+ 616: ff 91 pop r31
+ 618: ef 91 pop r30
+ 61a: bf 91 pop r27
+ 61c: af 91 pop r26
+ 61e: 9f 91 pop r25
+ 620: 8f 91 pop r24
+ 622: 7f 91 pop r23
+ 624: 6f 91 pop r22
+ 626: 5f 91 pop r21
+ 628: 4f 91 pop r20
+ 62a: 3f 91 pop r19
+ 62c: 2f 91 pop r18
+ 62e: 1f 91 pop r17
+ 630: 0f 90 pop r0
+ 632: 0b be out 0x3b, r0 ; 59
+ 634: 0f 90 pop r0
+ 636: 0f be out 0x3f, r0 ; 63
+ 638: 0f 90 pop r0
+ 63a: 1f 90 pop r1
+ 63c: 18 95 reti
+
+0000063e <DComp_NextAudioControlInterface>:
+ /* Valid data found, return success */
+ return SuccessfulConfigRead;
+}
+
+uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor)
+{
+ 63e: fc 01 movw r30, r24
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
+ if (Header->Type == DTYPE_Interface)
+ 640: 81 81 ldd r24, Z+1 ; 0x01
+ 642: 84 30 cpi r24, 0x04 ; 4
+ 644: 49 f4 brne .+18 ; 0x658 <DComp_NextAudioControlInterface+0x1a>
+ {
+ USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
+
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
+ 646: 85 81 ldd r24, Z+5 ; 0x05
+ 648: 81 30 cpi r24, 0x01 ; 1
+ 64a: 31 f4 brne .+12 ; 0x658 <DComp_NextAudioControlInterface+0x1a>
+ 64c: 86 81 ldd r24, Z+6 ; 0x06
+ 64e: 81 30 cpi r24, 0x01 ; 1
+ 650: 19 f4 brne .+6 ; 0x658 <DComp_NextAudioControlInterface+0x1a>
+ (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&
+ 652: 87 81 ldd r24, Z+7 ; 0x07
+ 654: 88 23 and r24, r24
+ 656: 11 f0 breq .+4 ; 0x65c <DComp_NextAudioControlInterface+0x1e>
+ {
+ return DESCRIPTOR_SEARCH_Found;
+ }
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+ 658: 82 e0 ldi r24, 0x02 ; 2
+ 65a: 08 95 ret
+
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
+ (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&
+ (Interface->Protocol == AUDIO_CSCP_ControlProtocol))
+ {
+ return DESCRIPTOR_SEARCH_Found;
+ 65c: 80 e0 ldi r24, 0x00 ; 0
+ }
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+}
+ 65e: 08 95 ret
+
+00000660 <DComp_NextAudioStreamInterface>:
+
+uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor)
+{
+ 660: fc 01 movw r30, r24
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
+ if (Header->Type == DTYPE_Interface)
+ 662: 81 81 ldd r24, Z+1 ; 0x01
+ 664: 84 30 cpi r24, 0x04 ; 4
+ 666: 49 f4 brne .+18 ; 0x67a <DComp_NextAudioStreamInterface+0x1a>
+ {
+ USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
+
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
+ 668: 85 81 ldd r24, Z+5 ; 0x05
+ 66a: 81 30 cpi r24, 0x01 ; 1
+ 66c: 31 f4 brne .+12 ; 0x67a <DComp_NextAudioStreamInterface+0x1a>
+ 66e: 86 81 ldd r24, Z+6 ; 0x06
+ 670: 82 30 cpi r24, 0x02 ; 2
+ 672: 19 f4 brne .+6 ; 0x67a <DComp_NextAudioStreamInterface+0x1a>
+ (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&
+ 674: 87 81 ldd r24, Z+7 ; 0x07
+ 676: 88 23 and r24, r24
+ 678: 11 f0 breq .+4 ; 0x67e <DComp_NextAudioStreamInterface+0x1e>
+ {
+ return DESCRIPTOR_SEARCH_Found;
+ }
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+ 67a: 82 e0 ldi r24, 0x02 ; 2
+ 67c: 08 95 ret
+
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
+ (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&
+ (Interface->Protocol == AUDIO_CSCP_StreamingProtocol))
+ {
+ return DESCRIPTOR_SEARCH_Found;
+ 67e: 80 e0 ldi r24, 0x00 ; 0
+ }
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+}
+ 680: 08 95 ret
+
+00000682 <DComp_NextAudioInterfaceDataEndpoint>:
+
+uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)
+{
+ 682: fc 01 movw r30, r24
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
+ if (Header->Type == DTYPE_Endpoint)
+ 684: 81 81 ldd r24, Z+1 ; 0x01
+ 686: 85 30 cpi r24, 0x05 ; 5
+ 688: 29 f4 brne .+10 ; 0x694 <DComp_NextAudioInterfaceDataEndpoint+0x12>
+ {
+ USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);
+
+ if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)
+ 68a: 83 81 ldd r24, Z+3 ; 0x03
+ 68c: 83 70 andi r24, 0x03 ; 3
+ 68e: 81 30 cpi r24, 0x01 ; 1
+ 690: 19 f4 brne .+6 ; 0x698 <DComp_NextAudioInterfaceDataEndpoint+0x16>
+ 692: 04 c0 rjmp .+8 ; 0x69c <DComp_NextAudioInterfaceDataEndpoint+0x1a>
+ return DESCRIPTOR_SEARCH_Found;
+ }
+ else if (Header->Type == DTYPE_Interface)
+ 694: 84 30 cpi r24, 0x04 ; 4
+ 696: 21 f0 breq .+8 ; 0x6a0 <DComp_NextAudioInterfaceDataEndpoint+0x1e>
+ {
+ return DESCRIPTOR_SEARCH_Fail;
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+ 698: 82 e0 ldi r24, 0x02 ; 2
+ 69a: 08 95 ret
+ if (Header->Type == DTYPE_Endpoint)
+ {
+ USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);
+
+ if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)
+ return DESCRIPTOR_SEARCH_Found;
+ 69c: 80 e0 ldi r24, 0x00 ; 0
+ 69e: 08 95 ret
+ }
+ else if (Header->Type == DTYPE_Interface)
+ {
+ return DESCRIPTOR_SEARCH_Fail;
+ 6a0: 81 e0 ldi r24, 0x01 ; 1
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+}
+ 6a2: 08 95 ret
+
+000006a4 <ProcessConfigurationDescriptor>:
+uint8_t StreamingInterfaceIndex = 0;
+uint8_t StreamingInterfaceAltSetting = 0;
+uint8_t StreamingEndpointAddress = 0;
+
+uint8_t ProcessConfigurationDescriptor(void)
+{
+ 6a4: af 92 push r10
+ 6a6: bf 92 push r11
+ 6a8: cf 92 push r12
+ 6aa: df 92 push r13
+ 6ac: ef 92 push r14
+ 6ae: ff 92 push r15
+ 6b0: 0f 93 push r16
+ 6b2: 1f 93 push r17
+ 6b4: df 93 push r29
+ 6b6: cf 93 push r28
+ 6b8: cd b7 in r28, 0x3d ; 61
+ 6ba: de b7 in r29, 0x3e ; 62
+ 6bc: c4 50 subi r28, 0x04 ; 4
+ 6be: d2 40 sbci r29, 0x02 ; 2
+ 6c0: 0f b6 in r0, 0x3f ; 63
+ 6c2: f8 94 cli
+ 6c4: de bf out 0x3e, r29 ; 62
+ 6c6: 0f be out 0x3f, r0 ; 63
+ 6c8: cd bf out 0x3d, r28 ; 61
+ uint8_t ConfigDescriptorData[512];
+ void* CurrConfigLocation = ConfigDescriptorData;
+ 6ca: ae 01 movw r20, r28
+ 6cc: 4b 5f subi r20, 0xFB ; 251
+ 6ce: 5f 4f sbci r21, 0xFF ; 255
+ 6d0: 5a 83 std Y+2, r21 ; 0x02
+ 6d2: 49 83 std Y+1, r20 ; 0x01
+ USB_Descriptor_Interface_t* AudioControlInterface = NULL;
+ USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;
+ USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;
+
+ /* Retrieve the entire configuration descriptor into the allocated buffer */
+ switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
+ 6d4: 23 e0 ldi r18, 0x03 ; 3
+ 6d6: e2 2e mov r14, r18
+ 6d8: f1 2c mov r15, r1
+ 6da: ec 0e add r14, r28
+ 6dc: fd 1e adc r15, r29
+ 6de: 81 e0 ldi r24, 0x01 ; 1
+ 6e0: b7 01 movw r22, r14
+ 6e2: 20 e0 ldi r18, 0x00 ; 0
+ 6e4: 32 e0 ldi r19, 0x02 ; 2
+ 6e6: 09 d4 rcall .+2066 ; 0xefa <USB_Host_GetDeviceConfigDescriptor>
+ 6e8: 85 30 cpi r24, 0x05 ; 5
+ 6ea: 09 f4 brne .+2 ; 0x6ee <ProcessConfigurationDescriptor+0x4a>
+ 6ec: 5c c0 rjmp .+184 ; 0x7a6 <ProcessConfigurationDescriptor+0x102>
+ 6ee: 86 30 cpi r24, 0x06 ; 6
+ 6f0: 61 f0 breq .+24 ; 0x70a <ProcessConfigurationDescriptor+0x66>
+ 6f2: 88 23 and r24, r24
+ 6f4: 61 f4 brne .+24 ; 0x70e <ProcessConfigurationDescriptor+0x6a>
+ 6f6: 00 e0 ldi r16, 0x00 ; 0
+ 6f8: 10 e0 ldi r17, 0x00 ; 0
+ 6fa: cc 24 eor r12, r12
+ 6fc: dd 24 eor r13, r13
+ 6fe: 57 01 movw r10, r14
+ 700: 7e 01 movw r14, r28
+ 702: 08 94 sec
+ 704: e1 1c adc r14, r1
+ 706: f1 1c adc r15, r1
+ 708: 07 c0 rjmp .+14 ; 0x718 <ProcessConfigurationDescriptor+0x74>
+ {
+ case HOST_GETCONFIG_Successful:
+ break;
+ case HOST_GETCONFIG_InvalidData:
+ return InvalidConfigDataReturned;
+ 70a: 83 e0 ldi r24, 0x03 ; 3
+ 70c: 4f c0 rjmp .+158 ; 0x7ac <ProcessConfigurationDescriptor+0x108>
+ case HOST_GETCONFIG_BuffOverflow:
+ return DescriptorTooLarge;
+ default:
+ return ControlError;
+ 70e: 81 e0 ldi r24, 0x01 ; 1
+ 710: 4d c0 rjmp .+154 ; 0x7ac <ProcessConfigurationDescriptor+0x108>
+ USB_Descriptor_Interface_t* AudioControlInterface = NULL;
+ USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;
+ USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;
+
+ /* Retrieve the entire configuration descriptor into the allocated buffer */
+ switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
+ 712: 9c 01 movw r18, r24
+ 714: 03 2f mov r16, r19
+ 716: 18 2f mov r17, r24
+ return ControlError;
+ }
+
+ while (!(DataINEndpoint))
+ {
+ if (!(AudioControlInterface) ||
+ 718: c1 14 cp r12, r1
+ 71a: d1 04 cpc r13, r1
+ 71c: 41 f0 breq .+16 ; 0x72e <ProcessConfigurationDescriptor+0x8a>
+ USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ 71e: c5 01 movw r24, r10
+ 720: b7 01 movw r22, r14
+ 722: 41 e4 ldi r20, 0x41 ; 65
+ 724: 53 e0 ldi r21, 0x03 ; 3
+ 726: 40 d4 rcall .+2176 ; 0xfa8 <USB_GetNextDescriptorComp>
+ return ControlError;
+ }
+
+ while (!(DataINEndpoint))
+ {
+ if (!(AudioControlInterface) ||
+ 728: 88 23 and r24, r24
+ 72a: 51 f4 brne .+20 ; 0x740 <ProcessConfigurationDescriptor+0x9c>
+ 72c: 1c c0 rjmp .+56 ; 0x766 <ProcessConfigurationDescriptor+0xc2>
+ USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
+ {
+ if (!(AudioControlInterface))
+ {
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ 72e: c5 01 movw r24, r10
+ 730: b7 01 movw r22, r14
+ 732: 4f e1 ldi r20, 0x1F ; 31
+ 734: 53 e0 ldi r21, 0x03 ; 3
+ 736: 38 d4 rcall .+2160 ; 0xfa8 <USB_GetNextDescriptorComp>
+ 738: 88 23 and r24, r24
+ 73a: b9 f5 brne .+110 ; 0x7aa <ProcessConfigurationDescriptor+0x106>
+ /* Descriptor not found, error out */
+ return NoCompatibleInterfaceFound;
+ }
+
+ /* Save the interface in case we need to refer back to it later */
+ AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
+ 73c: c9 80 ldd r12, Y+1 ; 0x01
+ 73e: da 80 ldd r13, Y+2 ; 0x02
+ }
+
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ 740: c5 01 movw r24, r10
+ 742: b7 01 movw r22, r14
+ 744: 40 e3 ldi r20, 0x30 ; 48
+ 746: 53 e0 ldi r21, 0x03 ; 3
+ 748: 2f d4 rcall .+2142 ; 0xfa8 <USB_GetNextDescriptorComp>
+ 74a: 88 23 and r24, r24
+ 74c: 49 f0 breq .+18 ; 0x760 <ProcessConfigurationDescriptor+0xbc>
+ DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found)
+ {
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ 74e: c5 01 movw r24, r10
+ 750: b7 01 movw r22, r14
+ 752: 4f e1 ldi r20, 0x1F ; 31
+ 754: 53 e0 ldi r21, 0x03 ; 3
+ 756: 28 d4 rcall .+2128 ; 0xfa8 <USB_GetNextDescriptorComp>
+ 758: 88 23 and r24, r24
+ 75a: 39 f5 brne .+78 ; 0x7aa <ProcessConfigurationDescriptor+0x106>
+ /* Descriptor not found, error out */
+ return NoCompatibleInterfaceFound;
+ }
+
+ /* Save the interface in case we need to refer back to it later */
+ AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
+ 75c: c9 80 ldd r12, Y+1 ; 0x01
+ 75e: da 80 ldd r13, Y+2 ; 0x02
+ }
+
+ /* Save the interface in case we need to refer back to it later */
+ AudioStreamingInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
+ 760: 09 81 ldd r16, Y+1 ; 0x01
+ 762: 1a 81 ldd r17, Y+2 ; 0x02
+
+ /* Skip the remainder of the loop as we have not found an endpoint yet */
+ continue;
+ 764: 35 c0 rjmp .+106 ; 0x7d0 <ProcessConfigurationDescriptor+0x12c>
+ }
+
+ /* Retrieve the endpoint address from the endpoint descriptor */
+ USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);
+ 766: e9 81 ldd r30, Y+1 ; 0x01
+ 768: fa 81 ldd r31, Y+2 ; 0x02
+
+ /* If the endpoint is a IN type endpoint */
+ if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
+ 76a: 82 81 ldd r24, Z+2 ; 0x02
+ 76c: 87 ff sbrs r24, 7
+ 76e: 30 c0 rjmp .+96 ; 0x7d0 <ProcessConfigurationDescriptor+0x12c>
+ 770: 90 2f mov r25, r16
+ 772: 81 2f mov r24, r17
+ return DescriptorTooLarge;
+ default:
+ return ControlError;
+ }
+
+ while (!(DataINEndpoint))
+ 774: 30 97 sbiw r30, 0x00 ; 0
+ 776: 69 f2 breq .-102 ; 0x712 <ProcessConfigurationDescriptor+0x6e>
+ /* If the endpoint is a IN type endpoint */
+ if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
+ DataINEndpoint = EndpointData;
+ }
+
+ StreamingInterfaceIndex = AudioStreamingInterface->InterfaceNumber;
+ 778: d8 01 movw r26, r16
+ 77a: 12 96 adiw r26, 0x02 ; 2
+ 77c: 8c 91 ld r24, X
+ 77e: 12 97 sbiw r26, 0x02 ; 2
+ 780: 80 93 1c 01 sts 0x011C, r24
+ StreamingInterfaceAltSetting = AudioStreamingInterface->AlternateSetting;
+ 784: 13 96 adiw r26, 0x03 ; 3
+ 786: 8c 91 ld r24, X
+ 788: 80 93 1d 01 sts 0x011D, r24
+ StreamingEndpointAddress = DataINEndpoint->EndpointAddress;
+ 78c: 22 81 ldd r18, Z+2 ; 0x02
+ 78e: 20 93 1e 01 sts 0x011E, r18
+
+ /* Configure the HID data IN pipe */
+ Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,
+ 792: 04 81 ldd r16, Z+4 ; 0x04
+ 794: 15 81 ldd r17, Z+5 ; 0x05
+ 796: 81 e0 ldi r24, 0x01 ; 1
+ 798: 61 e0 ldi r22, 0x01 ; 1
+ 79a: 40 e1 ldi r20, 0x10 ; 16
+ 79c: 94 e0 ldi r25, 0x04 ; 4
+ 79e: e9 2e mov r14, r25
+ 7a0: 22 d2 rcall .+1092 ; 0xbe6 <Pipe_ConfigurePipe>
+ DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);
+
+ /* Valid data found, return success */
+ return SuccessfulConfigRead;
+ 7a2: 80 e0 ldi r24, 0x00 ; 0
+ 7a4: 03 c0 rjmp .+6 ; 0x7ac <ProcessConfigurationDescriptor+0x108>
+ case HOST_GETCONFIG_Successful:
+ break;
+ case HOST_GETCONFIG_InvalidData:
+ return InvalidConfigDataReturned;
+ case HOST_GETCONFIG_BuffOverflow:
+ return DescriptorTooLarge;
+ 7a6: 82 e0 ldi r24, 0x02 ; 2
+ 7a8: 01 c0 rjmp .+2 ; 0x7ac <ProcessConfigurationDescriptor+0x108>
+ {
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)
+ {
+ /* Descriptor not found, error out */
+ return NoCompatibleInterfaceFound;
+ 7aa: 84 e0 ldi r24, 0x04 ; 4
+ Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,
+ DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);
+
+ /* Valid data found, return success */
+ return SuccessfulConfigRead;
+}
+ 7ac: cc 5f subi r28, 0xFC ; 252
+ 7ae: dd 4f sbci r29, 0xFD ; 253
+ 7b0: 0f b6 in r0, 0x3f ; 63
+ 7b2: f8 94 cli
+ 7b4: de bf out 0x3e, r29 ; 62
+ 7b6: 0f be out 0x3f, r0 ; 63
+ 7b8: cd bf out 0x3d, r28 ; 61
+ 7ba: cf 91 pop r28
+ 7bc: df 91 pop r29
+ 7be: 1f 91 pop r17
+ 7c0: 0f 91 pop r16
+ 7c2: ff 90 pop r15
+ 7c4: ef 90 pop r14
+ 7c6: df 90 pop r13
+ 7c8: cf 90 pop r12
+ 7ca: bf 90 pop r11
+ 7cc: af 90 pop r10
+ 7ce: 08 95 ret
+ USB_Descriptor_Interface_t* AudioControlInterface = NULL;
+ USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;
+ USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;
+
+ /* Retrieve the entire configuration descriptor into the allocated buffer */
+ switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
+ 7d0: 90 2f mov r25, r16
+ 7d2: 81 2f mov r24, r17
+ 7d4: 9e cf rjmp .-196 ; 0x712 <ProcessConfigurationDescriptor+0x6e>
+
+000007d6 <USB_Host_ResetDevice>:
+ * \return Boolean \c true if the bus is currently suspended, \c false otherwise.
+ */
+ static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool USB_Host_IsBusSuspended(void)
+ {
+ return ((UHCON & (1 << SOFEN)) ? false : true);
+ 7d6: 80 91 9e 00 lds r24, 0x009E
+ 7da: 90 e0 ldi r25, 0x00 ; 0
+ 7dc: 81 70 andi r24, 0x01 ; 1
+ 7de: 90 70 andi r25, 0x00 ; 0
+ break;
+ case USB_INT_DCONNI:
+ UHIEN &= ~(1 << DCONNE);
+ break;
+ case USB_INT_DDISCI:
+ UHIEN &= ~(1 << DDISCE);
+ 7e0: 20 91 a0 00 lds r18, 0x00A0
+ 7e4: 2d 7f andi r18, 0xFD ; 253
+ 7e6: 20 93 a0 00 sts 0x00A0, r18
+ * woken up automatically and the bus resumed after the reset has been correctly issued.
+ */
+ static inline void USB_Host_ResetBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_ResetBus(void)
+ {
+ UHCON |= (1 << RESET);
+ 7ea: 20 91 9e 00 lds r18, 0x009E
+ 7ee: 22 60 ori r18, 0x02 ; 2
+ 7f0: 20 93 9e 00 sts 0x009E, r18
+ * \return Boolean \c true if no bus reset is currently being sent, \c false otherwise.
+ */
+ static inline bool USB_Host_IsBusResetComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool USB_Host_IsBusResetComplete(void)
+ {
+ return ((UHCON & (1 << RESET)) ? false : true);
+ 7f4: 20 91 9e 00 lds r18, 0x009E
+ bool BusSuspended = USB_Host_IsBusSuspended();
+
+ USB_INT_Disable(USB_INT_DDISCI);
+
+ USB_Host_ResetBus();
+ while (!(USB_Host_IsBusResetComplete()));
+ 7f8: 21 fd sbrc r18, 1
+ 7fa: fc cf rjmp .-8 ; 0x7f4 <USB_Host_ResetDevice+0x1e>
+ * host and attached device may occur.
+ */
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_ResumeBus(void)
+ {
+ UHCON |= (1 << SOFEN);
+ 7fc: 20 91 9e 00 lds r18, 0x009E
+ 800: 21 60 ori r18, 0x01 ; 1
+ 802: 20 93 9e 00 sts 0x009E, r18
+ case USB_INT_RXSTPI:
+ return (UEIENX & (1 << RXSTPE));
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ return (UHIEN & (1 << HSOFE));
+ 806: 20 91 a0 00 lds r18, 0x00A0
+ 80a: 30 e0 ldi r19, 0x00 ; 0
+ 80c: 20 72 andi r18, 0x20 ; 32
+ 80e: 30 70 andi r19, 0x00 ; 0
+ UEIENX &= ~(1 << RXSTPE);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHIEN &= ~(1 << HSOFE);
+ 810: 40 91 a0 00 lds r20, 0x00A0
+ 814: 4f 7d andi r20, 0xDF ; 223
+ 816: 40 93 a0 00 sts 0x00A0, r20
+ UEINTX &= ~(1 << RXSTPI);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHINT &= ~(1 << HSOFI);
+ 81a: 40 91 9f 00 lds r20, 0x009F
+ 81e: 4f 7d andi r20, 0xDF ; 223
+ 820: 40 93 9f 00 sts 0x009F, r20
+ 824: 4a e0 ldi r20, 0x0A ; 10
+ case USB_INT_RXSTPI:
+ return (UEINTX & (1 << RXSTPI));
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ return (UHINT & (1 << HSOFI));
+ 826: 50 91 9f 00 lds r21, 0x009F
+ /* Workaround for powerless-pull-up devices. After a USB bus reset,
+ all disconnection interrupts are suppressed while a USB frame is
+ looked for - if it is found within 10ms, the device is still
+ present. */
+
+ if (USB_INT_HasOccurred(USB_INT_HSOFI))
+ 82a: 55 ff sbrs r21, 5
+ 82c: 0b c0 rjmp .+22 ; 0x844 <USB_Host_ResetDevice+0x6e>
+ UEINTX &= ~(1 << RXSTPI);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHINT &= ~(1 << HSOFI);
+ 82e: 40 91 9f 00 lds r20, 0x009F
+ 832: 4f 7d andi r20, 0xDF ; 223
+ 834: 40 93 9f 00 sts 0x009F, r20
+ break;
+ case USB_INT_DCONNI:
+ UHINT &= ~(1 << DCONNI);
+ break;
+ case USB_INT_DDISCI:
+ UHINT &= ~(1 << DDISCI);
+ 838: 40 91 9f 00 lds r20, 0x009F
+ 83c: 4d 7f andi r20, 0xFD ; 253
+ 83e: 40 93 9f 00 sts 0x009F, r20
+ 842: 08 c0 rjmp .+16 ; 0x854 <USB_Host_ResetDevice+0x7e>
+ #else
+ //round up by default
+ __ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
+ #endif
+
+ __builtin_avr_delay_cycles(__ticks_dc);
+ 844: ef ec ldi r30, 0xCF ; 207
+ 846: f7 e0 ldi r31, 0x07 ; 7
+ 848: 31 97 sbiw r30, 0x01 ; 1
+ 84a: f1 f7 brne .-4 ; 0x848 <USB_Host_ResetDevice+0x72>
+ 84c: 00 c0 rjmp .+0 ; 0x84e <USB_Host_ResetDevice+0x78>
+ 84e: 00 00 nop
+ 850: 41 50 subi r20, 0x01 ; 1
+ bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI);
+
+ USB_INT_Disable(USB_INT_HSOFI);
+ USB_INT_Clear(USB_INT_HSOFI);
+
+ for (uint8_t MSRem = 10; MSRem != 0; MSRem--)
+ 852: 49 f7 brne .-46 ; 0x826 <USB_Host_ResetDevice+0x50>
+ }
+
+ Delay_MS(1);
+ }
+
+ if (HSOFIEnabled)
+ 854: 21 15 cp r18, r1
+ 856: 31 05 cpc r19, r1
+ 858: 29 f0 breq .+10 ; 0x864 <USB_Host_ResetDevice+0x8e>
+ UEIENX |= (1 << RXSTPE);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHIEN |= (1 << HSOFE);
+ 85a: 20 91 a0 00 lds r18, 0x00A0
+ 85e: 20 62 ori r18, 0x20 ; 32
+ 860: 20 93 a0 00 sts 0x00A0, r18
+ USB_INT_Enable(USB_INT_HSOFI);
+
+ if (BusSuspended)
+ 864: 00 97 sbiw r24, 0x00 ; 0
+ 866: 29 f4 brne .+10 ; 0x872 <USB_Host_ResetDevice+0x9c>
+ * messages to the device.
+ */
+ static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_SuspendBus(void)
+ {
+ UHCON &= ~(1 << SOFEN);
+ 868: 80 91 9e 00 lds r24, 0x009E
+ 86c: 8e 7f andi r24, 0xFE ; 254
+ 86e: 80 93 9e 00 sts 0x009E, r24
+ break;
+ case USB_INT_DCONNI:
+ UHIEN |= (1 << DCONNE);
+ break;
+ case USB_INT_DDISCI:
+ UHIEN |= (1 << DDISCE);
+ 872: 80 91 a0 00 lds r24, 0x00A0
+ 876: 82 60 ori r24, 0x02 ; 2
+ 878: 80 93 a0 00 sts 0x00A0, r24
+ USB_Host_SuspendBus();
+
+ USB_INT_Enable(USB_INT_DDISCI);
+}
+ 87c: 08 95 ret
+
+0000087e <USB_Host_WaitMS>:
+ * \return Boolean \c true if the bus is currently suspended, \c false otherwise.
+ */
+ static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool USB_Host_IsBusSuspended(void)
+ {
+ return ((UHCON & (1 << SOFEN)) ? false : true);
+ 87e: 40 91 9e 00 lds r20, 0x009E
+ 882: 50 e0 ldi r21, 0x00 ; 0
+ 884: 41 70 andi r20, 0x01 ; 1
+ 886: 50 70 andi r21, 0x00 ; 0
+ case USB_INT_RXSTPI:
+ return (UEIENX & (1 << RXSTPE));
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ return (UHIEN & (1 << HSOFE));
+ 888: 20 91 a0 00 lds r18, 0x00A0
+ 88c: 30 e0 ldi r19, 0x00 ; 0
+ 88e: 20 72 andi r18, 0x20 ; 32
+ 890: 30 70 andi r19, 0x00 ; 0
+ UEIENX &= ~(1 << RXSTPE);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHIEN &= ~(1 << HSOFE);
+ 892: 90 91 a0 00 lds r25, 0x00A0
+ 896: 9f 7d andi r25, 0xDF ; 223
+ 898: 90 93 a0 00 sts 0x00A0, r25
+ UEINTX &= ~(1 << RXSTPI);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHINT &= ~(1 << HSOFI);
+ 89c: 90 91 9f 00 lds r25, 0x009F
+ 8a0: 9f 7d andi r25, 0xDF ; 223
+ 8a2: 90 93 9f 00 sts 0x009F, r25
+ * host and attached device may occur.
+ */
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_ResumeBus(void)
+ {
+ UHCON |= (1 << SOFEN);
+ 8a6: 90 91 9e 00 lds r25, 0x009E
+ 8aa: 91 60 ori r25, 0x01 ; 1
+ 8ac: 90 93 9e 00 sts 0x009E, r25
+ USB_INT_Disable(USB_INT_HSOFI);
+ USB_INT_Clear(USB_INT_HSOFI);
+
+ USB_Host_ResumeBus();
+
+ while (MS)
+ 8b0: 26 c0 rjmp .+76 ; 0x8fe <USB_Host_WaitMS+0x80>
+ case USB_INT_RXSTPI:
+ return (UEINTX & (1 << RXSTPI));
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ return (UHINT & (1 << HSOFI));
+ 8b2: 90 91 9f 00 lds r25, 0x009F
+ {
+ if (USB_INT_HasOccurred(USB_INT_HSOFI))
+ 8b6: 95 ff sbrs r25, 5
+ 8b8: 06 c0 rjmp .+12 ; 0x8c6 <USB_Host_WaitMS+0x48>
+ UEINTX &= ~(1 << RXSTPI);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHINT &= ~(1 << HSOFI);
+ 8ba: 90 91 9f 00 lds r25, 0x009F
+ 8be: 9f 7d andi r25, 0xDF ; 223
+ 8c0: 90 93 9f 00 sts 0x009F, r25
+ {
+ USB_INT_Clear(USB_INT_HSOFI);
+ MS--;
+ 8c4: 81 50 subi r24, 0x01 ; 1
+ }
+
+ if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host))
+ 8c6: 90 91 2b 01 lds r25, 0x012B
+ 8ca: 92 30 cpi r25, 0x02 ; 2
+ 8cc: d9 f0 breq .+54 ; 0x904 <USB_Host_WaitMS+0x86>
+ * \return Boolean \c true if an error has occurred on the selected pipe, \c false otherwise.
+ */
+ static inline bool Pipe_IsError(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsError(void)
+ {
+ return ((UPINTX & (1 << PERRI)) ? true : false);
+ 8ce: 90 91 a6 00 lds r25, 0x00A6
+ ErrorCode = HOST_WAITERROR_DeviceDisconnect;
+
+ break;
+ }
+
+ if (Pipe_IsError() == true)
+ 8d2: 94 ff sbrs r25, 4
+ 8d4: 09 c0 rjmp .+18 ; 0x8e8 <USB_Host_WaitMS+0x6a>
+
+ /** Clears the error flags for the currently selected pipe. */
+ static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearError(void)
+ {
+ UPERRX = 0;
+ 8d6: 10 92 f5 00 sts 0x00F5, r1
+ UPINTX &= ~(1 << PERRI);
+ 8da: 80 91 a6 00 lds r24, 0x00A6
+ 8de: 8f 7e andi r24, 0xEF ; 239
+ 8e0: 80 93 a6 00 sts 0x00A6, r24
+ {
+ Pipe_ClearError();
+ ErrorCode = HOST_WAITERROR_PipeError;
+ 8e4: 82 e0 ldi r24, 0x02 ; 2
+
+ break;
+ 8e6: 0f c0 rjmp .+30 ; 0x906 <USB_Host_WaitMS+0x88>
+ * \return Boolean \c true if the current pipe has been stalled by the attached device, \c false otherwise.
+ */
+ static inline bool Pipe_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsStalled(void)
+ {
+ return ((UPINTX & (1 << RXSTALLI)) ? true : false);
+ 8e8: 90 91 a6 00 lds r25, 0x00A6
+ }
+
+ if (Pipe_IsStalled() == true)
+ 8ec: 91 ff sbrs r25, 1
+ 8ee: 07 c0 rjmp .+14 ; 0x8fe <USB_Host_WaitMS+0x80>
+ * \ingroup Group_PipePacketManagement_AVR8
+ */
+ static inline void Pipe_ClearStall(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearStall(void)
+ {
+ UPINTX &= ~(1 << RXSTALLI);
+ 8f0: 80 91 a6 00 lds r24, 0x00A6
+ 8f4: 8d 7f andi r24, 0xFD ; 253
+ 8f6: 80 93 a6 00 sts 0x00A6, r24
+ {
+ Pipe_ClearStall();
+ ErrorCode = HOST_WAITERROR_SetupStalled;
+ 8fa: 83 e0 ldi r24, 0x03 ; 3
+
+ break;
+ 8fc: 04 c0 rjmp .+8 ; 0x906 <USB_Host_WaitMS+0x88>
+ USB_INT_Disable(USB_INT_HSOFI);
+ USB_INT_Clear(USB_INT_HSOFI);
+
+ USB_Host_ResumeBus();
+
+ while (MS)
+ 8fe: 88 23 and r24, r24
+ 900: c1 f6 brne .-80 ; 0x8b2 <USB_Host_WaitMS+0x34>
+ 902: 01 c0 rjmp .+2 ; 0x906 <USB_Host_WaitMS+0x88>
+ MS--;
+ }
+
+ if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host))
+ {
+ ErrorCode = HOST_WAITERROR_DeviceDisconnect;
+ 904: 81 e0 ldi r24, 0x01 ; 1
+
+ break;
+ }
+ }
+
+ if (BusSuspended)
+ 906: 41 15 cp r20, r1
+ 908: 51 05 cpc r21, r1
+ 90a: 29 f4 brne .+10 ; 0x916 <USB_Host_WaitMS+0x98>
+ * messages to the device.
+ */
+ static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_SuspendBus(void)
+ {
+ UHCON &= ~(1 << SOFEN);
+ 90c: 90 91 9e 00 lds r25, 0x009E
+ 910: 9e 7f andi r25, 0xFE ; 254
+ 912: 90 93 9e 00 sts 0x009E, r25
+ USB_Host_SuspendBus();
+
+ if (HSOFIEnabled)
+ 916: 21 15 cp r18, r1
+ 918: 31 05 cpc r19, r1
+ 91a: 29 f0 breq .+10 ; 0x926 <USB_Host_WaitMS+0xa8>
+ UEIENX |= (1 << RXSTPE);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHIEN |= (1 << HSOFE);
+ 91c: 90 91 a0 00 lds r25, 0x00A0
+ 920: 90 62 ori r25, 0x20 ; 32
+ 922: 90 93 a0 00 sts 0x00A0, r25
+ USB_INT_Enable(USB_INT_HSOFI);
+
+ return ErrorCode;
+}
+ 926: 08 95 ret
+
+00000928 <USB_Host_ProcessNextHostState>:
+
+#define __INCLUDE_FROM_HOST_C
+#include "../Host.h"
+
+void USB_Host_ProcessNextHostState(void)
+{
+ 928: ef 92 push r14
+ 92a: 0f 93 push r16
+ 92c: 1f 93 push r17
+ 92e: df 93 push r29
+ 930: cf 93 push r28
+ 932: cd b7 in r28, 0x3d ; 61
+ 934: de b7 in r29, 0x3e ; 62
+ 936: 28 97 sbiw r28, 0x08 ; 8
+ 938: 0f b6 in r0, 0x3f ; 63
+ 93a: f8 94 cli
+ 93c: de bf out 0x3e, r29 ; 62
+ 93e: 0f be out 0x3f, r0 ; 63
+ 940: cd bf out 0x3d, r28 ; 61
+ uint8_t SubErrorCode = HOST_ENUMERROR_NoError;
+
+ static uint16_t WaitMSRemaining;
+ static uint8_t PostWaitState;
+
+ switch (USB_HostState)
+ 942: 80 91 2b 01 lds r24, 0x012B
+ 946: 86 30 cpi r24, 0x06 ; 6
+ 948: 09 f4 brne .+2 ; 0x94c <USB_Host_ProcessNextHostState+0x24>
+ 94a: 99 c0 rjmp .+306 ; 0xa7e <USB_Host_ProcessNextHostState+0x156>
+ 94c: 87 30 cpi r24, 0x07 ; 7
+ 94e: 70 f4 brcc .+28 ; 0x96c <USB_Host_ProcessNextHostState+0x44>
+ 950: 83 30 cpi r24, 0x03 ; 3
+ 952: c9 f1 breq .+114 ; 0x9c6 <USB_Host_ProcessNextHostState+0x9e>
+ 954: 84 30 cpi r24, 0x04 ; 4
+ 956: 20 f4 brcc .+8 ; 0x960 <USB_Host_ProcessNextHostState+0x38>
+ 958: 81 30 cpi r24, 0x01 ; 1
+ 95a: 09 f0 breq .+2 ; 0x95e <USB_Host_ProcessNextHostState+0x36>
+ 95c: 0b c1 rjmp .+534 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ 95e: 13 c0 rjmp .+38 ; 0x986 <USB_Host_ProcessNextHostState+0x5e>
+ 960: 84 30 cpi r24, 0x04 ; 4
+ 962: c9 f1 breq .+114 ; 0x9d6 <USB_Host_ProcessNextHostState+0xae>
+ 964: 85 30 cpi r24, 0x05 ; 5
+ 966: 09 f0 breq .+2 ; 0x96a <USB_Host_ProcessNextHostState+0x42>
+ 968: 05 c1 rjmp .+522 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ 96a: 60 c0 rjmp .+192 ; 0xa2c <USB_Host_ProcessNextHostState+0x104>
+ 96c: 88 30 cpi r24, 0x08 ; 8
+ 96e: 09 f4 brne .+2 ; 0x972 <USB_Host_ProcessNextHostState+0x4a>
+ 970: a0 c0 rjmp .+320 ; 0xab2 <USB_Host_ProcessNextHostState+0x18a>
+ 972: 88 30 cpi r24, 0x08 ; 8
+ 974: 08 f4 brcc .+2 ; 0x978 <USB_Host_ProcessNextHostState+0x50>
+ 976: 8f c0 rjmp .+286 ; 0xa96 <USB_Host_ProcessNextHostState+0x16e>
+ 978: 89 30 cpi r24, 0x09 ; 9
+ 97a: 09 f4 brne .+2 ; 0x97e <USB_Host_ProcessNextHostState+0x56>
+ 97c: b9 c0 rjmp .+370 ; 0xaf0 <USB_Host_ProcessNextHostState+0x1c8>
+ 97e: 8a 30 cpi r24, 0x0A ; 10
+ 980: 09 f0 breq .+2 ; 0x984 <USB_Host_ProcessNextHostState+0x5c>
+ 982: f8 c0 rjmp .+496 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ 984: de c0 rjmp .+444 ; 0xb42 <USB_Host_ProcessNextHostState+0x21a>
+ {
+ case HOST_STATE_WaitForDevice:
+ if (WaitMSRemaining)
+ 986: 00 91 20 01 lds r16, 0x0120
+ 98a: 10 91 21 01 lds r17, 0x0121
+ 98e: 01 15 cp r16, r1
+ 990: 11 05 cpc r17, r1
+ 992: 09 f4 brne .+2 ; 0x996 <USB_Host_ProcessNextHostState+0x6e>
+ 994: ef c0 rjmp .+478 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ {
+ if ((SubErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)
+ 996: 81 e0 ldi r24, 0x01 ; 1
+ 998: 72 df rcall .-284 ; 0x87e <USB_Host_WaitMS>
+ 99a: 68 2f mov r22, r24
+ 99c: 88 23 and r24, r24
+ 99e: 31 f0 breq .+12 ; 0x9ac <USB_Host_ProcessNextHostState+0x84>
+ {
+ USB_HostState = PostWaitState;
+ 9a0: 80 91 1f 01 lds r24, 0x011F
+ 9a4: 80 93 2b 01 sts 0x012B, r24
+ ErrorCode = HOST_ENUMERROR_WaitStage;
+ 9a8: 81 e0 ldi r24, 0x01 ; 1
+ break;
+ 9aa: e0 c0 rjmp .+448 ; 0xb6c <USB_Host_ProcessNextHostState+0x244>
+ }
+
+ if (!(--WaitMSRemaining))
+ 9ac: 01 50 subi r16, 0x01 ; 1
+ 9ae: 10 40 sbci r17, 0x00 ; 0
+ 9b0: 10 93 21 01 sts 0x0121, r17
+ 9b4: 00 93 20 01 sts 0x0120, r16
+ 9b8: 01 15 cp r16, r1
+ 9ba: 11 05 cpc r17, r1
+ 9bc: 09 f0 breq .+2 ; 0x9c0 <USB_Host_ProcessNextHostState+0x98>
+ 9be: da c0 rjmp .+436 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ USB_HostState = PostWaitState;
+ 9c0: 80 91 1f 01 lds r24, 0x011F
+ 9c4: c3 c0 rjmp .+390 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>
+ }
+
+ break;
+ case HOST_STATE_Powered:
+ WaitMSRemaining = HOST_DEVICE_SETTLE_DELAY_MS;
+ 9c6: 88 ee ldi r24, 0xE8 ; 232
+ 9c8: 93 e0 ldi r25, 0x03 ; 3
+ 9ca: 90 93 21 01 sts 0x0121, r25
+ 9ce: 80 93 20 01 sts 0x0120, r24
+
+ USB_HostState = HOST_STATE_Powered_WaitForDeviceSettle;
+ 9d2: 84 e0 ldi r24, 0x04 ; 4
+ 9d4: bb c0 rjmp .+374 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>
+ break;
+ case HOST_STATE_Powered_WaitForDeviceSettle:
+ if (WaitMSRemaining--)
+ 9d6: 80 91 20 01 lds r24, 0x0120
+ 9da: 90 91 21 01 lds r25, 0x0121
+ 9de: 9c 01 movw r18, r24
+ 9e0: 21 50 subi r18, 0x01 ; 1
+ 9e2: 30 40 sbci r19, 0x00 ; 0
+ 9e4: 30 93 21 01 sts 0x0121, r19
+ 9e8: 20 93 20 01 sts 0x0120, r18
+ 9ec: 00 97 sbiw r24, 0x00 ; 0
+ 9ee: 39 f0 breq .+14 ; 0x9fe <USB_Host_ProcessNextHostState+0xd6>
+ 9f0: 8f ec ldi r24, 0xCF ; 207
+ 9f2: 97 e0 ldi r25, 0x07 ; 7
+ 9f4: 01 97 sbiw r24, 0x01 ; 1
+ 9f6: f1 f7 brne .-4 ; 0x9f4 <USB_Host_ProcessNextHostState+0xcc>
+ 9f8: 00 c0 rjmp .+0 ; 0x9fa <USB_Host_ProcessNextHostState+0xd2>
+ 9fa: 00 00 nop
+ 9fc: bb c0 rjmp .+374 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ }
+
+ static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Manual_Off(void)
+ {
+ PORTE &= ~(1 << 7);
+ 9fe: 77 98 cbi 0x0e, 7 ; 14
+
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+ static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_OTGPAD_On(void)
+ {
+ USBCON |= (1 << OTGPADE);
+ a00: 80 91 d8 00 lds r24, 0x00D8
+ a04: 80 61 ori r24, 0x10 ; 16
+ a06: 80 93 d8 00 sts 0x00D8, r24
+ }
+
+ static inline void USB_Host_VBUS_Auto_Enable(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Auto_Enable(void)
+ {
+ OTGCON &= ~(1 << VBUSHWC);
+ a0a: 80 91 dd 00 lds r24, 0x00DD
+ a0e: 8b 7f andi r24, 0xFB ; 251
+ a10: 80 93 dd 00 sts 0x00DD, r24
+ UHWCON |= (1 << UVCONE);
+ a14: 80 91 d7 00 lds r24, 0x00D7
+ a18: 80 61 ori r24, 0x10 ; 16
+ a1a: 80 93 d7 00 sts 0x00D7, r24
+ }
+
+ static inline void USB_Host_VBUS_Auto_On(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Auto_On(void)
+ {
+ OTGCON |= (1 << VBUSREQ);
+ a1e: 80 91 dd 00 lds r24, 0x00DD
+ a22: 82 60 ori r24, 0x02 ; 2
+ a24: 80 93 dd 00 sts 0x00DD, r24
+
+ USB_OTGPAD_On();
+ USB_Host_VBUS_Auto_Enable();
+ USB_Host_VBUS_Auto_On();
+
+ USB_HostState = HOST_STATE_Powered_WaitForConnect;
+ a28: 85 e0 ldi r24, 0x05 ; 5
+ a2a: 90 c0 rjmp .+288 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ return (UHINT & (1 << HSOFI));
+ case USB_INT_DCONNI:
+ return (UHINT & (1 << DCONNI));
+ a2c: 80 91 9f 00 lds r24, 0x009F
+ }
+
+ break;
+ case HOST_STATE_Powered_WaitForConnect:
+ if (USB_INT_HasOccurred(USB_INT_DCONNI))
+ a30: 80 ff sbrs r24, 0
+ a32: a0 c0 rjmp .+320 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHINT &= ~(1 << HSOFI);
+ break;
+ case USB_INT_DCONNI:
+ UHINT &= ~(1 << DCONNI);
+ a34: 80 91 9f 00 lds r24, 0x009F
+ a38: 8e 7f andi r24, 0xFE ; 254
+ a3a: 80 93 9f 00 sts 0x009F, r24
+ break;
+ case USB_INT_DDISCI:
+ UHINT &= ~(1 << DDISCI);
+ a3e: 80 91 9f 00 lds r24, 0x009F
+ a42: 8d 7f andi r24, 0xFD ; 253
+ a44: 80 93 9f 00 sts 0x009F, r24
+ break;
+ case USB_INT_BCERRI:
+ OTGINT &= ~(1 << BCERRI);
+ break;
+ case USB_INT_VBERRI:
+ OTGINT &= ~(1 << VBERRI);
+ a48: 80 91 df 00 lds r24, 0x00DF
+ a4c: 8d 7f andi r24, 0xFD ; 253
+ a4e: 80 93 df 00 sts 0x00DF, r24
+ break;
+ case USB_INT_BCERRI:
+ OTGIEN |= (1 << BCERRE);
+ break;
+ case USB_INT_VBERRI:
+ OTGIEN |= (1 << VBERRE);
+ a52: 80 91 de 00 lds r24, 0x00DE
+ a56: 82 60 ori r24, 0x02 ; 2
+ a58: 80 93 de 00 sts 0x00DE, r24
+ * host and attached device may occur.
+ */
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_ResumeBus(void)
+ {
+ UHCON |= (1 << SOFEN);
+ a5c: 80 91 9e 00 lds r24, 0x009E
+ a60: 81 60 ori r24, 0x01 ; 1
+ a62: 80 93 9e 00 sts 0x009E, r24
+
+ USB_INT_Clear(USB_INT_VBERRI);
+ USB_INT_Enable(USB_INT_VBERRI);
+
+ USB_Host_ResumeBus();
+ Pipe_ClearPipes();
+ a66: 26 d1 rcall .+588 ; 0xcb4 <Pipe_ClearPipes>
+
+ HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Powered_DoReset);
+ a68: 81 e0 ldi r24, 0x01 ; 1
+ a6a: 80 93 2b 01 sts 0x012B, r24
+ a6e: 84 e6 ldi r24, 0x64 ; 100
+ a70: 90 e0 ldi r25, 0x00 ; 0
+ a72: 90 93 21 01 sts 0x0121, r25
+ a76: 80 93 20 01 sts 0x0120, r24
+ a7a: 86 e0 ldi r24, 0x06 ; 6
+ a7c: 5f c0 rjmp .+190 ; 0xb3c <USB_Host_ProcessNextHostState+0x214>
+ }
+
+ break;
+ case HOST_STATE_Powered_DoReset:
+ USB_Host_ResetDevice();
+ a7e: ab de rcall .-682 ; 0x7d6 <USB_Host_ResetDevice>
+
+ HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Powered_ConfigPipe);
+ a80: 81 e0 ldi r24, 0x01 ; 1
+ a82: 80 93 2b 01 sts 0x012B, r24
+ a86: 88 ec ldi r24, 0xC8 ; 200
+ a88: 90 e0 ldi r25, 0x00 ; 0
+ a8a: 90 93 21 01 sts 0x0121, r25
+ a8e: 80 93 20 01 sts 0x0120, r24
+ a92: 87 e0 ldi r24, 0x07 ; 7
+ a94: 53 c0 rjmp .+166 ; 0xb3c <USB_Host_ProcessNextHostState+0x214>
+ break;
+ case HOST_STATE_Powered_ConfigPipe:
+ Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,
+ a96: 80 e0 ldi r24, 0x00 ; 0
+ a98: 60 e0 ldi r22, 0x00 ; 0
+ a9a: 40 e0 ldi r20, 0x00 ; 0
+ a9c: 20 e0 ldi r18, 0x00 ; 0
+ a9e: 00 e4 ldi r16, 0x40 ; 64
+ aa0: 10 e0 ldi r17, 0x00 ; 0
+ aa2: ee 24 eor r14, r14
+ aa4: a0 d0 rcall .+320 ; 0xbe6 <Pipe_ConfigurePipe>
+ * \return Boolean \c true if the selected pipe is configured, \c false otherwise.
+ */
+ static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsConfigured(void)
+ {
+ return ((UPSTAX & (1 << CFGOK)) ? true : false);
+ aa6: 80 91 ac 00 lds r24, 0x00AC
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,
+ PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE);
+
+ if (!(Pipe_IsConfigured()))
+ aaa: 87 ff sbrs r24, 7
+ aac: 5b c0 rjmp .+182 ; 0xb64 <USB_Host_ProcessNextHostState+0x23c>
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;
+ SubErrorCode = 0;
+ break;
+ }
+
+ USB_HostState = HOST_STATE_Default;
+ aae: 88 e0 ldi r24, 0x08 ; 8
+ ab0: 4d c0 rjmp .+154 ; 0xb4c <USB_Host_ProcessNextHostState+0x224>
+ break;
+ case HOST_STATE_Default:
+ USB_ControlRequest = (USB_Request_Header_t)
+ ab2: a3 e2 ldi r26, 0x23 ; 35
+ ab4: b1 e0 ldi r27, 0x01 ; 1
+ ab6: e3 e1 ldi r30, 0x13 ; 19
+ ab8: f1 e0 ldi r31, 0x01 ; 1
+ aba: 88 e0 ldi r24, 0x08 ; 8
+ abc: 01 90 ld r0, Z+
+ abe: 0d 92 st X+, r0
+ ac0: 81 50 subi r24, 0x01 ; 1
+ ac2: e1 f7 brne .-8 ; 0xabc <USB_Host_ProcessNextHostState+0x194>
+ .wLength = 8,
+ };
+
+ uint8_t DataBuffer[8];
+
+ if ((SubErrorCode = USB_Host_SendControlRequest(DataBuffer)) != HOST_SENDCONTROL_Successful)
+ ac4: ce 01 movw r24, r28
+ ac6: 01 96 adiw r24, 0x01 ; 1
+ ac8: dc d2 rcall .+1464 ; 0x1082 <USB_Host_SendControlRequest>
+ aca: 68 2f mov r22, r24
+ acc: 88 23 and r24, r24
+ ace: 09 f0 breq .+2 ; 0xad2 <USB_Host_ProcessNextHostState+0x1aa>
+ ad0: 4c c0 rjmp .+152 ; 0xb6a <USB_Host_ProcessNextHostState+0x242>
+ {
+ ErrorCode = HOST_ENUMERROR_ControlError;
+ break;
+ }
+
+ USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, Endpoint0Size)];
+ ad2: 88 85 ldd r24, Y+8 ; 0x08
+ ad4: 80 93 1b 01 sts 0x011B, r24
+
+ USB_Host_ResetDevice();
+ ad8: 7e de rcall .-772 ; 0x7d6 <USB_Host_ResetDevice>
+
+ HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Default_PostReset);
+ ada: 81 e0 ldi r24, 0x01 ; 1
+ adc: 80 93 2b 01 sts 0x012B, r24
+ ae0: 88 ec ldi r24, 0xC8 ; 200
+ ae2: 90 e0 ldi r25, 0x00 ; 0
+ ae4: 90 93 21 01 sts 0x0121, r25
+ ae8: 80 93 20 01 sts 0x0120, r24
+ aec: 89 e0 ldi r24, 0x09 ; 9
+ aee: 26 c0 rjmp .+76 ; 0xb3c <USB_Host_ProcessNextHostState+0x214>
+ break;
+ case HOST_STATE_Default_PostReset:
+ Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,
+ af0: 00 91 1b 01 lds r16, 0x011B
+ af4: 80 e0 ldi r24, 0x00 ; 0
+ af6: 60 e0 ldi r22, 0x00 ; 0
+ af8: 40 e0 ldi r20, 0x00 ; 0
+ afa: 20 e0 ldi r18, 0x00 ; 0
+ afc: 10 e0 ldi r17, 0x00 ; 0
+ afe: ee 24 eor r14, r14
+ b00: 72 d0 rcall .+228 ; 0xbe6 <Pipe_ConfigurePipe>
+ b02: 80 91 ac 00 lds r24, 0x00AC
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,
+ USB_ControlPipeSize, PIPE_BANK_SINGLE);
+
+ if (!(Pipe_IsConfigured()))
+ b06: 87 ff sbrs r24, 7
+ b08: 2d c0 rjmp .+90 ; 0xb64 <USB_Host_ProcessNextHostState+0x23c>
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;
+ SubErrorCode = 0;
+ break;
+ }
+
+ USB_ControlRequest = (USB_Request_Header_t)
+ b0a: a3 e2 ldi r26, 0x23 ; 35
+ b0c: b1 e0 ldi r27, 0x01 ; 1
+ b0e: eb e0 ldi r30, 0x0B ; 11
+ b10: f1 e0 ldi r31, 0x01 ; 1
+ b12: 88 e0 ldi r24, 0x08 ; 8
+ b14: 01 90 ld r0, Z+
+ b16: 0d 92 st X+, r0
+ b18: 81 50 subi r24, 0x01 ; 1
+ b1a: e1 f7 brne .-8 ; 0xb14 <USB_Host_ProcessNextHostState+0x1ec>
+ .wValue = USB_HOST_DEVICEADDRESS,
+ .wIndex = 0,
+ .wLength = 0,
+ };
+
+ if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
+ b1c: 80 e0 ldi r24, 0x00 ; 0
+ b1e: 90 e0 ldi r25, 0x00 ; 0
+ b20: b0 d2 rcall .+1376 ; 0x1082 <USB_Host_SendControlRequest>
+ b22: 68 2f mov r22, r24
+ b24: 88 23 and r24, r24
+ b26: 09 f5 brne .+66 ; 0xb6a <USB_Host_ProcessNextHostState+0x242>
+ {
+ ErrorCode = HOST_ENUMERROR_ControlError;
+ break;
+ }
+
+ HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Default_PostAddressSet);
+ b28: 81 e0 ldi r24, 0x01 ; 1
+ b2a: 80 93 2b 01 sts 0x012B, r24
+ b2e: 84 e6 ldi r24, 0x64 ; 100
+ b30: 90 e0 ldi r25, 0x00 ; 0
+ b32: 90 93 21 01 sts 0x0121, r25
+ b36: 80 93 20 01 sts 0x0120, r24
+ b3a: 8a e0 ldi r24, 0x0A ; 10
+ b3c: 80 93 1f 01 sts 0x011F, r24
+ break;
+ b40: 19 c0 rjmp .+50 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ }
+
+ static inline void USB_Host_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_SetDeviceAddress(const uint8_t Address)
+ {
+ UHADDR = (Address & 0x7F);
+ b42: 81 e0 ldi r24, 0x01 ; 1
+ b44: 80 93 a1 00 sts 0x00A1, r24
+ case HOST_STATE_Default_PostAddressSet:
+ USB_Host_SetDeviceAddress(USB_HOST_DEVICEADDRESS);
+
+ EVENT_USB_Host_DeviceEnumerationComplete();
+ b48: 24 dc rcall .-1976 ; 0x392 <EVENT_USB_Host_DeviceEnumerationComplete>
+ USB_HostState = HOST_STATE_Addressed;
+ b4a: 8b e0 ldi r24, 0x0B ; 11
+ b4c: 80 93 2b 01 sts 0x012B, r24
+ break;
+ b50: 11 c0 rjmp .+34 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ }
+
+ if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached))
+ {
+ EVENT_USB_Host_DeviceEnumerationFailed(ErrorCode, SubErrorCode);
+ b52: 40 dc rcall .-1920 ; 0x3d4 <EVENT_USB_Host_DeviceEnumerationFailed>
+ }
+
+ static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Auto_Off(void)
+ {
+ OTGCON |= (1 << VBUSRQC);
+ b54: 80 91 dd 00 lds r24, 0x00DD
+ b58: 81 60 ori r24, 0x01 ; 1
+ b5a: 80 93 dd 00 sts 0x00DD, r24
+
+ USB_Host_VBUS_Auto_Off();
+
+ EVENT_USB_Host_DeviceUnattached();
+ b5e: 14 dc rcall .-2008 ; 0x388 <EVENT_USB_Host_DeviceUnattached>
+
+ USB_ResetInterface();
+ b60: d5 d0 rcall .+426 ; 0xd0c <USB_ResetInterface>
+ b62: 08 c0 rjmp .+16 ; 0xb74 <USB_Host_ProcessNextHostState+0x24c>
+ USB_ControlPipeSize, PIPE_BANK_SINGLE);
+
+ if (!(Pipe_IsConfigured()))
+ {
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;
+ SubErrorCode = 0;
+ b64: 60 e0 ldi r22, 0x00 ; 0
+ PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,
+ USB_ControlPipeSize, PIPE_BANK_SINGLE);
+
+ if (!(Pipe_IsConfigured()))
+ {
+ ErrorCode = HOST_ENUMERROR_PipeConfigError;
+ b66: 84 e0 ldi r24, 0x04 ; 4
+ b68: 01 c0 rjmp .+2 ; 0xb6c <USB_Host_ProcessNextHostState+0x244>
+ .wLength = 0,
+ };
+
+ if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)
+ {
+ ErrorCode = HOST_ENUMERROR_ControlError;
+ b6a: 83 e0 ldi r24, 0x03 ; 3
+ EVENT_USB_Host_DeviceEnumerationComplete();
+ USB_HostState = HOST_STATE_Addressed;
+ break;
+ }
+
+ if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached))
+ b6c: 90 91 2b 01 lds r25, 0x012B
+ b70: 92 30 cpi r25, 0x02 ; 2
+ b72: 79 f7 brne .-34 ; 0xb52 <USB_Host_ProcessNextHostState+0x22a>
+
+ EVENT_USB_Host_DeviceUnattached();
+
+ USB_ResetInterface();
+ }
+}
+ b74: 28 96 adiw r28, 0x08 ; 8
+ b76: 0f b6 in r0, 0x3f ; 63
+ b78: f8 94 cli
+ b7a: de bf out 0x3e, r29 ; 62
+ b7c: 0f be out 0x3f, r0 ; 63
+ b7e: cd bf out 0x3d, r28 ; 61
+ b80: cf 91 pop r28
+ b82: df 91 pop r29
+ b84: 1f 91 pop r17
+ b86: 0f 91 pop r16
+ b88: ef 90 pop r14
+ b8a: 08 95 ret
+
+00000b8c <USB_Host_SetDeviceConfiguration>:
+ USB_INT_Enable(USB_INT_DDISCI);
+}
+
+uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber)
+{
+ USB_ControlRequest = (USB_Request_Header_t)
+ b8c: 10 92 23 01 sts 0x0123, r1
+ b90: 99 e0 ldi r25, 0x09 ; 9
+ b92: 90 93 24 01 sts 0x0124, r25
+ b96: 80 93 25 01 sts 0x0125, r24
+ b9a: 10 92 26 01 sts 0x0126, r1
+ b9e: 10 92 28 01 sts 0x0128, r1
+ ba2: 10 92 27 01 sts 0x0127, r1
+ ba6: 10 92 2a 01 sts 0x012A, r1
+ baa: 10 92 29 01 sts 0x0129, r1
+ * \param[in] PipeNumber Index of the pipe to select.
+ */
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)
+ {
+ UPNUM = PipeNumber;
+ bae: 10 92 a7 00 sts 0x00A7, r1
+ .wLength = 0,
+ };
+
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ return USB_Host_SendControlRequest(NULL);
+ bb2: 80 e0 ldi r24, 0x00 ; 0
+ bb4: 90 e0 ldi r25, 0x00 ; 0
+}
+ bb6: 65 c2 rjmp .+1226 ; 0x1082 <USB_Host_SendControlRequest>
+
+00000bb8 <USB_Host_SetInterfaceAltSetting>:
+}
+
+uint8_t USB_Host_SetInterfaceAltSetting(const uint8_t InterfaceNum,
+ const uint8_t AltSetting)
+{
+ USB_ControlRequest = (USB_Request_Header_t)
+ bb8: e3 e2 ldi r30, 0x23 ; 35
+ bba: f1 e0 ldi r31, 0x01 ; 1
+ bbc: 91 e0 ldi r25, 0x01 ; 1
+ bbe: 90 93 23 01 sts 0x0123, r25
+ bc2: 9b e0 ldi r25, 0x0B ; 11
+ bc4: 90 93 24 01 sts 0x0124, r25
+ bc8: 60 93 25 01 sts 0x0125, r22
+ bcc: 13 82 std Z+3, r1 ; 0x03
+ bce: 80 93 27 01 sts 0x0127, r24
+ bd2: 15 82 std Z+5, r1 ; 0x05
+ bd4: 10 92 2a 01 sts 0x012A, r1
+ bd8: 10 92 29 01 sts 0x0129, r1
+ bdc: 10 92 a7 00 sts 0x00A7, r1
+ .wLength = 0,
+ };
+
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ return USB_Host_SendControlRequest(NULL);
+ be0: 80 e0 ldi r24, 0x00 ; 0
+ be2: 90 e0 ldi r25, 0x00 ; 0
+}
+ be4: 4e c2 rjmp .+1180 ; 0x1082 <USB_Host_SendControlRequest>
+
+00000be6 <Pipe_ConfigurePipe>:
+ const uint8_t Type,
+ const uint8_t Token,
+ const uint8_t EndpointNumber,
+ const uint16_t Size,
+ const uint8_t Banks)
+{
+ be6: ef 92 push r14
+ be8: 0f 93 push r16
+ bea: 1f 93 push r17
+ bec: 5e 2d mov r21, r14
+
+ Pipe_SelectPipe(PNum);
+
+ if (PNum == Number)
+ {
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
+ bee: 62 95 swap r22
+ bf0: 66 0f add r22, r22
+ bf2: 66 0f add r22, r22
+ bf4: 60 7c andi r22, 0xC0 ; 192
+ bf6: 64 2b or r22, r20
+ bf8: 2f 70 andi r18, 0x0F ; 15
+ bfa: 62 2b or r22, r18
+
+ Pipe_SetInfiniteINRequests();
+
+ return Pipe_IsConfigured();
+#else
+ for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)
+ bfc: 98 2f mov r25, r24
+ Pipe_SelectPipe(PNum);
+
+ if (PNum == Number)
+ {
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
+ bfe: 52 60 ori r21, 0x02 ; 2
+
+ Pipe_SetInfiniteINRequests();
+
+ return Pipe_IsConfigured();
+#else
+ for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)
+ c00: 4d c0 rjmp .+154 ; 0xc9c <Pipe_ConfigurePipe+0xb6>
+ * \param[in] PipeNumber Index of the pipe to select.
+ */
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)
+ {
+ UPNUM = PipeNumber;
+ c02: 90 93 a7 00 sts 0x00A7, r25
+ uint8_t UPINRQXTemp;
+ uint8_t UPIENXTemp;
+
+ Pipe_SelectPipe(PNum);
+
+ if (PNum == Number)
+ c06: 98 17 cp r25, r24
+ c08: b1 f4 brne .+44 ; 0xc36 <Pipe_ConfigurePipe+0x50>
+ c0a: 28 e0 ldi r18, 0x08 ; 8
+ c0c: 30 e0 ldi r19, 0x00 ; 0
+ c0e: 40 e0 ldi r20, 0x00 ; 0
+ c10: 03 c0 rjmp .+6 ; 0xc18 <Pipe_ConfigurePipe+0x32>
+ uint8_t MaskVal = 0;
+ uint16_t CheckBytes = 8;
+
+ while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))
+ {
+ MaskVal++;
+ c12: 4f 5f subi r20, 0xFF ; 255
+ CheckBytes <<= 1;
+ c14: 22 0f add r18, r18
+ c16: 33 1f adc r19, r19
+ static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)
+ {
+ uint8_t MaskVal = 0;
+ uint16_t CheckBytes = 8;
+
+ while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))
+ c18: 20 17 cp r18, r16
+ c1a: 31 07 cpc r19, r17
+ c1c: 10 f4 brcc .+4 ; 0xc22 <Pipe_ConfigurePipe+0x3c>
+ c1e: 45 30 cpi r20, 0x05 ; 5
+ c20: c1 f7 brne .-16 ; 0xc12 <Pipe_ConfigurePipe+0x2c>
+ {
+ MaskVal++;
+ CheckBytes <<= 1;
+ }
+
+ return (MaskVal << EPSIZE0);
+ c22: 24 2f mov r18, r20
+ c24: 22 95 swap r18
+ c26: 20 7f andi r18, 0xF0 ; 240
+ {
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
+ c28: 25 2b or r18, r21
+
+ Pipe_SelectPipe(PNum);
+
+ if (PNum == Number)
+ {
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
+ c2a: a6 2f mov r26, r22
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
+ UPCFG2XTemp = 0;
+ UPCONXTemp = ((1 << PEN) | (1 << INMODE));
+ UPINRQXTemp = 0;
+ UPIENXTemp = 0;
+ c2c: 40 e0 ldi r20, 0x00 ; 0
+ {
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
+ UPCFG2XTemp = 0;
+ UPCONXTemp = ((1 << PEN) | (1 << INMODE));
+ UPINRQXTemp = 0;
+ c2e: 70 e0 ldi r23, 0x00 ; 0
+ if (PNum == Number)
+ {
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
+ UPCFG2XTemp = 0;
+ UPCONXTemp = ((1 << PEN) | (1 << INMODE));
+ c30: e1 e2 ldi r30, 0x21 ; 33
+
+ if (PNum == Number)
+ {
+ UPCFG0XTemp = ((Type << EPTYPE0) | Token | ((EndpointNumber & PIPE_EPNUM_MASK) << PEPNUM0));
+ UPCFG1XTemp = ((1 << ALLOC) | Banks | Pipe_BytesToEPSizeMask(Size));
+ UPCFG2XTemp = 0;
+ c32: f0 e0 ldi r31, 0x00 ; 0
+ c34: 0c c0 rjmp .+24 ; 0xc4e <Pipe_ConfigurePipe+0x68>
+ UPINRQXTemp = 0;
+ UPIENXTemp = 0;
+ }
+ else
+ {
+ UPCFG0XTemp = UPCFG0X;
+ c36: a0 91 aa 00 lds r26, 0x00AA
+ UPCFG1XTemp = UPCFG1X;
+ c3a: 20 91 ab 00 lds r18, 0x00AB
+ UPCFG2XTemp = UPCFG2X;
+ c3e: f0 91 ad 00 lds r31, 0x00AD
+ UPCONXTemp = UPCONX;
+ c42: e0 91 a9 00 lds r30, 0x00A9
+ UPINRQXTemp = UPINRQX;
+ c46: 70 91 a5 00 lds r23, 0x00A5
+ UPIENXTemp = UPIENX;
+ c4a: 40 91 ae 00 lds r20, 0x00AE
+
+ /** Configures the currently selected pipe to allow for an unlimited number of IN requests. */
+ static inline void Pipe_SetInfiniteINRequests(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SetInfiniteINRequests(void)
+ {
+ UPCONX |= (1 << INMODE);
+ c4e: 30 91 a9 00 lds r19, 0x00A9
+ c52: 30 62 ori r19, 0x20 ; 32
+ c54: 30 93 a9 00 sts 0x00A9, r19
+ }
+
+ Pipe_SetInfiniteINRequests();
+
+ if (!(UPCFG1XTemp & (1 << ALLOC)))
+ c58: 21 ff sbrs r18, 1
+ c5a: 1f c0 rjmp .+62 ; 0xc9a <Pipe_ConfigurePipe+0xb4>
+ * from an attached device.
+ */
+ static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_DisablePipe(void)
+ {
+ UPCONX &= ~(1 << PEN);
+ c5c: 30 91 a9 00 lds r19, 0x00A9
+ c60: 3e 7f andi r19, 0xFE ; 254
+ c62: 30 93 a9 00 sts 0x00A9, r19
+ continue;
+
+ Pipe_DisablePipe();
+ UPCFG1X &= (1 << ALLOC);
+ c66: 30 91 ab 00 lds r19, 0x00AB
+ c6a: 32 70 andi r19, 0x02 ; 2
+ c6c: 30 93 ab 00 sts 0x00AB, r19
+ * \pre The currently selected pipe must first be configured properly via \ref Pipe_ConfigurePipe().
+ */
+ static inline void Pipe_EnablePipe(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_EnablePipe(void)
+ {
+ UPCONX |= (1 << PEN);
+ c70: 30 91 a9 00 lds r19, 0x00A9
+ c74: 31 60 ori r19, 0x01 ; 1
+ c76: 30 93 a9 00 sts 0x00A9, r19
+
+ Pipe_EnablePipe();
+ UPCFG0X = UPCFG0XTemp;
+ c7a: a0 93 aa 00 sts 0x00AA, r26
+ UPCFG1X = UPCFG1XTemp;
+ c7e: 20 93 ab 00 sts 0x00AB, r18
+ UPCFG2X = UPCFG2XTemp;
+ c82: f0 93 ad 00 sts 0x00AD, r31
+ UPCONX = UPCONXTemp;
+ c86: e0 93 a9 00 sts 0x00A9, r30
+ UPINRQX = UPINRQXTemp;
+ c8a: 70 93 a5 00 sts 0x00A5, r23
+ UPIENX = UPIENXTemp;
+ c8e: 40 93 ae 00 sts 0x00AE, r20
+ * \return Boolean \c true if the selected pipe is configured, \c false otherwise.
+ */
+ static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsConfigured(void)
+ {
+ return ((UPSTAX & (1 << CFGOK)) ? true : false);
+ c92: 20 91 ac 00 lds r18, 0x00AC
+
+ if (!(Pipe_IsConfigured()))
+ c96: 27 ff sbrs r18, 7
+ c98: 08 c0 rjmp .+16 ; 0xcaa <Pipe_ConfigurePipe+0xc4>
+
+ Pipe_SetInfiniteINRequests();
+
+ return Pipe_IsConfigured();
+#else
+ for (uint8_t PNum = Number; PNum < PIPE_TOTAL_PIPES; PNum++)
+ c9a: 9f 5f subi r25, 0xFF ; 255
+ c9c: 97 30 cpi r25, 0x07 ; 7
+ c9e: 08 f4 brcc .+2 ; 0xca2 <Pipe_ConfigurePipe+0xbc>
+ ca0: b0 cf rjmp .-160 ; 0xc02 <Pipe_ConfigurePipe+0x1c>
+ * \param[in] PipeNumber Index of the pipe to select.
+ */
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)
+ {
+ UPNUM = PipeNumber;
+ ca2: 80 93 a7 00 sts 0x00A7, r24
+ if (!(Pipe_IsConfigured()))
+ return false;
+ }
+
+ Pipe_SelectPipe(Number);
+ return true;
+ ca6: 81 e0 ldi r24, 0x01 ; 1
+ ca8: 01 c0 rjmp .+2 ; 0xcac <Pipe_ConfigurePipe+0xc6>
+ UPCONX = UPCONXTemp;
+ UPINRQX = UPINRQXTemp;
+ UPIENX = UPIENXTemp;
+
+ if (!(Pipe_IsConfigured()))
+ return false;
+ caa: 80 e0 ldi r24, 0x00 ; 0
+ }
+
+ Pipe_SelectPipe(Number);
+ return true;
+#endif
+}
+ cac: 1f 91 pop r17
+ cae: 0f 91 pop r16
+ cb0: ef 90 pop r14
+ cb2: 08 95 ret
+
+00000cb4 <Pipe_ClearPipes>:
+
+void Pipe_ClearPipes(void)
+{
+ UPINT = 0;
+ cb4: 10 92 f8 00 sts 0x00F8, r1
+
+ for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
+ cb8: 80 e0 ldi r24, 0x00 ; 0
+ cba: 80 93 a7 00 sts 0x00A7, r24
+ {
+ Pipe_SelectPipe(PNum);
+ UPIENX = 0;
+ cbe: 10 92 ae 00 sts 0x00AE, r1
+ UPINTX = 0;
+ cc2: 10 92 a6 00 sts 0x00A6, r1
+ UPCFG1X = 0;
+ cc6: 10 92 ab 00 sts 0x00AB, r1
+ * from an attached device.
+ */
+ static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_DisablePipe(void)
+ {
+ UPCONX &= ~(1 << PEN);
+ cca: 90 91 a9 00 lds r25, 0x00A9
+ cce: 9e 7f andi r25, 0xFE ; 254
+ cd0: 90 93 a9 00 sts 0x00A9, r25
+
+void Pipe_ClearPipes(void)
+{
+ UPINT = 0;
+
+ for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)
+ cd4: 8f 5f subi r24, 0xFF ; 255
+ cd6: 87 30 cpi r24, 0x07 ; 7
+ cd8: 81 f7 brne .-32 ; 0xcba <Pipe_ClearPipes+0x6>
+ UPIENX = 0;
+ UPINTX = 0;
+ UPCFG1X = 0;
+ Pipe_DisablePipe();
+ }
+}
+ cda: 08 95 ret
+
+00000cdc <USB_Disable>:
+ USB_ResetInterface();
+}
+
+void USB_Disable(void)
+{
+ USB_INT_DisableAllInterrupts();
+ cdc: 6e d0 rcall .+220 ; 0xdba <USB_INT_DisableAllInterrupts>
+ USB_INT_ClearAllInterrupts();
+ cde: 75 d0 rcall .+234 ; 0xdca <USB_INT_ClearAllInterrupts>
+ * enumerating the device once attached until \ref USB_Attach() is called.
+ */
+ static inline void USB_Detach(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Detach(void)
+ {
+ UDCON |= (1 << DETACH);
+ ce0: e0 ee ldi r30, 0xE0 ; 224
+ ce2: f0 e0 ldi r31, 0x00 ; 0
+ ce4: 80 81 ld r24, Z
+ ce6: 81 60 ori r24, 0x01 ; 1
+ ce8: 80 83 st Z, r24
+ }
+
+ static inline void USB_Controller_Disable(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Controller_Disable(void)
+ {
+ USBCON &= ~(1 << USBE);
+ cea: e8 ed ldi r30, 0xD8 ; 216
+ cec: f0 e0 ldi r31, 0x00 ; 0
+ cee: 80 81 ld r24, Z
+ cf0: 8f 77 andi r24, 0x7F ; 127
+ cf2: 80 83 st Z, r24
+ }
+
+ static inline void USB_PLL_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_PLL_Off(void)
+ {
+ PLLCSR = 0;
+ cf4: 19 bc out 0x29, r1 ; 41
+
+ static inline void USB_REG_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_REG_Off(void)
+ {
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+ UHWCON &= ~(1 << UVREGE);
+ cf6: a7 ed ldi r26, 0xD7 ; 215
+ cf8: b0 e0 ldi r27, 0x00 ; 0
+ cfa: 8c 91 ld r24, X
+ cfc: 8e 7f andi r24, 0xFE ; 254
+ cfe: 8c 93 st X, r24
+ }
+
+ static inline void USB_OTGPAD_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_OTGPAD_Off(void)
+ {
+ USBCON &= ~(1 << OTGPADE);
+ d00: 80 81 ld r24, Z
+ d02: 8f 7e andi r24, 0xEF ; 239
+ d04: 80 83 st Z, r24
+
+ #if defined(USB_CAN_BE_BOTH)
+ USB_CurrentMode = USB_MODE_None;
+ #endif
+
+ USB_IsInitialized = false;
+ d06: 10 92 22 01 sts 0x0122, r1
+}
+ d0a: 08 95 ret
+
+00000d0c <USB_ResetInterface>:
+{
+ #if defined(USB_CAN_BE_BOTH)
+ bool UIDModeSelectEnabled = ((UHWCON & (1 << UIDE)) != 0);
+ #endif
+
+ USB_INT_DisableAllInterrupts();
+ d0c: 56 d0 rcall .+172 ; 0xdba <USB_INT_DisableAllInterrupts>
+ USB_INT_ClearAllInterrupts();
+ d0e: 5d d0 rcall .+186 ; 0xdca <USB_INT_ClearAllInterrupts>
+ }
+
+ static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Controller_Reset(void)
+ {
+ const uint8_t Temp = USBCON;
+ d10: 80 91 d8 00 lds r24, 0x00D8
+
+ USBCON = (Temp & ~(1 << USBE));
+ d14: 98 2f mov r25, r24
+ d16: 9f 77 andi r25, 0x7F ; 127
+ d18: 90 93 d8 00 sts 0x00D8, r25
+ USBCON = (Temp | (1 << USBE));
+ d1c: 80 68 ori r24, 0x80 ; 128
+ d1e: 80 93 d8 00 sts 0x00D8, r24
+ }
+
+ static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_CLK_Unfreeze(void)
+ {
+ USBCON &= ~(1 << FRZCLK);
+ d22: 80 91 d8 00 lds r24, 0x00D8
+ d26: 8f 7d andi r24, 0xDF ; 223
+ d28: 80 93 d8 00 sts 0x00D8, r24
+ #endif
+ }
+ else if (USB_CurrentMode == USB_MODE_Host)
+ {
+ #if defined(USB_CAN_BE_HOST)
+ UHWCON &= ~(1 << UIMOD);
+ d2c: 80 91 d7 00 lds r24, 0x00D7
+ d30: 8f 77 andi r24, 0x7F ; 127
+ d32: 80 93 d7 00 sts 0x00D7, r24
+
+ /* Inline Functions: */
+ static inline void USB_PLL_On(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_PLL_On(void)
+ {
+ PLLCSR = USB_PLL_PSC;
+ d36: 8c e0 ldi r24, 0x0C ; 12
+ d38: 89 bd out 0x29, r24 ; 41
+ PLLCSR |= (1 << PLLE);
+ d3a: 89 b5 in r24, 0x29 ; 41
+ d3c: 82 60 ori r24, 0x02 ; 2
+ d3e: 89 bd out 0x29, r24 ; 41
+
+ if (!(USB_Options & USB_OPT_MANUAL_PLL))
+ {
+ #if defined(USB_CAN_BE_HOST)
+ USB_PLL_On();
+ while (!(USB_PLL_IsReady()));
+ d40: 09 b4 in r0, 0x29 ; 41
+ d42: 00 fe sbrs r0, 0
+ d44: fd cf rjmp .-6 ; 0xd40 <USB_ResetInterface+0x34>
+#endif
+
+#if defined(USB_CAN_BE_HOST)
+static void USB_Init_Host(void)
+{
+ USB_HostState = HOST_STATE_Unattached;
+ d46: 82 e0 ldi r24, 0x02 ; 2
+ d48: 80 93 2b 01 sts 0x012B, r24
+ USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;
+ d4c: 80 e4 ldi r24, 0x40 ; 64
+ d4e: 80 93 1b 01 sts 0x011B, r24
+ #if !defined(__DOXYGEN__)
+ /* Macros: */
+ static inline void USB_Host_HostMode_On(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_HostMode_On(void)
+ {
+ USBCON |= (1 << HOST);
+ d52: 80 91 d8 00 lds r24, 0x00D8
+ d56: 80 64 ori r24, 0x40 ; 64
+ d58: 80 93 d8 00 sts 0x00D8, r24
+ }
+
+ static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Auto_Off(void)
+ {
+ OTGCON |= (1 << VBUSRQC);
+ d5c: 80 91 dd 00 lds r24, 0x00DD
+ d60: 81 60 ori r24, 0x01 ; 1
+ d62: 80 93 dd 00 sts 0x00DD, r24
+ }
+
+ static inline void USB_Host_VBUS_Manual_Enable(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Manual_Enable(void)
+ {
+ OTGCON |= (1 << VBUSHWC);
+ d66: 80 91 dd 00 lds r24, 0x00DD
+ d6a: 84 60 ori r24, 0x04 ; 4
+ d6c: 80 93 dd 00 sts 0x00DD, r24
+ UHWCON &= ~(1 << UVCONE);
+ d70: 80 91 d7 00 lds r24, 0x00D7
+ d74: 8f 7e andi r24, 0xEF ; 239
+ d76: 80 93 d7 00 sts 0x00D7, r24
+
+ DDRE |= (1 << 7);
+ d7a: 6f 9a sbi 0x0d, 7 ; 13
+ }
+
+ static inline void USB_Host_VBUS_Manual_On(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Manual_On(void)
+ {
+ PORTE |= (1 << 7);
+ d7c: 77 9a sbi 0x0e, 7 ; 14
+ break;
+ case USB_INT_VBERRI:
+ OTGIEN |= (1 << VBERRE);
+ break;
+ case USB_INT_SRPI:
+ OTGIEN |= (1 << SRPE);
+ d7e: 80 91 de 00 lds r24, 0x00DE
+ d82: 81 60 ori r24, 0x01 ; 1
+ d84: 80 93 de 00 sts 0x00DE, r24
+ break;
+ case USB_INT_RSTI:
+ UHIEN |= (1 << RSTE);
+ break;
+ case USB_INT_BCERRI:
+ OTGIEN |= (1 << BCERRE);
+ d88: 80 91 de 00 lds r24, 0x00DE
+ d8c: 84 60 ori r24, 0x04 ; 4
+ d8e: 80 93 de 00 sts 0x00DE, r24
+ * register and despite the datasheet making no mention of its requirement in host mode.
+ */
+ static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Attach(void)
+ {
+ UDCON &= ~(1 << DETACH);
+ d92: 80 91 e0 00 lds r24, 0x00E0
+ d96: 8e 7f andi r24, 0xFE ; 254
+ d98: 80 93 e0 00 sts 0x00E0, r24
+
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+ static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_OTGPAD_On(void)
+ {
+ USBCON |= (1 << OTGPADE);
+ d9c: 80 91 d8 00 lds r24, 0x00D8
+ da0: 80 61 ori r24, 0x10 ; 16
+ da2: 80 93 d8 00 sts 0x00D8, r24
+ }
+
+ #if (defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR))
+ USB_OTGPAD_On();
+ #endif
+}
+ da6: 08 95 ret
+
+00000da8 <USB_Init>:
+
+ static inline void USB_REG_On(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_REG_On(void)
+ {
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+ UHWCON |= (1 << UVREGE);
+ da8: e7 ed ldi r30, 0xD7 ; 215
+ daa: f0 e0 ldi r31, 0x00 ; 0
+ dac: 80 81 ld r24, Z
+ dae: 81 60 ori r24, 0x01 ; 1
+ db0: 80 83 st Z, r24
+ UHWCON &= ~(1 << UIDE);
+ USB_CurrentMode = Mode;
+ }
+ #endif
+
+ USB_IsInitialized = true;
+ db2: 81 e0 ldi r24, 0x01 ; 1
+ db4: 80 93 22 01 sts 0x0122, r24
+
+ USB_ResetInterface();
+}
+ db8: a9 cf rjmp .-174 ; 0xd0c <USB_ResetInterface>
+
+00000dba <USB_INT_DisableAllInterrupts>:
+#include "../USBInterrupt.h"
+
+void USB_INT_DisableAllInterrupts(void)
+{
+ #if defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+ USBCON &= ~((1 << VBUSTE) | (1 << IDTE));
+ dba: e8 ed ldi r30, 0xD8 ; 216
+ dbc: f0 e0 ldi r31, 0x00 ; 0
+ dbe: 80 81 ld r24, Z
+ dc0: 8c 7f andi r24, 0xFC ; 252
+ dc2: 80 83 st Z, r24
+ #if defined(USB_CAN_BE_BOTH)
+ OTGIEN = 0;
+ #endif
+
+ #if defined(USB_CAN_BE_HOST)
+ UHIEN = 0;
+ dc4: 10 92 a0 00 sts 0x00A0, r1
+ #endif
+
+ #if defined(USB_CAN_BE_DEVICE)
+ UDIEN = 0;
+ #endif
+}
+ dc8: 08 95 ret
+
+00000dca <USB_INT_ClearAllInterrupts>:
+
+void USB_INT_ClearAllInterrupts(void)
+{
+ #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+ USBINT = 0;
+ dca: 10 92 da 00 sts 0x00DA, r1
+ #if defined(USB_CAN_BE_BOTH)
+ OTGINT = 0;
+ #endif
+
+ #if defined(USB_CAN_BE_HOST)
+ UHINT = 0;
+ dce: 10 92 9f 00 sts 0x009F, r1
+ #endif
+
+ #if defined(USB_CAN_BE_DEVICE)
+ UDINT = 0;
+ #endif
+}
+ dd2: 08 95 ret
+
+00000dd4 <__vector_10>:
+
+ISR(USB_GEN_vect, ISR_BLOCK)
+{
+ dd4: 1f 92 push r1
+ dd6: 0f 92 push r0
+ dd8: 0f b6 in r0, 0x3f ; 63
+ dda: 0f 92 push r0
+ ddc: 0b b6 in r0, 0x3b ; 59
+ dde: 0f 92 push r0
+ de0: 11 24 eor r1, r1
+ de2: 2f 93 push r18
+ de4: 3f 93 push r19
+ de6: 4f 93 push r20
+ de8: 5f 93 push r21
+ dea: 6f 93 push r22
+ dec: 7f 93 push r23
+ dee: 8f 93 push r24
+ df0: 9f 93 push r25
+ df2: af 93 push r26
+ df4: bf 93 push r27
+ df6: ef 93 push r30
+ df8: ff 93 push r31
+ case USB_INT_RXSTPI:
+ return (UEINTX & (1 << RXSTPI));
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ return (UHINT & (1 << HSOFI));
+ dfa: 80 91 9f 00 lds r24, 0x009F
+ }
+ #endif
+
+ #if defined(USB_CAN_BE_HOST)
+ #if !defined(NO_SOF_EVENTS)
+ if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))
+ dfe: 85 ff sbrs r24, 5
+ e00: 0a c0 rjmp .+20 ; 0xe16 <__vector_10+0x42>
+ case USB_INT_RXSTPI:
+ return (UEIENX & (1 << RXSTPE));
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ return (UHIEN & (1 << HSOFE));
+ e02: 80 91 a0 00 lds r24, 0x00A0
+ e06: 85 ff sbrs r24, 5
+ e08: 06 c0 rjmp .+12 ; 0xe16 <__vector_10+0x42>
+ UEINTX &= ~(1 << RXSTPI);
+ break;
+ #endif
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHINT &= ~(1 << HSOFI);
+ e0a: 80 91 9f 00 lds r24, 0x009F
+ e0e: 8f 7d andi r24, 0xDF ; 223
+ e10: 80 93 9f 00 sts 0x009F, r24
+ {
+ USB_INT_Clear(USB_INT_HSOFI);
+
+ EVENT_USB_Host_StartOfFrame();
+ e14: 0c d1 rcall .+536 ; 0x102e <USB_Event_Stub>
+ case USB_INT_HSOFI:
+ return (UHINT & (1 << HSOFI));
+ case USB_INT_DCONNI:
+ return (UHINT & (1 << DCONNI));
+ case USB_INT_DDISCI:
+ return (UHINT & (1 << DDISCI));
+ e16: 80 91 9f 00 lds r24, 0x009F
+ }
+ #endif
+
+ if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))
+ e1a: 81 ff sbrs r24, 1
+ e1c: 15 c0 rjmp .+42 ; 0xe48 <__vector_10+0x74>
+ case USB_INT_HSOFI:
+ return (UHIEN & (1 << HSOFE));
+ case USB_INT_DCONNI:
+ return (UHIEN & (1 << DCONNE));
+ case USB_INT_DDISCI:
+ return (UHIEN & (1 << DDISCE));
+ e1e: 80 91 a0 00 lds r24, 0x00A0
+ e22: 81 ff sbrs r24, 1
+ e24: 11 c0 rjmp .+34 ; 0xe48 <__vector_10+0x74>
+ break;
+ case USB_INT_DCONNI:
+ UHINT &= ~(1 << DCONNI);
+ break;
+ case USB_INT_DDISCI:
+ UHINT &= ~(1 << DDISCI);
+ e26: 80 91 9f 00 lds r24, 0x009F
+ e2a: 8d 7f andi r24, 0xFD ; 253
+ e2c: 80 93 9f 00 sts 0x009F, r24
+ #if defined(USB_CAN_BE_HOST)
+ case USB_INT_HSOFI:
+ UHINT &= ~(1 << HSOFI);
+ break;
+ case USB_INT_DCONNI:
+ UHINT &= ~(1 << DCONNI);
+ e30: 80 91 9f 00 lds r24, 0x009F
+ e34: 8e 7f andi r24, 0xFE ; 254
+ e36: 80 93 9f 00 sts 0x009F, r24
+ break;
+ case USB_INT_DCONNI:
+ UHIEN &= ~(1 << DCONNE);
+ break;
+ case USB_INT_DDISCI:
+ UHIEN &= ~(1 << DDISCE);
+ e3a: 80 91 a0 00 lds r24, 0x00A0
+ e3e: 8d 7f andi r24, 0xFD ; 253
+ e40: 80 93 a0 00 sts 0x00A0, r24
+ {
+ USB_INT_Clear(USB_INT_DDISCI);
+ USB_INT_Clear(USB_INT_DCONNI);
+ USB_INT_Disable(USB_INT_DDISCI);
+
+ EVENT_USB_Host_DeviceUnattached();
+ e44: a1 da rcall .-2750 ; 0x388 <EVENT_USB_Host_DeviceUnattached>
+
+ USB_ResetInterface();
+ e46: 62 df rcall .-316 ; 0xd0c <USB_ResetInterface>
+ case USB_INT_RSTI:
+ return (UHINT & (1 << RSTI));
+ case USB_INT_BCERRI:
+ return (OTGINT & (1 << BCERRI));
+ case USB_INT_VBERRI:
+ return (OTGINT & (1 << VBERRI));
+ e48: 80 91 df 00 lds r24, 0x00DF
+ }
+
+ if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))
+ e4c: 81 ff sbrs r24, 1
+ e4e: 15 c0 rjmp .+42 ; 0xe7a <__vector_10+0xa6>
+ case USB_INT_RSTI:
+ return (UHIEN & (1 << RSTE));
+ case USB_INT_BCERRI:
+ return (OTGIEN & (1 << BCERRE));
+ case USB_INT_VBERRI:
+ return (OTGIEN & (1 << VBERRE));
+ e50: 80 91 de 00 lds r24, 0x00DE
+ e54: 81 ff sbrs r24, 1
+ e56: 11 c0 rjmp .+34 ; 0xe7a <__vector_10+0xa6>
+ break;
+ case USB_INT_BCERRI:
+ OTGINT &= ~(1 << BCERRI);
+ break;
+ case USB_INT_VBERRI:
+ OTGINT &= ~(1 << VBERRI);
+ e58: 80 91 df 00 lds r24, 0x00DF
+ e5c: 8d 7f andi r24, 0xFD ; 253
+ e5e: 80 93 df 00 sts 0x00DF, r24
+ }
+
+ static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Manual_Off(void)
+ {
+ PORTE &= ~(1 << 7);
+ e62: 77 98 cbi 0x0e, 7 ; 14
+ }
+
+ static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_VBUS_Auto_Off(void)
+ {
+ OTGCON |= (1 << VBUSRQC);
+ e64: 80 91 dd 00 lds r24, 0x00DD
+ e68: 81 60 ori r24, 0x01 ; 1
+ e6a: 80 93 dd 00 sts 0x00DD, r24
+ USB_INT_Clear(USB_INT_VBERRI);
+
+ USB_Host_VBUS_Manual_Off();
+ USB_Host_VBUS_Auto_Off();
+
+ EVENT_USB_Host_HostError(HOST_ERROR_VBusVoltageDip);
+ e6e: 80 e0 ldi r24, 0x00 ; 0
+ e70: 92 da rcall .-2780 ; 0x396 <EVENT_USB_Host_HostError>
+ EVENT_USB_Host_DeviceUnattached();
+ e72: 8a da rcall .-2796 ; 0x388 <EVENT_USB_Host_DeviceUnattached>
+
+ USB_HostState = HOST_STATE_Unattached;
+ e74: 82 e0 ldi r24, 0x02 ; 2
+ e76: 80 93 2b 01 sts 0x012B, r24
+ case USB_INT_BCERRI:
+ return (OTGINT & (1 << BCERRI));
+ case USB_INT_VBERRI:
+ return (OTGINT & (1 << VBERRI));
+ case USB_INT_SRPI:
+ return (OTGINT & (1 << SRPI));
+ e7a: 80 91 df 00 lds r24, 0x00DF
+ }
+
+ if (USB_INT_HasOccurred(USB_INT_SRPI) && USB_INT_IsEnabled(USB_INT_SRPI))
+ e7e: 80 ff sbrs r24, 0
+ e80: 17 c0 rjmp .+46 ; 0xeb0 <__vector_10+0xdc>
+ case USB_INT_BCERRI:
+ return (OTGIEN & (1 << BCERRE));
+ case USB_INT_VBERRI:
+ return (OTGIEN & (1 << VBERRE));
+ case USB_INT_SRPI:
+ return (OTGIEN & (1 << SRPE));
+ e82: 80 91 de 00 lds r24, 0x00DE
+ e86: 80 ff sbrs r24, 0
+ e88: 13 c0 rjmp .+38 ; 0xeb0 <__vector_10+0xdc>
+ break;
+ case USB_INT_VBERRI:
+ OTGINT &= ~(1 << VBERRI);
+ break;
+ case USB_INT_SRPI:
+ OTGINT &= ~(1 << SRPI);
+ e8a: 80 91 df 00 lds r24, 0x00DF
+ e8e: 8e 7f andi r24, 0xFE ; 254
+ e90: 80 93 df 00 sts 0x00DF, r24
+ break;
+ case USB_INT_VBERRI:
+ OTGIEN &= ~(1 << VBERRE);
+ break;
+ case USB_INT_SRPI:
+ OTGIEN &= ~(1 << SRPE);
+ e94: 80 91 de 00 lds r24, 0x00DE
+ e98: 8e 7f andi r24, 0xFE ; 254
+ e9a: 80 93 de 00 sts 0x00DE, r24
+ {
+ USB_INT_Clear(USB_INT_SRPI);
+ USB_INT_Disable(USB_INT_SRPI);
+
+ EVENT_USB_Host_DeviceAttached();
+ e9e: 6f da rcall .-2850 ; 0x37e <EVENT_USB_Host_DeviceAttached>
+ break;
+ case USB_INT_DCONNI:
+ UHIEN |= (1 << DCONNE);
+ break;
+ case USB_INT_DDISCI:
+ UHIEN |= (1 << DDISCE);
+ ea0: 80 91 a0 00 lds r24, 0x00A0
+ ea4: 82 60 ori r24, 0x02 ; 2
+ ea6: 80 93 a0 00 sts 0x00A0, r24
+
+ USB_INT_Enable(USB_INT_DDISCI);
+
+ USB_HostState = HOST_STATE_Powered;
+ eaa: 83 e0 ldi r24, 0x03 ; 3
+ eac: 80 93 2b 01 sts 0x012B, r24
+ case USB_INT_DDISCI:
+ return (UHINT & (1 << DDISCI));
+ case USB_INT_RSTI:
+ return (UHINT & (1 << RSTI));
+ case USB_INT_BCERRI:
+ return (OTGINT & (1 << BCERRI));
+ eb0: 80 91 df 00 lds r24, 0x00DF
+ }
+
+ if (USB_INT_HasOccurred(USB_INT_BCERRI) && USB_INT_IsEnabled(USB_INT_BCERRI))
+ eb4: 82 ff sbrs r24, 2
+ eb6: 0e c0 rjmp .+28 ; 0xed4 <__vector_10+0x100>
+ case USB_INT_DDISCI:
+ return (UHIEN & (1 << DDISCE));
+ case USB_INT_RSTI:
+ return (UHIEN & (1 << RSTE));
+ case USB_INT_BCERRI:
+ return (OTGIEN & (1 << BCERRE));
+ eb8: 80 91 de 00 lds r24, 0x00DE
+ ebc: 82 ff sbrs r24, 2
+ ebe: 0a c0 rjmp .+20 ; 0xed4 <__vector_10+0x100>
+ break;
+ case USB_INT_RSTI:
+ UHINT &= ~(1 << RSTI);
+ break;
+ case USB_INT_BCERRI:
+ OTGINT &= ~(1 << BCERRI);
+ ec0: 80 91 df 00 lds r24, 0x00DF
+ ec4: 8b 7f andi r24, 0xFB ; 251
+ ec6: 80 93 df 00 sts 0x00DF, r24
+ {
+ USB_INT_Clear(USB_INT_BCERRI);
+
+ EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);
+ eca: 82 e0 ldi r24, 0x02 ; 2
+ ecc: 60 e0 ldi r22, 0x00 ; 0
+ ece: 82 da rcall .-2812 ; 0x3d4 <EVENT_USB_Host_DeviceEnumerationFailed>
+ EVENT_USB_Host_DeviceUnattached();
+ ed0: 5b da rcall .-2890 ; 0x388 <EVENT_USB_Host_DeviceUnattached>
+
+ USB_ResetInterface();
+ ed2: 1c df rcall .-456 ; 0xd0c <USB_ResetInterface>
+ USB_ResetInterface();
+
+ EVENT_USB_UIDChange();
+ }
+ #endif
+}
+ ed4: ff 91 pop r31
+ ed6: ef 91 pop r30
+ ed8: bf 91 pop r27
+ eda: af 91 pop r26
+ edc: 9f 91 pop r25
+ ede: 8f 91 pop r24
+ ee0: 7f 91 pop r23
+ ee2: 6f 91 pop r22
+ ee4: 5f 91 pop r21
+ ee6: 4f 91 pop r20
+ ee8: 3f 91 pop r19
+ eea: 2f 91 pop r18
+ eec: 0f 90 pop r0
+ eee: 0b be out 0x3b, r0 ; 59
+ ef0: 0f 90 pop r0
+ ef2: 0f be out 0x3f, r0 ; 63
+ ef4: 0f 90 pop r0
+ ef6: 1f 90 pop r1
+ ef8: 18 95 reti
+
+00000efa <USB_Host_GetDeviceConfigDescriptor>:
+#if defined(USB_CAN_BE_HOST)
+uint8_t USB_Host_GetDeviceConfigDescriptor(const uint8_t ConfigNumber,
+ uint16_t* const ConfigSizePtr,
+ void* const BufferPtr,
+ const uint16_t BufferSize)
+{
+ efa: cf 92 push r12
+ efc: df 92 push r13
+ efe: ef 92 push r14
+ f00: ff 92 push r15
+ f02: 0f 93 push r16
+ f04: 1f 93 push r17
+ f06: df 93 push r29
+ f08: cf 93 push r28
+ f0a: cd b7 in r28, 0x3d ; 61
+ f0c: de b7 in r29, 0x3e ; 62
+ f0e: 29 97 sbiw r28, 0x09 ; 9
+ f10: 0f b6 in r0, 0x3f ; 63
+ f12: f8 94 cli
+ f14: de bf out 0x3e, r29 ; 62
+ f16: 0f be out 0x3f, r0 ; 63
+ f18: cd bf out 0x3d, r28 ; 61
+ f1a: 6b 01 movw r12, r22
+ f1c: 8a 01 movw r16, r20
+ f1e: 79 01 movw r14, r18
+ uint8_t ErrorCode;
+ uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];
+
+ USB_ControlRequest = (USB_Request_Header_t)
+ f20: 90 e8 ldi r25, 0x80 ; 128
+ f22: 90 93 23 01 sts 0x0123, r25
+ f26: 96 e0 ldi r25, 0x06 ; 6
+ f28: 90 93 24 01 sts 0x0124, r25
+ {
+ .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),
+ .bRequest = REQ_GetDescriptor,
+ .wValue = ((DTYPE_Configuration << 8) | (ConfigNumber - 1)),
+ f2c: 90 e0 ldi r25, 0x00 ; 0
+ f2e: 01 97 sbiw r24, 0x01 ; 1
+ f30: 92 60 ori r25, 0x02 ; 2
+ const uint16_t BufferSize)
+{
+ uint8_t ErrorCode;
+ uint8_t ConfigHeader[sizeof(USB_Descriptor_Configuration_Header_t)];
+
+ USB_ControlRequest = (USB_Request_Header_t)
+ f32: 90 93 26 01 sts 0x0126, r25
+ f36: 80 93 25 01 sts 0x0125, r24
+ f3a: 10 92 28 01 sts 0x0128, r1
+ f3e: 10 92 27 01 sts 0x0127, r1
+ f42: 89 e0 ldi r24, 0x09 ; 9
+ f44: 90 e0 ldi r25, 0x00 ; 0
+ f46: 90 93 2a 01 sts 0x012A, r25
+ f4a: 80 93 29 01 sts 0x0129, r24
+ f4e: 10 92 a7 00 sts 0x00A7, r1
+ .wLength = sizeof(USB_Descriptor_Configuration_Header_t),
+ };
+
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ if ((ErrorCode = USB_Host_SendControlRequest(ConfigHeader)) != HOST_SENDCONTROL_Successful)
+ f52: ce 01 movw r24, r28
+ f54: 01 96 adiw r24, 0x01 ; 1
+ f56: 95 d0 rcall .+298 ; 0x1082 <USB_Host_SendControlRequest>
+ f58: 88 23 and r24, r24
+ f5a: b9 f4 brne .+46 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>
+ return ErrorCode;
+
+ *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize;
+ f5c: 8b 81 ldd r24, Y+3 ; 0x03
+ f5e: 9c 81 ldd r25, Y+4 ; 0x04
+ f60: f6 01 movw r30, r12
+ f62: 91 83 std Z+1, r25 ; 0x01
+ f64: 80 83 st Z, r24
+
+ if (*ConfigSizePtr > BufferSize)
+ f66: e8 16 cp r14, r24
+ f68: f9 06 cpc r15, r25
+ f6a: 70 f0 brcs .+28 ; 0xf88 <USB_Host_GetDeviceConfigDescriptor+0x8e>
+ return HOST_GETCONFIG_BuffOverflow;
+
+ USB_ControlRequest.wLength = *ConfigSizePtr;
+ f6c: 90 93 2a 01 sts 0x012A, r25
+ f70: 80 93 29 01 sts 0x0129, r24
+
+ if ((ErrorCode = USB_Host_SendControlRequest(BufferPtr)) != HOST_SENDCONTROL_Successful)
+ f74: c8 01 movw r24, r16
+ f76: 85 d0 rcall .+266 ; 0x1082 <USB_Host_SendControlRequest>
+ f78: 88 23 and r24, r24
+ f7a: 39 f4 brne .+14 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>
+ return ErrorCode;
+
+ if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration)
+ f7c: f8 01 movw r30, r16
+ f7e: 91 81 ldd r25, Z+1 ; 0x01
+ f80: 92 30 cpi r25, 0x02 ; 2
+ f82: 19 f0 breq .+6 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>
+ return HOST_GETCONFIG_InvalidData;
+ f84: 86 e0 ldi r24, 0x06 ; 6
+ f86: 01 c0 rjmp .+2 ; 0xf8a <USB_Host_GetDeviceConfigDescriptor+0x90>
+ return ErrorCode;
+
+ *ConfigSizePtr = DESCRIPTOR_PCAST(ConfigHeader, USB_Descriptor_Configuration_Header_t)->TotalConfigurationSize;
+
+ if (*ConfigSizePtr > BufferSize)
+ return HOST_GETCONFIG_BuffOverflow;
+ f88: 85 e0 ldi r24, 0x05 ; 5
+
+ if (DESCRIPTOR_TYPE(BufferPtr) != DTYPE_Configuration)
+ return HOST_GETCONFIG_InvalidData;
+
+ return HOST_GETCONFIG_Successful;
+}
+ f8a: 29 96 adiw r28, 0x09 ; 9
+ f8c: 0f b6 in r0, 0x3f ; 63
+ f8e: f8 94 cli
+ f90: de bf out 0x3e, r29 ; 62
+ f92: 0f be out 0x3f, r0 ; 63
+ f94: cd bf out 0x3d, r28 ; 61
+ f96: cf 91 pop r28
+ f98: df 91 pop r29
+ f9a: 1f 91 pop r17
+ f9c: 0f 91 pop r16
+ f9e: ff 90 pop r15
+ fa0: ef 90 pop r14
+ fa2: df 90 pop r13
+ fa4: cf 90 pop r12
+ fa6: 08 95 ret
+
+00000fa8 <USB_GetNextDescriptorComp>:
+}
+
+uint8_t USB_GetNextDescriptorComp(uint16_t* const BytesRem,
+ void** const CurrConfigLoc,
+ const ConfigComparatorPtr_t const ComparatorRoutine)
+{
+ fa8: af 92 push r10
+ faa: bf 92 push r11
+ fac: cf 92 push r12
+ fae: df 92 push r13
+ fb0: ef 92 push r14
+ fb2: ff 92 push r15
+ fb4: 0f 93 push r16
+ fb6: 1f 93 push r17
+ fb8: cf 93 push r28
+ fba: df 93 push r29
+ fbc: 8c 01 movw r16, r24
+ fbe: eb 01 movw r28, r22
+ fc0: 6a 01 movw r12, r20
+ uint8_t ErrorCode;
+
+ while (*BytesRem)
+ fc2: 23 c0 rjmp .+70 ; 0x100a <USB_GetNextDescriptorComp+0x62>
+ {
+ uint8_t* PrevDescLoc = *CurrConfigLoc;
+ fc4: e8 81 ld r30, Y
+ fc6: f9 81 ldd r31, Y+1 ; 0x01
+ fc8: 5f 01 movw r10, r30
+ static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,
+ void** CurrConfigLoc) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
+ static inline void USB_GetNextDescriptor(uint16_t* const BytesRem,
+ void** CurrConfigLoc)
+ {
+ uint16_t CurrDescriptorSize = DESCRIPTOR_CAST(*CurrConfigLoc, USB_Descriptor_Header_t).Size;
+ fca: 20 81 ld r18, Z
+ fcc: 30 e0 ldi r19, 0x00 ; 0
+ fce: c7 01 movw r24, r14
+ fd0: 2e 15 cp r18, r14
+ fd2: 3f 05 cpc r19, r15
+ fd4: 08 f4 brcc .+2 ; 0xfd8 <USB_GetNextDescriptorComp+0x30>
+ fd6: c9 01 movw r24, r18
+
+ if (*BytesRem < CurrDescriptorSize)
+ CurrDescriptorSize = *BytesRem;
+
+ *CurrConfigLoc = (void*)((uintptr_t)*CurrConfigLoc + CurrDescriptorSize);
+ fd8: e8 0f add r30, r24
+ fda: f9 1f adc r31, r25
+ fdc: f9 83 std Y+1, r31 ; 0x01
+ fde: e8 83 st Y, r30
+ *BytesRem -= CurrDescriptorSize;
+ fe0: f8 01 movw r30, r16
+ fe2: 20 81 ld r18, Z
+ fe4: 31 81 ldd r19, Z+1 ; 0x01
+ fe6: 28 1b sub r18, r24
+ fe8: 39 0b sbc r19, r25
+ fea: 31 83 std Z+1, r19 ; 0x01
+ fec: 20 83 st Z, r18
+ uint16_t PrevBytesRem = *BytesRem;
+
+ USB_GetNextDescriptor(BytesRem, CurrConfigLoc);
+
+ if ((ErrorCode = ComparatorRoutine(*CurrConfigLoc)) != DESCRIPTOR_SEARCH_NotFound)
+ fee: 88 81 ld r24, Y
+ ff0: 99 81 ldd r25, Y+1 ; 0x01
+ ff2: f6 01 movw r30, r12
+ ff4: 09 95 icall
+ ff6: 82 30 cpi r24, 0x02 ; 2
+ ff8: 41 f0 breq .+16 ; 0x100a <USB_GetNextDescriptorComp+0x62>
+ {
+ if (ErrorCode == DESCRIPTOR_SEARCH_Fail)
+ ffa: 81 30 cpi r24, 0x01 ; 1
+ ffc: 69 f4 brne .+26 ; 0x1018 <USB_GetNextDescriptorComp+0x70>
+ {
+ *CurrConfigLoc = PrevDescLoc;
+ ffe: a8 82 st Y, r10
+ 1000: b9 82 std Y+1, r11 ; 0x01
+ *BytesRem = PrevBytesRem;
+ 1002: f8 01 movw r30, r16
+ 1004: f1 82 std Z+1, r15 ; 0x01
+ 1006: e0 82 st Z, r14
+ 1008: 07 c0 rjmp .+14 ; 0x1018 <USB_GetNextDescriptorComp+0x70>
+ void** const CurrConfigLoc,
+ const ConfigComparatorPtr_t const ComparatorRoutine)
+{
+ uint8_t ErrorCode;
+
+ while (*BytesRem)
+ 100a: f8 01 movw r30, r16
+ 100c: e0 80 ld r14, Z
+ 100e: f1 80 ldd r15, Z+1 ; 0x01
+ 1010: e1 14 cp r14, r1
+ 1012: f1 04 cpc r15, r1
+ 1014: b9 f6 brne .-82 ; 0xfc4 <USB_GetNextDescriptorComp+0x1c>
+
+ return ErrorCode;
+ }
+ }
+
+ return DESCRIPTOR_SEARCH_COMP_EndOfDescriptor;
+ 1016: 82 e0 ldi r24, 0x02 ; 2
+}
+ 1018: df 91 pop r29
+ 101a: cf 91 pop r28
+ 101c: 1f 91 pop r17
+ 101e: 0f 91 pop r16
+ 1020: ff 90 pop r15
+ 1022: ef 90 pop r14
+ 1024: df 90 pop r13
+ 1026: cf 90 pop r12
+ 1028: bf 90 pop r11
+ 102a: af 90 pop r10
+ 102c: 08 95 ret
+
+0000102e <USB_Event_Stub>:
+#include "Events.h"
+
+void USB_Event_Stub(void)
+{
+
+}
+ 102e: 08 95 ret
+
+00001030 <USB_Host_WaitForIOS>:
+
+ return ReturnStatus;
+}
+
+static uint8_t USB_Host_WaitForIOS(const uint8_t WaitType)
+{
+ 1030: 1f 93 push r17
+ 1032: cf 93 push r28
+ 1034: df 93 push r29
+ 1036: 18 2f mov r17, r24
+ #if (USB_HOST_TIMEOUT_MS < 0xFF)
+ uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS;
+ #else
+ uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;
+ 1038: c8 ee ldi r28, 0xE8 ; 232
+ 103a: d3 e0 ldi r29, 0x03 ; 3
+ #endif
+
+ while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) ||
+ 103c: 07 c0 rjmp .+14 ; 0x104c <USB_Host_WaitForIOS+0x1c>
+ ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||
+ ((WaitType == USB_HOST_WAITFOR_OutReady) && Pipe_IsOUTReady())))
+ {
+ uint8_t ErrorCode;
+
+ if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)
+ 103e: 81 e0 ldi r24, 0x01 ; 1
+ 1040: 1e dc rcall .-1988 ; 0x87e <USB_Host_WaitMS>
+ 1042: 88 23 and r24, r24
+ 1044: d1 f4 brne .+52 ; 0x107a <USB_Host_WaitForIOS+0x4a>
+ return ErrorCode;
+
+ if (!(TimeoutCounter--))
+ 1046: 20 97 sbiw r28, 0x00 ; 0
+ 1048: b9 f0 breq .+46 ; 0x1078 <USB_Host_WaitForIOS+0x48>
+ 104a: 21 97 sbiw r28, 0x01 ; 1
+ uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS;
+ #else
+ uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;
+ #endif
+
+ while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) ||
+ 104c: 11 23 and r17, r17
+ 104e: 29 f4 brne .+10 ; 0x105a <USB_Host_WaitForIOS+0x2a>
+ * \return Boolean \c true if the current pipe is ready for a SETUP packet, \c false otherwise.
+ */
+ static inline bool Pipe_IsSETUPSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsSETUPSent(void)
+ {
+ return ((UPINTX & (1 << TXSTPI)) ? true : false);
+ 1050: 80 91 a6 00 lds r24, 0x00A6
+ 1054: 83 ff sbrs r24, 3
+ 1056: f3 cf rjmp .-26 ; 0x103e <USB_Host_WaitForIOS+0xe>
+ 1058: 0d c0 rjmp .+26 ; 0x1074 <USB_Host_WaitForIOS+0x44>
+ 105a: 11 30 cpi r17, 0x01 ; 1
+ 105c: 29 f4 brne .+10 ; 0x1068 <USB_Host_WaitForIOS+0x38>
+ * \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.
+ */
+ static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsINReceived(void)
+ {
+ return ((UPINTX & (1 << RXINI)) ? true : false);
+ 105e: 80 91 a6 00 lds r24, 0x00A6
+ ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||
+ 1062: 80 ff sbrs r24, 0
+ 1064: ec cf rjmp .-40 ; 0x103e <USB_Host_WaitForIOS+0xe>
+ 1066: 06 c0 rjmp .+12 ; 0x1074 <USB_Host_WaitForIOS+0x44>
+ uint8_t TimeoutCounter = USB_HOST_TIMEOUT_MS;
+ #else
+ uint16_t TimeoutCounter = USB_HOST_TIMEOUT_MS;
+ #endif
+
+ while (!(((WaitType == USB_HOST_WAITFOR_SetupSent) && Pipe_IsSETUPSent()) ||
+ 1068: 12 30 cpi r17, 0x02 ; 2
+ 106a: 49 f7 brne .-46 ; 0x103e <USB_Host_WaitForIOS+0xe>
+ * \return Boolean \c true if the current pipe is ready for an OUT packet, \c false otherwise.
+ */
+ static inline bool Pipe_IsOUTReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Pipe_IsOUTReady(void)
+ {
+ return ((UPINTX & (1 << TXOUTI)) ? true : false);
+ 106c: 80 91 a6 00 lds r24, 0x00A6
+ ((WaitType == USB_HOST_WAITFOR_InReceived) && Pipe_IsINReceived()) ||
+ ((WaitType == USB_HOST_WAITFOR_OutReady) && Pipe_IsOUTReady())))
+ 1070: 82 ff sbrs r24, 2
+ 1072: e5 cf rjmp .-54 ; 0x103e <USB_Host_WaitForIOS+0xe>
+
+ if (!(TimeoutCounter--))
+ return HOST_SENDCONTROL_SoftwareTimeOut;
+ }
+
+ return HOST_SENDCONTROL_Successful;
+ 1074: 80 e0 ldi r24, 0x00 ; 0
+ 1076: 01 c0 rjmp .+2 ; 0x107a <USB_Host_WaitForIOS+0x4a>
+
+ if ((ErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)
+ return ErrorCode;
+
+ if (!(TimeoutCounter--))
+ return HOST_SENDCONTROL_SoftwareTimeOut;
+ 1078: 84 e0 ldi r24, 0x04 ; 4
+ }
+
+ return HOST_SENDCONTROL_Successful;
+}
+ 107a: df 91 pop r29
+ 107c: cf 91 pop r28
+ 107e: 1f 91 pop r17
+ 1080: 08 95 ret
+
+00001082 <USB_Host_SendControlRequest>:
+
+#define __INCLUDE_FROM_HOSTSTDREQ_C
+#include "HostStandardReq.h"
+
+uint8_t USB_Host_SendControlRequest(void* const BufferPtr)
+{
+ 1082: ef 92 push r14
+ 1084: ff 92 push r15
+ 1086: 0f 93 push r16
+ 1088: 1f 93 push r17
+ 108a: cf 93 push r28
+ 108c: df 93 push r29
+ 108e: 8c 01 movw r16, r24
+ * \return Boolean \c true if the bus is currently suspended, \c false otherwise.
+ */
+ static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool USB_Host_IsBusSuspended(void)
+ {
+ return ((UHCON & (1 << SOFEN)) ? false : true);
+ 1090: e0 90 9e 00 lds r14, 0x009E
+ 1094: ff 24 eor r15, r15
+ 1096: 81 e0 ldi r24, 0x01 ; 1
+ 1098: e8 22 and r14, r24
+ 109a: ff 24 eor r15, r15
+ uint8_t* DataStream = (uint8_t*)BufferPtr;
+ bool BusSuspended = USB_Host_IsBusSuspended();
+ uint8_t ReturnStatus = HOST_SENDCONTROL_Successful;
+ uint16_t DataLen = USB_ControlRequest.wLength;
+ 109c: c0 91 29 01 lds r28, 0x0129
+ 10a0: d0 91 2a 01 lds r29, 0x012A
+ * host and attached device may occur.
+ */
+ static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_ResumeBus(void)
+ {
+ UHCON |= (1 << SOFEN);
+ 10a4: 80 91 9e 00 lds r24, 0x009E
+ 10a8: 81 60 ori r24, 0x01 ; 1
+ 10aa: 80 93 9e 00 sts 0x009E, r24
+
+ USB_Host_ResumeBus();
+
+ if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)
+ 10ae: 81 e0 ldi r24, 0x01 ; 1
+ 10b0: e6 db rcall .-2100 ; 0x87e <USB_Host_WaitMS>
+ 10b2: 88 23 and r24, r24
+ 10b4: 09 f0 breq .+2 ; 0x10b8 <USB_Host_SendControlRequest+0x36>
+ 10b6: e2 c0 rjmp .+452 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.
+ */
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SetPipeToken(const uint8_t Token)
+ {
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);
+ 10b8: 80 91 aa 00 lds r24, 0x00AA
+ 10bc: 8f 7c andi r24, 0xCF ; 207
+ 10be: 80 93 aa 00 sts 0x00AA, r24
+
+ /** Clears the error flags for the currently selected pipe. */
+ static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearError(void)
+ {
+ UPERRX = 0;
+ 10c2: 10 92 f5 00 sts 0x00F5, r1
+ UPINTX &= ~(1 << PERRI);
+ 10c6: 80 91 a6 00 lds r24, 0x00A6
+ 10ca: 8f 7e andi r24, 0xEF ; 239
+ 10cc: 80 93 a6 00 sts 0x00A6, r24
+
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Unfreeze(void)
+ {
+ UPCONX &= ~(1 << PFREEZE);
+ 10d0: 80 91 a9 00 lds r24, 0x00A9
+ 10d4: 8f 7b andi r24, 0xBF ; 191
+ 10d6: 80 93 a9 00 sts 0x00A9, r24
+ Pipe_SetPipeToken(PIPE_TOKEN_SETUP);
+ Pipe_ClearError();
+
+ Pipe_Unfreeze();
+
+ Pipe_Write_8(USB_ControlRequest.bmRequestType);
+ 10da: 80 91 23 01 lds r24, 0x0123
+ * \param[in] Data Data to write into the the currently selected pipe's FIFO buffer.
+ */
+ static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Write_8(const uint8_t Data)
+ {
+ UPDATX = Data;
+ 10de: 80 93 af 00 sts 0x00AF, r24
+ Pipe_Write_8(USB_ControlRequest.bRequest);
+ 10e2: 80 91 24 01 lds r24, 0x0124
+ 10e6: 80 93 af 00 sts 0x00AF, r24
+ Pipe_Write_16_LE(USB_ControlRequest.wValue);
+ 10ea: 90 91 25 01 lds r25, 0x0125
+ 10ee: 80 91 26 01 lds r24, 0x0126
+ * \param[in] Data Data to write to the currently selected pipe's FIFO buffer.
+ */
+ static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Write_16_LE(const uint16_t Data)
+ {
+ UPDATX = (Data & 0xFF);
+ 10f2: 90 93 af 00 sts 0x00AF, r25
+ UPDATX = (Data >> 8);
+ 10f6: 80 93 af 00 sts 0x00AF, r24
+ Pipe_Write_16_LE(USB_ControlRequest.wIndex);
+ 10fa: 90 91 27 01 lds r25, 0x0127
+ 10fe: 80 91 28 01 lds r24, 0x0128
+ * \param[in] Data Data to write to the currently selected pipe's FIFO buffer.
+ */
+ static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Write_16_LE(const uint16_t Data)
+ {
+ UPDATX = (Data & 0xFF);
+ 1102: 90 93 af 00 sts 0x00AF, r25
+ UPDATX = (Data >> 8);
+ 1106: 80 93 af 00 sts 0x00AF, r24
+ Pipe_Write_16_LE(USB_ControlRequest.wLength);
+ 110a: 90 91 29 01 lds r25, 0x0129
+ 110e: 80 91 2a 01 lds r24, 0x012A
+ * \param[in] Data Data to write to the currently selected pipe's FIFO buffer.
+ */
+ static inline void Pipe_Write_16_LE(const uint16_t Data) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Write_16_LE(const uint16_t Data)
+ {
+ UPDATX = (Data & 0xFF);
+ 1112: 90 93 af 00 sts 0x00AF, r25
+ UPDATX = (Data >> 8);
+ 1116: 80 93 af 00 sts 0x00AF, r24
+ * \ingroup Group_PipePacketManagement_AVR8
+ */
+ static inline void Pipe_ClearSETUP(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearSETUP(void)
+ {
+ UPINTX &= ~((1 << TXSTPI) | (1 << FIFOCON));
+ 111a: 80 91 a6 00 lds r24, 0x00A6
+ 111e: 87 77 andi r24, 0x77 ; 119
+ 1120: 80 93 a6 00 sts 0x00A6, r24
+
+ Pipe_ClearSETUP();
+
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_SetupSent)) != HOST_SENDCONTROL_Successful)
+ 1124: 80 e0 ldi r24, 0x00 ; 0
+ 1126: 84 df rcall .-248 ; 0x1030 <USB_Host_WaitForIOS>
+ 1128: 88 23 and r24, r24
+ 112a: 09 f0 breq .+2 ; 0x112e <USB_Host_SendControlRequest+0xac>
+ 112c: a7 c0 rjmp .+334 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Freeze(void)
+ {
+ UPCONX |= (1 << PFREEZE);
+ 112e: 80 91 a9 00 lds r24, 0x00A9
+ 1132: 80 64 ori r24, 0x40 ; 64
+ 1134: 80 93 a9 00 sts 0x00A9, r24
+ goto End_Of_Control_Send;
+
+ Pipe_Freeze();
+
+ if ((ReturnStatus = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)
+ 1138: 81 e0 ldi r24, 0x01 ; 1
+ 113a: a1 db rcall .-2238 ; 0x87e <USB_Host_WaitMS>
+ 113c: 88 23 and r24, r24
+ 113e: 09 f0 breq .+2 ; 0x1142 <USB_Host_SendControlRequest+0xc0>
+ 1140: 9d c0 rjmp .+314 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+ goto End_Of_Control_Send;
+
+ if ((USB_ControlRequest.bmRequestType & CONTROL_REQTYPE_DIRECTION) == REQDIR_DEVICETOHOST)
+ 1142: 80 91 23 01 lds r24, 0x0123
+ 1146: 87 ff sbrs r24, 7
+ 1148: 4f c0 rjmp .+158 ; 0x11e8 <USB_Host_SendControlRequest+0x166>
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.
+ */
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SetPipeToken(const uint8_t Token)
+ {
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);
+ 114a: 80 91 aa 00 lds r24, 0x00AA
+ 114e: 8f 7c andi r24, 0xCF ; 207
+ 1150: 80 61 ori r24, 0x10 ; 16
+ 1152: 80 93 aa 00 sts 0x00AA, r24
+ {
+ Pipe_SetPipeToken(PIPE_TOKEN_IN);
+
+ if (DataStream != NULL)
+ 1156: 01 15 cp r16, r1
+ 1158: 11 05 cpc r17, r1
+ 115a: 61 f5 brne .+88 ; 0x11b4 <USB_Host_SendControlRequest+0x132>
+ 115c: 2d c0 rjmp .+90 ; 0x11b8 <USB_Host_SendControlRequest+0x136>
+
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Unfreeze(void)
+ {
+ UPCONX &= ~(1 << PFREEZE);
+ 115e: 80 91 a9 00 lds r24, 0x00A9
+ 1162: 8f 7b andi r24, 0xBF ; 191
+ 1164: 80 93 a9 00 sts 0x00A9, r24
+ {
+ while (DataLen)
+ {
+ Pipe_Unfreeze();
+
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)
+ 1168: 81 e0 ldi r24, 0x01 ; 1
+ 116a: 62 df rcall .-316 ; 0x1030 <USB_Host_WaitForIOS>
+ 116c: 88 23 and r24, r24
+ 116e: 09 f0 breq .+2 ; 0x1172 <USB_Host_SendControlRequest+0xf0>
+ 1170: 85 c0 rjmp .+266 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+ * \return Total number of bytes in the currently selected pipe's FIFO buffer.
+ */
+ static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline uint16_t Pipe_BytesInPipe(void)
+ {
+ return UPBCX;
+ 1172: 80 91 f6 00 lds r24, 0x00F6
+ 1176: 90 91 f7 00 lds r25, 0x00F7
+ goto End_Of_Control_Send;
+
+ if (!(Pipe_BytesInPipe()))
+ 117a: 00 97 sbiw r24, 0x00 ; 0
+ 117c: 49 f4 brne .+18 ; 0x1190 <USB_Host_SendControlRequest+0x10e>
+ DataLen = 0;
+ 117e: c0 e0 ldi r28, 0x00 ; 0
+ 1180: d0 e0 ldi r29, 0x00 ; 0
+ 1182: 06 c0 rjmp .+12 ; 0x1190 <USB_Host_SendControlRequest+0x10e>
+ * \return Next byte in the currently selected pipe's FIFO buffer.
+ */
+ static inline uint8_t Pipe_Read_8(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline uint8_t Pipe_Read_8(void)
+ {
+ return UPDATX;
+ 1184: 80 91 af 00 lds r24, 0x00AF
+
+ while (Pipe_BytesInPipe() && DataLen)
+ {
+ *(DataStream++) = Pipe_Read_8();
+ 1188: f8 01 movw r30, r16
+ 118a: 81 93 st Z+, r24
+ 118c: 8f 01 movw r16, r30
+ DataLen--;
+ 118e: 21 97 sbiw r28, 0x01 ; 1
+ * \return Total number of bytes in the currently selected pipe's FIFO buffer.
+ */
+ static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline uint16_t Pipe_BytesInPipe(void)
+ {
+ return UPBCX;
+ 1190: 80 91 f6 00 lds r24, 0x00F6
+ 1194: 90 91 f7 00 lds r25, 0x00F7
+ goto End_Of_Control_Send;
+
+ if (!(Pipe_BytesInPipe()))
+ DataLen = 0;
+
+ while (Pipe_BytesInPipe() && DataLen)
+ 1198: 00 97 sbiw r24, 0x00 ; 0
+ 119a: 11 f0 breq .+4 ; 0x11a0 <USB_Host_SendControlRequest+0x11e>
+ 119c: 20 97 sbiw r28, 0x00 ; 0
+ 119e: 91 f7 brne .-28 ; 0x1184 <USB_Host_SendControlRequest+0x102>
+
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Freeze(void)
+ {
+ UPCONX |= (1 << PFREEZE);
+ 11a0: 80 91 a9 00 lds r24, 0x00A9
+ 11a4: 80 64 ori r24, 0x40 ; 64
+ 11a6: 80 93 a9 00 sts 0x00A9, r24
+ * \ingroup Group_PipePacketManagement_AVR8
+ */
+ static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearIN(void)
+ {
+ UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));
+ 11aa: 80 91 a6 00 lds r24, 0x00A6
+ 11ae: 8e 77 andi r24, 0x7E ; 126
+ 11b0: 80 93 a6 00 sts 0x00A6, r24
+ {
+ Pipe_SetPipeToken(PIPE_TOKEN_IN);
+
+ if (DataStream != NULL)
+ {
+ while (DataLen)
+ 11b4: 20 97 sbiw r28, 0x00 ; 0
+ 11b6: 99 f6 brne .-90 ; 0x115e <USB_Host_SendControlRequest+0xdc>
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.
+ */
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SetPipeToken(const uint8_t Token)
+ {
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);
+ 11b8: 80 91 aa 00 lds r24, 0x00AA
+ 11bc: 8f 7c andi r24, 0xCF ; 207
+ 11be: 80 62 ori r24, 0x20 ; 32
+ 11c0: 80 93 aa 00 sts 0x00AA, r24
+
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Unfreeze(void)
+ {
+ UPCONX &= ~(1 << PFREEZE);
+ 11c4: 80 91 a9 00 lds r24, 0x00A9
+ 11c8: 8f 7b andi r24, 0xBF ; 191
+ 11ca: 80 93 a9 00 sts 0x00A9, r24
+ }
+
+ Pipe_SetPipeToken(PIPE_TOKEN_OUT);
+ Pipe_Unfreeze();
+
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)
+ 11ce: 82 e0 ldi r24, 0x02 ; 2
+ 11d0: 2f df rcall .-418 ; 0x1030 <USB_Host_WaitForIOS>
+ 11d2: 88 23 and r24, r24
+ 11d4: 09 f0 breq .+2 ; 0x11d8 <USB_Host_SendControlRequest+0x156>
+ 11d6: 52 c0 rjmp .+164 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+ * \ingroup Group_PipePacketManagement_AVR8
+ */
+ static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearOUT(void)
+ {
+ UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON));
+ 11d8: 80 91 a6 00 lds r24, 0x00A6
+ 11dc: 8b 77 andi r24, 0x7B ; 123
+ 11de: 80 93 a6 00 sts 0x00A6, r24
+ goto End_Of_Control_Send;
+
+ Pipe_ClearOUT();
+
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)
+ 11e2: 82 e0 ldi r24, 0x02 ; 2
+ 11e4: 25 df rcall .-438 ; 0x1030 <USB_Host_WaitForIOS>
+ 11e6: 4a c0 rjmp .+148 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+ goto End_Of_Control_Send;
+ }
+ else
+ {
+ if (DataStream != NULL)
+ 11e8: 01 15 cp r16, r1
+ 11ea: 11 05 cpc r17, r1
+ 11ec: 99 f1 breq .+102 ; 0x1254 <USB_Host_SendControlRequest+0x1d2>
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.
+ */
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SetPipeToken(const uint8_t Token)
+ {
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);
+ 11ee: 80 91 aa 00 lds r24, 0x00AA
+ 11f2: 8f 7c andi r24, 0xCF ; 207
+ 11f4: 80 62 ori r24, 0x20 ; 32
+ 11f6: 80 93 aa 00 sts 0x00AA, r24
+
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Unfreeze(void)
+ {
+ UPCONX &= ~(1 << PFREEZE);
+ 11fa: 80 91 a9 00 lds r24, 0x00A9
+ 11fe: 8f 7b andi r24, 0xBF ; 191
+ 1200: 80 93 a9 00 sts 0x00A9, r24
+ {
+ Pipe_SetPipeToken(PIPE_TOKEN_OUT);
+ Pipe_Unfreeze();
+
+ while (DataLen)
+ 1204: 1c c0 rjmp .+56 ; 0x123e <USB_Host_SendControlRequest+0x1bc>
+ {
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)
+ 1206: 82 e0 ldi r24, 0x02 ; 2
+ 1208: 13 df rcall .-474 ; 0x1030 <USB_Host_WaitForIOS>
+ 120a: 88 23 and r24, r24
+ 120c: b9 f5 brne .+110 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+ 120e: f8 01 movw r30, r16
+ 1210: 06 c0 rjmp .+12 ; 0x121e <USB_Host_SendControlRequest+0x19c>
+ goto End_Of_Control_Send;
+
+ while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize))
+ {
+ Pipe_Write_8(*(DataStream++));
+ 1212: 81 91 ld r24, Z+
+ 1214: 8f 01 movw r16, r30
+ * \param[in] Data Data to write into the the currently selected pipe's FIFO buffer.
+ */
+ static inline void Pipe_Write_8(const uint8_t Data) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Write_8(const uint8_t Data)
+ {
+ UPDATX = Data;
+ 1216: 80 93 af 00 sts 0x00AF, r24
+ DataLen--;
+ 121a: 21 97 sbiw r28, 0x01 ; 1
+ while (DataLen)
+ {
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)
+ goto End_Of_Control_Send;
+
+ while (DataLen && (Pipe_BytesInPipe() < USB_ControlPipeSize))
+ 121c: 59 f0 breq .+22 ; 0x1234 <USB_Host_SendControlRequest+0x1b2>
+ 121e: 8f 01 movw r16, r30
+ * \return Total number of bytes in the currently selected pipe's FIFO buffer.
+ */
+ static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline uint16_t Pipe_BytesInPipe(void)
+ {
+ return UPBCX;
+ 1220: 20 91 f6 00 lds r18, 0x00F6
+ 1224: 30 91 f7 00 lds r19, 0x00F7
+ 1228: 80 91 1b 01 lds r24, 0x011B
+ 122c: 90 e0 ldi r25, 0x00 ; 0
+ 122e: 28 17 cp r18, r24
+ 1230: 39 07 cpc r19, r25
+ 1232: 78 f3 brcs .-34 ; 0x1212 <USB_Host_SendControlRequest+0x190>
+ * \ingroup Group_PipePacketManagement_AVR8
+ */
+ static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearOUT(void)
+ {
+ UPINTX &= ~((1 << TXOUTI) | (1 << FIFOCON));
+ 1234: 80 91 a6 00 lds r24, 0x00A6
+ 1238: 8b 77 andi r24, 0x7B ; 123
+ 123a: 80 93 a6 00 sts 0x00A6, r24
+ if (DataStream != NULL)
+ {
+ Pipe_SetPipeToken(PIPE_TOKEN_OUT);
+ Pipe_Unfreeze();
+
+ while (DataLen)
+ 123e: 20 97 sbiw r28, 0x00 ; 0
+ 1240: 11 f7 brne .-60 ; 0x1206 <USB_Host_SendControlRequest+0x184>
+ }
+
+ Pipe_ClearOUT();
+ }
+
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_OutReady)) != HOST_SENDCONTROL_Successful)
+ 1242: 82 e0 ldi r24, 0x02 ; 2
+ 1244: f5 de rcall .-534 ; 0x1030 <USB_Host_WaitForIOS>
+ 1246: 88 23 and r24, r24
+ 1248: c9 f4 brne .+50 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Freeze(void)
+ {
+ UPCONX |= (1 << PFREEZE);
+ 124a: 80 91 a9 00 lds r24, 0x00A9
+ 124e: 80 64 ori r24, 0x40 ; 64
+ 1250: 80 93 a9 00 sts 0x00A9, r24
+ * \param[in] Token New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.
+ */
+ static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SetPipeToken(const uint8_t Token)
+ {
+ UPCFG0X = ((UPCFG0X & ~(0x03 << PTOKEN0)) | Token);
+ 1254: 80 91 aa 00 lds r24, 0x00AA
+ 1258: 8f 7c andi r24, 0xCF ; 207
+ 125a: 80 61 ori r24, 0x10 ; 16
+ 125c: 80 93 aa 00 sts 0x00AA, r24
+
+ /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */
+ static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Unfreeze(void)
+ {
+ UPCONX &= ~(1 << PFREEZE);
+ 1260: 80 91 a9 00 lds r24, 0x00A9
+ 1264: 8f 7b andi r24, 0xBF ; 191
+ 1266: 80 93 a9 00 sts 0x00A9, r24
+ }
+
+ Pipe_SetPipeToken(PIPE_TOKEN_IN);
+ Pipe_Unfreeze();
+
+ if ((ReturnStatus = USB_Host_WaitForIOS(USB_HOST_WAITFOR_InReceived)) != HOST_SENDCONTROL_Successful)
+ 126a: 81 e0 ldi r24, 0x01 ; 1
+ 126c: e1 de rcall .-574 ; 0x1030 <USB_Host_WaitForIOS>
+ 126e: 88 23 and r24, r24
+ 1270: 29 f4 brne .+10 ; 0x127c <USB_Host_SendControlRequest+0x1fa>
+ * \ingroup Group_PipePacketManagement_AVR8
+ */
+ static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ClearIN(void)
+ {
+ UPINTX &= ~((1 << RXINI) | (1 << FIFOCON));
+ 1272: 90 91 a6 00 lds r25, 0x00A6
+ 1276: 9e 77 andi r25, 0x7E ; 126
+ 1278: 90 93 a6 00 sts 0x00A6, r25
+
+ /** Freezes the selected pipe, preventing it from communicating with an attached device. */
+ static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_Freeze(void)
+ {
+ UPCONX |= (1 << PFREEZE);
+ 127c: 90 91 a9 00 lds r25, 0x00A9
+ 1280: 90 64 ori r25, 0x40 ; 64
+ 1282: 90 93 a9 00 sts 0x00A9, r25
+ }
+
+End_Of_Control_Send:
+ Pipe_Freeze();
+
+ if (BusSuspended)
+ 1286: e1 14 cp r14, r1
+ 1288: f1 04 cpc r15, r1
+ 128a: 29 f4 brne .+10 ; 0x1296 <USB_Host_SendControlRequest+0x214>
+ * messages to the device.
+ */
+ static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;
+ static inline void USB_Host_SuspendBus(void)
+ {
+ UHCON &= ~(1 << SOFEN);
+ 128c: 90 91 9e 00 lds r25, 0x009E
+ 1290: 9e 7f andi r25, 0xFE ; 254
+ 1292: 90 93 9e 00 sts 0x009E, r25
+ * \param[in] PipeNumber Index of the pipe to reset.
+ */
+ static inline void Pipe_ResetPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_ResetPipe(const uint8_t PipeNumber)
+ {
+ UPRST = (1 << PipeNumber);
+ 1296: 91 e0 ldi r25, 0x01 ; 1
+ 1298: 90 93 a8 00 sts 0x00A8, r25
+ UPRST = 0;
+ 129c: 10 92 a8 00 sts 0x00A8, r1
+ USB_Host_SuspendBus();
+
+ Pipe_ResetPipe(PIPE_CONTROLPIPE);
+
+ return ReturnStatus;
+}
+ 12a0: df 91 pop r29
+ 12a2: cf 91 pop r28
+ 12a4: 1f 91 pop r17
+ 12a6: 0f 91 pop r16
+ 12a8: ff 90 pop r15
+ 12aa: ef 90 pop r14
+ 12ac: 08 95 ret
+
+000012ae <USB_USBTask>:
+#if defined(USB_CAN_BE_DEVICE) && !defined(DEVICE_STATE_AS_GPIOR)
+volatile uint8_t USB_DeviceState;
+#endif
+
+void USB_USBTask(void)
+{
+ 12ae: 1f 93 push r17
+ 12b0: cf 93 push r28
+ 12b2: df 93 push r29
+ * \return Index of the currently selected pipe.
+ */
+ static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline uint8_t Pipe_GetCurrentPipe(void)
+ {
+ return (UPNUM & PIPE_PIPENUM_MASK);
+ 12b4: c7 ea ldi r28, 0xA7 ; 167
+ 12b6: d0 e0 ldi r29, 0x00 ; 0
+ 12b8: 18 81 ld r17, Y
+ 12ba: 17 70 andi r17, 0x07 ; 7
+ * \param[in] PipeNumber Index of the pipe to select.
+ */
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;
+ static inline void Pipe_SelectPipe(const uint8_t PipeNumber)
+ {
+ UPNUM = PipeNumber;
+ 12bc: 18 82 st Y, r1
+{
+ uint8_t PrevPipe = Pipe_GetCurrentPipe();
+
+ Pipe_SelectPipe(PIPE_CONTROLPIPE);
+
+ USB_Host_ProcessNextHostState();
+ 12be: 34 db rcall .-2456 ; 0x928 <USB_Host_ProcessNextHostState>
+ 12c0: 18 83 st Y, r17
+ if (USB_CurrentMode == USB_MODE_Device)
+ USB_DeviceTask();
+ else if (USB_CurrentMode == USB_MODE_Host)
+ USB_HostTask();
+ #endif
+}
+ 12c2: df 91 pop r29
+ 12c4: cf 91 pop r28
+ 12c6: 1f 91 pop r17
+ 12c8: 08 95 ret
+
+000012ca <Serial_putchar>:
+ * \param[in] DataByte Byte to transmit through the USART.
+ */
+ static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE;
+ static inline void Serial_SendByte(const char DataByte)
+ {
+ while (!(UCSR1A & (1 << UDRE1)));
+ 12ca: 90 91 c8 00 lds r25, 0x00C8
+ 12ce: 95 ff sbrs r25, 5
+ 12d0: fc cf rjmp .-8 ; 0x12ca <Serial_putchar>
+ UDR1 = DataByte;
+ 12d2: 80 93 ce 00 sts 0x00CE, r24
+{
+ (void)Stream;
+
+ Serial_SendByte(DataByte);
+ return 0;
+}
+ 12d6: 80 e0 ldi r24, 0x00 ; 0
+ 12d8: 90 e0 ldi r25, 0x00 ; 0
+ 12da: 08 95 ret
+
+000012dc <Serial_getchar>:
+ * \return Boolean \c true if a character has been received, \c false otherwise.
+ */
+ static inline bool Serial_IsCharReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
+ static inline bool Serial_IsCharReceived(void)
+ {
+ return ((UCSR1A & (1 << RXC1)) ? true : false);
+ 12dc: 80 91 c8 00 lds r24, 0x00C8
+
+int Serial_getchar(FILE *Stream)
+{
+ (void)Stream;
+
+ if (!(Serial_IsCharReceived()))
+ 12e0: 87 ff sbrs r24, 7
+ 12e2: 08 c0 rjmp .+16 ; 0x12f4 <Serial_getchar+0x18>
+ 12e4: 80 91 c8 00 lds r24, 0x00C8
+ * \return Next byte received from the USART, or a negative value if no byte has been received.
+ */
+ static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE;
+ static inline int16_t Serial_ReceiveByte(void)
+ {
+ if (!(Serial_IsCharReceived()))
+ 12e8: 87 ff sbrs r24, 7
+ 12ea: 07 c0 rjmp .+14 ; 0x12fa <Serial_getchar+0x1e>
+ return -1;
+
+ return UDR1;
+ 12ec: 20 91 ce 00 lds r18, 0x00CE
+ 12f0: 30 e0 ldi r19, 0x00 ; 0
+ 12f2: 05 c0 rjmp .+10 ; 0x12fe <Serial_getchar+0x22>
+ return _FDEV_EOF;
+ 12f4: 2e ef ldi r18, 0xFE ; 254
+ 12f6: 3f ef ldi r19, 0xFF ; 255
+ 12f8: 02 c0 rjmp .+4 ; 0x12fe <Serial_getchar+0x22>
+ */
+ static inline int16_t Serial_ReceiveByte(void) ATTR_ALWAYS_INLINE;
+ static inline int16_t Serial_ReceiveByte(void)
+ {
+ if (!(Serial_IsCharReceived()))
+ return -1;
+ 12fa: 2f ef ldi r18, 0xFF ; 255
+ 12fc: 3f ef ldi r19, 0xFF ; 255
+
+ return Serial_ReceiveByte();
+}
+ 12fe: c9 01 movw r24, r18
+ 1300: 08 95 ret
+
+00001302 <printf_P>:
+ 1302: df 93 push r29
+ 1304: cf 93 push r28
+ 1306: cd b7 in r28, 0x3d ; 61
+ 1308: de b7 in r29, 0x3e ; 62
+ 130a: fe 01 movw r30, r28
+ 130c: 35 96 adiw r30, 0x05 ; 5
+ 130e: 61 91 ld r22, Z+
+ 1310: 71 91 ld r23, Z+
+ 1312: 80 91 3c 01 lds r24, 0x013C
+ 1316: 90 91 3d 01 lds r25, 0x013D
+ 131a: dc 01 movw r26, r24
+ 131c: 13 96 adiw r26, 0x03 ; 3
+ 131e: 2c 91 ld r18, X
+ 1320: 13 97 sbiw r26, 0x03 ; 3
+ 1322: 28 60 ori r18, 0x08 ; 8
+ 1324: 13 96 adiw r26, 0x03 ; 3
+ 1326: 2c 93 st X, r18
+ 1328: af 01 movw r20, r30
+ 132a: 42 d0 rcall .+132 ; 0x13b0 <vfprintf>
+ 132c: e0 91 3c 01 lds r30, 0x013C
+ 1330: f0 91 3d 01 lds r31, 0x013D
+ 1334: 23 81 ldd r18, Z+3 ; 0x03
+ 1336: 27 7f andi r18, 0xF7 ; 247
+ 1338: 23 83 std Z+3, r18 ; 0x03
+ 133a: cf 91 pop r28
+ 133c: df 91 pop r29
+ 133e: 08 95 ret
+
+00001340 <puts_P>:
+ 1340: ef 92 push r14
+ 1342: ff 92 push r15
+ 1344: 0f 93 push r16
+ 1346: 1f 93 push r17
+ 1348: cf 93 push r28
+ 134a: df 93 push r29
+ 134c: 8c 01 movw r16, r24
+ 134e: e0 91 3c 01 lds r30, 0x013C
+ 1352: f0 91 3d 01 lds r31, 0x013D
+ 1356: 83 81 ldd r24, Z+3 ; 0x03
+ 1358: 81 ff sbrs r24, 1
+ 135a: 20 c0 rjmp .+64 ; 0x139c <puts_P+0x5c>
+ 135c: c0 e0 ldi r28, 0x00 ; 0
+ 135e: d0 e0 ldi r29, 0x00 ; 0
+ 1360: 0c c0 rjmp .+24 ; 0x137a <puts_P+0x3a>
+ 1362: db 01 movw r26, r22
+ 1364: 18 96 adiw r26, 0x08 ; 8
+ 1366: ed 91 ld r30, X+
+ 1368: fc 91 ld r31, X
+ 136a: 19 97 sbiw r26, 0x09 ; 9
+ 136c: 09 95 icall
+ 136e: 00 97 sbiw r24, 0x00 ; 0
+ 1370: 11 f0 breq .+4 ; 0x1376 <puts_P+0x36>
+ 1372: cf ef ldi r28, 0xFF ; 255
+ 1374: df ef ldi r29, 0xFF ; 255
+ 1376: 0f 5f subi r16, 0xFF ; 255
+ 1378: 1f 4f sbci r17, 0xFF ; 255
+ 137a: f8 01 movw r30, r16
+ 137c: 84 91 lpm r24, Z+
+ 137e: 60 91 3c 01 lds r22, 0x013C
+ 1382: 70 91 3d 01 lds r23, 0x013D
+ 1386: 88 23 and r24, r24
+ 1388: 61 f7 brne .-40 ; 0x1362 <puts_P+0x22>
+ 138a: db 01 movw r26, r22
+ 138c: 18 96 adiw r26, 0x08 ; 8
+ 138e: ed 91 ld r30, X+
+ 1390: fc 91 ld r31, X
+ 1392: 19 97 sbiw r26, 0x09 ; 9
+ 1394: 8a e0 ldi r24, 0x0A ; 10
+ 1396: 09 95 icall
+ 1398: 00 97 sbiw r24, 0x00 ; 0
+ 139a: 11 f0 breq .+4 ; 0x13a0 <puts_P+0x60>
+ 139c: cf ef ldi r28, 0xFF ; 255
+ 139e: df ef ldi r29, 0xFF ; 255
+ 13a0: ce 01 movw r24, r28
+ 13a2: df 91 pop r29
+ 13a4: cf 91 pop r28
+ 13a6: 1f 91 pop r17
+ 13a8: 0f 91 pop r16
+ 13aa: ff 90 pop r15
+ 13ac: ef 90 pop r14
+ 13ae: 08 95 ret
+
+000013b0 <vfprintf>:
+ 13b0: 2f 92 push r2
+ 13b2: 3f 92 push r3
+ 13b4: 4f 92 push r4
+ 13b6: 5f 92 push r5
+ 13b8: 6f 92 push r6
+ 13ba: 7f 92 push r7
+ 13bc: 8f 92 push r8
+ 13be: 9f 92 push r9
+ 13c0: af 92 push r10
+ 13c2: bf 92 push r11
+ 13c4: cf 92 push r12
+ 13c6: df 92 push r13
+ 13c8: ef 92 push r14
+ 13ca: ff 92 push r15
+ 13cc: 0f 93 push r16
+ 13ce: 1f 93 push r17
+ 13d0: df 93 push r29
+ 13d2: cf 93 push r28
+ 13d4: cd b7 in r28, 0x3d ; 61
+ 13d6: de b7 in r29, 0x3e ; 62
+ 13d8: 2c 97 sbiw r28, 0x0c ; 12
+ 13da: 0f b6 in r0, 0x3f ; 63
+ 13dc: f8 94 cli
+ 13de: de bf out 0x3e, r29 ; 62
+ 13e0: 0f be out 0x3f, r0 ; 63
+ 13e2: cd bf out 0x3d, r28 ; 61
+ 13e4: 6c 01 movw r12, r24
+ 13e6: 1b 01 movw r2, r22
+ 13e8: 8a 01 movw r16, r20
+ 13ea: fc 01 movw r30, r24
+ 13ec: 17 82 std Z+7, r1 ; 0x07
+ 13ee: 16 82 std Z+6, r1 ; 0x06
+ 13f0: 83 81 ldd r24, Z+3 ; 0x03
+ 13f2: 81 ff sbrs r24, 1
+ 13f4: c4 c1 rjmp .+904 ; 0x177e <vfprintf+0x3ce>
+ 13f6: 2e 01 movw r4, r28
+ 13f8: 08 94 sec
+ 13fa: 41 1c adc r4, r1
+ 13fc: 51 1c adc r5, r1
+ 13fe: f6 01 movw r30, r12
+ 1400: 93 81 ldd r25, Z+3 ; 0x03
+ 1402: f1 01 movw r30, r2
+ 1404: 93 fd sbrc r25, 3
+ 1406: 85 91 lpm r24, Z+
+ 1408: 93 ff sbrs r25, 3
+ 140a: 81 91 ld r24, Z+
+ 140c: 1f 01 movw r2, r30
+ 140e: 88 23 and r24, r24
+ 1410: 09 f4 brne .+2 ; 0x1414 <vfprintf+0x64>
+ 1412: b1 c1 rjmp .+866 ; 0x1776 <vfprintf+0x3c6>
+ 1414: 85 32 cpi r24, 0x25 ; 37
+ 1416: 39 f4 brne .+14 ; 0x1426 <vfprintf+0x76>
+ 1418: 93 fd sbrc r25, 3
+ 141a: 85 91 lpm r24, Z+
+ 141c: 93 ff sbrs r25, 3
+ 141e: 81 91 ld r24, Z+
+ 1420: 1f 01 movw r2, r30
+ 1422: 85 32 cpi r24, 0x25 ; 37
+ 1424: 21 f4 brne .+8 ; 0x142e <vfprintf+0x7e>
+ 1426: 90 e0 ldi r25, 0x00 ; 0
+ 1428: b6 01 movw r22, r12
+ 142a: db d1 rcall .+950 ; 0x17e2 <fputc>
+ 142c: e8 cf rjmp .-48 ; 0x13fe <vfprintf+0x4e>
+ 142e: ee 24 eor r14, r14
+ 1430: ff 24 eor r15, r15
+ 1432: 20 e0 ldi r18, 0x00 ; 0
+ 1434: 20 32 cpi r18, 0x20 ; 32
+ 1436: b0 f4 brcc .+44 ; 0x1464 <vfprintf+0xb4>
+ 1438: 8b 32 cpi r24, 0x2B ; 43
+ 143a: 69 f0 breq .+26 ; 0x1456 <vfprintf+0xa6>
+ 143c: 8c 32 cpi r24, 0x2C ; 44
+ 143e: 28 f4 brcc .+10 ; 0x144a <vfprintf+0x9a>
+ 1440: 80 32 cpi r24, 0x20 ; 32
+ 1442: 51 f0 breq .+20 ; 0x1458 <vfprintf+0xa8>
+ 1444: 83 32 cpi r24, 0x23 ; 35
+ 1446: 71 f4 brne .+28 ; 0x1464 <vfprintf+0xb4>
+ 1448: 0b c0 rjmp .+22 ; 0x1460 <vfprintf+0xb0>
+ 144a: 8d 32 cpi r24, 0x2D ; 45
+ 144c: 39 f0 breq .+14 ; 0x145c <vfprintf+0xac>
+ 144e: 80 33 cpi r24, 0x30 ; 48
+ 1450: 49 f4 brne .+18 ; 0x1464 <vfprintf+0xb4>
+ 1452: 21 60 ori r18, 0x01 ; 1
+ 1454: 2c c0 rjmp .+88 ; 0x14ae <vfprintf+0xfe>
+ 1456: 22 60 ori r18, 0x02 ; 2
+ 1458: 24 60 ori r18, 0x04 ; 4
+ 145a: 29 c0 rjmp .+82 ; 0x14ae <vfprintf+0xfe>
+ 145c: 28 60 ori r18, 0x08 ; 8
+ 145e: 27 c0 rjmp .+78 ; 0x14ae <vfprintf+0xfe>
+ 1460: 20 61 ori r18, 0x10 ; 16
+ 1462: 25 c0 rjmp .+74 ; 0x14ae <vfprintf+0xfe>
+ 1464: 27 fd sbrc r18, 7
+ 1466: 2c c0 rjmp .+88 ; 0x14c0 <vfprintf+0x110>
+ 1468: 38 2f mov r19, r24
+ 146a: 30 53 subi r19, 0x30 ; 48
+ 146c: 3a 30 cpi r19, 0x0A ; 10
+ 146e: 98 f4 brcc .+38 ; 0x1496 <vfprintf+0xe6>
+ 1470: 26 ff sbrs r18, 6
+ 1472: 08 c0 rjmp .+16 ; 0x1484 <vfprintf+0xd4>
+ 1474: 8e 2d mov r24, r14
+ 1476: 88 0f add r24, r24
+ 1478: e8 2e mov r14, r24
+ 147a: ee 0c add r14, r14
+ 147c: ee 0c add r14, r14
+ 147e: e8 0e add r14, r24
+ 1480: e3 0e add r14, r19
+ 1482: 15 c0 rjmp .+42 ; 0x14ae <vfprintf+0xfe>
+ 1484: 8f 2d mov r24, r15
+ 1486: 88 0f add r24, r24
+ 1488: f8 2e mov r15, r24
+ 148a: ff 0c add r15, r15
+ 148c: ff 0c add r15, r15
+ 148e: f8 0e add r15, r24
+ 1490: f3 0e add r15, r19
+ 1492: 20 62 ori r18, 0x20 ; 32
+ 1494: 0c c0 rjmp .+24 ; 0x14ae <vfprintf+0xfe>
+ 1496: 8e 32 cpi r24, 0x2E ; 46
+ 1498: 21 f4 brne .+8 ; 0x14a2 <vfprintf+0xf2>
+ 149a: 26 fd sbrc r18, 6
+ 149c: 6c c1 rjmp .+728 ; 0x1776 <vfprintf+0x3c6>
+ 149e: 20 64 ori r18, 0x40 ; 64
+ 14a0: 06 c0 rjmp .+12 ; 0x14ae <vfprintf+0xfe>
+ 14a2: 8c 36 cpi r24, 0x6C ; 108
+ 14a4: 11 f4 brne .+4 ; 0x14aa <vfprintf+0xfa>
+ 14a6: 20 68 ori r18, 0x80 ; 128
+ 14a8: 02 c0 rjmp .+4 ; 0x14ae <vfprintf+0xfe>
+ 14aa: 88 36 cpi r24, 0x68 ; 104
+ 14ac: 49 f4 brne .+18 ; 0x14c0 <vfprintf+0x110>
+ 14ae: f1 01 movw r30, r2
+ 14b0: 93 fd sbrc r25, 3
+ 14b2: 85 91 lpm r24, Z+
+ 14b4: 93 ff sbrs r25, 3
+ 14b6: 81 91 ld r24, Z+
+ 14b8: 1f 01 movw r2, r30
+ 14ba: 88 23 and r24, r24
+ 14bc: 09 f0 breq .+2 ; 0x14c0 <vfprintf+0x110>
+ 14be: ba cf rjmp .-140 ; 0x1434 <vfprintf+0x84>
+ 14c0: 98 2f mov r25, r24
+ 14c2: 95 54 subi r25, 0x45 ; 69
+ 14c4: 93 30 cpi r25, 0x03 ; 3
+ 14c6: 18 f0 brcs .+6 ; 0x14ce <vfprintf+0x11e>
+ 14c8: 90 52 subi r25, 0x20 ; 32
+ 14ca: 93 30 cpi r25, 0x03 ; 3
+ 14cc: 28 f4 brcc .+10 ; 0x14d8 <vfprintf+0x128>
+ 14ce: 0c 5f subi r16, 0xFC ; 252
+ 14d0: 1f 4f sbci r17, 0xFF ; 255
+ 14d2: ff e3 ldi r31, 0x3F ; 63
+ 14d4: f9 83 std Y+1, r31 ; 0x01
+ 14d6: 0d c0 rjmp .+26 ; 0x14f2 <vfprintf+0x142>
+ 14d8: 83 36 cpi r24, 0x63 ; 99
+ 14da: 31 f0 breq .+12 ; 0x14e8 <vfprintf+0x138>
+ 14dc: 83 37 cpi r24, 0x73 ; 115
+ 14de: 71 f0 breq .+28 ; 0x14fc <vfprintf+0x14c>
+ 14e0: 83 35 cpi r24, 0x53 ; 83
+ 14e2: 09 f0 breq .+2 ; 0x14e6 <vfprintf+0x136>
+ 14e4: 5c c0 rjmp .+184 ; 0x159e <vfprintf+0x1ee>
+ 14e6: 21 c0 rjmp .+66 ; 0x152a <vfprintf+0x17a>
+ 14e8: f8 01 movw r30, r16
+ 14ea: 80 81 ld r24, Z
+ 14ec: 89 83 std Y+1, r24 ; 0x01
+ 14ee: 0e 5f subi r16, 0xFE ; 254
+ 14f0: 1f 4f sbci r17, 0xFF ; 255
+ 14f2: 42 01 movw r8, r4
+ 14f4: 71 e0 ldi r23, 0x01 ; 1
+ 14f6: a7 2e mov r10, r23
+ 14f8: b1 2c mov r11, r1
+ 14fa: 15 c0 rjmp .+42 ; 0x1526 <vfprintf+0x176>
+ 14fc: 62 e0 ldi r22, 0x02 ; 2
+ 14fe: 66 2e mov r6, r22
+ 1500: 71 2c mov r7, r1
+ 1502: 60 0e add r6, r16
+ 1504: 71 1e adc r7, r17
+ 1506: f8 01 movw r30, r16
+ 1508: 80 80 ld r8, Z
+ 150a: 91 80 ldd r9, Z+1 ; 0x01
+ 150c: 26 ff sbrs r18, 6
+ 150e: 03 c0 rjmp .+6 ; 0x1516 <vfprintf+0x166>
+ 1510: 6e 2d mov r22, r14
+ 1512: 70 e0 ldi r23, 0x00 ; 0
+ 1514: 02 c0 rjmp .+4 ; 0x151a <vfprintf+0x16a>
+ 1516: 6f ef ldi r22, 0xFF ; 255
+ 1518: 7f ef ldi r23, 0xFF ; 255
+ 151a: c4 01 movw r24, r8
+ 151c: 2c 87 std Y+12, r18 ; 0x0c
+ 151e: 56 d1 rcall .+684 ; 0x17cc <strnlen>
+ 1520: 5c 01 movw r10, r24
+ 1522: 83 01 movw r16, r6
+ 1524: 2c 85 ldd r18, Y+12 ; 0x0c
+ 1526: 2f 77 andi r18, 0x7F ; 127
+ 1528: 16 c0 rjmp .+44 ; 0x1556 <vfprintf+0x1a6>
+ 152a: 52 e0 ldi r21, 0x02 ; 2
+ 152c: 65 2e mov r6, r21
+ 152e: 71 2c mov r7, r1
+ 1530: 60 0e add r6, r16
+ 1532: 71 1e adc r7, r17
+ 1534: f8 01 movw r30, r16
+ 1536: 80 80 ld r8, Z
+ 1538: 91 80 ldd r9, Z+1 ; 0x01
+ 153a: 26 ff sbrs r18, 6
+ 153c: 03 c0 rjmp .+6 ; 0x1544 <vfprintf+0x194>
+ 153e: 6e 2d mov r22, r14
+ 1540: 70 e0 ldi r23, 0x00 ; 0
+ 1542: 02 c0 rjmp .+4 ; 0x1548 <vfprintf+0x198>
+ 1544: 6f ef ldi r22, 0xFF ; 255
+ 1546: 7f ef ldi r23, 0xFF ; 255
+ 1548: c4 01 movw r24, r8
+ 154a: 2c 87 std Y+12, r18 ; 0x0c
+ 154c: 34 d1 rcall .+616 ; 0x17b6 <strnlen_P>
+ 154e: 5c 01 movw r10, r24
+ 1550: 2c 85 ldd r18, Y+12 ; 0x0c
+ 1552: 20 68 ori r18, 0x80 ; 128
+ 1554: 83 01 movw r16, r6
+ 1556: 23 fd sbrc r18, 3
+ 1558: 1e c0 rjmp .+60 ; 0x1596 <vfprintf+0x1e6>
+ 155a: 07 c0 rjmp .+14 ; 0x156a <vfprintf+0x1ba>
+ 155c: 80 e2 ldi r24, 0x20 ; 32
+ 155e: 90 e0 ldi r25, 0x00 ; 0
+ 1560: b6 01 movw r22, r12
+ 1562: 2c 87 std Y+12, r18 ; 0x0c
+ 1564: 3e d1 rcall .+636 ; 0x17e2 <fputc>
+ 1566: fa 94 dec r15
+ 1568: 2c 85 ldd r18, Y+12 ; 0x0c
+ 156a: 8f 2d mov r24, r15
+ 156c: 90 e0 ldi r25, 0x00 ; 0
+ 156e: a8 16 cp r10, r24
+ 1570: b9 06 cpc r11, r25
+ 1572: a0 f3 brcs .-24 ; 0x155c <vfprintf+0x1ac>
+ 1574: 10 c0 rjmp .+32 ; 0x1596 <vfprintf+0x1e6>
+ 1576: f4 01 movw r30, r8
+ 1578: 27 fd sbrc r18, 7
+ 157a: 85 91 lpm r24, Z+
+ 157c: 27 ff sbrs r18, 7
+ 157e: 81 91 ld r24, Z+
+ 1580: 4f 01 movw r8, r30
+ 1582: 90 e0 ldi r25, 0x00 ; 0
+ 1584: b6 01 movw r22, r12
+ 1586: 2c 87 std Y+12, r18 ; 0x0c
+ 1588: 2c d1 rcall .+600 ; 0x17e2 <fputc>
+ 158a: 2c 85 ldd r18, Y+12 ; 0x0c
+ 158c: f1 10 cpse r15, r1
+ 158e: fa 94 dec r15
+ 1590: 08 94 sec
+ 1592: a1 08 sbc r10, r1
+ 1594: b1 08 sbc r11, r1
+ 1596: a1 14 cp r10, r1
+ 1598: b1 04 cpc r11, r1
+ 159a: 69 f7 brne .-38 ; 0x1576 <vfprintf+0x1c6>
+ 159c: e9 c0 rjmp .+466 ; 0x1770 <vfprintf+0x3c0>
+ 159e: 84 36 cpi r24, 0x64 ; 100
+ 15a0: 11 f0 breq .+4 ; 0x15a6 <vfprintf+0x1f6>
+ 15a2: 89 36 cpi r24, 0x69 ; 105
+ 15a4: 41 f5 brne .+80 ; 0x15f6 <vfprintf+0x246>
+ 15a6: 27 ff sbrs r18, 7
+ 15a8: 08 c0 rjmp .+16 ; 0x15ba <vfprintf+0x20a>
+ 15aa: f8 01 movw r30, r16
+ 15ac: 60 81 ld r22, Z
+ 15ae: 71 81 ldd r23, Z+1 ; 0x01
+ 15b0: 82 81 ldd r24, Z+2 ; 0x02
+ 15b2: 93 81 ldd r25, Z+3 ; 0x03
+ 15b4: 0c 5f subi r16, 0xFC ; 252
+ 15b6: 1f 4f sbci r17, 0xFF ; 255
+ 15b8: 09 c0 rjmp .+18 ; 0x15cc <vfprintf+0x21c>
+ 15ba: f8 01 movw r30, r16
+ 15bc: 60 81 ld r22, Z
+ 15be: 71 81 ldd r23, Z+1 ; 0x01
+ 15c0: 88 27 eor r24, r24
+ 15c2: 77 fd sbrc r23, 7
+ 15c4: 80 95 com r24
+ 15c6: 98 2f mov r25, r24
+ 15c8: 0e 5f subi r16, 0xFE ; 254
+ 15ca: 1f 4f sbci r17, 0xFF ; 255
+ 15cc: 4f e6 ldi r20, 0x6F ; 111
+ 15ce: b4 2e mov r11, r20
+ 15d0: b2 22 and r11, r18
+ 15d2: 97 ff sbrs r25, 7
+ 15d4: 09 c0 rjmp .+18 ; 0x15e8 <vfprintf+0x238>
+ 15d6: 90 95 com r25
+ 15d8: 80 95 com r24
+ 15da: 70 95 com r23
+ 15dc: 61 95 neg r22
+ 15de: 7f 4f sbci r23, 0xFF ; 255
+ 15e0: 8f 4f sbci r24, 0xFF ; 255
+ 15e2: 9f 4f sbci r25, 0xFF ; 255
+ 15e4: f0 e8 ldi r31, 0x80 ; 128
+ 15e6: bf 2a or r11, r31
+ 15e8: a2 01 movw r20, r4
+ 15ea: 2a e0 ldi r18, 0x0A ; 10
+ 15ec: 30 e0 ldi r19, 0x00 ; 0
+ 15ee: 25 d1 rcall .+586 ; 0x183a <__ultoa_invert>
+ 15f0: 78 2e mov r7, r24
+ 15f2: 74 18 sub r7, r4
+ 15f4: 44 c0 rjmp .+136 ; 0x167e <vfprintf+0x2ce>
+ 15f6: 85 37 cpi r24, 0x75 ; 117
+ 15f8: 31 f4 brne .+12 ; 0x1606 <vfprintf+0x256>
+ 15fa: 3f ee ldi r19, 0xEF ; 239
+ 15fc: b3 2e mov r11, r19
+ 15fe: b2 22 and r11, r18
+ 1600: 2a e0 ldi r18, 0x0A ; 10
+ 1602: 30 e0 ldi r19, 0x00 ; 0
+ 1604: 25 c0 rjmp .+74 ; 0x1650 <vfprintf+0x2a0>
+ 1606: 99 ef ldi r25, 0xF9 ; 249
+ 1608: b9 2e mov r11, r25
+ 160a: b2 22 and r11, r18
+ 160c: 8f 36 cpi r24, 0x6F ; 111
+ 160e: c1 f0 breq .+48 ; 0x1640 <vfprintf+0x290>
+ 1610: 80 37 cpi r24, 0x70 ; 112
+ 1612: 20 f4 brcc .+8 ; 0x161c <vfprintf+0x26c>
+ 1614: 88 35 cpi r24, 0x58 ; 88
+ 1616: 09 f0 breq .+2 ; 0x161a <vfprintf+0x26a>
+ 1618: ae c0 rjmp .+348 ; 0x1776 <vfprintf+0x3c6>
+ 161a: 0d c0 rjmp .+26 ; 0x1636 <vfprintf+0x286>
+ 161c: 80 37 cpi r24, 0x70 ; 112
+ 161e: 21 f0 breq .+8 ; 0x1628 <vfprintf+0x278>
+ 1620: 88 37 cpi r24, 0x78 ; 120
+ 1622: 09 f0 breq .+2 ; 0x1626 <vfprintf+0x276>
+ 1624: a8 c0 rjmp .+336 ; 0x1776 <vfprintf+0x3c6>
+ 1626: 02 c0 rjmp .+4 ; 0x162c <vfprintf+0x27c>
+ 1628: 20 e1 ldi r18, 0x10 ; 16
+ 162a: b2 2a or r11, r18
+ 162c: b4 fe sbrs r11, 4
+ 162e: 0b c0 rjmp .+22 ; 0x1646 <vfprintf+0x296>
+ 1630: 84 e0 ldi r24, 0x04 ; 4
+ 1632: b8 2a or r11, r24
+ 1634: 08 c0 rjmp .+16 ; 0x1646 <vfprintf+0x296>
+ 1636: b4 fe sbrs r11, 4
+ 1638: 09 c0 rjmp .+18 ; 0x164c <vfprintf+0x29c>
+ 163a: e6 e0 ldi r30, 0x06 ; 6
+ 163c: be 2a or r11, r30
+ 163e: 06 c0 rjmp .+12 ; 0x164c <vfprintf+0x29c>
+ 1640: 28 e0 ldi r18, 0x08 ; 8
+ 1642: 30 e0 ldi r19, 0x00 ; 0
+ 1644: 05 c0 rjmp .+10 ; 0x1650 <vfprintf+0x2a0>
+ 1646: 20 e1 ldi r18, 0x10 ; 16
+ 1648: 30 e0 ldi r19, 0x00 ; 0
+ 164a: 02 c0 rjmp .+4 ; 0x1650 <vfprintf+0x2a0>
+ 164c: 20 e1 ldi r18, 0x10 ; 16
+ 164e: 32 e0 ldi r19, 0x02 ; 2
+ 1650: b7 fe sbrs r11, 7
+ 1652: 08 c0 rjmp .+16 ; 0x1664 <vfprintf+0x2b4>
+ 1654: f8 01 movw r30, r16
+ 1656: 60 81 ld r22, Z
+ 1658: 71 81 ldd r23, Z+1 ; 0x01
+ 165a: 82 81 ldd r24, Z+2 ; 0x02
+ 165c: 93 81 ldd r25, Z+3 ; 0x03
+ 165e: 0c 5f subi r16, 0xFC ; 252
+ 1660: 1f 4f sbci r17, 0xFF ; 255
+ 1662: 07 c0 rjmp .+14 ; 0x1672 <vfprintf+0x2c2>
+ 1664: f8 01 movw r30, r16
+ 1666: 60 81 ld r22, Z
+ 1668: 71 81 ldd r23, Z+1 ; 0x01
+ 166a: 80 e0 ldi r24, 0x00 ; 0
+ 166c: 90 e0 ldi r25, 0x00 ; 0
+ 166e: 0e 5f subi r16, 0xFE ; 254
+ 1670: 1f 4f sbci r17, 0xFF ; 255
+ 1672: a2 01 movw r20, r4
+ 1674: e2 d0 rcall .+452 ; 0x183a <__ultoa_invert>
+ 1676: 78 2e mov r7, r24
+ 1678: 74 18 sub r7, r4
+ 167a: ff e7 ldi r31, 0x7F ; 127
+ 167c: bf 22 and r11, r31
+ 167e: b6 fe sbrs r11, 6
+ 1680: 0b c0 rjmp .+22 ; 0x1698 <vfprintf+0x2e8>
+ 1682: 2e ef ldi r18, 0xFE ; 254
+ 1684: b2 22 and r11, r18
+ 1686: 7e 14 cp r7, r14
+ 1688: 38 f4 brcc .+14 ; 0x1698 <vfprintf+0x2e8>
+ 168a: b4 fe sbrs r11, 4
+ 168c: 07 c0 rjmp .+14 ; 0x169c <vfprintf+0x2ec>
+ 168e: b2 fc sbrc r11, 2
+ 1690: 05 c0 rjmp .+10 ; 0x169c <vfprintf+0x2ec>
+ 1692: 8f ee ldi r24, 0xEF ; 239
+ 1694: b8 22 and r11, r24
+ 1696: 02 c0 rjmp .+4 ; 0x169c <vfprintf+0x2ec>
+ 1698: a7 2c mov r10, r7
+ 169a: 01 c0 rjmp .+2 ; 0x169e <vfprintf+0x2ee>
+ 169c: ae 2c mov r10, r14
+ 169e: 8b 2d mov r24, r11
+ 16a0: 90 e0 ldi r25, 0x00 ; 0
+ 16a2: b4 fe sbrs r11, 4
+ 16a4: 0d c0 rjmp .+26 ; 0x16c0 <vfprintf+0x310>
+ 16a6: fe 01 movw r30, r28
+ 16a8: e7 0d add r30, r7
+ 16aa: f1 1d adc r31, r1
+ 16ac: 20 81 ld r18, Z
+ 16ae: 20 33 cpi r18, 0x30 ; 48
+ 16b0: 19 f4 brne .+6 ; 0x16b8 <vfprintf+0x308>
+ 16b2: e9 ee ldi r30, 0xE9 ; 233
+ 16b4: be 22 and r11, r30
+ 16b6: 09 c0 rjmp .+18 ; 0x16ca <vfprintf+0x31a>
+ 16b8: a3 94 inc r10
+ 16ba: b2 fe sbrs r11, 2
+ 16bc: 06 c0 rjmp .+12 ; 0x16ca <vfprintf+0x31a>
+ 16be: 04 c0 rjmp .+8 ; 0x16c8 <vfprintf+0x318>
+ 16c0: 86 78 andi r24, 0x86 ; 134
+ 16c2: 90 70 andi r25, 0x00 ; 0
+ 16c4: 00 97 sbiw r24, 0x00 ; 0
+ 16c6: 09 f0 breq .+2 ; 0x16ca <vfprintf+0x31a>
+ 16c8: a3 94 inc r10
+ 16ca: 8b 2c mov r8, r11
+ 16cc: 99 24 eor r9, r9
+ 16ce: b3 fc sbrc r11, 3
+ 16d0: 13 c0 rjmp .+38 ; 0x16f8 <vfprintf+0x348>
+ 16d2: b0 fe sbrs r11, 0
+ 16d4: 0e c0 rjmp .+28 ; 0x16f2 <vfprintf+0x342>
+ 16d6: af 14 cp r10, r15
+ 16d8: 28 f4 brcc .+10 ; 0x16e4 <vfprintf+0x334>
+ 16da: e7 2c mov r14, r7
+ 16dc: ef 0c add r14, r15
+ 16de: ea 18 sub r14, r10
+ 16e0: af 2c mov r10, r15
+ 16e2: 07 c0 rjmp .+14 ; 0x16f2 <vfprintf+0x342>
+ 16e4: e7 2c mov r14, r7
+ 16e6: 05 c0 rjmp .+10 ; 0x16f2 <vfprintf+0x342>
+ 16e8: 80 e2 ldi r24, 0x20 ; 32
+ 16ea: 90 e0 ldi r25, 0x00 ; 0
+ 16ec: b6 01 movw r22, r12
+ 16ee: 79 d0 rcall .+242 ; 0x17e2 <fputc>
+ 16f0: a3 94 inc r10
+ 16f2: af 14 cp r10, r15
+ 16f4: c8 f3 brcs .-14 ; 0x16e8 <vfprintf+0x338>
+ 16f6: 04 c0 rjmp .+8 ; 0x1700 <vfprintf+0x350>
+ 16f8: af 14 cp r10, r15
+ 16fa: 10 f4 brcc .+4 ; 0x1700 <vfprintf+0x350>
+ 16fc: fa 18 sub r15, r10
+ 16fe: 01 c0 rjmp .+2 ; 0x1702 <vfprintf+0x352>
+ 1700: ff 24 eor r15, r15
+ 1702: 84 fe sbrs r8, 4
+ 1704: 0e c0 rjmp .+28 ; 0x1722 <vfprintf+0x372>
+ 1706: 80 e3 ldi r24, 0x30 ; 48
+ 1708: 90 e0 ldi r25, 0x00 ; 0
+ 170a: b6 01 movw r22, r12
+ 170c: 6a d0 rcall .+212 ; 0x17e2 <fputc>
+ 170e: 82 fe sbrs r8, 2
+ 1710: 1d c0 rjmp .+58 ; 0x174c <vfprintf+0x39c>
+ 1712: 81 fe sbrs r8, 1
+ 1714: 03 c0 rjmp .+6 ; 0x171c <vfprintf+0x36c>
+ 1716: 88 e5 ldi r24, 0x58 ; 88
+ 1718: 90 e0 ldi r25, 0x00 ; 0
+ 171a: 10 c0 rjmp .+32 ; 0x173c <vfprintf+0x38c>
+ 171c: 88 e7 ldi r24, 0x78 ; 120
+ 171e: 90 e0 ldi r25, 0x00 ; 0
+ 1720: 0d c0 rjmp .+26 ; 0x173c <vfprintf+0x38c>
+ 1722: c4 01 movw r24, r8
+ 1724: 86 78 andi r24, 0x86 ; 134
+ 1726: 90 70 andi r25, 0x00 ; 0
+ 1728: 00 97 sbiw r24, 0x00 ; 0
+ 172a: 81 f0 breq .+32 ; 0x174c <vfprintf+0x39c>
+ 172c: 81 fc sbrc r8, 1
+ 172e: 02 c0 rjmp .+4 ; 0x1734 <vfprintf+0x384>
+ 1730: 80 e2 ldi r24, 0x20 ; 32
+ 1732: 01 c0 rjmp .+2 ; 0x1736 <vfprintf+0x386>
+ 1734: 8b e2 ldi r24, 0x2B ; 43
+ 1736: b7 fc sbrc r11, 7
+ 1738: 8d e2 ldi r24, 0x2D ; 45
+ 173a: 90 e0 ldi r25, 0x00 ; 0
+ 173c: b6 01 movw r22, r12
+ 173e: 51 d0 rcall .+162 ; 0x17e2 <fputc>
+ 1740: 05 c0 rjmp .+10 ; 0x174c <vfprintf+0x39c>
+ 1742: 80 e3 ldi r24, 0x30 ; 48
+ 1744: 90 e0 ldi r25, 0x00 ; 0
+ 1746: b6 01 movw r22, r12
+ 1748: 4c d0 rcall .+152 ; 0x17e2 <fputc>
+ 174a: ea 94 dec r14
+ 174c: 7e 14 cp r7, r14
+ 174e: c8 f3 brcs .-14 ; 0x1742 <vfprintf+0x392>
+ 1750: 7a 94 dec r7
+ 1752: f2 01 movw r30, r4
+ 1754: e7 0d add r30, r7
+ 1756: f1 1d adc r31, r1
+ 1758: 80 81 ld r24, Z
+ 175a: 90 e0 ldi r25, 0x00 ; 0
+ 175c: b6 01 movw r22, r12
+ 175e: 41 d0 rcall .+130 ; 0x17e2 <fputc>
+ 1760: 77 20 and r7, r7
+ 1762: b1 f7 brne .-20 ; 0x1750 <vfprintf+0x3a0>
+ 1764: 05 c0 rjmp .+10 ; 0x1770 <vfprintf+0x3c0>
+ 1766: 80 e2 ldi r24, 0x20 ; 32
+ 1768: 90 e0 ldi r25, 0x00 ; 0
+ 176a: b6 01 movw r22, r12
+ 176c: 3a d0 rcall .+116 ; 0x17e2 <fputc>
+ 176e: fa 94 dec r15
+ 1770: ff 20 and r15, r15
+ 1772: c9 f7 brne .-14 ; 0x1766 <vfprintf+0x3b6>
+ 1774: 44 ce rjmp .-888 ; 0x13fe <vfprintf+0x4e>
+ 1776: f6 01 movw r30, r12
+ 1778: 26 81 ldd r18, Z+6 ; 0x06
+ 177a: 37 81 ldd r19, Z+7 ; 0x07
+ 177c: 02 c0 rjmp .+4 ; 0x1782 <vfprintf+0x3d2>
+ 177e: 2f ef ldi r18, 0xFF ; 255
+ 1780: 3f ef ldi r19, 0xFF ; 255
+ 1782: c9 01 movw r24, r18
+ 1784: 2c 96 adiw r28, 0x0c ; 12
+ 1786: 0f b6 in r0, 0x3f ; 63
+ 1788: f8 94 cli
+ 178a: de bf out 0x3e, r29 ; 62
+ 178c: 0f be out 0x3f, r0 ; 63
+ 178e: cd bf out 0x3d, r28 ; 61
+ 1790: cf 91 pop r28
+ 1792: df 91 pop r29
+ 1794: 1f 91 pop r17
+ 1796: 0f 91 pop r16
+ 1798: ff 90 pop r15
+ 179a: ef 90 pop r14
+ 179c: df 90 pop r13
+ 179e: cf 90 pop r12
+ 17a0: bf 90 pop r11
+ 17a2: af 90 pop r10
+ 17a4: 9f 90 pop r9
+ 17a6: 8f 90 pop r8
+ 17a8: 7f 90 pop r7
+ 17aa: 6f 90 pop r6
+ 17ac: 5f 90 pop r5
+ 17ae: 4f 90 pop r4
+ 17b0: 3f 90 pop r3
+ 17b2: 2f 90 pop r2
+ 17b4: 08 95 ret
+
+000017b6 <strnlen_P>:
+ 17b6: fc 01 movw r30, r24
+ 17b8: 05 90 lpm r0, Z+
+ 17ba: 61 50 subi r22, 0x01 ; 1
+ 17bc: 70 40 sbci r23, 0x00 ; 0
+ 17be: 01 10 cpse r0, r1
+ 17c0: d8 f7 brcc .-10 ; 0x17b8 <strnlen_P+0x2>
+ 17c2: 80 95 com r24
+ 17c4: 90 95 com r25
+ 17c6: 8e 0f add r24, r30
+ 17c8: 9f 1f adc r25, r31
+ 17ca: 08 95 ret
+
+000017cc <strnlen>:
+ 17cc: fc 01 movw r30, r24
+ 17ce: 61 50 subi r22, 0x01 ; 1
+ 17d0: 70 40 sbci r23, 0x00 ; 0
+ 17d2: 01 90 ld r0, Z+
+ 17d4: 01 10 cpse r0, r1
+ 17d6: d8 f7 brcc .-10 ; 0x17ce <strnlen+0x2>
+ 17d8: 80 95 com r24
+ 17da: 90 95 com r25
+ 17dc: 8e 0f add r24, r30
+ 17de: 9f 1f adc r25, r31
+ 17e0: 08 95 ret
+
+000017e2 <fputc>:
+ 17e2: 0f 93 push r16
+ 17e4: 1f 93 push r17
+ 17e6: cf 93 push r28
+ 17e8: df 93 push r29
+ 17ea: 8c 01 movw r16, r24
+ 17ec: eb 01 movw r28, r22
+ 17ee: 8b 81 ldd r24, Y+3 ; 0x03
+ 17f0: 81 ff sbrs r24, 1
+ 17f2: 1b c0 rjmp .+54 ; 0x182a <fputc+0x48>
+ 17f4: 82 ff sbrs r24, 2
+ 17f6: 0d c0 rjmp .+26 ; 0x1812 <fputc+0x30>
+ 17f8: 2e 81 ldd r18, Y+6 ; 0x06
+ 17fa: 3f 81 ldd r19, Y+7 ; 0x07
+ 17fc: 8c 81 ldd r24, Y+4 ; 0x04
+ 17fe: 9d 81 ldd r25, Y+5 ; 0x05
+ 1800: 28 17 cp r18, r24
+ 1802: 39 07 cpc r19, r25
+ 1804: 64 f4 brge .+24 ; 0x181e <fputc+0x3c>
+ 1806: e8 81 ld r30, Y
+ 1808: f9 81 ldd r31, Y+1 ; 0x01
+ 180a: 01 93 st Z+, r16
+ 180c: f9 83 std Y+1, r31 ; 0x01
+ 180e: e8 83 st Y, r30
+ 1810: 06 c0 rjmp .+12 ; 0x181e <fputc+0x3c>
+ 1812: e8 85 ldd r30, Y+8 ; 0x08
+ 1814: f9 85 ldd r31, Y+9 ; 0x09
+ 1816: 80 2f mov r24, r16
+ 1818: 09 95 icall
+ 181a: 00 97 sbiw r24, 0x00 ; 0
+ 181c: 31 f4 brne .+12 ; 0x182a <fputc+0x48>
+ 181e: 8e 81 ldd r24, Y+6 ; 0x06
+ 1820: 9f 81 ldd r25, Y+7 ; 0x07
+ 1822: 01 96 adiw r24, 0x01 ; 1
+ 1824: 9f 83 std Y+7, r25 ; 0x07
+ 1826: 8e 83 std Y+6, r24 ; 0x06
+ 1828: 02 c0 rjmp .+4 ; 0x182e <fputc+0x4c>
+ 182a: 0f ef ldi r16, 0xFF ; 255
+ 182c: 1f ef ldi r17, 0xFF ; 255
+ 182e: c8 01 movw r24, r16
+ 1830: df 91 pop r29
+ 1832: cf 91 pop r28
+ 1834: 1f 91 pop r17
+ 1836: 0f 91 pop r16
+ 1838: 08 95 ret
+
+0000183a <__ultoa_invert>:
+ 183a: fa 01 movw r30, r20
+ 183c: aa 27 eor r26, r26
+ 183e: 28 30 cpi r18, 0x08 ; 8
+ 1840: 51 f1 breq .+84 ; 0x1896 <__ultoa_invert+0x5c>
+ 1842: 20 31 cpi r18, 0x10 ; 16
+ 1844: 81 f1 breq .+96 ; 0x18a6 <__ultoa_invert+0x6c>
+ 1846: e8 94 clt
+ 1848: 6f 93 push r22
+ 184a: 6e 7f andi r22, 0xFE ; 254
+ 184c: 6e 5f subi r22, 0xFE ; 254
+ 184e: 7f 4f sbci r23, 0xFF ; 255
+ 1850: 8f 4f sbci r24, 0xFF ; 255
+ 1852: 9f 4f sbci r25, 0xFF ; 255
+ 1854: af 4f sbci r26, 0xFF ; 255
+ 1856: b1 e0 ldi r27, 0x01 ; 1
+ 1858: 3e d0 rcall .+124 ; 0x18d6 <__ultoa_invert+0x9c>
+ 185a: b4 e0 ldi r27, 0x04 ; 4
+ 185c: 3c d0 rcall .+120 ; 0x18d6 <__ultoa_invert+0x9c>
+ 185e: 67 0f add r22, r23
+ 1860: 78 1f adc r23, r24
+ 1862: 89 1f adc r24, r25
+ 1864: 9a 1f adc r25, r26
+ 1866: a1 1d adc r26, r1
+ 1868: 68 0f add r22, r24
+ 186a: 79 1f adc r23, r25
+ 186c: 8a 1f adc r24, r26
+ 186e: 91 1d adc r25, r1
+ 1870: a1 1d adc r26, r1
+ 1872: 6a 0f add r22, r26
+ 1874: 71 1d adc r23, r1
+ 1876: 81 1d adc r24, r1
+ 1878: 91 1d adc r25, r1
+ 187a: a1 1d adc r26, r1
+ 187c: 20 d0 rcall .+64 ; 0x18be <__ultoa_invert+0x84>
+ 187e: 09 f4 brne .+2 ; 0x1882 <__ultoa_invert+0x48>
+ 1880: 68 94 set
+ 1882: 3f 91 pop r19
+ 1884: 2a e0 ldi r18, 0x0A ; 10
+ 1886: 26 9f mul r18, r22
+ 1888: 11 24 eor r1, r1
+ 188a: 30 19 sub r19, r0
+ 188c: 30 5d subi r19, 0xD0 ; 208
+ 188e: 31 93 st Z+, r19
+ 1890: de f6 brtc .-74 ; 0x1848 <__ultoa_invert+0xe>
+ 1892: cf 01 movw r24, r30
+ 1894: 08 95 ret
+ 1896: 46 2f mov r20, r22
+ 1898: 47 70 andi r20, 0x07 ; 7
+ 189a: 40 5d subi r20, 0xD0 ; 208
+ 189c: 41 93 st Z+, r20
+ 189e: b3 e0 ldi r27, 0x03 ; 3
+ 18a0: 0f d0 rcall .+30 ; 0x18c0 <__ultoa_invert+0x86>
+ 18a2: c9 f7 brne .-14 ; 0x1896 <__ultoa_invert+0x5c>
+ 18a4: f6 cf rjmp .-20 ; 0x1892 <__ultoa_invert+0x58>
+ 18a6: 46 2f mov r20, r22
+ 18a8: 4f 70 andi r20, 0x0F ; 15
+ 18aa: 40 5d subi r20, 0xD0 ; 208
+ 18ac: 4a 33 cpi r20, 0x3A ; 58
+ 18ae: 18 f0 brcs .+6 ; 0x18b6 <__ultoa_invert+0x7c>
+ 18b0: 49 5d subi r20, 0xD9 ; 217
+ 18b2: 31 fd sbrc r19, 1
+ 18b4: 40 52 subi r20, 0x20 ; 32
+ 18b6: 41 93 st Z+, r20
+ 18b8: 02 d0 rcall .+4 ; 0x18be <__ultoa_invert+0x84>
+ 18ba: a9 f7 brne .-22 ; 0x18a6 <__ultoa_invert+0x6c>
+ 18bc: ea cf rjmp .-44 ; 0x1892 <__ultoa_invert+0x58>
+ 18be: b4 e0 ldi r27, 0x04 ; 4
+ 18c0: a6 95 lsr r26
+ 18c2: 97 95 ror r25
+ 18c4: 87 95 ror r24
+ 18c6: 77 95 ror r23
+ 18c8: 67 95 ror r22
+ 18ca: ba 95 dec r27
+ 18cc: c9 f7 brne .-14 ; 0x18c0 <__ultoa_invert+0x86>
+ 18ce: 00 97 sbiw r24, 0x00 ; 0
+ 18d0: 61 05 cpc r22, r1
+ 18d2: 71 05 cpc r23, r1
+ 18d4: 08 95 ret
+ 18d6: 9b 01 movw r18, r22
+ 18d8: ac 01 movw r20, r24
+ 18da: 0a 2e mov r0, r26
+ 18dc: 06 94 lsr r0
+ 18de: 57 95 ror r21
+ 18e0: 47 95 ror r20
+ 18e2: 37 95 ror r19
+ 18e4: 27 95 ror r18
+ 18e6: ba 95 dec r27
+ 18e8: c9 f7 brne .-14 ; 0x18dc <__ultoa_invert+0xa2>
+ 18ea: 62 0f add r22, r18
+ 18ec: 73 1f adc r23, r19
+ 18ee: 84 1f adc r24, r20
+ 18f0: 95 1f adc r25, r21
+ 18f2: a0 1d adc r26, r0
+ 18f4: 08 95 ret
+
+000018f6 <_exit>:
+ 18f6: f8 94 cli
+
+000018f8 <__stop_program>:
+ 18f8: ff cf rjmp .-2 ; 0x18f8 <__stop_program>
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst
new file mode 100644
index 000000000..c99fb0e1d
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.lst
@@ -0,0 +1,853 @@
+ 1 .file "AudioInputHost.c"
+ 2 __SREG__ = 0x3f
+ 3 __SP_H__ = 0x3e
+ 4 __SP_L__ = 0x3d
+ 5 __CCP__ = 0x34
+ 6 __tmp_reg__ = 0
+ 7 __zero_reg__ = 1
+ 15 .Ltext0:
+ 16 .section .text.LEDs_SetAllLEDs,"ax",@progbits
+ 18 LEDs_SetAllLEDs:
+ 19 .LFB127:
+ 20 .LSM0:
+ 21 .LVL0:
+ 22 /* prologue: function */
+ 23 /* frame size = 0 */
+ 24 /* stack size = 0 */
+ 25 .L__stack_usage = 0
+ 26 .LSM1:
+ 27 0000 9BB1 in r25,43-32
+ 28 0002 9F70 andi r25,lo8(15)
+ 29 0004 982B or r25,r24
+ 30 0006 9BB9 out 43-32,r25
+ 31 /* epilogue start */
+ 32 .LSM2:
+ 33 0008 0895 ret
+ 34 .LFE127:
+ 36 .section .text.SetupHardware,"ax",@progbits
+ 37 .global SetupHardware
+ 39 SetupHardware:
+ 40 .LFB132:
+ 41 .LSM3:
+ 42 /* prologue: function */
+ 43 /* frame size = 0 */
+ 44 /* stack size = 0 */
+ 45 .L__stack_usage = 0
+ 46 .LSM4:
+ 47 0000 84B7 in r24,84-32
+ 48 0002 877F andi r24,lo8(-9)
+ 49 0004 84BF out 84-32,r24
+ 50 .LSM5:
+ 51 0006 28E1 ldi r18,lo8(24)
+ 52 /* #APP */
+ 53 ; 63 "AudioInputHost.c" 1
+ 54 0008 0FB6 in __tmp_reg__, __SREG__
+ 55 000a F894 cli
+ 56 000c 2093 6000 sts 96, r18
+ 57 0010 1092 6000 sts 96, __zero_reg__
+ 58 0014 0FBE out __SREG__,__tmp_reg__
+ 59
+ 60 ; 0 "" 2
+ 61 .LVL1:
+ 62 /* #NOAPP */
+ 63 .LBB39:
+ 64 .LBB40:
+ 65 .LSM6:
+ 66 0016 90E0 ldi r25,lo8(0)
+ 67 0018 80E8 ldi r24,lo8(-128)
+ 68 /* #APP */
+ 69 ; 1614 "c:\program files (x86)\atmel\avr studio 5.0\extensions\application\avr toolchain\bin\../l
+ 70 001a 0FB6 in __tmp_reg__,__SREG__
+ 71 001c F894 cli
+ 72 001e 8093 6100 sts 97, r24
+ 73 0022 9093 6100 sts 97, r25
+ 74 0026 0FBE out __SREG__, __tmp_reg__
+ 75 ; 0 "" 2
+ 76 .LVL2:
+ 77 /* #NOAPP */
+ 78 .LBE40:
+ 79 .LBE39:
+ 80 .LBB41:
+ 81 .LBB42:
+ 82 .LSM7:
+ 83 0028 83E3 ldi r24,lo8(51)
+ 84 002a 90E0 ldi r25,hi8(51)
+ 85 002c 9093 CD00 sts 204+1,r25
+ 86 0030 8093 CC00 sts 204,r24
+ 87 .LSM8:
+ 88 0034 86E0 ldi r24,lo8(6)
+ 89 0036 8093 CA00 sts 202,r24
+ 90 .LSM9:
+ 91 003a 1092 C800 sts 200,__zero_reg__
+ 92 .LSM10:
+ 93 003e 2093 C900 sts 201,r18
+ 94 .LSM11:
+ 95 0042 539A sbi 42-32,3
+ 96 .LSM12:
+ 97 0044 5A9A sbi 43-32,2
+ 98 .LBE42:
+ 99 .LBE41:
+ 100 .LBB43:
+ 101 .LBB44:
+ 102 .LSM13:
+ 103 0046 8AB1 in r24,42-32
+ 104 0048 806F ori r24,lo8(-16)
+ 105 004a 8AB9 out 42-32,r24
+ 106 .LSM14:
+ 107 004c 8BB1 in r24,43-32
+ 108 004e 8F70 andi r24,lo8(15)
+ 109 0050 8BB9 out 43-32,r24
+ 110 .LBE44:
+ 111 .LBE43:
+ 112 .LSM15:
+ 113 0052 0E94 0000 call USB_Init
+ 114 .LVL3:
+ 115 .LBB45:
+ 116 .LBB46:
+ 117 .LSM16:
+ 118 0056 E0E0 ldi r30,lo8(USARTSerialStream)
+ 119 0058 F0E0 ldi r31,hi8(USARTSerialStream)
+ 120 005a F093 0000 sts __iob+1,r31
+ 121 005e E093 0000 sts __iob,r30
+ 122 .LSM17:
+ 123 0062 F093 0000 sts __iob+2+1,r31
+ 124 0066 E093 0000 sts __iob+2,r30
+ 125 .LSM18:
+ 126 006a 8EE0 ldi r24,lo8(14)
+ 127 006c DF01 movw r26,r30
+ 128 006e 1D92 st X+,__zero_reg__
+ 129 0070 8A95 dec r24
+ 130 0072 01F4 brne .-6
+ 131 0074 83E0 ldi r24,lo8(3)
+ 132 0076 8093 0000 sts USARTSerialStream+3,r24
+ 133 007a 80E0 ldi r24,lo8(gs(Serial_putchar))
+ 134 007c 90E0 ldi r25,hi8(gs(Serial_putchar))
+ 135 007e 9093 0000 sts USARTSerialStream+8+1,r25
+ 136 0082 8093 0000 sts USARTSerialStream+8,r24
+ 137 0086 80E0 ldi r24,lo8(gs(Serial_getchar))
+ 138 0088 90E0 ldi r25,hi8(gs(Serial_getchar))
+ 139 008a 9093 0000 sts USARTSerialStream+10+1,r25
+ 140 008e 8093 0000 sts USARTSerialStream+10,r24
+ 141 /* epilogue start */
+ 142 .LBE46:
+ 143 .LBE45:
+ 144 .LSM19:
+ 145 0092 0895 ret
+ 146 .LFE132:
+ 148 .section .text.EVENT_USB_Host_DeviceAttached,"ax",@progbits
+ 149 .global EVENT_USB_Host_DeviceAttached
+ 151 EVENT_USB_Host_DeviceAttached:
+ 152 .LFB133:
+ 153 .LSM20:
+ 154 /* prologue: function */
+ 155 /* frame size = 0 */
+ 156 /* stack size = 0 */
+ 157 .L__stack_usage = 0
+ 158 .LSM21:
+ 159 0000 80E0 ldi r24,lo8(__c.3897)
+ 160 0002 90E0 ldi r25,hi8(__c.3897)
+ 161 0004 0E94 0000 call puts_P
+ 162 .LSM22:
+ 163 0008 80EA ldi r24,lo8(-96)
+ 164 000a 0E94 0000 call LEDs_SetAllLEDs
+ 165 /* epilogue start */
+ 166 .LSM23:
+ 167 000e 0895 ret
+ 168 .LFE133:
+ 170 .section .text.EVENT_USB_Host_DeviceUnattached,"ax",@progbits
+ 171 .global EVENT_USB_Host_DeviceUnattached
+ 173 EVENT_USB_Host_DeviceUnattached:
+ 174 .LFB134:
+ 175 .LSM24:
+ 176 /* prologue: function */
+ 177 /* frame size = 0 */
+ 178 /* stack size = 0 */
+ 179 .L__stack_usage = 0
+ 180 .LSM25:
+ 181 0000 80E0 ldi r24,lo8(__c.3902)
+ 182 0002 90E0 ldi r25,hi8(__c.3902)
+ 183 0004 0E94 0000 call puts_P
+ 184 .LSM26:
+ 185 0008 80E1 ldi r24,lo8(16)
+ 186 000a 0E94 0000 call LEDs_SetAllLEDs
+ 187 /* epilogue start */
+ 188 .LSM27:
+ 189 000e 0895 ret
+ 190 .LFE134:
+ 192 .section .text.EVENT_USB_Host_DeviceEnumerationComplete,"ax",@progbits
+ 193 .global EVENT_USB_Host_DeviceEnumerationComplete
+ 195 EVENT_USB_Host_DeviceEnumerationComplete:
+ 196 .LFB135:
+ 197 .LSM28:
+ 198 /* prologue: function */
+ 199 /* frame size = 0 */
+ 200 /* stack size = 0 */
+ 201 .L__stack_usage = 0
+ 202 .LSM29:
+ 203 0000 80E6 ldi r24,lo8(96)
+ 204 0002 0E94 0000 call LEDs_SetAllLEDs
+ 205 /* epilogue start */
+ 206 .LSM30:
+ 207 0006 0895 ret
+ 208 .LFE135:
+ 210 .section .text.EVENT_USB_Host_HostError,"ax",@progbits
+ 211 .global EVENT_USB_Host_HostError
+ 213 EVENT_USB_Host_HostError:
+ 214 .LFB136:
+ 215 .LSM31:
+ 216 .LVL4:
+ 217 0000 DF93 push r29
+ 218 0002 CF93 push r28
+ 219 0004 0F92 push __tmp_reg__
+ 220 0006 CDB7 in r28,__SP_L__
+ 221 0008 DEB7 in r29,__SP_H__
+ 222 /* prologue: function */
+ 223 /* frame size = 1 */
+ 224 /* stack size = 3 */
+ 225 .L__stack_usage = 3
+ 226 .LSM32:
+ 227 000a 8983 std Y+1,r24
+ 228 000c 0E94 0000 call USB_Disable
+ 229 .LVL5:
+ 230 .LSM33:
+ 231 0010 00D0 rcall .
+ 232 0012 00D0 rcall .
+ 233 0014 EDB7 in r30,__SP_L__
+ 234 0016 FEB7 in r31,__SP_H__
+ 235 0018 3196 adiw r30,1
+ 236 001a 20E0 ldi r18,lo8(__c.3910)
+ 237 001c 30E0 ldi r19,hi8(__c.3910)
+ 238 001e ADB7 in r26,__SP_L__
+ 239 0020 BEB7 in r27,__SP_H__
+ 240 0022 1296 adiw r26,1+1
+ 241 0024 3C93 st X,r19
+ 242 0026 2E93 st -X,r18
+ 243 0028 1197 sbiw r26,1
+ 244 002a 8981 ldd r24,Y+1
+ 245 002c 8283 std Z+2,r24
+ 246 002e 1382 std Z+3,__zero_reg__
+ 247 0030 0E94 0000 call printf_P
+ 248 .LSM34:
+ 249 0034 0F90 pop __tmp_reg__
+ 250 0036 0F90 pop __tmp_reg__
+ 251 0038 0F90 pop __tmp_reg__
+ 252 003a 0F90 pop __tmp_reg__
+ 253 003c 80E9 ldi r24,lo8(-112)
+ 254 003e 0E94 0000 call LEDs_SetAllLEDs
+ 255 .L7:
+ 256 0042 00C0 rjmp .L7
+ 257 .LFE136:
+ 259 .section .text.EVENT_USB_Host_DeviceEnumerationFailed,"ax",@progbits
+ 260 .global EVENT_USB_Host_DeviceEnumerationFailed
+ 262 EVENT_USB_Host_DeviceEnumerationFailed:
+ 263 .LFB137:
+ 264 .LSM35:
+ 265 .LVL6:
+ 266 /* prologue: function */
+ 267 /* frame size = 0 */
+ 268 /* stack size = 0 */
+ 269 .L__stack_usage = 0
+ 270 .LSM36:
+ 271 0000 9091 0000 lds r25,USB_HostState
+ 272 0004 2DB7 in r18,__SP_L__
+ 273 0006 3EB7 in r19,__SP_H__
+ 274 0008 2850 subi r18,lo8(-(-8))
+ 275 000a 3040 sbci r19,hi8(-(-8))
+ 276 000c 0FB6 in __tmp_reg__,__SREG__
+ 277 000e F894 cli
+ 278 0010 3EBF out __SP_H__,r19
+ 279 0012 0FBE out __SREG__,__tmp_reg__
+ 280 0014 2DBF out __SP_L__,r18
+ 281 0016 EDB7 in r30,__SP_L__
+ 282 0018 FEB7 in r31,__SP_H__
+ 283 001a 3196 adiw r30,1
+ 284 001c 20E0 ldi r18,lo8(__c.3917)
+ 285 001e 30E0 ldi r19,hi8(__c.3917)
+ 286 0020 ADB7 in r26,__SP_L__
+ 287 0022 BEB7 in r27,__SP_H__
+ 288 0024 1296 adiw r26,1+1
+ 289 0026 3C93 st X,r19
+ 290 0028 2E93 st -X,r18
+ 291 002a 1197 sbiw r26,1
+ 292 002c 8283 std Z+2,r24
+ 293 002e 1382 std Z+3,__zero_reg__
+ 294 0030 6483 std Z+4,r22
+ 295 0032 1582 std Z+5,__zero_reg__
+ 296 0034 9683 std Z+6,r25
+ 297 0036 1782 std Z+7,__zero_reg__
+ 298 0038 0E94 0000 call printf_P
+ 299 .LVL7:
+ 300 .LSM37:
+ 301 003c 2DB7 in r18,__SP_L__
+ 302 003e 3EB7 in r19,__SP_H__
+ 303 0040 285F subi r18,lo8(-(8))
+ 304 0042 3F4F sbci r19,hi8(-(8))
+ 305 0044 0FB6 in __tmp_reg__,__SREG__
+ 306 0046 F894 cli
+ 307 0048 3EBF out __SP_H__,r19
+ 308 004a 0FBE out __SREG__,__tmp_reg__
+ 309 004c 2DBF out __SP_L__,r18
+ 310 004e 80E9 ldi r24,lo8(-112)
+ 311 0050 0E94 0000 call LEDs_SetAllLEDs
+ 312 /* epilogue start */
+ 313 .LSM38:
+ 314 0054 0895 ret
+ 315 .LFE137:
+ 317 .section .text.Audio_Task,"ax",@progbits
+ 318 .global Audio_Task
+ 320 Audio_Task:
+ 321 .LFB138:
+ 322 .LSM39:
+ 323 0000 1F93 push r17
+ 324 0002 DF93 push r29
+ 325 0004 CF93 push r28
+ 326 0006 00D0 rcall .
+ 327 0008 0F92 push __tmp_reg__
+ 328 000a CDB7 in r28,__SP_L__
+ 329 000c DEB7 in r29,__SP_H__
+ 330 /* prologue: function */
+ 331 /* frame size = 3 */
+ 332 /* stack size = 6 */
+ 333 .L__stack_usage = 6
+ 334 .LSM40:
+ 335 000e 8091 0000 lds r24,USB_HostState
+ 336 0012 8B30 cpi r24,lo8(11)
+ 337 0014 01F0 breq .+2
+ 338 0016 00C0 rjmp .L9
+ 339 .LBB47:
+ 340 .LSM41:
+ 341 0018 80E0 ldi r24,lo8(__c.3924)
+ 342 001a 90E0 ldi r25,hi8(__c.3924)
+ 343 001c 0E94 0000 call puts_P
+ 344 .LSM42:
+ 345 0020 0E94 0000 call ProcessConfigurationDescriptor
+ 346 0024 182F mov r17,r24
+ 347 .LVL8:
+ 348 0026 8823 tst r24
+ 349 0028 01F0 breq .L12
+ 350 .LSM43:
+ 351 002a 8130 cpi r24,lo8(1)
+ 352 002c 01F4 brne .L13
+ 353 .LSM44:
+ 354 002e 80E0 ldi r24,lo8(__c.3926)
+ 355 0030 90E0 ldi r25,hi8(__c.3926)
+ 356 .LVL9:
+ 357 0032 00C0 rjmp .L20
+ 358 .L13:
+ 359 .LSM45:
+ 360 0034 80E0 ldi r24,lo8(__c.3928)
+ 361 0036 90E0 ldi r25,hi8(__c.3928)
+ 362 .L20:
+ 363 0038 0E94 0000 call puts_P
+ 364 .LSM46:
+ 365 003c 00D0 rcall .
+ 366 003e 00D0 rcall .
+ 367 0040 EDB7 in r30,__SP_L__
+ 368 0042 FEB7 in r31,__SP_H__
+ 369 0044 3196 adiw r30,1
+ 370 0046 20E0 ldi r18,lo8(__c.3930)
+ 371 0048 30E0 ldi r19,hi8(__c.3930)
+ 372 004a ADB7 in r26,__SP_L__
+ 373 004c BEB7 in r27,__SP_H__
+ 374 004e 1296 adiw r26,1+1
+ 375 0050 3C93 st X,r19
+ 376 0052 2E93 st -X,r18
+ 377 0054 1197 sbiw r26,1
+ 378 0056 1283 std Z+2,r17
+ 379 .LVL10:
+ 380 .L22:
+ 381 0058 1382 std Z+3,__zero_reg__
+ 382 005a 0E94 0000 call printf_P
+ 383 .LSM47:
+ 384 005e 0F90 pop __tmp_reg__
+ 385 0060 0F90 pop __tmp_reg__
+ 386 0062 0F90 pop __tmp_reg__
+ 387 0064 0F90 pop __tmp_reg__
+ 388 0066 00C0 rjmp .L21
+ 389 .LVL11:
+ 390 .L12:
+ 391 .LSM48:
+ 392 0068 81E0 ldi r24,lo8(1)
+ 393 006a 0E94 0000 call USB_Host_SetDeviceConfiguration
+ 394 .LVL12:
+ 395 006e 8823 tst r24
+ 396 0070 01F0 breq .L15
+ 397 .LSM49:
+ 398 0072 00D0 rcall .
+ 399 0074 00D0 rcall .
+ 400 0076 EDB7 in r30,__SP_L__
+ 401 0078 FEB7 in r31,__SP_H__
+ 402 007a 3196 adiw r30,1
+ 403 007c 20E0 ldi r18,lo8(__c.3933)
+ 404 007e 30E0 ldi r19,hi8(__c.3933)
+ 405 0080 00C0 rjmp .L23
+ 406 .L15:
+ 407 .LSM50:
+ 408 0082 8091 0000 lds r24,StreamingInterfaceIndex
+ 409 .LVL13:
+ 410 0086 6091 0000 lds r22,StreamingInterfaceAltSetting
+ 411 008a 0E94 0000 call USB_Host_SetInterfaceAltSetting
+ 412 .LVL14:
+ 413 008e 8823 tst r24
+ 414 0090 01F0 breq .L16
+ 415 .LSM51:
+ 416 0092 00D0 rcall .
+ 417 0094 00D0 rcall .
+ 418 0096 EDB7 in r30,__SP_L__
+ 419 0098 FEB7 in r31,__SP_H__
+ 420 009a 3196 adiw r30,1
+ 421 009c 20E0 ldi r18,lo8(__c.3935)
+ 422 009e 30E0 ldi r19,hi8(__c.3935)
+ 423 .L23:
+ 424 00a0 ADB7 in r26,__SP_L__
+ 425 00a2 BEB7 in r27,__SP_H__
+ 426 00a4 1296 adiw r26,1+1
+ 427 00a6 3C93 st X,r19
+ 428 00a8 2E93 st -X,r18
+ 429 00aa 1197 sbiw r26,1
+ 430 00ac 8283 std Z+2,r24
+ 431 00ae 00C0 rjmp .L22
+ 432 .L16:
+ 433 .LSM52:
+ 434 00b0 2091 0000 lds r18,StreamingEndpointAddress
+ 435 00b4 82E2 ldi r24,lo8(34)
+ 436 .LVL15:
+ 437 00b6 8093 0000 sts USB_ControlRequest,r24
+ 438 00ba 81E0 ldi r24,lo8(1)
+ 439 00bc 8093 0000 sts USB_ControlRequest+1,r24
+ 440 00c0 80E0 ldi r24,lo8(256)
+ 441 00c2 91E0 ldi r25,hi8(256)
+ 442 00c4 9093 0000 sts USB_ControlRequest+2+1,r25
+ 443 00c8 8093 0000 sts USB_ControlRequest+2,r24
+ 444 00cc 2093 0000 sts USB_ControlRequest+4,r18
+ 445 00d0 1092 0000 sts USB_ControlRequest+5,__zero_reg__
+ 446 00d4 83E0 ldi r24,lo8(3)
+ 447 00d6 90E0 ldi r25,hi8(3)
+ 448 00d8 9093 0000 sts USB_ControlRequest+6+1,r25
+ 449 00dc 8093 0000 sts USB_ControlRequest+6,r24
+ 450 .LSM53:
+ 451 00e0 DE01 movw r26,r28
+ 452 00e2 1196 adiw r26,1
+ 453 00e4 E0E0 ldi r30,lo8(C.5.5024)
+ 454 00e6 F0E0 ldi r31,hi8(C.5.5024)
+ 455 00e8 83E0 ldi r24,lo8(3)
+ 456 .L17:
+ 457 00ea 0190 ld r0,Z+
+ 458 00ec 0D92 st X+,r0
+ 459 00ee 8150 subi r24,lo8(-(-1))
+ 460 00f0 01F4 brne .L17
+ 461 .LVL16:
+ 462 .LBB48:
+ 463 .LBB49:
+ 464 .LSM54:
+ 465 00f2 1092 A700 sts 167,__zero_reg__
+ 466 .LBE49:
+ 467 .LBE48:
+ 468 .LSM55:
+ 469 00f6 CE01 movw r24,r28
+ 470 00f8 0196 adiw r24,1
+ 471 00fa 0E94 0000 call USB_Host_SendControlRequest
+ 472 .LVL17:
+ 473 00fe 8823 tst r24
+ 474 0100 01F0 breq .L18
+ 475 .LVL18:
+ 476 .L21:
+ 477 .LSM56:
+ 478 0102 80E9 ldi r24,lo8(-112)
+ 479 0104 0E94 0000 call LEDs_SetAllLEDs
+ 480 .LSM57:
+ 481 0108 1092 0000 sts USB_HostState,__zero_reg__
+ 482 .LSM58:
+ 483 010c 00C0 rjmp .L9
+ 484 .LVL19:
+ 485 .L18:
+ 486 .LSM59:
+ 487 010e 82E0 ldi r24,lo8(2)
+ 488 .LVL20:
+ 489 0110 8093 6E00 sts 110,r24
+ 490 .LSM60:
+ 491 0114 9CE7 ldi r25,lo8(124)
+ 492 0116 97BD out 71-32,r25
+ 493 .LSM61:
+ 494 0118 84BD out 68-32,r24
+ 495 .LSM62:
+ 496 011a 85BD out 69-32,r24
+ 497 .LSM63:
+ 498 011c 3E9A sbi 39-32,6
+ 499 .LSM64:
+ 500 011e 81EF ldi r24,lo8(-15)
+ 501 0120 8093 9000 sts 144,r24
+ 502 .LSM65:
+ 503 0124 89E0 ldi r24,lo8(9)
+ 504 0126 8093 9100 sts 145,r24
+ 505 .LSM66:
+ 506 012a 80E0 ldi r24,lo8(__c.3939)
+ 507 012c 90E0 ldi r25,hi8(__c.3939)
+ 508 012e 0E94 0000 call puts_P
+ 509 .LSM67:
+ 510 0132 8CE0 ldi r24,lo8(12)
+ 511 0134 8093 0000 sts USB_HostState,r24
+ 512 .LVL21:
+ 513 .L9:
+ 514 /* epilogue start */
+ 515 .LBE47:
+ 516 .LSM68:
+ 517 0138 0F90 pop __tmp_reg__
+ 518 013a 0F90 pop __tmp_reg__
+ 519 013c 0F90 pop __tmp_reg__
+ 520 013e CF91 pop r28
+ 521 0140 DF91 pop r29
+ 522 0142 1F91 pop r17
+ 523 0144 0895 ret
+ 524 .LFE138:
+ 526 .section .text.main,"ax",@progbits
+ 527 .global main
+ 529 main:
+ 530 .LFB131:
+ 531 .LSM69:
+ 532 /* prologue: function */
+ 533 /* frame size = 0 */
+ 534 /* stack size = 0 */
+ 535 .L__stack_usage = 0
+ 536 .LSM70:
+ 537 0000 0E94 0000 call SetupHardware
+ 538 .LSM71:
+ 539 0004 80E0 ldi r24,lo8(__c.3888)
+ 540 0006 90E0 ldi r25,hi8(__c.3888)
+ 541 0008 0E94 0000 call puts_P
+ 542 .LSM72:
+ 543 000c 80E1 ldi r24,lo8(16)
+ 544 000e 0E94 0000 call LEDs_SetAllLEDs
+ 545 .LSM73:
+ 546 /* #APP */
+ 547 ; 49 "AudioInputHost.c" 1
+ 548 0012 7894 sei
+ 549 ; 0 "" 2
+ 550 /* #NOAPP */
+ 551 .L25:
+ 552 .LSM74:
+ 553 0014 0E94 0000 call Audio_Task
+ 554 .LSM75:
+ 555 0018 0E94 0000 call USB_USBTask
+ 556 001c 00C0 rjmp .L25
+ 557 .LFE131:
+ 559 .section .text.__vector_21,"ax",@progbits
+ 560 .global __vector_21
+ 562 __vector_21:
+ 563 .LFB139:
+ 564 .LSM76:
+ 565 0000 1F92 push __zero_reg__
+ 566 0002 0F92 push r0
+ 567 0004 0FB6 in r0,__SREG__
+ 568 0006 0F92 push r0
+ 569 0008 0BB6 in r0,91-32
+ 570 000a 0F92 push r0
+ 571 000c 1124 clr __zero_reg__
+ 572 000e 1F93 push r17
+ 573 0010 2F93 push r18
+ 574 0012 3F93 push r19
+ 575 0014 4F93 push r20
+ 576 0016 5F93 push r21
+ 577 0018 6F93 push r22
+ 578 001a 7F93 push r23
+ 579 001c 8F93 push r24
+ 580 001e 9F93 push r25
+ 581 0020 AF93 push r26
+ 582 0022 BF93 push r27
+ 583 0024 EF93 push r30
+ 584 0026 FF93 push r31
+ 585 /* prologue: Signal */
+ 586 /* frame size = 0 */
+ 587 /* stack size = 17 */
+ 588 .L__stack_usage = 17
+ 589 .LBB50:
+ 590 .LBB51:
+ 591 .LSM77:
+ 592 0028 1091 A700 lds r17,167
+ 593 002c 1770 andi r17,lo8(7)
+ 594 .LVL22:
+ 595 .LBE51:
+ 596 .LBE50:
+ 597 .LBB52:
+ 598 .LBB53:
+ 599 .LSM78:
+ 600 002e 81E0 ldi r24,lo8(1)
+ 601 0030 8093 A700 sts 167,r24
+ 602 .LBE53:
+ 603 .LBE52:
+ 604 .LBB54:
+ 605 .LBB55:
+ 606 .LSM79:
+ 607 0034 8091 A900 lds r24,169
+ 608 0038 8F7B andi r24,lo8(-65)
+ 609 003a 8093 A900 sts 169,r24
+ 610 .LBE55:
+ 611 .LBE54:
+ 612 .LBB56:
+ 613 .LBB57:
+ 614 .LSM80:
+ 615 003e 8091 A600 lds r24,166
+ 616 .LBE57:
+ 617 .LBE56:
+ 618 .LSM81:
+ 619 0042 80FF sbrs r24,0
+ 620 0044 00C0 rjmp .L27
+ 621 .LBB58:
+ 622 .LBB59:
+ 623 .LBB60:
+ 624 .LSM82:
+ 625 0046 8091 AF00 lds r24,175
+ 626 .LSM83:
+ 627 004a 4091 AF00 lds r20,175
+ 628 .LVL23:
+ 629 .LBE60:
+ 630 .LBE59:
+ 631 .LBB61:
+ 632 .LBB62:
+ 633 .LSM84:
+ 634 004e 8091 A600 lds r24,166
+ 635 .LBE62:
+ 636 .LBE61:
+ 637 .LSM85:
+ 638 0052 85FD sbrc r24,5
+ 639 0054 00C0 rjmp .L28
+ 640 .LBB63:
+ 641 .LBB64:
+ 642 .LSM86:
+ 643 0056 8091 A600 lds r24,166
+ 644 005a 8E77 andi r24,lo8(126)
+ 645 005c 8093 A600 sts 166,r24
+ 646 .L28:
+ 647 .LBE64:
+ 648 .LBE63:
+ 649 .LSM87:
+ 650 0060 842F mov r24,r20
+ 651 0062 9927 clr r25
+ 652 0064 87FD sbrc r24,7
+ 653 0066 9095 com r25
+ 654 0068 20E8 ldi r18,lo8(128)
+ 655 006a 30E0 ldi r19,hi8(128)
+ 656 006c 8227 eor r24,r18
+ 657 006e 9327 eor r25,r19
+ 658 0070 9093 9900 sts 152+1,r25
+ 659 0074 8093 9800 sts 152,r24
+ 660 .LVL24:
+ 661 .LSM88:
+ 662 0078 4131 cpi r20,lo8(17)
+ 663 007a 04F4 brge .L30
+ 664 .LSM89:
+ 665 007c 4930 cpi r20,lo8(9)
+ 666 007e 04F4 brge .L31
+ 667 .LSM90:
+ 668 0080 4530 cpi r20,lo8(5)
+ 669 0082 04F4 brge .L32
+ 670 .LSM91:
+ 671 0084 4330 cpi r20,lo8(3)
+ 672 0086 04F4 brge .L33
+ 673 .LSM92:
+ 674 0088 80E0 ldi r24,lo8(0)
+ 675 008a 00C0 rjmp .L29
+ 676 .L30:
+ 677 .LSM93:
+ 678 008c 80EF ldi r24,lo8(-16)
+ 679 008e 00C0 rjmp .L29
+ 680 .L31:
+ 681 .LSM94:
+ 682 0090 80EB ldi r24,lo8(-80)
+ 683 0092 00C0 rjmp .L29
+ 684 .L32:
+ 685 .LSM95:
+ 686 0094 80E3 ldi r24,lo8(48)
+ 687 0096 00C0 rjmp .L29
+ 688 .L33:
+ 689 .LSM96:
+ 690 0098 80E1 ldi r24,lo8(16)
+ 691 .L29:
+ 692 .LVL25:
+ 693 .LSM97:
+ 694 009a 0E94 0000 call LEDs_SetAllLEDs
+ 695 .LVL26:
+ 696 .L27:
+ 697 .LBE58:
+ 698 .LBB65:
+ 699 .LBB66:
+ 700 .LSM98:
+ 701 009e 8091 A900 lds r24,169
+ 702 00a2 8064 ori r24,lo8(64)
+ 703 00a4 8093 A900 sts 169,r24
+ 704 .LVL27:
+ 705 .LBE66:
+ 706 .LBE65:
+ 707 .LBB67:
+ 708 .LBB68:
+ 709 .LSM99:
+ 710 00a8 1093 A700 sts 167,r17
+ 711 /* epilogue start */
+ 712 .LBE68:
+ 713 .LBE67:
+ 714 .LSM100:
+ 715 00ac FF91 pop r31
+ 716 00ae EF91 pop r30
+ 717 00b0 BF91 pop r27
+ 718 00b2 AF91 pop r26
+ 719 00b4 9F91 pop r25
+ 720 00b6 8F91 pop r24
+ 721 00b8 7F91 pop r23
+ 722 00ba 6F91 pop r22
+ 723 00bc 5F91 pop r21
+ 724 00be 4F91 pop r20
+ 725 00c0 3F91 pop r19
+ 726 00c2 2F91 pop r18
+ 727 00c4 1F91 pop r17
+ 728 .LVL28:
+ 729 00c6 0F90 pop r0
+ 730 00c8 0BBE out 91-32,r0
+ 731 00ca 0F90 pop r0
+ 732 00cc 0FBE out __SREG__,r0
+ 733 00ce 0F90 pop r0
+ 734 00d0 1F90 pop __zero_reg__
+ 735 00d2 1895 reti
+ 736 .LFE139:
+ 738 .section .progmem.data,"a",@progbits
+ 741 __c.3939:
+ 742 0000 4D69 6372 .string "Microphone Enumerated.\r\n"
+ 742 6F70 686F
+ 742 6E65 2045
+ 742 6E75 6D65
+ 742 7261 7465
+ 745 __c.3935:
+ 746 0019 1B5B 3331 .ascii "\033[31mCould not set alt"
+ 746 6D43 6F75
+ 746 6C64 206E
+ 746 6F74 2073
+ 746 6574 2061
+ 747 002f 6572 6E61 .string "ernative streaming interface setting.\r\n -- Error Code: %d\r\n\033[37m"
+ 747 7469 7665
+ 747 2073 7472
+ 747 6561 6D69
+ 747 6E67 2069
+ 750 __c.3933:
+ 751 0070 1B5B .ascii "\033["
+ 752 0072 3331 6D43 .string "31mControl Error (Set Configuration).\r\n -- Error Code: %d\r\n\033[37m"
+ 752 6F6E 7472
+ 752 6F6C 2045
+ 752 7272 6F72
+ 752 2028 5365
+ 755 __c.3930:
+ 756 00b3 202D 2D20 .string " -- Error Code: %d\r\n\033[37m"
+ 756 4572 726F
+ 756 7220 436F
+ 756 6465 3A20
+ 756 2564 0D0A
+ 759 __c.3928:
+ 760 00cd 1B5B 3331 .string "\033[31mInvalid Device.\r\n"
+ 760 6D49 6E76
+ 760 616C 6964
+ 760 2044 6576
+ 760 6963 652E
+ 763 __c.3926:
+ 764 00e4 1B5B 3331 .string "\033[31mControl Error (Get Configuration).\r\n"
+ 764 6D43 6F6E
+ 764 7472 6F6C
+ 764 2045 7272
+ 764 6F72 2028
+ 767 __c.3924:
+ 768 010e 4765 7474 .string "Getting Config Data.\r\n"
+ 768 696E 6720
+ 768 436F 6E66
+ 768 6967 2044
+ 768 6174 612E
+ 769 .data
+ 772 C.5.5024:
+ 773 0000 80 .byte -128
+ 774 0001 BB .byte -69
+ 775 0002 00 .byte 0
+ 776 .section .progmem.data
+ 779 __c.3917:
+ 780 0125 1B5B 3331 .ascii "\033[31mDev Enum Error\r\n"
+ 780 6D44 6576
+ 780 2045 6E75
+ 780 6D20 4572
+ 780 726F 720D
+ 781 013a 202D 2D20 .string " -- Error Code %d\r\n -- Sub Error Code %d\r\n -- In State %d\r\n\033[37m"
+ 781 4572 726F
+ 781 7220 436F
+ 781 6465 2025
+ 781 640D 0A20
+ 784 __c.3910:
+ 785 017b 1B5B 3331 .string "\033[31mHost Mode Error\r\n -- Error Code %d\r\n\033[37m"
+ 785 6D48 6F73
+ 785 7420 4D6F
+ 785 6465 2045
+ 785 7272 6F72
+ 788 __c.3902:
+ 789 01aa 1B5B 3332 .string "\033[32mDevice Unattached.\r\n\033[37m"
+ 789 6D44 6576
+ 789 6963 6520
+ 789 556E 6174
+ 789 7461 6368
+ 792 __c.3897:
+ 793 01c9 1B5B 3332 .string "\033[32mDevice Attached.\r\n\033[37m"
+ 793 6D44 6576
+ 793 6963 6520
+ 793 4174 7461
+ 793 6368 6564
+ 796 __c.3888:
+ 797 01e6 1B5B 3336 .string "\033[36mAudio Host Demo running.\r\n\033[37m"
+ 797 6D41 7564
+ 797 696F 2048
+ 797 6F73 7420
+ 797 4465 6D6F
+ 894 .Letext0:
+DEFINED SYMBOLS
+ *ABS*:00000000 AudioInputHost.c
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:2 *ABS*:0000003f __SREG__
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:3 *ABS*:0000003e __SP_H__
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:4 *ABS*:0000003d __SP_L__
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:5 *ABS*:00000034 __CCP__
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:6 *ABS*:00000000 __tmp_reg__
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:7 *ABS*:00000001 __zero_reg__
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:18 .text.LEDs_SetAllLEDs:00000000 LEDs_SetAllLEDs
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:39 .text.SetupHardware:00000000 SetupHardware
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:151 .text.EVENT_USB_Host_DeviceAttached:00000000 EVENT_USB_Host_DeviceAttached
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:792 .progmem.data:000001c9 __c.3897
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:173 .text.EVENT_USB_Host_DeviceUnattached:00000000 EVENT_USB_Host_DeviceUnattached
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:788 .progmem.data:000001aa __c.3902
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:195 .text.EVENT_USB_Host_DeviceEnumerationComplete:00000000 EVENT_USB_Host_DeviceEnumerationComplete
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:213 .text.EVENT_USB_Host_HostError:00000000 EVENT_USB_Host_HostError
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:784 .progmem.data:0000017b __c.3910
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:262 .text.EVENT_USB_Host_DeviceEnumerationFailed:00000000 EVENT_USB_Host_DeviceEnumerationFailed
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:779 .progmem.data:00000125 __c.3917
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:320 .text.Audio_Task:00000000 Audio_Task
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:767 .progmem.data:0000010e __c.3924
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:763 .progmem.data:000000e4 __c.3926
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:759 .progmem.data:000000cd __c.3928
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:755 .progmem.data:000000b3 __c.3930
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:750 .progmem.data:00000070 __c.3933
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:745 .progmem.data:00000019 __c.3935
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:772 .data:00000000 C.5.5024
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:741 .progmem.data:00000000 __c.3939
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:529 .text.main:00000000 main
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:796 .progmem.data:000001e6 __c.3888
+C:\Users\Dean\AppData\Local\Temp\ccMWbd5S.s:562 .text.__vector_21:00000000 __vector_21
+
+UNDEFINED SYMBOLS
+USB_Init
+USARTSerialStream
+__iob
+Serial_putchar
+Serial_getchar
+puts_P
+USB_Disable
+printf_P
+USB_HostState
+ProcessConfigurationDescriptor
+USB_Host_SetDeviceConfiguration
+StreamingInterfaceIndex
+StreamingInterfaceAltSetting
+USB_Host_SetInterfaceAltSetting
+StreamingEndpointAddress
+USB_ControlRequest
+USB_Host_SendControlRequest
+USB_USBTask
+__do_copy_data
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map
new file mode 100644
index 000000000..189341a7d
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.map
@@ -0,0 +1,1169 @@
+Archive member included because of file (symbol)
+
+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)
+ 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)
+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)
+ AudioInputHost.o (__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(_clear_bss.o)
+ ConfigDescriptor.o (__do_clear_bss)
+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)
+ AudioInputHost.o (__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(printf_p.o)
+ AudioInputHost.o (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(puts_p.o)
+ AudioInputHost.o (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(vfprintf_std.o)
+ 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)
+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)
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__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(eeupd_byte_at90usb1287.o)
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o (__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(strnlen_P.o)
+ 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)
+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)
+ 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)
+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)
+ 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)
+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)
+ 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)
+
+Allocating common symbols
+Common symbol size file
+
+USB_IsInitialized 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+USARTSerialStream 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+USB_ControlRequest 0x8 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+USB_HostState 0x1 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+__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)
+
+Discarded input sections
+
+ .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
+ .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
+ .text 0x00000000 0x0 AudioInputHost.o
+ .bss 0x00000000 0x0 AudioInputHost.o
+ .text 0x00000000 0x0 ConfigDescriptor.o
+ .data 0x00000000 0x0 ConfigDescriptor.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .text.USB_Host_GetDeviceDescriptor
+ 0x00000000 0x1c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .text.USB_Host_GetDeviceStringDescriptor
+ 0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .text.USB_Host_ClearPipeStall
+ 0x00000000 0x32 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .text.Pipe_IsEndpointBound
+ 0x00000000 0x5c ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .text.Pipe_WaitUntilReady
+ 0x00000000 0x5e ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Discard_Stream
+ 0x00000000 0x9a ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Null_Stream
+ 0x00000000 0x9e ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Write_Stream_LE
+ 0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Write_Stream_BE
+ 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Read_Stream_LE
+ 0x00000000 0xca ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Read_Stream_BE
+ 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Write_PStream_LE
+ 0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Write_PStream_BE
+ 0x00000000 0xba ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Write_EStream_LE
+ 0x00000000 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Write_EStream_BE
+ 0x00000000 0xbc ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Read_EStream_LE
+ 0x00000000 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text.Pipe_Read_EStream_BE
+ 0x00000000 0xbe ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .text.USB_GetNextDescriptorOfType
+ 0x00000000 0x4c ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .text.USB_GetNextDescriptorOfTypeBefore
+ 0x00000000 0x56 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .text.USB_GetNextDescriptorOfTypeAfter
+ 0x00000000 0x34 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .text.USB_ProcessHIDReport
+ 0x00000000 0x766 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .text.USB_GetHIDReportItemInfo
+ 0x00000000 0xb6 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .text.USB_SetHIDReportItemInfo
+ 0x00000000 0xc2 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .text.USB_GetHIDReportSize
+ 0x00000000 0x58 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .text 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .data 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .bss 0x00000000 0x0 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .text.Serial_getchar_Blocking
+ 0x00000000 0x20 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .text.Serial_SendString_P
+ 0x00000000 0x1a ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .text.Serial_SendString
+ 0x00000000 0x1c ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .text.Serial_SendData
+ 0x00000000 0x1e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .text.avr-libc
+ 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)
+ .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)
+ .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)
+ .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)
+ .text.avr-libc
+ 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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+
+Memory Configuration
+
+Name Origin Length Attributes
+text 0x00000000 0x00020000 xr
+data 0x00800100 0x0000ff00 rw !x
+eeprom 0x00810000 0x00010000 rw !x
+fuse 0x00820000 0x00000400 rw !x
+lock 0x00830000 0x00000400 rw !x
+signature 0x00840000 0x00000400 rw !x
+*default* 0x00000000 0xffffffff
+
+Linker script and memory map
+
+Address of section .data set to 0x800100
+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
+LOAD AudioInputHost.o
+LOAD ConfigDescriptor.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+LOAD ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+LOAD ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+LOAD ../../../../LUFA/Drivers/USB/Core/Events.o
+LOAD ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+LOAD ../../../../LUFA/Drivers/USB/Core/USBTask.o
+LOAD ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+LOAD ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+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
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a
+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
+LOAD c:/program files (x86)/atmel/avr studio 5.0/extensions/application/avr toolchain/bin/../lib/gcc/avr/4.5.1/avr51\libgcc.a
+
+.hash
+ *(.hash)
+
+.dynsym
+ *(.dynsym)
+
+.dynstr
+ *(.dynstr)
+
+.gnu.version
+ *(.gnu.version)
+
+.gnu.version_d
+ *(.gnu.version_d)
+
+.gnu.version_r
+ *(.gnu.version_r)
+
+.rel.init
+ *(.rel.init)
+
+.rela.init
+ *(.rela.init)
+
+.rel.text
+ *(.rel.text)
+ *(.rel.text.*)
+ *(.rel.gnu.linkonce.t*)
+
+.rela.text
+ *(.rela.text)
+ *(.rela.text.*)
+ *(.rela.gnu.linkonce.t*)
+
+.rel.fini
+ *(.rel.fini)
+
+.rela.fini
+ *(.rela.fini)
+
+.rel.rodata
+ *(.rel.rodata)
+ *(.rel.rodata.*)
+ *(.rel.gnu.linkonce.r*)
+
+.rela.rodata
+ *(.rela.rodata)
+ *(.rela.rodata.*)
+ *(.rela.gnu.linkonce.r*)
+
+.rel.data
+ *(.rel.data)
+ *(.rel.data.*)
+ *(.rel.gnu.linkonce.d*)
+
+.rela.data
+ *(.rela.data)
+ *(.rela.data.*)
+ *(.rela.gnu.linkonce.d*)
+
+.rel.ctors
+ *(.rel.ctors)
+
+.rela.ctors
+ *(.rela.ctors)
+
+.rel.dtors
+ *(.rel.dtors)
+
+.rela.dtors
+ *(.rela.dtors)
+
+.rel.got
+ *(.rel.got)
+
+.rela.got
+ *(.rela.got)
+
+.rel.bss
+ *(.rel.bss)
+
+.rela.bss
+ *(.rela.bss)
+
+.rel.plt
+ *(.rel.plt)
+
+.rela.plt
+ *(.rela.plt)
+
+.text 0x00000000 0x18fa
+ *(.vectors)
+ .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
+ 0x00000000 __vector_default
+ 0x00000000 __vectors
+ *(.vectors)
+ *(.progmem.gcc*)
+ *(.progmem*)
+ .progmem.data 0x00000098 0x20b AudioInputHost.o
+ 0x000002a4 . = ALIGN (0x2)
+ *fill* 0x000002a3 0x1 00
+ 0x000002a4 __trampolines_start = .
+ *(.trampolines)
+ .trampolines 0x000002a4 0x0 linker stubs
+ *(.trampolines*)
+ 0x000002a4 __trampolines_end = .
+ *(.jumptables)
+ *(.jumptables*)
+ *(.lowtext)
+ *(.lowtext*)
+ 0x000002a4 __ctors_start = .
+ *(.ctors)
+ 0x000002a4 __ctors_end = .
+ 0x000002a4 __dtors_start = .
+ *(.dtors)
+ 0x000002a4 __dtors_end = .
+ SORT(*)(.ctors)
+ SORT(*)(.dtors)
+ *(.init0)
+ .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
+ 0x000002a4 __init
+ *(.init0)
+ *(.init1)
+ *(.init1)
+ *(.init2)
+ .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
+ *(.init2)
+ *(.init3)
+ *(.init3)
+ *(.init4)
+ .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)
+ 0x000002b0 __do_copy_data
+ .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)
+ 0x000002ca __do_clear_bss
+ *(.init4)
+ *(.init5)
+ *(.init5)
+ *(.init6)
+ *(.init6)
+ *(.init7)
+ *(.init7)
+ *(.init8)
+ *(.init8)
+ *(.init9)
+ .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
+ *(.init9)
+ *(.text)
+ .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
+ 0x000002e0 __vector_22
+ 0x000002e0 __vector_28
+ 0x000002e0 __vector_1
+ 0x000002e0 __vector_32
+ 0x000002e0 __vector_34
+ 0x000002e0 __vector_24
+ 0x000002e0 __vector_12
+ 0x000002e0 __bad_interrupt
+ 0x000002e0 __vector_6
+ 0x000002e0 __vector_31
+ 0x000002e0 __vector_35
+ 0x000002e0 __vector_3
+ 0x000002e0 __vector_23
+ 0x000002e0 __vector_30
+ 0x000002e0 __vector_25
+ 0x000002e0 __vector_11
+ 0x000002e0 __vector_13
+ 0x000002e0 __vector_17
+ 0x000002e0 __vector_19
+ 0x000002e0 __vector_7
+ 0x000002e0 __vector_27
+ 0x000002e0 __vector_5
+ 0x000002e0 __vector_33
+ 0x000002e0 __vector_37
+ 0x000002e0 __vector_4
+ 0x000002e0 __vector_9
+ 0x000002e0 __vector_2
+ 0x000002e0 __vector_15
+ 0x000002e0 __vector_36
+ 0x000002e0 __vector_29
+ 0x000002e0 __vector_8
+ 0x000002e0 __vector_26
+ 0x000002e0 __vector_14
+ 0x000002e0 __vector_16
+ 0x000002e0 __vector_18
+ 0x000002e0 __vector_20
+ 0x000002e2 . = ALIGN (0x2)
+ *(.text.*)
+ .text.LEDs_SetAllLEDs
+ 0x000002e2 0xa AudioInputHost.o
+ .text.SetupHardware
+ 0x000002ec 0x92 AudioInputHost.o
+ 0x000002ec SetupHardware
+ .text.EVENT_USB_Host_DeviceAttached
+ 0x0000037e 0xa AudioInputHost.o
+ 0x0000037e EVENT_USB_Host_DeviceAttached
+ .text.EVENT_USB_Host_DeviceUnattached
+ 0x00000388 0xa AudioInputHost.o
+ 0x00000388 EVENT_USB_Host_DeviceUnattached
+ .text.EVENT_USB_Host_DeviceEnumerationComplete
+ 0x00000392 0x4 AudioInputHost.o
+ 0x00000392 EVENT_USB_Host_DeviceEnumerationComplete
+ .text.EVENT_USB_Host_HostError
+ 0x00000396 0x3e AudioInputHost.o
+ 0x00000396 EVENT_USB_Host_HostError
+ .text.EVENT_USB_Host_DeviceEnumerationFailed
+ 0x000003d4 0x50 AudioInputHost.o
+ 0x000003d4 EVENT_USB_Host_DeviceEnumerationFailed
+ .text.Audio_Task
+ 0x00000424 0x134 AudioInputHost.o
+ 0x00000424 Audio_Task
+ .text.main 0x00000558 0x14 AudioInputHost.o
+ 0x00000558 main
+ .text.__vector_21
+ 0x0000056c 0xd2 AudioInputHost.o
+ 0x0000056c __vector_21
+ .text.DComp_NextAudioControlInterface
+ 0x0000063e 0x22 ConfigDescriptor.o
+ 0x0000063e DComp_NextAudioControlInterface
+ .text.DComp_NextAudioStreamInterface
+ 0x00000660 0x22 ConfigDescriptor.o
+ 0x00000660 DComp_NextAudioStreamInterface
+ .text.DComp_NextAudioInterfaceDataEndpoint
+ 0x00000682 0x22 ConfigDescriptor.o
+ 0x00000682 DComp_NextAudioInterfaceDataEndpoint
+ .text.ProcessConfigurationDescriptor
+ 0x000006a4 0x132 ConfigDescriptor.o
+ 0x000006a4 ProcessConfigurationDescriptor
+ .text.USB_Host_ResetDevice
+ 0x000007d6 0xa8 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .text.USB_Host_WaitMS
+ 0x0000087e 0xaa ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ 0x0000087e USB_Host_WaitMS
+ .text.USB_Host_ProcessNextHostState
+ 0x00000928 0x264 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ 0x00000928 USB_Host_ProcessNextHostState
+ .text.USB_Host_SetDeviceConfiguration
+ 0x00000b8c 0x2c ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ 0x00000b8c USB_Host_SetDeviceConfiguration
+ .text.USB_Host_SetInterfaceAltSetting
+ 0x00000bb8 0x2e ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ 0x00000bb8 USB_Host_SetInterfaceAltSetting
+ .text.Pipe_ConfigurePipe
+ 0x00000be6 0xce ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ 0x00000be6 Pipe_ConfigurePipe
+ .text.Pipe_ClearPipes
+ 0x00000cb4 0x28 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ 0x00000cb4 Pipe_ClearPipes
+ .text.USB_Disable
+ 0x00000cdc 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ 0x00000cdc USB_Disable
+ .text.USB_ResetInterface
+ 0x00000d0c 0x9c ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ 0x00000d0c USB_ResetInterface
+ .text.USB_Init
+ 0x00000da8 0x12 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ 0x00000da8 USB_Init
+ .text.USB_INT_DisableAllInterrupts
+ 0x00000dba 0x10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ 0x00000dba USB_INT_DisableAllInterrupts
+ .text.USB_INT_ClearAllInterrupts
+ 0x00000dca 0xa ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ 0x00000dca USB_INT_ClearAllInterrupts
+ .text.__vector_10
+ 0x00000dd4 0x126 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ 0x00000dd4 __vector_10
+ .text.USB_Host_GetDeviceConfigDescriptor
+ 0x00000efa 0xae ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ 0x00000efa USB_Host_GetDeviceConfigDescriptor
+ .text.USB_GetNextDescriptorComp
+ 0x00000fa8 0x86 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ 0x00000fa8 USB_GetNextDescriptorComp
+ .text.USB_Event_Stub
+ 0x0000102e 0x2 ../../../../LUFA/Drivers/USB/Core/Events.o
+ 0x0000102e EVENT_USB_Host_StartOfFrame
+ 0x0000102e USB_Event_Stub
+ .text.USB_Host_WaitForIOS
+ 0x00001030 0x52 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .text.USB_Host_SendControlRequest
+ 0x00001082 0x22c ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ 0x00001082 USB_Host_SendControlRequest
+ .text.USB_USBTask
+ 0x000012ae 0x1c ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ 0x000012ae USB_USBTask
+ .text.Serial_putchar
+ 0x000012ca 0x12 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ 0x000012ca Serial_putchar
+ .text.Serial_getchar
+ 0x000012dc 0x26 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ 0x000012dc Serial_getchar
+ .text.avr-libc
+ 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)
+ 0x00001302 printf_P
+ .text.avr-libc
+ 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)
+ 0x00001340 puts_P
+ .text.avr-libc
+ 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)
+ 0x000013b0 vfprintf
+ .text.avr-libc
+ 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)
+ 0x000017b6 strnlen_P
+ .text.avr-libc
+ 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)
+ 0x000017cc strnlen
+ .text.avr-libc
+ 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)
+ 0x000017e2 fputc
+ .text.avr-libc
+ 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)
+ 0x0000183a __ultoa_invert
+ 0x000018f6 . = ALIGN (0x2)
+ *(.fini9)
+ .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)
+ 0x000018f6 _exit
+ 0x000018f6 exit
+ *(.fini9)
+ *(.fini8)
+ *(.fini8)
+ *(.fini7)
+ *(.fini7)
+ *(.fini6)
+ *(.fini6)
+ *(.fini5)
+ *(.fini5)
+ *(.fini4)
+ *(.fini4)
+ *(.fini3)
+ *(.fini3)
+ *(.fini2)
+ *(.fini2)
+ *(.fini1)
+ *(.fini1)
+ *(.fini0)
+ .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)
+ *(.fini0)
+ 0x000018fa _etext = .
+
+.data 0x00800100 0x1c load address 0x000018fa
+ 0x00800100 PROVIDE (__data_start, .)
+ *(.data)
+ .data 0x00800100 0x3 AudioInputHost.o
+ .data 0x00800103 0x18 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .data 0x0080011b 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ 0x0080011b USB_ControlPipeSize
+ *(.data*)
+ *(.rodata)
+ *(.rodata*)
+ *(.gnu.linkonce.d*)
+ 0x0080011c . = ALIGN (0x2)
+ 0x0080011c _edata = .
+ 0x0080011c PROVIDE (__data_end, .)
+
+.bss 0x0080011c 0x24
+ 0x0080011c PROVIDE (__bss_start, .)
+ *(.bss)
+ .bss 0x0080011c 0x3 ConfigDescriptor.o
+ 0x0080011c StreamingInterfaceIndex
+ 0x0080011d StreamingInterfaceAltSetting
+ 0x0080011e StreamingEndpointAddress
+ .bss 0x0080011f 0x3 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ *(.bss*)
+ *(COMMON)
+ COMMON 0x00800122 0xa ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ 0x00800122 USB_IsInitialized
+ 0x00800123 USB_ControlRequest
+ 0x0080012b USB_HostState
+ COMMON 0x0080012c 0xe ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ 0x0080012c USARTSerialStream
+ 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)
+ 0x0080013a __iob
+ 0x00800140 PROVIDE (__bss_end, .)
+ 0x000018fa __data_load_start = LOADADDR (.data)
+ 0x00001916 __data_load_end = (__data_load_start + SIZEOF (.data))
+
+.noinit 0x00800140 0x0
+ 0x00800140 PROVIDE (__noinit_start, .)
+ *(.noinit*)
+ 0x00800140 PROVIDE (__noinit_end, .)
+ 0x00800140 _end = .
+ 0x00800140 PROVIDE (__heap_start, .)
+
+.eeprom 0x00810000 0x0
+ *(.eeprom*)
+ 0x00810000 __eeprom_end = .
+
+.fuse
+ *(.fuse)
+ *(.lfuse)
+ *(.hfuse)
+ *(.efuse)
+
+.lock
+ *(.lock*)
+
+.signature
+ *(.signature*)
+
+.stab 0x00000000 0xe28
+ *(.stab)
+ .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
+ .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)
+ 0x9c (size before relaxing)
+ .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)
+ 0x120 (size before relaxing)
+ .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)
+ 0xa8 (size before relaxing)
+ .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)
+ 0xa8 (size before relaxing)
+ .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)
+ 0x48c (size before relaxing)
+
+.stabstr 0x00000000 0x26b
+ *(.stabstr)
+ .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
+
+.stab.excl
+ *(.stab.excl)
+
+.stab.exclstr
+ *(.stab.exclstr)
+
+.stab.index
+ *(.stab.index)
+
+.stab.indexstr
+ *(.stab.indexstr)
+
+.comment
+ *(.comment)
+
+.debug
+ *(.debug)
+
+.line
+ *(.line)
+
+.debug_srcinfo
+ *(.debug_srcinfo)
+
+.debug_sfnames
+ *(.debug_sfnames)
+
+.debug_aranges 0x00000000 0x3b0
+ *(.debug_aranges)
+ .debug_aranges
+ 0x00000000 0x68 AudioInputHost.o
+ .debug_aranges
+ 0x00000068 0x38 ConfigDescriptor.o
+ .debug_aranges
+ 0x000000a0 0x58 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_aranges
+ 0x000000f8 0x38 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_aranges
+ 0x00000130 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_aranges
+ 0x00000160 0x30 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_aranges
+ 0x00000190 0x78 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_aranges
+ 0x00000208 0x40 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_aranges
+ 0x00000248 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_aranges
+ 0x00000268 0x28 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_aranges
+ 0x00000290 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_aranges
+ 0x000002b0 0x38 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_aranges
+ 0x000002e8 0x48 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .debug_aranges
+ 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)
+ .debug_aranges
+ 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)
+ .debug_aranges
+ 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)
+ .debug_aranges
+ 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)
+
+.debug_pubnames
+ 0x00000000 0x89a
+ *(.debug_pubnames)
+ .debug_pubnames
+ 0x00000000 0x107 AudioInputHost.o
+ .debug_pubnames
+ 0x00000107 0xff ConfigDescriptor.o
+ .debug_pubnames
+ 0x00000206 0xf4 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_pubnames
+ 0x000002fa 0x86 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_pubnames
+ 0x00000380 0x46 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_pubnames
+ 0x000003c6 0x62 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_pubnames
+ 0x00000428 0x13b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_pubnames
+ 0x00000563 0xc2 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_pubnames
+ 0x00000625 0x25 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_pubnames
+ 0x0000064a 0x32 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_pubnames
+ 0x0000067c 0x61 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_pubnames
+ 0x000006dd 0x7e ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_pubnames
+ 0x0000075b 0xac ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .debug_pubnames
+ 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)
+ .debug_pubnames
+ 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)
+ .debug_pubnames
+ 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)
+ .debug_pubnames
+ 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)
+ .debug_pubnames
+ 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)
+
+.debug_info 0x00000000 0x56c7
+ *(.debug_info)
+ .debug_info 0x00000000 0x81f AudioInputHost.o
+ .debug_info 0x0000081f 0x5dd ConfigDescriptor.o
+ .debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_info 0x00000dfc 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_info 0x00000dfc 0xc19 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_info 0x00001a15 0x5b1 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_info 0x00001fc6 0x409 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_info 0x000023cf 0x495 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_info 0x00002864 0x0 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_info 0x00002864 0xac6 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_info 0x0000332a 0x642 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_info 0x0000396c 0x0 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_info 0x0000396c 0x85 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_info 0x000039f1 0x62a ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_info 0x0000401b 0x1e8 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_info 0x00004203 0x6f9 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_info 0x000048fc 0x413 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+ *(.gnu.linkonce.wi.*)
+
+.debug_abbrev 0x00000000 0x1b65
+ *(.debug_abbrev)
+ .debug_abbrev 0x00000000 0x334 AudioInputHost.o
+ .debug_abbrev 0x00000334 0x185 ConfigDescriptor.o
+ .debug_abbrev 0x000004b9 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_abbrev 0x000004ba 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_abbrev 0x000004bb 0x2f6 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_abbrev 0x000007b1 0x1d9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_abbrev 0x0000098a 0x14d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_abbrev 0x00000ad7 0x12a ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_abbrev 0x00000c01 0x1 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_abbrev 0x00000c02 0x164 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_abbrev 0x00000d66 0x1ca ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_abbrev 0x00000f30 0x1 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_abbrev 0x00000f31 0x41 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_abbrev 0x00000f72 0x1ea ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_abbrev 0x0000115c 0x11a ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_abbrev 0x00001276 0x1ec ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_abbrev 0x00001462 0x1d1 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+
+.debug_line 0x00000000 0x53bf
+ *(.debug_line)
+ .debug_line 0x00000000 0x725 AudioInputHost.o
+ .debug_line 0x00000725 0x3df ConfigDescriptor.o
+ .debug_line 0x00000b04 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Device_AVR8.o
+ .debug_line 0x00000b28 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.o
+ .debug_line 0x00000b4c 0xa69 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_line 0x000015b5 0x5f9 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_line 0x00001bae 0x3f1 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_line 0x00001f9f 0x464 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_line 0x00002403 0x24 ../../../../LUFA/Drivers/USB/Core/AVR8/EndpointStream_AVR8.o
+ .debug_line 0x00002427 0xcf7 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_line 0x0000311e 0x3e3 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_line 0x00003501 0x24 ../../../../LUFA/Drivers/USB/Core/DeviceStandardReq.o
+ .debug_line 0x00003525 0x86 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_line 0x000035ab 0x5f5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_line 0x00003ba0 0x1e4 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_line 0x00003d84 0x7b0 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_line 0x00004534 0x326 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .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)
+ .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)
+ .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)
+ .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)
+ .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)
+
+.debug_frame 0x00000000 0x540
+ *(.debug_frame)
+ .debug_frame 0x00000000 0xb0 AudioInputHost.o
+ .debug_frame 0x000000b0 0x50 ConfigDescriptor.o
+ .debug_frame 0x00000100 0x90 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_frame 0x00000190 0x50 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_frame 0x000001e0 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_frame 0x00000220 0x40 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_frame 0x00000260 0xd0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_frame 0x00000330 0x60 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_frame 0x00000390 0x20 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_frame 0x000003b0 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_frame 0x000003e0 0x20 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_frame 0x00000400 0x50 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_frame 0x00000450 0x70 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .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)
+ .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)
+ .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)
+ .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)
+
+.debug_str 0x00000000 0x26bf
+ *(.debug_str)
+ .debug_str 0x00000000 0x830 AudioInputHost.o
+ 0x8aa (size before relaxing)
+ .debug_str 0x00000830 0x53e ConfigDescriptor.o
+ 0x7d0 (size before relaxing)
+ .debug_str 0x00000d6e 0x6cc ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ 0xbc8 (size before relaxing)
+ .debug_str 0x0000143a 0x269 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ 0x5b7 (size before relaxing)
+ .debug_str 0x000016a3 0x16d ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ 0x516 (size before relaxing)
+ .debug_str 0x00001810 0xaf ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ 0x4f5 (size before relaxing)
+ .debug_str 0x000018bf 0x260 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ 0x3a4 (size before relaxing)
+ .debug_str 0x00001b1f 0x234 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ 0x81e (size before relaxing)
+ .debug_str 0x00001d53 0x3a ../../../../LUFA/Drivers/USB/Core/Events.o
+ 0x11f (size before relaxing)
+ .debug_str 0x00001d8d 0x15b ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ 0x519 (size before relaxing)
+ .debug_str 0x00001ee8 0x45 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ 0x1ee (size before relaxing)
+ .debug_str 0x00001f2d 0x487 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ 0x60d (size before relaxing)
+ .debug_str 0x000023b4 0xfd ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ 0x26d (size before relaxing)
+ .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)
+ 0xef (size before relaxing)
+ .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)
+ 0x126 (size before relaxing)
+ .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)
+ 0x120 (size before relaxing)
+ .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)
+ 0x174 (size before relaxing)
+ .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)
+ 0xf8 (size before relaxing)
+
+.debug_loc 0x00000000 0x3422
+ *(.debug_loc)
+ .debug_loc 0x00000000 0xff AudioInputHost.o
+ .debug_loc 0x000000ff 0x280 ConfigDescriptor.o
+ .debug_loc 0x0000037f 0x3de ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_loc 0x0000075d 0x400 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_loc 0x00000b5d 0x13 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_loc 0x00000b70 0x118 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_loc 0x00000c88 0xfe0 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_loc 0x00001c68 0x365 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_loc 0x00001fcd 0x2c5 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_loc 0x00002292 0x1f ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_loc 0x000022b1 0x832 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_loc 0x00002ae3 0x15e ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .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)
+ .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)
+ .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)
+
+.debug_macinfo
+ *(.debug_macinfo)
+OUTPUT(AudioInputHost.elf elf32-avr)
+LOAD linker stubs
+
+.debug_pubtypes
+ 0x00000000 0xa86
+ .debug_pubtypes
+ 0x00000000 0x117 AudioInputHost.o
+ .debug_pubtypes
+ 0x00000117 0x179 ConfigDescriptor.o
+ .debug_pubtypes
+ 0x00000290 0x146 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_pubtypes
+ 0x000003d6 0x66 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_pubtypes
+ 0x0000043c 0x59 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_pubtypes
+ 0x00000495 0x88 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_pubtypes
+ 0x0000051d 0x4b ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_pubtypes
+ 0x00000568 0x17e ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_pubtypes
+ 0x000006e6 0x12 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_pubtypes
+ 0x000006f8 0xa0 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_pubtypes
+ 0x00000798 0x44 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_pubtypes
+ 0x000007dc 0x145 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_pubtypes
+ 0x00000921 0x42 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .debug_pubtypes
+ 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)
+ .debug_pubtypes
+ 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)
+ .debug_pubtypes
+ 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)
+ .debug_pubtypes
+ 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)
+ .debug_pubtypes
+ 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)
+
+.debug_ranges 0x00000000 0x490
+ .debug_ranges 0x00000000 0x58 AudioInputHost.o
+ .debug_ranges 0x00000058 0x58 ConfigDescriptor.o
+ .debug_ranges 0x000000b0 0x60 ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ .debug_ranges 0x00000110 0xb0 ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ .debug_ranges 0x000001c0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ .debug_ranges 0x000001e0 0x20 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ .debug_ranges 0x00000200 0x68 ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ .debug_ranges 0x00000268 0x30 ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ .debug_ranges 0x00000298 0x10 ../../../../LUFA/Drivers/USB/Core/Events.o
+ .debug_ranges 0x000002a8 0x30 ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ .debug_ranges 0x000002d8 0x10 ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ .debug_ranges 0x000002e8 0x100 ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+ .debug_ranges 0x000003e8 0x50 ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ .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)
+ .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)
+ .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)
+ .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)
+
+Cross Reference Table
+
+Symbol File
+Audio_Task AudioInputHost.o
+CALLBACK_HIDParser_FilterHIDReportItem ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+DComp_NextAudioControlInterface ConfigDescriptor.o
+DComp_NextAudioInterfaceDataEndpoint ConfigDescriptor.o
+DComp_NextAudioStreamInterface ConfigDescriptor.o
+EVENT_USB_Host_DeviceAttached AudioInputHost.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+EVENT_USB_Host_DeviceEnumerationComplete AudioInputHost.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+EVENT_USB_Host_DeviceEnumerationFailed AudioInputHost.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+EVENT_USB_Host_DeviceUnattached AudioInputHost.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+EVENT_USB_Host_HostError AudioInputHost.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+EVENT_USB_Host_StartOfFrame ../../../../LUFA/Drivers/USB/Core/Events.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+Pipe_ClearPipes ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+Pipe_ConfigurePipe ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ ConfigDescriptor.o
+Pipe_Discard_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_IsEndpointBound ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+Pipe_Null_Stream ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Read_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Read_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Read_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Read_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_WaitUntilReady ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Write_EStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Write_EStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Write_PStream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Write_PStream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Write_Stream_BE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+Pipe_Write_Stream_LE ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ProcessConfigurationDescriptor ConfigDescriptor.o
+ AudioInputHost.o
+Serial_SendData ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+Serial_SendString ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+Serial_SendString_P ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+Serial_getchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ AudioInputHost.o
+Serial_getchar_Blocking ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+Serial_putchar ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ AudioInputHost.o
+SetupHardware AudioInputHost.o
+StreamingEndpointAddress ConfigDescriptor.o
+ AudioInputHost.o
+StreamingInterfaceAltSetting ConfigDescriptor.o
+ AudioInputHost.o
+StreamingInterfaceIndex ConfigDescriptor.o
+ AudioInputHost.o
+USARTSerialStream ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ AudioInputHost.o
+USB_ControlPipeSize ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+USB_ControlRequest ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ AudioInputHost.o
+USB_Disable ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ AudioInputHost.o
+USB_Event_Stub ../../../../LUFA/Drivers/USB/Core/Events.o
+USB_GetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+USB_GetHIDReportSize ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+USB_GetNextDescriptorComp ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ ConfigDescriptor.o
+USB_GetNextDescriptorOfType ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+USB_GetNextDescriptorOfTypeAfter ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+USB_GetNextDescriptorOfTypeBefore ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+USB_HostState ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ AudioInputHost.o
+USB_Host_ClearPipeStall ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+USB_Host_GetDeviceConfigDescriptor ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ ConfigDescriptor.o
+USB_Host_GetDeviceDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+USB_Host_GetDeviceStringDescriptor ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+USB_Host_ProcessNextHostState ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/USBTask.o
+USB_Host_SendControlRequest ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+ ../../../../LUFA/Drivers/USB/Core/ConfigDescriptor.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ AudioInputHost.o
+USB_Host_SetDeviceConfiguration ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ AudioInputHost.o
+USB_Host_SetInterfaceAltSetting ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ AudioInputHost.o
+USB_Host_WaitMS ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/HostStandardReq.o
+USB_INT_ClearAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+USB_INT_DisableAllInterrupts ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+USB_Init ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ AudioInputHost.o
+USB_IsInitialized ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+USB_ProcessHIDReport ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+USB_ResetInterface ../../../../LUFA/Drivers/USB/Core/AVR8/USBController_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+USB_SetHIDReportItemInfo ../../../../LUFA/Drivers/USB/Class/Common/HIDParser.o
+USB_USBTask ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+ AudioInputHost.o
+__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
+__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)
+__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)
+__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)
+__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)
+__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)
+__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)
+ 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)
+ ../../../../LUFA/Drivers/Peripheral/AVR8/Serial_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/USBTask.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ ConfigDescriptor.o
+__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)
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.o
+ ../../../../LUFA/Drivers/USB/Core/AVR8/Host_AVR8.o
+ AudioInputHost.o
+__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)
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+__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)
+ ../../../../LUFA/Drivers/USB/Core/AVR8/PipeStream_AVR8.o
+__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)
+__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
+__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
+__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)
+ 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)
+ 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)
+ AudioInputHost.o
+__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
+__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)
+ 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)
+__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
+__vector_10 ../../../../LUFA/Drivers/USB/Core/AVR8/USBInterrupt_AVR8.o
+ 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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__vector_21 AudioInputHost.o
+ 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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+__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
+_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)
+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)
+ 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
+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)
+ 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)
+main AudioInputHost.o
+ 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
+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)
+ AudioInputHost.o
+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)
+ AudioInputHost.o
+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)
+ 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 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)
+ 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)
+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)
+ 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)
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.o b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.o
new file mode 100644
index 000000000..f8bafd3d1
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.o
Binary files differ
diff --git a/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym
new file mode 100644
index 000000000..498ebbca4
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/AudioInputHost.sym
@@ -0,0 +1,267 @@
+ U CALLBACK_HIDParser_FilterHIDReportItem
+00000000 W __heap_end
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 a __tmp_reg__
+00000000 W __vector_default
+00000000 T __vectors
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000001 a __zero_reg__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003d a __SP_L__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003e a __SP_H__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+0000003f a __SREG__
+00000098 t __c.3939
+000000b1 t __c.3935
+00000108 t __c.3933
+0000014b t __c.3930
+00000165 t __c.3928
+0000017c t __c.3926
+000001a6 t __c.3924
+000001bd t __c.3917
+00000213 t __c.3910
+00000242 t __c.3902
+00000261 t __c.3897
+0000027e t __c.3888
+000002a4 T __ctors_end
+000002a4 T __ctors_start
+000002a4 T __dtors_end
+000002a4 T __dtors_start
+000002a4 W __init
+000002a4 T __trampolines_end
+000002a4 T __trampolines_start
+000002b0 T __do_copy_data
+000002ca T __do_clear_bss
+000002d2 t .do_clear_bss_loop
+000002d4 t .do_clear_bss_start
+000002e0 T __bad_interrupt
+000002e0 W __vector_1
+000002e0 W __vector_11
+000002e0 W __vector_12
+000002e0 W __vector_13
+000002e0 W __vector_14
+000002e0 W __vector_15
+000002e0 W __vector_16
+000002e0 W __vector_17
+000002e0 W __vector_18
+000002e0 W __vector_19
+000002e0 W __vector_2
+000002e0 W __vector_20
+000002e0 W __vector_22
+000002e0 W __vector_23
+000002e0 W __vector_24
+000002e0 W __vector_25
+000002e0 W __vector_26
+000002e0 W __vector_27
+000002e0 W __vector_28
+000002e0 W __vector_29
+000002e0 W __vector_3
+000002e0 W __vector_30
+000002e0 W __vector_31
+000002e0 W __vector_32
+000002e0 W __vector_33
+000002e0 W __vector_34
+000002e0 W __vector_35
+000002e0 W __vector_36
+000002e0 W __vector_37
+000002e0 W __vector_4
+000002e0 W __vector_5
+000002e0 W __vector_6
+000002e0 W __vector_7
+000002e0 W __vector_8
+000002e0 W __vector_9
+000002e2 t LEDs_SetAllLEDs
+000002ec T SetupHardware
+0000037e T EVENT_USB_Host_DeviceAttached
+00000388 T EVENT_USB_Host_DeviceUnattached
+00000392 T EVENT_USB_Host_DeviceEnumerationComplete
+00000396 T EVENT_USB_Host_HostError
+000003d4 T EVENT_USB_Host_DeviceEnumerationFailed
+00000424 T Audio_Task
+00000558 T main
+0000056c T __vector_21
+0000063e T DComp_NextAudioControlInterface
+00000660 T DComp_NextAudioStreamInterface
+00000682 T DComp_NextAudioInterfaceDataEndpoint
+000006a4 T ProcessConfigurationDescriptor
+000007d6 t USB_Host_ResetDevice
+0000087e T USB_Host_WaitMS
+00000928 T USB_Host_ProcessNextHostState
+00000b8c T USB_Host_SetDeviceConfiguration
+00000bb8 T USB_Host_SetInterfaceAltSetting
+00000be6 T Pipe_ConfigurePipe
+00000cb4 T Pipe_ClearPipes
+00000cdc T USB_Disable
+00000d0c T USB_ResetInterface
+00000da8 T USB_Init
+00000dba T USB_INT_DisableAllInterrupts
+00000dca T USB_INT_ClearAllInterrupts
+00000dd4 T __vector_10
+00000efa T USB_Host_GetDeviceConfigDescriptor
+00000fa8 T USB_GetNextDescriptorComp
+0000102e W EVENT_USB_Host_StartOfFrame
+0000102e T USB_Event_Stub
+00001030 t USB_Host_WaitForIOS
+00001082 T USB_Host_SendControlRequest
+000012ae T USB_USBTask
+000012ca T Serial_putchar
+000012dc T Serial_getchar
+00001302 T printf_P
+00001340 T puts_P
+000013b0 T vfprintf
+000017b6 T strnlen_P
+000017cc T strnlen
+000017e2 T fputc
+0000183a T __ultoa_invert
+000018f6 T _exit
+000018f6 W exit
+000018f8 t __stop_program
+000018fa A __data_load_start
+000018fa T _etext
+00001916 A __data_load_end
+000020ff W __stack
+00800100 d C.5.5024
+00800100 D __data_start
+00800103 d C.0.3420
+0080010b d C.10.3637
+00800113 d C.7.3627
+0080011b D USB_ControlPipeSize
+0080011c B StreamingInterfaceIndex
+0080011c B __bss_start
+0080011c D __data_end
+0080011c D _edata
+0080011d B StreamingInterfaceAltSetting
+0080011e B StreamingEndpointAddress
+0080011f b PostWaitState.2492
+00800120 b WaitMSRemaining.2491
+00800122 B USB_IsInitialized
+00800123 B USB_ControlRequest
+0080012b B USB_HostState
+0080012c B USARTSerialStream
+0080013a B __iob
+00800140 B __bss_end
+00800140 N _end
+00810000 N __eeprom_end
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c
new file mode 100644
index 000000000..d0ca91a08
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.c
@@ -0,0 +1,183 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether
+ in an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software.
+*/
+
+/** \file
+ *
+ * USB Device Configuration Descriptor processing routines, to determine the correct pipe configurations
+ * needed to communication with an attached USB device. Descriptors are special computer-readable structures
+ * which the host requests upon device enumeration, to determine the device's capabilities and functions.
+ */
+
+#include "ConfigDescriptor.h"
+
+uint8_t StreamingInterfaceIndex = 0;
+uint8_t StreamingInterfaceAltSetting = 0;
+uint8_t StreamingEndpointAddress = 0;
+
+uint8_t ProcessConfigurationDescriptor(void)
+{
+ uint8_t ConfigDescriptorData[512];
+ void* CurrConfigLocation = ConfigDescriptorData;
+ uint16_t CurrConfigBytesRem;
+
+ USB_Descriptor_Interface_t* AudioControlInterface = NULL;
+ USB_Descriptor_Interface_t* AudioStreamingInterface = NULL;
+ USB_Descriptor_Endpoint_t* DataINEndpoint = NULL;
+
+ /* Retrieve the entire configuration descriptor into the allocated buffer */
+ switch (USB_Host_GetDeviceConfigDescriptor(1, &CurrConfigBytesRem, ConfigDescriptorData, sizeof(ConfigDescriptorData)))
+ {
+ case HOST_GETCONFIG_Successful:
+ break;
+ case HOST_GETCONFIG_InvalidData:
+ return InvalidConfigDataReturned;
+ case HOST_GETCONFIG_BuffOverflow:
+ return DescriptorTooLarge;
+ default:
+ return ControlError;
+ }
+
+ while (!(DataINEndpoint))
+ {
+ if (!(AudioControlInterface) ||
+ USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ DComp_NextAudioInterfaceDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)
+ {
+ if (!(AudioControlInterface))
+ {
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)
+ {
+ /* Descriptor not found, error out */
+ return NoCompatibleInterfaceFound;
+ }
+
+ /* Save the interface in case we need to refer back to it later */
+ AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
+ }
+
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ DComp_NextAudioStreamInterface) != DESCRIPTOR_SEARCH_COMP_Found)
+ {
+ if (USB_GetNextDescriptorComp(&CurrConfigBytesRem, &CurrConfigLocation,
+ DComp_NextAudioControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)
+ {
+ /* Descriptor not found, error out */
+ return NoCompatibleInterfaceFound;
+ }
+
+ /* Save the interface in case we need to refer back to it later */
+ AudioControlInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
+ }
+
+ /* Save the interface in case we need to refer back to it later */
+ AudioStreamingInterface = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Interface_t);
+
+ /* Skip the remainder of the loop as we have not found an endpoint yet */
+ continue;
+ }
+
+ /* Retrieve the endpoint address from the endpoint descriptor */
+ USB_Descriptor_Endpoint_t* EndpointData = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_Endpoint_t);
+
+ /* If the endpoint is a IN type endpoint */
+ if (EndpointData->EndpointAddress & ENDPOINT_DESCRIPTOR_DIR_IN)
+ DataINEndpoint = EndpointData;
+ }
+
+ StreamingInterfaceIndex = AudioStreamingInterface->InterfaceNumber;
+ StreamingInterfaceAltSetting = AudioStreamingInterface->AlternateSetting;
+ StreamingEndpointAddress = DataINEndpoint->EndpointAddress;
+
+ /* Configure the HID data IN pipe */
+ Pipe_ConfigurePipe(AUDIO_DATA_IN_PIPE, EP_TYPE_ISOCHRONOUS, PIPE_TOKEN_IN,
+ DataINEndpoint->EndpointAddress, DataINEndpoint->EndpointSize, PIPE_BANK_DOUBLE);
+
+ /* Valid data found, return success */
+ return SuccessfulConfigRead;
+}
+
+uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor)
+{
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
+ if (Header->Type == DTYPE_Interface)
+ {
+ USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
+
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
+ (Interface->SubClass == AUDIO_CSCP_ControlSubclass) &&
+ (Interface->Protocol == AUDIO_CSCP_ControlProtocol))
+ {
+ return DESCRIPTOR_SEARCH_Found;
+ }
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+}
+
+uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor)
+{
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
+ if (Header->Type == DTYPE_Interface)
+ {
+ USB_Descriptor_Interface_t* Interface = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Interface_t);
+
+ if ((Interface->Class == AUDIO_CSCP_AudioClass) &&
+ (Interface->SubClass == AUDIO_CSCP_AudioStreamingSubclass) &&
+ (Interface->Protocol == AUDIO_CSCP_StreamingProtocol))
+ {
+ return DESCRIPTOR_SEARCH_Found;
+ }
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+}
+
+uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor)
+{
+ USB_Descriptor_Header_t* Header = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Header_t);
+
+ if (Header->Type == DTYPE_Endpoint)
+ {
+ USB_Descriptor_Endpoint_t* Endpoint = DESCRIPTOR_PCAST(CurrentDescriptor, USB_Descriptor_Endpoint_t);
+
+ if ((Endpoint->Attributes & EP_TYPE_MASK) == EP_TYPE_ISOCHRONOUS)
+ return DESCRIPTOR_SEARCH_Found;
+ }
+ else if (Header->Type == DTYPE_Interface)
+ {
+ return DESCRIPTOR_SEARCH_Fail;
+ }
+
+ return DESCRIPTOR_SEARCH_NotFound;
+}
+
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.h b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.h
new file mode 100644
index 000000000..4a1cf9093
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.h
@@ -0,0 +1,72 @@
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2011.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2011 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether
+ in an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software.
+*/
+
+/** \file
+ *
+ * Header file for ConfigDescriptor.c.
+ */
+
+#ifndef _CONFIGDESCRIPTOR_H_
+#define _CONFIGDESCRIPTOR_H_
+
+ /* Includes: */
+ #include <LUFA/Drivers/USB/USB.h>
+
+ #include "AudioInputHost.h"
+
+ /* Macros: */
+ /** Pipe number for the Audio data IN pipe. */
+ #define AUDIO_DATA_IN_PIPE 1
+
+ /* Enums: */
+ /** Enum for the possible return codes of the \ref ProcessConfigurationDescriptor() function. */
+ enum KeyboardHost_GetConfigDescriptorDataCodes_t
+ {
+ SuccessfulConfigRead = 0, /**< Configuration Descriptor was processed successfully */
+ ControlError = 1, /**< A control request to the device failed to complete successfully */
+ DescriptorTooLarge = 2, /**< The device's Configuration Descriptor is too large to process */
+ InvalidConfigDataReturned = 3, /**< The device returned an invalid Configuration Descriptor */
+ NoCompatibleInterfaceFound = 4, /**< A compatible interface with the required endpoints was not found */
+ };
+
+ /* External Variables: */
+ extern uint8_t StreamingInterfaceIndex;
+ extern uint8_t StreamingInterfaceAltSetting;
+ extern uint8_t StreamingEndpointAddress;
+
+ /* Function Prototypes: */
+ uint8_t ProcessConfigurationDescriptor(void);
+
+ uint8_t DComp_NextAudioControlInterface(void* CurrentDescriptor);
+ uint8_t DComp_NextAudioStreamInterface(void* CurrentDescriptor);
+ uint8_t DComp_NextAudioInterfaceDataEndpoint(void* CurrentDescriptor);
+
+#endif
+
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst
new file mode 100644
index 000000000..9a6378629
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.lst
@@ -0,0 +1,400 @@
+ 1 .file "ConfigDescriptor.c"
+ 2 __SREG__ = 0x3f
+ 3 __SP_H__ = 0x3e
+ 4 __SP_L__ = 0x3d
+ 5 __CCP__ = 0x34
+ 6 __tmp_reg__ = 0
+ 7 __zero_reg__ = 1
+ 15 .Ltext0:
+ 16 .section .text.DComp_NextAudioControlInterface,"ax",@progbits
+ 17 .global DComp_NextAudioControlInterface
+ 19 DComp_NextAudioControlInterface:
+ 20 .LFB132:
+ 21 .LSM0:
+ 22 .LVL0:
+ 23 /* prologue: function */
+ 24 /* frame size = 0 */
+ 25 /* stack size = 0 */
+ 26 .L__stack_usage = 0
+ 27 0000 FC01 movw r30,r24
+ 28 .LVL1:
+ 29 .LSM1:
+ 30 0002 8181 ldd r24,Z+1
+ 31 .LVL2:
+ 32 0004 8430 cpi r24,lo8(4)
+ 33 0006 01F4 brne .L5
+ 34 .LVL3:
+ 35 .LBB2:
+ 36 .LSM2:
+ 37 0008 8581 ldd r24,Z+5
+ 38 000a 8130 cpi r24,lo8(1)
+ 39 000c 01F4 brne .L5
+ 40 .LSM3:
+ 41 000e 8681 ldd r24,Z+6
+ 42 0010 8130 cpi r24,lo8(1)
+ 43 0012 01F4 brne .L5
+ 44 .LSM4:
+ 45 0014 8781 ldd r24,Z+7
+ 46 0016 8823 tst r24
+ 47 0018 01F0 breq .L6
+ 48 .LVL4:
+ 49 .L5:
+ 50 .LSM5:
+ 51 001a 82E0 ldi r24,lo8(2)
+ 52 001c 0895 ret
+ 53 .LVL5:
+ 54 .L6:
+ 55 .LSM6:
+ 56 001e 80E0 ldi r24,lo8(0)
+ 57 .LBE2:
+ 58 .LSM7:
+ 59 0020 0895 ret
+ 60 .LFE132:
+ 62 .section .text.DComp_NextAudioStreamInterface,"ax",@progbits
+ 63 .global DComp_NextAudioStreamInterface
+ 65 DComp_NextAudioStreamInterface:
+ 66 .LFB133:
+ 67 .LSM8:
+ 68 .LVL6:
+ 69 /* prologue: function */
+ 70 /* frame size = 0 */
+ 71 /* stack size = 0 */
+ 72 .L__stack_usage = 0
+ 73 0000 FC01 movw r30,r24
+ 74 .LVL7:
+ 75 .LSM9:
+ 76 0002 8181 ldd r24,Z+1
+ 77 .LVL8:
+ 78 0004 8430 cpi r24,lo8(4)
+ 79 0006 01F4 brne .L11
+ 80 .LVL9:
+ 81 .LBB3:
+ 82 .LSM10:
+ 83 0008 8581 ldd r24,Z+5
+ 84 000a 8130 cpi r24,lo8(1)
+ 85 000c 01F4 brne .L11
+ 86 .LSM11:
+ 87 000e 8681 ldd r24,Z+6
+ 88 0010 8230 cpi r24,lo8(2)
+ 89 0012 01F4 brne .L11
+ 90 .LSM12:
+ 91 0014 8781 ldd r24,Z+7
+ 92 0016 8823 tst r24
+ 93 0018 01F0 breq .L12
+ 94 .LVL10:
+ 95 .L11:
+ 96 .LSM13:
+ 97 001a 82E0 ldi r24,lo8(2)
+ 98 001c 0895 ret
+ 99 .LVL11:
+ 100 .L12:
+ 101 .LSM14:
+ 102 001e 80E0 ldi r24,lo8(0)
+ 103 .LBE3:
+ 104 .LSM15:
+ 105 0020 0895 ret
+ 106 .LFE133:
+ 108 .section .text.DComp_NextAudioInterfaceDataEndpoint,"ax",@progbits
+ 109 .global DComp_NextAudioInterfaceDataEndpoint
+ 111 DComp_NextAudioInterfaceDataEndpoint:
+ 112 .LFB134:
+ 113 .LSM16:
+ 114 .LVL12:
+ 115 /* prologue: function */
+ 116 /* frame size = 0 */
+ 117 /* stack size = 0 */
+ 118 .L__stack_usage = 0
+ 119 0000 FC01 movw r30,r24
+ 120 .LVL13:
+ 121 .LSM17:
+ 122 0002 8181 ldd r24,Z+1
+ 123 .LVL14:
+ 124 0004 8530 cpi r24,lo8(5)
+ 125 0006 01F4 brne .L14
+ 126 .LVL15:
+ 127 .LBB4:
+ 128 .LSM18:
+ 129 0008 8381 ldd r24,Z+3
+ 130 000a 8370 andi r24,lo8(3)
+ 131 000c 8130 cpi r24,lo8(1)
+ 132 000e 01F4 brne .L18
+ 133 0010 00C0 rjmp .L16
+ 134 .LVL16:
+ 135 .L14:
+ 136 .LBE4:
+ 137 .LSM19:
+ 138 0012 8430 cpi r24,lo8(4)
+ 139 0014 01F0 breq .L17
+ 140 .L18:
+ 141 .LSM20:
+ 142 0016 82E0 ldi r24,lo8(2)
+ 143 0018 0895 ret
+ 144 .LVL17:
+ 145 .L16:
+ 146 .LBB5:
+ 147 .LSM21:
+ 148 001a 80E0 ldi r24,lo8(0)
+ 149 001c 0895 ret
+ 150 .LVL18:
+ 151 .L17:
+ 152 .LBE5:
+ 153 .LSM22:
+ 154 001e 81E0 ldi r24,lo8(1)
+ 155 .LSM23:
+ 156 0020 0895 ret
+ 157 .LFE134:
+ 159 .section .text.ProcessConfigurationDescriptor,"ax",@progbits
+ 160 .global ProcessConfigurationDescriptor
+ 162 ProcessConfigurationDescriptor:
+ 163 .LFB131:
+ 164 .LSM24:
+ 165 0000 AF92 push r10
+ 166 0002 BF92 push r11
+ 167 0004 CF92 push r12
+ 168 0006 DF92 push r13
+ 169 0008 EF92 push r14
+ 170 000a FF92 push r15
+ 171 000c 0F93 push r16
+ 172 000e 1F93 push r17
+ 173 0010 DF93 push r29
+ 174 0012 CF93 push r28
+ 175 0014 CDB7 in r28,__SP_L__
+ 176 0016 DEB7 in r29,__SP_H__
+ 177 0018 C450 subi r28,lo8(-(-516))
+ 178 001a D240 sbci r29,hi8(-(-516))
+ 179 001c 0FB6 in __tmp_reg__,__SREG__
+ 180 001e F894 cli
+ 181 0020 DEBF out __SP_H__,r29
+ 182 0022 0FBE out __SREG__,__tmp_reg__
+ 183 0024 CDBF out __SP_L__,r28
+ 184 /* prologue: function */
+ 185 /* frame size = 516 */
+ 186 /* stack size = 526 */
+ 187 .L__stack_usage = 526
+ 188 .LSM25:
+ 189 0026 AE01 movw r20,r28
+ 190 0028 4B5F subi r20,lo8(-(5))
+ 191 002a 5F4F sbci r21,hi8(-(5))
+ 192 002c 5A83 std Y+2,r21
+ 193 002e 4983 std Y+1,r20
+ 194 .LVL19:
+ 195 .LSM26:
+ 196 0030 23E0 ldi r18,lo8(3)
+ 197 0032 E22E mov r14,r18
+ 198 0034 F12C mov r15,__zero_reg__
+ 199 0036 EC0E add r14,r28
+ 200 0038 FD1E adc r15,r29
+ 201 003a 81E0 ldi r24,lo8(1)
+ 202 003c B701 movw r22,r14
+ 203 003e 20E0 ldi r18,lo8(512)
+ 204 0040 32E0 ldi r19,hi8(512)
+ 205 0042 0E94 0000 call USB_Host_GetDeviceConfigDescriptor
+ 206 0046 8530 cpi r24,lo8(5)
+ 207 0048 01F4 brne .+2
+ 208 004a 00C0 rjmp .L31
+ 209 004c 8630 cpi r24,lo8(6)
+ 210 004e 01F0 breq .L23
+ 211 0050 8823 tst r24
+ 212 0052 01F4 brne .L34
+ 213 0054 00E0 ldi r16,lo8(0)
+ 214 0056 10E0 ldi r17,hi8(0)
+ 215 0058 CC24 clr r12
+ 216 005a DD24 clr r13
+ 217 005c 5701 movw r10,r14
+ 218 005e 7E01 movw r14,r28
+ 219 0060 0894 sec
+ 220 0062 E11C adc r14,__zero_reg__
+ 221 0064 F11C adc r15,__zero_reg__
+ 222 0066 00C0 rjmp .L24
+ 223 .L23:
+ 224 .LSM27:
+ 225 0068 83E0 ldi r24,lo8(3)
+ 226 006a 00C0 rjmp .L22
+ 227 .L34:
+ 228 .LSM28:
+ 229 006c 81E0 ldi r24,lo8(1)
+ 230 006e 00C0 rjmp .L22
+ 231 .LVL20:
+ 232 .L30:
+ 233 .LSM29:
+ 234 0070 9C01 movw r18,r24
+ 235 0072 032F mov r16,r19
+ 236 0074 182F mov r17,r24
+ 237 .LVL21:
+ 238 .L24:
+ 239 .LBB6:
+ 240 .LSM30:
+ 241 0076 C114 cp r12,__zero_reg__
+ 242 0078 D104 cpc r13,__zero_reg__
+ 243 007a 01F0 breq .L25
+ 244 .LSM31:
+ 245 007c C501 movw r24,r10
+ 246 007e B701 movw r22,r14
+ 247 0080 40E0 ldi r20,lo8(gs(DComp_NextAudioInterfaceDataEndpoint))
+ 248 0082 50E0 ldi r21,hi8(gs(DComp_NextAudioInterfaceDataEndpoint))
+ 249 0084 0E94 0000 call USB_GetNextDescriptorComp
+ 250 .LSM32:
+ 251 0088 8823 tst r24
+ 252 008a 01F4 brne .L26
+ 253 008c 00C0 rjmp .L36
+ 254 .L25:
+ 255 .LSM33:
+ 256 008e C501 movw r24,r10
+ 257 0090 B701 movw r22,r14
+ 258 0092 40E0 ldi r20,lo8(gs(DComp_NextAudioControlInterface))
+ 259 0094 50E0 ldi r21,hi8(gs(DComp_NextAudioControlInterface))
+ 260 0096 0E94 0000 call USB_GetNextDescriptorComp
+ 261 009a 8823 tst r24
+ 262 009c 01F4 brne .L33
+ 263 .LSM34:
+ 264 009e C980 ldd r12,Y+1
+ 265 00a0 DA80 ldd r13,Y+2
+ 266 .LVL22:
+ 267 .L26:
+ 268 .LSM35:
+ 269 00a2 C501 movw r24,r10
+ 270 00a4 B701 movw r22,r14
+ 271 00a6 40E0 ldi r20,lo8(gs(DComp_NextAudioStreamInterface))
+ 272 00a8 50E0 ldi r21,hi8(gs(DComp_NextAudioStreamInterface))
+ 273 00aa 0E94 0000 call USB_GetNextDescriptorComp
+ 274 00ae 8823 tst r24
+ 275 00b0 01F0 breq .L28
+ 276 .LSM36:
+ 277 00b2 C501 movw r24,r10
+ 278 00b4 B701 movw r22,r14
+ 279 00b6 40E0 ldi r20,lo8(gs(DComp_NextAudioControlInterface))
+ 280 00b8 50E0 ldi r21,hi8(gs(DComp_NextAudioControlInterface))
+ 281 00ba 0E94 0000 call USB_GetNextDescriptorComp
+ 282 00be 8823 tst r24
+ 283 00c0 01F4 brne .L33
+ 284 .LSM37:
+ 285 00c2 C980 ldd r12,Y+1
+ 286 00c4 DA80 ldd r13,Y+2
+ 287 .LVL23:
+ 288 .L28:
+ 289 .LSM38:
+ 290 00c6 0981 ldd r16,Y+1
+ 291 00c8 1A81 ldd r17,Y+2
+ 292 .LVL24:
+ 293 .LSM39:
+ 294 00ca 00C0 rjmp .L29
+ 295 .LVL25:
+ 296 .L36:
+ 297 .LSM40:
+ 298 00cc E981 ldd r30,Y+1
+ 299 00ce FA81 ldd r31,Y+2
+ 300 .LVL26:
+ 301 .LSM41:
+ 302 00d0 8281 ldd r24,Z+2
+ 303 00d2 87FF sbrs r24,7
+ 304 00d4 00C0 rjmp .L29
+ 305 .LSM42:
+ 306 00d6 902F mov r25,r16
+ 307 00d8 812F mov r24,r17
+ 308 .LVL27:
+ 309 .LBE6:
+ 310 .LSM43:
+ 311 00da 3097 sbiw r30,0
+ 312 00dc 01F0 breq .L30
+ 313 .LSM44:
+ 314 00de D801 movw r26,r16
+ 315 00e0 1296 adiw r26,2
+ 316 00e2 8C91 ld r24,X
+ 317 00e4 1297 sbiw r26,2
+ 318 00e6 8093 0000 sts StreamingInterfaceIndex,r24
+ 319 .LSM45:
+ 320 00ea 1396 adiw r26,3
+ 321 00ec 8C91 ld r24,X
+ 322 00ee 8093 0000 sts StreamingInterfaceAltSetting,r24
+ 323 .LSM46:
+ 324 00f2 2281 ldd r18,Z+2
+ 325 00f4 2093 0000 sts StreamingEndpointAddress,r18
+ 326 .LSM47:
+ 327 00f8 0481 ldd r16,Z+4
+ 328 00fa 1581 ldd r17,Z+5
+ 329 .LVL28:
+ 330 00fc 81E0 ldi r24,lo8(1)
+ 331 00fe 61E0 ldi r22,lo8(1)
+ 332 0100 40E1 ldi r20,lo8(16)
+ 333 0102 94E0 ldi r25,lo8(4)
+ 334 0104 E92E mov r14,r25
+ 335 .LVL29:
+ 336 0106 0E94 0000 call Pipe_ConfigurePipe
+ 337 .LVL30:
+ 338 .LSM48:
+ 339 010a 80E0 ldi r24,lo8(0)
+ 340 010c 00C0 rjmp .L22
+ 341 .LVL31:
+ 342 .L31:
+ 343 .LSM49:
+ 344 010e 82E0 ldi r24,lo8(2)
+ 345 0110 00C0 rjmp .L22
+ 346 .LVL32:
+ 347 .L33:
+ 348 .LBB7:
+ 349 .LSM50:
+ 350 0112 84E0 ldi r24,lo8(4)
+ 351 .L22:
+ 352 /* epilogue start */
+ 353 .LBE7:
+ 354 .LSM51:
+ 355 0114 CC5F subi r28,lo8(-(516))
+ 356 0116 DD4F sbci r29,hi8(-(516))
+ 357 0118 0FB6 in __tmp_reg__,__SREG__
+ 358 011a F894 cli
+ 359 011c DEBF out __SP_H__,r29
+ 360 011e 0FBE out __SREG__,__tmp_reg__
+ 361 0120 CDBF out __SP_L__,r28
+ 362 0122 CF91 pop r28
+ 363 0124 DF91 pop r29
+ 364 0126 1F91 pop r17
+ 365 0128 0F91 pop r16
+ 366 012a FF90 pop r15
+ 367 012c EF90 pop r14
+ 368 012e DF90 pop r13
+ 369 0130 CF90 pop r12
+ 370 0132 BF90 pop r11
+ 371 0134 AF90 pop r10
+ 372 0136 0895 ret
+ 373 .L29:
+ 374 .LVL33:
+ 375 .LSM52:
+ 376 0138 902F mov r25,r16
+ 377 013a 812F mov r24,r17
+ 378 013c 00C0 rjmp .L30
+ 379 .LFE131:
+ 381 .global StreamingInterfaceIndex
+ 382 .global StreamingInterfaceIndex
+ 383 .section .bss
+ 386 StreamingInterfaceIndex:
+ 387 0000 00 .skip 1,0
+ 388 .global StreamingInterfaceAltSetting
+ 389 .global StreamingInterfaceAltSetting
+ 392 StreamingInterfaceAltSetting:
+ 393 0001 00 .skip 1,0
+ 394 .global StreamingEndpointAddress
+ 395 .global StreamingEndpointAddress
+ 398 StreamingEndpointAddress:
+ 399 0002 00 .skip 1,0
+ 448 .Letext0:
+DEFINED SYMBOLS
+ *ABS*:00000000 ConfigDescriptor.c
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:2 *ABS*:0000003f __SREG__
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:3 *ABS*:0000003e __SP_H__
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:4 *ABS*:0000003d __SP_L__
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:5 *ABS*:00000034 __CCP__
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:6 *ABS*:00000000 __tmp_reg__
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:7 *ABS*:00000001 __zero_reg__
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:19 .text.DComp_NextAudioControlInterface:00000000 DComp_NextAudioControlInterface
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:65 .text.DComp_NextAudioStreamInterface:00000000 DComp_NextAudioStreamInterface
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:111 .text.DComp_NextAudioInterfaceDataEndpoint:00000000 DComp_NextAudioInterfaceDataEndpoint
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:162 .text.ProcessConfigurationDescriptor:00000000 ProcessConfigurationDescriptor
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:386 .bss:00000000 StreamingInterfaceIndex
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:392 .bss:00000001 StreamingInterfaceAltSetting
+C:\Users\Dean\AppData\Local\Temp\cc2CU2Sj.s:398 .bss:00000002 StreamingEndpointAddress
+
+UNDEFINED SYMBOLS
+USB_Host_GetDeviceConfigDescriptor
+USB_GetNextDescriptorComp
+Pipe_ConfigurePipe
+__do_clear_bss
diff --git a/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o
new file mode 100644
index 000000000..8c4ba0511
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/ConfigDescriptor.o
Binary files differ
diff --git a/Demos/Host/Incomplete/AudioInputHost/makefile b/Demos/Host/Incomplete/AudioInputHost/makefile
new file mode 100644
index 000000000..6febc161d
--- /dev/null
+++ b/Demos/Host/Incomplete/AudioInputHost/makefile
@@ -0,0 +1,714 @@
+# Hey Emacs, this is a -*- makefile -*-
+#----------------------------------------------------------------------------
+# WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al.
+# >> Modified for use with the LUFA project. <<
+#
+# Released to the Public Domain
+#
+# Additional material for this makefile was written by:
+# Peter Fleury
+# Tim Henigan
+# Colin O'Flynn
+# Reiner Patommel
+# Markus Pfaff
+# Sander Pool
+# Frederik Rouleau
+# Carlos Lamas
+# Dean Camera
+# Opendous Inc.
+# Denver Gingerich
+#
+#----------------------------------------------------------------------------
+# On command line:
+#
+# make all = Make software.
+#
+# make clean = Clean out built project files.
+#
+# make coff = Convert ELF to AVR COFF.
+#
+# make extcoff = Convert ELF to AVR Extended COFF.
+#
+# make program = Download the hex file to the device, using avrdude.
+# Please customize the avrdude settings below first!
+#
+# make dfu = Download the hex file to the device, using dfu-programmer (must
+# have dfu-programmer installed).
+#
+# make flip = Download the hex file to the device, using Atmel FLIP (must
+# have Atmel FLIP installed).
+#
+# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
+# (must have dfu-programmer installed).
+#
+# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
+# (must have Atmel FLIP installed).
+#
+# make doxygen = Generate DoxyGen documentation for the project (must have
+# DoxyGen installed)
+#
+# make debug = Start either simulavr or avarice as specified for debugging,
+# with avr-gdb or avr-insight as the front end for debugging.
+#
+# make filename.s = Just compile filename.c into the assembler code only.
+#
+# make filename.i = Create a preprocessed source file for use in submitting
+# bug reports to the GCC project.
+#
+# To rebuild project do "make clean" then "make all".
+#----------------------------------------------------------------------------
+
+
+# MCU name
+MCU = at90usb1287
+
+
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+
+# Target board (see library "Board Types" documentation, NONE for projects not requiring
+# LUFA board drivers). If USER is selected, put custom board drivers in a directory called
+# "Board" inside the application directory.
+BOARD = USBKEY
+
+
+# Processor frequency.
+# This will define a symbol, F_CPU, in all source code files equal to the
+# processor frequency in Hz. You can then use this symbol in your source code to
+# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+# automatically to create a 32-bit value in your source code.
+#
+# This will be an integer division of F_USB below, as it is sourced by
+# F_USB after it has run through any CPU prescalers. Note that this value
+# does not *change* the processor frequency - it should merely be updated to
+# reflect the processor speed set externally so that the code can use accurate
+# software delays.
+F_CPU = 8000000
+
+
+# Input clock frequency.
+# This will define a symbol, F_USB, in all source code files equal to the
+# input clock frequency (before any prescaling is performed) in Hz. This value may
+# differ from F_CPU if prescaling is used on the latter, and is required as the
+# raw input clock is fed directly to the PLL sections of the AVR for high speed
+# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+# at the end, this will be done automatically to create a 32-bit value in your
+# source code.
+#
+# If no clock division is performed on the input clock inside the AVR (via the
+# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+
+# Target file name (without extension).
+TARGET = AudioInputHost
+
+
+# Object files directory
+# To put object files in current directory, use a dot (.), do NOT make
+# this an empty or blank macro!
+OBJDIR = .
+
+
+# Path to the LUFA library
+LUFA_PATH = ../../../..
+
+
+# LUFA library compile-time options and predefined tokens
+LUFA_OPTS = -D USB_HOST_ONLY
+LUFA_OPTS += -D USE_STATIC_OPTIONS="(USB_OPT_REG_ENABLED | USB_OPT_AUTO_PLL)"
+
+
+# Create the LUFA source path variables by including the LUFA root makefile
+include $(LUFA_PATH)/LUFA/makefile
+
+
+# List C source files here. (C dependencies are automatically generated.)
+SRC = $(TARGET).c \
+ ConfigDescriptor.c \
+ $(LUFA_SRC_USB) \
+ $(LUFA_SRC_SERIAL)
+
+
+# List C++ source files here. (C dependencies are automatically generated.)
+CPPSRC =
+
+
+# List Assembler source files here.
+# Make them always end in a capital .S. Files ending in a lowercase .s
+# will not be considered source files but generated files (assembler
+# output from the compiler), and will be deleted upon "make clean"!
+# 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 =
+
+
+# Optimization level, can be [0, 1, 2, 3, s].
+# 0 = turn off optimization. s = optimize for size.
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+
+
+# Debugging format.
+# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
+# AVR Studio 4.10 requires dwarf-2.
+# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
+DEBUG = dwarf-2
+
+
+# List any extra directories to look for include files here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRAINCDIRS = $(LUFA_PATH)/
+
+
+# Compiler flag to set the C Standard level.
+# c89 = "ANSI" C
+# gnu89 = c89 plus GCC extensions
+# c99 = ISO C99 standard (not yet fully implemented)
+# gnu99 = c99 plus GCC extensions
+CSTANDARD = -std=c99
+
+
+# Place -D or -U options here for C sources
+CDEFS = -DF_CPU=$(F_CPU)UL
+CDEFS += -DF_USB=$(F_USB)UL
+CDEFS += -DBOARD=BOARD_$(BOARD) -DARCH=ARCH_$(ARCH)
+CDEFS += $(LUFA_OPTS)
+
+
+# Place -D or -U options here for ASM sources
+ADEFS = -DF_CPU=$(F_CPU)
+ADEFS += -DF_USB=$(F_USB)UL
+ADEFS += -DBOARD=BOARD_$(BOARD)
+ADEFS += $(LUFA_OPTS)
+
+# Place -D or -U options here for C++ sources
+CPPDEFS = -DF_CPU=$(F_CPU)UL
+CPPDEFS += -DF_USB=$(F_USB)UL
+CPPDEFS += -DBOARD=BOARD_$(BOARD)
+CPPDEFS += $(LUFA_OPTS)
+#CPPDEFS += -D__STDC_LIMIT_MACROS
+#CPPDEFS += -D__STDC_CONSTANT_MACROS
+
+
+
+#---------------- Compiler Options C ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CFLAGS = -g$(DEBUG)
+CFLAGS += $(CDEFS)
+CFLAGS += -O$(OPT)
+CFLAGS += -funsigned-char
+CFLAGS += -funsigned-bitfields
+CFLAGS += -ffunction-sections
+CFLAGS += -fno-inline-small-functions
+CFLAGS += -fpack-struct
+CFLAGS += -fshort-enums
+CFLAGS += -fno-strict-aliasing
+CFLAGS += -Wall
+CFLAGS += -Wstrict-prototypes
+#CFLAGS += -mshort-calls
+#CFLAGS += -fno-unit-at-a-time
+#CFLAGS += -Wundef
+#CFLAGS += -Wunreachable-code
+#CFLAGS += -Wsign-compare
+CFLAGS += -Wa,-adhlns=$(<:%.c=$(OBJDIR)/%.lst)
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS += $(CSTANDARD)
+
+
+#---------------- Compiler Options C++ ----------------
+# -g*: generate debugging information
+# -O*: optimization level
+# -f...: tuning, see GCC manual and avr-libc documentation
+# -Wall...: warning level
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns...: create assembler listing
+CPPFLAGS = -g$(DEBUG)
+CPPFLAGS += $(CPPDEFS)
+CPPFLAGS += -O$(OPT)
+CPPFLAGS += -funsigned-char
+CPPFLAGS += -funsigned-bitfields
+CPPFLAGS += -fpack-struct
+CPPFLAGS += -fshort-enums
+CPPFLAGS += -fno-exceptions
+CPPFLAGS += -Wall
+CPPFLAGS += -Wundef
+#CPPFLAGS += -mshort-calls
+#CPPFLAGS += -fno-unit-at-a-time
+#CPPFLAGS += -Wstrict-prototypes
+#CPPFLAGS += -Wunreachable-code
+#CPPFLAGS += -Wsign-compare
+CPPFLAGS += -Wa,-adhlns=$(<:%.cpp=$(OBJDIR)/%.lst)
+CPPFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+#CPPFLAGS += $(CSTANDARD)
+
+
+#---------------- Assembler Options ----------------
+# -Wa,...: tell GCC to pass this to the assembler.
+# -adhlns: create listing
+# -gstabs: have the assembler create line number information; note that
+# for use in COFF files, additional information about filenames
+# and function names needs to be present in the assembler source
+# files -- see avr-libc docs [FIXME: not yet described there]
+# -listing-cont-lines: Sets the maximum number of continuation lines of hex
+# dump that will be displayed for a given single line of source input.
+ASFLAGS = $(ADEFS) -Wa,-adhlns=$(<:%.S=$(OBJDIR)/%.lst),-gstabs,--listing-cont-lines=100
+
+
+#---------------- Library Options ----------------
+# Minimalistic printf version
+PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
+
+# Floating point printf version (requires MATH_LIB = -lm below)
+PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
+
+# If this is left blank, then it will use the Standard printf version.
+PRINTF_LIB =
+#PRINTF_LIB = $(PRINTF_LIB_MIN)
+#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
+
+
+# Minimalistic scanf version
+SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
+
+# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
+SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
+
+# If this is left blank, then it will use the Standard scanf version.
+SCANF_LIB =
+#SCANF_LIB = $(SCANF_LIB_MIN)
+#SCANF_LIB = $(SCANF_LIB_FLOAT)
+
+
+MATH_LIB = -lm
+
+
+# List any extra directories to look for libraries here.
+# Each directory must be seperated by a space.
+# Use forward slashes for directory separators.
+# For a directory that has spaces, enclose it in quotes.
+EXTRALIBDIRS =
+
+
+
+#---------------- External Memory Options ----------------
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# used for variables (.data/.bss) and heap (malloc()).
+#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
+
+# 64 KB of external RAM, starting after internal RAM (ATmega128!),
+# only used for heap (malloc()).
+#EXTMEMOPTS = -Wl,--section-start,.data=0x801100,--defsym=__heap_end=0x80ffff
+
+EXTMEMOPTS =
+
+
+
+#---------------- Linker Options ----------------
+# -Wl,...: tell GCC to pass this to linker.
+# -Map: create map file
+# --cref: add cross reference to map file
+LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
+LDFLAGS += -Wl,--relax
+LDFLAGS += -Wl,--gc-sections
+LDFLAGS += $(EXTMEMOPTS)
+LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
+LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
+#LDFLAGS += -T linker_script.x
+
+
+
+#---------------- Programming Options (avrdude) ----------------
+
+# Programming hardware
+# Type: avrdude -c ?
+# to get a full listing.
+#
+AVRDUDE_PROGRAMMER = jtagmkII
+
+# com1 = serial port. Use lpt1 to connect to parallel port.
+AVRDUDE_PORT = usb
+
+AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
+#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
+
+
+# Uncomment the following if you want avrdude's erase cycle counter.
+# Note that this counter needs to be initialized first using -Yn,
+# see avrdude manual.
+#AVRDUDE_ERASE_COUNTER = -y
+
+# Uncomment the following if you do /not/ wish a verification to be
+# performed after programming the device.
+#AVRDUDE_NO_VERIFY = -V
+
+# Increase verbosity level. Please use this when submitting bug
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
+# to submit bug reports.
+#AVRDUDE_VERBOSE = -v -v
+
+AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
+AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
+AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
+AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
+
+
+
+#---------------- Debugging Options ----------------
+
+# For simulavr only - target MCU frequency.
+DEBUG_MFREQ = $(F_CPU)
+
+# Set the DEBUG_UI to either gdb or insight.
+# DEBUG_UI = gdb
+DEBUG_UI = insight
+
+# Set the debugging back-end to either avarice, simulavr.
+DEBUG_BACKEND = avarice
+#DEBUG_BACKEND = simulavr
+
+# GDB Init Filename.
+GDBINIT_FILE = __avr_gdbinit
+
+# When using avarice settings for the JTAG
+JTAG_DEV = /dev/com1
+
+# Debugging port used to communicate between GDB / avarice / simulavr.
+DEBUG_PORT = 4242
+
+# Debugging host used to communicate between GDB / avarice / simulavr, normally
+# just set to localhost unless doing some sort of crazy debugging when
+# avarice is running on a different computer.
+DEBUG_HOST = localhost
+
+
+
+#============================================================================
+
+
+# Define programs and commands.
+SHELL = sh
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+AR = avr-ar rcs
+NM = avr-nm
+AVRDUDE = avrdude
+REMOVE = rm -f
+REMOVEDIR = rm -rf
+COPY = cp
+WINSHELL = cmd
+
+
+# Define Messages
+# English
+MSG_ERRORS_NONE = Errors: none
+MSG_BEGIN = -------- begin --------
+MSG_END = -------- end --------
+MSG_SIZE_BEFORE = Size before:
+MSG_SIZE_AFTER = Size after:
+MSG_COFF = Converting to AVR COFF:
+MSG_EXTENDED_COFF = Converting to AVR Extended COFF:
+MSG_FLASH = Creating load file for Flash:
+MSG_EEPROM = Creating load file for EEPROM:
+MSG_EXTENDED_LISTING = Creating Extended Listing:
+MSG_SYMBOL_TABLE = Creating Symbol Table:
+MSG_LINKING = Linking:
+MSG_COMPILING = Compiling C:
+MSG_COMPILING_CPP = Compiling C++:
+MSG_ASSEMBLING = Assembling:
+MSG_CLEANING = Cleaning project:
+MSG_CREATING_LIBRARY = Creating library:
+
+
+
+
+# Define all object files.
+OBJ = $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
+
+# Define all listing files.
+LST = $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
+
+
+# Compiler flags to generate dependency files.
+GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
+
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
+ALL_CPPFLAGS = -mmcu=$(MCU) -I. -x c++ $(CPPFLAGS) $(GENDEPFLAGS)
+ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+
+
+
+# Default target.
+all: begin gccversion sizebefore build sizeafter end
+
+# Change the build target to build a HEX file or a library.
+build: elf hex eep lss sym
+#build: lib
+
+
+elf: $(TARGET).elf
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lss: $(TARGET).lss
+sym: $(TARGET).sym
+LIBNAME=lib$(TARGET).a
+lib: $(LIBNAME)
+
+
+
+# Eye candy.
+# AVR Studio 3.x does not check make's exit code but relies on
+# the following magic strings to be generated by the compile job.
+begin:
+ @echo
+ @echo $(MSG_BEGIN)
+
+end:
+ @echo $(MSG_END)
+ @echo
+
+
+# Display size of file.
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
+ELFSIZE = $(SIZE) $(MCU_FLAG) $(FORMAT_FLAG) $(TARGET).elf
+MCU_FLAG = $(shell $(SIZE) --help | grep -- --mcu > /dev/null && echo --mcu=$(MCU) )
+FORMAT_FLAG = $(shell $(SIZE) --help | grep -- --format=.*avr > /dev/null && echo --format=avr )
+
+
+sizebefore:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+sizeafter:
+ @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
+ 2>/dev/null; echo; fi
+
+
+
+# Display compiler version information.
+gccversion :
+ @$(CC) --version
+
+
+# Program the device.
+program: $(TARGET).hex $(TARGET).eep
+ $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
+
+flip: $(TARGET).hex
+ batchisp -hardware usb -device $(MCU) -operation erase f
+ batchisp -hardware usb -device $(MCU) -operation loadbuffer $(TARGET).hex program
+ batchisp -hardware usb -device $(MCU) -operation start reset 0
+
+dfu: $(TARGET).hex
+ dfu-programmer $(MCU) erase
+ dfu-programmer $(MCU) flash $(TARGET).hex
+ dfu-programmer $(MCU) reset
+
+flip-ee: $(TARGET).hex $(TARGET).eep
+ $(COPY) $(TARGET).eep $(TARGET)eep.hex
+ batchisp -hardware usb -device $(MCU) -operation memory EEPROM erase
+ batchisp -hardware usb -device $(MCU) -operation memory EEPROM loadbuffer $(TARGET)eep.hex program
+ batchisp -hardware usb -device $(MCU) -operation start reset 0
+ $(REMOVE) $(TARGET)eep.hex
+
+dfu-ee: $(TARGET).hex $(TARGET).eep
+ dfu-programmer $(MCU) eeprom-flash $(TARGET).eep
+ dfu-programmer $(MCU) reset
+
+
+# Generate avr-gdb config/init file which does the following:
+# define the reset signal, load the target file, connect to target, and set
+# a breakpoint at main().
+gdb-config:
+ @$(REMOVE) $(GDBINIT_FILE)
+ @echo define reset >> $(GDBINIT_FILE)
+ @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
+ @echo end >> $(GDBINIT_FILE)
+ @echo file $(TARGET).elf >> $(GDBINIT_FILE)
+ @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
+ifeq ($(DEBUG_BACKEND),simulavr)
+ @echo load >> $(GDBINIT_FILE)
+endif
+ @echo break main >> $(GDBINIT_FILE)
+
+debug: gdb-config $(TARGET).elf
+ifeq ($(DEBUG_BACKEND), avarice)
+ @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
+ @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
+ $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
+ @$(WINSHELL) /c pause
+
+else
+ @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
+ $(DEBUG_MFREQ) --port $(DEBUG_PORT)
+endif
+ @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
+
+
+
+
+# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
+COFFCONVERT = $(OBJCOPY) --debugging
+COFFCONVERT += --change-section-address .data-0x800000
+COFFCONVERT += --change-section-address .bss-0x800000
+COFFCONVERT += --change-section-address .noinit-0x800000
+COFFCONVERT += --change-section-address .eeprom-0x810000
+
+
+
+coff: $(TARGET).elf
+ @echo
+ @echo $(MSG_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
+
+
+extcoff: $(TARGET).elf
+ @echo
+ @echo $(MSG_EXTENDED_COFF) $(TARGET).cof
+ $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
+
+
+
+# Create final output files (.hex, .eep) from ELF output file.
+%.hex: %.elf
+ @echo
+ @echo $(MSG_FLASH) $@
+ $(OBJCOPY) -O $(FORMAT) -R .eeprom -R .fuse -R .lock $< $@
+
+%.eep: %.elf
+ @echo
+ @echo $(MSG_EEPROM) $@
+ -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
+ --change-section-lma .eeprom=0 --no-change-warnings -O $(FORMAT) $< $@ || exit 0
+
+# Create extended listing file from ELF output file.
+%.lss: %.elf
+ @echo
+ @echo $(MSG_EXTENDED_LISTING) $@
+ $(OBJDUMP) -h -S -z $< > $@
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+ @echo
+ @echo $(MSG_SYMBOL_TABLE) $@
+ $(NM) -n $< > $@
+
+
+
+# Create library from object files.
+.SECONDARY : $(TARGET).a
+.PRECIOUS : $(OBJ)
+%.a: $(OBJ)
+ @echo
+ @echo $(MSG_CREATING_LIBRARY) $@
+ $(AR) $@ $(OBJ)
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(TARGET).elf
+.PRECIOUS : $(OBJ)
+%.elf: $(OBJ)
+ @echo
+ @echo $(MSG_LINKING) $@
+ $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS)
+
+
+# Compile: create object files from C source files.
+$(OBJDIR)/%.o : %.c
+ @echo
+ @echo $(MSG_COMPILING) $<
+ $(CC) -c $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create object files from C++ source files.
+$(OBJDIR)/%.o : %.cpp
+ @echo
+ @echo $(MSG_COMPILING_CPP) $<
+ $(CC) -c $(ALL_CPPFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C source files.
+%.s : %.c
+ $(CC) -S $(ALL_CFLAGS) $< -o $@
+
+
+# Compile: create assembler files from C++ source files.
+%.s : %.cpp
+ $(CC) -S $(ALL_CPPFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files.
+$(OBJDIR)/%.o : %.S
+ @echo
+ @echo $(MSG_ASSEMBLING) $<
+ $(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+
+# Create preprocessed source for use in sending a bug report.
+%.i : %.c
+ $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@
+
+
+# Target: clean project.
+clean: begin clean_list end
+
+clean_list :
+ @echo
+ @echo $(MSG_CLEANING)
+ $(REMOVE) $(TARGET).hex
+ $(REMOVE) $(TARGET).eep
+ $(REMOVE) $(TARGET).cof
+ $(REMOVE) $(TARGET).elf
+ $(REMOVE) $(TARGET).map
+ $(REMOVE) $(TARGET).sym
+ $(REMOVE) $(TARGET).lss
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.o) $(CPPSRC:%.cpp=$(OBJDIR)/%.o) $(ASRC:%.S=$(OBJDIR)/%.o)
+ $(REMOVE) $(SRC:%.c=$(OBJDIR)/%.lst) $(CPPSRC:%.cpp=$(OBJDIR)/%.lst) $(ASRC:%.S=$(OBJDIR)/%.lst)
+ $(REMOVE) $(SRC:.c=.s)
+ $(REMOVE) $(SRC:.c=.d)
+ $(REMOVE) $(SRC:.c=.i)
+ $(REMOVEDIR) .dep
+
+doxygen:
+ @echo Generating Project Documentation...
+ @doxygen Doxygen.conf
+ @echo Documentation Generation Complete.
+
+clean_doxygen:
+ rm -rf Documentation
+
+# Create object files directory
+$(shell mkdir $(OBJDIR) 2>/dev/null)
+
+
+# Include the dependency files.
+-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
+
+
+# Listing of phony targets.
+.PHONY : all begin finish end sizebefore sizeafter gccversion \
+build elf hex eep lss sym coff extcoff doxygen clean \
+clean_list clean_doxygen program dfu flip flip-ee dfu-ee \
+debug gdb-config
+
diff --git a/LUFA.pnproj b/LUFA.pnproj
index c2426bda7..8b0155b27 100644
--- a/LUFA.pnproj
+++ b/LUFA.pnproj
@@ -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
diff --git a/LUFA/Drivers/USB/Class/Common/Audio.h b/LUFA/Drivers/USB/Class/Common/Audio.h
index c838411f0..713c96f7c 100644
--- a/LUFA/Drivers/USB/Class/Common/Audio.h
+++ b/LUFA/Drivers/USB/Class/Common/Audio.h
@@ -204,7 +204,7 @@
*
* \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.
@@ -215,7 +215,7 @@
* 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.
@@ -269,6 +269,22 @@
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).
*
diff --git a/LUFA/Drivers/USB/Class/Device/Audio.c b/LUFA/Drivers/USB/Class/Device/Audio.c
index f18db7456..8c5c9960d 100644
--- a/LUFA/Drivers/USB/Class/Device/Audio.c
+++ b/LUFA/Drivers/USB/Class/Device/Audio.c
@@ -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();
+ }
}
}
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index f619983ec..4fe30411e 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -12,14 +12,16 @@
* - 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>
*
diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt
index 4e16d3afa..154f86243 100644
--- a/LUFA/ManPages/FutureChanges.txt
+++ b/LUFA/ManPages/FutureChanges.txt
@@ -29,11 +29,10 @@
* - 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
diff --git a/Projects/AVRISP-MKII/AVRISP-MKII.c b/Projects/AVRISP-MKII/AVRISP-MKII.c
index 654ce5471..d774b1119 100644
--- a/Projects/AVRISP-MKII/AVRISP-MKII.c
+++ b/Projects/AVRISP-MKII/AVRISP-MKII.c
@@ -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();
diff --git a/Projects/AVRISP-MKII/AVRISP-MKII.h b/Projects/AVRISP-MKII/AVRISP-MKII.h
index 2650b4939..5a0d09111 100644
--- a/Projects/AVRISP-MKII/AVRISP-MKII.h
+++ b/Projects/AVRISP-MKII/AVRISP-MKII.h
@@ -37,11 +37,7 @@
#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>
@@ -50,6 +46,17 @@
#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);
diff --git a/Projects/AVRISP-MKII/Descriptors.c b/Projects/AVRISP-MKII/Descriptors.c
index a84b75f38..9889820cf 100644
--- a/Projects/AVRISP-MKII/Descriptors.c
+++ b/Projects/AVRISP-MKII/Descriptors.c
@@ -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"
diff --git a/Projects/AVRISP-MKII/Descriptors.h b/Projects/AVRISP-MKII/Descriptors.h
index ca68fd518..c831cffd6 100644
--- a/Projects/AVRISP-MKII/Descriptors.h
+++ b/Projects/AVRISP-MKII/Descriptors.h
@@ -37,11 +37,18 @@
#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,
diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
index ccd31f3d2..2e31c1819 100644
--- a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
+++ b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.c
@@ -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);
diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
index 213ce5ce6..8b0861971 100644
--- a/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
+++ b/Projects/AVRISP-MKII/Lib/ISP/ISPProtocol.h
@@ -37,10 +37,14 @@
#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"
diff --git a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h
index 057aa7ad1..e183dee0f 100644
--- a/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h
+++ b/Projects/AVRISP-MKII/Lib/ISP/ISPTarget.h
@@ -37,12 +37,19 @@
#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.
*
@@ -124,6 +132,7 @@
else
return ISPTarget_TransferSoftSPIByte(Byte);
}
+ #endif
#endif
diff --git a/Projects/AVRISP-MKII/Lib/V2Protocol.c b/Projects/AVRISP-MKII/Lib/V2Protocol.c
index f763d6333..a955a95a8 100644
--- a/Projects/AVRISP-MKII/Lib/V2Protocol.c
+++ b/Projects/AVRISP-MKII/Lib/V2Protocol.c
@@ -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);
diff --git a/Projects/AVRISP-MKII/Lib/V2Protocol.h b/Projects/AVRISP-MKII/Lib/V2Protocol.h
index 8e9e6ff38..c2f0ee072 100644
--- a/Projects/AVRISP-MKII/Lib/V2Protocol.h
+++ b/Projects/AVRISP-MKII/Lib/V2Protocol.h
@@ -37,12 +37,17 @@
#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"
@@ -69,15 +74,13 @@
/** 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);
diff --git a/Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h b/Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h
index 716e5fadb..f4fad5eff 100644
--- a/Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h
+++ b/Projects/AVRISP-MKII/Lib/V2ProtocolConstants.h
@@ -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
diff --git a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c
index 3c1a88130..6342d75b3 100644
--- a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c
+++ b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.c
@@ -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
diff --git a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.h b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.h
index f4479d308..4ef091ce7 100644
--- a/Projects/AVRISP-MKII/Lib/V2ProtocolParams.h
+++ b/Projects/AVRISP-MKII/Lib/V2ProtocolParams.h
@@ -37,15 +37,20 @@
#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"
@@ -59,6 +64,12 @@
/** 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. */
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h b/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h
index b2b37e916..089341592 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h
+++ b/Projects/AVRISP-MKII/Lib/XPROG/TINYNVM.h
@@ -37,12 +37,17 @@
#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"
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h b/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h
index 48fa8eb96..11f79326b 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XMEGANVM.h
@@ -37,12 +37,17 @@
#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"
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
index 72cc53636..778a7df9b 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.c
@@ -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);
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h
index d637c79ea..9c7986e55 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGProtocol.h
@@ -37,12 +37,18 @@
#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"
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
index 0a2dee73b..70e49f7c6 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.c
@@ -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;
}
diff --git a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
index ebc563933..e2194b3fe 100644
--- a/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
+++ b/Projects/AVRISP-MKII/Lib/XPROG/XPROGTarget.h
@@ -37,12 +37,15 @@
#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"
diff --git a/Projects/AVRISP-MKII/makefile b/Projects/AVRISP-MKII/makefile
index de1e225da..d9129237e 100644
--- a/Projects/AVRISP-MKII/makefile
+++ b/Projects/AVRISP-MKII/makefile
@@ -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].