From dd995683ea1f233b79724d524a9a3dbcdc171d30 Mon Sep 17 00:00:00 2001 From: Dean Camera <dean@fourwalledcubicle.com> Date: Sun, 24 Jan 2010 11:13:23 +0000 Subject: [PATCH] Enhance TemperatureDatalogger project -- add RTC capabilities so that data is logged along with the current time and date. Make logging interval configurable, set by a C# PC host application. --- LUFA.pnproj | 2 +- LUFA/ManPages/FutureChanges.txt | 3 + LUFA/ManPages/VIDAndPIDValues.txt | 2 +- Projects/AVRISP-MKII/makefile | 1 + Projects/TemperatureDataLogger/Descriptors.c | 87 ++++++++- Projects/TemperatureDataLogger/Descriptors.h | 48 ++--- Projects/TemperatureDataLogger/Lib/DS1307.c | 129 +++++++++++++ Projects/TemperatureDataLogger/Lib/DS1307.h | 111 +++++++++++ .../TemperatureDataLogger/Lib/FATFs/diskio.c | 14 +- .../TemperatureDataLogger/Lib/FATFs/ffconf.h | 2 +- .../TemperatureDataLogger/TempDataLogger.c | 165 +++++++++++++--- .../TemperatureDataLogger/TempDataLogger.h | 25 ++- .../TempLoggerHostApp/TempLoggerHostApp.sln | 20 ++ .../TempLoggerHostApp/TempLoggerHostApp.suo | Bin 0 -> 17408 bytes .../DataLoggerSettings.Designer.cs | 181 ++++++++++++++++++ .../TempLoggerHostApp/DataLoggerSettings.cs | 172 +++++++++++++++++ .../TempLoggerHostApp/DataLoggerSettings.resx | 120 ++++++++++++ .../TempLoggerHostApp/Hid.Linux.dll | Bin 0 -> 9216 bytes .../TempLoggerHostApp/Hid.Net.dll | Bin 0 -> 24576 bytes .../TempLoggerHostApp/Hid.Win32.dll | Bin 0 -> 94208 bytes .../TempLoggerHostApp/Program.cs | 21 ++ .../TempLoggerHostApp.csproj | 95 +++++++++ .../TemperatureDataLogger.txt | 29 ++- Projects/TemperatureDataLogger/makefile | 3 + 24 files changed, 1147 insertions(+), 83 deletions(-) create mode 100644 Projects/TemperatureDataLogger/Lib/DS1307.c create mode 100644 Projects/TemperatureDataLogger/Lib/DS1307.h create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp.sln create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp.suo create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.Designer.cs create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.cs create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.resx create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Linux.dll create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Net.dll create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Win32.dll create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Program.cs create mode 100644 Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/TempLoggerHostApp.csproj diff --git a/LUFA.pnproj b/LUFA.pnproj index 54dce2e1e..f50eba3a4 100644 --- a/LUFA.pnproj +++ b/LUFA.pnproj @@ -1 +1 @@ -<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="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></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="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><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI_Codes.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></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="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></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></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="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></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="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></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><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></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></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></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></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\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></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></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></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></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></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></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></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></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="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></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="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></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><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISConstants.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></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><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></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></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></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></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\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\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\RNDISConstants.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></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><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="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File><File path="LUFA\Drivers\Board\XPLAIN\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\XPLAIN\Dataflash.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\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\EVK527\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="AVRU4U6U7"><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\ADC.h"></File><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\TWI.c"></File><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\TWI.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File><File path="LUFA\Drivers\Peripheral\TWI.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><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\Licence.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File><File path="LUFA\ManPages\AlternativeStacks.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><Folder name="Incomplete"><Folder name="MIDI"><Folder name="JavaHost"><File path="Bootloaders\Incomplete\MIDI\JavaHost\BIN2BOOT.java"></File><File path="Bootloaders\Incomplete\MIDI\JavaHost\MIDIMessageReceiver.java"></File></Folder><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.c"></File><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.h"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.c"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.h"></File><File path="Bootloaders\Incomplete\MIDI\Doxygen.conf"></File><File path="Bootloaders\Incomplete\MIDI\makefile"></File><File path="Bootloaders\Incomplete\MIDI\MIDI.c"></File></Folder></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\AVRISP.c"></File><File path="Projects\AVRISP-MKII\AVRISP.h"></File><File path="Projects\AVRISP-MKII\AVRISP.txt"></File><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></Folder><Folder name="Benito"><Folder name="Board"><File path="Projects\Benito\Board\LEDs.h"></File></Folder><Folder name="Lib"><File path="Projects\Benito\Lib\RingBuff.c"></File><File path="Projects\Benito\Lib\RingBuff.h"></File></Folder><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></Folder><Folder name="LEDNotifier"><Folder name="Board"><File path="Projects\LEDNotifier\Board\LEDs.h"></File></Folder><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></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></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></Folder><Folder name="TemperatureDataLogger"><Folder name="Lib"><Folder name="FATFs"><File path="Projects\TemperatureDataLogger\Lib\FATFs\diskio.c"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\diskio.h"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\ff.c"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\ff.h"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\ffconf.h"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\integer.h"></File></Folder><File path="Projects\TemperatureDataLogger\Lib\DataflashManager.c"></File><File path="Projects\TemperatureDataLogger\Lib\DataflashManager.h"></File><File path="Projects\TemperatureDataLogger\Lib\SCSI.c"></File><File path="Projects\TemperatureDataLogger\Lib\SCSI.h"></File></Folder><File path="Projects\TemperatureDataLogger\Descriptors.c"></File><File path="Projects\TemperatureDataLogger\Descriptors.h"></File><File path="Projects\TemperatureDataLogger\makefile"></File><File path="Projects\TemperatureDataLogger\TempDataLogger.c"></File><File path="Projects\TemperatureDataLogger\TempDataLogger.h"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Projects\USBtoSerial\Lib\RingBuff.c"></File><File path="Projects\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Projects\USBtoSerial\Descriptors.c"></File><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></Folder><Folder name="XPLAINBridge"><Folder name="Lib"><File path="Projects\XPLAINBridge\Lib\RingBuff.c"></File><File path="Projects\XPLAINBridge\Lib\RingBuff.h"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.c"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.h"></File></Folder><File path="Projects\XPLAINBridge\LUFA XPLAIN Bridge.inf"></File><File path="Projects\XPLAINBridge\makefile"></File><File path="Projects\XPLAINBridge\XPLAINBridge.c"></File><File path="Projects\XPLAINBridge\XPLAINBridge.h"></File><File path="Projects\XPLAINBridge\XPLAINBridge.txt"></File><File path="Projects\XPLAINBridge\USARTDescriptors.c"></File><File path="Projects\XPLAINBridge\USARTDescriptors.h"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.c"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.h"></File><File path="Projects\XPLAINBridge\Doxygen.conf"></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 name="Webserver"><Folder name="Lib"><Folder name="uip"><Folder name="conf"><File path="Projects\Incomplete\Webserver\Lib\uip\conf\apps-conf.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\clock-arch.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\clock-arch.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\global-conf.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\uip-conf.h"></File></Folder><File path="Projects\Incomplete\Webserver\Lib\uip\clock.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\lc.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\lc-addrlabels.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\lc-switch.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\psock.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\psock.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\pt.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\timer.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\timer.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip_arch.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip_arp.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip_arp.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-fw.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-fw.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uiplib.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uiplib.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-neighbor.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-neighbor.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uipopt.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-split.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-split.h"></File></Folder><File path="Projects\Incomplete\Webserver\Lib\WebserverApp.c"></File><File path="Projects\Incomplete\Webserver\Lib\WebserverApp.h"></File></Folder><File path="Projects\Incomplete\Webserver\makefile"></File><File path="Projects\Incomplete\Webserver\Webserver.c"></File><File path="Projects\Incomplete\Webserver\Webserver.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></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File></Folder><Folder name="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></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File></Folder><Folder name="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><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI_Codes.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></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="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></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></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File></Folder><Folder name="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></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDISConstants.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File></Folder><Folder name="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></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><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></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></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></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></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\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></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></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></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></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></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></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></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></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\SCSI_Codes.h"></File></Folder><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MassStorageHost\makefile"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="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></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File></Folder><Folder name="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></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><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISConstants.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></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File></Folder><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></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></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></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></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\FunctionAttributes.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_R.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\LowLevel\Template\Template_Pipe_RW.c"></File></Folder><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\DevChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.h"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.c"></File><File path="LUFA\Drivers\USB\LowLevel\Endpoint.h"></File><File path="LUFA\Drivers\USB\LowLevel\Host.c"></File><File path="LUFA\Drivers\USB\LowLevel\Host.h"></File><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.c"></File><File path="LUFA\Drivers\USB\LowLevel\OTG.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File><File path="LUFA\Drivers\USB\HighLevel\StdRequestType.h"></File><File path="LUFA\Drivers\USB\HighLevel\StreamCallbacks.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\HighLevel\ConfigDescriptor.h"></File></Folder><Folder name="Class"><Folder name="Device"><File path="LUFA\Drivers\USB\Class\Device\HID.c"></File><File path="LUFA\Drivers\USB\Class\Device\HID.h"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Device\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.c"></File><File path="LUFA\Drivers\USB\Class\Device\RNDIS.h"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.c"></File><File path="LUFA\Drivers\USB\Class\Device\MassStorage.h"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.c"></File><File path="LUFA\Drivers\USB\Class\Device\Audio.h"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.c"></File><File path="LUFA\Drivers\USB\Class\Device\MIDI.h"></File></Folder><Folder name="Host"><File path="LUFA\Drivers\USB\Class\Host\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\Host\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\Host\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.c"></File><File path="LUFA\Drivers\USB\Class\Host\CDC.h"></File><File path="LUFA\Drivers\USB\Class\Host\HID.c"></File><File path="LUFA\Drivers\USB\Class\Host\HID.h"></File><File path="LUFA\Drivers\USB\Class\Host\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\RNDISConstants.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></Folder><Folder name="Board"><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="STK526"><File path="LUFA\Drivers\Board\STK526\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK526\Joystick.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File><File path="LUFA\Drivers\Board\STK526\Buttons.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.h"></File><File path="LUFA\Drivers\Board\STK525\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><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="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File><File path="LUFA\Drivers\Board\XPLAIN\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\XPLAIN\Dataflash.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\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\EVK527\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="AVRU4U6U7"><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\ADC.h"></File><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\TWI.c"></File><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\TWI.h"></File></Folder><File path="LUFA\Drivers\Peripheral\ADC.h"></File><File path="LUFA\Drivers\Peripheral\Serial.c"></File><File path="LUFA\Drivers\Peripheral\Serial.h"></File><File path="LUFA\Drivers\Peripheral\SPI.h"></File><File path="LUFA\Drivers\Peripheral\SerialStream.c"></File><File path="LUFA\Drivers\Peripheral\SerialStream.h"></File><File path="LUFA\Drivers\Peripheral\TWI.h"></File></Folder></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File><File path="LUFA\DriverStubs\Buttons.h"></File></Folder><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\Licence.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File><File path="LUFA\ManPages\AlternativeStacks.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><Folder name="Incomplete"><Folder name="MIDI"><Folder name="JavaHost"><File path="Bootloaders\Incomplete\MIDI\JavaHost\BIN2BOOT.java"></File><File path="Bootloaders\Incomplete\MIDI\JavaHost\MIDIMessageReceiver.java"></File></Folder><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.c"></File><File path="Bootloaders\Incomplete\MIDI\BootloaderMIDI.h"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.c"></File><File path="Bootloaders\Incomplete\MIDI\Descriptors.h"></File><File path="Bootloaders\Incomplete\MIDI\Doxygen.conf"></File><File path="Bootloaders\Incomplete\MIDI\makefile"></File><File path="Bootloaders\Incomplete\MIDI\MIDI.c"></File></Folder></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\AVRISP.c"></File><File path="Projects\AVRISP-MKII\AVRISP.h"></File><File path="Projects\AVRISP-MKII\AVRISP.txt"></File><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></Folder><Folder name="Benito"><Folder name="Board"><File path="Projects\Benito\Board\LEDs.h"></File></Folder><Folder name="Lib"><File path="Projects\Benito\Lib\RingBuff.c"></File><File path="Projects\Benito\Lib\RingBuff.h"></File></Folder><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></Folder><Folder name="LEDNotifier"><Folder name="Board"><File path="Projects\LEDNotifier\Board\LEDs.h"></File></Folder><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></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></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></Folder><Folder name="TemperatureDataLogger"><Folder name="Lib"><Folder name="FATFs"><File path="Projects\TemperatureDataLogger\Lib\FATFs\diskio.c"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\diskio.h"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\ff.c"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\ff.h"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\ffconf.h"></File><File path="Projects\TemperatureDataLogger\Lib\FATFs\integer.h"></File></Folder><File path="Projects\TemperatureDataLogger\Lib\DataflashManager.c"></File><File path="Projects\TemperatureDataLogger\Lib\DataflashManager.h"></File><File path="Projects\TemperatureDataLogger\Lib\SCSI.c"></File><File path="Projects\TemperatureDataLogger\Lib\SCSI.h"></File><File path="Projects\TemperatureDataLogger\Lib\DS1307.c"></File><File path="Projects\TemperatureDataLogger\Lib\DS1307.h"></File></Folder><File path="Projects\TemperatureDataLogger\Descriptors.c"></File><File path="Projects\TemperatureDataLogger\Descriptors.h"></File><File path="Projects\TemperatureDataLogger\makefile"></File><File path="Projects\TemperatureDataLogger\TempDataLogger.c"></File><File path="Projects\TemperatureDataLogger\TempDataLogger.h"></File><File path="Projects\TemperatureDataLogger\TemperatureDataLogger.txt"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Projects\USBtoSerial\Lib\RingBuff.c"></File><File path="Projects\USBtoSerial\Lib\RingBuff.h"></File></Folder><File path="Projects\USBtoSerial\Descriptors.c"></File><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></Folder><Folder name="XPLAINBridge"><Folder name="Lib"><File path="Projects\XPLAINBridge\Lib\RingBuff.c"></File><File path="Projects\XPLAINBridge\Lib\RingBuff.h"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.c"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.h"></File></Folder><File path="Projects\XPLAINBridge\LUFA XPLAIN Bridge.inf"></File><File path="Projects\XPLAINBridge\makefile"></File><File path="Projects\XPLAINBridge\XPLAINBridge.c"></File><File path="Projects\XPLAINBridge\XPLAINBridge.h"></File><File path="Projects\XPLAINBridge\XPLAINBridge.txt"></File><File path="Projects\XPLAINBridge\USARTDescriptors.c"></File><File path="Projects\XPLAINBridge\USARTDescriptors.h"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.c"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.h"></File><File path="Projects\XPLAINBridge\Doxygen.conf"></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 name="Webserver"><Folder name="Lib"><Folder name="uip"><Folder name="conf"><File path="Projects\Incomplete\Webserver\Lib\uip\conf\apps-conf.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\clock-arch.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\clock-arch.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\global-conf.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\conf\uip-conf.h"></File></Folder><File path="Projects\Incomplete\Webserver\Lib\uip\clock.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\lc.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\lc-addrlabels.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\lc-switch.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\psock.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\psock.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\pt.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\timer.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\timer.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip_arch.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip_arp.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip_arp.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-fw.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-fw.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uiplib.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uiplib.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-neighbor.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-neighbor.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uipopt.h"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-split.c"></File><File path="Projects\Incomplete\Webserver\Lib\uip\uip-split.h"></File></Folder><File path="Projects\Incomplete\Webserver\Lib\WebserverApp.c"></File><File path="Projects\Incomplete\Webserver\Lib\WebserverApp.h"></File></Folder><File path="Projects\Incomplete\Webserver\makefile"></File><File path="Projects\Incomplete\Webserver\Webserver.c"></File><File path="Projects\Incomplete\Webserver\Webserver.h"></File></Folder></Folder><File path="Projects\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project> \ No newline at end of file diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt index 38cbf0ccf..9006040d3 100644 --- a/LUFA/ManPages/FutureChanges.txt +++ b/LUFA/ManPages/FutureChanges.txt @@ -17,6 +17,8 @@ * -# Add ability to get number of bytes not written with pipe/endpoint write routines after an error * -# Add standardized descriptor names to class driver structures * -# Correct mishandling of error cases in Mass Storage demos + * -# FIX BROKEN RNDIS HOST CLASS DRIVER (BLOCKING) + * -# TEST AND CORRECT TPI PROGRAMMING SUPPORT IN THE AVRISP-MKII PROJECT (BLOCKING) * - Documentation/Support * -# Remake AVRStudio project files * -# Add detailed overviews of how each demo works @@ -32,6 +34,7 @@ * -# Finish MIDI class Bootloader * -# Finish SideShow demo * -# Finish StandaloneProgrammer project + * -# Finish Webserver project * - Ports * -# AVR32 UC3B series microcontrollers * -# Atmel ARM7 series microcontrollers diff --git a/LUFA/ManPages/VIDAndPIDValues.txt b/LUFA/ManPages/VIDAndPIDValues.txt index 1a101a893..339fd47b2 100644 --- a/LUFA/ManPages/VIDAndPIDValues.txt +++ b/LUFA/ManPages/VIDAndPIDValues.txt @@ -265,7 +265,7 @@ * 0x2063 * </td> * <td> - * <i>Currently Unallocated</i> + * Mass Storage/HID Interface Datalogger Project * </td> * </tr> * diff --git a/Projects/AVRISP-MKII/makefile b/Projects/AVRISP-MKII/makefile index 58d2a46d0..5c0fe0f64 100644 --- a/Projects/AVRISP-MKII/makefile +++ b/Projects/AVRISP-MKII/makefile @@ -197,6 +197,7 @@ CDEFS += -DAUX_LINE_MASK="(1 << 4)" CDEFS += -DVTARGET_ADC_CHANNEL=2 CDEFS += -DENABLE_ISP_PROTOCOL CDEFS += -DENABLE_XPROG_PROTOCOL +#CDEFS += -DXPROG_VIA_HARDWARE_USART # Place -D or -U options here for ASM sources diff --git a/Projects/TemperatureDataLogger/Descriptors.c b/Projects/TemperatureDataLogger/Descriptors.c index 40ce620a6..e4f5666e5 100644 --- a/Projects/TemperatureDataLogger/Descriptors.c +++ b/Projects/TemperatureDataLogger/Descriptors.c @@ -49,6 +49,32 @@ #warning USE_INTERNAL_SERIAL is not available on this AVR - please manually construct a device serial descriptor. #endif +/** HID class report descriptor. This is a special descriptor constructed with values from the + * USBIF HID class specification to describe the reports and capabilities of the HID device. This + * descriptor is parsed by the host and its contents used to determine what data (and in what encoding) + * the device will send, and what it may be sent back from the host. Refer to the HID specification for + * more details on HID report descriptors. + */ +USB_Descriptor_HIDReport_Datatype_t PROGMEM GenericReport[] = +{ + 0x06, 0x9c, 0xff, /* Usage Page (Vendor Defined) */ + 0x09, 0x01, /* Usage (Vendor Defined) */ + 0xa1, 0x01, /* Collection (Vendor Defined) */ + 0x09, 0x02, /* Usage (Vendor Defined) */ + 0x75, 0x08, /* Report Size (8) */ + 0x95, GENERIC_REPORT_SIZE, /* Report Count (GENERIC_REPORT_SIZE) */ + 0x15, 0x80, /* Logical Minimum (-128) */ + 0x25, 0x7F, /* Logical Maximum (127) */ + 0x81, 0x02, /* Input (Data, Variable, Absolute) */ + 0x09, 0x03, /* Usage (Vendor Defined) */ + 0x75, 0x08, /* Report Size (8) */ + 0x95, GENERIC_REPORT_SIZE, /* Report Count (GENERIC_REPORT_SIZE) */ + 0x15, 0x00, /* Logical Minimum (0) */ + 0x25, 0xff, /* Logical Maximum (255) */ + 0x91, 0x02, /* Output (Data, Variable, Absolute) */ + 0xc0 /* End Collection */ +}; + /** Device descriptor structure. This descriptor, located in FLASH memory, describes the overall * device characteristics, including the supported USB version, control endpoint size and the * number of device configurations. The descriptor is read out by the USB host when the enumeration @@ -66,7 +92,7 @@ USB_Descriptor_Device_t PROGMEM DeviceDescriptor = .Endpoint0Size = FIXED_CONTROL_ENDPOINT_SIZE, .VendorID = 0x03EB, - .ProductID = 0x2045, + .ProductID = 0x2063, .ReleaseNumber = 0x0000, .ManufacturerStrIndex = 0x01, @@ -88,7 +114,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .Header = {.Size = sizeof(USB_Descriptor_Configuration_Header_t), .Type = DTYPE_Configuration}, .TotalConfigurationSize = sizeof(USB_Descriptor_Configuration_t), - .TotalInterfaces = 1, + .TotalInterfaces = 2, .ConfigurationNumber = 1, .ConfigurationStrIndex = NO_DESCRIPTOR, @@ -98,7 +124,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .MaxPowerConsumption = USB_CONFIG_POWER_MA(100) }, - .Interface = + .MSInterface = { .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, @@ -114,7 +140,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .InterfaceStrIndex = NO_DESCRIPTOR }, - .DataInEndpoint = + .MSDataInEndpoint = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, @@ -124,7 +150,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .PollingIntervalMS = 0x00 }, - .DataOutEndpoint = + .MSDataOutEndpoint = { .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, @@ -132,7 +158,44 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = .Attributes = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), .EndpointSize = MASS_STORAGE_IO_EPSIZE, .PollingIntervalMS = 0x00 - } + }, + + .HIDInterface = + { + .Header = {.Size = sizeof(USB_Descriptor_Interface_t), .Type = DTYPE_Interface}, + + .InterfaceNumber = 1, + .AlternateSetting = 0, + + .TotalEndpoints = 1, + + .Class = 0x03, + .SubClass = 0x00, + .Protocol = HID_NON_BOOT_PROTOCOL, + + .InterfaceStrIndex = NO_DESCRIPTOR + }, + + .HIDInfo = + { + .Header = {.Size = sizeof(USB_HID_Descriptor_t), .Type = DTYPE_HID}, + + .HIDSpec = VERSION_BCD(01.11), + .CountryCode = 0x00, + .TotalReportDescriptors = 1, + .HIDReportType = DTYPE_Report, + .HIDReportLength = sizeof(GenericReport) + }, + + .HIDDataInEndpoint = + { + .Header = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint}, + + .EndpointAddress = (ENDPOINT_DESCRIPTOR_DIR_IN | GENERIC_IN_EPNUM), + .Attributes = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), + .EndpointSize = GENERIC_EPSIZE, + .PollingIntervalMS = 0x0A + }, }; /** Language descriptor structure. This descriptor, located in FLASH memory, is returned when the host requests @@ -163,9 +226,9 @@ USB_Descriptor_String_t PROGMEM ManufacturerString = */ USB_Descriptor_String_t PROGMEM ProductString = { - .Header = {.Size = USB_STRING_LEN(22), .Type = DTYPE_String}, + .Header = {.Size = USB_STRING_LEN(10), .Type = DTYPE_String}, - .UnicodeString = L"LUFA Mass Storage Demo" + .UnicodeString = L"Datalogger" }; /** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors" @@ -209,6 +272,14 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex, break; } + break; + case DTYPE_HID: + Address = (void*)&ConfigurationDescriptor.HIDInfo; + Size = sizeof(USB_HID_Descriptor_t); + break; + case DTYPE_Report: + Address = (void*)&GenericReport; + Size = sizeof(GenericReport); break; } diff --git a/Projects/TemperatureDataLogger/Descriptors.h b/Projects/TemperatureDataLogger/Descriptors.h index dcaaddaf7..a0f03c38d 100644 --- a/Projects/TemperatureDataLogger/Descriptors.h +++ b/Projects/TemperatureDataLogger/Descriptors.h @@ -5,33 +5,6 @@ dean [at] fourwalledcubicle [dot] com www.fourwalledcubicle.com */ - -/* - Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com) - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that the copyright notice and this - permission notice and warranty disclaimer appear in supporting - documentation, and that the name of the author not be used in - advertising or publicity pertaining to distribution of the - software without specific, written prior permission. - - The author disclaim all warranties with regard to this - software, including all implied warranties of merchantability - and fitness. In no event shall the author be liable for any - special, indirect or consequential damages or any damages - whatsoever resulting from loss of use, data or profits, whether - in an action of contract, negligence or other tortious action, - arising out of or in connection with the use or performance of - this software. -*/ - -/** \file - * - * Header file for Descriptors.c. - */ #ifndef _DESCRIPTORS_H_ #define _DESCRIPTORS_H_ @@ -41,6 +14,9 @@ #include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/Class/MassStorage.h> + #include <LUFA/Drivers/USB/Class/HID.h> + + #include "TempDataLogger.h" /* Macros: */ /** Endpoint number of the Mass Storage device-to-host data IN endpoint. */ @@ -51,6 +27,15 @@ /** Size in bytes of the Mass Storage data endpoints. */ #define MASS_STORAGE_IO_EPSIZE 64 + + /** Endpoint number of the Generic HID reporting IN endpoint. */ + #define GENERIC_IN_EPNUM 1 + + /** Size in bytes of the Generic HID reporting endpoint. */ + #define GENERIC_EPSIZE 16 + + /** Size in bytes of the Generic HID reports (including report ID byte). */ + #define GENERIC_REPORT_SIZE sizeof(Device_Report_t) /* Type Defines: */ /** Type define for the device configuration descriptor structure. This must be defined in the @@ -60,9 +45,12 @@ typedef struct { USB_Descriptor_Configuration_Header_t Config; - USB_Descriptor_Interface_t Interface; - USB_Descriptor_Endpoint_t DataInEndpoint; - USB_Descriptor_Endpoint_t DataOutEndpoint; + USB_Descriptor_Interface_t MSInterface; + USB_Descriptor_Endpoint_t MSDataInEndpoint; + USB_Descriptor_Endpoint_t MSDataOutEndpoint; + USB_Descriptor_Interface_t HIDInterface; + USB_HID_Descriptor_t HIDInfo; + USB_Descriptor_Endpoint_t HIDDataInEndpoint; } USB_Descriptor_Configuration_t; /* Function Prototypes: */ diff --git a/Projects/TemperatureDataLogger/Lib/DS1307.c b/Projects/TemperatureDataLogger/Lib/DS1307.c new file mode 100644 index 000000000..37817e97f --- /dev/null +++ b/Projects/TemperatureDataLogger/Lib/DS1307.c @@ -0,0 +1,129 @@ +/* + Copyright (C) Dean Camera, 2010. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com +*/ + +#include "DS1307.h" + +void DS1307_Init(void) +{ + // Nothing to initialize +} + +void DS1307_SetDate(uint8_t Day, uint8_t Month, uint8_t Year) +{ +#if defined(DUMMY_RTC) + return; +#endif + + DS1307_DateRegs_t CurrentRTCDate; + CurrentRTCDate.Byte1.TenDay = (Day / 10); + CurrentRTCDate.Byte1.Day = (Day % 10); + CurrentRTCDate.Byte2.TenMonth = (Month / 10); + CurrentRTCDate.Byte2.Month = (Month % 10); + CurrentRTCDate.Byte3.TenYear = (Year / 10); + CurrentRTCDate.Byte3.Year = (Year % 10); + + if (TWI_StartTransmission(DS1307_ADDRESS_WRITE)) + { + TWI_SendByte(DS1307_DATEREG_START); + TWI_SendByte(CurrentRTCDate.Byte1.IntVal); + TWI_SendByte(CurrentRTCDate.Byte2.IntVal); + TWI_SendByte(CurrentRTCDate.Byte3.IntVal); + + TWI_StopTransmission(); + } +} + +void DS1307_SetTime(uint8_t Hour, uint8_t Minute, uint8_t Second) +{ +#if defined(DUMMY_RTC) + return; +#endif + + DS1307_TimeRegs_t CurrentRTCTime; + CurrentRTCTime.Byte1.TenSec = (Second / 10); + CurrentRTCTime.Byte1.Sec = (Second % 10); + CurrentRTCTime.Byte1.CH = false; + CurrentRTCTime.Byte2.TenMin = (Minute / 10); + CurrentRTCTime.Byte2.Min = (Minute % 10); + CurrentRTCTime.Byte3.TenHour = (Hour / 10); + CurrentRTCTime.Byte3.Hour = (Hour % 10); + CurrentRTCTime.Byte3.TwelveHourMode = false; + + if (TWI_StartTransmission(DS1307_ADDRESS_WRITE)) + { + TWI_SendByte(DS1307_TIMEREG_START); + TWI_SendByte(CurrentRTCTime.Byte1.IntVal); + TWI_SendByte(CurrentRTCTime.Byte2.IntVal); + TWI_SendByte(CurrentRTCTime.Byte3.IntVal); + + TWI_StopTransmission(); + } +} + +void DS1307_GetDate(uint8_t* Day, uint8_t* Month, uint8_t* Year) +{ +#if defined(DUMMY_RTC) + *Day = 1; + *Month = 1; + *Year = 1; + return; +#endif + + if (TWI_StartTransmission(DS1307_ADDRESS_WRITE)) + { + TWI_SendByte(DS1307_DATEREG_START); + + TWI_StopTransmission(); + } + + DS1307_DateRegs_t CurrentRTCDate; + + if (TWI_StartTransmission(DS1307_ADDRESS_READ)) + { + TWI_ReceiveByte(&CurrentRTCDate.Byte1.IntVal, false); + TWI_ReceiveByte(&CurrentRTCDate.Byte2.IntVal, false); + TWI_ReceiveByte(&CurrentRTCDate.Byte3.IntVal, true); + + TWI_StopTransmission(); + } + + *Day = (CurrentRTCDate.Byte1.TenDay * 10) + CurrentRTCDate.Byte1.Day; + *Month = (CurrentRTCDate.Byte2.TenMonth * 10) + CurrentRTCDate.Byte2.Month; + *Year = (CurrentRTCDate.Byte3.TenYear * 10) + CurrentRTCDate.Byte3.Year; +} + +void DS1307_GetTime(uint8_t* Hour, uint8_t* Minute, uint8_t* Second) +{ +#if defined(DUMMY_RTC) + *Hour = 1; + *Minute = 1; + *Second = 1; + return; +#endif + + if (TWI_StartTransmission(DS1307_ADDRESS_WRITE)) + { + TWI_SendByte(DS1307_TIMEREG_START); + + TWI_StopTransmission(); + } + + DS1307_TimeRegs_t CurrentRTCTime; + + if (TWI_StartTransmission(DS1307_ADDRESS_READ)) + { + TWI_ReceiveByte(&CurrentRTCTime.Byte1.IntVal, false); + TWI_ReceiveByte(&CurrentRTCTime.Byte2.IntVal, false); + TWI_ReceiveByte(&CurrentRTCTime.Byte3.IntVal, true); + + TWI_StopTransmission(); + } + + *Second = (CurrentRTCTime.Byte1.TenSec * 10) + CurrentRTCTime.Byte1.Sec; + *Minute = (CurrentRTCTime.Byte2.TenMin * 10) + CurrentRTCTime.Byte2.Min; + *Hour = (CurrentRTCTime.Byte3.TenHour * 10) + CurrentRTCTime.Byte3.Hour; +} diff --git a/Projects/TemperatureDataLogger/Lib/DS1307.h b/Projects/TemperatureDataLogger/Lib/DS1307.h new file mode 100644 index 000000000..491836079 --- /dev/null +++ b/Projects/TemperatureDataLogger/Lib/DS1307.h @@ -0,0 +1,111 @@ +/* + Copyright (C) Dean Camera, 2010. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com +*/ + +#ifndef _DS1307_H_ +#define _DS1307_H_ + + /* Includes: */ + #include <avr/io.h> + + #include <LUFA/Drivers/Peripheral/TWI.h> + + /* Type Defines: */ + typedef struct + { + union + { + struct + { + unsigned int Sec : 4; + unsigned int TenSec : 3; + unsigned int CH : 1; + }; + + uint8_t IntVal; + } Byte1; + + union + { + struct + { + unsigned int Min : 4; + unsigned int TenMin : 3; + unsigned int _RESERVED : 1; + }; + + uint8_t IntVal; + } Byte2; + + union + { + struct + { + unsigned int Hour : 4; + unsigned int TenHour : 2; + unsigned int TwelveHourMode : 1; + unsigned int _RESERVED : 1; + }; + + uint8_t IntVal; + } Byte3; + } DS1307_TimeRegs_t; + + typedef struct + { + union + { + struct + { + unsigned int Day : 4; + unsigned int TenDay : 2; + unsigned int _RESERVED : 2; + }; + + uint8_t IntVal; + } Byte1; + + union + { + struct + { + unsigned int Month : 4; + unsigned int TenMonth : 1; + unsigned int _RESERVED : 3; + }; + + uint8_t IntVal; + } Byte2; + + union + { + struct + { + unsigned int Year : 4; + unsigned int TenYear : 4; + }; + + uint8_t IntVal; + } Byte3; + } DS1307_DateRegs_t; + + /* Macros: */ + #define DS1307_TIMEREG_START 0x00 + #define DS1307_DATEREG_START 0x04 + + #define DS1307_ADDRESS_READ 0b11010001 + #define DS1307_ADDRESS_WRITE 0b11010000 + + /* Function Prototypes: */ + void DS1307_Init(void); + + void DS1307_SetDate(uint8_t Day, uint8_t Month, uint8_t Year); + void DS1307_SetTime(uint8_t Hour, uint8_t Minute, uint8_t Second); + + void DS1307_GetDate(uint8_t* Day, uint8_t* Month, uint8_t* Year); + void DS1307_GetTime(uint8_t* Hour, uint8_t* Minute, uint8_t* Second); + +#endif diff --git a/Projects/TemperatureDataLogger/Lib/FATFs/diskio.c b/Projects/TemperatureDataLogger/Lib/FATFs/diskio.c index e6be68734..0c0083bac 100644 --- a/Projects/TemperatureDataLogger/Lib/FATFs/diskio.c +++ b/Projects/TemperatureDataLogger/Lib/FATFs/diskio.c @@ -83,5 +83,17 @@ DRESULT disk_ioctl ( DWORD get_fattime (void) { - return (1UL << 25) | (1UL << 21) | (1UL << 16) | (1UL << 11) | (1UL << 5) | (1UL << 0); + uint8_t Day, Month, Year; + uint8_t Hour, Minute, Second; + + DS1307_GetDate(&Day, &Month, &Year); + DS1307_GetTime(&Hour, &Minute, &Second); + + + return ((DWORD)(20 + Year) << 25) | + ((DWORD)Month << 21) | + ((DWORD)Day << 16) | + ((DWORD)Hour << 11) | + ((DWORD)Minute << 5) | + (((DWORD)Second >> 1) << 0); } diff --git a/Projects/TemperatureDataLogger/Lib/FATFs/ffconf.h b/Projects/TemperatureDataLogger/Lib/FATFs/ffconf.h index 18510157d..9b414e979 100644 --- a/Projects/TemperatureDataLogger/Lib/FATFs/ffconf.h +++ b/Projects/TemperatureDataLogger/Lib/FATFs/ffconf.h @@ -36,7 +36,7 @@ / 3: f_lseek is removed in addition to level 2. */ -#define _USE_STRFUNC 1 /* 0, 1 or 2 */ +#define _USE_STRFUNC 0 /* 0, 1 or 2 */ /* To enable string functions, set _USE_STRFUNC to 1 or 2. */ diff --git a/Projects/TemperatureDataLogger/TempDataLogger.c b/Projects/TemperatureDataLogger/TempDataLogger.c index b181ec2f8..538a6a5e8 100644 --- a/Projects/TemperatureDataLogger/TempDataLogger.c +++ b/Projects/TemperatureDataLogger/TempDataLogger.c @@ -58,52 +58,93 @@ USB_ClassInfo_MS_Device_t Disk_MS_Interface = }, }; +/** Buffer to hold the previously generated HID report, for comparison purposes inside the HID class driver. */ +uint8_t PrevHIDReportBuffer[GENERIC_REPORT_SIZE]; + +/** LUFA HID Class driver interface configuration and state information. This structure is + * passed to all HID Class driver functions, so that multiple instances of the same class + * within a device can be differentiated from one another. + */ +USB_ClassInfo_HID_Device_t Generic_HID_Interface = + { + .Config = + { + .InterfaceNumber = 1, + + .ReportINEndpointNumber = GENERIC_IN_EPNUM, + .ReportINEndpointSize = GENERIC_EPSIZE, + .ReportINEndpointDoubleBank = false, + + .PrevReportINBuffer = PrevHIDReportBuffer, + .PrevReportINBufferSize = sizeof(PrevHIDReportBuffer), + }, + }; + +/** Non-volatile Logging Interval value in EEPROM, stored as a number of 500ms ticks */ +uint8_t EEMEM LoggingInterval500MS_EEPROM; + +/** SRAM Logging Interval value fetched from EEPROM, stored as a number of 500ms ticks */ +uint8_t LoggingInterval500MS_SRAM; + +/** Total number of 500ms logging ticks elapsed since the last log value was recorded */ +uint16_t CurrentLoggingTicks; + /** FAT Fs structure to hold the internal state of the FAT driver for the dataflash contents. */ FATFS DiskFATState; /** FAT Fs structure to hold a FAT file handle for the log data write destination. */ FIL TempLogFile; -/** Counter to count the number of 10 millisecond ticks that has elapsed since the last sample */ -uint16_t CurrentLogTick; - ISR(TIMER1_COMPA_vect, ISR_BLOCK) { - if (CurrentLogTick++ != LOG_INTERVAL_10MS) - return; - uint8_t LEDMask = LEDs_GetLEDs(); + /* Check to see if the logging interval has expired */ + if (CurrentLoggingTicks++ < LoggingInterval500MS_SRAM) + return; + LEDs_SetAllLEDs(LEDMASK_USB_BUSY); - CurrentLogTick = 0; - + /* Reset log tick counter to prepare for next logging interval */ + CurrentLoggingTicks = 0; + if (USB_DeviceState == DEVICE_STATE_Unattached) { - f_printf(&TempLogFile, "%d Degrees\r\n", Temperature_GetTemperature()); + uint8_t Day, Month, Year; + uint8_t Hour, Minute, Second; + + DS1307_GetDate(&Day, &Month, &Year); + DS1307_GetTime(&Hour, &Minute, &Second); + + char LineBuffer[100]; + uint16_t BytesWritten; + + BytesWritten = sprintf(LineBuffer, "%02d/%02d/20%04d, %02d:%02d:%02d, %d Degrees\r\n", + Day, Month, Year, Hour, Minute, Second, Temperature_GetTemperature()); + + f_write(&TempLogFile, LineBuffer, BytesWritten, &BytesWritten); f_sync(&TempLogFile); } LEDs_SetAllLEDs(LEDMask); } - /** Main program entry point. This routine contains the overall program flow, including initial * setup of all components and the main program loop. */ int main(void) { - SetupHardware(); + /* Fetch logging interval from EEPROM */ + LoggingInterval500MS_SRAM = eeprom_read_byte(&LoggingInterval500MS_EEPROM); LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); + SetupHardware(); + /* Mount and open the log file on the dataflash FAT partition */ - f_mount(0, &DiskFATState); - f_open(&TempLogFile, LOG_FILENAME, FA_OPEN_ALWAYS | FA_WRITE); - f_lseek(&TempLogFile, TempLogFile.fsize); - f_printf(&TempLogFile, "===========================\r\n"); - + OpenLogFile(); + /* Discard the first sample from the temperature sensor, as it is generally incorrect */ uint8_t Dummy = Temperature_GetTemperature(); (void)Dummy; @@ -111,10 +152,33 @@ int main(void) for (;;) { MS_Device_USBTask(&Disk_MS_Interface); + HID_Device_USBTask(&Generic_HID_Interface); USB_USBTask(); } } +void OpenLogFile(void) +{ + char LogFileName[12]; + + /* Get the current date for the filename as "DDMMYY.csv" */ + uint8_t Day, Month, Year; + DS1307_GetDate(&Day, &Month, &Year); + sprintf(LogFileName, "%02d%02d%02d.csv", Day, Month, Year); + + /* Mount the storage device, open the file */ + f_mount(0, &DiskFATState); + f_open(&TempLogFile, LogFileName, FA_OPEN_ALWAYS | FA_WRITE); + f_lseek(&TempLogFile, TempLogFile.fsize); +} + +void CloseLogFile(void) +{ + /* Sync any data waiting to be written, unmount the storage device */ + f_sync(&TempLogFile); + f_close(&TempLogFile); +} + /** Configures the board hardware and chip peripherals for the demo's functionality. */ void SetupHardware(void) { @@ -133,9 +197,9 @@ void SetupHardware(void) Dataflash_Init(); USB_Init(); - /* 10ms interval timer configuration */ - OCR1A = (((F_CPU / 1024) / 100) - 1); - TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); // CTC mode, Fcpu/1024 speed + /* 500ms logging interval timer configuration */ + OCR1A = ((F_CPU / 1024) / 2); + TCCR1B = (1 << WGM12) | (1 << CS12) | (1 << CS10); TIMSK1 = (1 << OCIE1A); /* Clear Dataflash sector protections, if enabled */ @@ -148,7 +212,7 @@ void EVENT_USB_Device_Connect(void) LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING); /* Close the log file so that the host has exclusive filesystem access */ - f_close(&TempLogFile); + CloseLogFile(); } /** Event handler for the library USB Disconnection event. */ @@ -156,11 +220,8 @@ void EVENT_USB_Device_Disconnect(void) { LEDs_SetAllLEDs(LEDMASK_USB_NOTREADY); - /* When disconnected from the host, re-open log file so we can resume logging */ - f_mount(0, &DiskFATState); - f_open(&TempLogFile, LOG_FILENAME, FA_OPEN_ALWAYS | FA_WRITE); - f_lseek(&TempLogFile, TempLogFile.fsize); - f_printf(&TempLogFile, "===========================\r\n"); + /* Mount and open the log file on the dataflash FAT partition */ + OpenLogFile(); } /** Event handler for the library USB Configuration Changed event. */ @@ -170,12 +231,16 @@ void EVENT_USB_Device_ConfigurationChanged(void) if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface))) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); + + if (!(HID_Device_ConfigureEndpoints(&Generic_HID_Interface))) + LEDs_SetAllLEDs(LEDMASK_USB_ERROR); } /** Event handler for the library USB Unhandled Control Request event. */ void EVENT_USB_Device_UnhandledControlRequest(void) { MS_Device_ProcessControlRequest(&Disk_MS_Interface); + HID_Device_ProcessControlRequest(&Generic_HID_Interface); } /** Mass Storage class driver callback function the reception of SCSI commands from the host, which must be processed. @@ -192,3 +257,53 @@ bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* MSInterfa return CommandSuccess; } + +/** HID class driver callback function for the creation of HID reports to the host. + * + * \param[in] HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param[in,out] ReportID Report ID requested by the host if non-zero, otherwise callback should set to the generated report ID + * \param[in] ReportType Type of the report to create, either REPORT_ITEM_TYPE_In or REPORT_ITEM_TYPE_Feature + * \param[out] ReportData Pointer to a buffer where the created report should be stored + * \param[out] ReportSize Number of bytes written in the report (or zero if no report is to be sent + * + * \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent + */ +bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, + const uint8_t ReportType, void* ReportData, uint16_t* ReportSize) +{ + Device_Report_t* ReportParams = (Device_Report_t*)ReportData; + + DS1307_GetDate(&ReportParams->Day, &ReportParams->Month, &ReportParams->Year); + DS1307_GetTime(&ReportParams->Hour, &ReportParams->Minute, &ReportParams->Second); + + ReportParams->LogInterval500MS = LoggingInterval500MS_SRAM; + + *ReportSize = sizeof(Device_Report_t); + return true; +} + +/** HID class driver callback function for the processing of HID reports from the host. + * + * \param[in] HIDInterfaceInfo Pointer to the HID class interface configuration structure being referenced + * \param[in] ReportID Report ID of the received report from the host + * \param[in] ReportData Pointer to a buffer where the created report has been stored + * \param[in] ReportSize Size in bytes of the received HID report + */ +void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, + const void* ReportData, const uint16_t ReportSize) +{ + Device_Report_t* ReportParams = (Device_Report_t*)ReportData; + + GPIOR0 = ReportParams->Day; + GPIOR1 = ReportParams->Month; + GPIOR2 = ReportParams->Year; + + DS1307_SetDate(ReportParams->Day, ReportParams->Month, ReportParams->Year); + DS1307_SetTime(ReportParams->Hour, ReportParams->Minute, ReportParams->Second); + + if (LoggingInterval500MS_SRAM != ReportParams->LogInterval500MS) + { + LoggingInterval500MS_SRAM = ReportParams->LogInterval500MS; + eeprom_write_byte(&LoggingInterval500MS_EEPROM, LoggingInterval500MS_SRAM); + } +} diff --git a/Projects/TemperatureDataLogger/TempDataLogger.h b/Projects/TemperatureDataLogger/TempDataLogger.h index b9d1b9114..ee10a0971 100644 --- a/Projects/TemperatureDataLogger/TempDataLogger.h +++ b/Projects/TemperatureDataLogger/TempDataLogger.h @@ -40,12 +40,14 @@ #include <avr/io.h> #include <avr/wdt.h> #include <avr/power.h> - + #include <stdio.h> + #include "Descriptors.h" #include "Lib/SCSI.h" #include "Lib/DataflashManager.h" #include "Lib/FATFs/ff.h" + #include "Lib/DS1307.h" #include <LUFA/Version.h> #include <LUFA/Drivers/Board/LEDs.h> @@ -53,6 +55,7 @@ #include <LUFA/Drivers/Peripheral/ADC.h> #include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/Class/MassStorage.h> + #include <LUFA/Drivers/USB/Class/HID.h> /* Macros: */ /** LED mask for the library LED driver, to indicate that the USB interface is not ready. */ @@ -76,8 +79,24 @@ /** Data log interval between samples, in tens of milliseconds */ #define LOG_INTERVAL_10MS 1000 + /* Type Defines: */ + typedef struct + { + uint8_t Day; + uint8_t Month; + uint8_t Year; + + uint8_t Hour; + uint8_t Minute; + uint8_t Second; + + uint8_t LogInterval500MS; + } Device_Report_t; + /* Function Prototypes: */ void SetupHardware(void); + void OpenLogFile(void); + void CloseLogFile(void); void EVENT_USB_Device_Connect(void); void EVENT_USB_Device_Disconnect(void); @@ -85,5 +104,9 @@ void EVENT_USB_Device_UnhandledControlRequest(void); bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* MSInterfaceInfo); + bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, + const uint8_t ReportType, void* ReportData, uint16_t* ReportSize); + void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, + const void* ReportData, const uint16_t ReportSize); #endif diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp.sln b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp.sln new file mode 100644 index 000000000..f3fbdb2cf --- /dev/null +++ b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TempLoggerHostApp", "TempLoggerHostApp\TempLoggerHostApp.csproj", "{A2D66069-8CF9-4104-828C-49A73D7DB5D1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {A2D66069-8CF9-4104-828C-49A73D7DB5D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2D66069-8CF9-4104-828C-49A73D7DB5D1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2D66069-8CF9-4104-828C-49A73D7DB5D1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2D66069-8CF9-4104-828C-49A73D7DB5D1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp.suo b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp.suo new file mode 100644 index 0000000000000000000000000000000000000000..647c7e68a7d5f2071f9ec436be891da64d469e33 GIT binary patch literal 17408 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 E05OX^VgLXD literal 0 HcmV?d00001 diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.Designer.cs b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.Designer.cs new file mode 100644 index 000000000..c6b106f98 --- /dev/null +++ b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.Designer.cs @@ -0,0 +1,181 @@ +namespace Project1HostApp +{ + partial class frmDataloggerSettings + { + /// <summary> + /// Required designer variable. + /// </summary> + private System.ComponentModel.IContainer components = null; + + /// <summary> + /// Clean up any resources being used. + /// </summary> + /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// <summary> + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// </summary> + private void InitializeComponent() + { + this.btnSetValues = new System.Windows.Forms.Button(); + this.dtpTime = new System.Windows.Forms.DateTimePicker(); + this.lblTime = new System.Windows.Forms.Label(); + this.lblLoggingInterval = new System.Windows.Forms.Label(); + this.nudLogInterval = new System.Windows.Forms.NumericUpDown(); + this.lblSeconds = new System.Windows.Forms.Label(); + this.btnGetValues = new System.Windows.Forms.Button(); + this.lblDate = new System.Windows.Forms.Label(); + this.dtpDate = new System.Windows.Forms.DateTimePicker(); + ((System.ComponentModel.ISupportInitialize)(this.nudLogInterval)).BeginInit(); + this.SuspendLayout(); + // + // btnSetValues + // + this.btnSetValues.Location = new System.Drawing.Point(168, 136); + this.btnSetValues.Name = "btnSetValues"; + this.btnSetValues.Size = new System.Drawing.Size(90, 35); + this.btnSetValues.TabIndex = 0; + this.btnSetValues.Text = "Set Values"; + this.btnSetValues.UseVisualStyleBackColor = true; + this.btnSetValues.Click += new System.EventHandler(this.btnSetValues_Click); + // + // dtpTime + // + this.dtpTime.CustomFormat = ""; + this.dtpTime.Format = System.Windows.Forms.DateTimePickerFormat.Time; + this.dtpTime.Location = new System.Drawing.Point(148, 61); + this.dtpTime.Name = "dtpTime"; + this.dtpTime.ShowUpDown = true; + this.dtpTime.Size = new System.Drawing.Size(110, 20); + this.dtpTime.TabIndex = 1; + // + // lblTime + // + this.lblTime.AutoSize = true; + this.lblTime.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblTime.Location = new System.Drawing.Point(51, 67); + this.lblTime.Name = "lblTime"; + this.lblTime.Size = new System.Drawing.Size(82, 13); + this.lblTime.TabIndex = 2; + this.lblTime.Text = "Device Time:"; + // + // lblLoggingInterval + // + this.lblLoggingInterval.AutoSize = true; + this.lblLoggingInterval.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblLoggingInterval.Location = new System.Drawing.Point(30, 101); + this.lblLoggingInterval.Name = "lblLoggingInterval"; + this.lblLoggingInterval.Size = new System.Drawing.Size(103, 13); + this.lblLoggingInterval.TabIndex = 3; + this.lblLoggingInterval.Text = "Logging Interval:"; + // + // nudLogInterval + // + this.nudLogInterval.Location = new System.Drawing.Point(148, 94); + this.nudLogInterval.Maximum = new decimal(new int[] { + 60, + 0, + 0, + 0}); + this.nudLogInterval.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.nudLogInterval.Name = "nudLogInterval"; + this.nudLogInterval.Size = new System.Drawing.Size(51, 20); + this.nudLogInterval.TabIndex = 5; + this.nudLogInterval.Value = new decimal(new int[] { + 5, + 0, + 0, + 0}); + // + // lblSeconds + // + this.lblSeconds.AutoSize = true; + this.lblSeconds.Location = new System.Drawing.Point(209, 101); + this.lblSeconds.Name = "lblSeconds"; + this.lblSeconds.Size = new System.Drawing.Size(49, 13); + this.lblSeconds.TabIndex = 6; + this.lblSeconds.Text = "Seconds"; + // + // btnGetValues + // + this.btnGetValues.Location = new System.Drawing.Point(30, 136); + this.btnGetValues.Name = "btnGetValues"; + this.btnGetValues.Size = new System.Drawing.Size(90, 35); + this.btnGetValues.TabIndex = 7; + this.btnGetValues.Text = "Get Values"; + this.btnGetValues.UseVisualStyleBackColor = true; + this.btnGetValues.Click += new System.EventHandler(this.btnGetValues_Click); + // + // lblDate + // + this.lblDate.AutoSize = true; + this.lblDate.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblDate.Location = new System.Drawing.Point(51, 33); + this.lblDate.Name = "lblDate"; + this.lblDate.Size = new System.Drawing.Size(82, 13); + this.lblDate.TabIndex = 8; + this.lblDate.Text = "Device Date:"; + // + // dtpDate + // + this.dtpDate.CustomFormat = "dd/MM/yyyy"; + this.dtpDate.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpDate.Location = new System.Drawing.Point(148, 27); + this.dtpDate.Name = "dtpDate"; + this.dtpDate.Size = new System.Drawing.Size(110, 20); + this.dtpDate.TabIndex = 9; + // + // frmDataloggerSettings + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(300, 197); + this.Controls.Add(this.dtpDate); + this.Controls.Add(this.lblDate); + this.Controls.Add(this.btnGetValues); + this.Controls.Add(this.lblSeconds); + this.Controls.Add(this.nudLogInterval); + this.Controls.Add(this.lblLoggingInterval); + this.Controls.Add(this.lblTime); + this.Controls.Add(this.dtpTime); + this.Controls.Add(this.btnSetValues); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "frmDataloggerSettings"; + this.Text = "DataLogger"; + this.Load += new System.EventHandler(this.frmDataloggerSettings_Load); + ((System.ComponentModel.ISupportInitialize)(this.nudLogInterval)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btnSetValues; + private System.Windows.Forms.DateTimePicker dtpTime; + private System.Windows.Forms.Label lblTime; + private System.Windows.Forms.Label lblLoggingInterval; + private System.Windows.Forms.NumericUpDown nudLogInterval; + private System.Windows.Forms.Label lblSeconds; + private System.Windows.Forms.Button btnGetValues; + private System.Windows.Forms.Label lblDate; + private System.Windows.Forms.DateTimePicker dtpDate; + } +} + diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.cs b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.cs new file mode 100644 index 000000000..370dfbd69 --- /dev/null +++ b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.cs @@ -0,0 +1,172 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Hid; + +namespace Project1HostApp +{ + public partial class frmDataloggerSettings : Form + { + private const int DEVICE_VID = 0x03EB; + private const int DEVICE_PID = 0xFAFA; + + private struct Device_Report_t + { + public Byte Day; + public Byte Month; + public Byte Year; + + public Byte Hour; + public Byte Minute; + public Byte Second; + + public Byte LogInterval500MS; + + public Byte[] ToReport() + { + Byte[] Report = new Byte[7]; + + Report[0] = this.Day; + Report[1] = this.Month; + Report[2] = this.Year; + Report[3] = this.Hour; + Report[4] = this.Minute; + Report[5] = this.Second; + Report[6] = this.LogInterval500MS; + + return Report; + } + + public void FromReport(Byte[] Report) + { + this.Day = Report[0]; + this.Month = Report[1]; + this.Year = Report[2]; + this.Hour = Report[3]; + this.Minute = Report[4]; + this.Second = Report[5]; + this.LogInterval500MS = Report[6]; + } + }; + + private IDevice GetDeviceConnection() + { + IDevice[] ConnectedDevices = DeviceFactory.Enumerate(DEVICE_VID, DEVICE_PID); + IDevice ConnectionHandle = null; + + if (ConnectedDevices.Count() > 0) + ConnectionHandle = ConnectedDevices[0]; + else + return null; + + // Fix report handle under Windows + if (ConnectionHandle is Hid.Win32.Win32DeviceSet) + { + ((Hid.Win32.Win32DeviceSet)ConnectionHandle).AddDevice(0x00, + ((Hid.Win32.Win32DeviceSet)ConnectionHandle).UnallocatedDevices[0]); + } + + return ConnectionHandle; + } + + public frmDataloggerSettings() + { + InitializeComponent(); + } + + private void btnSetValues_Click(object sender, EventArgs e) + { + IDevice ConnectionHandle = GetDeviceConnection(); + + if (ConnectionHandle == null) + { + MessageBox.Show("Error: Cannot connect to DataLogger device."); + return; + } + + Device_Report_t DeviceReport = new Device_Report_t(); + DeviceReport.Day = (byte)dtpDate.Value.Day; + DeviceReport.Month = (byte)dtpDate.Value.Month; + DeviceReport.Year = (byte)((dtpDate.Value.Year < 2000) ? 0 : (dtpDate.Value.Year - 2000)); + DeviceReport.Hour = (byte)dtpTime.Value.Hour; + DeviceReport.Minute = (byte)dtpTime.Value.Minute; + DeviceReport.Second = (byte)dtpTime.Value.Second; + DeviceReport.LogInterval500MS = (byte)(nudLogInterval.Value * 2); + + try + { + ConnectionHandle.Write(0x00, DeviceReport.ToReport()); + MessageBox.Show("Device parameters updated sucessfully."); + } + catch (Exception ex) + { + MessageBox.Show("Error: " + ex.Message); + } + } + + private void btnGetValues_Click(object sender, EventArgs e) + { + IDevice ConnectionHandle = GetDeviceConnection(); + + if (ConnectionHandle == null) + { + MessageBox.Show("Error: Cannot connect to DataLogger device."); + return; + } + + Device_Report_t DeviceReport = new Device_Report_t(); + + try + { + Byte[] Report = new Byte[7]; + + ConnectionHandle.Read(0x00, Report); + DeviceReport.FromReport(Report); + + try + { + dtpDate.Value = new DateTime( + (2000 + DeviceReport.Year), + DeviceReport.Month, + DeviceReport.Day); + + dtpTime.Value = new DateTime( + DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, + DeviceReport.Hour, + DeviceReport.Minute, + DeviceReport.Second); + } + catch (Exception ex) + { + dtpDate.Value = DateTime.Now; + dtpTime.Value = DateTime.Now; + } + + try + { + nudLogInterval.Value = (DeviceReport.LogInterval500MS / 2); + } + catch (Exception ex) + { + nudLogInterval.Value = nudLogInterval.Minimum; + } + + MessageBox.Show("Device parameters retrieved sucessfully."); + } + catch (Exception ex) + { + MessageBox.Show("Error: " + ex.Message); + } + } + + private void frmDataloggerSettings_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.resx b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.resx new file mode 100644 index 000000000..ff31a6db5 --- /dev/null +++ b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/DataLoggerSettings.resx @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 2.0 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">2.0</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + <value>[base64 mime encoded serialized .NET Framework object]</value> + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> + <comment>This is a comment</comment> + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="metadata"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" use="required" type="xsd:string" /> + <xsd:attribute name="type" type="xsd:string" /> + <xsd:attribute name="mimetype" type="xsd:string" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:attribute name="alias" type="xsd:string" /> + <xsd:attribute name="name" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + <xsd:attribute ref="xml:space" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>2.0</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> +</root> \ No newline at end of file diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Linux.dll b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Linux.dll new file mode 100644 index 0000000000000000000000000000000000000000..4c19edd212c44e0c785bcd621e3d290e79159d83 GIT binary patch literal 9216 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 Z0J#<t4`542BB20TGr(jp5<NfaX8?DaK9~Ri literal 0 HcmV?d00001 diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Net.dll b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Net.dll new file mode 100644 index 0000000000000000000000000000000000000000..2a7112fc090f3a60ad10d974f4771077612ca61e GIT binary patch literal 24576 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 PMnhmU1V%%EU<d#JYQJz# literal 0 HcmV?d00001 diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Win32.dll b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Hid.Win32.dll new file mode 100644 index 0000000000000000000000000000000000000000..3693c6ca04e053021ad62856d2b60034e8085d86 GIT binary patch literal 94208 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 literal 0 HcmV?d00001 diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Program.cs b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Program.cs new file mode 100644 index 000000000..dc818c822 --- /dev/null +++ b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/Program.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; + +namespace Project1HostApp +{ + static class Program + { + /// <summary> + /// The main entry point for the application. + /// </summary> + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new frmDataloggerSettings()); + } + } +} diff --git a/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/TempLoggerHostApp.csproj b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/TempLoggerHostApp.csproj new file mode 100644 index 000000000..e3b08928f --- /dev/null +++ b/Projects/TemperatureDataLogger/TempLoggerHostApp/TempLoggerHostApp/TempLoggerHostApp.csproj @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>9.0.21022</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{A2D66069-8CF9-4104-828C-49A73D7DB5D1}</ProjectGuid> + <OutputType>WinExe</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>TemperatureLoggerHostApp</RootNamespace> + <AssemblyName>TemperatureLoggerHostApp</AssemblyName> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + <FileAlignment>512</FileAlignment> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="Hid.Net, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>.\Hid.Net.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Core"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Xml.Linq"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data.DataSetExtensions"> + <RequiredTargetFramework>3.5</RequiredTargetFramework> + </Reference> + <Reference Include="System.Data" /> + <Reference Include="System.Deployment" /> + <Reference Include="System.Drawing" /> + <Reference Include="System.Windows.Forms" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="DataLoggerSettings.cs"> + <SubType>Form</SubType> + </Compile> + <Compile Include="DataLoggerSettings.Designer.cs"> + <DependentUpon>DataLoggerSettings.cs</DependentUpon> + </Compile> + <Compile Include="Program.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + <EmbeddedResource Include="DataLoggerSettings.resx"> + <DependentUpon>DataLoggerSettings.cs</DependentUpon> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Properties\Resources.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>Resources.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> + <Compile Include="Properties\Resources.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Resources.resx</DependentUpon> + <DesignTime>True</DesignTime> + </Compile> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <Compile Include="Properties\Settings.Designer.cs"> + <AutoGen>True</AutoGen> + <DependentUpon>Settings.settings</DependentUpon> + <DesignTimeSharedInput>True</DesignTimeSharedInput> + </Compile> + </ItemGroup> + <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> +</Project> \ No newline at end of file diff --git a/Projects/TemperatureDataLogger/TemperatureDataLogger.txt b/Projects/TemperatureDataLogger/TemperatureDataLogger.txt index d31e24f36..3e13fd385 100644 --- a/Projects/TemperatureDataLogger/TemperatureDataLogger.txt +++ b/Projects/TemperatureDataLogger/TemperatureDataLogger.txt @@ -24,12 +24,14 @@ * <td>Device</td> * </tr> * <tr> - * <td><b>USB Class:</b></td> + * <td><b>USB Classes:</b></td> * <td>Mass Storage Device</td> + * <td>Human Interface Device</td> * </tr> * <tr> - * <td><b>USB Subclass:</b></td> + * <td><b>USB Subclasses:</b></td> * <td>Bulk-Only Transport</td> + * <td>Keyboard Subclass</td> * </tr> * <tr> * <td><b>Relevant Standards:</b></td> @@ -37,6 +39,7 @@ * <td>USB Bulk-Only Transport Standard</td> * <td>SCSI Primary Commands Specification</td> * <td>SCSI Block Commands Specification</td> + * <td>USBIF HID Specification, USBIF HID Usage Tables</td> * </tr> * <tr> * <td><b>Usable Speeds:</b></td> @@ -49,10 +52,12 @@ * Temperature Data Logger project. This project is a very basic USB data logger for the current temperature as reported by * the board's temperature sensor, writing the temperature to a file stored on the board's Dataflash in a FAT filesystem * each time a specified interval elapses. When inserted into a PC, the datalogger will appear as a standard USB Mass Storage - * device with a single text file, which contains the logged data. + * device with a single text file, which contains the logged data. Files are named according to the current date when the + * logging commences. * - * Currently there is no timestamp associated with the logged data; this project can be extended by the addition of a Real - * Time Clock chip to retain the current time/date which could be stored along with each sample. + * A DS1307 or compatible RTC IC is designed to be attached to the AVR's TWI bus, for the management of timestamps on the + * sampled data. This project will not function correctly if the RTC chip is omitted unless the DUMMY_RTC compile time token + * is specified - see \ref SSec_Options. * * Due to the host's need for exclusive access to the filesystem, the device will not log samples while connected to a host. * For the logger to store data, the Dataflash must first be formatted by the host so that it contains a valid FAT filesystem. @@ -68,16 +73,10 @@ * <td><b>Description:</b></td> * </tr> * <tr> - * <td>LOG_FILENAME</td> - * <td>TempDataLogger.h</td> - * <td>Filename of the log file to write to on the device's FAT filesystem.</td> - * </tr> - * <tr> - * <td>LOG_INTERVAL_10MS</td> - * <td>TempDataLogger.h</td> - * <td>Time between each data sample, in tens of milliseconds. Each time this period elapses, a - * temperature sample is taken and the result stored to the Dataflash's FAT filesystem. - * </td> + * <td>DUMMY_RTC</td> + * <td>Makefile CDEFS</td> + * <td>When a DS1307 RTC chip is not fitted, this token can be defined to make the demo assume a 1/1/1 01:01:01 date/time + * stamp at all times, effectively transforming the project into a basic data logger with no specified sample times.</td> * </tr> * </table> */ diff --git a/Projects/TemperatureDataLogger/makefile b/Projects/TemperatureDataLogger/makefile index 1e495526c..ab29bb1be 100644 --- a/Projects/TemperatureDataLogger/makefile +++ b/Projects/TemperatureDataLogger/makefile @@ -130,6 +130,7 @@ SRC = $(TARGET).c \ Lib/SCSI.c \ Lib/FATFs/diskio.c \ Lib/FATFs/ff.c \ + Lib/DS1307.c \ $(LUFA_PATH)/LUFA/Drivers/Board/Temperature.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/DevChapter9.c \ $(LUFA_PATH)/LUFA/Drivers/USB/LowLevel/Endpoint.c \ @@ -143,6 +144,8 @@ SRC = $(TARGET).c \ $(LUFA_PATH)/LUFA/Drivers/USB/HighLevel/ConfigDescriptor.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/Device/MassStorage.c \ $(LUFA_PATH)/LUFA/Drivers/USB/Class/Host/MassStorage.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/Class/Device/HID.c \ + $(LUFA_PATH)/LUFA/Drivers/USB/Class/Host/HID.c \ # List C++ source files here. (C dependencies are automatically generated.) -- GitLab