Rename UC3B driver files to UC3, as they are generic to all AVR32 UC3 models.
authorDean Camera <dean@fourwalledcubicle.com>
Sun, 13 Mar 2011 21:53:19 +0000 (21:53 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Sun, 13 Mar 2011 21:53:19 +0000 (21:53 +0000)
35 files changed:
LUFA.pnproj
LUFA/Common/Architectures.h
LUFA/Common/Common.h
LUFA/Drivers/USB/Core/Device.h
LUFA/Drivers/USB/Core/Endpoint.h
LUFA/Drivers/USB/Core/Host.h
LUFA/Drivers/USB/Core/Pipe.h
LUFA/Drivers/USB/Core/UC3/Device_UC3.c [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/Device_UC3.h [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/USBController_UC3.c [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/USBController_UC3.h [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h [new file with mode: 0644]
LUFA/Drivers/USB/Core/UC3B/Device_UC3B.c [deleted file]
LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h [deleted file]
LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.c [deleted file]
LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h [deleted file]
LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c [deleted file]
LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h [deleted file]
LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.c [deleted file]
LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h [deleted file]
LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c [deleted file]
LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h [deleted file]
LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c [deleted file]
LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h [deleted file]
LUFA/Drivers/USB/Core/USBController.h
LUFA/Drivers/USB/Core/USBInterrupt.h
LUFA/ManPages/ChangeLog.txt
LUFA/ManPages/DeviceSupport.txt
LUFA/ManPages/FutureChanges.txt
LUFA/makefile

index f1fc2d8..c5181d6 100644 (file)
@@ -1 +1 @@
-<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="KeyboardMouseMultiReport"><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouseMultiReport\KeyboardMouseMultiReport.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.aps"></File></Folder><Folder name="MassStorageKeyboard"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\makefile"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.txt"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.aps"></File></Folder><Folder name="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><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"><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></Folder><Folder name="UC3B"><File path="LUFA\Drivers\USB\Core\UC3B\Device_UC3B.c"></File><File path="LUFA\Drivers\USB\Core\UC3B\Device_UC3B.h"></File><File path="LUFA\Drivers\USB\Core\UC3B\Endpoint_UC3B.c"></File><File path="LUFA\Drivers\USB\Core\UC3B\Endpoint_UC3B.h"></File><File path="LUFA\Drivers\USB\Core\UC3B\USBController_UC3B.c"></File><File path="LUFA\Drivers\USB\Core\UC3B\USBController_UC3B.h"></File><File path="LUFA\Drivers\USB\Core\UC3B\USBInterrupt_UC3B.c"></File><File path="LUFA\Drivers\USB\Core\UC3B\USBInterrupt_UC3B.h"></File><File path="LUFA\Drivers\USB\Core\UC3B\Host_UC3B.c"></File><File path="LUFA\Drivers\USB\Core\UC3B\Host_UC3B.h"></File><File path="LUFA\Drivers\USB\Core\UC3B\Pipe_UC3B.c"></File><File path="LUFA\Drivers\USB\Core\UC3B\Pipe_UC3B.h"></File></Folder><Folder name="Template"><File path="LUFA\Drivers\USB\Core\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\Core\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\Core\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\Core\Template\Template_Pipe_RW.c"></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\EndpointStream.c"></File><File path="LUFA\Drivers\USB\Core\EndpointStream.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\PipeStream.c"></File><File path="LUFA\Drivers\USB\Core\PipeStream.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></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="ADAFRUITU4"><File path="LUFA\Drivers\Board\ADAFRUITU4\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><Folder name="BENITO"><File path="LUFA\Drivers\Board\BENITO\LEDs.h"></File><File path="LUFA\Drivers\Board\BENITO\Buttons.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\LEDs.h"></File></Folder><Folder name="BUI"><File path="LUFA\Drivers\Board\BUI\LEDs.h"></File></Folder><Folder name="BLACKCAT"><File path="LUFA\Drivers\Board\BLACKCAT\LEDs.h"></File></Folder><Folder name="CULV3"><File path="LUFA\Drivers\Board\CULV3\Buttons.h"></File><File path="LUFA\Drivers\Board\CULV3\LEDs.h"></File></Folder><Folder name="EVK527"><File path="LUFA\Drivers\Board\EVK527\Buttons.h"></File><File path="LUFA\Drivers\Board\EVK527\LEDs.h"></File><File path="LUFA\Drivers\Board\EVK527\Joystick.h"></File><File path="LUFA\Drivers\Board\EVK527\Dataflash.h"></File></Folder><Folder name="EVK1101"><File path="LUFA\Drivers\Board\EVK1101\Buttons.h"></File><File path="LUFA\Drivers\Board\EVK1101\Joystick.h"></File><File path="LUFA\Drivers\Board\EVK1101\LEDs.h"></File></Folder><Folder name="JMDBU2"><File path="LUFA\Drivers\Board\JMDBU2\Buttons.h"></File><File path="LUFA\Drivers\Board\JMDBU2\LEDs.h"></File></Folder><Folder name="MAXIMUS"><File path="LUFA\Drivers\Board\MAXIMUS\LEDs.h"></File></Folder><Folder name="MICROSIN162"><File path="LUFA\Drivers\Board\MICROSIN162\LEDs.h"></File><File path="LUFA\Drivers\Board\MICROSIN162\Buttons.h"></File></Folder><Folder name="MINIMUS"><File path="LUFA\Drivers\Board\MINIMUS\Buttons.h"></File><File path="LUFA\Drivers\Board\MINIMUS\LEDs.h"></File></Folder><Folder name="OLIMEX162"><File path="LUFA\Drivers\Board\OLIMEX162\LEDs.h"></File><File path="LUFA\Drivers\Board\OLIMEX162\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="SPARKFUN8U2"><File path="LUFA\Drivers\Board\SPARKFUN8U2\LEDs.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="TEENSY"><File path="LUFA\Drivers\Board\TEENSY\LEDs.h"></File></Folder><Folder name="UDIP"><File path="LUFA\Drivers\Board\UDIP\LEDs.h"></File><File path="LUFA\Drivers\Board\UDIP\Buttons.h"></File></Folder><Folder name="UNO"><File path="LUFA\Drivers\Board\UNO\LEDs.h"></File></Folder><Folder name="USBFOO"><File path="LUFA\Drivers\Board\USBFOO\Buttons.h"></File><File path="LUFA\Drivers\Board\USBFOO\LEDS.h"></File></Folder><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="USBTINYMKII"><File path="LUFA\Drivers\Board\USBTINYMKII\LEDs.h"></File><File path="LUFA\Drivers\Board\USBTINYMKII\Buttons.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File><File path="LUFA\Drivers\Board\XPLAIN\Dataflash.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="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"></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></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="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\DHCPClientApp.c"></File><File path="Projects\Webserver\Lib\DHCPClientApp.h"></File><File path="Projects\Webserver\Lib\TELNETServerApp.c"></File><File path="Projects\Webserver\Lib\TELNETServerApp.h"></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></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="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><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"><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></Folder><Folder name="UC3"><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\Host_UC3B.c"></File><File path="LUFA\Drivers\USB\Core\UC3\Host_UC3B.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></Folder><Folder name="Template"><File path="LUFA\Drivers\USB\Core\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\Core\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\Core\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\Core\Template\Template_Pipe_RW.c"></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\EndpointStream.c"></File><File path="LUFA\Drivers\USB\Core\EndpointStream.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\PipeStream.c"></File><File path="LUFA\Drivers\USB\Core\PipeStream.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></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="ADAFRUITU4"><File path="LUFA\Drivers\Board\ADAFRUITU4\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><Folder name="BENITO"><File path="LUFA\Drivers\Board\BENITO\LEDs.h"></File><File path="LUFA\Drivers\Board\BENITO\Buttons.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\LEDs.h"></File></Folder><Folder name="BUI"><File path="LUFA\Drivers\Board\BUI\LEDs.h"></File></Folder><Folder name="BLACKCAT"><File path="LUFA\Drivers\Board\BLACKCAT\LEDs.h"></File></Folder><Folder name="CULV3"><File path="LUFA\Drivers\Board\CULV3\Buttons.h"></File><File path="LUFA\Drivers\Board\CULV3\LEDs.h"></File></Folder><Folder name="EVK527"><File path="LUFA\Drivers\Board\EVK527\Buttons.h"></File><File path="LUFA\Drivers\Board\EVK527\LEDs.h"></File><File path="LUFA\Drivers\Board\EVK527\Joystick.h"></File><File path="LUFA\Drivers\Board\EVK527\Dataflash.h"></File></Folder><Folder name="EVK1101"><File path="LUFA\Drivers\Board\EVK1101\Buttons.h"></File><File path="LUFA\Drivers\Board\EVK1101\Joystick.h"></File><File path="LUFA\Drivers\Board\EVK1101\LEDs.h"></File></Folder><Folder name="JMDBU2"><File path="LUFA\Drivers\Board\JMDBU2\Buttons.h"></File><File path="LUFA\Drivers\Board\JMDBU2\LEDs.h"></File></Folder><Folder name="MAXIMUS"><File path="LUFA\Drivers\Board\MAXIMUS\LEDs.h"></File></Folder><Folder name="MICROSIN162"><File path="LUFA\Drivers\Board\MICROSIN162\LEDs.h"></File><File path="LUFA\Drivers\Board\MICROSIN162\Buttons.h"></File></Folder><Folder name="MINIMUS"><File path="LUFA\Drivers\Board\MINIMUS\Buttons.h"></File><File path="LUFA\Drivers\Board\MINIMUS\LEDs.h"></File></Folder><Folder name="OLIMEX162"><File path="LUFA\Drivers\Board\OLIMEX162\LEDs.h"></File><File path="LUFA\Drivers\Board\OLIMEX162\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="SPARKFUN8U2"><File path="LUFA\Drivers\Board\SPARKFUN8U2\LEDs.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="TEENSY"><File path="LUFA\Drivers\Board\TEENSY\LEDs.h"></File></Folder><Folder name="UDIP"><File path="LUFA\Drivers\Board\UDIP\LEDs.h"></File><File path="LUFA\Drivers\Board\UDIP\Buttons.h"></File></Folder><Folder name="UNO"><File path="LUFA\Drivers\Board\UNO\LEDs.h"></File></Folder><Folder name="USBFOO"><File path="LUFA\Drivers\Board\USBFOO\Buttons.h"></File><File path="LUFA\Drivers\Board\USBFOO\LEDS.h"></File></Folder><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="USBTINYMKII"><File path="LUFA\Drivers\Board\USBTINYMKII\LEDs.h"></File><File path="LUFA\Drivers\Board\USBTINYMKII\Buttons.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File><File path="LUFA\Drivers\Board\XPLAIN\Dataflash.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="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"></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></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="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\DHCPClientApp.c"></File><File path="Projects\Webserver\Lib\DHCPClientApp.h"></File><File path="Projects\Webserver\Lib\TELNETServerApp.c"></File><File path="Projects\Webserver\Lib\TELNETServerApp.h"></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></Folder><Folder name="XPLAINBridge"><Folder name="Lib"><File path="Projects\XPLAINBridge\Lib\SoftUART.c"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.h"></File></Folder><File path="Projects\XPLAINBridge\XPLAINBridge.txt"></File><File path="Projects\XPLAINBridge\XPLAINBridge.h"></File><File path="Projects\XPLAINBridge\XPLAINBridge.c"></File><File path="Projects\XPLAINBridge\XPLAINBridge.aps"></File><File path="Projects\XPLAINBridge\USARTDescriptors.h"></File><File path="Projects\XPLAINBridge\USARTDescriptors.c"></File><File path="Projects\XPLAINBridge\makefile"></File><File path="Projects\XPLAINBridge\LUFA XPLAIN Bridge.inf"></File><File path="Projects\XPLAINBridge\Doxygen.conf"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.h"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.c"></File></Folder><Folder name="Incomplete"><Folder name="StandaloneProgrammer"><Folder name="Lib"><Folder name="PetiteFATFs"><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\integer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\makefile"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.h"></File></Folder></Folder><File path="Projects\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
index d34ad8c..30d8c82 100644 (file)
@@ -64,8 +64,8 @@
                        /** Selects the Atmel 8-bit AVR (AT90USB* and ATMEGA*U* chips) architecture. */\r
                        #define ARCH_AVR8           0\r
 \r
                        /** Selects the Atmel 8-bit AVR (AT90USB* and ATMEGA*U* chips) architecture. */\r
                        #define ARCH_AVR8           0\r
 \r
-                       /** Selects the Atmel 32-bit UC3B AVR (AT32UC3B* chips) architecture. */\r
-                       #define ARCH_UC3B           1\r
+                       /** Selects the Atmel 32-bit UC3 AVR (AT32UC3* chips) architecture. */\r
+                       #define ARCH_UC3           1\r
                        \r
                        #if !defined(__DOXYGEN__)\r
                                #define ARCH_           ARCH_AVR8\r
                        \r
                        #if !defined(__DOXYGEN__)\r
                                #define ARCH_           ARCH_AVR8\r
index 80bafce..1d81d48 100644 (file)
@@ -84,7 +84,7 @@
                        
                        #define  ARCH_LITTLE_ENDIAN
                        #include "Endianness.h"
                        
                        #define  ARCH_LITTLE_ENDIAN
                        #include "Endianness.h"
-               #elif (ARCH == ARCH_UC3B)
+               #elif (ARCH == ARCH_UC3)
                        #include <avr32/io.h>
 
                        // === TODO: Find abstracted way to handle these ===
                        #include <avr32/io.h>
 
                        // === TODO: Find abstracted way to handle these ===
index 45c0393..414beac 100644 (file)
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Device_AVR8.h"\r
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Device_AVR8.h"\r
-               #elif (ARCH == ARCH_UC3B)\r
-                       #include "UC3B/Device_UC3B.h"\r
+               #elif (ARCH == ARCH_UC3)\r
+                       #include "UC3/Device_UC3.h"\r
                #endif\r
 \r
 #endif\r
                #endif\r
 \r
 #endif\r
index d7a8bb7..10b2b9c 100644 (file)
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Endpoint_AVR8.h"\r
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Endpoint_AVR8.h"\r
-               #elif (ARCH == ARCH_UC3B)\r
-                       #include "UC3B/Endpoint_UC3B.h"\r
+               #elif (ARCH == ARCH_UC3)\r
+                       #include "UC3/Endpoint_UC3.h"\r
                #endif\r
 \r
 #endif\r
                #endif\r
 \r
 #endif\r
index b864a96..da8194f 100644 (file)
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Host_AVR8.h"\r
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Host_AVR8.h"\r
-               #elif (ARCH == ARCH_UC3B)\r
-                       #include "UC3B/Host_UC3B.h"\r
+               #elif (ARCH == ARCH_UC3)\r
+                       #include "UC3/Host_UC3.h"\r
                #endif\r
 \r
 #endif\r
                #endif\r
 \r
 #endif\r
index fb1c9d6..5354095 100644 (file)
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Pipe_AVR8.h"\r
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/Pipe_AVR8.h"\r
-               #elif (ARCH == ARCH_UC3B)\r
-                       #include "UC3B/Pipe_UC3B.h"\r
+               #elif (ARCH == ARCH_UC3)\r
+                       #include "UC3/Pipe_UC3.h"\r
                #endif\r
 \r
 #endif\r
                #endif\r
 \r
 #endif\r
diff --git a/LUFA/Drivers/USB/Core/UC3/Device_UC3.c b/LUFA/Drivers/USB/Core/UC3/Device_UC3.c
new file mode 100644 (file)
index 0000000..c6b41a8
--- /dev/null
@@ -0,0 +1,47 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+#define  __INCLUDE_FROM_USB_DRIVER\r
+#include "../USBMode.h"\r
+\r
+#if defined(USB_CAN_BE_DEVICE)\r
+\r
+#include "../Device.h"\r
+\r
+void USB_Device_SendRemoteWakeup(void)\r
+{\r
+       USB_CLK_Unfreeze();\r
+\r
+       AVR32_USBB.UDCON.rmwkup = true;\r
+       while (AVR32_USBB.UDCON.rmwkup);\r
+}\r
+\r
+#endif\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/Device_UC3.h b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h
new file mode 100644 (file)
index 0000000..653044f
--- /dev/null
@@ -0,0 +1,179 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *  \brief USB Device definitions for the AVR32 UC3 microcontrollers.\r
+ *  \copydetails Group_Device_UC3\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
+ *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
+ */\r
+\r
+/** \ingroup Group_Device\r
+ *  \defgroup Group_Device_UC3 Device Management (UC3)\r
+ *  \brief USB Device definitions for the AVR32 UC3 microcontrollers.\r
+ *\r
+ *  Architecture specific USB Device definitions for the Atmel 32-bit UC3 AVR microcontrollers.\r
+ *\r
+ *  @{\r
+ */\r
+\r
+#ifndef __USBDEVICE_UC3_H__\r
+#define __USBDEVICE_UC3_H__\r
+\r
+       /* Includes: */\r
+               #include "../../../../Common/Common.h"\r
+               #include "../StdDescriptors.h"\r
+               #include "../USBInterrupt.h"\r
+               #include "../Endpoint.h"\r
+               \r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
+               #endif\r
+\r
+       /* Public Interface - May be used in end-application: */\r
+               /* Macros: */\r
+                       /** \name USB Device Mode Option Masks */\r
+                       //@{\r
+                       /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the\r
+                        *  USB interface should be initialized in low speed (1.5Mb/s) mode.\r
+                        *\r
+                        *  \note Restrictions apply on the number, size and type of endpoints which can be used\r
+                        *        when running in low speed mode - refer to the USB 2.0 specification.\r
+                        */\r
+                       #define USB_DEVICE_OPT_LOWSPEED                (1 << 0)\r
+\r
+                       /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the\r
+                        *  USB interface should be initialized in full speed (12Mb/s) mode.\r
+                        */\r
+                       #define USB_DEVICE_OPT_FULLSPEED               (0 << 0)\r
+                       //@}\r
+                       \r
+                       /** String descriptor index for the device's unique serial number string descriptor within the device.\r
+                        *  This unique serial number is used by the host to associate resources to the device (such as drivers or COM port\r
+                        *  number allocations) to a device regardless of the port it is plugged in to on the host. Some microcontrollers contain\r
+                        *  a unique serial number internally, and setting the device descriptors serial number string index to this value\r
+                        *  will cause it to use the internal serial number.\r
+                        *\r
+                        *  On unsupported devices, this will evaluate to \ref NO_DESCRIPTOR and so will force the host to create a pseudo-serial\r
+                        *  number for the device.\r
+                        */\r
+                       #define USE_INTERNAL_SERIAL                    NO_DESCRIPTOR\r
+                       \r
+               /* Function Prototypes: */\r
+                       /** Sends a Remote Wakeup request to the host. This signals to the host that the device should\r
+                        *  be taken out of suspended mode, and communications should resume.\r
+                        *\r
+                        *  Typically, this is implemented so that HID devices (mice, keyboards, etc.) can wake up the\r
+                        *  host computer when the host has suspended all USB devices to enter a low power state.\r
+                        *\r
+                        *  \note This macro should only be used if the device has indicated to the host that it\r
+                        *        supports the Remote Wakeup feature in the device descriptors, and should only be\r
+                        *        issued if the host is currently allowing remote wakeup events from the device (i.e.,\r
+                        *        the \ref USB_RemoteWakeupEnabled flag is set). When the \c NO_DEVICE_REMOTE_WAKEUP compile\r
+                        *        time option is used, this macro is unavailable.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note The USB clock must be running for this function to operate. If the stack is initialized with\r
+                        *        the \ref USB_OPT_MANUAL_PLL option enabled, the user must ensure that the PLL is running\r
+                        *        before attempting to call this function.\r
+                        *\r
+                        *  \see \ref Group_StdDescriptors for more information on the RMWAKEUP feature and device descriptors.\r
+                        */\r
+                       void USB_Device_SendRemoteWakeup(void);\r
+\r
+               /* Inline Functions: */\r
+                       /** Returns the current USB frame number, when in device mode. Every millisecond the USB bus is active (i.e. enumerated to a host)\r
+                        *  the frame number is incremented by one.\r
+                        */\r
+                       static inline uint16_t USB_Device_GetFrameNumber(void)\r
+                       {\r
+                               return AVR32_USBB.UDFNUM.fnum;\r
+                       }\r
+\r
+                       #if !defined(NO_SOF_EVENTS)\r
+                               /** Enables the device mode Start Of Frame events. When enabled, this causes the\r
+                                *  \ref EVENT_USB_Device_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus,\r
+                                *  at the start of each USB frame when enumerated in device mode.\r
+                                *\r
+                                *  \note Not available when the \c NO_SOF_EVENTS compile time token is defined.\r
+                                */\r
+                               static inline void USB_Device_EnableSOFEvents(void) ATTR_ALWAYS_INLINE;\r
+                               static inline void USB_Device_EnableSOFEvents(void)\r
+                               {\r
+                                       USB_INT_Enable(USB_INT_SOFI);\r
+                               }\r
+\r
+                               /** Disables the device mode Start Of Frame events. When disabled, this stops the firing of the\r
+                                *  \ref EVENT_USB_Device_StartOfFrame() event when enumerated in device mode.\r
+                                *\r
+                                *  \note Not available when the \c NO_SOF_EVENTS compile time token is defined.\r
+                                */\r
+                               static inline void USB_Device_DisableSOFEvents(void) ATTR_ALWAYS_INLINE;\r
+                               static inline void USB_Device_DisableSOFEvents(void)\r
+                               {\r
+                                       USB_INT_Disable(USB_INT_SOFI);\r
+                               }\r
+                       #endif\r
+\r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               /* Inline Functions: */\r
+                       static inline void USB_Device_SetLowSpeed(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Device_SetLowSpeed(void)\r
+                       {\r
+                               AVR32_USBB.UDCON.ls = true;\r
+                       }\r
+\r
+                       static inline void USB_Device_SetFullSpeed(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Device_SetFullSpeed(void)\r
+                       {\r
+                               AVR32_USBB.UDCON.ls = false;\r
+                       }\r
+\r
+                       static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Device_SetDeviceAddress(const uint8_t Address)\r
+                       {\r
+                               AVR32_USBB.UDCON.uadd  = Address;\r
+                               AVR32_USBB.UDCON.adden = true;\r
+                       }\r
+\r
+                       static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE;\r
+                       static inline bool USB_Device_IsAddressSet(void)\r
+                       {\r
+                               return AVR32_USBB.UDCON.adden;\r
+                       }\r
+       #endif\r
+\r
+#endif\r
+\r
+/** @} */\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.c
new file mode 100644 (file)
index 0000000..14f66d9
--- /dev/null
@@ -0,0 +1,141 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+#define  __INCLUDE_FROM_USB_DRIVER\r
+#include "../USBMode.h"\r
+\r
+#if defined(USB_CAN_BE_DEVICE)\r
+\r
+#include "../Endpoint.h"\r
+\r
+#if !defined(FIXED_CONTROL_ENDPOINT_SIZE)\r
+uint8_t USB_ControlEndpointSize = ENDPOINT_CONTROLEP_DEFAULT_SIZE;\r
+#endif\r
+\r
+volatile uint8_t  USB_SelectedEndpoint = ENDPOINT_CONTROLEP;\r
+volatile uint8_t* USB_EndpointFIFOPos[ENDPOINT_TOTAL_ENDPOINTS];\r
+\r
+bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,\r
+                                    const uint32_t UECFG0Data)\r
+{\r
+       Endpoint_SelectEndpoint(Number);\r
+       Endpoint_EnableEndpoint();\r
+\r
+       (&AVR32_USBB.uecfg0)[Number] = 0;\r
+       (&AVR32_USBB.uecfg0)[Number] = UECFG0Data;\r
+       USB_EndpointFIFOPos[Number]  = &AVR32_USBB_SLAVE[Number * 0x10000];\r
+\r
+       return Endpoint_IsConfigured();\r
+}\r
+\r
+void Endpoint_ClearEndpoints(void)\r
+{\r
+       for (uint8_t EPNum = 0; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)\r
+       {\r
+               Endpoint_SelectEndpoint(EPNum);\r
+               (&AVR32_USBB.uecfg0)[EPNum]    = 0;\r
+               (&AVR32_USBB.uecon0clr)[EPNum] = 0xFFFFFFFF;\r
+               USB_EndpointFIFOPos[EPNum]     = &AVR32_USBB_SLAVE[EPNum * 0x10000];\r
+               Endpoint_DisableEndpoint();\r
+       }\r
+}\r
+\r
+void Endpoint_ClearStatusStage(void)\r
+{\r
+       if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)\r
+       {\r
+               while (!(Endpoint_IsOUTReceived()))\r
+               {\r
+                       if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+                         return;\r
+               }\r
+\r
+               Endpoint_ClearOUT();\r
+       }\r
+       else\r
+       {\r
+               while (!(Endpoint_IsINReady()))\r
+               {\r
+                       if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+                         return;\r
+               }\r
+\r
+               Endpoint_ClearIN();\r
+       }\r
+}\r
+\r
+#if !defined(CONTROL_ONLY_DEVICE)\r
+uint8_t Endpoint_WaitUntilReady(void)\r
+{\r
+       #if (USB_STREAM_TIMEOUT_MS < 0xFF)\r
+       uint8_t  TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
+       #else\r
+       uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
+       #endif\r
+\r
+       uint16_t PreviousFrameNumber = USB_Device_GetFrameNumber();\r
+\r
+       for (;;)\r
+       {\r
+               if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)\r
+               {\r
+                       if (Endpoint_IsINReady())\r
+                         return ENDPOINT_READYWAIT_NoError;\r
+               }\r
+               else\r
+               {\r
+                       if (Endpoint_IsOUTReceived())\r
+                         return ENDPOINT_READYWAIT_NoError;\r
+               }\r
+               \r
+               uint8_t USB_DeviceState_LCL = USB_DeviceState;\r
+\r
+               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)\r
+                 return ENDPOINT_READYWAIT_DeviceDisconnected;\r
+               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)\r
+                 return ENDPOINT_READYWAIT_BusSuspended;\r
+               else if (Endpoint_IsStalled())\r
+                 return ENDPOINT_READYWAIT_EndpointStalled;\r
+\r
+               uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber();\r
+\r
+               if (CurrentFrameNumber != PreviousFrameNumber)\r
+               {\r
+                       PreviousFrameNumber = CurrentFrameNumber;\r
+\r
+                       if (!(TimeoutMSRem--))\r
+                         return ENDPOINT_READYWAIT_Timeout;\r
+               }\r
+       }\r
+}\r
+#endif\r
+\r
+#endif\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h b/LUFA/Drivers/USB/Core/UC3/Endpoint_UC3.h
new file mode 100644 (file)
index 0000000..38f6883
--- /dev/null
@@ -0,0 +1,839 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *  \brief USB Endpoint definitions for the AVR32 UC3 microcontrollers.\r
+ *  \copydetails Group_EndpointManagement_UC3\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
+ *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
+ */\r
+\r
+/** \ingroup Group_EndpointRW\r
+ *  \defgroup Group_EndpointRW_UC3 Endpoint Data Reading and Writing (UC3)\r
+ *  \brief Endpoint data read/write definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Functions, macros, variables, enums and types related to data reading and writing from and to endpoints.\r
+ */\r
+\r
+/** \ingroup Group_EndpointPrimitiveRW\r
+ *  \defgroup Group_EndpointPrimitiveRW_UC3 Read/Write of Primitive Data Types (UC3)\r
+ *  \brief Endpoint primative read/write definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Functions, macros, variables, enums and types related to data reading and writing of primitive data types\r
+ *  from and to endpoints.\r
+ */\r
+\r
+/** \ingroup Group_EndpointPacketManagement\r
+ *  \defgroup Group_EndpointPacketManagement_UC3 Endpoint Packet Management (UC3)\r
+ *  \brief Endpoint packet management definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Functions, macros, variables, enums and types related to packet management of endpoints.\r
+ */\r
+\r
+/** \ingroup Group_EndpointManagement\r
+ *  \defgroup Group_EndpointManagement_UC3 Endpoint Management (UC3)\r
+ *  \brief Endpoint management definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Functions, macros and enums related to endpoint management when in USB Device mode. This\r
+ *  module contains the endpoint management macros, as well as endpoint interrupt and data\r
+ *  send/receive functions for various data types.\r
+ *\r
+ *  @{\r
+ */\r
+\r
+#ifndef __ENDPOINT_UC3_H__\r
+#define __ENDPOINT_UC3_H__\r
+\r
+       /* Includes: */\r
+               #include "../../../../Common/Common.h"\r
+               #include "../USBTask.h"\r
+               #include "../USBInterrupt.h"\r
+\r
+       /* Enable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       extern "C" {\r
+               #endif\r
+\r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
+               #endif\r
+\r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               /* Macros: */\r
+                       #define _ENDPOINT_GET_MAXSIZE(EPIndex)         _ENDPOINT_GET_MAXSIZE2(ENDPOINT_DETAILS_EP ## EPIndex)\r
+                       #define _ENDPOINT_GET_MAXSIZE2(EPDetails)      _ENDPOINT_GET_MAXSIZE3(EPDetails)\r
+                       #define _ENDPOINT_GET_MAXSIZE3(MaxSize, Banks) (MaxSize)\r
+\r
+                       #define _ENDPOINT_GET_BANKS(EPIndex)           _ENDPOINT_GET_BANKS2(ENDPOINT_DETAILS_EP ## EPIndex)\r
+                       #define _ENDPOINT_GET_BANKS2(EPDetails)        _ENDPOINT_GET_BANKS3(EPDetails)\r
+                       #define _ENDPOINT_GET_BANKS3(MaxSize, Banks)   (Banks)\r
+\r
+                       #define ENDPOINT_DETAILS_MAXEP                 7\r
+\r
+                       #define ENDPOINT_DETAILS_EP0                   64,  1\r
+                       #define ENDPOINT_DETAILS_EP1                   64,  2\r
+                       #define ENDPOINT_DETAILS_EP2                   64,  2\r
+                       #define ENDPOINT_DETAILS_EP3                   64,  2\r
+                       #define ENDPOINT_DETAILS_EP4                   64,  2\r
+                       #define ENDPOINT_DETAILS_EP5                   256, 2\r
+                       #define ENDPOINT_DETAILS_EP6                   256, 2\r
+\r
+               /* Inline Functions: */\r
+                       static inline uint32_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST\r
+                                                                                               ATTR_ALWAYS_INLINE;\r
+                       static inline uint32_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)\r
+                       {\r
+                               uint8_t  MaskVal    = 0;\r
+                               uint16_t CheckBytes = 8;\r
+\r
+                               while (CheckBytes < Bytes)\r
+                               {\r
+                                       MaskVal++;\r
+                                       CheckBytes <<= 1;\r
+                               }\r
+\r
+                               return (MaskVal << AVR32_USBB_EPSIZE_OFFSET);\r
+                       }\r
+\r
+               /* Function Prototypes: */\r
+                       void Endpoint_ClearEndpoints(void);\r
+                       bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,\r
+                                                           const uint32_t UECFGXData);\r
+               \r
+               /* External Variables: */\r
+                       extern volatile uint8_t  USB_SelectedEndpoint;\r
+                       extern volatile uint8_t* USB_EndpointFIFOPos[];\r
+       #endif\r
+\r
+       /* Public Interface - May be used in end-application: */\r
+               /* Macros: */\r
+                       /** \name Endpoint Direction Masks */\r
+                       //@{\r
+                       /** Endpoint data direction mask for \ref Endpoint_ConfigureEndpoint(). This indicates that the endpoint\r
+                        *  should be initialized in the OUT direction - i.e. data flows from host to device.\r
+                        */\r
+                       #define ENDPOINT_DIR_OUT                        AVR32_USBB_UECFG0_EPDIR_OUT\r
+\r
+                       /** Endpoint data direction mask for \ref Endpoint_ConfigureEndpoint(). This indicates that the endpoint\r
+                        *  should be initialized in the IN direction - i.e. data flows from device to host.\r
+                        */\r
+                       #define ENDPOINT_DIR_IN                         AVR32_USBB_UECFG0_EPDIR_IN\r
+                       //@}\r
+                       \r
+                       /** \name Endpoint Bank Mode Masks */\r
+                       //@{\r
+                       /** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates\r
+                        *  that the endpoint should have one single bank, which requires less USB FIFO memory but results\r
+                        *  in slower transfers as only one USB device (the AVR or the host) can access the endpoint's\r
+                        *  bank at the one time.\r
+                        */\r
+                       #define ENDPOINT_BANK_SINGLE                    AVR32_USBB_UECFG0_EPBK_SINGLE\r
+\r
+                       /** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates\r
+                        *  that the endpoint should have two banks, which requires more USB FIFO memory but results\r
+                        *  in faster transfers as one USB device (the AVR or the host) can access one bank while the other\r
+                        *  accesses the second bank.\r
+                        */\r
+                       #define ENDPOINT_BANK_DOUBLE                    AVR32_USBB_UECFG0_EPBK_DOUBLE\r
+                       //@}\r
+\r
+                       #if (!defined(FIXED_CONTROL_ENDPOINT_SIZE) || defined(__DOXYGEN__))\r
+                               /** Default size of the default control endpoint's bank, until altered by the control endpoint bank size\r
+                                *  value in the device descriptor. Not available if the \c FIXED_CONTROL_ENDPOINT_SIZE token is defined.\r
+                                */\r
+                               #define ENDPOINT_CONTROLEP_DEFAULT_SIZE     8\r
+                       #endif\r
+\r
+                       /** Retrives the maximum bank size in bytes of a given endpoint.\r
+                        *\r
+                        *  \note This macro will only work correctly on endpoint indexes that are compile-time constants\r
+                        *        defined by the preprocessor.\r
+                        *\r
+                        *  \param[in] EPIndex  Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1)\r
+                        */\r
+                       #define ENDPOINT_MAX_SIZE(EPIndex)              _ENDPOINT_GET_MAXSIZE(EPIndex)\r
+\r
+                       /** Retrieves the total number of banks supported by the given endpoint.\r
+                        *\r
+                        *  \note This macro will only work correctly on endpoint indexes that are compile-time constants\r
+                        *        defined by the preprocessor.\r
+                        *\r
+                        *  \param[in] EPIndex  Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1)\r
+                        */\r
+                       #define ENDPOINT_BANKS_SUPPORTED(EPIndex)       _ENDPOINT_GET_BANKS(EPIndex)\r
+\r
+                       #if !defined(CONTROL_ONLY_DEVICE) || defined(__DOXYGEN__)\r
+                               /** Total number of endpoints (including the default control endpoint at address 0) which may\r
+                                *  be used in the device. Different AVR models support different amounts of endpoints,\r
+                                *  this value reflects the maximum number of endpoints for the currently selected AVR model.\r
+                                */\r
+                               #define ENDPOINT_TOTAL_ENDPOINTS            ENDPOINT_DETAILS_MAXEP\r
+                       #else\r
+                               #define ENDPOINT_TOTAL_ENDPOINTS            1\r
+                       #endif\r
+\r
+               /* Enums: */\r
+                       /** Enum for the possible error return codes of the \ref Endpoint_WaitUntilReady() function.\r
+                        *\r
+                        *  \ingroup Group_EndpointRW_UC3\r
+                        */\r
+                       enum Endpoint_WaitUntilReady_ErrorCodes_t\r
+                       {\r
+                               ENDPOINT_READYWAIT_NoError                 = 0, /**< Endpoint is ready for next packet, no error. */\r
+                               ENDPOINT_READYWAIT_EndpointStalled         = 1, /**< The endpoint was stalled during the stream\r
+                                                                                *   transfer by the host or device.\r
+                                                                                */\r
+                               ENDPOINT_READYWAIT_DeviceDisconnected      = 2, /**< Device was disconnected from the host while\r
+                                                                                *   waiting for the endpoint to become ready.\r
+                                                                                */\r
+                               ENDPOINT_READYWAIT_BusSuspended            = 3, /**< The USB bus has been suspended by the host and\r
+                                                                                *   no USB endpoint traffic can occur until the bus\r
+                                                                                *   has resumed.\r
+                                                                                */\r
+                               ENDPOINT_READYWAIT_Timeout                 = 4, /**< The host failed to accept or send the next packet\r
+                                                                                *   within the software timeout period set by the\r
+                                                                                *   \ref USB_STREAM_TIMEOUT_MS macro.\r
+                                                                                */\r
+                       };\r
+\r
+               /* Inline Functions: */\r
+                       /** Configures the specified endpoint number with the given endpoint type, direction, bank size\r
+                        *  and banking mode. Once configured, the endpoint may be read from or written to, depending\r
+                        *  on its direction.\r
+                        *\r
+                        *  \param[in] Number     Endpoint number to configure. This must be more than 0 and less than\r
+                        *                        \ref ENDPOINT_TOTAL_ENDPOINTS.\r
+                        *\r
+                        *  \param[in] Type       Type of endpoint to configure, a \c EP_TYPE_* mask. Not all endpoint types\r
+                        *                        are available on Low Speed USB devices - refer to the USB 2.0 specification.\r
+                        *\r
+                        *  \param[in] Direction  Endpoint data direction, either \ref ENDPOINT_DIR_OUT or \ref ENDPOINT_DIR_IN.\r
+                        *                        All endpoints (except Control type) are unidirectional - data may only be read\r
+                        *                        from or written to the endpoint bank based on its direction, not both.\r
+                        *\r
+                        *  \param[in] Size       Size of the endpoint's bank, where packets are stored before they are transmitted\r
+                        *                        to the USB host, or after they have been received from the USB host (depending on\r
+                        *                        the endpoint's data direction). The bank size must indicate the maximum packet size\r
+                        *                        that the endpoint can handle.\r
+                        *\r
+                        *  \param[in] Banks      Number of banks to use for the endpoint being configured, an \c ENDPOINT_BANK_* mask.\r
+                        *                        More banks uses more USB DPRAM, but offers better performance. Isochronous type\r
+                        *                        endpoints <b>must</b> have at least two banks.\r
+                        *\r
+                        *  \note When the \c ORDERED_EP_CONFIG compile time option is used, Endpoints <b>must</b> be configured in\r
+                        *        ascending order, or bank corruption will occur.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note Different endpoints may have different maximum packet sizes based on the endpoint's index - refer to\r
+                        *        the chosen microcontroller model's datasheet to determine the maximum bank size for each endpoint.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note The default control endpoint should not be manually configured by the user application, as\r
+                        *        it is automatically configured by the library internally.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note This routine will automatically select the specified endpoint upon success. Upon failure, the endpoint\r
+                        *        which failed to reconfigure correctly will be selected.\r
+                        *\r
+                        *  \return Boolean \c true if the configuration succeeded, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_ConfigureEndpoint(const uint8_t Number,\r
+                                                                     const uint8_t Type,\r
+                                                                     const uint8_t Direction,\r
+                                                                     const uint16_t Size,\r
+                                                                     const uint8_t Banks) ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_ConfigureEndpoint(const uint8_t Number,\r
+                                                                     const uint8_t Type,\r
+                                                                     const uint8_t Direction,\r
+                                                                     const uint16_t Size,\r
+                                                                     const uint8_t Banks)\r
+                       {\r
+                               return Endpoint_ConfigureEndpoint_Prv(Number, (AVR32_USBB_ALLOC_MASK |\r
+                                                                              ((uint32_t)Type      << AVR32_USBB_EPTYPE_OFFSET) | \r
+                                                                              ((uint32_t)Direction << AVR32_USBB_EPDIR_OFFSET)  |\r
+                                                                              ((uint32_t)Banks     << AVR32_USBB_EPBK_OFFSET)   |\r
+                                                                              Endpoint_BytesToEPSizeMask(Size)));\r
+                       }\r
+\r
+                       /** Indicates the number of bytes currently stored in the current endpoint's selected bank.\r
+                        *\r
+                        *  \note The return width of this function may differ, depending on the maximum endpoint bank size\r
+                        *        of the selected AVR model.\r
+                        *\r
+                        *  \ingroup Group_EndpointRW_UC3\r
+                        *\r
+                        *  \return Total number of bytes in the currently selected Endpoint's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Endpoint_BytesInEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Endpoint_BytesInEndpoint(void)\r
+                       {\r
+                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].byct;\r
+                       }\r
+\r
+                       /** Get the endpoint address of the currently selected endpoint. This is typically used to save\r
+                        *  the currently selected endpoint number so that it can be restored after another endpoint has\r
+                        *  been manipulated.\r
+                        *\r
+                        *  \return Index of the currently selected endpoint.\r
+                        */\r
+                       static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Endpoint_GetCurrentEndpoint(void)\r
+                       {\r
+                               return USB_SelectedEndpoint;\r
+                       }\r
+\r
+                       /** Selects the given endpoint number. If the address from the device descriptors is used, the\r
+                        *  value should be masked with the \ref ENDPOINT_EPNUM_MASK constant to extract only the endpoint\r
+                        *  number (and discarding the endpoint direction bit).\r
+                        *\r
+                        *  Any endpoint operations which do not require the endpoint number to be indicated will operate on\r
+                        *  the currently selected endpoint.\r
+                        *\r
+                        *  \param[in] EndpointNumber Endpoint number to select.\r
+                        */\r
+                       static inline void Endpoint_SelectEndpoint(const uint8_t EndpointNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_SelectEndpoint(const uint8_t EndpointNumber)\r
+                       {\r
+                               USB_SelectedEndpoint = EndpointNumber;\r
+                       }\r
+\r
+                       /** Resets the endpoint bank FIFO. This clears all the endpoint banks and resets the USB controller's\r
+                        *  data In and Out pointers to the bank's contents.\r
+                        *\r
+                        *  \param[in] EndpointNumber Endpoint number whose FIFO buffers are to be reset.\r
+                        */\r
+                       static inline void Endpoint_ResetEndpoint(const uint8_t EndpointNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_ResetEndpoint(const uint8_t EndpointNumber)\r
+                       {\r
+                               AVR32_USBB.uerst |=  (AVR32_USBB_EPRST0_MASK << EndpointNumber);\r
+                               AVR32_USBB.uerst &= ~(AVR32_USBB_EPRST0_MASK << EndpointNumber);\r
+                               USB_EndpointFIFOPos[EndpointNumber] = &AVR32_USBB_SLAVE[EndpointNumber * 0x10000];\r
+                       }\r
+\r
+                       /** Enables the currently selected endpoint so that data can be sent and received through it to\r
+                        *  and from a host.\r
+                        *\r
+                        *  \note Endpoints must first be configured properly via \ref Endpoint_ConfigureEndpoint().\r
+                        */\r
+                       static inline void Endpoint_EnableEndpoint(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_EnableEndpoint(void)\r
+                       {\r
+                               AVR32_USBB.uerst |=  (AVR32_USBB_EPEN0_MASK << USB_SelectedEndpoint);\r
+                       }\r
+\r
+                       /** Disables the currently selected endpoint so that data cannot be sent and received through it\r
+                        *  to and from a host.\r
+                        */\r
+                       static inline void Endpoint_DisableEndpoint(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_DisableEndpoint(void)\r
+                       {\r
+                               AVR32_USBB.uerst &= ~(AVR32_USBB_EPEN0_MASK << USB_SelectedEndpoint);\r
+                       }\r
+\r
+                       /** Determines if the currently selected endpoint is enabled, but not necessarily configured.\r
+                        *\r
+                        * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_IsEnabled(void)\r
+                       {\r
+                               return ((AVR32_USBB.uerst & (AVR32_USBB_EPEN0_MASK << USB_SelectedEndpoint)) ? true : false);\r
+                       }\r
+\r
+                       /** Retrieves the number of busy banks in the currently selected endpoint, which have been queued for\r
+                        *  transmission via the \ref Endpoint_ClearIN() command, or are awaiting acknowledgement via the\r
+                        *  \ref Endpoint_ClearOUT() command.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        *\r
+                        *  \return Total number of busy banks in the selected endpoint.\r
+                        */\r
+                       static inline uint8_t Endpoint_GetBusyBanks(void)\r
+                       {\r
+                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].nbusybk;\r
+                       }\r
+\r
+                       /** Aborts all pending IN transactions on the currently selected endpoint, once the bank\r
+                        *  has been queued for transmission to the host via \ref Endpoint_ClearIN(). This function\r
+                        *  will terminate all queued transactions, resetting the endpoint banks ready for a new\r
+                        *  packet.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        */\r
+                       static inline void Endpoint_AbortPendingIN(void)\r
+                       {\r
+                               while (Endpoint_GetBusyBanks() != 0)\r
+                               {\r
+                                       (&AVR32_USBB.UECON0SET)[USB_SelectedEndpoint].killbks = true;\r
+                                       while ((&AVR32_USBB.UECON0)[USB_SelectedEndpoint].killbk);\r
+                               }\r
+                       }\r
+                       \r
+                       /** Determines if the currently selected endpoint may be read from (if data is waiting in the endpoint\r
+                        *  bank and the endpoint is an OUT direction, or if the bank is not yet full if the endpoint is an IN\r
+                        *  direction). This function will return false if an error has occurred in the endpoint, if the endpoint\r
+                        *  is an OUT direction and no packet (or an empty packet) has been received, or if the endpoint is an IN\r
+                        *  direction and the endpoint bank is full.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the currently selected endpoint may be read from or written to, depending\r
+                        *          on its direction.\r
+                        */\r
+                       static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_IsReadWriteAllowed(void)\r
+                       {\r
+                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].rwall;\r
+                       }\r
+\r
+                       /** Determines if the currently selected endpoint is configured.\r
+                        *\r
+                        *  \return Boolean \c true if the currently selected endpoint has been configured, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_IsConfigured(void)\r
+                       {\r
+                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].cfgok;\r
+                       }\r
+\r
+                       /** Returns a mask indicating which INTERRUPT type endpoints have interrupted - i.e. their\r
+                        *  interrupt duration has elapsed. Which endpoints have interrupted can be determined by\r
+                        *  masking the return value against <tt>(1 << <i>{Endpoint Number}</i>)</tt>.\r
+                        *\r
+                        *  \return Mask whose bits indicate which endpoints have interrupted.\r
+                        */\r
+                       static inline uint8_t Endpoint_GetEndpointInterrupts(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Endpoint_GetEndpointInterrupts(void)\r
+                       {\r
+                               return ((AVR32_USBB.udint & (AVR32_USBB_EP6INT_MASK | AVR32_USBB_EP5INT_MASK |\r
+                                                            AVR32_USBB_EP4INT_MASK | AVR32_USBB_EP3INT_MASK |\r
+                                                            AVR32_USBB_EP2INT_MASK | AVR32_USBB_EP1INT_MASK |\r
+                                                            AVR32_USBB_EP0INT_MASK)) >> AVR32_USBB_EP0INT_OFFSET);\r
+                       }\r
+\r
+                       /** Determines if the specified endpoint number has interrupted (valid only for INTERRUPT type\r
+                        *  endpoints).\r
+                        *\r
+                        *  \param[in] EndpointNumber  Index of the endpoint whose interrupt flag should be tested.\r
+                        *\r
+                        *  \return Boolean \c true if the specified endpoint has interrupted, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_HasEndpointInterrupted(const uint8_t EndpointNumber) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_HasEndpointInterrupted(const uint8_t EndpointNumber)\r
+                       {\r
+                               return ((Endpoint_GetEndpointInterrupts() & (AVR32_USBB_EP0INT_MASK << EndpointNumber)) ? true : false);\r
+                       }\r
+\r
+                       /** Determines if the selected IN endpoint is ready for a new packet to be sent to the host.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_IsINReady(void)\r
+                       {\r
+                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].txini;\r
+                       }\r
+\r
+                       /** Determines if the selected OUT endpoint has received new packet from the host.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_IsOUTReceived(void)\r
+                       {\r
+                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].rxouti;\r
+                       }\r
+\r
+                       /** Determines if the current CONTROL type endpoint has received a SETUP packet.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_IsSETUPReceived(void)\r
+                       {\r
+                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].rxstpi;\r
+                       }\r
+\r
+                       /** Clears a received SETUP packet on the currently selected CONTROL type endpoint, freeing up the\r
+                        *  endpoint for the next packet.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        *\r
+                        *  \note This is not applicable for non CONTROL type endpoints.\r
+                        */\r
+                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_ClearSETUP(void)\r
+                       {\r
+                               (&AVR32_USBB.UESTA0CLR)[USB_SelectedEndpoint].rxstpic = true;\r
+                               USB_EndpointFIFOPos[USB_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_SelectedEndpoint * 0x10000];\r
+                       }\r
+\r
+                       /** Sends an IN packet to the host on the currently selected endpoint, freeing up the endpoint for the\r
+                        *  next packet and switching to the alternative endpoint bank if double banked.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        */\r
+                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_ClearIN(void)\r
+                       {\r
+                               (&AVR32_USBB.UESTA0CLR)[USB_SelectedEndpoint].txinic   = true;\r
+                               (&AVR32_USBB.UECON0CLR)[USB_SelectedEndpoint].fifoconc = true;\r
+                               USB_EndpointFIFOPos[USB_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_SelectedEndpoint * 0x10000];\r
+                       }\r
+\r
+                       /** Acknowledges an OUT packet to the host on the currently selected endpoint, freeing up the endpoint\r
+                        *  for the next packet and switching to the alternative endpoint bank if double banked.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        */\r
+                       static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_ClearOUT(void)\r
+                       {\r
+                               (&AVR32_USBB.UESTA0CLR)[USB_SelectedEndpoint].rxoutic  = true;\r
+                               (&AVR32_USBB.UECON0CLR)[USB_SelectedEndpoint].fifoconc = true;\r
+                               USB_EndpointFIFOPos[USB_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_SelectedEndpoint * 0x10000];\r
+                       }\r
+\r
+                       /** Stalls the current endpoint, indicating to the host that a logical problem occurred with the\r
+                        *  indicated endpoint and that the current transfer sequence should be aborted. This provides a\r
+                        *  way for devices to indicate invalid commands to the host so that the current transfer can be\r
+                        *  aborted and the host can begin its own recovery sequence.\r
+                        *\r
+                        *  The currently selected endpoint remains stalled until either the \ref Endpoint_ClearStall() macro\r
+                        *  is called, or the host issues a CLEAR FEATURE request to the device for the currently selected\r
+                        *  endpoint.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        */\r
+                       static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_StallTransaction(void)\r
+                       {\r
+                               (&AVR32_USBB.UECON0SET)[USB_SelectedEndpoint].stallrqs = true;\r
+                       }\r
+\r
+                       /** Clears the STALL condition on the currently selected endpoint.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        */\r
+                       static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_ClearStall(void)\r
+                       {\r
+                               (&AVR32_USBB.UECON0CLR)[USB_SelectedEndpoint].stallrqc = true;\r
+                       }\r
+\r
+                       /** Determines if the currently selected endpoint is stalled, false otherwise.\r
+                        *\r
+                        *  \ingroup Group_EndpointPacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.\r
+                        */\r
+                       static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Endpoint_IsStalled(void)\r
+                       {\r
+                               return (&AVR32_USBB.UECON0)[USB_SelectedEndpoint].stallrq;\r
+                       }\r
+\r
+                       /** Resets the data toggle of the currently selected endpoint. */\r
+                       static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_ResetDataToggle(void)\r
+                       {\r
+                               (&AVR32_USBB.UECON0SET)[USB_SelectedEndpoint].rstdts = true;\r
+                       }\r
+\r
+                       /** Determines the currently selected endpoint's direction.\r
+                        *\r
+                        *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.\r
+                        */\r
+                       static inline uint32_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint32_t Endpoint_GetEndpointDirection(void)\r
+                       {\r
+                               return ((&AVR32_USBB.UECFG0)[USB_SelectedEndpoint].epdir ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT);\r
+                       }\r
+\r
+                       /** Sets the direction of the currently selected endpoint.\r
+                        *\r
+                        *  \param[in] DirectionMask  New endpoint direction, as a \c ENDPOINT_DIR_* mask.\r
+                        */\r
+                       static inline void Endpoint_SetEndpointDirection(const uint32_t DirectionMask) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_SetEndpointDirection(const uint32_t DirectionMask)\r
+                       {\r
+                               (&AVR32_USBB.UECFG0)[USB_SelectedEndpoint].epdir = (DirectionMask == ENDPOINT_DIR_IN);\r
+                       }\r
+\r
+                       /** Reads one byte from the currently selected endpoint's bank, for OUT direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_AVR32\r
+                        *\r
+                        *  \return Next byte in the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline uint8_t Endpoint_Read_Byte(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Endpoint_Read_Byte(void)\r
+                       {\r
+                               return *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                       }\r
+\r
+                       /** Writes one byte from the currently selected endpoint's bank, for IN direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_AVR32\r
+                        *\r
+                        *  \param[in] Byte  Next byte to write into the the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline void Endpoint_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Write_Byte(const uint8_t Byte)\r
+                       {\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = Byte;\r
+                       }\r
+\r
+                       /** Discards one byte from the currently selected endpoint's bank, for OUT direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        */\r
+                       static inline void Endpoint_Discard_Byte(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Discard_Byte(void)\r
+                       {\r
+                               uint8_t Dummy;\r
+\r
+                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                       }\r
+\r
+                       /** Reads two bytes from the currently selected endpoint's bank in little endian format, for OUT\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next word in the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Endpoint_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Endpoint_Read_Word_LE(void)\r
+                       {\r
+                               uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint16_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+\r
+                               return ((Byte0 << 8) | Byte1);\r
+                       }\r
+\r
+                       /** Reads two bytes from the currently selected endpoint's bank in big endian format, for OUT\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next word in the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Endpoint_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Endpoint_Read_Word_BE(void)\r
+                       {\r
+                               uint16_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+\r
+                               return ((Byte0 << 8) | Byte1);\r
+                       }\r
+\r
+                       /** Writes two bytes to the currently selected endpoint's bank in little endian format, for IN\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] Word  Next word to write to the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline void Endpoint_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Write_Word_LE(const uint16_t Word)\r
+                       {\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word >> 8);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word & 0xFF);\r
+                       }\r
+\r
+                       /** Writes two bytes to the currently selected endpoint's bank in big endian format, for IN\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] Word  Next word to write to the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline void Endpoint_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Write_Word_BE(const uint16_t Word)\r
+                       {\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word & 0xFF);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word >> 8);\r
+                       }\r
+\r
+                       /** Discards two bytes from the currently selected endpoint's bank, for OUT direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        */\r
+                       static inline void Endpoint_Discard_Word(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Discard_Word(void)\r
+                       {\r
+                               uint8_t Dummy;\r
+\r
+                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                       }\r
+\r
+                       /** Reads four bytes from the currently selected endpoint's bank in little endian format, for OUT\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next double word in the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline uint32_t Endpoint_Read_DWord_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint32_t Endpoint_Read_DWord_LE(void)\r
+                       {\r
+                               uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint32_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+\r
+                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
+                       }\r
+\r
+                       /** Reads four bytes from the currently selected endpoint's bank in big endian format, for OUT\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next double word in the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline uint32_t Endpoint_Read_DWord_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint32_t Endpoint_Read_DWord_BE(void)\r
+                       {\r
+                               uint32_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+\r
+                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
+                       }\r
+\r
+                       /** Writes four bytes to the currently selected endpoint's bank in little endian format, for IN\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] DWord  Next double word to write to the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline void Endpoint_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Write_DWord_LE(const uint32_t DWord)\r
+                       {\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 24);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 16);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 8);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord &  0xFF);\r
+                       }\r
+\r
+                       /** Writes four bytes to the currently selected endpoint's bank in big endian format, for IN\r
+                        *  direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] DWord  Next double word to write to the currently selected endpoint's FIFO buffer.\r
+                        */\r
+                       static inline void Endpoint_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Write_DWord_BE(const uint32_t DWord)\r
+                       {\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord &  0xFF);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 8);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 16);\r
+                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 24);\r
+                       }\r
+\r
+                       /** Discards four bytes from the currently selected endpoint's bank, for OUT direction endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointPrimitiveRW_UC3\r
+                        */\r
+                       static inline void Endpoint_Discard_DWord(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Endpoint_Discard_DWord(void)\r
+                       {\r
+                               uint8_t Dummy;\r
+\r
+                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
+                       }\r
+\r
+               /* External Variables: */\r
+                       /** Global indicating the maximum packet size of the default control endpoint located at address\r
+                        *  0 in the device. This value is set to the value indicated in the device descriptor in the user\r
+                        *  project once the USB interface is initialized into device mode.\r
+                        *\r
+                        *  If space is an issue, it is possible to fix this to a static value by defining the control\r
+                        *  endpoint size in the \c FIXED_CONTROL_ENDPOINT_SIZE token passed to the compiler in the makefile\r
+                        *  via the -D switch. When a fixed control endpoint size is used, the size is no longer dynamically\r
+                        *  read from the descriptors at runtime and instead fixed to the given value. When used, it is\r
+                        *  important that the descriptor control endpoint size value matches the size given as the\r
+                        *  \c FIXED_CONTROL_ENDPOINT_SIZE token - it is recommended that the \c FIXED_CONTROL_ENDPOINT_SIZE token\r
+                        *  be used in the device descriptors to ensure this.\r
+                        *\r
+                        *  \note This variable should be treated as read-only in the user application, and never manually\r
+                        *        changed in value.\r
+                        */\r
+                       #if (!defined(FIXED_CONTROL_ENDPOINT_SIZE) || defined(__DOXYGEN__))\r
+                               extern uint8_t USB_ControlEndpointSize;\r
+                       #else\r
+                               #define USB_ControlEndpointSize FIXED_CONTROL_ENDPOINT_SIZE\r
+                       #endif\r
+\r
+               /* Function Prototypes: */\r
+                       /** Completes the status stage of a control transfer on a CONTROL type endpoint automatically,\r
+                        *  with respect to the data direction. This is a convenience function which can be used to\r
+                        *  simplify user control request handling.\r
+                        */\r
+                       void Endpoint_ClearStatusStage(void);\r
+\r
+                       /** Spin-loops until the currently selected non-control endpoint is ready for the next packet of data\r
+                        *  to be read or written to it.\r
+                        *\r
+                        *  \note This routine should not be called on CONTROL type endpoints.\r
+                        *\r
+                        *  \ingroup Group_EndpointRW_UC3\r
+                        *\r
+                        *  \return A value from the \ref Endpoint_WaitUntilReady_ErrorCodes_t enum.\r
+                        */\r
+                       uint8_t Endpoint_WaitUntilReady(void);\r
+\r
+       /* Disable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       }\r
+               #endif\r
+\r
+#endif\r
+\r
+/** @} */\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.c
new file mode 100644 (file)
index 0000000..870828e
--- /dev/null
@@ -0,0 +1,144 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+#define  __INCLUDE_FROM_USB_DRIVER\r
+#include "../USBMode.h"\r
+\r
+#if defined(USB_CAN_BE_HOST)\r
+\r
+#include "../Pipe.h"\r
+\r
+uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
+\r
+volatile uint8_t  USB_SelectedPipe = PIPE_CONTROLPIPE;\r
+volatile uint8_t* USB_PipeFIFOPos[PIPE_TOTAL_PIPES];\r
+\r
+bool Pipe_ConfigurePipe(const uint8_t Number,\r
+                        const uint8_t Type,\r
+                        const uint8_t Token,\r
+                        const uint8_t EndpointNumber,\r
+                        const uint16_t Size,\r
+                        const uint8_t Banks)\r
+{\r
+       Pipe_SelectPipe(Number);\r
+       Pipe_EnablePipe();\r
+\r
+       (&AVR32_USBB.upcfg0)[Number] = 0;\r
+       (&AVR32_USBB.upcfg0)[Number] = (AVR32_USBB_ALLOC_MASK |\r
+                                       ((uint32_t)Type  << AVR32_USBB_PTYPE_OFFSET)  |\r
+                                       ((uint32_t)Token << AVR32_USBB_PTOKEN_OFFSET) |\r
+                                       ((uint32_t)Banks << AVR32_USBB_PBK_OFFSET)    |\r
+                                       ((EndpointNumber & PIPE_EPNUM_MASK) << AVR32_USBB_PEPNUM_OFFSET));\r
+       USB_PipeFIFOPos[Number]      = &AVR32_USBB_SLAVE[Number * 0x10000];\r
+\r
+       Pipe_SetInfiniteINRequests();\r
+\r
+       return Pipe_IsConfigured();\r
+}\r
+\r
+void Pipe_ClearPipes(void)\r
+{\r
+       for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+       {\r
+               Pipe_SelectPipe(PNum);\r
+               (&AVR32_USBB.upcfg0)[PNum]    = 0;\r
+               (&AVR32_USBB.upcon0clr)[PNum] = 0xFFFFFFFF;\r
+               USB_PipeFIFOPos[PNum]         = &AVR32_USBB_SLAVE[PNum * 0x10000];\r
+               Pipe_DisablePipe();\r
+       }\r
+}\r
+\r
+bool Pipe_IsEndpointBound(const uint8_t EndpointAddress)\r
+{\r
+       uint8_t PrevPipeNumber = Pipe_GetCurrentPipe();\r
+\r
+       for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
+       {\r
+               Pipe_SelectPipe(PNum);\r
+\r
+               if (!(Pipe_IsConfigured()))\r
+                 continue;\r
+\r
+               uint8_t PipeToken        = Pipe_GetPipeToken();\r
+               bool    PipeTokenCorrect = true;\r
+\r
+               if (PipeToken != PIPE_TOKEN_SETUP)\r
+                 PipeTokenCorrect = (PipeToken == ((EndpointAddress & PIPE_EPDIR_MASK) ? PIPE_TOKEN_IN : PIPE_TOKEN_OUT));\r
+\r
+               if (PipeTokenCorrect && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK)))\r
+                 return true;\r
+       }\r
+\r
+       Pipe_SelectPipe(PrevPipeNumber);\r
+       return false;\r
+}\r
+\r
+uint8_t Pipe_WaitUntilReady(void)\r
+{\r
+       #if (USB_STREAM_TIMEOUT_MS < 0xFF)\r
+       uint8_t  TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
+       #else\r
+       uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
+       #endif\r
+\r
+       uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber();\r
+\r
+       for (;;)\r
+       {\r
+               if (Pipe_GetPipeToken() == PIPE_TOKEN_IN)\r
+               {\r
+                       if (Pipe_IsINReceived())\r
+                         return PIPE_READYWAIT_NoError;\r
+               }\r
+               else\r
+               {\r
+                       if (Pipe_IsOUTReady())\r
+                         return PIPE_READYWAIT_NoError;\r
+               }\r
+\r
+               if (Pipe_IsStalled())\r
+                 return PIPE_READYWAIT_PipeStalled;\r
+               else if (USB_HostState == HOST_STATE_Unattached)\r
+                 return PIPE_READYWAIT_DeviceDisconnected;\r
+\r
+               uint16_t CurrentFrameNumber = USB_Host_GetFrameNumber();\r
+\r
+               if (CurrentFrameNumber != PreviousFrameNumber)\r
+               {\r
+                       PreviousFrameNumber = CurrentFrameNumber;\r
+\r
+                       if (!(TimeoutMSRem--))\r
+                         return PIPE_READYWAIT_Timeout;\r
+               }\r
+       }\r
+}\r
+\r
+#endif\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h b/LUFA/Drivers/USB/Core/UC3/Pipe_UC3.h
new file mode 100644 (file)
index 0000000..204169f
--- /dev/null
@@ -0,0 +1,915 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *  \brief USB Pipe definitions for the AVR32 UC3 microcontrollers.\r
+ *  \copydetails Group_PipeManagement_UC3\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
+ *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
+ */\r
+\r
+/** \ingroup Group_PipeRW\r
+ *  \defgroup Group_PipeRW_UC3 Pipe Data Reading and Writing (UC3)\r
+ *  \brief Pipe data read/write definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Functions, macros, variables, enums and types related to data reading and writing from and to pipes.\r
+ */\r
+\r
+/** \ingroup Group_PipePrimitiveRW\r
+ *  \defgroup Group_PipePrimitiveRW_UC3 Read/Write of Primitive Data Types (UC3)\r
+ *  \brief Pipe primative data read/write definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Functions, macros, variables, enums and types related to data reading and writing of primitive data types\r
+ *  from and to pipes.\r
+ */\r
+\r
+/** \ingroup Group_PipePacketManagement\r
+ *  \defgroup Group_PipePacketManagement_UC3 Pipe Packet Management (UC3)\r
+ *  \brief Pipe packet management definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Functions, macros, variables, enums and types related to packet management of pipes.\r
+ */\r
+\r
+/** \ingroup Group_PipeControlReq\r
+ *  \defgroup Group_PipeControlReq_UC3 Pipe Control Request Management (UC3)\r
+ *  \brief Pipe control request management definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  Module for host mode request processing. This module allows for the transmission of standard, class and\r
+ *  vendor control requests to the default control endpoint of an attached device while in host mode.\r
+ *\r
+ *  \see Chapter 9 of the USB 2.0 specification.\r
+ */\r
+\r
+/** \ingroup Group_PipeManagement\r
+ *  \defgroup Group_PipeManagement_UC3 Pipe Management (UC3)\r
+ *  \brief Pipe management definitions for the Atmel AVR32 UC3 architecture.\r
+ *\r
+ *  This module contains functions, macros and enums related to pipe management when in USB Host mode. This\r
+ *  module contains the pipe management macros, as well as pipe interrupt and data send/receive functions\r
+ *  for various data types.\r
+ *\r
+ *  @{\r
+ */\r
+\r
+#ifndef __PIPE_UC3_H__\r
+#define __PIPE_UC3_H__\r
+\r
+       /* Includes: */\r
+               #include "../../../../Common/Common.h"\r
+               #include "../USBTask.h"\r
+\r
+       /* Enable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       extern "C" {\r
+               #endif\r
+\r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
+               #endif\r
+\r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               /* External Variables: */\r
+                       extern volatile uint8_t  USB_SelectedPipe;\r
+                       extern volatile uint8_t* USB_PipeFIFOPos[];\r
+       #endif\r
+\r
+       /* Public Interface - May be used in end-application: */\r
+               /* Macros: */\r
+                       /** \name Pipe Error Flag Masks */\r
+                       //@{\r
+                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that an overflow error occurred in the pipe on the received data. */\r
+                       #define PIPE_ERRORFLAG_OVERFLOW         (AVR32_USBB_UPSTA0_OVERFI_MASK << 8)\r
+\r
+                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a CRC error occurred in the pipe on the received data. */\r
+                       #define PIPE_ERRORFLAG_CRC16            AVR32_USBB_UPERR0_CRC16_MASK\r
+\r
+                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware timeout error occurred in the pipe. */\r
+                       #define PIPE_ERRORFLAG_TIMEOUT          AVR32_USBB_UPERR0_TIMEOUT_MASK\r
+\r
+                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware PID error occurred in the pipe. */\r
+                       #define PIPE_ERRORFLAG_PID              AVR32_USBB_UPERR0_PID_MASK\r
+\r
+                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware data PID error occurred in the pipe. */\r
+                       #define PIPE_ERRORFLAG_DATAPID          AVR32_USBB_UPERR0_DATAPID_MASK\r
+\r
+                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware data toggle error occurred in the pipe. */\r
+                       #define PIPE_ERRORFLAG_DATATGL          AVR32_USBB_UPERR0_DATATGL_MASK\r
+                       //@}\r
+\r
+                       /** \name Pipe Token Masks */\r
+                       //@{\r
+                       /** Token mask for \ref Pipe_ConfigurePipe(). This sets the pipe as a SETUP token (for CONTROL type pipes),\r
+                        *  which will trigger a control request on the attached device when data is written to the pipe.\r
+                        */\r
+                       #define PIPE_TOKEN_SETUP                AVR32_USBB_UPCFG0_PTOKEN_SETUP\r
+\r
+                       /** Token mask for \ref Pipe_ConfigurePipe(). This sets the pipe as a IN token (for non-CONTROL type pipes),\r
+                        *  indicating that the pipe data will flow from device to host.\r
+                        */\r
+                       #define PIPE_TOKEN_IN                   AVR32_USBB_UPCFG0_PTOKEN_IN\r
+\r
+                       /** Token mask for \ref Pipe_ConfigurePipe(). This sets the pipe as a OUT token (for non-CONTROL type pipes),\r
+                        *  indicating that the pipe data will flow from host to device.\r
+                        */\r
+                       #define PIPE_TOKEN_OUT                  AVR32_USBB_UPCFG0_PTOKEN_OUT\r
+                       //@}\r
+                       \r
+                       /** \name Pipe Bank Mode Masks */\r
+                       //@{\r
+                       /** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe\r
+                        *  should have one single bank, which requires less USB FIFO memory but results in slower transfers as\r
+                        *  only one USB device (the AVR or the attached device) can access the pipe's bank at the one time.\r
+                        */\r
+                       #define PIPE_BANK_SINGLE                AVR32_USBB_UPCFG0_PBK_SINGLE\r
+\r
+                       /** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe\r
+                        *  should have two banks, which requires more USB FIFO memory but results in faster transfers as one\r
+                        *  USB device (the AVR or the attached device) can access one bank while the other accesses the second\r
+                        *  bank.\r
+                        */\r
+                       #define PIPE_BANK_DOUBLE                AVR32_USBB_UPCFG0_PBK_DOUBLE\r
+\r
+                       /** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe\r
+                        *  should have three banks, which requires more USB FIFO memory but results in faster transfers as one\r
+                        *  USB device (the AVR or the attached device) can access one bank while the other accesses the remaining\r
+                        *  banks.\r
+                        */\r
+                       #define PIPE_BANK_TRIPLE                AVR32_USBB_UPCFG0_PBK_TRIPLE\r
+                       //@}\r
+\r
+                       /** Default size of the default control pipe's bank, until altered by the Endpoint0Size value\r
+                        *  in the device descriptor of the attached device.\r
+                        */\r
+                       #define PIPE_CONTROLPIPE_DEFAULT_SIZE   64\r
+\r
+                       /** Total number of pipes (including the default control pipe at address 0) which may be used in\r
+                        *  the device.\r
+                        */\r
+                       #define PIPE_TOTAL_PIPES                7\r
+\r
+                       /** Size in bytes of the largest pipe bank size possible in the device. Not all banks on each AVR\r
+                        *  model supports the largest bank size possible on the device; different pipe numbers support\r
+                        *  different maximum bank sizes. This value reflects the largest possible bank of any pipe on the\r
+                        *  currently selected UC3 AVR model.\r
+                        */\r
+                       #define PIPE_MAX_SIZE                   256\r
+\r
+               /* Enums: */\r
+                       /** Enum for the possible error return codes of the \ref Pipe_WaitUntilReady() function.\r
+                        *\r
+                        *  \ingroup Group_PipeRW_UC3\r
+                        */\r
+                       enum Pipe_WaitUntilReady_ErrorCodes_t\r
+                       {\r
+                               PIPE_READYWAIT_NoError                 = 0, /**< Pipe ready for next packet, no error. */\r
+                               PIPE_READYWAIT_PipeStalled             = 1,     /**< The device stalled the pipe while waiting. */\r
+                               PIPE_READYWAIT_DeviceDisconnected      = 2,     /**< Device was disconnected from the host while waiting. */\r
+                               PIPE_READYWAIT_Timeout                 = 3, /**< The device failed to accept or send the next packet\r
+                                                                            *   within the software timeout period set by the\r
+                                                                            *   \ref USB_STREAM_TIMEOUT_MS macro.\r
+                                                                            */\r
+                       };\r
+\r
+               /* Inline Functions: */\r
+                       /** Indicates the number of bytes currently stored in the current pipes's selected bank.\r
+                        *\r
+                        *  \note The return width of this function may differ, depending on the maximum pipe bank size\r
+                        *        of the selected AVR model.\r
+                        *\r
+                        *  \ingroup Group_PipeRW_UC3\r
+                        *\r
+                        *  \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Pipe_BytesInPipe(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].pbyct;\r
+                       }\r
+\r
+                       /** Returns the pipe address of the currently selected pipe. This is typically used to save the\r
+                        *  currently selected pipe number so that it can be restored after another pipe has been manipulated.\r
+                        *\r
+                        *  \return Index of the currently selected pipe.\r
+                        */\r
+                       static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_GetCurrentPipe(void)\r
+                       {\r
+                               return USB_SelectedPipe;\r
+                       }\r
+\r
+                       /** Selects the given pipe number. Any pipe operations which do not require the pipe number to be\r
+                        *  indicated will operate on the currently selected pipe.\r
+                        *\r
+                        *  \param[in] PipeNumber  Index of the pipe to select.\r
+                        */\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               USB_SelectedPipe = PipeNumber;\r
+                       }\r
+\r
+                       /** Resets the desired pipe, including the pipe banks and flags.\r
+                        *\r
+                        *  \param[in] PipeNumber  Index of the pipe to reset.\r
+                        */\r
+                       static inline void Pipe_ResetPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ResetPipe(const uint8_t PipeNumber)\r
+                       {\r
+                               AVR32_USBB.uprst |=  (AVR32_USBB_PRST0_MASK << PipeNumber);\r
+                               AVR32_USBB.uprst &= ~(AVR32_USBB_PRST0_MASK << PipeNumber);\r
+                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
+                       }\r
+\r
+                       /** Enables the currently selected pipe so that data can be sent and received through it to and from\r
+                        *  an attached device.\r
+                        *\r
+                        *  \pre The currently selected pipe must first be configured properly via \ref Pipe_ConfigurePipe().\r
+                        */\r
+                       static inline void Pipe_EnablePipe(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_EnablePipe(void)\r
+                       {\r
+                               AVR32_USBB.uprst |=  (AVR32_USBB_PEN0_MASK << USB_SelectedPipe);\r
+                       }\r
+\r
+                       /** Disables the currently selected pipe so that data cannot be sent and received through it to and\r
+                        *  from an attached device.\r
+                        */\r
+                       static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_DisablePipe(void)\r
+                       {\r
+                               AVR32_USBB.uprst &= ~(AVR32_USBB_PEN0_MASK << USB_SelectedPipe);\r
+                       }\r
+\r
+                       /** Determines if the currently selected pipe is enabled, but not necessarily configured.\r
+                        *\r
+                        * \return Boolean \c true if the currently selected pipe is enabled, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsEnabled(void)\r
+                       {\r
+                               return ((AVR32_USBB.uprst & (AVR32_USBB_PEN0_MASK << USB_SelectedPipe)) ? true : false);\r
+                       }\r
+\r
+                       /** Gets the current pipe token, indicating the pipe's data direction and type.\r
+                        *\r
+                        *  \return The current pipe token, as a \c PIPE_TOKEN_* mask.\r
+                        */\r
+                       static inline uint8_t Pipe_GetPipeToken(void) ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_GetPipeToken(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].ptoken;\r
+                       }\r
+\r
+                       /** Sets the token for the currently selected pipe to one of the tokens specified by the \c PIPE_TOKEN_*\r
+                        *  masks. This can be used on CONTROL type pipes, to allow for bidirectional transfer of data during\r
+                        *  control requests, or on regular pipes to allow for half-duplex bidirectional data transfer to devices\r
+                        *  which have two endpoints of opposite direction sharing the same endpoint address within the device.\r
+                        *\r
+                        *  \param[in] Token  New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
+                        */\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetPipeToken(const uint8_t Token)\r
+                       {\r
+                               (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].ptoken = Token;\r
+                       }\r
+\r
+                       /** Configures the currently selected pipe to allow for an unlimited number of IN requests. */\r
+                       static inline void Pipe_SetInfiniteINRequests(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetInfiniteINRequests(void)\r
+                       {\r
+                               (&AVR32_USBB.UPINRQ0)[USB_SelectedPipe].inmode = true;\r
+                       }\r
+\r
+                       /** Configures the currently selected pipe to only allow the specified number of IN requests to be\r
+                        *  accepted by the pipe before it is automatically frozen.\r
+                        *\r
+                        *  \param[in] TotalINRequests  Total number of IN requests that the pipe may receive before freezing.\r
+                        */\r
+                       static inline void Pipe_SetFiniteINRequests(const uint8_t TotalINRequests) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetFiniteINRequests(const uint8_t TotalINRequests)\r
+                       {\r
+                               (&AVR32_USBB.UPINRQ0)[USB_SelectedPipe].inmode = false;\r
+                               (&AVR32_USBB.UPINRQ0)[USB_SelectedPipe].inrq   = TotalINRequests;\r
+                       }\r
+\r
+                       /** Determines if the currently selected pipe is configured.\r
+                        *\r
+                        *  \return Boolean \c true if the selected pipe is configured, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsConfigured(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].cfgok;\r
+                       }\r
+\r
+                       /** Retrieves the endpoint number of the endpoint within the attached device that the currently selected\r
+                        *  pipe is bound to.\r
+                        *\r
+                        *  \return Endpoint number the currently selected pipe is bound to.\r
+                        */\r
+                       static inline uint8_t Pipe_BoundEndpointNumber(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_BoundEndpointNumber(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].pepnum;\r
+                       }\r
+\r
+                       /** Sets the period between interrupts for an INTERRUPT type pipe to a specified number of milliseconds.\r
+                        *\r
+                        *  \param[in] Milliseconds  Number of milliseconds between each pipe poll.\r
+                        */\r
+                       static inline void Pipe_SetInterruptPeriod(const uint8_t Milliseconds) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_SetInterruptPeriod(const uint8_t Milliseconds)\r
+                       {\r
+                               (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].intfrq = Milliseconds;\r
+                       }\r
+\r
+                       /** Returns a mask indicating which pipe's interrupt periods have elapsed, indicating that the pipe should\r
+                        *  be serviced.\r
+                        *\r
+                        *  \return Mask whose bits indicate which pipes have interrupted.\r
+                        */\r
+                       static inline uint8_t Pipe_GetPipeInterrupts(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_GetPipeInterrupts(void)\r
+                       {\r
+                               return ((AVR32_USBB.uhint & (AVR32_USBB_P6INT_MASK | AVR32_USBB_P5INT_MASK |\r
+                                                            AVR32_USBB_P4INT_MASK | AVR32_USBB_P3INT_MASK |\r
+                                                            AVR32_USBB_P2INT_MASK | AVR32_USBB_P1INT_MASK |\r
+                                                            AVR32_USBB_P0INT_MASK)) >> AVR32_USBB_P0INT_OFFSET);\r
+                       }\r
+\r
+                       /** Determines if the specified pipe number has interrupted (valid only for INTERRUPT type\r
+                        *  pipes).\r
+                        *\r
+                        *  \param[in] PipeNumber  Index of the pipe whose interrupt flag should be tested.\r
+                        *\r
+                        *  \return Boolean \c true if the specified pipe has interrupted, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_HasPipeInterrupted(const uint8_t PipeNumber) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_HasPipeInterrupted(const uint8_t PipeNumber)\r
+                       {\r
+                               return ((AVR32_USBB.uhint & (AVR32_USBB_P0INTES_MASK << USB_SelectedPipe)) ? true : false);\r
+                       }\r
+\r
+                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
+                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Unfreeze(void)\r
+                       {\r
+                               (&AVR32_USBB.UPCON0CLR)[USB_SelectedPipe].pfreezec = true;\r
+                       }\r
+\r
+                       /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
+                       static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Freeze(void)\r
+                       {\r
+                               (&AVR32_USBB.UPCON0SET)[USB_SelectedPipe].pfreezes = true;\r
+                       }\r
+\r
+                       /** Determines if the currently selected pipe is frozen, and not able to accept data.\r
+                        *\r
+                        *  \return Boolean \c true if the currently selected pipe is frozen, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsFrozen(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsFrozen(void)\r
+                       {\r
+                               return (((&AVR32_USBB.UPCON0)[USB_SelectedPipe].pfreeze) ? true : false);\r
+                       }\r
+\r
+                       /** Clears the error flags for the currently selected pipe. */\r
+                       static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearError(void)\r
+                       {\r
+                               (&AVR32_USBB.uperr0)[USB_SelectedPipe] = 0;\r
+                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].overfic  = true;\r
+                       }\r
+\r
+                       /** Determines if the master pipe error flag is set for the currently selected pipe, indicating that\r
+                        *  some sort of hardware error has occurred on the pipe.\r
+                        *\r
+                        *  \see \ref Pipe_GetErrorFlags() macro for information on retrieving the exact error flag.\r
+                        *\r
+                        *  \return Boolean \c true if an error has occurred on the selected pipe, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsError(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsError(void)\r
+                       {\r
+                               return (((&AVR32_USBB.upsta0)[USB_SelectedPipe] &\r
+                                       (AVR32_USBB_PERRI_MASK | AVR32_USBB_OVERFI_MASK)) ? true : false);\r
+                       }\r
+\r
+                       /** Gets a mask of the hardware error flags which have occurred on the currently selected pipe. This\r
+                        *  value can then be masked against the \c PIPE_ERRORFLAG_* masks to determine what error has occurred.\r
+                        *\r
+                        *  \return  Mask comprising of \c PIPE_ERRORFLAG_* bits indicating what error has occurred on the selected pipe.\r
+                        */\r
+                       static inline uint8_t Pipe_GetErrorFlags(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_GetErrorFlags(void)\r
+                       {\r
+                               \r
+                               return (((&AVR32_USBB.uperr0)[USB_SelectedPipe] &\r
+                                       (PIPE_ERRORFLAG_CRC16 | PIPE_ERRORFLAG_TIMEOUT |\r
+                                        PIPE_ERRORFLAG_PID   | PIPE_ERRORFLAG_DATAPID |\r
+                                        PIPE_ERRORFLAG_DATATGL)) |\r
+                                       (((&AVR32_USBB.upsta0)[USB_SelectedPipe] << 8) &\r
+                                                PIPE_ERRORFLAG_OVERFLOW));\r
+                       }\r
+                       \r
+                       /** Retrieves the number of busy banks in the currently selected pipe, which have been queued for\r
+                        *  transmission via the \ref Pipe_ClearOUT() command, or are awaiting acknowledgement via the\r
+                        *  \ref Pipe_ClearIN() command.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \return Total number of busy banks in the selected pipe.\r
+                        */\r
+                       static inline uint8_t Pipe_GetBusyBanks(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].nbusybk;\r
+                       }\r
+\r
+                       /** Determines if the currently selected pipe may be read from (if data is waiting in the pipe\r
+                        *  bank and the pipe is an IN direction, or if the bank is not yet full if the pipe is an OUT\r
+                        *  direction). This function will return false if an error has occurred in the pipe, or if the pipe\r
+                        *  is an IN direction and no packet (or an empty packet) has been received, or if the pipe is an OUT\r
+                        *  direction and the pipe bank is full.\r
+                        *\r
+                        *  \note This function is not valid on CONTROL type pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the currently selected pipe may be read from or written to, depending\r
+                        *          on its direction.\r
+                        */\r
+                       static inline bool Pipe_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsReadWriteAllowed(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].rwall;\r
+                       }\r
+\r
+                       /** Determines if a packet has been received on the currently selected IN pipe from the attached device.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsINReceived(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].rxini;\r
+                       }\r
+\r
+                       /** Determines if the currently selected OUT pipe is ready to send an OUT packet to the attached device.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the current pipe is ready for an OUT packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsOUTReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsOUTReady(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].txouti;\r
+                       }\r
+\r
+                       /** Determines if no SETUP request is currently being sent to the attached device on the selected\r
+                        *  CONTROL type pipe.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the current pipe is ready for a SETUP packet, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsSETUPSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsSETUPSent(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].txstpi;\r
+                       }\r
+\r
+                       /** Sends the currently selected CONTROL type pipe's contents to the device as a SETUP packet.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        */\r
+                       static inline void Pipe_ClearSETUP(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearSETUP(void)\r
+                       {\r
+                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].txstpic = true;\r
+                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
+                       }\r
+\r
+                       /** Acknowledges the reception of a setup IN request from the attached device on the currently selected\r
+                        *  pipe, freeing the bank ready for the next packet.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        */\r
+                       static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearIN(void)\r
+                       {\r
+                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].rxinic   = true;\r
+                               (&AVR32_USBB.UPCON0CLR)[USB_SelectedPipe].fifoconc = true;\r
+                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
+                       }\r
+\r
+                       /** Sends the currently selected pipe's contents to the device as an OUT packet on the selected pipe, freeing\r
+                        *  the bank ready for the next packet.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        */\r
+                       static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearOUT(void)\r
+                       {\r
+                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].txoutic  = true;\r
+                               (&AVR32_USBB.UPCON0CLR)[USB_SelectedPipe].fifoconc = true;\r
+                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
+                       }\r
+\r
+                       /** Determines if the device sent a NAK (Negative Acknowledge) in response to the last sent packet on\r
+                        *  the currently selected pipe. This occurs when the host sends a packet to the device, but the device\r
+                        *  is not currently ready to handle the packet (i.e. its endpoint banks are full). Once a NAK has been\r
+                        *  received, it must be cleared using \ref Pipe_ClearNAKReceived() before the previous (or any other) packet\r
+                        *  can be re-sent.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if an NAK has been received on the current pipe, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsNAKReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsNAKReceived(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].nakedi;\r
+                       }\r
+\r
+                       /** Clears the NAK condition on the currently selected pipe.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \see \ref Pipe_IsNAKReceived() for more details.\r
+                        */\r
+                       static inline void Pipe_ClearNAKReceived(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearNAKReceived(void)\r
+                       {\r
+                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].nakedic = true;\r
+                       }\r
+\r
+                       /** Determines if the currently selected pipe has had the STALL condition set by the attached device.\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        *\r
+                        *  \return Boolean \c true if the current pipe has been stalled by the attached device, \c false otherwise.\r
+                        */\r
+                       static inline bool Pipe_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool Pipe_IsStalled(void)\r
+                       {\r
+                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].rxstalldi;\r
+                       }\r
+\r
+                       /** Clears the STALL condition detection flag on the currently selected pipe, but does not clear the\r
+                        *  STALL condition itself (this must be done via a ClearFeature control request to the device).\r
+                        *\r
+                        *  \ingroup Group_PipePacketManagement_UC3\r
+                        */\r
+                       static inline void Pipe_ClearStall(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_ClearStall(void)\r
+                       {\r
+                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].rxstalldic = true;\r
+                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
+                       }\r
+\r
+                       /** Reads one byte from the currently selected pipe's bank, for OUT direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next byte in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint8_t Pipe_Read_Byte(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_Read_Byte(void)\r
+                       {\r
+                               return *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                       }\r
+\r
+                       /** Writes one byte from the currently selected pipe's bank, for IN direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] Byte  Next byte to write into the the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_Byte(const uint8_t Byte)\r
+                       {\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = Byte;\r
+                       }\r
+\r
+                       /** Discards one byte from the currently selected pipe's bank, for OUT direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        */\r
+                       static inline void Pipe_Discard_Byte(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Discard_Byte(void)\r
+                       {\r
+                               uint8_t Dummy;\r
+\r
+                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                       }\r
+\r
+                       /** Reads two bytes from the currently selected pipe's bank in little endian format, for OUT\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next word in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Pipe_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Pipe_Read_Word_LE(void)\r
+                       {\r
+                               uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+\r
+                               return ((Byte0 << 8) | Byte1);\r
+                       }\r
+\r
+                       /** Reads two bytes from the currently selected pipe's bank in big endian format, for OUT\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next word in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint16_t Pipe_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint16_t Pipe_Read_Word_BE(void)\r
+                       {\r
+                               uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+\r
+                               return ((Byte0 << 8) | Byte1);\r
+                       }\r
+\r
+                       /** Writes two bytes to the currently selected pipe's bank in little endian format, for IN\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] Word  Next word to write to the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_Word_LE(const uint16_t Word)\r
+                       {\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word >> 8);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word & 0xFF);\r
+                       }\r
+\r
+                       /** Writes two bytes to the currently selected pipe's bank in big endian format, for IN\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] Word  Next word to write to the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_Word_BE(const uint16_t Word)\r
+                       {\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word & 0xFF);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word >> 8);\r
+                       }\r
+\r
+                       /** Discards two bytes from the currently selected pipe's bank, for OUT direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        */\r
+                       static inline void Pipe_Discard_Word(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Discard_Word(void)\r
+                       {\r
+                               uint8_t Dummy;\r
+\r
+                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                       }\r
+\r
+                       /** Reads four bytes from the currently selected pipe's bank in little endian format, for OUT\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next double word in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint32_t Pipe_Read_DWord_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint32_t Pipe_Read_DWord_LE(void)\r
+                       {\r
+                               uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+\r
+                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
+                       }\r
+\r
+                       /** Reads four bytes from the currently selected pipe's bank in big endian format, for OUT\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \return Next double word in the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline uint32_t Pipe_Read_DWord_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint32_t Pipe_Read_DWord_BE(void)\r
+                       {\r
+                               uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+\r
+                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
+                       }\r
+\r
+                       /** Writes four bytes to the currently selected pipe's bank in little endian format, for IN\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] DWord  Next double word to write to the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_DWord_LE(const uint32_t DWord)\r
+                       {\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 24);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 16);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 8);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord &  0xFF);\r
+                       }\r
+\r
+                       /** Writes four bytes to the currently selected pipe's bank in big endian format, for IN\r
+                        *  direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        *\r
+                        *  \param[in] DWord  Next double word to write to the currently selected pipe's FIFO buffer.\r
+                        */\r
+                       static inline void Pipe_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Write_DWord_BE(const uint32_t DWord)\r
+                       {\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord &  0xFF);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 8);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 16);\r
+                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 24);\r
+                       }\r
+\r
+                       /** Discards four bytes from the currently selected pipe's bank, for OUT direction pipes.\r
+                        *\r
+                        *  \ingroup Group_PipePrimitiveRW_UC3\r
+                        */\r
+                       static inline void Pipe_Discard_DWord(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void Pipe_Discard_DWord(void)\r
+                       {\r
+                               uint8_t Dummy;\r
+\r
+                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+                       }\r
+\r
+               /* External Variables: */\r
+                       /** Global indicating the maximum packet size of the default control pipe located at address\r
+                        *  0 in the device. This value is set to the value indicated in the attached device's device\r
+                    *  descriptor once the USB interface is initialized into host mode and a device is attached\r
+                        *  to the USB bus.\r
+                        *\r
+                        *  \note This variable should be treated as read-only in the user application, and never manually\r
+                        *        changed in value.\r
+                        */\r
+                       extern uint8_t USB_ControlPipeSize;\r
+\r
+               /* Function Prototypes: */\r
+                       /** Configures the specified pipe number with the given pipe type, token, target endpoint number in the\r
+                        *  attached device, bank size and banking mode.\r
+                        *\r
+                        *  A newly configured pipe is frozen by default, and must be unfrozen before use via the \ref Pipe_Unfreeze()\r
+                        *  before being used. Pipes should be kept frozen unless waiting for data from a device while in IN mode, or\r
+                        *  sending data to the device in OUT mode. IN type pipes are also automatically configured to accept infinite\r
+                        *  numbers of IN requests without automatic freezing - this can be overridden by a call to\r
+                        *  \ref Pipe_SetFiniteINRequests().\r
+                        *\r
+                        *  \param[in] Number          Pipe number to configure. This must be more than 0 and less than \ref PIPE_TOTAL_PIPES.\r
+                        *\r
+                        *  \param[in] Type            Type of pipe to configure, an \c EP_TYPE_* mask. Not all pipe types are available on Low\r
+                        *                             Speed USB devices - refer to the USB 2.0 specification.\r
+                        *\r
+                        *  \param[in] Token           Pipe data token, either \ref PIPE_TOKEN_SETUP, \ref PIPE_TOKEN_OUT or \ref PIPE_TOKEN_IN.\r
+                        *                             All pipes (except Control type) are unidirectional - data may only be read from or\r
+                        *                             written to the pipe bank based on its direction, not both.\r
+                        *\r
+                        *  \param[in] EndpointNumber  Endpoint index within the attached device that the pipe should interface to.\r
+                        *\r
+                        *  \param[in] Size            Size of the pipe's bank, where packets are stored before they are transmitted to\r
+                        *                             the USB device, or after they have been received from the USB device (depending on\r
+                        *                             the pipe's data direction). The bank size must indicate the maximum packet size that\r
+                        *                             the pipe can handle.\r
+                        *\r
+                        *  \param[in] Banks           Number of banks to use for the pipe being configured, a \c PIPE_BANK_* mask. More banks\r
+                        *                             uses more USB DPRAM, but offers better performance. Isochronous type pipes <b>must</b>\r
+                        *                             have at least two banks.\r
+                        *\r
+                        *  \note When the \c ORDERED_EP_CONFIG compile time option is used, Pipes <b>must</b> be configured in ascending order,\r
+                        *        or bank corruption will occur.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note Certain microcontroller model's pipes may have different maximum packet sizes based on the pipe's\r
+                        *        index - refer to the chosen microcontroller's datasheet to determine the maximum bank size for each pipe.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note The default control pipe should not be manually configured by the user application, as it is\r
+                        *        automatically configured by the library internally.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note This routine will automatically select the specified pipe upon success. Upon failure, the pipe which\r
+                        *        failed to reconfigure correctly will be selected.\r
+                        *\r
+                        *  \return Boolean \c true if the configuration succeeded, \c false otherwise.\r
+                        */\r
+                       bool Pipe_ConfigurePipe(const uint8_t Number,\r
+                                               const uint8_t Type,\r
+                                               const uint8_t Token,\r
+                                               const uint8_t EndpointNumber,\r
+                                               const uint16_t Size,\r
+                                               const uint8_t Banks);\r
+\r
+                       /** Spin-loops until the currently selected non-control pipe is ready for the next packed of data to be read\r
+                        *  or written to it, aborting in the case of an error condition (such as a timeout or device disconnect).\r
+                        *\r
+                        *  \ingroup Group_PipeRW_UC3\r
+                        *\r
+                        *  \return A value from the \ref Pipe_WaitUntilReady_ErrorCodes_t enum.\r
+                        */\r
+                       uint8_t Pipe_WaitUntilReady(void);\r
+\r
+                       /** Determines if a pipe has been bound to the given device endpoint address. If a pipe which is bound to the given\r
+                        *  endpoint is found, it is automatically selected.\r
+                        *\r
+                        *  \param[in] EndpointAddress Address and direction mask of the endpoint within the attached device to check.\r
+                        *\r
+                        *  \return Boolean \c true if a pipe bound to the given endpoint address of the specified direction is found,\r
+                        *          \c false otherwise.\r
+                        */\r
+                       bool Pipe_IsEndpointBound(const uint8_t EndpointAddress);\r
+\r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               /* Macros: */\r
+                       #if !defined(ENDPOINT_CONTROLEP)\r
+                               #define ENDPOINT_CONTROLEP          0\r
+                       #endif\r
+                       \r
+               /* Inline Functions: */\r
+                       static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)\r
+                       {\r
+                               uint8_t  MaskVal    = 0;\r
+                               uint16_t CheckBytes = 8;\r
+\r
+                               while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))\r
+                               {\r
+                                       MaskVal++;\r
+                                       CheckBytes <<= 1;\r
+                               }\r
+\r
+                               return (MaskVal << AVR32_USBB_PSIZE_OFFSET);\r
+                       }\r
+\r
+               /* Function Prototypes: */\r
+                       void Pipe_ClearPipes(void);\r
+       #endif\r
+\r
+       /* Disable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       }\r
+               #endif\r
+\r
+#endif\r
+\r
+/** @} */\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.c
new file mode 100644 (file)
index 0000000..40ac381
--- /dev/null
@@ -0,0 +1,203 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+#define  __INCLUDE_FROM_USB_DRIVER\r
+#define  __INCLUDE_FROM_USB_CONTROLLER_C\r
+#include "../USBController.h"\r
+\r
+#if (!defined(USB_HOST_ONLY) && !defined(USB_DEVICE_ONLY))\r
+volatile uint8_t USB_CurrentMode = USB_MODE_None;\r
+#endif\r
+\r
+#if !defined(USE_STATIC_OPTIONS)\r
+volatile uint8_t USB_Options;\r
+#endif\r
+\r
+void USB_Init(\r
+               #if defined(USB_CAN_BE_BOTH)\r
+               const uint8_t Mode\r
+               #endif\r
+\r
+               #if (defined(USB_CAN_BE_BOTH) && !defined(USE_STATIC_OPTIONS))\r
+               ,\r
+               #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))\r
+               void\r
+               #endif\r
+\r
+               #if !defined(USE_STATIC_OPTIONS)\r
+               const uint8_t Options\r
+               #endif\r
+               )\r
+{\r
+       #if !defined(USE_STATIC_OPTIONS)\r
+       USB_Options = Options;\r
+       #endif\r
+       \r
+       #if defined(USB_CAN_BE_BOTH)\r
+       if (Mode == USB_MODE_UID)\r
+       {\r
+               AVR32_USBB.USBCON.uide = true;\r
+               USB_INT_Enable(USB_INT_IDTI);\r
+               USB_CurrentMode = USB_GetUSBModeFromUID();\r
+       }\r
+       else\r
+       {\r
+               AVR32_USBB.USBCON.uide = false;\r
+               USB_CurrentMode = Mode;\r
+       }\r
+       #endif\r
+\r
+       USB_IsInitialized = true;\r
+\r
+       USB_ResetInterface();\r
+}\r
+\r
+void USB_Disable(void)\r
+{\r
+       USB_INT_DisableAllInterrupts();\r
+       USB_INT_ClearAllInterrupts();\r
+\r
+       USB_Detach();\r
+       USB_Controller_Disable();\r
+\r
+       USB_OTGPAD_Off();\r
+\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       USB_CurrentMode = USB_MODE_None;\r
+       #endif\r
+\r
+       AVR32_PM.GCCTRL[3].cen = false;\r
+\r
+       USB_IsInitialized = false;\r
+}\r
+\r
+void USB_ResetInterface(void)\r
+{\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       bool UIDModeSelectEnabled = AVR32_USBB.USBCON.uide;\r
+       #endif\r
+\r
+       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].pllsel = !(USB_Options & USB_OPT_GCLK_SRC_OSC);\r
+       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].oscsel = !(USB_Options & USB_OPT_GCLK_CHANNEL_0);\r
+       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].diven  = (F_CLOCK != USB_CLOCK_REQUIRED_FREQ);\r
+       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].div    = (F_CLOCK == USB_CLOCK_REQUIRED_FREQ) ? 0 : (uint32_t)(((F_CLOCK / USB_CLOCK_REQUIRED_FREQ) - 1) / 2);\r
+       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].cen    = true;\r
+\r
+       USB_INT_DisableAllInterrupts();\r
+       USB_INT_ClearAllInterrupts();\r
+\r
+       USB_Controller_Reset();\r
+\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       if (UIDModeSelectEnabled)\r
+       {\r
+               AVR32_USBB.USBCON.uide = true;\r
+               USB_INT_Enable(USB_INT_IDTI);\r
+       }\r
+       #endif\r
+\r
+       USB_CLK_Unfreeze();\r
+\r
+       if (USB_CurrentMode == USB_MODE_Device)\r
+       {\r
+               #if defined(USB_CAN_BE_DEVICE)\r
+               AVR32_USBB.USBCON.uimod = true;\r
+               USB_Init_Device();\r
+               #endif\r
+       }\r
+       else if (USB_CurrentMode == USB_MODE_Host)\r
+       {\r
+               #if defined(USB_CAN_BE_HOST)\r
+               AVR32_USBB.USBCON.uimod = false;\r
+               USB_Init_Host();\r
+               #endif\r
+       }\r
+\r
+       USB_OTGPAD_On();\r
+}\r
+\r
+#if defined(USB_CAN_BE_DEVICE)\r
+static void USB_Init_Device(void)\r
+{\r
+       USB_DeviceState          = DEVICE_STATE_Unattached;\r
+       USB_ConfigurationNumber  = 0;\r
+\r
+       #if !defined(NO_DEVICE_REMOTE_WAKEUP)\r
+       USB_RemoteWakeupEnabled  = false;\r
+       #endif\r
+\r
+       #if !defined(NO_DEVICE_SELF_POWER)\r
+       USB_CurrentlySelfPowered = false;\r
+       #endif\r
+\r
+       #if !defined(FIXED_CONTROL_ENDPOINT_SIZE)\r
+       USB_Descriptor_Device_t* DeviceDescriptorPtr;\r
+\r
+       if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR)\r
+         USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size;\r
+       #endif\r
+\r
+       if (USB_Options & USB_DEVICE_OPT_LOWSPEED)\r
+         USB_Device_SetLowSpeed();\r
+       else\r
+         USB_Device_SetFullSpeed();\r
+\r
+       USB_INT_Enable(USB_INT_VBUSTI);\r
+\r
+       Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,\r
+                                                          ENDPOINT_DIR_OUT, USB_ControlEndpointSize,\r
+                                                          ENDPOINT_BANK_SINGLE);\r
+\r
+       USB_INT_Clear(USB_INT_SUSPI);\r
+       USB_INT_Enable(USB_INT_SUSPI);\r
+       USB_INT_Enable(USB_INT_EORSTI);\r
+\r
+       USB_Attach();\r
+       USB_Device_SetDeviceAddress(0);\r
+}\r
+#endif\r
+\r
+#if defined(USB_CAN_BE_HOST)\r
+static void USB_Init_Host(void)\r
+{\r
+       USB_HostState       = HOST_STATE_Unattached;\r
+       USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
+\r
+       USB_Host_HostMode_On();\r
+\r
+       USB_Host_VBUS_Auto_On();\r
+\r
+       USB_INT_Enable(USB_INT_DCONNI);\r
+       USB_INT_Enable(USB_INT_BCERRI);\r
+\r
+       USB_Attach();\r
+}\r
+#endif\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h b/LUFA/Drivers/USB/Core/UC3/USBController_UC3.h
new file mode 100644 (file)
index 0000000..c975bb3
--- /dev/null
@@ -0,0 +1,379 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *  \brief USB Controller definitions for the AVR32 UC3 microcontrollers.\r
+ *  \copydetails Group_USBManagement_UC3\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
+ *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
+ */\r
+\r
+/** \ingroup Group_USBManagement\r
+ *  \defgroup Group_USBManagement_UC3 USB Interface Management (UC3)\r
+ *  \brief USB Controller definitions for the AVR32 UC3 microcontrollers.\r
+ *\r
+ *  Functions, macros, variables, enums and types related to the setup and management of the USB interface.\r
+ *\r
+ *  @{\r
+ */\r
+\r
+#ifndef __USBCONTROLLER_UC3_H__\r
+#define __USBCONTROLLER_UC3_H__\r
+\r
+       /* Includes: */\r
+               #include "../../../../Common/Common.h"\r
+               #include "../USBMode.h"\r
+               #include "../Events.h"\r
+               #include "../USBTask.h"\r
+               #include "../USBInterrupt.h"\r
+\r
+               #if defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__)\r
+                       #include "../Host.h"\r
+                       #include "../OTG.h"\r
+                       #include "../Pipe.h"\r
+                       #include "../HostStandardReq.h"\r
+                       #include "../PipeStream.h"\r
+               #endif\r
+\r
+               #if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__)\r
+                       #include "../Device.h"\r
+                       #include "../Endpoint.h"\r
+                       #include "../DeviceStandardReq.h"\r
+                       #include "../EndpointStream.h"\r
+               #endif\r
+\r
+       /* Enable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       extern "C" {\r
+               #endif\r
+\r
+       /* Preprocessor Checks and Defines: */\r
+               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
+               #endif\r
+\r
+       /* Public Interface - May be used in end-application: */\r
+               /* Macros: */\r
+                       /** \name USB Controller Option Masks */\r
+                       //@{\r
+                       /** Selects one of the system's main clock oscillators as the input clock to the USB Generic Clock source\r
+                        *  generation module. This indicates that an external oscillator should be used directly instead of an\r
+                        *  internal PLL clock source.\r
+                        */\r
+                       #define USB_OPT_GCLK_SRC_OSC               (1 << 1)\r
+\r
+                       /** Selects one of the system's PLL oscillators as the input clock to the USB Generic Clock source\r
+                        *  generation module. This indicates that one of the device's PLL outputs should be used instead of an\r
+                        *  external oscillator source.\r
+                        */\r
+                       #define USB_OPT_GCLK_SRC_PLL               (0 << 1)\r
+\r
+                       /** Selects PLL or External Oscillator 0 as the USB Generic Clock source module input clock. */\r
+                       #define USB_OPT_GCLK_CHANNEL_0             (1 << 2)\r
+\r
+                       /** Selects PLL or External Oscillator 1 as the USB Generic Clock source module input clock. */\r
+                       #define USB_OPT_GCLK_CHANNEL_1             (0 << 2)\r
+                       //@}\r
+\r
+                       /** \name Endpoint/Pipe Type Masks */\r
+                       //@{\r
+                       /** Mask for a CONTROL type endpoint or pipe.\r
+                        *\r
+                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
+                        */\r
+                       #define EP_TYPE_CONTROL                    0x00\r
+\r
+                       /** Mask for an ISOCHRONOUS type endpoint or pipe.\r
+                        *\r
+                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
+                        */\r
+                       #define EP_TYPE_ISOCHRONOUS                0x01\r
+\r
+                       /** Mask for a BULK type endpoint or pipe.\r
+                        *\r
+                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
+                        */\r
+                       #define EP_TYPE_BULK                       0x02\r
+\r
+                       /** Mask for an INTERRUPT type endpoint or pipe.\r
+                        *\r
+                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
+                        */\r
+                       #define EP_TYPE_INTERRUPT                  0x03\r
+                       //@}\r
+\r
+                       #if !defined(USB_STREAM_TIMEOUT_MS) || defined(__DOXYGEN__)\r
+                               /** Constant for the maximum software timeout period of the USB data stream transfer functions\r
+                                *  (both control and standard) when in either device or host mode. If the next packet of a stream\r
+                                *  is not received or acknowledged within this time period, the stream function will fail.\r
+                                *\r
+                                *  This value may be overridden in the user project makefile as the value of the\r
+                                *  \ref USB_STREAM_TIMEOUT_MS token, and passed to the compiler using the -D switch.\r
+                                */\r
+                               #define USB_STREAM_TIMEOUT_MS       100\r
+                       #endif\r
+\r
+               /* Inline Functions: */\r
+                       /** Determines if the VBUS line is currently high (i.e. the USB host is supplying power).\r
+                        *\r
+                        *  \return Boolean \c true if the VBUS line is currently detecting power from a host, \c false otherwise.\r
+                        */\r
+                       static inline bool USB_VBUS_GetStatus(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline bool USB_VBUS_GetStatus(void)\r
+                       {\r
+                               return AVR32_USBB.USBSTA.vbus;\r
+                       }\r
+\r
+                       /** Detaches the device from the USB bus. This has the effect of removing the device from any\r
+                        *  attached host, ceasing USB communications. If no host is present, this prevents any host from\r
+                        *  enumerating the device once attached until \ref USB_Attach() is called.\r
+                        */\r
+                       static inline void USB_Detach(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Detach(void)\r
+                       {\r
+                               AVR32_USBB.UDCON.detach = true;\r
+                       }\r
+\r
+                       /** Attaches the device to the USB bus. This announces the device's presence to any attached\r
+                        *  USB host, starting the enumeration process. If no host is present, attaching the device\r
+                        *  will allow for enumeration once a host is connected to the device.\r
+                        *\r
+                        *  This is inexplicably also required for proper operation while in host mode, to enable the\r
+                        *  attachment of a device to the host. This is despite the bit being located in the device-mode\r
+                        *  register and despite the datasheet making no mention of its requirement in host mode.\r
+                        */\r
+                       static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Attach(void)\r
+                       {\r
+                               AVR32_USBB.UDCON.detach = false;\r
+                       }\r
+\r
+               /* Function Prototypes: */\r
+                       /** Main function to initialize and start the USB interface. Once active, the USB interface will\r
+                        *  allow for device connection to a host when in device mode, or for device enumeration while in\r
+                        *  host mode.\r
+                        *\r
+                        *  As the USB library relies on interrupts for the device and host mode enumeration processes,\r
+                        *  the user must enable global interrupts before or shortly after this function is called. In\r
+                        *  device mode, interrupts must be enabled within 500ms of this function being called to ensure\r
+                        *  that the host does not time out whilst enumerating the device. In host mode, interrupts may be\r
+                        *  enabled at the application's leisure however enumeration will not begin of an attached device\r
+                        *  until after this has occurred.\r
+                        *\r
+                        *  Calling this function when the USB interface is already initialized will cause a complete USB\r
+                        *  interface reset and re-enumeration.\r
+                        *\r
+                        *  \param[in] Mode     This is a mask indicating what mode the USB interface is to be initialized to, a value\r
+                        *                      from the \ref USB_Modes_t enum.\r
+                        *\r
+                        *  \param[in] Options  Mask indicating the options which should be used when initializing the USB\r
+                        *                      interface to control the USB interface's behaviour. This should be comprised of\r
+                        *                      a \c USB_OPT_REG_* mask to control the regulator, a \c USB_OPT_*_PLL mask to control the\r
+                        *                      PLL, and a \c USB_DEVICE_OPT_* mask (when the device mode is enabled) to set the device\r
+                        *                      mode speed.\r
+                        *\r
+                        *  \note To reduce the FLASH requirements of the library if only device or host mode is required,\r
+                        *        the mode can be statically set in the project makefile by defining the token \c USB_DEVICE_ONLY\r
+                        *        (for device mode) or \c USB_HOST_ONLY (for host mode), passing the token to the compiler\r
+                        *        via the -D switch. If the mode is statically set, this parameter does not exist in the\r
+                        *        function prototype.\r
+                        *        \n\n\r
+                        *\r
+                        *  \note To reduce the FLASH requirements of the library if only fixed settings are are required,\r
+                        *        the options may be set statically in the same manner as the mode (see the Mode parameter of\r
+                        *        this function). To statically set the USB options, pass in the \c USE_STATIC_OPTIONS token,\r
+                        *        defined to the appropriate options masks. When the options are statically set, this\r
+                        *        parameter does not exist in the function prototype.\r
+                        *\r
+                        *  \see \ref Group_Device for the \c USB_DEVICE_OPT_* masks.\r
+                        */\r
+                       void USB_Init(\r
+                                      #if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)\r
+                                      const uint8_t Mode\r
+                                      #endif\r
+\r
+                                      #if (defined(USB_CAN_BE_BOTH) && !defined(USE_STATIC_OPTIONS)) || defined(__DOXYGEN__)\r
+                                      ,\r
+                                      #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))\r
+                                      void\r
+                                      #endif\r
+\r
+                                      #if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)\r
+                                      const uint8_t Options\r
+                                      #endif\r
+                                      );\r
+\r
+                       /** Shuts down the USB interface. This turns off the USB interface after deallocating all USB FIFO\r
+                        *  memory, endpoints and pipes. When turned off, no USB functionality can be used until the interface\r
+                        *  is restarted with the \ref USB_Init() function.\r
+                        */\r
+                       void USB_Disable(void);\r
+\r
+                       /** Resets the interface, when already initialized. This will re-enumerate the device if already connected\r
+                        *  to a host, or re-enumerate an already attached device when in host mode.\r
+                        */\r
+                       void USB_ResetInterface(void);\r
+\r
+               /* Global Variables: */\r
+                       #if (!defined(USB_HOST_ONLY) && !defined(USB_DEVICE_ONLY)) || defined(__DOXYGEN__)\r
+                               /** Indicates the mode that the USB interface is currently initialized to, a value from the\r
+                                *  \ref USB_Modes_t enum.\r
+                                *\r
+                                *  \note This variable should be treated as read-only in the user application, and never manually\r
+                                *        changed in value.\r
+                                *        \n\n\r
+                                *\r
+                                *  \note When the controller is initialized into UID auto-detection mode, this variable will hold the\r
+                                *        currently selected USB mode (i.e. \ref USB_MODE_Device or \ref USB_MODE_Host). If the controller\r
+                                *        is fixed into a specific mode (either through the \c USB_DEVICE_ONLY or \c USB_HOST_ONLY compile time\r
+                                *        options, or a limitation of the USB controller in the chosen device model) this will evaluate to\r
+                                *        a constant of the appropriate value and will never evaluate to \ref USB_MODE_None even when the\r
+                                *        USB interface is not initialized.\r
+                                */\r
+                               extern volatile uint8_t USB_CurrentMode;\r
+                       #elif defined(USB_HOST_ONLY)\r
+                               #define USB_CurrentMode USB_MODE_Host\r
+                       #elif defined(USB_DEVICE_ONLY)\r
+                               #define USB_CurrentMode USB_MODE_Device\r
+                       #endif\r
+\r
+                       #if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)\r
+                               /** Indicates the current USB options that the USB interface was initialized with when \ref USB_Init()\r
+                                *  was called. This value will be one of the \c USB_MODE_* masks defined elsewhere in this module.\r
+                                *\r
+                                *  \note This variable should be treated as read-only in the user application, and never manually\r
+                                *        changed in value.\r
+                                */\r
+                               extern volatile uint8_t USB_Options;\r
+                       #elif defined(USE_STATIC_OPTIONS)\r
+                               #define USB_Options USE_STATIC_OPTIONS\r
+                       #endif\r
+\r
+               /* Enums: */\r
+                       /** Enum for the possible USB controller modes, for initialization via \ref USB_Init() and indication back to the\r
+                        *  user application via \ref USB_CurrentMode.\r
+                        */\r
+                       enum USB_Modes_t\r
+                       {\r
+                               USB_MODE_None   = 0, /**< Indicates that the controller is currently not initialized in any specific USB mode. */\r
+                               USB_MODE_Device = 1, /**< Indicates that the controller is currently initialized in USB Device mode. */\r
+                               USB_MODE_Host   = 2, /**< Indicates that the controller is currently initialized in USB Host mode. */\r
+                               USB_MODE_UID    = 3, /**< Indicates that the controller should determine the USB mode from the UID pin of the\r
+                                                     *   USB connector.\r
+                                                     */\r
+                       };\r
+\r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               /* Macros: */                   \r
+                       #if defined(USB_SERIES_UC3A3_AVR)\r
+                               #define USB_CLOCK_REQUIRED_FREQ  12000000UL\r
+                       #else\r
+                               #define USB_CLOCK_REQUIRED_FREQ  48000000UL\r
+                       #endif\r
+       \r
+               /* Function Prototypes: */\r
+                       #if defined(__INCLUDE_FROM_USB_CONTROLLER_C)\r
+                               #if defined(USB_CAN_BE_DEVICE)\r
+                               static void USB_Init_Device(void);\r
+                               #endif\r
+\r
+                               #if defined(USB_CAN_BE_HOST)\r
+                               static void USB_Init_Host(void);\r
+                               #endif\r
+                       #endif\r
+\r
+               /* Inline Functions: */\r
+                       static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_OTGPAD_On(void)\r
+                       {\r
+                               AVR32_USBB.USBCON.otgpade = true;\r
+                       }\r
+\r
+                       static inline void USB_OTGPAD_Off(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_OTGPAD_Off(void)\r
+                       {\r
+                               AVR32_USBB.USBCON.otgpade = false;\r
+                       }\r
+\r
+                       static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_CLK_Freeze(void)\r
+                       {\r
+                               AVR32_USBB.USBCON.frzclk = true;\r
+                       }\r
+\r
+                       static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_CLK_Unfreeze(void)\r
+                       {\r
+                               AVR32_USBB.USBCON.frzclk = false;\r
+                       }\r
+\r
+                       static inline void USB_Controller_Enable(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Controller_Enable(void)\r
+                       {\r
+                               AVR32_USBB.USBCON.usbe = true;\r
+                       }\r
+\r
+                       static inline void USB_Controller_Disable(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Controller_Disable(void)\r
+                       {\r
+                               AVR32_USBB.USBCON.usbe = false;\r
+                       }\r
+\r
+                       static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_Controller_Reset(void)\r
+                       {\r
+                               AVR32_USBB.USBCON.usbe = false;\r
+                               AVR32_USBB.USBCON.usbe = true;\r
+                       }\r
+\r
+                       #if defined(USB_CAN_BE_BOTH)\r
+                       static inline uint8_t USB_GetUSBModeFromUID(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
+                       static inline uint8_t USB_GetUSBModeFromUID(void)\r
+                       {\r
+                               if (AVR32_USBB.USBSTA.id)\r
+                                 return USB_MODE_Device;\r
+                               else\r
+                                 return USB_MODE_Host;\r
+                       }\r
+                       #endif\r
+\r
+       #endif\r
+\r
+       /* Disable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       }\r
+               #endif\r
+\r
+#endif\r
+\r
+/** @} */\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.c
new file mode 100644 (file)
index 0000000..aee8940
--- /dev/null
@@ -0,0 +1,204 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+#define  __INCLUDE_FROM_USB_DRIVER\r
+#include "../USBInterrupt.h"\r
+\r
+void USB_INT_DisableAllInterrupts(void)\r
+{\r
+       AVR32_USBB.USBCON.vbuste = false;\r
+       AVR32_USBB.USBCON.idte   = false;\r
+\r
+       AVR32_USBB.uhinteclr = 0xFFFFFFFF;\r
+       AVR32_USBB.udinteclr = 0xFFFFFFFF;\r
+}\r
+\r
+void USB_INT_ClearAllInterrupts(void)\r
+{\r
+       AVR32_USBB.USBSTACLR.vbustic = true;\r
+       AVR32_USBB.USBSTACLR.idtic   = true;\r
+\r
+       AVR32_USBB.uhintclr = 0xFFFFFFFF;\r
+       AVR32_USBB.udintclr = 0xFFFFFFFF;\r
+}\r
+\r
+ISR(USB_GEN_vect)\r
+{\r
+       #if defined(USB_CAN_BE_DEVICE)\r
+       #if !defined(NO_SOF_EVENTS)\r
+       if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))\r
+       {\r
+               USB_INT_Clear(USB_INT_SOFI);\r
+\r
+               EVENT_USB_Device_StartOfFrame();\r
+       }\r
+       #endif\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_VBUSTI) && USB_INT_IsEnabled(USB_INT_VBUSTI))\r
+       {\r
+               USB_INT_Clear(USB_INT_VBUSTI);\r
+\r
+               if (USB_VBUS_GetStatus())\r
+               {\r
+                       USB_DeviceState = DEVICE_STATE_Powered;\r
+                       EVENT_USB_Device_Connect();\r
+               }\r
+               else\r
+               {\r
+                       USB_DeviceState = DEVICE_STATE_Unattached;\r
+                       EVENT_USB_Device_Disconnect();\r
+               }\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI))\r
+       {\r
+               USB_INT_Clear(USB_INT_SUSPI);\r
+\r
+               USB_INT_Disable(USB_INT_SUSPI);\r
+               USB_INT_Enable(USB_INT_WAKEUPI);\r
+\r
+               USB_CLK_Freeze();\r
+\r
+               USB_DeviceState = DEVICE_STATE_Suspended;\r
+               EVENT_USB_Device_Suspend();\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI))\r
+       {\r
+               USB_CLK_Unfreeze();\r
+\r
+               USB_INT_Clear(USB_INT_WAKEUPI);\r
+\r
+               USB_INT_Disable(USB_INT_WAKEUPI);\r
+               USB_INT_Enable(USB_INT_SUSPI);\r
+\r
+               if (USB_ConfigurationNumber)\r
+                 USB_DeviceState = DEVICE_STATE_Configured;\r
+               else\r
+                 USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;\r
+\r
+               EVENT_USB_Device_WakeUp();\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI))\r
+       {\r
+               USB_INT_Clear(USB_INT_EORSTI);\r
+\r
+               USB_DeviceState         = DEVICE_STATE_Default;\r
+               USB_ConfigurationNumber = 0;\r
+\r
+               USB_INT_Clear(USB_INT_SUSPI);\r
+               USB_INT_Disable(USB_INT_SUSPI);\r
+               USB_INT_Enable(USB_INT_WAKEUPI);\r
+\r
+               USB_Device_SetDeviceAddress(0);\r
+               Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,\r
+                                          ENDPOINT_DIR_OUT, USB_ControlEndpointSize,\r
+                                          ENDPOINT_BANK_SINGLE);\r
+\r
+               EVENT_USB_Device_Reset();\r
+       }\r
+       #endif\r
+\r
+       #if defined(USB_CAN_BE_HOST)\r
+       #if !defined(NO_SOF_EVENTS)\r
+       if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))\r
+       {\r
+               USB_INT_Clear(USB_INT_HSOFI);\r
+\r
+               EVENT_USB_Host_StartOfFrame();\r
+       }\r
+       #endif\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))\r
+       {\r
+               USB_INT_Clear(USB_INT_DDISCI);\r
+               USB_INT_Clear(USB_INT_DCONNI);\r
+               USB_INT_Disable(USB_INT_DDISCI);\r
+\r
+               EVENT_USB_Host_DeviceUnattached();\r
+\r
+               USB_ResetInterface();\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))\r
+       {\r
+               USB_INT_Clear(USB_INT_VBERRI);\r
+\r
+               USB_Host_VBUS_Manual_Off();\r
+               USB_Host_VBUS_Auto_Off();\r
+\r
+               EVENT_USB_Host_HostError(HOST_ERROR_VBusVoltageDip);\r
+               EVENT_USB_Host_DeviceUnattached();\r
+\r
+               USB_HostState = HOST_STATE_Unattached;\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_DCONNI) && USB_INT_IsEnabled(USB_INT_DCONNI))\r
+       {\r
+               USB_INT_Clear(USB_INT_DCONNI);\r
+               USB_INT_Disable(USB_INT_DCONNI);\r
+\r
+               EVENT_USB_Host_DeviceAttached();\r
+\r
+               USB_INT_Enable(USB_INT_DDISCI);\r
+\r
+               USB_HostState = HOST_STATE_Powered;\r
+       }\r
+\r
+       if (USB_INT_HasOccurred(USB_INT_BCERRI) && USB_INT_IsEnabled(USB_INT_BCERRI))\r
+       {\r
+               USB_INT_Clear(USB_INT_BCERRI);\r
+\r
+               EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);\r
+               EVENT_USB_Host_DeviceUnattached();\r
+\r
+               USB_ResetInterface();\r
+       }\r
+       #endif\r
+\r
+       #if defined(USB_CAN_BE_BOTH)\r
+       if (USB_INT_HasOccurred(USB_INT_IDTI) && USB_INT_IsEnabled(USB_INT_IDTI))\r
+       {\r
+               USB_INT_Clear(USB_INT_IDTI);\r
+\r
+               if (USB_DeviceState != DEVICE_STATE_Unattached)\r
+                 EVENT_USB_Device_Disconnect();\r
+\r
+               if (USB_HostState != HOST_STATE_Unattached)\r
+                 EVENT_USB_Host_DeviceUnattached();\r
+\r
+               USB_CurrentMode = USB_GetUSBModeFromUID();\r
+               USB_ResetInterface();\r
+\r
+               EVENT_USB_UIDChange();\r
+       }\r
+       #endif\r
+}\r
diff --git a/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h b/LUFA/Drivers/USB/Core/UC3/USBInterrupt_UC3.h
new file mode 100644 (file)
index 0000000..1192433
--- /dev/null
@@ -0,0 +1,344 @@
+/*\r
+             LUFA Library\r
+     Copyright (C) Dean Camera, 2011.\r
+\r
+  dean [at] fourwalledcubicle [dot] com\r
+           www.lufa-lib.org\r
+*/\r
+\r
+/*\r
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+  Permission to use, copy, modify, distribute, and sell this\r
+  software and its documentation for any purpose is hereby granted\r
+  without fee, provided that the above copyright notice appear in\r
+  all copies and that both that the copyright notice and this\r
+  permission notice and warranty disclaimer appear in supporting\r
+  documentation, and that the name of the author not be used in\r
+  advertising or publicity pertaining to distribution of the\r
+  software without specific, written prior permission.\r
+\r
+  The author disclaim all warranties with regard to this\r
+  software, including all implied warranties of merchantability\r
+  and fitness.  In no event shall the author be liable for any\r
+  special, indirect or consequential damages or any damages\r
+  whatsoever resulting from loss of use, data or profits, whether\r
+  in an action of contract, negligence or other tortious action,\r
+  arising out of or in connection with the use or performance of\r
+  this software.\r
+*/\r
+\r
+/** \file\r
+ *  \brief USB Controller Interrupt definitions for the AVR32 UC3 microcontrollers.\r
+ *\r
+ *  This file contains definitions required for the correct handling of low level USB service routine interrupts\r
+ *  from the USB controller.\r
+ *\r
+ *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
+ *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
+ */\r
+\r
+#ifndef __USBINTERRUPT_UC3_H__\r
+#define __USBINTERRUPT_UC3_H__\r
+\r
+       /* Includes: */\r
+               #include "../../../../Common/Common.h"\r
+\r
+       /* Enable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       extern "C" {\r
+               #endif\r
+\r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
+               #endif\r
+\r
+       /* Private Interface - For use in library only: */\r
+       #if !defined(__DOXYGEN__)\r
+               /* Macros: */\r
+                       enum USB_Interrupts_t\r
+                       {\r
+                               USB_INT_VBUSTI  = 0,\r
+                               #if (defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__))\r
+                               USB_INT_IDTI    = 1,\r
+                               #endif\r
+                               #if (defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__))\r
+                               USB_INT_WAKEUPI = 2,\r
+                               USB_INT_SUSPI   = 3,\r
+                               USB_INT_EORSTI  = 4,\r
+                               USB_INT_SOFI    = 5,\r
+                               #endif\r
+                               #if (defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__))                  \r
+                               USB_INT_HSOFI   = 6,\r
+                               USB_INT_DCONNI  = 7,\r
+                               USB_INT_DDISCI  = 8,\r
+                               USB_INT_RSTI    = 9,\r
+                               USB_INT_BCERRI  = 10,\r
+                               USB_INT_VBERRI  = 11,\r
+                               #endif\r
+                       };\r
+               \r
+               /* ISR Prototypes: */\r
+                       ISR(USB_GEN_vect);\r
+               \r
+               /* Inline Functions: */\r
+                       static inline void USB_INT_Enable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_INT_Enable(const uint8_t Interrupt)\r
+                       {                       \r
+                               switch (Interrupt)\r
+                               {\r
+                                       case USB_INT_VBUSTI:\r
+                                               AVR32_USBB.USBCON.vbuste      = true;\r
+                                               break;\r
+                                       #if defined(USB_CAN_BE_BOTH)\r
+                                       case USB_INT_IDTI:\r
+                                               AVR32_USBB.USBCON.idte        = true;\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_DEVICE)\r
+                                       case USB_INT_WAKEUPI:\r
+                                               AVR32_USBB.UDINTESET.wakeupes = true;\r
+                                               break;\r
+                                       case USB_INT_SUSPI:\r
+                                               AVR32_USBB.UDINTESET.suspes   = true;\r
+                                               break;\r
+                                       case USB_INT_EORSTI:\r
+                                               AVR32_USBB.UDINTESET.eorstes  = true;\r
+                                               break;\r
+                                       case USB_INT_SOFI:\r
+                                               AVR32_USBB.UDINTESET.sofes    = true;\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               AVR32_USBB.UHINTESET.hsofies  = true;\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               AVR32_USBB.UHINTESET.dconnies = true;\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               AVR32_USBB.UHINTESET.ddiscies = true;\r
+                                               break;\r
+                                       case USB_INT_RSTI:\r
+                                               AVR32_USBB.UHINTESET.rsties   = true;\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               AVR32_USBB.USBCON.bcerre      = true;\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               AVR32_USBB.USBCON.vberre      = true;\r
+                                               break;\r
+                                       #endif\r
+                               }\r
+                       }\r
+\r
+                       static inline void USB_INT_Disable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_INT_Disable(const uint8_t Interrupt)\r
+                       {\r
+                               switch (Interrupt)\r
+                               {\r
+                                       case USB_INT_VBUSTI:\r
+                                               AVR32_USBB.USBCON.vbuste      = false;\r
+                                               break;\r
+                                       #if defined(USB_CAN_BE_BOTH)\r
+                                       case USB_INT_IDTI:\r
+                                               AVR32_USBB.USBCON.idte        = false;\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_DEVICE)\r
+                                       case USB_INT_WAKEUPI:\r
+                                               AVR32_USBB.UDINTECLR.wakeupec = true;\r
+                                               break;\r
+                                       case USB_INT_SUSPI:\r
+                                               AVR32_USBB.UDINTECLR.suspec   = true;\r
+                                               break;\r
+                                       case USB_INT_EORSTI:\r
+                                               AVR32_USBB.UDINTECLR.eorstec  = true;\r
+                                               break;\r
+                                       case USB_INT_SOFI:\r
+                                               AVR32_USBB.UDINTECLR.sofec    = true;\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               AVR32_USBB.UHINTECLR.hsofiec  = true;\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               AVR32_USBB.UHINTECLR.dconniec = true;\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               AVR32_USBB.UHINTECLR.ddisciec = true;\r
+                                               break;\r
+                                       case USB_INT_RSTI:\r
+                                               AVR32_USBB.UHINTECLR.rstiec   = true;\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               AVR32_USBB.USBCON.bcerre      = false;\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               AVR32_USBB.USBCON.vberre      = false;\r
+                                               break;\r
+                                       #endif\r
+                               }\r
+                       }\r
+                       \r
+                       static inline void USB_INT_Clear(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
+                       static inline void USB_INT_Clear(const uint8_t Interrupt)\r
+                       {\r
+                               switch (Interrupt)\r
+                               {\r
+                                       case USB_INT_VBUSTI:\r
+                                               AVR32_USBB.USBSTACLR.vbustic = true;\r
+                                               (void)AVR32_USBB.USBSTACLR;\r
+                                               break;\r
+                                       #if defined(USB_CAN_BE_BOTH)\r
+                                       case USB_INT_IDTI:\r
+                                               AVR32_USBB.USBSTACLR.idtic   = true;\r
+                                               (void)AVR32_USBB.USBSTACLR;\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_DEVICE)\r
+                                       case USB_INT_WAKEUPI:\r
+                                               AVR32_USBB.UDINTCLR.wakeupc  = true;\r
+                                               (void)AVR32_USBB.UDINTCLR;\r
+                                               break;\r
+                                       case USB_INT_SUSPI:\r
+                                               AVR32_USBB.UDINTCLR.suspc    = true;\r
+                                               (void)AVR32_USBB.UDINTCLR;\r
+                                               break;\r
+                                       case USB_INT_EORSTI:\r
+                                               AVR32_USBB.UDINTCLR.eorstc   = true;\r
+                                               (void)AVR32_USBB.UDINTCLR;\r
+                                               break;\r
+                                       case USB_INT_SOFI:\r
+                                               AVR32_USBB.UDINTCLR.sofc     = true;\r
+                                               (void)AVR32_USBB.UDINTCLR;\r
+                                               break;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               AVR32_USBB.UHINTCLR.hsofic   = true;\r
+                                               (void)AVR32_USBB.UHINTCLR;\r
+                                               break;\r
+                                       case USB_INT_DCONNI:\r
+                                               AVR32_USBB.UHINTCLR.dconnic  = true;\r
+                                               (void)AVR32_USBB.UHINTCLR;\r
+                                               break;\r
+                                       case USB_INT_DDISCI:\r
+                                               AVR32_USBB.UHINTCLR.ddiscic  = true;\r
+                                               (void)AVR32_USBB.UHINTCLR;\r
+                                               break;\r
+                                       case USB_INT_RSTI:\r
+                                               AVR32_USBB.UHINTCLR.rstic    = true;\r
+                                               (void)AVR32_USBB.UHINTCLR;\r
+                                               break;\r
+                                       case USB_INT_BCERRI:\r
+                                               AVR32_USBB.USBSTACLR.bcerric = true;\r
+                                               (void)AVR32_USBB.USBSTACLR;\r
+                                               break;\r
+                                       case USB_INT_VBERRI:\r
+                                               AVR32_USBB.USBSTACLR.vberric = true;\r
+                                               (void)AVR32_USBB.USBSTACLR;\r
+                                               break;\r
+                                       #endif\r
+                               }\r
+                       }\r
+                       \r
+                       static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;\r
+                       static inline bool USB_INT_IsEnabled(const uint8_t Interrupt)\r
+                       {\r
+                               switch (Interrupt)\r
+                               {\r
+                                       case USB_INT_VBUSTI:\r
+                                               return AVR32_USBB.USBCON.vbuste;\r
+                                       #if defined(USB_CAN_BE_BOTH)\r
+                                       case USB_INT_IDTI:\r
+                                               return AVR32_USBB.USBCON.idte;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_DEVICE)\r
+                                       case USB_INT_WAKEUPI:\r
+                                               return AVR32_USBB.UDINTE.wakeupe;\r
+                                       case USB_INT_SUSPI:\r
+                                               return AVR32_USBB.UDINTE.suspe;\r
+                                       case USB_INT_EORSTI:\r
+                                               return AVR32_USBB.UDINTE.eorste;\r
+                                       case USB_INT_SOFI:\r
+                                               return AVR32_USBB.UDINTE.sofe;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)                                    \r
+                                       case USB_INT_HSOFI:\r
+                                               return AVR32_USBB.UHINTE.hsofie;\r
+                                       case USB_INT_DCONNI:\r
+                                               return AVR32_USBB.UHINTE.dconnie;\r
+                                       case USB_INT_DDISCI:\r
+                                               return AVR32_USBB.UHINTE.ddiscie;\r
+                                       case USB_INT_RSTI:\r
+                                               return AVR32_USBB.UHINTE.rstie;\r
+                                       case USB_INT_BCERRI:\r
+                                               return AVR32_USBB.USBCON.bcerre;\r
+                                       case USB_INT_VBERRI:\r
+                                               return AVR32_USBB.USBCON.vberre;\r
+                                       #endif\r
+                               }\r
+                               \r
+                               return false;\r
+                       }\r
+               \r
+                       static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;\r
+                       static inline bool USB_INT_HasOccurred(const uint8_t Interrupt)\r
+                       {\r
+                               switch (Interrupt)\r
+                               {\r
+                                       case USB_INT_VBUSTI:\r
+                                               return AVR32_USBB.USBSTA.vbusti;\r
+                                       #if defined(USB_CAN_BE_BOTH)\r
+                                       case USB_INT_IDTI:\r
+                                               return AVR32_USBB.USBSTA.idti;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_DEVICE)\r
+                                       case USB_INT_WAKEUPI:\r
+                                               return AVR32_USBB.UDINT.wakeup;\r
+                                       case USB_INT_SUSPI:\r
+                                               return AVR32_USBB.UDINT.susp;\r
+                                       case USB_INT_EORSTI:\r
+                                               return AVR32_USBB.UDINT.eorst;\r
+                                       case USB_INT_SOFI:\r
+                                               return AVR32_USBB.UDINT.sof;\r
+                                       #endif\r
+                                       #if defined(USB_CAN_BE_HOST)\r
+                                       case USB_INT_HSOFI:\r
+                                               return AVR32_USBB.UHINT.hsofi;\r
+                                       case USB_INT_DCONNI:\r
+                                               return AVR32_USBB.UHINT.dconni;\r
+                                       case USB_INT_DDISCI:\r
+                                               return AVR32_USBB.UHINT.ddisci;\r
+                                       case USB_INT_RSTI:\r
+                                               return AVR32_USBB.UHINT.rsti;\r
+                                       case USB_INT_BCERRI:\r
+                                               return AVR32_USBB.USBSTA.bcerri;\r
+                                       case USB_INT_VBERRI:\r
+                                               return AVR32_USBB.USBSTA.vberri;\r
+                                       #endif\r
+                               }\r
+\r
+                               return false;\r
+                       }\r
+\r
+               /* Includes: */\r
+                       #include "../USBMode.h"\r
+                       #include "../Events.h"\r
+                       #include "../USBController.h"\r
+\r
+               /* Function Prototypes: */\r
+                       void USB_INT_ClearAllInterrupts(void);\r
+                       void USB_INT_DisableAllInterrupts(void);\r
+       #endif\r
+\r
+       /* Disable C linkage for C++ Compilers: */\r
+               #if defined(__cplusplus)\r
+                       }\r
+               #endif\r
+\r
+#endif\r
+\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.c
deleted file mode 100644 (file)
index c6b41a8..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-#define  __INCLUDE_FROM_USB_DRIVER\r
-#include "../USBMode.h"\r
-\r
-#if defined(USB_CAN_BE_DEVICE)\r
-\r
-#include "../Device.h"\r
-\r
-void USB_Device_SendRemoteWakeup(void)\r
-{\r
-       USB_CLK_Unfreeze();\r
-\r
-       AVR32_USBB.UDCON.rmwkup = true;\r
-       while (AVR32_USBB.UDCON.rmwkup);\r
-}\r
-\r
-#endif\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Device_UC3B.h
deleted file mode 100644 (file)
index e74f361..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *  \brief USB Device definitions for the AVR32 UC3B microcontrollers.\r
- *  \copydetails Group_Device_UC3B\r
- *\r
- *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
- *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
- */\r
-\r
-/** \ingroup Group_Device\r
- *  \defgroup Group_Device_UC3B Device Management (UC3B)\r
- *  \brief USB Device definitions for the AVR32 UC3B microcontrollers.\r
- *\r
- *  Architecture specific USB Device definitions for the Atmel 32-bit UC3B AVR microcontrollers.\r
- *\r
- *  @{\r
- */\r
-\r
-#ifndef __USBDEVICE_UC3B_H__\r
-#define __USBDEVICE_UC3B_H__\r
-\r
-       /* Includes: */\r
-               #include "../../../../Common/Common.h"\r
-               #include "../StdDescriptors.h"\r
-               #include "../USBInterrupt.h"\r
-               #include "../Endpoint.h"\r
-               \r
-       /* Preprocessor Checks: */\r
-               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
-                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
-               #endif\r
-\r
-       /* Public Interface - May be used in end-application: */\r
-               /* Macros: */\r
-                       /** \name USB Device Mode Option Masks */\r
-                       //@{\r
-                       /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the\r
-                        *  USB interface should be initialized in low speed (1.5Mb/s) mode.\r
-                        *\r
-                        *  \note Restrictions apply on the number, size and type of endpoints which can be used\r
-                        *        when running in low speed mode - refer to the USB 2.0 specification.\r
-                        */\r
-                       #define USB_DEVICE_OPT_LOWSPEED                (1 << 0)\r
-\r
-                       /** Mask for the Options parameter of the \ref USB_Init() function. This indicates that the\r
-                        *  USB interface should be initialized in full speed (12Mb/s) mode.\r
-                        */\r
-                       #define USB_DEVICE_OPT_FULLSPEED               (0 << 0)\r
-                       //@}\r
-                       \r
-                       /** String descriptor index for the device's unique serial number string descriptor within the device.\r
-                        *  This unique serial number is used by the host to associate resources to the device (such as drivers or COM port\r
-                        *  number allocations) to a device regardless of the port it is plugged in to on the host. Some microcontrollers contain\r
-                        *  a unique serial number internally, and setting the device descriptors serial number string index to this value\r
-                        *  will cause it to use the internal serial number.\r
-                        *\r
-                        *  On unsupported devices, this will evaluate to \ref NO_DESCRIPTOR and so will force the host to create a pseudo-serial\r
-                        *  number for the device.\r
-                        */\r
-                       #define USE_INTERNAL_SERIAL                    NO_DESCRIPTOR\r
-                       \r
-               /* Function Prototypes: */\r
-                       /** Sends a Remote Wakeup request to the host. This signals to the host that the device should\r
-                        *  be taken out of suspended mode, and communications should resume.\r
-                        *\r
-                        *  Typically, this is implemented so that HID devices (mice, keyboards, etc.) can wake up the\r
-                        *  host computer when the host has suspended all USB devices to enter a low power state.\r
-                        *\r
-                        *  \note This macro should only be used if the device has indicated to the host that it\r
-                        *        supports the Remote Wakeup feature in the device descriptors, and should only be\r
-                        *        issued if the host is currently allowing remote wakeup events from the device (i.e.,\r
-                        *        the \ref USB_RemoteWakeupEnabled flag is set). When the \c NO_DEVICE_REMOTE_WAKEUP compile\r
-                        *        time option is used, this macro is unavailable.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note The USB clock must be running for this function to operate. If the stack is initialized with\r
-                        *        the \ref USB_OPT_MANUAL_PLL option enabled, the user must ensure that the PLL is running\r
-                        *        before attempting to call this function.\r
-                        *\r
-                        *  \see \ref Group_StdDescriptors for more information on the RMWAKEUP feature and device descriptors.\r
-                        */\r
-                       void USB_Device_SendRemoteWakeup(void);\r
-\r
-               /* Inline Functions: */\r
-                       /** Returns the current USB frame number, when in device mode. Every millisecond the USB bus is active (i.e. enumerated to a host)\r
-                        *  the frame number is incremented by one.\r
-                        */\r
-                       static inline uint16_t USB_Device_GetFrameNumber(void)\r
-                       {\r
-                               return AVR32_USBB.UDFNUM.fnum;\r
-                       }\r
-\r
-                       #if !defined(NO_SOF_EVENTS)\r
-                               /** Enables the device mode Start Of Frame events. When enabled, this causes the\r
-                                *  \ref EVENT_USB_Device_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus,\r
-                                *  at the start of each USB frame when enumerated in device mode.\r
-                                *\r
-                                *  \note Not available when the \c NO_SOF_EVENTS compile time token is defined.\r
-                                */\r
-                               static inline void USB_Device_EnableSOFEvents(void) ATTR_ALWAYS_INLINE;\r
-                               static inline void USB_Device_EnableSOFEvents(void)\r
-                               {\r
-                                       USB_INT_Enable(USB_INT_SOFI);\r
-                               }\r
-\r
-                               /** Disables the device mode Start Of Frame events. When disabled, this stops the firing of the\r
-                                *  \ref EVENT_USB_Device_StartOfFrame() event when enumerated in device mode.\r
-                                *\r
-                                *  \note Not available when the \c NO_SOF_EVENTS compile time token is defined.\r
-                                */\r
-                               static inline void USB_Device_DisableSOFEvents(void) ATTR_ALWAYS_INLINE;\r
-                               static inline void USB_Device_DisableSOFEvents(void)\r
-                               {\r
-                                       USB_INT_Disable(USB_INT_SOFI);\r
-                               }\r
-                       #endif\r
-\r
-       /* Private Interface - For use in library only: */\r
-       #if !defined(__DOXYGEN__)\r
-               /* Inline Functions: */\r
-                       static inline void USB_Device_SetLowSpeed(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Device_SetLowSpeed(void)\r
-                       {\r
-                               AVR32_USBB.UDCON.ls = true;\r
-                       }\r
-\r
-                       static inline void USB_Device_SetFullSpeed(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Device_SetFullSpeed(void)\r
-                       {\r
-                               AVR32_USBB.UDCON.ls = false;\r
-                       }\r
-\r
-                       static inline void USB_Device_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Device_SetDeviceAddress(const uint8_t Address)\r
-                       {\r
-                               AVR32_USBB.UDCON.uadd  = Address;\r
-                               AVR32_USBB.UDCON.adden = true;\r
-                       }\r
-\r
-                       static inline bool USB_Device_IsAddressSet(void) ATTR_ALWAYS_INLINE;\r
-                       static inline bool USB_Device_IsAddressSet(void)\r
-                       {\r
-                               return AVR32_USBB.UDCON.adden;\r
-                       }\r
-       #endif\r
-\r
-#endif\r
-\r
-/** @} */\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.c
deleted file mode 100644 (file)
index 14f66d9..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-#define  __INCLUDE_FROM_USB_DRIVER\r
-#include "../USBMode.h"\r
-\r
-#if defined(USB_CAN_BE_DEVICE)\r
-\r
-#include "../Endpoint.h"\r
-\r
-#if !defined(FIXED_CONTROL_ENDPOINT_SIZE)\r
-uint8_t USB_ControlEndpointSize = ENDPOINT_CONTROLEP_DEFAULT_SIZE;\r
-#endif\r
-\r
-volatile uint8_t  USB_SelectedEndpoint = ENDPOINT_CONTROLEP;\r
-volatile uint8_t* USB_EndpointFIFOPos[ENDPOINT_TOTAL_ENDPOINTS];\r
-\r
-bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,\r
-                                    const uint32_t UECFG0Data)\r
-{\r
-       Endpoint_SelectEndpoint(Number);\r
-       Endpoint_EnableEndpoint();\r
-\r
-       (&AVR32_USBB.uecfg0)[Number] = 0;\r
-       (&AVR32_USBB.uecfg0)[Number] = UECFG0Data;\r
-       USB_EndpointFIFOPos[Number]  = &AVR32_USBB_SLAVE[Number * 0x10000];\r
-\r
-       return Endpoint_IsConfigured();\r
-}\r
-\r
-void Endpoint_ClearEndpoints(void)\r
-{\r
-       for (uint8_t EPNum = 0; EPNum < ENDPOINT_TOTAL_ENDPOINTS; EPNum++)\r
-       {\r
-               Endpoint_SelectEndpoint(EPNum);\r
-               (&AVR32_USBB.uecfg0)[EPNum]    = 0;\r
-               (&AVR32_USBB.uecon0clr)[EPNum] = 0xFFFFFFFF;\r
-               USB_EndpointFIFOPos[EPNum]     = &AVR32_USBB_SLAVE[EPNum * 0x10000];\r
-               Endpoint_DisableEndpoint();\r
-       }\r
-}\r
-\r
-void Endpoint_ClearStatusStage(void)\r
-{\r
-       if (USB_ControlRequest.bmRequestType & REQDIR_DEVICETOHOST)\r
-       {\r
-               while (!(Endpoint_IsOUTReceived()))\r
-               {\r
-                       if (USB_DeviceState == DEVICE_STATE_Unattached)\r
-                         return;\r
-               }\r
-\r
-               Endpoint_ClearOUT();\r
-       }\r
-       else\r
-       {\r
-               while (!(Endpoint_IsINReady()))\r
-               {\r
-                       if (USB_DeviceState == DEVICE_STATE_Unattached)\r
-                         return;\r
-               }\r
-\r
-               Endpoint_ClearIN();\r
-       }\r
-}\r
-\r
-#if !defined(CONTROL_ONLY_DEVICE)\r
-uint8_t Endpoint_WaitUntilReady(void)\r
-{\r
-       #if (USB_STREAM_TIMEOUT_MS < 0xFF)\r
-       uint8_t  TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
-       #else\r
-       uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
-       #endif\r
-\r
-       uint16_t PreviousFrameNumber = USB_Device_GetFrameNumber();\r
-\r
-       for (;;)\r
-       {\r
-               if (Endpoint_GetEndpointDirection() == ENDPOINT_DIR_IN)\r
-               {\r
-                       if (Endpoint_IsINReady())\r
-                         return ENDPOINT_READYWAIT_NoError;\r
-               }\r
-               else\r
-               {\r
-                       if (Endpoint_IsOUTReceived())\r
-                         return ENDPOINT_READYWAIT_NoError;\r
-               }\r
-               \r
-               uint8_t USB_DeviceState_LCL = USB_DeviceState;\r
-\r
-               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)\r
-                 return ENDPOINT_READYWAIT_DeviceDisconnected;\r
-               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)\r
-                 return ENDPOINT_READYWAIT_BusSuspended;\r
-               else if (Endpoint_IsStalled())\r
-                 return ENDPOINT_READYWAIT_EndpointStalled;\r
-\r
-               uint16_t CurrentFrameNumber = USB_Device_GetFrameNumber();\r
-\r
-               if (CurrentFrameNumber != PreviousFrameNumber)\r
-               {\r
-                       PreviousFrameNumber = CurrentFrameNumber;\r
-\r
-                       if (!(TimeoutMSRem--))\r
-                         return ENDPOINT_READYWAIT_Timeout;\r
-               }\r
-       }\r
-}\r
-#endif\r
-\r
-#endif\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Endpoint_UC3B.h
deleted file mode 100644 (file)
index 5de8225..0000000
+++ /dev/null
@@ -1,839 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *  \brief USB Endpoint definitions for the AVR32 UC3B microcontrollers.\r
- *  \copydetails Group_EndpointManagement_UC3B\r
- *\r
- *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
- *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
- */\r
-\r
-/** \ingroup Group_EndpointRW\r
- *  \defgroup Group_EndpointRW_UC3B Endpoint Data Reading and Writing (UC3B)\r
- *  \brief Endpoint data read/write definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Functions, macros, variables, enums and types related to data reading and writing from and to endpoints.\r
- */\r
-\r
-/** \ingroup Group_EndpointPrimitiveRW\r
- *  \defgroup Group_EndpointPrimitiveRW_UC3B Read/Write of Primitive Data Types (UC3B)\r
- *  \brief Endpoint primative read/write definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Functions, macros, variables, enums and types related to data reading and writing of primitive data types\r
- *  from and to endpoints.\r
- */\r
-\r
-/** \ingroup Group_EndpointPacketManagement\r
- *  \defgroup Group_EndpointPacketManagement_UC3B Endpoint Packet Management (UC3B)\r
- *  \brief Endpoint packet management definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Functions, macros, variables, enums and types related to packet management of endpoints.\r
- */\r
-\r
-/** \ingroup Group_EndpointManagement\r
- *  \defgroup Group_EndpointManagement_UC3B Endpoint Management (UC3B)\r
- *  \brief Endpoint management definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Functions, macros and enums related to endpoint management when in USB Device mode. This\r
- *  module contains the endpoint management macros, as well as endpoint interrupt and data\r
- *  send/receive functions for various data types.\r
- *\r
- *  @{\r
- */\r
-\r
-#ifndef __ENDPOINT_UC3B_H__\r
-#define __ENDPOINT_UC3B_H__\r
-\r
-       /* Includes: */\r
-               #include "../../../../Common/Common.h"\r
-               #include "../USBTask.h"\r
-               #include "../USBInterrupt.h"\r
-\r
-       /* Enable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       extern "C" {\r
-               #endif\r
-\r
-       /* Preprocessor Checks: */\r
-               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
-                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
-               #endif\r
-\r
-       /* Private Interface - For use in library only: */\r
-       #if !defined(__DOXYGEN__)\r
-               /* Macros: */\r
-                       #define _ENDPOINT_GET_MAXSIZE(EPIndex)         _ENDPOINT_GET_MAXSIZE2(ENDPOINT_DETAILS_EP ## EPIndex)\r
-                       #define _ENDPOINT_GET_MAXSIZE2(EPDetails)      _ENDPOINT_GET_MAXSIZE3(EPDetails)\r
-                       #define _ENDPOINT_GET_MAXSIZE3(MaxSize, Banks) (MaxSize)\r
-\r
-                       #define _ENDPOINT_GET_BANKS(EPIndex)           _ENDPOINT_GET_BANKS2(ENDPOINT_DETAILS_EP ## EPIndex)\r
-                       #define _ENDPOINT_GET_BANKS2(EPDetails)        _ENDPOINT_GET_BANKS3(EPDetails)\r
-                       #define _ENDPOINT_GET_BANKS3(MaxSize, Banks)   (Banks)\r
-\r
-                       #define ENDPOINT_DETAILS_MAXEP                 7\r
-\r
-                       #define ENDPOINT_DETAILS_EP0                   64,  1\r
-                       #define ENDPOINT_DETAILS_EP1                   64,  2\r
-                       #define ENDPOINT_DETAILS_EP2                   64,  2\r
-                       #define ENDPOINT_DETAILS_EP3                   64,  2\r
-                       #define ENDPOINT_DETAILS_EP4                   64,  2\r
-                       #define ENDPOINT_DETAILS_EP5                   256, 2\r
-                       #define ENDPOINT_DETAILS_EP6                   256, 2\r
-\r
-               /* Inline Functions: */\r
-                       static inline uint32_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST\r
-                                                                                               ATTR_ALWAYS_INLINE;\r
-                       static inline uint32_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)\r
-                       {\r
-                               uint8_t  MaskVal    = 0;\r
-                               uint16_t CheckBytes = 8;\r
-\r
-                               while (CheckBytes < Bytes)\r
-                               {\r
-                                       MaskVal++;\r
-                                       CheckBytes <<= 1;\r
-                               }\r
-\r
-                               return (MaskVal << AVR32_USBB_EPSIZE_OFFSET);\r
-                       }\r
-\r
-               /* Function Prototypes: */\r
-                       void Endpoint_ClearEndpoints(void);\r
-                       bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,\r
-                                                           const uint32_t UECFGXData);\r
-               \r
-               /* External Variables: */\r
-                       extern volatile uint8_t  USB_SelectedEndpoint;\r
-                       extern volatile uint8_t* USB_EndpointFIFOPos[];\r
-       #endif\r
-\r
-       /* Public Interface - May be used in end-application: */\r
-               /* Macros: */\r
-                       /** \name Endpoint Direction Masks */\r
-                       //@{\r
-                       /** Endpoint data direction mask for \ref Endpoint_ConfigureEndpoint(). This indicates that the endpoint\r
-                        *  should be initialized in the OUT direction - i.e. data flows from host to device.\r
-                        */\r
-                       #define ENDPOINT_DIR_OUT                        AVR32_USBB_UECFG0_EPDIR_OUT\r
-\r
-                       /** Endpoint data direction mask for \ref Endpoint_ConfigureEndpoint(). This indicates that the endpoint\r
-                        *  should be initialized in the IN direction - i.e. data flows from device to host.\r
-                        */\r
-                       #define ENDPOINT_DIR_IN                         AVR32_USBB_UECFG0_EPDIR_IN\r
-                       //@}\r
-                       \r
-                       /** \name Endpoint Bank Mode Masks */\r
-                       //@{\r
-                       /** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates\r
-                        *  that the endpoint should have one single bank, which requires less USB FIFO memory but results\r
-                        *  in slower transfers as only one USB device (the AVR or the host) can access the endpoint's\r
-                        *  bank at the one time.\r
-                        */\r
-                       #define ENDPOINT_BANK_SINGLE                    AVR32_USBB_UECFG0_EPBK_SINGLE\r
-\r
-                       /** Mask for the bank mode selection for the \ref Endpoint_ConfigureEndpoint() macro. This indicates\r
-                        *  that the endpoint should have two banks, which requires more USB FIFO memory but results\r
-                        *  in faster transfers as one USB device (the AVR or the host) can access one bank while the other\r
-                        *  accesses the second bank.\r
-                        */\r
-                       #define ENDPOINT_BANK_DOUBLE                    AVR32_USBB_UECFG0_EPBK_DOUBLE\r
-                       //@}\r
-\r
-                       #if (!defined(FIXED_CONTROL_ENDPOINT_SIZE) || defined(__DOXYGEN__))\r
-                               /** Default size of the default control endpoint's bank, until altered by the control endpoint bank size\r
-                                *  value in the device descriptor. Not available if the \c FIXED_CONTROL_ENDPOINT_SIZE token is defined.\r
-                                */\r
-                               #define ENDPOINT_CONTROLEP_DEFAULT_SIZE     8\r
-                       #endif\r
-\r
-                       /** Retrives the maximum bank size in bytes of a given endpoint.\r
-                        *\r
-                        *  \note This macro will only work correctly on endpoint indexes that are compile-time constants\r
-                        *        defined by the preprocessor.\r
-                        *\r
-                        *  \param[in] EPIndex  Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1)\r
-                        */\r
-                       #define ENDPOINT_MAX_SIZE(EPIndex)              _ENDPOINT_GET_MAXSIZE(EPIndex)\r
-\r
-                       /** Retrieves the total number of banks supported by the given endpoint.\r
-                        *\r
-                        *  \note This macro will only work correctly on endpoint indexes that are compile-time constants\r
-                        *        defined by the preprocessor.\r
-                        *\r
-                        *  \param[in] EPIndex  Endpoint number, a value between 0 and (\ref ENDPOINT_TOTAL_ENDPOINTS - 1)\r
-                        */\r
-                       #define ENDPOINT_BANKS_SUPPORTED(EPIndex)       _ENDPOINT_GET_BANKS(EPIndex)\r
-\r
-                       #if !defined(CONTROL_ONLY_DEVICE) || defined(__DOXYGEN__)\r
-                               /** Total number of endpoints (including the default control endpoint at address 0) which may\r
-                                *  be used in the device. Different AVR models support different amounts of endpoints,\r
-                                *  this value reflects the maximum number of endpoints for the currently selected AVR model.\r
-                                */\r
-                               #define ENDPOINT_TOTAL_ENDPOINTS            ENDPOINT_DETAILS_MAXEP\r
-                       #else\r
-                               #define ENDPOINT_TOTAL_ENDPOINTS            1\r
-                       #endif\r
-\r
-               /* Enums: */\r
-                       /** Enum for the possible error return codes of the \ref Endpoint_WaitUntilReady() function.\r
-                        *\r
-                        *  \ingroup Group_EndpointRW_UC3B\r
-                        */\r
-                       enum Endpoint_WaitUntilReady_ErrorCodes_t\r
-                       {\r
-                               ENDPOINT_READYWAIT_NoError                 = 0, /**< Endpoint is ready for next packet, no error. */\r
-                               ENDPOINT_READYWAIT_EndpointStalled         = 1, /**< The endpoint was stalled during the stream\r
-                                                                                *   transfer by the host or device.\r
-                                                                                */\r
-                               ENDPOINT_READYWAIT_DeviceDisconnected      = 2, /**< Device was disconnected from the host while\r
-                                                                                *   waiting for the endpoint to become ready.\r
-                                                                                */\r
-                               ENDPOINT_READYWAIT_BusSuspended            = 3, /**< The USB bus has been suspended by the host and\r
-                                                                                *   no USB endpoint traffic can occur until the bus\r
-                                                                                *   has resumed.\r
-                                                                                */\r
-                               ENDPOINT_READYWAIT_Timeout                 = 4, /**< The host failed to accept or send the next packet\r
-                                                                                *   within the software timeout period set by the\r
-                                                                                *   \ref USB_STREAM_TIMEOUT_MS macro.\r
-                                                                                */\r
-                       };\r
-\r
-               /* Inline Functions: */\r
-                       /** Configures the specified endpoint number with the given endpoint type, direction, bank size\r
-                        *  and banking mode. Once configured, the endpoint may be read from or written to, depending\r
-                        *  on its direction.\r
-                        *\r
-                        *  \param[in] Number     Endpoint number to configure. This must be more than 0 and less than\r
-                        *                        \ref ENDPOINT_TOTAL_ENDPOINTS.\r
-                        *\r
-                        *  \param[in] Type       Type of endpoint to configure, a \c EP_TYPE_* mask. Not all endpoint types\r
-                        *                        are available on Low Speed USB devices - refer to the USB 2.0 specification.\r
-                        *\r
-                        *  \param[in] Direction  Endpoint data direction, either \ref ENDPOINT_DIR_OUT or \ref ENDPOINT_DIR_IN.\r
-                        *                        All endpoints (except Control type) are unidirectional - data may only be read\r
-                        *                        from or written to the endpoint bank based on its direction, not both.\r
-                        *\r
-                        *  \param[in] Size       Size of the endpoint's bank, where packets are stored before they are transmitted\r
-                        *                        to the USB host, or after they have been received from the USB host (depending on\r
-                        *                        the endpoint's data direction). The bank size must indicate the maximum packet size\r
-                        *                        that the endpoint can handle.\r
-                        *\r
-                        *  \param[in] Banks      Number of banks to use for the endpoint being configured, an \c ENDPOINT_BANK_* mask.\r
-                        *                        More banks uses more USB DPRAM, but offers better performance. Isochronous type\r
-                        *                        endpoints <b>must</b> have at least two banks.\r
-                        *\r
-                        *  \note When the \c ORDERED_EP_CONFIG compile time option is used, Endpoints <b>must</b> be configured in\r
-                        *        ascending order, or bank corruption will occur.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note Different endpoints may have different maximum packet sizes based on the endpoint's index - refer to\r
-                        *        the chosen microcontroller model's datasheet to determine the maximum bank size for each endpoint.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note The default control endpoint should not be manually configured by the user application, as\r
-                        *        it is automatically configured by the library internally.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note This routine will automatically select the specified endpoint upon success. Upon failure, the endpoint\r
-                        *        which failed to reconfigure correctly will be selected.\r
-                        *\r
-                        *  \return Boolean \c true if the configuration succeeded, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_ConfigureEndpoint(const uint8_t Number,\r
-                                                                     const uint8_t Type,\r
-                                                                     const uint8_t Direction,\r
-                                                                     const uint16_t Size,\r
-                                                                     const uint8_t Banks) ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_ConfigureEndpoint(const uint8_t Number,\r
-                                                                     const uint8_t Type,\r
-                                                                     const uint8_t Direction,\r
-                                                                     const uint16_t Size,\r
-                                                                     const uint8_t Banks)\r
-                       {\r
-                               return Endpoint_ConfigureEndpoint_Prv(Number, (AVR32_USBB_ALLOC_MASK |\r
-                                                                              ((uint32_t)Type      << AVR32_USBB_EPTYPE_OFFSET) | \r
-                                                                              ((uint32_t)Direction << AVR32_USBB_EPDIR_OFFSET)  |\r
-                                                                              ((uint32_t)Banks     << AVR32_USBB_EPBK_OFFSET)   |\r
-                                                                              Endpoint_BytesToEPSizeMask(Size)));\r
-                       }\r
-\r
-                       /** Indicates the number of bytes currently stored in the current endpoint's selected bank.\r
-                        *\r
-                        *  \note The return width of this function may differ, depending on the maximum endpoint bank size\r
-                        *        of the selected AVR model.\r
-                        *\r
-                        *  \ingroup Group_EndpointRW_UC3B\r
-                        *\r
-                        *  \return Total number of bytes in the currently selected Endpoint's FIFO buffer.\r
-                        */\r
-                       static inline uint16_t Endpoint_BytesInEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint16_t Endpoint_BytesInEndpoint(void)\r
-                       {\r
-                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].byct;\r
-                       }\r
-\r
-                       /** Get the endpoint address of the currently selected endpoint. This is typically used to save\r
-                        *  the currently selected endpoint number so that it can be restored after another endpoint has\r
-                        *  been manipulated.\r
-                        *\r
-                        *  \return Index of the currently selected endpoint.\r
-                        */\r
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Endpoint_GetCurrentEndpoint(void)\r
-                       {\r
-                               return USB_SelectedEndpoint;\r
-                       }\r
-\r
-                       /** Selects the given endpoint number. If the address from the device descriptors is used, the\r
-                        *  value should be masked with the \ref ENDPOINT_EPNUM_MASK constant to extract only the endpoint\r
-                        *  number (and discarding the endpoint direction bit).\r
-                        *\r
-                        *  Any endpoint operations which do not require the endpoint number to be indicated will operate on\r
-                        *  the currently selected endpoint.\r
-                        *\r
-                        *  \param[in] EndpointNumber Endpoint number to select.\r
-                        */\r
-                       static inline void Endpoint_SelectEndpoint(const uint8_t EndpointNumber) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_SelectEndpoint(const uint8_t EndpointNumber)\r
-                       {\r
-                               USB_SelectedEndpoint = EndpointNumber;\r
-                       }\r
-\r
-                       /** Resets the endpoint bank FIFO. This clears all the endpoint banks and resets the USB controller's\r
-                        *  data In and Out pointers to the bank's contents.\r
-                        *\r
-                        *  \param[in] EndpointNumber Endpoint number whose FIFO buffers are to be reset.\r
-                        */\r
-                       static inline void Endpoint_ResetEndpoint(const uint8_t EndpointNumber) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_ResetEndpoint(const uint8_t EndpointNumber)\r
-                       {\r
-                               AVR32_USBB.uerst |=  (AVR32_USBB_EPRST0_MASK << EndpointNumber);\r
-                               AVR32_USBB.uerst &= ~(AVR32_USBB_EPRST0_MASK << EndpointNumber);\r
-                               USB_EndpointFIFOPos[EndpointNumber] = &AVR32_USBB_SLAVE[EndpointNumber * 0x10000];\r
-                       }\r
-\r
-                       /** Enables the currently selected endpoint so that data can be sent and received through it to\r
-                        *  and from a host.\r
-                        *\r
-                        *  \note Endpoints must first be configured properly via \ref Endpoint_ConfigureEndpoint().\r
-                        */\r
-                       static inline void Endpoint_EnableEndpoint(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_EnableEndpoint(void)\r
-                       {\r
-                               AVR32_USBB.uerst |=  (AVR32_USBB_EPEN0_MASK << USB_SelectedEndpoint);\r
-                       }\r
-\r
-                       /** Disables the currently selected endpoint so that data cannot be sent and received through it\r
-                        *  to and from a host.\r
-                        */\r
-                       static inline void Endpoint_DisableEndpoint(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_DisableEndpoint(void)\r
-                       {\r
-                               AVR32_USBB.uerst &= ~(AVR32_USBB_EPEN0_MASK << USB_SelectedEndpoint);\r
-                       }\r
-\r
-                       /** Determines if the currently selected endpoint is enabled, but not necessarily configured.\r
-                        *\r
-                        * \return Boolean \c true if the currently selected endpoint is enabled, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_IsEnabled(void)\r
-                       {\r
-                               return ((AVR32_USBB.uerst & (AVR32_USBB_EPEN0_MASK << USB_SelectedEndpoint)) ? true : false);\r
-                       }\r
-\r
-                       /** Retrieves the number of busy banks in the currently selected endpoint, which have been queued for\r
-                        *  transmission via the \ref Endpoint_ClearIN() command, or are awaiting acknowledgement via the\r
-                        *  \ref Endpoint_ClearOUT() command.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        *\r
-                        *  \return Total number of busy banks in the selected endpoint.\r
-                        */\r
-                       static inline uint8_t Endpoint_GetBusyBanks(void)\r
-                       {\r
-                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].nbusybk;\r
-                       }\r
-\r
-                       /** Aborts all pending IN transactions on the currently selected endpoint, once the bank\r
-                        *  has been queued for transmission to the host via \ref Endpoint_ClearIN(). This function\r
-                        *  will terminate all queued transactions, resetting the endpoint banks ready for a new\r
-                        *  packet.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        */\r
-                       static inline void Endpoint_AbortPendingIN(void)\r
-                       {\r
-                               while (Endpoint_GetBusyBanks() != 0)\r
-                               {\r
-                                       (&AVR32_USBB.UECON0SET)[USB_SelectedEndpoint].killbks = true;\r
-                                       while ((&AVR32_USBB.UECON0)[USB_SelectedEndpoint].killbk);\r
-                               }\r
-                       }\r
-                       \r
-                       /** Determines if the currently selected endpoint may be read from (if data is waiting in the endpoint\r
-                        *  bank and the endpoint is an OUT direction, or if the bank is not yet full if the endpoint is an IN\r
-                        *  direction). This function will return false if an error has occurred in the endpoint, if the endpoint\r
-                        *  is an OUT direction and no packet (or an empty packet) has been received, or if the endpoint is an IN\r
-                        *  direction and the endpoint bank is full.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the currently selected endpoint may be read from or written to, depending\r
-                        *          on its direction.\r
-                        */\r
-                       static inline bool Endpoint_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_IsReadWriteAllowed(void)\r
-                       {\r
-                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].rwall;\r
-                       }\r
-\r
-                       /** Determines if the currently selected endpoint is configured.\r
-                        *\r
-                        *  \return Boolean \c true if the currently selected endpoint has been configured, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_IsConfigured(void)\r
-                       {\r
-                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].cfgok;\r
-                       }\r
-\r
-                       /** Returns a mask indicating which INTERRUPT type endpoints have interrupted - i.e. their\r
-                        *  interrupt duration has elapsed. Which endpoints have interrupted can be determined by\r
-                        *  masking the return value against <tt>(1 << <i>{Endpoint Number}</i>)</tt>.\r
-                        *\r
-                        *  \return Mask whose bits indicate which endpoints have interrupted.\r
-                        */\r
-                       static inline uint8_t Endpoint_GetEndpointInterrupts(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Endpoint_GetEndpointInterrupts(void)\r
-                       {\r
-                               return ((AVR32_USBB.udint & (AVR32_USBB_EP6INT_MASK | AVR32_USBB_EP5INT_MASK |\r
-                                                            AVR32_USBB_EP4INT_MASK | AVR32_USBB_EP3INT_MASK |\r
-                                                            AVR32_USBB_EP2INT_MASK | AVR32_USBB_EP1INT_MASK |\r
-                                                            AVR32_USBB_EP0INT_MASK)) >> AVR32_USBB_EP0INT_OFFSET);\r
-                       }\r
-\r
-                       /** Determines if the specified endpoint number has interrupted (valid only for INTERRUPT type\r
-                        *  endpoints).\r
-                        *\r
-                        *  \param[in] EndpointNumber  Index of the endpoint whose interrupt flag should be tested.\r
-                        *\r
-                        *  \return Boolean \c true if the specified endpoint has interrupted, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_HasEndpointInterrupted(const uint8_t EndpointNumber) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_HasEndpointInterrupted(const uint8_t EndpointNumber)\r
-                       {\r
-                               return ((Endpoint_GetEndpointInterrupts() & (AVR32_USBB_EP0INT_MASK << EndpointNumber)) ? true : false);\r
-                       }\r
-\r
-                       /** Determines if the selected IN endpoint is ready for a new packet to be sent to the host.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the current endpoint is ready for an IN packet, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_IsINReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_IsINReady(void)\r
-                       {\r
-                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].txini;\r
-                       }\r
-\r
-                       /** Determines if the selected OUT endpoint has received new packet from the host.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if current endpoint is has received an OUT packet, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_IsOUTReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_IsOUTReceived(void)\r
-                       {\r
-                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].rxouti;\r
-                       }\r
-\r
-                       /** Determines if the current CONTROL type endpoint has received a SETUP packet.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the selected endpoint has received a SETUP packet, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_IsSETUPReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_IsSETUPReceived(void)\r
-                       {\r
-                               return (&AVR32_USBB.UESTA0)[USB_SelectedEndpoint].rxstpi;\r
-                       }\r
-\r
-                       /** Clears a received SETUP packet on the currently selected CONTROL type endpoint, freeing up the\r
-                        *  endpoint for the next packet.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        *\r
-                        *  \note This is not applicable for non CONTROL type endpoints.\r
-                        */\r
-                       static inline void Endpoint_ClearSETUP(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_ClearSETUP(void)\r
-                       {\r
-                               (&AVR32_USBB.UESTA0CLR)[USB_SelectedEndpoint].rxstpic = true;\r
-                               USB_EndpointFIFOPos[USB_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_SelectedEndpoint * 0x10000];\r
-                       }\r
-\r
-                       /** Sends an IN packet to the host on the currently selected endpoint, freeing up the endpoint for the\r
-                        *  next packet and switching to the alternative endpoint bank if double banked.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        */\r
-                       static inline void Endpoint_ClearIN(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_ClearIN(void)\r
-                       {\r
-                               (&AVR32_USBB.UESTA0CLR)[USB_SelectedEndpoint].txinic   = true;\r
-                               (&AVR32_USBB.UECON0CLR)[USB_SelectedEndpoint].fifoconc = true;\r
-                               USB_EndpointFIFOPos[USB_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_SelectedEndpoint * 0x10000];\r
-                       }\r
-\r
-                       /** Acknowledges an OUT packet to the host on the currently selected endpoint, freeing up the endpoint\r
-                        *  for the next packet and switching to the alternative endpoint bank if double banked.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        */\r
-                       static inline void Endpoint_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_ClearOUT(void)\r
-                       {\r
-                               (&AVR32_USBB.UESTA0CLR)[USB_SelectedEndpoint].rxoutic  = true;\r
-                               (&AVR32_USBB.UECON0CLR)[USB_SelectedEndpoint].fifoconc = true;\r
-                               USB_EndpointFIFOPos[USB_SelectedEndpoint] = &AVR32_USBB_SLAVE[USB_SelectedEndpoint * 0x10000];\r
-                       }\r
-\r
-                       /** Stalls the current endpoint, indicating to the host that a logical problem occurred with the\r
-                        *  indicated endpoint and that the current transfer sequence should be aborted. This provides a\r
-                        *  way for devices to indicate invalid commands to the host so that the current transfer can be\r
-                        *  aborted and the host can begin its own recovery sequence.\r
-                        *\r
-                        *  The currently selected endpoint remains stalled until either the \ref Endpoint_ClearStall() macro\r
-                        *  is called, or the host issues a CLEAR FEATURE request to the device for the currently selected\r
-                        *  endpoint.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        */\r
-                       static inline void Endpoint_StallTransaction(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_StallTransaction(void)\r
-                       {\r
-                               (&AVR32_USBB.UECON0SET)[USB_SelectedEndpoint].stallrqs = true;\r
-                       }\r
-\r
-                       /** Clears the STALL condition on the currently selected endpoint.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        */\r
-                       static inline void Endpoint_ClearStall(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_ClearStall(void)\r
-                       {\r
-                               (&AVR32_USBB.UECON0CLR)[USB_SelectedEndpoint].stallrqc = true;\r
-                       }\r
-\r
-                       /** Determines if the currently selected endpoint is stalled, false otherwise.\r
-                        *\r
-                        *  \ingroup Group_EndpointPacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the currently selected endpoint is stalled, \c false otherwise.\r
-                        */\r
-                       static inline bool Endpoint_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Endpoint_IsStalled(void)\r
-                       {\r
-                               return (&AVR32_USBB.UECON0)[USB_SelectedEndpoint].stallrq;\r
-                       }\r
-\r
-                       /** Resets the data toggle of the currently selected endpoint. */\r
-                       static inline void Endpoint_ResetDataToggle(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_ResetDataToggle(void)\r
-                       {\r
-                               (&AVR32_USBB.UECON0SET)[USB_SelectedEndpoint].rstdts = true;\r
-                       }\r
-\r
-                       /** Determines the currently selected endpoint's direction.\r
-                        *\r
-                        *  \return The currently selected endpoint's direction, as a \c ENDPOINT_DIR_* mask.\r
-                        */\r
-                       static inline uint32_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint32_t Endpoint_GetEndpointDirection(void)\r
-                       {\r
-                               return ((&AVR32_USBB.UECFG0)[USB_SelectedEndpoint].epdir ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT);\r
-                       }\r
-\r
-                       /** Sets the direction of the currently selected endpoint.\r
-                        *\r
-                        *  \param[in] DirectionMask  New endpoint direction, as a \c ENDPOINT_DIR_* mask.\r
-                        */\r
-                       static inline void Endpoint_SetEndpointDirection(const uint32_t DirectionMask) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_SetEndpointDirection(const uint32_t DirectionMask)\r
-                       {\r
-                               (&AVR32_USBB.UECFG0)[USB_SelectedEndpoint].epdir = (DirectionMask == ENDPOINT_DIR_IN);\r
-                       }\r
-\r
-                       /** Reads one byte from the currently selected endpoint's bank, for OUT direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_AVR32\r
-                        *\r
-                        *  \return Next byte in the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline uint8_t Endpoint_Read_Byte(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Endpoint_Read_Byte(void)\r
-                       {\r
-                               return *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                       }\r
-\r
-                       /** Writes one byte from the currently selected endpoint's bank, for IN direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_AVR32\r
-                        *\r
-                        *  \param[in] Byte  Next byte to write into the the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline void Endpoint_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Write_Byte(const uint8_t Byte)\r
-                       {\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = Byte;\r
-                       }\r
-\r
-                       /** Discards one byte from the currently selected endpoint's bank, for OUT direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        */\r
-                       static inline void Endpoint_Discard_Byte(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Discard_Byte(void)\r
-                       {\r
-                               uint8_t Dummy;\r
-\r
-                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                       }\r
-\r
-                       /** Reads two bytes from the currently selected endpoint's bank in little endian format, for OUT\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next word in the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline uint16_t Endpoint_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint16_t Endpoint_Read_Word_LE(void)\r
-                       {\r
-                               uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint16_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-\r
-                               return ((Byte0 << 8) | Byte1);\r
-                       }\r
-\r
-                       /** Reads two bytes from the currently selected endpoint's bank in big endian format, for OUT\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next word in the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline uint16_t Endpoint_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint16_t Endpoint_Read_Word_BE(void)\r
-                       {\r
-                               uint16_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint16_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-\r
-                               return ((Byte0 << 8) | Byte1);\r
-                       }\r
-\r
-                       /** Writes two bytes to the currently selected endpoint's bank in little endian format, for IN\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] Word  Next word to write to the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline void Endpoint_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Write_Word_LE(const uint16_t Word)\r
-                       {\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word >> 8);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word & 0xFF);\r
-                       }\r
-\r
-                       /** Writes two bytes to the currently selected endpoint's bank in big endian format, for IN\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] Word  Next word to write to the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline void Endpoint_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Write_Word_BE(const uint16_t Word)\r
-                       {\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word & 0xFF);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (Word >> 8);\r
-                       }\r
-\r
-                       /** Discards two bytes from the currently selected endpoint's bank, for OUT direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        */\r
-                       static inline void Endpoint_Discard_Word(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Discard_Word(void)\r
-                       {\r
-                               uint8_t Dummy;\r
-\r
-                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                       }\r
-\r
-                       /** Reads four bytes from the currently selected endpoint's bank in little endian format, for OUT\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next double word in the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline uint32_t Endpoint_Read_DWord_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint32_t Endpoint_Read_DWord_LE(void)\r
-                       {\r
-                               uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint32_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-\r
-                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
-                       }\r
-\r
-                       /** Reads four bytes from the currently selected endpoint's bank in big endian format, for OUT\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next double word in the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline uint32_t Endpoint_Read_DWord_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint32_t Endpoint_Read_DWord_BE(void)\r
-                       {\r
-                               uint32_t Byte0 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint32_t Byte1 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint32_t Byte2 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               uint32_t Byte3 = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-\r
-                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
-                       }\r
-\r
-                       /** Writes four bytes to the currently selected endpoint's bank in little endian format, for IN\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] DWord  Next double word to write to the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline void Endpoint_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Write_DWord_LE(const uint32_t DWord)\r
-                       {\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 24);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 16);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 8);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord &  0xFF);\r
-                       }\r
-\r
-                       /** Writes four bytes to the currently selected endpoint's bank in big endian format, for IN\r
-                        *  direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] DWord  Next double word to write to the currently selected endpoint's FIFO buffer.\r
-                        */\r
-                       static inline void Endpoint_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Write_DWord_BE(const uint32_t DWord)\r
-                       {\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord &  0xFF);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 8);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 16);\r
-                               *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++) = (DWord >> 24);\r
-                       }\r
-\r
-                       /** Discards four bytes from the currently selected endpoint's bank, for OUT direction endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointPrimitiveRW_UC3B\r
-                        */\r
-                       static inline void Endpoint_Discard_DWord(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Endpoint_Discard_DWord(void)\r
-                       {\r
-                               uint8_t Dummy;\r
-\r
-                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                               Dummy = *(USB_EndpointFIFOPos[USB_SelectedEndpoint]++);\r
-                       }\r
-\r
-               /* External Variables: */\r
-                       /** Global indicating the maximum packet size of the default control endpoint located at address\r
-                        *  0 in the device. This value is set to the value indicated in the device descriptor in the user\r
-                        *  project once the USB interface is initialized into device mode.\r
-                        *\r
-                        *  If space is an issue, it is possible to fix this to a static value by defining the control\r
-                        *  endpoint size in the \c FIXED_CONTROL_ENDPOINT_SIZE token passed to the compiler in the makefile\r
-                        *  via the -D switch. When a fixed control endpoint size is used, the size is no longer dynamically\r
-                        *  read from the descriptors at runtime and instead fixed to the given value. When used, it is\r
-                        *  important that the descriptor control endpoint size value matches the size given as the\r
-                        *  \c FIXED_CONTROL_ENDPOINT_SIZE token - it is recommended that the \c FIXED_CONTROL_ENDPOINT_SIZE token\r
-                        *  be used in the device descriptors to ensure this.\r
-                        *\r
-                        *  \note This variable should be treated as read-only in the user application, and never manually\r
-                        *        changed in value.\r
-                        */\r
-                       #if (!defined(FIXED_CONTROL_ENDPOINT_SIZE) || defined(__DOXYGEN__))\r
-                               extern uint8_t USB_ControlEndpointSize;\r
-                       #else\r
-                               #define USB_ControlEndpointSize FIXED_CONTROL_ENDPOINT_SIZE\r
-                       #endif\r
-\r
-               /* Function Prototypes: */\r
-                       /** Completes the status stage of a control transfer on a CONTROL type endpoint automatically,\r
-                        *  with respect to the data direction. This is a convenience function which can be used to\r
-                        *  simplify user control request handling.\r
-                        */\r
-                       void Endpoint_ClearStatusStage(void);\r
-\r
-                       /** Spin-loops until the currently selected non-control endpoint is ready for the next packet of data\r
-                        *  to be read or written to it.\r
-                        *\r
-                        *  \note This routine should not be called on CONTROL type endpoints.\r
-                        *\r
-                        *  \ingroup Group_EndpointRW_UC3B\r
-                        *\r
-                        *  \return A value from the \ref Endpoint_WaitUntilReady_ErrorCodes_t enum.\r
-                        */\r
-                       uint8_t Endpoint_WaitUntilReady(void);\r
-\r
-       /* Disable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       }\r
-               #endif\r
-\r
-#endif\r
-\r
-/** @} */\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.c
deleted file mode 100644 (file)
index 6d49abb..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-#define  __INCLUDE_FROM_USB_DRIVER\r
-#include "../USBMode.h"\r
-\r
-#if defined(USB_CAN_BE_HOST)\r
-\r
-#define  __INCLUDE_FROM_HOST_C\r
-#include "../Host.h"\r
-\r
-void USB_Host_ProcessNextHostState(void)\r
-{\r
-       uint8_t ErrorCode    = HOST_ENUMERROR_NoError;\r
-       uint8_t SubErrorCode = HOST_ENUMERROR_NoError;\r
-\r
-       static uint16_t WaitMSRemaining;\r
-       static uint8_t  PostWaitState;\r
-\r
-       switch (USB_HostState)\r
-       {\r
-               case HOST_STATE_WaitForDevice:\r
-                       if (WaitMSRemaining)\r
-                       {\r
-                               if ((SubErrorCode = USB_Host_WaitMS(1)) != HOST_WAITERROR_Successful)\r
-                               {\r
-                                       USB_HostState = PostWaitState;\r
-                                       ErrorCode     = HOST_ENUMERROR_WaitStage;\r
-                                       break;\r
-                               }\r
-\r
-                               if (!(--WaitMSRemaining))\r
-                                 USB_HostState = PostWaitState;\r
-                       }\r
-\r
-                       break;\r
-               case HOST_STATE_Powered:\r
-                       WaitMSRemaining = HOST_DEVICE_SETTLE_DELAY_MS;\r
-\r
-                       USB_HostState = HOST_STATE_Powered_WaitForDeviceSettle;\r
-                       break;\r
-               case HOST_STATE_Powered_WaitForDeviceSettle:\r
-                       if (WaitMSRemaining--)\r
-                       {\r
-                               _delay_ms(1);\r
-                               break;\r
-                       }\r
-                       else\r
-                       {\r
-                               USB_Host_VBUS_Manual_Off();\r
-\r
-                               USB_OTGPAD_On();\r
-                               USB_Host_VBUS_Auto_Enable();\r
-                               USB_Host_VBUS_Auto_On();\r
-\r
-                               USB_HostState = HOST_STATE_Powered_WaitForConnect;\r
-                       }\r
-\r
-                       break;\r
-               case HOST_STATE_Powered_WaitForConnect:\r
-                       if (USB_INT_HasOccurred(USB_INT_DCONNI))\r
-                       {\r
-                               USB_INT_Clear(USB_INT_DCONNI);\r
-                               USB_INT_Clear(USB_INT_DDISCI);\r
-\r
-                               USB_INT_Clear(USB_INT_VBERRI);\r
-                               USB_INT_Enable(USB_INT_VBERRI);\r
-\r
-                               USB_Host_ResumeBus();\r
-                               Pipe_ClearPipes();\r
-\r
-                               HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Powered_DoReset);\r
-                       }\r
-\r
-                       break;\r
-               case HOST_STATE_Powered_DoReset:\r
-                       USB_Host_ResetDevice();\r
-\r
-                       HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Powered_ConfigPipe);\r
-                       break;\r
-               case HOST_STATE_Powered_ConfigPipe:\r
-                       Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
-                                                          PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
-                                                          PIPE_CONTROLPIPE_DEFAULT_SIZE, PIPE_BANK_SINGLE);\r
-\r
-                       if (!(Pipe_IsConfigured()))\r
-                       {\r
-                               ErrorCode    = HOST_ENUMERROR_PipeConfigError;\r
-                               SubErrorCode = 0;\r
-                               break;\r
-                       }\r
-\r
-                       USB_HostState = HOST_STATE_Default;\r
-                       break;\r
-               case HOST_STATE_Default:\r
-                       USB_ControlRequest = (USB_Request_Header_t)\r
-                               {\r
-                                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                                       .bRequest      = REQ_GetDescriptor,\r
-                                       .wValue        = (DTYPE_Device << 8),\r
-                                       .wIndex        = 0,\r
-                                       .wLength       = 8,\r
-                               };\r
-\r
-                       uint8_t DataBuffer[8];\r
-\r
-                       if ((SubErrorCode = USB_Host_SendControlRequest(DataBuffer)) != HOST_SENDCONTROL_Successful)\r
-                       {\r
-                               ErrorCode = HOST_ENUMERROR_ControlError;\r
-                               break;\r
-                       }\r
-\r
-                       USB_ControlPipeSize = DataBuffer[offsetof(USB_Descriptor_Device_t, Endpoint0Size)];\r
-\r
-                       USB_Host_ResetDevice();\r
-\r
-                       HOST_TASK_NONBLOCK_WAIT(200, HOST_STATE_Default_PostReset);\r
-                       break;\r
-               case HOST_STATE_Default_PostReset:\r
-                       Pipe_ConfigurePipe(PIPE_CONTROLPIPE, EP_TYPE_CONTROL,\r
-                                          PIPE_TOKEN_SETUP, ENDPOINT_CONTROLEP,\r
-                                          USB_ControlPipeSize, PIPE_BANK_SINGLE);\r
-\r
-                       if (!(Pipe_IsConfigured()))\r
-                       {\r
-                               ErrorCode    = HOST_ENUMERROR_PipeConfigError;\r
-                               SubErrorCode = 0;\r
-                               break;\r
-                       }\r
-\r
-                       USB_ControlRequest = (USB_Request_Header_t)\r
-                               {\r
-                                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                                       .bRequest      = REQ_SetAddress,\r
-                                       .wValue        = USB_HOST_DEVICEADDRESS,\r
-                                       .wIndex        = 0,\r
-                                       .wLength       = 0,\r
-                               };\r
-\r
-                       if ((SubErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
-                       {\r
-                               ErrorCode = HOST_ENUMERROR_ControlError;\r
-                               break;\r
-                       }\r
-\r
-                       HOST_TASK_NONBLOCK_WAIT(100, HOST_STATE_Default_PostAddressSet);\r
-                       break;\r
-               case HOST_STATE_Default_PostAddressSet:\r
-                       USB_Host_SetDeviceAddress(USB_HOST_DEVICEADDRESS);\r
-\r
-                       EVENT_USB_Host_DeviceEnumerationComplete();\r
-                       USB_HostState = HOST_STATE_Addressed;\r
-                       break;\r
-       }\r
-\r
-       if ((ErrorCode != HOST_ENUMERROR_NoError) && (USB_HostState != HOST_STATE_Unattached))\r
-       {\r
-               EVENT_USB_Host_DeviceEnumerationFailed(ErrorCode, SubErrorCode);\r
-\r
-               USB_Host_VBUS_Auto_Off();\r
-\r
-               EVENT_USB_Host_DeviceUnattached();\r
-\r
-               USB_ResetInterface();\r
-       }\r
-}\r
-\r
-uint8_t USB_Host_WaitMS(uint8_t MS)\r
-{\r
-       bool    BusSuspended = USB_Host_IsBusSuspended();\r
-       uint8_t ErrorCode    = HOST_WAITERROR_Successful;\r
-       bool    HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI);\r
-\r
-       USB_INT_Disable(USB_INT_HSOFI);\r
-       USB_INT_Clear(USB_INT_HSOFI);\r
-\r
-       USB_Host_ResumeBus();\r
-\r
-       while (MS)\r
-       {\r
-               if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
-               {\r
-                       USB_INT_Clear(USB_INT_HSOFI);\r
-                       MS--;\r
-               }\r
-\r
-               if ((USB_HostState == HOST_STATE_Unattached) || (USB_CurrentMode != USB_MODE_Host))\r
-               {\r
-                       ErrorCode = HOST_WAITERROR_DeviceDisconnect;\r
-\r
-                       break;\r
-               }\r
-\r
-               if (Pipe_IsError() == true)\r
-               {\r
-                       Pipe_ClearError();\r
-                       ErrorCode = HOST_WAITERROR_PipeError;\r
-\r
-                       break;\r
-               }\r
-\r
-               if (Pipe_IsStalled() == true)\r
-               {\r
-                       Pipe_ClearStall();\r
-                       ErrorCode = HOST_WAITERROR_SetupStalled;\r
-\r
-                       break;\r
-               }\r
-       }\r
-\r
-       if (BusSuspended)\r
-         USB_Host_SuspendBus();\r
-\r
-       if (HSOFIEnabled)\r
-         USB_INT_Enable(USB_INT_HSOFI);\r
-\r
-       return ErrorCode;\r
-}\r
-\r
-static void USB_Host_ResetDevice(void)\r
-{\r
-       bool BusSuspended = USB_Host_IsBusSuspended();\r
-\r
-       USB_INT_Disable(USB_INT_DDISCI);\r
-\r
-       USB_Host_ResetBus();\r
-       while (!(USB_Host_IsBusResetComplete()));\r
-       USB_Host_ResumeBus();\r
-\r
-       bool HSOFIEnabled = USB_INT_IsEnabled(USB_INT_HSOFI);\r
-\r
-       USB_INT_Disable(USB_INT_HSOFI);\r
-       USB_INT_Clear(USB_INT_HSOFI);\r
-\r
-       for (uint8_t MSRem = 10; MSRem != 0; MSRem--)\r
-       {\r
-               /* Workaround for powerless-pull-up devices. After a USB bus reset,\r
-                  all disconnection interrupts are suppressed while a USB frame is\r
-                  looked for - if it is found within 10ms, the device is still\r
-                  present.                                                        */\r
-\r
-               if (USB_INT_HasOccurred(USB_INT_HSOFI))\r
-               {\r
-                       USB_INT_Clear(USB_INT_HSOFI);\r
-                       USB_INT_Clear(USB_INT_DDISCI);\r
-                       break;\r
-               }\r
-\r
-               _delay_ms(1);\r
-       }\r
-\r
-       if (HSOFIEnabled)\r
-         USB_INT_Enable(USB_INT_HSOFI);\r
-\r
-       if (BusSuspended)\r
-         USB_Host_SuspendBus();\r
-\r
-       USB_INT_Enable(USB_INT_DDISCI);\r
-}\r
-\r
-uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber)\r
-{\r
-       USB_ControlRequest = (USB_Request_Header_t)\r
-               {\r
-                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                       .bRequest      = REQ_SetConfiguration,\r
-                       .wValue        = ConfigNumber,\r
-                       .wIndex        = 0,\r
-                       .wLength       = 0,\r
-               };\r
-\r
-       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
-\r
-       return USB_Host_SendControlRequest(NULL);\r
-}\r
-\r
-uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr)\r
-{\r
-       USB_ControlRequest = (USB_Request_Header_t)\r
-               {\r
-                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                       .bRequest      = REQ_GetDescriptor,\r
-                       .wValue        = (DTYPE_Device << 8),\r
-                       .wIndex        = 0,\r
-                       .wLength       = sizeof(USB_Descriptor_Device_t),\r
-               };\r
-\r
-       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
-\r
-       return USB_Host_SendControlRequest(DeviceDescriptorPtr);\r
-}\r
-\r
-uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index,\r
-                                           void* const Buffer,\r
-                                           const uint8_t BufferLength)\r
-{\r
-       USB_ControlRequest = (USB_Request_Header_t)\r
-               {\r
-                       .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                       .bRequest      = REQ_GetDescriptor,\r
-                       .wValue        = (DTYPE_String << 8) | Index,\r
-                       .wIndex        = 0,\r
-                       .wLength       = BufferLength,\r
-               };\r
-\r
-       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
-\r
-       return USB_Host_SendControlRequest(Buffer);\r
-}\r
-\r
-uint8_t USB_Host_ClearPipeStall(const uint8_t EndpointNum)\r
-{\r
-       USB_ControlRequest = (USB_Request_Header_t)\r
-               {\r
-                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_ENDPOINT),\r
-                       .bRequest      = REQ_ClearFeature,\r
-                       .wValue        = FEATURE_SEL_EndpointHalt,\r
-                       .wIndex        = EndpointNum,\r
-                       .wLength       = 0,\r
-               };\r
-\r
-       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
-\r
-       return USB_Host_SendControlRequest(NULL);\r
-}\r
-\r
-#endif\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Host_UC3B.h
deleted file mode 100644 (file)
index 4d08a4c..0000000
+++ /dev/null
@@ -1,422 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *  \brief USB Host definitions for the AVR32 UC3B microcontrollers.\r
- *  \copydetails Group_Host_UC3B\r
- *\r
- *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
- *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
- */\r
-\r
-/** \ingroup Group_Host\r
- *  \defgroup Group_Host_UC3B Host Management (UC3B)\r
- *  \brief USB Host definitions for the AVR32 UC3B microcontrollers.\r
- *\r
- *  Architecture specific USB Host definitions for the Atmel 32-bit AVR UC3B microcontrollers.\r
- *\r
- *  @{\r
- */\r
-\r
-#ifndef __USBHOST_UC3B_H__\r
-#define __USBHOST_UC3B_H__\r
-\r
-       /* Includes: */\r
-               #include "../../../../Common/Common.h"\r
-               #include "../StdDescriptors.h"\r
-               #include "../Pipe.h"\r
-               #include "../USBInterrupt.h"\r
-\r
-       /* Enable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       extern "C" {\r
-               #endif\r
-\r
-       /* Preprocessor Checks: */\r
-               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
-                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
-               #endif\r
-\r
-       /* Public Interface - May be used in end-application: */\r
-               /* Macros: */\r
-                       /** Indicates the fixed USB device address which any attached device is enumerated to when in\r
-                        *  host mode. As only one USB device may be attached to the AVR in host mode at any one time\r
-                        *  and that the address used is not important (other than the fact that it is non-zero), a\r
-                        *  fixed value is specified by the library.\r
-                        */\r
-                       #define USB_HOST_DEVICEADDRESS                 1\r
-\r
-                       #if !defined(USB_HOST_TIMEOUT_MS) || defined(__DOXYGEN__)\r
-                               /** Constant for the maximum software timeout period of sent USB control transactions to an attached\r
-                                *  device. If a device fails to respond to a sent control request within this period, the\r
-                                *  library will return a timeout error code.\r
-                                *\r
-                                *  This value may be overridden in the user project makefile as the value of the\r
-                                *  \ref USB_HOST_TIMEOUT_MS token, and passed to the compiler using the -D switch.\r
-                                */\r
-                               #define USB_HOST_TIMEOUT_MS                1000\r
-                       #endif\r
-\r
-                       #if !defined(HOST_DEVICE_SETTLE_DELAY_MS) || defined(__DOXYGEN__)\r
-                               /** Constant for the delay in milliseconds after a device is connected before the library\r
-                                *  will start the enumeration process. Some devices require a delay of up to 5 seconds\r
-                                *  after connection before the enumeration process can start or incorrect operation will\r
-                                *  occur.\r
-                                *\r
-                                *  The default delay value may be overridden in the user project makefile by defining the\r
-                                *  \c HOST_DEVICE_SETTLE_DELAY_MS token to the required delay in milliseconds, and passed to the\r
-                                *  compiler using the -D switch.\r
-                                */\r
-                               #define HOST_DEVICE_SETTLE_DELAY_MS        1000\r
-                       #endif\r
-\r
-               /* Enums: */\r
-                       /** Enum for the error codes for the \ref EVENT_USB_Host_HostError() event.\r
-                        *\r
-                        *  \see \ref Group_Events for more information on this event.\r
-                        */\r
-                       enum USB_Host_ErrorCodes_t\r
-                       {\r
-                               HOST_ERROR_VBusVoltageDip       = 0, /**< VBUS voltage dipped to an unacceptable level. This\r
-                                                                     *   error may be the result of an attached device drawing\r
-                                                                     *   too much current from the VBUS line, or due to the\r
-                                                                     *   AVR's power source being unable to supply sufficient\r
-                                                                     *   current.\r
-                                                                     */\r
-                       };\r
-\r
-                       /** Enum for the error codes for the \ref EVENT_USB_Host_DeviceEnumerationFailed() event.\r
-                        *\r
-                        *  \see \ref Group_Events for more information on this event.\r
-                        */\r
-                       enum USB_Host_EnumerationErrorCodes_t\r
-                       {\r
-                               HOST_ENUMERROR_NoError          = 0, /**< No error occurred. Used internally, this is not a valid\r
-                                                                     *   ErrorCode parameter value for the \ref EVENT_USB_Host_DeviceEnumerationFailed()\r
-                                                                     *   event.\r
-                                                                     */\r
-                               HOST_ENUMERROR_WaitStage        = 1, /**< One of the delays between enumeration steps failed\r
-                                                                     *   to complete successfully, due to a timeout or other\r
-                                                                     *   error.\r
-                                                                     */\r
-                               HOST_ENUMERROR_NoDeviceDetected = 2, /**< No device was detected, despite the USB data lines\r
-                                                                     *   indicating the attachment of a device.\r
-                                                                     */\r
-                               HOST_ENUMERROR_ControlError     = 3, /**< One of the enumeration control requests failed to\r
-                                                                     *   complete successfully.\r
-                                                                     */\r
-                               HOST_ENUMERROR_PipeConfigError  = 4, /**< The default control pipe (address 0) failed to\r
-                                                                     *   configure correctly.\r
-                                                                     */\r
-                       };\r
-\r
-               /* Inline Functions: */\r
-                       /** Returns the current USB frame number, when in host mode. Every millisecond the USB bus is active (i.e. not suspended)\r
-                        *  the frame number is incremented by one.\r
-                        */\r
-                       static inline uint16_t USB_Host_GetFrameNumber(void)\r
-                       {\r
-                               return AVR32_USBB_UHFNUM;\r
-                       }\r
-\r
-                       #if !defined(NO_SOF_EVENTS)\r
-                               /** Enables the host mode Start Of Frame events. When enabled, this causes the\r
-                                *  \ref EVENT_USB_Host_StartOfFrame() event to fire once per millisecond, synchronized to the USB bus,\r
-                                *  at the start of each USB frame when a device is enumerated while in host mode.\r
-                                *\r
-                                *  \note Not available when the \c NO_SOF_EVENTS compile time token is defined.\r
-                                */\r
-                               static inline void USB_Host_EnableSOFEvents(void) ATTR_ALWAYS_INLINE;\r
-                               static inline void USB_Host_EnableSOFEvents(void)\r
-                               {\r
-                                       USB_INT_Enable(USB_INT_HSOFI);\r
-                               }\r
-\r
-                               /** Disables the host mode Start Of Frame events. When disabled, this stops the firing of the\r
-                                *  \ref EVENT_USB_Host_StartOfFrame() event when enumerated in host mode.\r
-                                *\r
-                                *  \note Not available when the NO_SOF_EVENTS compile time token is defined.\r
-                                */\r
-                               static inline void USB_Host_DisableSOFEvents(void) ATTR_ALWAYS_INLINE;\r
-                               static inline void USB_Host_DisableSOFEvents(void)\r
-                               {\r
-                                       USB_INT_Disable(USB_INT_HSOFI);\r
-                               }\r
-                       #endif\r
-\r
-                       /** Resets the USB bus, including the endpoints in any attached device and pipes on the AVR host.\r
-                        *  USB bus resets leave the default control pipe configured (if already configured).\r
-                        *\r
-                        *  If the USB bus has been suspended prior to issuing a bus reset, the attached device will be\r
-                        *  woken up automatically and the bus resumed after the reset has been correctly issued.\r
-                        */\r
-                       static inline void USB_Host_ResetBus(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_ResetBus(void)\r
-                       {\r
-                               AVR32_USBB.UHCON.reset = true;\r
-                       }\r
-\r
-                       /** Determines if a previously issued bus reset (via the \ref USB_Host_ResetBus() macro) has\r
-                        *  completed.\r
-                        *\r
-                        *  \return Boolean \c true if no bus reset is currently being sent, \c false otherwise.\r
-                        */\r
-                       static inline bool USB_Host_IsBusResetComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool USB_Host_IsBusResetComplete(void)\r
-                       {\r
-                               return AVR32_USBB.UHCON.reset;\r
-                       }\r
-\r
-                       /** Resumes USB communications with an attached and enumerated device, by resuming the transmission\r
-                        *  of the 1MS Start Of Frame messages to the device. When resumed, USB communications between the\r
-                        *  host and attached device may occur.\r
-                        */\r
-                       static inline void USB_Host_ResumeBus(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_ResumeBus(void)\r
-                       {\r
-                               AVR32_USBB.UHCON.sofe = true;\r
-                       }\r
-\r
-                       /** Suspends the USB bus, preventing any communications from occurring between the host and attached\r
-                        *  device until the bus has been resumed. This stops the transmission of the 1MS Start Of Frame\r
-                        *  messages to the device.\r
-                        */\r
-                       static inline void USB_Host_SuspendBus(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_SuspendBus(void)\r
-                       {\r
-                               AVR32_USBB.UHCON.sofe = false;\r
-                       }\r
-\r
-                       /** Determines if the USB bus has been suspended via the use of the \ref USB_Host_SuspendBus() macro,\r
-                        *  false otherwise. While suspended, no USB communications can occur until the bus is resumed,\r
-                        *  except for the Remote Wakeup event from the device if supported.\r
-                        *\r
-                        *  \return Boolean \c true if the bus is currently suspended, \c false otherwise.\r
-                        */\r
-                       static inline bool USB_Host_IsBusSuspended(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool USB_Host_IsBusSuspended(void)\r
-                       {\r
-                               return AVR32_USBB.UHCON.sofe;\r
-                       }\r
-\r
-                       /** Determines if the attached device is currently enumerated in Full Speed mode (12Mb/s), or\r
-                        *  false if the attached device is enumerated in Low Speed mode (1.5Mb/s).\r
-                        *\r
-                        *  \return Boolean \c true if the attached device is enumerated in Full Speed mode, \c false otherwise.\r
-                        */\r
-                       static inline bool USB_Host_IsDeviceFullSpeed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool USB_Host_IsDeviceFullSpeed(void)\r
-                       {\r
-                               return (AVR32_USBB.USBSTA.speed == AVR32_USBB_SPEED_FULL);\r
-                       }\r
-\r
-                       /** Determines if the attached device is currently issuing a Remote Wakeup request, requesting\r
-                        *  that the host resume the USB bus and wake up the device, false otherwise.\r
-                        *\r
-                        *  \return Boolean \c true if the attached device has sent a Remote Wakeup request, \c false otherwise.\r
-                        */\r
-                       static inline bool USB_Host_IsRemoteWakeupSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool USB_Host_IsRemoteWakeupSent(void)\r
-                       {\r
-                               return AVR32_USBB.UHINT.rxrsmi;\r
-                       }\r
-\r
-                       /** Clears the flag indicating that a Remote Wakeup request has been issued by an attached device. */\r
-                       static inline void USB_Host_ClearRemoteWakeupSent(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_ClearRemoteWakeupSent(void)\r
-                       {\r
-                               AVR32_USBB.UHINTCLR.rxrsmic = true;\r
-                       }\r
-\r
-                       /** Accepts a Remote Wakeup request from an attached device. This must be issued in response to\r
-                        *  a device's Remote Wakeup request within 2ms for the request to be accepted and the bus to\r
-                        *  be resumed.\r
-                        */\r
-                       static inline void USB_Host_ResumeFromWakeupRequest(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_ResumeFromWakeupRequest(void)\r
-                       {\r
-                               AVR32_USBB.UHCON.resume = true;\r
-                       }\r
-\r
-                       /** Determines if a resume from Remote Wakeup request is currently being sent to an attached\r
-                        *  device.\r
-                        *\r
-                        *  \return Boolean \c true if no resume request is currently being sent, \c false otherwise.\r
-                        */\r
-                       static inline bool USB_Host_IsResumeFromWakeupRequestSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool USB_Host_IsResumeFromWakeupRequestSent(void)\r
-                       {\r
-                               return AVR32_USBB.UHCON.resume;\r
-                       }\r
-\r
-               /* Function Prototypes: */\r
-                       /** Convenience function. This routine sends a SET CONFIGURATION standard request to the attached\r
-                        *  device, with the given configuration index. This can be used to easily set the device\r
-                        *  configuration without creating and sending the request manually.\r
-                        *\r
-                        *  \note After this routine returns, the control pipe will be selected.\r
-                        *\r
-                        *  \param[in] ConfigNumber  Configuration index to send to the device.\r
-                        *\r
-                        *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.\r
-                        */\r
-                       uint8_t USB_Host_SetDeviceConfiguration(const uint8_t ConfigNumber);\r
-\r
-                       /** Convenience function. This routine sends a GET DESCRIPTOR standard request to the attached\r
-                        *  device, requesting the device descriptor. This can be used to easily retrieve information\r
-                        *  about the device such as its VID, PID and power requirements.\r
-                        *\r
-                        *  \note After this routine returns, the control pipe will be selected.\r
-                        *\r
-                        *  \param[out] DeviceDescriptorPtr  Pointer to the destination device descriptor structure where\r
-                        *                                   the read data is to be stored.\r
-                        *\r
-                        *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.\r
-                        */\r
-                       uint8_t USB_Host_GetDeviceDescriptor(void* const DeviceDescriptorPtr);\r
-\r
-                       /** Convenience function. This routine sends a GET DESCRIPTOR standard request to the attached\r
-                        *  device, requesting the string descriptor of the specified index. This can be used to easily\r
-                        *  retrieve string descriptors from the device by index, after the index is obtained from the\r
-                        *  Device or Configuration descriptors.\r
-                        *\r
-                        *  \note After this routine returns, the control pipe will be selected.\r
-                        *\r
-                        *  \param[in]  Index        Index of the string index to retrieve.\r
-                        *  \param[out] Buffer       Pointer to the destination buffer where the retrieved string descriptor is\r
-                        *                           to be stored.\r
-                        *  \param[in] BufferLength  Maximum size of the string descriptor which can be stored into the buffer.\r
-                        *\r
-                        *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.\r
-                        */\r
-                       uint8_t USB_Host_GetDeviceStringDescriptor(const uint8_t Index,\r
-                                                                  void* const Buffer,\r
-                                                                  const uint8_t BufferLength);\r
-\r
-                       /** Clears a stall condition on the given pipe, via a CLEAR FEATURE standard request to the attached device.\r
-                        *\r
-                        *  \note After this routine returns, the control pipe will be selected.\r
-                        *\r
-                        *  \param[in] EndpointIndex  Index of the endpoint to clear, including the endpoint's direction.\r
-                        *\r
-                        *  \return A value from the \ref USB_Host_SendControlErrorCodes_t enum to indicate the result.\r
-                        */\r
-                       uint8_t USB_Host_ClearPipeStall(const uint8_t EndpointIndex);\r
-\r
-       /* Private Interface - For use in library only: */\r
-       #if !defined(__DOXYGEN__)\r
-               /* Macros: */\r
-                       static inline void USB_Host_HostMode_On(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_HostMode_On(void)\r
-                       {\r
-                               // Not required for UC3B\r
-                       }\r
-\r
-                       static inline void USB_Host_HostMode_Off(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_HostMode_Off(void)\r
-                       {\r
-                               // Not required for UC3B\r
-                       }\r
-\r
-                       static inline void USB_Host_VBUS_Auto_Enable(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_VBUS_Auto_Enable(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.vbushwc = false;\r
-                       }\r
-\r
-                       static inline void USB_Host_VBUS_Manual_Enable(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_VBUS_Manual_Enable(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.vbushwc = true;\r
-                       }\r
-\r
-                       static inline void USB_Host_VBUS_Auto_On(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_VBUS_Auto_On(void)\r
-                       {\r
-                               AVR32_USBB.USBSTASET.vbusrqs = true;\r
-                       }\r
-\r
-                       static inline void USB_Host_VBUS_Manual_On(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_VBUS_Manual_On(void)\r
-                       {\r
-                               AVR32_USBB.USBSTASET.vbusrqs = true;\r
-                       }\r
-\r
-                       static inline void USB_Host_VBUS_Auto_Off(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_VBUS_Auto_Off(void)\r
-                       {\r
-                               AVR32_USBB.USBSTACLR.vbusrqc = true;\r
-                       }\r
-\r
-                       static inline void USB_Host_VBUS_Manual_Off(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_VBUS_Manual_Off(void)\r
-                       {\r
-                               AVR32_USBB.USBSTACLR.vbusrqc = true;\r
-                       }\r
-\r
-                       static inline void USB_Host_SetDeviceAddress(const uint8_t Address) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Host_SetDeviceAddress(const uint8_t Address)\r
-                       {\r
-                               AVR32_USBB.UHADDR1.uhaddr_p0 = Address;\r
-                               AVR32_USBB.UHADDR1.uhaddr_p1 = Address;\r
-                               AVR32_USBB.UHADDR1.uhaddr_p2 = Address;\r
-                               AVR32_USBB.UHADDR1.uhaddr_p3 = Address;\r
-                               AVR32_USBB.UHADDR2.uhaddr_p4 = Address;\r
-                               AVR32_USBB.UHADDR2.uhaddr_p5 = Address;\r
-                               AVR32_USBB.UHADDR2.uhaddr_p6 = Address;\r
-                       }\r
-\r
-               /* Enums: */\r
-                       enum USB_Host_WaitMSErrorCodes_t\r
-                       {\r
-                               HOST_WAITERROR_Successful       = 0,\r
-                               HOST_WAITERROR_DeviceDisconnect = 1,\r
-                               HOST_WAITERROR_PipeError        = 2,\r
-                               HOST_WAITERROR_SetupStalled     = 3,\r
-                       };\r
-\r
-               /* Function Prototypes: */\r
-                       void    USB_Host_ProcessNextHostState(void);\r
-                       uint8_t USB_Host_WaitMS(uint8_t MS);\r
-\r
-                       #if defined(__INCLUDE_FROM_HOST_C)\r
-                               static void USB_Host_ResetDevice(void);\r
-                       #endif\r
-       #endif\r
-\r
-       /* Disable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       }\r
-               #endif\r
-\r
-#endif\r
-\r
-/** @} */\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.c
deleted file mode 100644 (file)
index 870828e..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-#define  __INCLUDE_FROM_USB_DRIVER\r
-#include "../USBMode.h"\r
-\r
-#if defined(USB_CAN_BE_HOST)\r
-\r
-#include "../Pipe.h"\r
-\r
-uint8_t USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
-\r
-volatile uint8_t  USB_SelectedPipe = PIPE_CONTROLPIPE;\r
-volatile uint8_t* USB_PipeFIFOPos[PIPE_TOTAL_PIPES];\r
-\r
-bool Pipe_ConfigurePipe(const uint8_t Number,\r
-                        const uint8_t Type,\r
-                        const uint8_t Token,\r
-                        const uint8_t EndpointNumber,\r
-                        const uint16_t Size,\r
-                        const uint8_t Banks)\r
-{\r
-       Pipe_SelectPipe(Number);\r
-       Pipe_EnablePipe();\r
-\r
-       (&AVR32_USBB.upcfg0)[Number] = 0;\r
-       (&AVR32_USBB.upcfg0)[Number] = (AVR32_USBB_ALLOC_MASK |\r
-                                       ((uint32_t)Type  << AVR32_USBB_PTYPE_OFFSET)  |\r
-                                       ((uint32_t)Token << AVR32_USBB_PTOKEN_OFFSET) |\r
-                                       ((uint32_t)Banks << AVR32_USBB_PBK_OFFSET)    |\r
-                                       ((EndpointNumber & PIPE_EPNUM_MASK) << AVR32_USBB_PEPNUM_OFFSET));\r
-       USB_PipeFIFOPos[Number]      = &AVR32_USBB_SLAVE[Number * 0x10000];\r
-\r
-       Pipe_SetInfiniteINRequests();\r
-\r
-       return Pipe_IsConfigured();\r
-}\r
-\r
-void Pipe_ClearPipes(void)\r
-{\r
-       for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
-       {\r
-               Pipe_SelectPipe(PNum);\r
-               (&AVR32_USBB.upcfg0)[PNum]    = 0;\r
-               (&AVR32_USBB.upcon0clr)[PNum] = 0xFFFFFFFF;\r
-               USB_PipeFIFOPos[PNum]         = &AVR32_USBB_SLAVE[PNum * 0x10000];\r
-               Pipe_DisablePipe();\r
-       }\r
-}\r
-\r
-bool Pipe_IsEndpointBound(const uint8_t EndpointAddress)\r
-{\r
-       uint8_t PrevPipeNumber = Pipe_GetCurrentPipe();\r
-\r
-       for (uint8_t PNum = 0; PNum < PIPE_TOTAL_PIPES; PNum++)\r
-       {\r
-               Pipe_SelectPipe(PNum);\r
-\r
-               if (!(Pipe_IsConfigured()))\r
-                 continue;\r
-\r
-               uint8_t PipeToken        = Pipe_GetPipeToken();\r
-               bool    PipeTokenCorrect = true;\r
-\r
-               if (PipeToken != PIPE_TOKEN_SETUP)\r
-                 PipeTokenCorrect = (PipeToken == ((EndpointAddress & PIPE_EPDIR_MASK) ? PIPE_TOKEN_IN : PIPE_TOKEN_OUT));\r
-\r
-               if (PipeTokenCorrect && (Pipe_BoundEndpointNumber() == (EndpointAddress & PIPE_EPNUM_MASK)))\r
-                 return true;\r
-       }\r
-\r
-       Pipe_SelectPipe(PrevPipeNumber);\r
-       return false;\r
-}\r
-\r
-uint8_t Pipe_WaitUntilReady(void)\r
-{\r
-       #if (USB_STREAM_TIMEOUT_MS < 0xFF)\r
-       uint8_t  TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
-       #else\r
-       uint16_t TimeoutMSRem = USB_STREAM_TIMEOUT_MS;\r
-       #endif\r
-\r
-       uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber();\r
-\r
-       for (;;)\r
-       {\r
-               if (Pipe_GetPipeToken() == PIPE_TOKEN_IN)\r
-               {\r
-                       if (Pipe_IsINReceived())\r
-                         return PIPE_READYWAIT_NoError;\r
-               }\r
-               else\r
-               {\r
-                       if (Pipe_IsOUTReady())\r
-                         return PIPE_READYWAIT_NoError;\r
-               }\r
-\r
-               if (Pipe_IsStalled())\r
-                 return PIPE_READYWAIT_PipeStalled;\r
-               else if (USB_HostState == HOST_STATE_Unattached)\r
-                 return PIPE_READYWAIT_DeviceDisconnected;\r
-\r
-               uint16_t CurrentFrameNumber = USB_Host_GetFrameNumber();\r
-\r
-               if (CurrentFrameNumber != PreviousFrameNumber)\r
-               {\r
-                       PreviousFrameNumber = CurrentFrameNumber;\r
-\r
-                       if (!(TimeoutMSRem--))\r
-                         return PIPE_READYWAIT_Timeout;\r
-               }\r
-       }\r
-}\r
-\r
-#endif\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/Pipe_UC3B.h
deleted file mode 100644 (file)
index a135138..0000000
+++ /dev/null
@@ -1,915 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *  \brief USB Pipe definitions for the AVR32 UC3B microcontrollers.\r
- *  \copydetails Group_PipeManagement_UC3B\r
- *\r
- *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
- *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
- */\r
-\r
-/** \ingroup Group_PipeRW\r
- *  \defgroup Group_PipeRW_UC3B Pipe Data Reading and Writing (UC3B)\r
- *  \brief Pipe data read/write definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Functions, macros, variables, enums and types related to data reading and writing from and to pipes.\r
- */\r
-\r
-/** \ingroup Group_PipePrimitiveRW\r
- *  \defgroup Group_PipePrimitiveRW_UC3B Read/Write of Primitive Data Types (UC3B)\r
- *  \brief Pipe primative data read/write definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Functions, macros, variables, enums and types related to data reading and writing of primitive data types\r
- *  from and to pipes.\r
- */\r
-\r
-/** \ingroup Group_PipePacketManagement\r
- *  \defgroup Group_PipePacketManagement_UC3B Pipe Packet Management (UC3B)\r
- *  \brief Pipe packet management definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Functions, macros, variables, enums and types related to packet management of pipes.\r
- */\r
-\r
-/** \ingroup Group_PipeControlReq\r
- *  \defgroup Group_PipeControlReq_UC3B Pipe Control Request Management (UC3B)\r
- *  \brief Pipe control request management definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  Module for host mode request processing. This module allows for the transmission of standard, class and\r
- *  vendor control requests to the default control endpoint of an attached device while in host mode.\r
- *\r
- *  \see Chapter 9 of the USB 2.0 specification.\r
- */\r
-\r
-/** \ingroup Group_PipeManagement\r
- *  \defgroup Group_PipeManagement_UC3B Pipe Management (UC3B)\r
- *  \brief Pipe management definitions for the Atmel AVR32 UC3B architecture.\r
- *\r
- *  This module contains functions, macros and enums related to pipe management when in USB Host mode. This\r
- *  module contains the pipe management macros, as well as pipe interrupt and data send/receive functions\r
- *  for various data types.\r
- *\r
- *  @{\r
- */\r
-\r
-#ifndef __PIPE_UC3B_H__\r
-#define __PIPE_UC3B_H__\r
-\r
-       /* Includes: */\r
-               #include "../../../../Common/Common.h"\r
-               #include "../USBTask.h"\r
-\r
-       /* Enable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       extern "C" {\r
-               #endif\r
-\r
-       /* Preprocessor Checks: */\r
-               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
-                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
-               #endif\r
-\r
-       /* Private Interface - For use in library only: */\r
-       #if !defined(__DOXYGEN__)\r
-               /* External Variables: */\r
-                       extern volatile uint8_t  USB_SelectedPipe;\r
-                       extern volatile uint8_t* USB_PipeFIFOPos[];\r
-       #endif\r
-\r
-       /* Public Interface - May be used in end-application: */\r
-               /* Macros: */\r
-                       /** \name Pipe Error Flag Masks */\r
-                       //@{\r
-                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that an overflow error occurred in the pipe on the received data. */\r
-                       #define PIPE_ERRORFLAG_OVERFLOW         (AVR32_USBB_UPSTA0_OVERFI_MASK << 8)\r
-\r
-                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a CRC error occurred in the pipe on the received data. */\r
-                       #define PIPE_ERRORFLAG_CRC16            AVR32_USBB_UPERR0_CRC16_MASK\r
-\r
-                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware timeout error occurred in the pipe. */\r
-                       #define PIPE_ERRORFLAG_TIMEOUT          AVR32_USBB_UPERR0_TIMEOUT_MASK\r
-\r
-                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware PID error occurred in the pipe. */\r
-                       #define PIPE_ERRORFLAG_PID              AVR32_USBB_UPERR0_PID_MASK\r
-\r
-                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware data PID error occurred in the pipe. */\r
-                       #define PIPE_ERRORFLAG_DATAPID          AVR32_USBB_UPERR0_DATAPID_MASK\r
-\r
-                       /** Mask for \ref Pipe_GetErrorFlags(), indicating that a hardware data toggle error occurred in the pipe. */\r
-                       #define PIPE_ERRORFLAG_DATATGL          AVR32_USBB_UPERR0_DATATGL_MASK\r
-                       //@}\r
-\r
-                       /** \name Pipe Token Masks */\r
-                       //@{\r
-                       /** Token mask for \ref Pipe_ConfigurePipe(). This sets the pipe as a SETUP token (for CONTROL type pipes),\r
-                        *  which will trigger a control request on the attached device when data is written to the pipe.\r
-                        */\r
-                       #define PIPE_TOKEN_SETUP                AVR32_USBB_UPCFG0_PTOKEN_SETUP\r
-\r
-                       /** Token mask for \ref Pipe_ConfigurePipe(). This sets the pipe as a IN token (for non-CONTROL type pipes),\r
-                        *  indicating that the pipe data will flow from device to host.\r
-                        */\r
-                       #define PIPE_TOKEN_IN                   AVR32_USBB_UPCFG0_PTOKEN_IN\r
-\r
-                       /** Token mask for \ref Pipe_ConfigurePipe(). This sets the pipe as a OUT token (for non-CONTROL type pipes),\r
-                        *  indicating that the pipe data will flow from host to device.\r
-                        */\r
-                       #define PIPE_TOKEN_OUT                  AVR32_USBB_UPCFG0_PTOKEN_OUT\r
-                       //@}\r
-                       \r
-                       /** \name Pipe Bank Mode Masks */\r
-                       //@{\r
-                       /** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe\r
-                        *  should have one single bank, which requires less USB FIFO memory but results in slower transfers as\r
-                        *  only one USB device (the AVR or the attached device) can access the pipe's bank at the one time.\r
-                        */\r
-                       #define PIPE_BANK_SINGLE                AVR32_USBB_UPCFG0_PBK_SINGLE\r
-\r
-                       /** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe\r
-                        *  should have two banks, which requires more USB FIFO memory but results in faster transfers as one\r
-                        *  USB device (the AVR or the attached device) can access one bank while the other accesses the second\r
-                        *  bank.\r
-                        */\r
-                       #define PIPE_BANK_DOUBLE                AVR32_USBB_UPCFG0_PBK_DOUBLE\r
-\r
-                       /** Mask for the bank mode selection for the \ref Pipe_ConfigurePipe() macro. This indicates that the pipe\r
-                        *  should have three banks, which requires more USB FIFO memory but results in faster transfers as one\r
-                        *  USB device (the AVR or the attached device) can access one bank while the other accesses the remaining\r
-                        *  banks.\r
-                        */\r
-                       #define PIPE_BANK_TRIPLE                AVR32_USBB_UPCFG0_PBK_TRIPLE\r
-                       //@}\r
-\r
-                       /** Default size of the default control pipe's bank, until altered by the Endpoint0Size value\r
-                        *  in the device descriptor of the attached device.\r
-                        */\r
-                       #define PIPE_CONTROLPIPE_DEFAULT_SIZE   64\r
-\r
-                       /** Total number of pipes (including the default control pipe at address 0) which may be used in\r
-                        *  the device.\r
-                        */\r
-                       #define PIPE_TOTAL_PIPES                7\r
-\r
-                       /** Size in bytes of the largest pipe bank size possible in the device. Not all banks on each AVR\r
-                        *  model supports the largest bank size possible on the device; different pipe numbers support\r
-                        *  different maximum bank sizes. This value reflects the largest possible bank of any pipe on the\r
-                        *  currently selected UC3B AVR model.\r
-                        */\r
-                       #define PIPE_MAX_SIZE                   256\r
-\r
-               /* Enums: */\r
-                       /** Enum for the possible error return codes of the \ref Pipe_WaitUntilReady() function.\r
-                        *\r
-                        *  \ingroup Group_PipeRW_UC3B\r
-                        */\r
-                       enum Pipe_WaitUntilReady_ErrorCodes_t\r
-                       {\r
-                               PIPE_READYWAIT_NoError                 = 0, /**< Pipe ready for next packet, no error. */\r
-                               PIPE_READYWAIT_PipeStalled             = 1,     /**< The device stalled the pipe while waiting. */\r
-                               PIPE_READYWAIT_DeviceDisconnected      = 2,     /**< Device was disconnected from the host while waiting. */\r
-                               PIPE_READYWAIT_Timeout                 = 3, /**< The device failed to accept or send the next packet\r
-                                                                            *   within the software timeout period set by the\r
-                                                                            *   \ref USB_STREAM_TIMEOUT_MS macro.\r
-                                                                            */\r
-                       };\r
-\r
-               /* Inline Functions: */\r
-                       /** Indicates the number of bytes currently stored in the current pipes's selected bank.\r
-                        *\r
-                        *  \note The return width of this function may differ, depending on the maximum pipe bank size\r
-                        *        of the selected AVR model.\r
-                        *\r
-                        *  \ingroup Group_PipeRW_UC3B\r
-                        *\r
-                        *  \return Total number of bytes in the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline uint16_t Pipe_BytesInPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint16_t Pipe_BytesInPipe(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].pbyct;\r
-                       }\r
-\r
-                       /** Returns the pipe address of the currently selected pipe. This is typically used to save the\r
-                        *  currently selected pipe number so that it can be restored after another pipe has been manipulated.\r
-                        *\r
-                        *  \return Index of the currently selected pipe.\r
-                        */\r
-                       static inline uint8_t Pipe_GetCurrentPipe(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Pipe_GetCurrentPipe(void)\r
-                       {\r
-                               return USB_SelectedPipe;\r
-                       }\r
-\r
-                       /** Selects the given pipe number. Any pipe operations which do not require the pipe number to be\r
-                        *  indicated will operate on the currently selected pipe.\r
-                        *\r
-                        *  \param[in] PipeNumber  Index of the pipe to select.\r
-                        */\r
-                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_SelectPipe(const uint8_t PipeNumber)\r
-                       {\r
-                               USB_SelectedPipe = PipeNumber;\r
-                       }\r
-\r
-                       /** Resets the desired pipe, including the pipe banks and flags.\r
-                        *\r
-                        *  \param[in] PipeNumber  Index of the pipe to reset.\r
-                        */\r
-                       static inline void Pipe_ResetPipe(const uint8_t PipeNumber) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_ResetPipe(const uint8_t PipeNumber)\r
-                       {\r
-                               AVR32_USBB.uprst |=  (AVR32_USBB_PRST0_MASK << PipeNumber);\r
-                               AVR32_USBB.uprst &= ~(AVR32_USBB_PRST0_MASK << PipeNumber);\r
-                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
-                       }\r
-\r
-                       /** Enables the currently selected pipe so that data can be sent and received through it to and from\r
-                        *  an attached device.\r
-                        *\r
-                        *  \pre The currently selected pipe must first be configured properly via \ref Pipe_ConfigurePipe().\r
-                        */\r
-                       static inline void Pipe_EnablePipe(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_EnablePipe(void)\r
-                       {\r
-                               AVR32_USBB.uprst |=  (AVR32_USBB_PEN0_MASK << USB_SelectedPipe);\r
-                       }\r
-\r
-                       /** Disables the currently selected pipe so that data cannot be sent and received through it to and\r
-                        *  from an attached device.\r
-                        */\r
-                       static inline void Pipe_DisablePipe(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_DisablePipe(void)\r
-                       {\r
-                               AVR32_USBB.uprst &= ~(AVR32_USBB_PEN0_MASK << USB_SelectedPipe);\r
-                       }\r
-\r
-                       /** Determines if the currently selected pipe is enabled, but not necessarily configured.\r
-                        *\r
-                        * \return Boolean \c true if the currently selected pipe is enabled, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsEnabled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsEnabled(void)\r
-                       {\r
-                               return ((AVR32_USBB.uprst & (AVR32_USBB_PEN0_MASK << USB_SelectedPipe)) ? true : false);\r
-                       }\r
-\r
-                       /** Gets the current pipe token, indicating the pipe's data direction and type.\r
-                        *\r
-                        *  \return The current pipe token, as a \c PIPE_TOKEN_* mask.\r
-                        */\r
-                       static inline uint8_t Pipe_GetPipeToken(void) ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Pipe_GetPipeToken(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].ptoken;\r
-                       }\r
-\r
-                       /** Sets the token for the currently selected pipe to one of the tokens specified by the \c PIPE_TOKEN_*\r
-                        *  masks. This can be used on CONTROL type pipes, to allow for bidirectional transfer of data during\r
-                        *  control requests, or on regular pipes to allow for half-duplex bidirectional data transfer to devices\r
-                        *  which have two endpoints of opposite direction sharing the same endpoint address within the device.\r
-                        *\r
-                        *  \param[in] Token  New pipe token to set the selected pipe to, as a \c PIPE_TOKEN_* mask.\r
-                        */\r
-                       static inline void Pipe_SetPipeToken(const uint8_t Token) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_SetPipeToken(const uint8_t Token)\r
-                       {\r
-                               (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].ptoken = Token;\r
-                       }\r
-\r
-                       /** Configures the currently selected pipe to allow for an unlimited number of IN requests. */\r
-                       static inline void Pipe_SetInfiniteINRequests(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_SetInfiniteINRequests(void)\r
-                       {\r
-                               (&AVR32_USBB.UPINRQ0)[USB_SelectedPipe].inmode = true;\r
-                       }\r
-\r
-                       /** Configures the currently selected pipe to only allow the specified number of IN requests to be\r
-                        *  accepted by the pipe before it is automatically frozen.\r
-                        *\r
-                        *  \param[in] TotalINRequests  Total number of IN requests that the pipe may receive before freezing.\r
-                        */\r
-                       static inline void Pipe_SetFiniteINRequests(const uint8_t TotalINRequests) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_SetFiniteINRequests(const uint8_t TotalINRequests)\r
-                       {\r
-                               (&AVR32_USBB.UPINRQ0)[USB_SelectedPipe].inmode = false;\r
-                               (&AVR32_USBB.UPINRQ0)[USB_SelectedPipe].inrq   = TotalINRequests;\r
-                       }\r
-\r
-                       /** Determines if the currently selected pipe is configured.\r
-                        *\r
-                        *  \return Boolean \c true if the selected pipe is configured, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsConfigured(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsConfigured(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].cfgok;\r
-                       }\r
-\r
-                       /** Retrieves the endpoint number of the endpoint within the attached device that the currently selected\r
-                        *  pipe is bound to.\r
-                        *\r
-                        *  \return Endpoint number the currently selected pipe is bound to.\r
-                        */\r
-                       static inline uint8_t Pipe_BoundEndpointNumber(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Pipe_BoundEndpointNumber(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].pepnum;\r
-                       }\r
-\r
-                       /** Sets the period between interrupts for an INTERRUPT type pipe to a specified number of milliseconds.\r
-                        *\r
-                        *  \param[in] Milliseconds  Number of milliseconds between each pipe poll.\r
-                        */\r
-                       static inline void Pipe_SetInterruptPeriod(const uint8_t Milliseconds) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_SetInterruptPeriod(const uint8_t Milliseconds)\r
-                       {\r
-                               (&AVR32_USBB.UPCFG0)[USB_SelectedPipe].intfrq = Milliseconds;\r
-                       }\r
-\r
-                       /** Returns a mask indicating which pipe's interrupt periods have elapsed, indicating that the pipe should\r
-                        *  be serviced.\r
-                        *\r
-                        *  \return Mask whose bits indicate which pipes have interrupted.\r
-                        */\r
-                       static inline uint8_t Pipe_GetPipeInterrupts(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Pipe_GetPipeInterrupts(void)\r
-                       {\r
-                               return ((AVR32_USBB.uhint & (AVR32_USBB_P6INT_MASK | AVR32_USBB_P5INT_MASK |\r
-                                                            AVR32_USBB_P4INT_MASK | AVR32_USBB_P3INT_MASK |\r
-                                                            AVR32_USBB_P2INT_MASK | AVR32_USBB_P1INT_MASK |\r
-                                                            AVR32_USBB_P0INT_MASK)) >> AVR32_USBB_P0INT_OFFSET);\r
-                       }\r
-\r
-                       /** Determines if the specified pipe number has interrupted (valid only for INTERRUPT type\r
-                        *  pipes).\r
-                        *\r
-                        *  \param[in] PipeNumber  Index of the pipe whose interrupt flag should be tested.\r
-                        *\r
-                        *  \return Boolean \c true if the specified pipe has interrupted, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_HasPipeInterrupted(const uint8_t PipeNumber) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_HasPipeInterrupted(const uint8_t PipeNumber)\r
-                       {\r
-                               return ((AVR32_USBB.uhint & (AVR32_USBB_P0INTES_MASK << USB_SelectedPipe)) ? true : false);\r
-                       }\r
-\r
-                       /** Unfreezes the selected pipe, allowing it to communicate with an attached device. */\r
-                       static inline void Pipe_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Unfreeze(void)\r
-                       {\r
-                               (&AVR32_USBB.UPCON0CLR)[USB_SelectedPipe].pfreezec = true;\r
-                       }\r
-\r
-                       /** Freezes the selected pipe, preventing it from communicating with an attached device. */\r
-                       static inline void Pipe_Freeze(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Freeze(void)\r
-                       {\r
-                               (&AVR32_USBB.UPCON0SET)[USB_SelectedPipe].pfreezes = true;\r
-                       }\r
-\r
-                       /** Determines if the currently selected pipe is frozen, and not able to accept data.\r
-                        *\r
-                        *  \return Boolean \c true if the currently selected pipe is frozen, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsFrozen(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsFrozen(void)\r
-                       {\r
-                               return (((&AVR32_USBB.UPCON0)[USB_SelectedPipe].pfreeze) ? true : false);\r
-                       }\r
-\r
-                       /** Clears the error flags for the currently selected pipe. */\r
-                       static inline void Pipe_ClearError(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_ClearError(void)\r
-                       {\r
-                               (&AVR32_USBB.uperr0)[USB_SelectedPipe] = 0;\r
-                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].overfic  = true;\r
-                       }\r
-\r
-                       /** Determines if the master pipe error flag is set for the currently selected pipe, indicating that\r
-                        *  some sort of hardware error has occurred on the pipe.\r
-                        *\r
-                        *  \see \ref Pipe_GetErrorFlags() macro for information on retrieving the exact error flag.\r
-                        *\r
-                        *  \return Boolean \c true if an error has occurred on the selected pipe, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsError(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsError(void)\r
-                       {\r
-                               return (((&AVR32_USBB.upsta0)[USB_SelectedPipe] &\r
-                                       (AVR32_USBB_PERRI_MASK | AVR32_USBB_OVERFI_MASK)) ? true : false);\r
-                       }\r
-\r
-                       /** Gets a mask of the hardware error flags which have occurred on the currently selected pipe. This\r
-                        *  value can then be masked against the \c PIPE_ERRORFLAG_* masks to determine what error has occurred.\r
-                        *\r
-                        *  \return  Mask comprising of \c PIPE_ERRORFLAG_* bits indicating what error has occurred on the selected pipe.\r
-                        */\r
-                       static inline uint8_t Pipe_GetErrorFlags(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Pipe_GetErrorFlags(void)\r
-                       {\r
-                               \r
-                               return (((&AVR32_USBB.uperr0)[USB_SelectedPipe] &\r
-                                       (PIPE_ERRORFLAG_CRC16 | PIPE_ERRORFLAG_TIMEOUT |\r
-                                        PIPE_ERRORFLAG_PID   | PIPE_ERRORFLAG_DATAPID |\r
-                                        PIPE_ERRORFLAG_DATATGL)) |\r
-                                       (((&AVR32_USBB.upsta0)[USB_SelectedPipe] << 8) &\r
-                                                PIPE_ERRORFLAG_OVERFLOW));\r
-                       }\r
-                       \r
-                       /** Retrieves the number of busy banks in the currently selected pipe, which have been queued for\r
-                        *  transmission via the \ref Pipe_ClearOUT() command, or are awaiting acknowledgement via the\r
-                        *  \ref Pipe_ClearIN() command.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \return Total number of busy banks in the selected pipe.\r
-                        */\r
-                       static inline uint8_t Pipe_GetBusyBanks(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].nbusybk;\r
-                       }\r
-\r
-                       /** Determines if the currently selected pipe may be read from (if data is waiting in the pipe\r
-                        *  bank and the pipe is an IN direction, or if the bank is not yet full if the pipe is an OUT\r
-                        *  direction). This function will return false if an error has occurred in the pipe, or if the pipe\r
-                        *  is an IN direction and no packet (or an empty packet) has been received, or if the pipe is an OUT\r
-                        *  direction and the pipe bank is full.\r
-                        *\r
-                        *  \note This function is not valid on CONTROL type pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the currently selected pipe may be read from or written to, depending\r
-                        *          on its direction.\r
-                        */\r
-                       static inline bool Pipe_IsReadWriteAllowed(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsReadWriteAllowed(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].rwall;\r
-                       }\r
-\r
-                       /** Determines if a packet has been received on the currently selected IN pipe from the attached device.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the current pipe has received an IN packet, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsINReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsINReceived(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].rxini;\r
-                       }\r
-\r
-                       /** Determines if the currently selected OUT pipe is ready to send an OUT packet to the attached device.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the current pipe is ready for an OUT packet, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsOUTReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsOUTReady(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].txouti;\r
-                       }\r
-\r
-                       /** Determines if no SETUP request is currently being sent to the attached device on the selected\r
-                        *  CONTROL type pipe.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the current pipe is ready for a SETUP packet, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsSETUPSent(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsSETUPSent(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].txstpi;\r
-                       }\r
-\r
-                       /** Sends the currently selected CONTROL type pipe's contents to the device as a SETUP packet.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        */\r
-                       static inline void Pipe_ClearSETUP(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_ClearSETUP(void)\r
-                       {\r
-                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].txstpic = true;\r
-                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
-                       }\r
-\r
-                       /** Acknowledges the reception of a setup IN request from the attached device on the currently selected\r
-                        *  pipe, freeing the bank ready for the next packet.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        */\r
-                       static inline void Pipe_ClearIN(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_ClearIN(void)\r
-                       {\r
-                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].rxinic   = true;\r
-                               (&AVR32_USBB.UPCON0CLR)[USB_SelectedPipe].fifoconc = true;\r
-                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
-                       }\r
-\r
-                       /** Sends the currently selected pipe's contents to the device as an OUT packet on the selected pipe, freeing\r
-                        *  the bank ready for the next packet.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        */\r
-                       static inline void Pipe_ClearOUT(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_ClearOUT(void)\r
-                       {\r
-                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].txoutic  = true;\r
-                               (&AVR32_USBB.UPCON0CLR)[USB_SelectedPipe].fifoconc = true;\r
-                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
-                       }\r
-\r
-                       /** Determines if the device sent a NAK (Negative Acknowledge) in response to the last sent packet on\r
-                        *  the currently selected pipe. This occurs when the host sends a packet to the device, but the device\r
-                        *  is not currently ready to handle the packet (i.e. its endpoint banks are full). Once a NAK has been\r
-                        *  received, it must be cleared using \ref Pipe_ClearNAKReceived() before the previous (or any other) packet\r
-                        *  can be re-sent.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if an NAK has been received on the current pipe, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsNAKReceived(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsNAKReceived(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].nakedi;\r
-                       }\r
-\r
-                       /** Clears the NAK condition on the currently selected pipe.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \see \ref Pipe_IsNAKReceived() for more details.\r
-                        */\r
-                       static inline void Pipe_ClearNAKReceived(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_ClearNAKReceived(void)\r
-                       {\r
-                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].nakedic = true;\r
-                       }\r
-\r
-                       /** Determines if the currently selected pipe has had the STALL condition set by the attached device.\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        *\r
-                        *  \return Boolean \c true if the current pipe has been stalled by the attached device, \c false otherwise.\r
-                        */\r
-                       static inline bool Pipe_IsStalled(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool Pipe_IsStalled(void)\r
-                       {\r
-                               return (&AVR32_USBB.UPSTA0)[USB_SelectedPipe].rxstalldi;\r
-                       }\r
-\r
-                       /** Clears the STALL condition detection flag on the currently selected pipe, but does not clear the\r
-                        *  STALL condition itself (this must be done via a ClearFeature control request to the device).\r
-                        *\r
-                        *  \ingroup Group_PipePacketManagement_UC3B\r
-                        */\r
-                       static inline void Pipe_ClearStall(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_ClearStall(void)\r
-                       {\r
-                               (&AVR32_USBB.UPSTA0CLR)[USB_SelectedPipe].rxstalldic = true;\r
-                               USB_PipeFIFOPos[USB_SelectedPipe] = &AVR32_USBB_SLAVE[USB_SelectedPipe * 0x10000];\r
-                       }\r
-\r
-                       /** Reads one byte from the currently selected pipe's bank, for OUT direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next byte in the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline uint8_t Pipe_Read_Byte(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Pipe_Read_Byte(void)\r
-                       {\r
-                               return *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                       }\r
-\r
-                       /** Writes one byte from the currently selected pipe's bank, for IN direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] Byte  Next byte to write into the the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline void Pipe_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Write_Byte(const uint8_t Byte)\r
-                       {\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = Byte;\r
-                       }\r
-\r
-                       /** Discards one byte from the currently selected pipe's bank, for OUT direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        */\r
-                       static inline void Pipe_Discard_Byte(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Discard_Byte(void)\r
-                       {\r
-                               uint8_t Dummy;\r
-\r
-                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                       }\r
-\r
-                       /** Reads two bytes from the currently selected pipe's bank in little endian format, for OUT\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next word in the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline uint16_t Pipe_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint16_t Pipe_Read_Word_LE(void)\r
-                       {\r
-                               uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-\r
-                               return ((Byte0 << 8) | Byte1);\r
-                       }\r
-\r
-                       /** Reads two bytes from the currently selected pipe's bank in big endian format, for OUT\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next word in the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline uint16_t Pipe_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint16_t Pipe_Read_Word_BE(void)\r
-                       {\r
-                               uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-\r
-                               return ((Byte0 << 8) | Byte1);\r
-                       }\r
-\r
-                       /** Writes two bytes to the currently selected pipe's bank in little endian format, for IN\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] Word  Next word to write to the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline void Pipe_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Write_Word_LE(const uint16_t Word)\r
-                       {\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word >> 8);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word & 0xFF);\r
-                       }\r
-\r
-                       /** Writes two bytes to the currently selected pipe's bank in big endian format, for IN\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] Word  Next word to write to the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline void Pipe_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Write_Word_BE(const uint16_t Word)\r
-                       {\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word & 0xFF);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word >> 8);\r
-                       }\r
-\r
-                       /** Discards two bytes from the currently selected pipe's bank, for OUT direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        */\r
-                       static inline void Pipe_Discard_Word(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Discard_Word(void)\r
-                       {\r
-                               uint8_t Dummy;\r
-\r
-                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                       }\r
-\r
-                       /** Reads four bytes from the currently selected pipe's bank in little endian format, for OUT\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next double word in the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline uint32_t Pipe_Read_DWord_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint32_t Pipe_Read_DWord_LE(void)\r
-                       {\r
-                               uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-\r
-                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
-                       }\r
-\r
-                       /** Reads four bytes from the currently selected pipe's bank in big endian format, for OUT\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \return Next double word in the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline uint32_t Pipe_Read_DWord_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint32_t Pipe_Read_DWord_BE(void)\r
-                       {\r
-                               uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-\r
-                               return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
-                       }\r
-\r
-                       /** Writes four bytes to the currently selected pipe's bank in little endian format, for IN\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] DWord  Next double word to write to the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline void Pipe_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Write_DWord_LE(const uint32_t DWord)\r
-                       {\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 24);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 16);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 8);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord &  0xFF);\r
-                       }\r
-\r
-                       /** Writes four bytes to the currently selected pipe's bank in big endian format, for IN\r
-                        *  direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        *\r
-                        *  \param[in] DWord  Next double word to write to the currently selected pipe's FIFO buffer.\r
-                        */\r
-                       static inline void Pipe_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Write_DWord_BE(const uint32_t DWord)\r
-                       {\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord &  0xFF);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 8);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 16);\r
-                               *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 24);\r
-                       }\r
-\r
-                       /** Discards four bytes from the currently selected pipe's bank, for OUT direction pipes.\r
-                        *\r
-                        *  \ingroup Group_PipePrimitiveRW_UC3B\r
-                        */\r
-                       static inline void Pipe_Discard_DWord(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void Pipe_Discard_DWord(void)\r
-                       {\r
-                               uint8_t Dummy;\r
-\r
-                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                               Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
-                       }\r
-\r
-               /* External Variables: */\r
-                       /** Global indicating the maximum packet size of the default control pipe located at address\r
-                        *  0 in the device. This value is set to the value indicated in the attached device's device\r
-                    *  descriptor once the USB interface is initialized into host mode and a device is attached\r
-                        *  to the USB bus.\r
-                        *\r
-                        *  \note This variable should be treated as read-only in the user application, and never manually\r
-                        *        changed in value.\r
-                        */\r
-                       extern uint8_t USB_ControlPipeSize;\r
-\r
-               /* Function Prototypes: */\r
-                       /** Configures the specified pipe number with the given pipe type, token, target endpoint number in the\r
-                        *  attached device, bank size and banking mode.\r
-                        *\r
-                        *  A newly configured pipe is frozen by default, and must be unfrozen before use via the \ref Pipe_Unfreeze()\r
-                        *  before being used. Pipes should be kept frozen unless waiting for data from a device while in IN mode, or\r
-                        *  sending data to the device in OUT mode. IN type pipes are also automatically configured to accept infinite\r
-                        *  numbers of IN requests without automatic freezing - this can be overridden by a call to\r
-                        *  \ref Pipe_SetFiniteINRequests().\r
-                        *\r
-                        *  \param[in] Number          Pipe number to configure. This must be more than 0 and less than \ref PIPE_TOTAL_PIPES.\r
-                        *\r
-                        *  \param[in] Type            Type of pipe to configure, an \c EP_TYPE_* mask. Not all pipe types are available on Low\r
-                        *                             Speed USB devices - refer to the USB 2.0 specification.\r
-                        *\r
-                        *  \param[in] Token           Pipe data token, either \ref PIPE_TOKEN_SETUP, \ref PIPE_TOKEN_OUT or \ref PIPE_TOKEN_IN.\r
-                        *                             All pipes (except Control type) are unidirectional - data may only be read from or\r
-                        *                             written to the pipe bank based on its direction, not both.\r
-                        *\r
-                        *  \param[in] EndpointNumber  Endpoint index within the attached device that the pipe should interface to.\r
-                        *\r
-                        *  \param[in] Size            Size of the pipe's bank, where packets are stored before they are transmitted to\r
-                        *                             the USB device, or after they have been received from the USB device (depending on\r
-                        *                             the pipe's data direction). The bank size must indicate the maximum packet size that\r
-                        *                             the pipe can handle.\r
-                        *\r
-                        *  \param[in] Banks           Number of banks to use for the pipe being configured, a \c PIPE_BANK_* mask. More banks\r
-                        *                             uses more USB DPRAM, but offers better performance. Isochronous type pipes <b>must</b>\r
-                        *                             have at least two banks.\r
-                        *\r
-                        *  \note When the \c ORDERED_EP_CONFIG compile time option is used, Pipes <b>must</b> be configured in ascending order,\r
-                        *        or bank corruption will occur.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note Certain microcontroller model's pipes may have different maximum packet sizes based on the pipe's\r
-                        *        index - refer to the chosen microcontroller's datasheet to determine the maximum bank size for each pipe.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note The default control pipe should not be manually configured by the user application, as it is\r
-                        *        automatically configured by the library internally.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note This routine will automatically select the specified pipe upon success. Upon failure, the pipe which\r
-                        *        failed to reconfigure correctly will be selected.\r
-                        *\r
-                        *  \return Boolean \c true if the configuration succeeded, \c false otherwise.\r
-                        */\r
-                       bool Pipe_ConfigurePipe(const uint8_t Number,\r
-                                               const uint8_t Type,\r
-                                               const uint8_t Token,\r
-                                               const uint8_t EndpointNumber,\r
-                                               const uint16_t Size,\r
-                                               const uint8_t Banks);\r
-\r
-                       /** Spin-loops until the currently selected non-control pipe is ready for the next packed of data to be read\r
-                        *  or written to it, aborting in the case of an error condition (such as a timeout or device disconnect).\r
-                        *\r
-                        *  \ingroup Group_PipeRW_UC3B\r
-                        *\r
-                        *  \return A value from the \ref Pipe_WaitUntilReady_ErrorCodes_t enum.\r
-                        */\r
-                       uint8_t Pipe_WaitUntilReady(void);\r
-\r
-                       /** Determines if a pipe has been bound to the given device endpoint address. If a pipe which is bound to the given\r
-                        *  endpoint is found, it is automatically selected.\r
-                        *\r
-                        *  \param[in] EndpointAddress Address and direction mask of the endpoint within the attached device to check.\r
-                        *\r
-                        *  \return Boolean \c true if a pipe bound to the given endpoint address of the specified direction is found,\r
-                        *          \c false otherwise.\r
-                        */\r
-                       bool Pipe_IsEndpointBound(const uint8_t EndpointAddress);\r
-\r
-       /* Private Interface - For use in library only: */\r
-       #if !defined(__DOXYGEN__)\r
-               /* Macros: */\r
-                       #if !defined(ENDPOINT_CONTROLEP)\r
-                               #define ENDPOINT_CONTROLEP          0\r
-                       #endif\r
-                       \r
-               /* Inline Functions: */\r
-                       static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)\r
-                       {\r
-                               uint8_t  MaskVal    = 0;\r
-                               uint16_t CheckBytes = 8;\r
-\r
-                               while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))\r
-                               {\r
-                                       MaskVal++;\r
-                                       CheckBytes <<= 1;\r
-                               }\r
-\r
-                               return (MaskVal << AVR32_USBB_PSIZE_OFFSET);\r
-                       }\r
-\r
-               /* Function Prototypes: */\r
-                       void Pipe_ClearPipes(void);\r
-       #endif\r
-\r
-       /* Disable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       }\r
-               #endif\r
-\r
-#endif\r
-\r
-/** @} */\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.c
deleted file mode 100644 (file)
index 40ac381..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-#define  __INCLUDE_FROM_USB_DRIVER\r
-#define  __INCLUDE_FROM_USB_CONTROLLER_C\r
-#include "../USBController.h"\r
-\r
-#if (!defined(USB_HOST_ONLY) && !defined(USB_DEVICE_ONLY))\r
-volatile uint8_t USB_CurrentMode = USB_MODE_None;\r
-#endif\r
-\r
-#if !defined(USE_STATIC_OPTIONS)\r
-volatile uint8_t USB_Options;\r
-#endif\r
-\r
-void USB_Init(\r
-               #if defined(USB_CAN_BE_BOTH)\r
-               const uint8_t Mode\r
-               #endif\r
-\r
-               #if (defined(USB_CAN_BE_BOTH) && !defined(USE_STATIC_OPTIONS))\r
-               ,\r
-               #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))\r
-               void\r
-               #endif\r
-\r
-               #if !defined(USE_STATIC_OPTIONS)\r
-               const uint8_t Options\r
-               #endif\r
-               )\r
-{\r
-       #if !defined(USE_STATIC_OPTIONS)\r
-       USB_Options = Options;\r
-       #endif\r
-       \r
-       #if defined(USB_CAN_BE_BOTH)\r
-       if (Mode == USB_MODE_UID)\r
-       {\r
-               AVR32_USBB.USBCON.uide = true;\r
-               USB_INT_Enable(USB_INT_IDTI);\r
-               USB_CurrentMode = USB_GetUSBModeFromUID();\r
-       }\r
-       else\r
-       {\r
-               AVR32_USBB.USBCON.uide = false;\r
-               USB_CurrentMode = Mode;\r
-       }\r
-       #endif\r
-\r
-       USB_IsInitialized = true;\r
-\r
-       USB_ResetInterface();\r
-}\r
-\r
-void USB_Disable(void)\r
-{\r
-       USB_INT_DisableAllInterrupts();\r
-       USB_INT_ClearAllInterrupts();\r
-\r
-       USB_Detach();\r
-       USB_Controller_Disable();\r
-\r
-       USB_OTGPAD_Off();\r
-\r
-       #if defined(USB_CAN_BE_BOTH)\r
-       USB_CurrentMode = USB_MODE_None;\r
-       #endif\r
-\r
-       AVR32_PM.GCCTRL[3].cen = false;\r
-\r
-       USB_IsInitialized = false;\r
-}\r
-\r
-void USB_ResetInterface(void)\r
-{\r
-       #if defined(USB_CAN_BE_BOTH)\r
-       bool UIDModeSelectEnabled = AVR32_USBB.USBCON.uide;\r
-       #endif\r
-\r
-       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].pllsel = !(USB_Options & USB_OPT_GCLK_SRC_OSC);\r
-       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].oscsel = !(USB_Options & USB_OPT_GCLK_CHANNEL_0);\r
-       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].diven  = (F_CLOCK != USB_CLOCK_REQUIRED_FREQ);\r
-       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].div    = (F_CLOCK == USB_CLOCK_REQUIRED_FREQ) ? 0 : (uint32_t)(((F_CLOCK / USB_CLOCK_REQUIRED_FREQ) - 1) / 2);\r
-       AVR32_PM.GCCTRL[AVR32_PM_GCLK_USBB].cen    = true;\r
-\r
-       USB_INT_DisableAllInterrupts();\r
-       USB_INT_ClearAllInterrupts();\r
-\r
-       USB_Controller_Reset();\r
-\r
-       #if defined(USB_CAN_BE_BOTH)\r
-       if (UIDModeSelectEnabled)\r
-       {\r
-               AVR32_USBB.USBCON.uide = true;\r
-               USB_INT_Enable(USB_INT_IDTI);\r
-       }\r
-       #endif\r
-\r
-       USB_CLK_Unfreeze();\r
-\r
-       if (USB_CurrentMode == USB_MODE_Device)\r
-       {\r
-               #if defined(USB_CAN_BE_DEVICE)\r
-               AVR32_USBB.USBCON.uimod = true;\r
-               USB_Init_Device();\r
-               #endif\r
-       }\r
-       else if (USB_CurrentMode == USB_MODE_Host)\r
-       {\r
-               #if defined(USB_CAN_BE_HOST)\r
-               AVR32_USBB.USBCON.uimod = false;\r
-               USB_Init_Host();\r
-               #endif\r
-       }\r
-\r
-       USB_OTGPAD_On();\r
-}\r
-\r
-#if defined(USB_CAN_BE_DEVICE)\r
-static void USB_Init_Device(void)\r
-{\r
-       USB_DeviceState          = DEVICE_STATE_Unattached;\r
-       USB_ConfigurationNumber  = 0;\r
-\r
-       #if !defined(NO_DEVICE_REMOTE_WAKEUP)\r
-       USB_RemoteWakeupEnabled  = false;\r
-       #endif\r
-\r
-       #if !defined(NO_DEVICE_SELF_POWER)\r
-       USB_CurrentlySelfPowered = false;\r
-       #endif\r
-\r
-       #if !defined(FIXED_CONTROL_ENDPOINT_SIZE)\r
-       USB_Descriptor_Device_t* DeviceDescriptorPtr;\r
-\r
-       if (CALLBACK_USB_GetDescriptor((DTYPE_Device << 8), 0, (void*)&DeviceDescriptorPtr) != NO_DESCRIPTOR)\r
-         USB_ControlEndpointSize = DeviceDescriptorPtr->Endpoint0Size;\r
-       #endif\r
-\r
-       if (USB_Options & USB_DEVICE_OPT_LOWSPEED)\r
-         USB_Device_SetLowSpeed();\r
-       else\r
-         USB_Device_SetFullSpeed();\r
-\r
-       USB_INT_Enable(USB_INT_VBUSTI);\r
-\r
-       Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,\r
-                                                          ENDPOINT_DIR_OUT, USB_ControlEndpointSize,\r
-                                                          ENDPOINT_BANK_SINGLE);\r
-\r
-       USB_INT_Clear(USB_INT_SUSPI);\r
-       USB_INT_Enable(USB_INT_SUSPI);\r
-       USB_INT_Enable(USB_INT_EORSTI);\r
-\r
-       USB_Attach();\r
-       USB_Device_SetDeviceAddress(0);\r
-}\r
-#endif\r
-\r
-#if defined(USB_CAN_BE_HOST)\r
-static void USB_Init_Host(void)\r
-{\r
-       USB_HostState       = HOST_STATE_Unattached;\r
-       USB_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;\r
-\r
-       USB_Host_HostMode_On();\r
-\r
-       USB_Host_VBUS_Auto_On();\r
-\r
-       USB_INT_Enable(USB_INT_DCONNI);\r
-       USB_INT_Enable(USB_INT_BCERRI);\r
-\r
-       USB_Attach();\r
-}\r
-#endif\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/USBController_UC3B.h
deleted file mode 100644 (file)
index dde6f23..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *  \brief USB Controller definitions for the AVR32 UC3B microcontrollers.\r
- *  \copydetails Group_USBManagement_UC3B\r
- *\r
- *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
- *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
- */\r
-\r
-/** \ingroup Group_USBManagement\r
- *  \defgroup Group_USBManagement_UC3B USB Interface Management (UC3B)\r
- *  \brief USB Controller definitions for the AVR32 UC3B microcontrollers.\r
- *\r
- *  Functions, macros, variables, enums and types related to the setup and management of the USB interface.\r
- *\r
- *  @{\r
- */\r
-\r
-#ifndef __USBCONTROLLER_UC3B_H__\r
-#define __USBCONTROLLER_UC3B_H__\r
-\r
-       /* Includes: */\r
-               #include "../../../../Common/Common.h"\r
-               #include "../USBMode.h"\r
-               #include "../Events.h"\r
-               #include "../USBTask.h"\r
-               #include "../USBInterrupt.h"\r
-\r
-               #if defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__)\r
-                       #include "../Host.h"\r
-                       #include "../OTG.h"\r
-                       #include "../Pipe.h"\r
-                       #include "../HostStandardReq.h"\r
-                       #include "../PipeStream.h"\r
-               #endif\r
-\r
-               #if defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__)\r
-                       #include "../Device.h"\r
-                       #include "../Endpoint.h"\r
-                       #include "../DeviceStandardReq.h"\r
-                       #include "../EndpointStream.h"\r
-               #endif\r
-\r
-       /* Enable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       extern "C" {\r
-               #endif\r
-\r
-       /* Preprocessor Checks and Defines: */\r
-               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
-                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
-               #endif\r
-\r
-       /* Public Interface - May be used in end-application: */\r
-               /* Macros: */\r
-                       /** \name USB Controller Option Masks */\r
-                       //@{\r
-                       /** Selects one of the system's main clock oscillators as the input clock to the USB Generic Clock source\r
-                        *  generation module. This indicates that an external oscillator should be used directly instead of an\r
-                        *  internal PLL clock source.\r
-                        */\r
-                       #define USB_OPT_GCLK_SRC_OSC               (1 << 1)\r
-\r
-                       /** Selects one of the system's PLL oscillators as the input clock to the USB Generic Clock source\r
-                        *  generation module. This indicates that one of the device's PLL outputs should be used instead of an\r
-                        *  external oscillator source.\r
-                        */\r
-                       #define USB_OPT_GCLK_SRC_PLL               (0 << 1)\r
-\r
-                       /** Selects PLL or External Oscillator 0 as the USB Generic Clock source module input clock. */\r
-                       #define USB_OPT_GCLK_CHANNEL_0             (1 << 2)\r
-\r
-                       /** Selects PLL or External Oscillator 1 as the USB Generic Clock source module input clock. */\r
-                       #define USB_OPT_GCLK_CHANNEL_1             (0 << 2)\r
-                       //@}\r
-\r
-                       /** \name Endpoint/Pipe Type Masks */\r
-                       //@{\r
-                       /** Mask for a CONTROL type endpoint or pipe.\r
-                        *\r
-                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
-                        */\r
-                       #define EP_TYPE_CONTROL                    0x00\r
-\r
-                       /** Mask for an ISOCHRONOUS type endpoint or pipe.\r
-                        *\r
-                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
-                        */\r
-                       #define EP_TYPE_ISOCHRONOUS                0x01\r
-\r
-                       /** Mask for a BULK type endpoint or pipe.\r
-                        *\r
-                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
-                        */\r
-                       #define EP_TYPE_BULK                       0x02\r
-\r
-                       /** Mask for an INTERRUPT type endpoint or pipe.\r
-                        *\r
-                        *  \note See \ref Group_EndpointManagement and \ref Group_PipeManagement for endpoint/pipe functions.\r
-                        */\r
-                       #define EP_TYPE_INTERRUPT                  0x03\r
-                       //@}\r
-\r
-                       #if !defined(USB_STREAM_TIMEOUT_MS) || defined(__DOXYGEN__)\r
-                               /** Constant for the maximum software timeout period of the USB data stream transfer functions\r
-                                *  (both control and standard) when in either device or host mode. If the next packet of a stream\r
-                                *  is not received or acknowledged within this time period, the stream function will fail.\r
-                                *\r
-                                *  This value may be overridden in the user project makefile as the value of the\r
-                                *  \ref USB_STREAM_TIMEOUT_MS token, and passed to the compiler using the -D switch.\r
-                                */\r
-                               #define USB_STREAM_TIMEOUT_MS       100\r
-                       #endif\r
-\r
-               /* Inline Functions: */\r
-                       /** Determines if the VBUS line is currently high (i.e. the USB host is supplying power).\r
-                        *\r
-                        *  \return Boolean \c true if the VBUS line is currently detecting power from a host, \c false otherwise.\r
-                        */\r
-                       static inline bool USB_VBUS_GetStatus(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline bool USB_VBUS_GetStatus(void)\r
-                       {\r
-                               return AVR32_USBB.USBSTA.vbus;\r
-                       }\r
-\r
-                       /** Detaches the device from the USB bus. This has the effect of removing the device from any\r
-                        *  attached host, ceasing USB communications. If no host is present, this prevents any host from\r
-                        *  enumerating the device once attached until \ref USB_Attach() is called.\r
-                        */\r
-                       static inline void USB_Detach(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Detach(void)\r
-                       {\r
-                               AVR32_USBB.UDCON.detach = true;\r
-                       }\r
-\r
-                       /** Attaches the device to the USB bus. This announces the device's presence to any attached\r
-                        *  USB host, starting the enumeration process. If no host is present, attaching the device\r
-                        *  will allow for enumeration once a host is connected to the device.\r
-                        *\r
-                        *  This is inexplicably also required for proper operation while in host mode, to enable the\r
-                        *  attachment of a device to the host. This is despite the bit being located in the device-mode\r
-                        *  register and despite the datasheet making no mention of its requirement in host mode.\r
-                        */\r
-                       static inline void USB_Attach(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Attach(void)\r
-                       {\r
-                               AVR32_USBB.UDCON.detach = false;\r
-                       }\r
-\r
-               /* Function Prototypes: */\r
-                       /** Main function to initialize and start the USB interface. Once active, the USB interface will\r
-                        *  allow for device connection to a host when in device mode, or for device enumeration while in\r
-                        *  host mode.\r
-                        *\r
-                        *  As the USB library relies on interrupts for the device and host mode enumeration processes,\r
-                        *  the user must enable global interrupts before or shortly after this function is called. In\r
-                        *  device mode, interrupts must be enabled within 500ms of this function being called to ensure\r
-                        *  that the host does not time out whilst enumerating the device. In host mode, interrupts may be\r
-                        *  enabled at the application's leisure however enumeration will not begin of an attached device\r
-                        *  until after this has occurred.\r
-                        *\r
-                        *  Calling this function when the USB interface is already initialized will cause a complete USB\r
-                        *  interface reset and re-enumeration.\r
-                        *\r
-                        *  \param[in] Mode     This is a mask indicating what mode the USB interface is to be initialized to, a value\r
-                        *                      from the \ref USB_Modes_t enum.\r
-                        *\r
-                        *  \param[in] Options  Mask indicating the options which should be used when initializing the USB\r
-                        *                      interface to control the USB interface's behaviour. This should be comprised of\r
-                        *                      a \c USB_OPT_REG_* mask to control the regulator, a \c USB_OPT_*_PLL mask to control the\r
-                        *                      PLL, and a \c USB_DEVICE_OPT_* mask (when the device mode is enabled) to set the device\r
-                        *                      mode speed.\r
-                        *\r
-                        *  \note To reduce the FLASH requirements of the library if only device or host mode is required,\r
-                        *        the mode can be statically set in the project makefile by defining the token \c USB_DEVICE_ONLY\r
-                        *        (for device mode) or \c USB_HOST_ONLY (for host mode), passing the token to the compiler\r
-                        *        via the -D switch. If the mode is statically set, this parameter does not exist in the\r
-                        *        function prototype.\r
-                        *        \n\n\r
-                        *\r
-                        *  \note To reduce the FLASH requirements of the library if only fixed settings are are required,\r
-                        *        the options may be set statically in the same manner as the mode (see the Mode parameter of\r
-                        *        this function). To statically set the USB options, pass in the \c USE_STATIC_OPTIONS token,\r
-                        *        defined to the appropriate options masks. When the options are statically set, this\r
-                        *        parameter does not exist in the function prototype.\r
-                        *\r
-                        *  \see \ref Group_Device for the \c USB_DEVICE_OPT_* masks.\r
-                        */\r
-                       void USB_Init(\r
-                                      #if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)\r
-                                      const uint8_t Mode\r
-                                      #endif\r
-\r
-                                      #if (defined(USB_CAN_BE_BOTH) && !defined(USE_STATIC_OPTIONS)) || defined(__DOXYGEN__)\r
-                                      ,\r
-                                      #elif (!defined(USB_CAN_BE_BOTH) && defined(USE_STATIC_OPTIONS))\r
-                                      void\r
-                                      #endif\r
-\r
-                                      #if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)\r
-                                      const uint8_t Options\r
-                                      #endif\r
-                                      );\r
-\r
-                       /** Shuts down the USB interface. This turns off the USB interface after deallocating all USB FIFO\r
-                        *  memory, endpoints and pipes. When turned off, no USB functionality can be used until the interface\r
-                        *  is restarted with the \ref USB_Init() function.\r
-                        */\r
-                       void USB_Disable(void);\r
-\r
-                       /** Resets the interface, when already initialized. This will re-enumerate the device if already connected\r
-                        *  to a host, or re-enumerate an already attached device when in host mode.\r
-                        */\r
-                       void USB_ResetInterface(void);\r
-\r
-               /* Global Variables: */\r
-                       #if (!defined(USB_HOST_ONLY) && !defined(USB_DEVICE_ONLY)) || defined(__DOXYGEN__)\r
-                               /** Indicates the mode that the USB interface is currently initialized to, a value from the\r
-                                *  \ref USB_Modes_t enum.\r
-                                *\r
-                                *  \note This variable should be treated as read-only in the user application, and never manually\r
-                                *        changed in value.\r
-                                *        \n\n\r
-                                *\r
-                                *  \note When the controller is initialized into UID auto-detection mode, this variable will hold the\r
-                                *        currently selected USB mode (i.e. \ref USB_MODE_Device or \ref USB_MODE_Host). If the controller\r
-                                *        is fixed into a specific mode (either through the \c USB_DEVICE_ONLY or \c USB_HOST_ONLY compile time\r
-                                *        options, or a limitation of the USB controller in the chosen device model) this will evaluate to\r
-                                *        a constant of the appropriate value and will never evaluate to \ref USB_MODE_None even when the\r
-                                *        USB interface is not initialized.\r
-                                */\r
-                               extern volatile uint8_t USB_CurrentMode;\r
-                       #elif defined(USB_HOST_ONLY)\r
-                               #define USB_CurrentMode USB_MODE_Host\r
-                       #elif defined(USB_DEVICE_ONLY)\r
-                               #define USB_CurrentMode USB_MODE_Device\r
-                       #endif\r
-\r
-                       #if !defined(USE_STATIC_OPTIONS) || defined(__DOXYGEN__)\r
-                               /** Indicates the current USB options that the USB interface was initialized with when \ref USB_Init()\r
-                                *  was called. This value will be one of the \c USB_MODE_* masks defined elsewhere in this module.\r
-                                *\r
-                                *  \note This variable should be treated as read-only in the user application, and never manually\r
-                                *        changed in value.\r
-                                */\r
-                               extern volatile uint8_t USB_Options;\r
-                       #elif defined(USE_STATIC_OPTIONS)\r
-                               #define USB_Options USE_STATIC_OPTIONS\r
-                       #endif\r
-\r
-               /* Enums: */\r
-                       /** Enum for the possible USB controller modes, for initialization via \ref USB_Init() and indication back to the\r
-                        *  user application via \ref USB_CurrentMode.\r
-                        */\r
-                       enum USB_Modes_t\r
-                       {\r
-                               USB_MODE_None   = 0, /**< Indicates that the controller is currently not initialized in any specific USB mode. */\r
-                               USB_MODE_Device = 1, /**< Indicates that the controller is currently initialized in USB Device mode. */\r
-                               USB_MODE_Host   = 2, /**< Indicates that the controller is currently initialized in USB Host mode. */\r
-                               USB_MODE_UID    = 3, /**< Indicates that the controller should determine the USB mode from the UID pin of the\r
-                                                     *   USB connector.\r
-                                                     */\r
-                       };\r
-\r
-       /* Private Interface - For use in library only: */\r
-       #if !defined(__DOXYGEN__)\r
-               /* Macros: */                   \r
-                       #if defined(USB_SERIES_UC3A3_AVR)\r
-                               #define USB_CLOCK_REQUIRED_FREQ  12000000UL\r
-                       #else\r
-                               #define USB_CLOCK_REQUIRED_FREQ  48000000UL\r
-                       #endif\r
-       \r
-               /* Function Prototypes: */\r
-                       #if defined(__INCLUDE_FROM_USB_CONTROLLER_C)\r
-                               #if defined(USB_CAN_BE_DEVICE)\r
-                               static void USB_Init_Device(void);\r
-                               #endif\r
-\r
-                               #if defined(USB_CAN_BE_HOST)\r
-                               static void USB_Init_Host(void);\r
-                               #endif\r
-                       #endif\r
-\r
-               /* Inline Functions: */\r
-                       static inline void USB_OTGPAD_On(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_OTGPAD_On(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.otgpade = true;\r
-                       }\r
-\r
-                       static inline void USB_OTGPAD_Off(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_OTGPAD_Off(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.otgpade = false;\r
-                       }\r
-\r
-                       static inline void USB_CLK_Freeze(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_CLK_Freeze(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.frzclk = true;\r
-                       }\r
-\r
-                       static inline void USB_CLK_Unfreeze(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_CLK_Unfreeze(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.frzclk = false;\r
-                       }\r
-\r
-                       static inline void USB_Controller_Enable(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Controller_Enable(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.usbe = true;\r
-                       }\r
-\r
-                       static inline void USB_Controller_Disable(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Controller_Disable(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.usbe = false;\r
-                       }\r
-\r
-                       static inline void USB_Controller_Reset(void) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_Controller_Reset(void)\r
-                       {\r
-                               AVR32_USBB.USBCON.usbe = false;\r
-                               AVR32_USBB.USBCON.usbe = true;\r
-                       }\r
-\r
-                       #if defined(USB_CAN_BE_BOTH)\r
-                       static inline uint8_t USB_GetUSBModeFromUID(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
-                       static inline uint8_t USB_GetUSBModeFromUID(void)\r
-                       {\r
-                               if (AVR32_USBB.USBSTA.id)\r
-                                 return USB_MODE_Device;\r
-                               else\r
-                                 return USB_MODE_Host;\r
-                       }\r
-                       #endif\r
-\r
-       #endif\r
-\r
-       /* Disable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       }\r
-               #endif\r
-\r
-#endif\r
-\r
-/** @} */\r
-\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c b/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.c
deleted file mode 100644 (file)
index aee8940..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-#define  __INCLUDE_FROM_USB_DRIVER\r
-#include "../USBInterrupt.h"\r
-\r
-void USB_INT_DisableAllInterrupts(void)\r
-{\r
-       AVR32_USBB.USBCON.vbuste = false;\r
-       AVR32_USBB.USBCON.idte   = false;\r
-\r
-       AVR32_USBB.uhinteclr = 0xFFFFFFFF;\r
-       AVR32_USBB.udinteclr = 0xFFFFFFFF;\r
-}\r
-\r
-void USB_INT_ClearAllInterrupts(void)\r
-{\r
-       AVR32_USBB.USBSTACLR.vbustic = true;\r
-       AVR32_USBB.USBSTACLR.idtic   = true;\r
-\r
-       AVR32_USBB.uhintclr = 0xFFFFFFFF;\r
-       AVR32_USBB.udintclr = 0xFFFFFFFF;\r
-}\r
-\r
-ISR(USB_GEN_vect)\r
-{\r
-       #if defined(USB_CAN_BE_DEVICE)\r
-       #if !defined(NO_SOF_EVENTS)\r
-       if (USB_INT_HasOccurred(USB_INT_SOFI) && USB_INT_IsEnabled(USB_INT_SOFI))\r
-       {\r
-               USB_INT_Clear(USB_INT_SOFI);\r
-\r
-               EVENT_USB_Device_StartOfFrame();\r
-       }\r
-       #endif\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_VBUSTI) && USB_INT_IsEnabled(USB_INT_VBUSTI))\r
-       {\r
-               USB_INT_Clear(USB_INT_VBUSTI);\r
-\r
-               if (USB_VBUS_GetStatus())\r
-               {\r
-                       USB_DeviceState = DEVICE_STATE_Powered;\r
-                       EVENT_USB_Device_Connect();\r
-               }\r
-               else\r
-               {\r
-                       USB_DeviceState = DEVICE_STATE_Unattached;\r
-                       EVENT_USB_Device_Disconnect();\r
-               }\r
-       }\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_SUSPI) && USB_INT_IsEnabled(USB_INT_SUSPI))\r
-       {\r
-               USB_INT_Clear(USB_INT_SUSPI);\r
-\r
-               USB_INT_Disable(USB_INT_SUSPI);\r
-               USB_INT_Enable(USB_INT_WAKEUPI);\r
-\r
-               USB_CLK_Freeze();\r
-\r
-               USB_DeviceState = DEVICE_STATE_Suspended;\r
-               EVENT_USB_Device_Suspend();\r
-       }\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_WAKEUPI) && USB_INT_IsEnabled(USB_INT_WAKEUPI))\r
-       {\r
-               USB_CLK_Unfreeze();\r
-\r
-               USB_INT_Clear(USB_INT_WAKEUPI);\r
-\r
-               USB_INT_Disable(USB_INT_WAKEUPI);\r
-               USB_INT_Enable(USB_INT_SUSPI);\r
-\r
-               if (USB_ConfigurationNumber)\r
-                 USB_DeviceState = DEVICE_STATE_Configured;\r
-               else\r
-                 USB_DeviceState = (USB_Device_IsAddressSet()) ? DEVICE_STATE_Configured : DEVICE_STATE_Powered;\r
-\r
-               EVENT_USB_Device_WakeUp();\r
-       }\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_EORSTI) && USB_INT_IsEnabled(USB_INT_EORSTI))\r
-       {\r
-               USB_INT_Clear(USB_INT_EORSTI);\r
-\r
-               USB_DeviceState         = DEVICE_STATE_Default;\r
-               USB_ConfigurationNumber = 0;\r
-\r
-               USB_INT_Clear(USB_INT_SUSPI);\r
-               USB_INT_Disable(USB_INT_SUSPI);\r
-               USB_INT_Enable(USB_INT_WAKEUPI);\r
-\r
-               USB_Device_SetDeviceAddress(0);\r
-               Endpoint_ConfigureEndpoint(ENDPOINT_CONTROLEP, EP_TYPE_CONTROL,\r
-                                          ENDPOINT_DIR_OUT, USB_ControlEndpointSize,\r
-                                          ENDPOINT_BANK_SINGLE);\r
-\r
-               EVENT_USB_Device_Reset();\r
-       }\r
-       #endif\r
-\r
-       #if defined(USB_CAN_BE_HOST)\r
-       #if !defined(NO_SOF_EVENTS)\r
-       if (USB_INT_HasOccurred(USB_INT_HSOFI) && USB_INT_IsEnabled(USB_INT_HSOFI))\r
-       {\r
-               USB_INT_Clear(USB_INT_HSOFI);\r
-\r
-               EVENT_USB_Host_StartOfFrame();\r
-       }\r
-       #endif\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_DDISCI) && USB_INT_IsEnabled(USB_INT_DDISCI))\r
-       {\r
-               USB_INT_Clear(USB_INT_DDISCI);\r
-               USB_INT_Clear(USB_INT_DCONNI);\r
-               USB_INT_Disable(USB_INT_DDISCI);\r
-\r
-               EVENT_USB_Host_DeviceUnattached();\r
-\r
-               USB_ResetInterface();\r
-       }\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_VBERRI) && USB_INT_IsEnabled(USB_INT_VBERRI))\r
-       {\r
-               USB_INT_Clear(USB_INT_VBERRI);\r
-\r
-               USB_Host_VBUS_Manual_Off();\r
-               USB_Host_VBUS_Auto_Off();\r
-\r
-               EVENT_USB_Host_HostError(HOST_ERROR_VBusVoltageDip);\r
-               EVENT_USB_Host_DeviceUnattached();\r
-\r
-               USB_HostState = HOST_STATE_Unattached;\r
-       }\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_DCONNI) && USB_INT_IsEnabled(USB_INT_DCONNI))\r
-       {\r
-               USB_INT_Clear(USB_INT_DCONNI);\r
-               USB_INT_Disable(USB_INT_DCONNI);\r
-\r
-               EVENT_USB_Host_DeviceAttached();\r
-\r
-               USB_INT_Enable(USB_INT_DDISCI);\r
-\r
-               USB_HostState = HOST_STATE_Powered;\r
-       }\r
-\r
-       if (USB_INT_HasOccurred(USB_INT_BCERRI) && USB_INT_IsEnabled(USB_INT_BCERRI))\r
-       {\r
-               USB_INT_Clear(USB_INT_BCERRI);\r
-\r
-               EVENT_USB_Host_DeviceEnumerationFailed(HOST_ENUMERROR_NoDeviceDetected, 0);\r
-               EVENT_USB_Host_DeviceUnattached();\r
-\r
-               USB_ResetInterface();\r
-       }\r
-       #endif\r
-\r
-       #if defined(USB_CAN_BE_BOTH)\r
-       if (USB_INT_HasOccurred(USB_INT_IDTI) && USB_INT_IsEnabled(USB_INT_IDTI))\r
-       {\r
-               USB_INT_Clear(USB_INT_IDTI);\r
-\r
-               if (USB_DeviceState != DEVICE_STATE_Unattached)\r
-                 EVENT_USB_Device_Disconnect();\r
-\r
-               if (USB_HostState != HOST_STATE_Unattached)\r
-                 EVENT_USB_Host_DeviceUnattached();\r
-\r
-               USB_CurrentMode = USB_GetUSBModeFromUID();\r
-               USB_ResetInterface();\r
-\r
-               EVENT_USB_UIDChange();\r
-       }\r
-       #endif\r
-}\r
diff --git a/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h b/LUFA/Drivers/USB/Core/UC3B/USBInterrupt_UC3B.h
deleted file mode 100644 (file)
index 6bc836b..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-/*\r
-             LUFA Library\r
-     Copyright (C) Dean Camera, 2011.\r
-\r
-  dean [at] fourwalledcubicle [dot] com\r
-           www.lufa-lib.org\r
-*/\r
-\r
-/*\r
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
-\r
-  Permission to use, copy, modify, distribute, and sell this\r
-  software and its documentation for any purpose is hereby granted\r
-  without fee, provided that the above copyright notice appear in\r
-  all copies and that both that the copyright notice and this\r
-  permission notice and warranty disclaimer appear in supporting\r
-  documentation, and that the name of the author not be used in\r
-  advertising or publicity pertaining to distribution of the\r
-  software without specific, written prior permission.\r
-\r
-  The author disclaim all warranties with regard to this\r
-  software, including all implied warranties of merchantability\r
-  and fitness.  In no event shall the author be liable for any\r
-  special, indirect or consequential damages or any damages\r
-  whatsoever resulting from loss of use, data or profits, whether\r
-  in an action of contract, negligence or other tortious action,\r
-  arising out of or in connection with the use or performance of\r
-  this software.\r
-*/\r
-\r
-/** \file\r
- *  \brief USB Controller Interrupt definitions for the AVR32 UC3B microcontrollers.\r
- *\r
- *  This file contains definitions required for the correct handling of low level USB service routine interrupts\r
- *  from the USB controller.\r
- *\r
- *  \note This file should not be included directly. It is automatically included as needed by the USB driver\r
- *        dispatch header located in LUFA/Drivers/USB/USB.h.\r
- */\r
-\r
-#ifndef __USBINTERRUPT_UC3B_H__\r
-#define __USBINTERRUPT_UC3B_H__\r
-\r
-       /* Includes: */\r
-               #include "../../../../Common/Common.h"\r
-\r
-       /* Enable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       extern "C" {\r
-               #endif\r
-\r
-       /* Preprocessor Checks: */\r
-               #if !defined(__INCLUDE_FROM_USB_DRIVER)\r
-                       #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.\r
-               #endif\r
-\r
-       /* Private Interface - For use in library only: */\r
-       #if !defined(__DOXYGEN__)\r
-               /* Macros: */\r
-                       enum USB_Interrupts_t\r
-                       {\r
-                               USB_INT_VBUSTI  = 0,\r
-                               #if (defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__))\r
-                               USB_INT_IDTI    = 1,\r
-                               #endif\r
-                               #if (defined(USB_CAN_BE_DEVICE) || defined(__DOXYGEN__))\r
-                               USB_INT_WAKEUPI = 2,\r
-                               USB_INT_SUSPI   = 3,\r
-                               USB_INT_EORSTI  = 4,\r
-                               USB_INT_SOFI    = 5,\r
-                               #endif\r
-                               #if (defined(USB_CAN_BE_HOST) || defined(__DOXYGEN__))                  \r
-                               USB_INT_HSOFI   = 6,\r
-                               USB_INT_DCONNI  = 7,\r
-                               USB_INT_DDISCI  = 8,\r
-                               USB_INT_RSTI    = 9,\r
-                               USB_INT_BCERRI  = 10,\r
-                               USB_INT_VBERRI  = 11,\r
-                               #endif\r
-                       };\r
-               \r
-               /* ISR Prototypes: */\r
-                       ISR(USB_GEN_vect);\r
-               \r
-               /* Inline Functions: */\r
-                       static inline void USB_INT_Enable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_INT_Enable(const uint8_t Interrupt)\r
-                       {                       \r
-                               switch (Interrupt)\r
-                               {\r
-                                       case USB_INT_VBUSTI:\r
-                                               AVR32_USBB.USBCON.vbuste      = true;\r
-                                               break;\r
-                                       #if defined(USB_CAN_BE_BOTH)\r
-                                       case USB_INT_IDTI:\r
-                                               AVR32_USBB.USBCON.idte        = true;\r
-                                               break;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_DEVICE)\r
-                                       case USB_INT_WAKEUPI:\r
-                                               AVR32_USBB.UDINTESET.wakeupes = true;\r
-                                               break;\r
-                                       case USB_INT_SUSPI:\r
-                                               AVR32_USBB.UDINTESET.suspes   = true;\r
-                                               break;\r
-                                       case USB_INT_EORSTI:\r
-                                               AVR32_USBB.UDINTESET.eorstes  = true;\r
-                                               break;\r
-                                       case USB_INT_SOFI:\r
-                                               AVR32_USBB.UDINTESET.sofes    = true;\r
-                                               break;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_HOST)\r
-                                       case USB_INT_HSOFI:\r
-                                               AVR32_USBB.UHINTESET.hsofies  = true;\r
-                                               break;\r
-                                       case USB_INT_DCONNI:\r
-                                               AVR32_USBB.UHINTESET.dconnies = true;\r
-                                               break;\r
-                                       case USB_INT_DDISCI:\r
-                                               AVR32_USBB.UHINTESET.ddiscies = true;\r
-                                               break;\r
-                                       case USB_INT_RSTI:\r
-                                               AVR32_USBB.UHINTESET.rsties   = true;\r
-                                               break;\r
-                                       case USB_INT_BCERRI:\r
-                                               AVR32_USBB.USBCON.bcerre      = true;\r
-                                               break;\r
-                                       case USB_INT_VBERRI:\r
-                                               AVR32_USBB.USBCON.vberre      = true;\r
-                                               break;\r
-                                       #endif\r
-                               }\r
-                       }\r
-\r
-                       static inline void USB_INT_Disable(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_INT_Disable(const uint8_t Interrupt)\r
-                       {\r
-                               switch (Interrupt)\r
-                               {\r
-                                       case USB_INT_VBUSTI:\r
-                                               AVR32_USBB.USBCON.vbuste      = false;\r
-                                               break;\r
-                                       #if defined(USB_CAN_BE_BOTH)\r
-                                       case USB_INT_IDTI:\r
-                                               AVR32_USBB.USBCON.idte        = false;\r
-                                               break;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_DEVICE)\r
-                                       case USB_INT_WAKEUPI:\r
-                                               AVR32_USBB.UDINTECLR.wakeupec = true;\r
-                                               break;\r
-                                       case USB_INT_SUSPI:\r
-                                               AVR32_USBB.UDINTECLR.suspec   = true;\r
-                                               break;\r
-                                       case USB_INT_EORSTI:\r
-                                               AVR32_USBB.UDINTECLR.eorstec  = true;\r
-                                               break;\r
-                                       case USB_INT_SOFI:\r
-                                               AVR32_USBB.UDINTECLR.sofec    = true;\r
-                                               break;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_HOST)\r
-                                       case USB_INT_HSOFI:\r
-                                               AVR32_USBB.UHINTECLR.hsofiec  = true;\r
-                                               break;\r
-                                       case USB_INT_DCONNI:\r
-                                               AVR32_USBB.UHINTECLR.dconniec = true;\r
-                                               break;\r
-                                       case USB_INT_DDISCI:\r
-                                               AVR32_USBB.UHINTECLR.ddisciec = true;\r
-                                               break;\r
-                                       case USB_INT_RSTI:\r
-                                               AVR32_USBB.UHINTECLR.rstiec   = true;\r
-                                               break;\r
-                                       case USB_INT_BCERRI:\r
-                                               AVR32_USBB.USBCON.bcerre      = false;\r
-                                               break;\r
-                                       case USB_INT_VBERRI:\r
-                                               AVR32_USBB.USBCON.vberre      = false;\r
-                                               break;\r
-                                       #endif\r
-                               }\r
-                       }\r
-                       \r
-                       static inline void USB_INT_Clear(const uint8_t Interrupt) ATTR_ALWAYS_INLINE;\r
-                       static inline void USB_INT_Clear(const uint8_t Interrupt)\r
-                       {\r
-                               switch (Interrupt)\r
-                               {\r
-                                       case USB_INT_VBUSTI:\r
-                                               AVR32_USBB.USBSTACLR.vbustic = true;\r
-                                               (void)AVR32_USBB.USBSTACLR;\r
-                                               break;\r
-                                       #if defined(USB_CAN_BE_BOTH)\r
-                                       case USB_INT_IDTI:\r
-                                               AVR32_USBB.USBSTACLR.idtic   = true;\r
-                                               (void)AVR32_USBB.USBSTACLR;\r
-                                               break;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_DEVICE)\r
-                                       case USB_INT_WAKEUPI:\r
-                                               AVR32_USBB.UDINTCLR.wakeupc  = true;\r
-                                               (void)AVR32_USBB.UDINTCLR;\r
-                                               break;\r
-                                       case USB_INT_SUSPI:\r
-                                               AVR32_USBB.UDINTCLR.suspc    = true;\r
-                                               (void)AVR32_USBB.UDINTCLR;\r
-                                               break;\r
-                                       case USB_INT_EORSTI:\r
-                                               AVR32_USBB.UDINTCLR.eorstc   = true;\r
-                                               (void)AVR32_USBB.UDINTCLR;\r
-                                               break;\r
-                                       case USB_INT_SOFI:\r
-                                               AVR32_USBB.UDINTCLR.sofc     = true;\r
-                                               (void)AVR32_USBB.UDINTCLR;\r
-                                               break;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_HOST)\r
-                                       case USB_INT_HSOFI:\r
-                                               AVR32_USBB.UHINTCLR.hsofic   = true;\r
-                                               (void)AVR32_USBB.UHINTCLR;\r
-                                               break;\r
-                                       case USB_INT_DCONNI:\r
-                                               AVR32_USBB.UHINTCLR.dconnic  = true;\r
-                                               (void)AVR32_USBB.UHINTCLR;\r
-                                               break;\r
-                                       case USB_INT_DDISCI:\r
-                                               AVR32_USBB.UHINTCLR.ddiscic  = true;\r
-                                               (void)AVR32_USBB.UHINTCLR;\r
-                                               break;\r
-                                       case USB_INT_RSTI:\r
-                                               AVR32_USBB.UHINTCLR.rstic    = true;\r
-                                               (void)AVR32_USBB.UHINTCLR;\r
-                                               break;\r
-                                       case USB_INT_BCERRI:\r
-                                               AVR32_USBB.USBSTACLR.bcerric = true;\r
-                                               (void)AVR32_USBB.USBSTACLR;\r
-                                               break;\r
-                                       case USB_INT_VBERRI:\r
-                                               AVR32_USBB.USBSTACLR.vberric = true;\r
-                                               (void)AVR32_USBB.USBSTACLR;\r
-                                               break;\r
-                                       #endif\r
-                               }\r
-                       }\r
-                       \r
-                       static inline bool USB_INT_IsEnabled(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;\r
-                       static inline bool USB_INT_IsEnabled(const uint8_t Interrupt)\r
-                       {\r
-                               switch (Interrupt)\r
-                               {\r
-                                       case USB_INT_VBUSTI:\r
-                                               return AVR32_USBB.USBCON.vbuste;\r
-                                       #if defined(USB_CAN_BE_BOTH)\r
-                                       case USB_INT_IDTI:\r
-                                               return AVR32_USBB.USBCON.idte;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_DEVICE)\r
-                                       case USB_INT_WAKEUPI:\r
-                                               return AVR32_USBB.UDINTE.wakeupe;\r
-                                       case USB_INT_SUSPI:\r
-                                               return AVR32_USBB.UDINTE.suspe;\r
-                                       case USB_INT_EORSTI:\r
-                                               return AVR32_USBB.UDINTE.eorste;\r
-                                       case USB_INT_SOFI:\r
-                                               return AVR32_USBB.UDINTE.sofe;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_HOST)                                    \r
-                                       case USB_INT_HSOFI:\r
-                                               return AVR32_USBB.UHINTE.hsofie;\r
-                                       case USB_INT_DCONNI:\r
-                                               return AVR32_USBB.UHINTE.dconnie;\r
-                                       case USB_INT_DDISCI:\r
-                                               return AVR32_USBB.UHINTE.ddiscie;\r
-                                       case USB_INT_RSTI:\r
-                                               return AVR32_USBB.UHINTE.rstie;\r
-                                       case USB_INT_BCERRI:\r
-                                               return AVR32_USBB.USBCON.bcerre;\r
-                                       case USB_INT_VBERRI:\r
-                                               return AVR32_USBB.USBCON.vberre;\r
-                                       #endif\r
-                               }\r
-                               \r
-                               return false;\r
-                       }\r
-               \r
-                       static inline bool USB_INT_HasOccurred(const uint8_t Interrupt) ATTR_ALWAYS_INLINE ATTR_WARN_UNUSED_RESULT;\r
-                       static inline bool USB_INT_HasOccurred(const uint8_t Interrupt)\r
-                       {\r
-                               switch (Interrupt)\r
-                               {\r
-                                       case USB_INT_VBUSTI:\r
-                                               return AVR32_USBB.USBSTA.vbusti;\r
-                                       #if defined(USB_CAN_BE_BOTH)\r
-                                       case USB_INT_IDTI:\r
-                                               return AVR32_USBB.USBSTA.idti;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_DEVICE)\r
-                                       case USB_INT_WAKEUPI:\r
-                                               return AVR32_USBB.UDINT.wakeup;\r
-                                       case USB_INT_SUSPI:\r
-                                               return AVR32_USBB.UDINT.susp;\r
-                                       case USB_INT_EORSTI:\r
-                                               return AVR32_USBB.UDINT.eorst;\r
-                                       case USB_INT_SOFI:\r
-                                               return AVR32_USBB.UDINT.sof;\r
-                                       #endif\r
-                                       #if defined(USB_CAN_BE_HOST)\r
-                                       case USB_INT_HSOFI:\r
-                                               return AVR32_USBB.UHINT.hsofi;\r
-                                       case USB_INT_DCONNI:\r
-                                               return AVR32_USBB.UHINT.dconni;\r
-                                       case USB_INT_DDISCI:\r
-                                               return AVR32_USBB.UHINT.ddisci;\r
-                                       case USB_INT_RSTI:\r
-                                               return AVR32_USBB.UHINT.rsti;\r
-                                       case USB_INT_BCERRI:\r
-                                               return AVR32_USBB.USBSTA.bcerri;\r
-                                       case USB_INT_VBERRI:\r
-                                               return AVR32_USBB.USBSTA.vberri;\r
-                                       #endif\r
-                               }\r
-\r
-                               return false;\r
-                       }\r
-\r
-               /* Includes: */\r
-                       #include "../USBMode.h"\r
-                       #include "../Events.h"\r
-                       #include "../USBController.h"\r
-\r
-               /* Function Prototypes: */\r
-                       void USB_INT_ClearAllInterrupts(void);\r
-                       void USB_INT_DisableAllInterrupts(void);\r
-       #endif\r
-\r
-       /* Disable C linkage for C++ Compilers: */\r
-               #if defined(__cplusplus)\r
-                       }\r
-               #endif\r
-\r
-#endif\r
-\r
index fc18029..0568dee 100644 (file)
@@ -60,8 +60,8 @@
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/USBController_AVR8.h"\r
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/USBController_AVR8.h"\r
-               #elif (ARCH == ARCH_UC3B)\r
-                       #include "UC3B/USBController_UC3B.h"    \r
+               #elif (ARCH == ARCH_UC3)\r
+                       #include "UC3/USBController_UC3.h"      \r
                #endif\r
 \r
 #endif\r
                #endif\r
 \r
 #endif\r
index 735d0e1..3217bda 100644 (file)
@@ -53,8 +53,8 @@
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/USBInterrupt_AVR8.h"\r
        /* Architecture Includes: */\r
                #if (ARCH == ARCH_AVR8)\r
                        #include "AVR8/USBInterrupt_AVR8.h"\r
-               #elif (ARCH == ARCH_UC3B)\r
-                       #include "UC3B/USBInterrupt_UC3B.h"\r
+               #elif (ARCH == ARCH_UC3)\r
+                       #include "UC3/USBInterrupt_UC3.h"\r
                #endif\r
 \r
 #endif\r
                #endif\r
 \r
 #endif\r
index 700390a..fbd3bdc 100644 (file)
@@ -13,6 +13,7 @@
   *     in exchange for a smaller compiled program binary size
   *   - Added a new general RingBuff.h miscellaneous ring buffer library driver header
   *   - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses
   *     in exchange for a smaller compiled program binary size
   *   - Added a new general RingBuff.h miscellaneous ring buffer library driver header
   *   - Added new GCC_FORCE_POINTER_ACCESS() macro to correct GCC's mishandling of struct pointer accesses
+  *   - Added new GCC_MEMORY_BARRIER() macro to prevent instruction reordering across boundaries
   *   - Added basic driver example use code to the library documentation
   *   - Added new Endpoint_Null_Stream() and Pipe_Null_Stream() functions
   *   - Added new ADC_GET_CHANNEL_MASK() convenience macro
   *   - Added basic driver example use code to the library documentation
   *   - Added new Endpoint_Null_Stream() and Pipe_Null_Stream() functions
   *   - Added new ADC_GET_CHANNEL_MASK() convenience macro
@@ -24,7 +25,7 @@
   *   - Added board driver support for the Sparkfun ATMEGA8U2 breakout board
   *   - Added TWI baud rate prescaler and bit length parameters to the TWI_Init() function (thanks to Thomas Herlinghaus)
   *   - Internal restructuring for eventual multiple architecture ports
   *   - Added board driver support for the Sparkfun ATMEGA8U2 breakout board
   *   - Added TWI baud rate prescaler and bit length parameters to the TWI_Init() function (thanks to Thomas Herlinghaus)
   *   - Internal restructuring for eventual multiple architecture ports
-  *   - Added start of an AVR32 UC3B architecture port (currently incomplete/experimental)
+  *   - Added start of an AVR32 UC3 architecture port (currently incomplete/experimental)
   *  - Library Applications:
   *   - Added ability to write protect Mass Storage disk write operations from the host OS
   *   - Added new MIDIToneGenerator project
   *  - Library Applications:
   *   - Added ability to write protect Mass Storage disk write operations from the host OS
   *   - Added new MIDIToneGenerator project
index b1d7811..f93dbb2 100644 (file)
@@ -7,16 +7,30 @@
 /**
  *  \page Page_DeviceSupport Device and Hardware Support
  *
 /**
  *  \page Page_DeviceSupport Device and Hardware Support
  *
- *  \section Sec_AVR8_Support Atmel 32-Bit UC3B AVR (UC3B)
- *  <i>The AVR32 UC3B device support is currently <b>experimental</b>, and is included for preview purposes only.</i>
+ *  \section Sec_AVR8_Support Atmel 32-Bit UC3 AVR (UC3)
+ *  <i>The AVR32 UC3 device support is currently <b>experimental</b>, and is included for preview purposes only.</i>
  *
  *
- *  Currently supported UC3B models:
+ *  Currently supported UC3 models:
+ *   - AT32UC3A064 (USB Host and Device)
+ *   - AT32UC3A164 (USB Host and Device)
+ *   - AT32UC3A364 (USB Host and Device)
+ *   - AT32UC3A364S (USB Host and Device)
  *   - AT32UC3B064 (USB Host and Device)
  *   - AT32UC3B164 (USB Host and Device)
  *   - AT32UC3B064 (USB Host and Device)
  *   - AT32UC3B164 (USB Host and Device)
+ *   - AT32UC3A0128 (USB Host and Device)
+ *   - AT32UC3A1128 (USB Host and Device)
+ *   - AT32UC3A3128 (USB Host and Device)
+ *   - AT32UC3A3128S (USB Host and Device)
  *   - AT32UC3B0128 (USB Host and Device)
  *   - AT32UC3B1128 (USB Host and Device)
  *   - AT32UC3B0128 (USB Host and Device)
  *   - AT32UC3B1128 (USB Host and Device)
+ *   - AT32UC3A0256 (USB Host and Device)
+ *   - AT32UC3A1256 (USB Host and Device)
+ *   - AT32UC3A3256 (USB Host and Device)
+ *   - AT32UC3A3256S (USB Host and Device)
  *   - AT32UC3B0256 (USB Host and Device)
  *   - AT32UC3B1256 (USB Host and Device)
  *   - AT32UC3B0256 (USB Host and Device)
  *   - AT32UC3B1256 (USB Host and Device)
+ *   - AT32UC3A0512 (USB Host and Device)
+ *   - AT32UC3A1512 (USB Host and Device)
  *   - AT32UC3B0512 (USB Host and Device)
  *   - AT32UC3B1512 (USB Host and Device)
  *
  *   - AT32UC3B0512 (USB Host and Device)
  *   - AT32UC3B1512 (USB Host and Device)
  *
index 72c666f..2f6bd97 100644 (file)
@@ -33,7 +33,6 @@
   *      -# Arduino Uno compatible USB-MIDI, USB-HID
   *      -# Make Webserver project work in RNDIS device mode
   *  - Ports
   *      -# Arduino Uno compatible USB-MIDI, USB-HID
   *      -# Make Webserver project work in RNDIS device mode
   *  - Ports
-  *      -# AVR32 UC3B series microcontrollers
   *      -# Atmel ARM7 series microcontrollers
   *      -# Other (commercial) C compilers
   */
   *      -# Atmel ARM7 series microcontrollers
   *      -# Other (commercial) C compilers
   */
index ff4dbd9..e75e105 100644 (file)
@@ -12,6 +12,7 @@
 # Check to see if the LUFA_PATH variable has not been set (the makefile is not being included from a project makefile)
 ifeq ($(origin LUFA_PATH), undefined)
    LUFA_ROOT_PATH = .
 # Check to see if the LUFA_PATH variable has not been set (the makefile is not being included from a project makefile)
 ifeq ($(origin LUFA_PATH), undefined)
    LUFA_ROOT_PATH = .
+   ARCH = {AVR8,UC3}
 else
    LUFA_ROOT_PATH = $(LUFA_PATH)/LUFA
 endif
 else
    LUFA_ROOT_PATH = $(LUFA_PATH)/LUFA
 endif
@@ -65,6 +66,7 @@ ifeq ($(origin LUFA_PATH), undefined)
 
    clean:
        rm -f $(LUFA_SRC_ALL_FILES:%.c=%.o)
 
    clean:
        rm -f $(LUFA_SRC_ALL_FILES:%.c=%.o)
+       rm -f $(LUFA_SRC_ALL_FILES:%.c=%.lst)
 
    clean_list:
 
 
    clean_list: