aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2009-03-17 13:56:26 +0000
committerDean Camera <dean@fourwalledcubicle.com>2009-03-17 13:56:26 +0000
commitceb68a06408ca31d41cfb57eb3cd20268c1aed15 (patch)
tree5cff01a80b3235215682ac33996b5a2c0b84a6f9
parent904ad3abd2df55b8f7da2ab84cee13f087386958 (diff)
downloadlufa-ceb68a06408ca31d41cfb57eb3cd20268c1aed15.tar.gz
lufa-ceb68a06408ca31d41cfb57eb3cd20268c1aed15.tar.bz2
lufa-ceb68a06408ca31d41cfb57eb3cd20268c1aed15.zip
Corrected CDC class bootloader to fix a few bugs, changed address counter to store x2 addresses for convenience.
-rw-r--r--Bootloaders/CDC/BootloaderCDC.c203
-rw-r--r--Bootloaders/DFU/BootloaderDFU.c7
-rw-r--r--Bootloaders/DFU/BootloaderDFU.h7
-rw-r--r--Demos/Mouse/Mouse.c6
-rw-r--r--LUFA.pnproj2
-rw-r--r--LUFA/ChangeLog.txt1
6 files changed, 116 insertions, 110 deletions
diff --git a/Bootloaders/CDC/BootloaderCDC.c b/Bootloaders/CDC/BootloaderCDC.c
index 0add977ce..a1394bdfa 100644
--- a/Bootloaders/CDC/BootloaderCDC.c
+++ b/Bootloaders/CDC/BootloaderCDC.c
@@ -52,7 +52,7 @@ CDC_Line_Coding_t LineCoding = { BaudRateBPS: 9600,
* and is used when reading or writing to the AVRs memory (either FLASH or EEPROM depending on the issued
* command.)
*/
-uint16_t CurrAddress;
+uint32_t CurrAddress;
/** Flag to indicate if the bootloader should be running, or should exit and allow the application code to run
* via a soft reset. When cleared, the bootloader will abort, the USB interface will shut down and the application
@@ -223,101 +223,101 @@ static void ReadWriteMemoryBlock(const uint8_t Command)
MemoryType = FetchNextCommandByte();
- if ((MemoryType == 'E') || (MemoryType == 'F'))
+ if ((MemoryType != 'E') && (MemoryType != 'F'))
{
- /* Check if command is to read memory */
- if (Command == 'g')
- {
- /* Re-enable RWW section */
- boot_rww_enable();
+ /* Send error byte back to the host */
+ WriteNextResponseByte('?');
+
+ return;
+ }
- while (BlockSize--)
+ /* Check if command is to read memory */
+ if (Command == 'g')
+ {
+ /* Re-enable RWW section */
+ boot_rww_enable();
+
+ while (BlockSize--)
+ {
+ if (MemoryType == 'E')
{
- if (MemoryType == 'E')
- {
- /* Read the next EEPROM byte into the endpoint */
- WriteNextResponseByte(eeprom_read_byte((uint8_t*)CurrAddress));
+ /* Read the next EEPROM byte into the endpoint */
+ WriteNextResponseByte(eeprom_read_byte((uint8_t*)(uint16_t)(CurrAddress >> 1)));
- /* Increment the address counter after use */
- CurrAddress++;
- }
- else
- {
- /* Read the next FLASH byte from the current FLASH page */
- #if defined(RAMPZ)
- WriteNextResponseByte(pgm_read_byte_far(((uint32_t)CurrAddress << 1) + HighByte));
- #else
- WriteNextResponseByte(pgm_read_byte((CurrAddress << 1) + HighByte));
- #endif
-
- /* If both bytes in current word have been read, increment the address counter */
- if (HighByte)
- CurrAddress++;
-
- HighByte ^= 1;
- }
+ /* Increment the address counter after use */
+ CurrAddress += 2;
+ }
+ else
+ {
+ /* Read the next FLASH byte from the current FLASH page */
+ #if defined(RAMPZ)
+ WriteNextResponseByte(pgm_read_byte_far(CurrAddress | HighByte));
+ #else
+ WriteNextResponseByte(pgm_read_byte(CurrAddress | HighByte));
+ #endif
+
+ /* If both bytes in current word have been read, increment the address counter */
+ if (HighByte)
+ CurrAddress += 2;
+
+ HighByte = !HighByte;
}
}
- else
+ }
+ else
+ {
+ uint32_t PageStartAddress = CurrAddress;
+
+ if (MemoryType == 'F')
+ {
+ boot_page_erase(PageStartAddress);
+ boot_spm_busy_wait();
+ }
+
+ while (BlockSize--)
{
- uint32_t PageStartAddress = ((uint32_t)CurrAddress << 1);
-
if (MemoryType == 'F')
- {
- boot_page_erase(PageStartAddress);
- boot_spm_busy_wait();
- }
-
- while (BlockSize--)
- {
- if (MemoryType == 'E')
+ {
+ /* If both bytes in current word have been written, increment the address counter */
+ if (HighByte)
{
- /* Write the next EEPROM byte from the endpoint */
- eeprom_write_byte((uint8_t*)CurrAddress, FetchNextCommandByte());
+ /* Write the next FLASH word to the current FLASH page */
+ boot_page_fill(CurrAddress, ((FetchNextCommandByte() << 8) | LowByte));
/* Increment the address counter after use */
- CurrAddress++;
+ CurrAddress += 2;
+
+ HighByte = false;
}
else
- {
- /* If both bytes in current word have been written, increment the address counter */
- if (HighByte)
- {
- /* Write the next FLASH word to the current FLASH page */
- boot_page_fill(((uint32_t)CurrAddress << 1), ((FetchNextCommandByte() << 8) | LowByte));
-
- HighByte = false;
-
- /* Increment the address counter after use */
- CurrAddress++;
- }
- else
- {
- LowByte = FetchNextCommandByte();
-
- HighByte = true;
- }
+ {
+ LowByte = FetchNextCommandByte();
+
+ HighByte = true;
}
}
-
- /* If in FLASH programming mode, commit the page after writing */
- if (MemoryType == 'F')
+ else
{
- /* Commit the flash page to memory */
- boot_page_write(PageStartAddress);
-
- /* Wait until write operation has completed */
- boot_spm_busy_wait();
+ /* Write the next EEPROM byte from the endpoint */
+ eeprom_write_byte((uint8_t*)(uint16_t)(CurrAddress >> 1), FetchNextCommandByte());
+
+ /* Increment the address counter after use */
+ CurrAddress += 2;
}
-
- /* Send response byte back to the host */
- WriteNextResponseByte('\r');
}
- }
- else
- {
- /* Send error byte back to the host */
- WriteNextResponseByte('?');
+
+ /* If in FLASH programming mode, commit the page after writing */
+ if (MemoryType == 'F')
+ {
+ /* Commit the flash page to memory */
+ boot_page_write(PageStartAddress);
+
+ /* Wait until write operation has completed */
+ boot_spm_busy_wait();
+ }
+
+ /* Send response byte back to the host */
+ WriteNextResponseByte('\r');
}
}
@@ -402,8 +402,8 @@ TASK(CDC_Task)
else if (Command == 'A')
{
/* Set the current address to that given by the host */
- CurrAddress = (FetchNextCommandByte() << 8);
- CurrAddress |= FetchNextCommandByte();
+ CurrAddress = (FetchNextCommandByte() << 9);
+ CurrAddress |= (FetchNextCommandByte() << 1);
/* Send confirmation byte back to the host */
WriteNextResponseByte('\r');
@@ -426,9 +426,9 @@ TASK(CDC_Task)
}
else if (Command == 's')
{
- WriteNextResponseByte(boot_signature_byte_get(4));
- WriteNextResponseByte(boot_signature_byte_get(2));
- WriteNextResponseByte(boot_signature_byte_get(0));
+ WriteNextResponseByte(SIGNATURE_0);
+ WriteNextResponseByte(SIGNATURE_1);
+ WriteNextResponseByte(SIGNATURE_2);
}
else if (Command == 'b')
{
@@ -478,24 +478,29 @@ TASK(CDC_Task)
{
WriteNextResponseByte(boot_lock_fuse_bits_get(GET_EXTENDED_FUSE_BITS));
}
- else if ((Command == 'C') || (Command == 'c'))
- {
- if (Command == 'c')
- {
- /* Increment the address if the second byte is being written */
- CurrAddress++;
- }
-
+ else if (Command == 'C')
+ {
/* Write the high byte to the current flash page */
- boot_page_fill(((uint32_t)CurrAddress << 1), FetchNextCommandByte());
+ boot_page_fill(CurrAddress, FetchNextCommandByte());
+
+ /* Send confirmation byte back to the host */
+ WriteNextResponseByte('\r');
+ }
+ else if (Command == 'c')
+ {
+ /* Write the low byte to the current flash page */
+ boot_page_fill(CurrAddress | 1, FetchNextCommandByte());
+ /* Increment the address */
+ CurrAddress += 2;
+
/* Send confirmation byte back to the host */
WriteNextResponseByte('\r');
}
else if (Command == 'm')
{
/* Commit the flash page to memory */
- boot_page_write((uint32_t)CurrAddress << 1);
+ boot_page_write(CurrAddress);
/* Wait until write operation has completed */
boot_spm_busy_wait();
@@ -511,9 +516,9 @@ TASK(CDC_Task)
else if (Command == 'R')
{
#if defined(RAMPZ)
- uint16_t ProgramWord = pgm_read_word_far(((uint32_t)CurrAddress << 1));
+ uint16_t ProgramWord = pgm_read_word_far(CurrAddress);
#else
- uint16_t ProgramWord = pgm_read_word(CurrAddress << 1);
+ uint16_t ProgramWord = pgm_read_word(CurrAddress);
#endif
WriteNextResponseByte(ProgramWord >> 8);
@@ -522,10 +527,10 @@ TASK(CDC_Task)
else if (Command == 'D')
{
/* Read the byte from the endpoint and write it to the EEPROM */
- eeprom_write_byte((uint8_t*)CurrAddress, FetchNextCommandByte());
+ eeprom_write_byte((uint8_t*)(uint16_t)(CurrAddress >> 1), FetchNextCommandByte());
/* Increment the address after use */
- CurrAddress++;
+ CurrAddress += 2;
/* Send confirmation byte back to the host */
WriteNextResponseByte('\r');
@@ -533,10 +538,10 @@ TASK(CDC_Task)
else if (Command == 'd')
{
/* Read the EEPROM byte and write it to the endpoint */
- WriteNextResponseByte(eeprom_read_byte((uint8_t*)CurrAddress));
+ WriteNextResponseByte(eeprom_read_byte((uint8_t*)(uint16_t)(CurrAddress >> 1)));
/* Increment the address after use */
- CurrAddress++;
+ CurrAddress += 2;
}
else if (Command == 27)
{
diff --git a/Bootloaders/DFU/BootloaderDFU.c b/Bootloaders/DFU/BootloaderDFU.c
index 9fff20c12..6bea9b25f 100644
--- a/Bootloaders/DFU/BootloaderDFU.c
+++ b/Bootloaders/DFU/BootloaderDFU.c
@@ -32,13 +32,6 @@
*
* Main source file for the DFU class bootloader. This file contains the complete bootloader logic.
*/
-
-/** Configuration define. Define this token to true to case the bootloader to reject all memory commands
- * until a memory erase has been performed. When used in conjunction with the lockbits of the AVR, this
- * can protect the AVR's firmware from being dumped from a secured AVR. When false, memory operations are
- * allowed at any time.
- */
-#define SECURE_MODE false
#define INCLUDE_FROM_BOOTLOADER_C
#include "BootloaderDFU.h"
diff --git a/Bootloaders/DFU/BootloaderDFU.h b/Bootloaders/DFU/BootloaderDFU.h
index 21e8fce71..5a83403df 100644
--- a/Bootloaders/DFU/BootloaderDFU.h
+++ b/Bootloaders/DFU/BootloaderDFU.h
@@ -50,6 +50,13 @@
#include <LUFA/Drivers/USB/USB.h> // USB Functionality
/* Macros: */
+ /** Configuration define. Define this token to true to case the bootloader to reject all memory commands
+ * until a memory erase has been performed. When used in conjunction with the lockbits of the AVR, this
+ * can protect the AVR's firmware from being dumped from a secured AVR. When false, memory operations are
+ * allowed at any time.
+ */
+ #define SECURE_MODE false
+
/** Major bootloader version number. */
#define BOOTLOADER_VERSION_MINOR 2
diff --git a/Demos/Mouse/Mouse.c b/Demos/Mouse/Mouse.c
index da8a4a809..f8ec0a0f5 100644
--- a/Demos/Mouse/Mouse.c
+++ b/Demos/Mouse/Mouse.c
@@ -113,6 +113,9 @@ EVENT_HANDLER(USB_Connect)
/* Indicate USB enumerating */
UpdateStatus(Status_USBEnumerating);
+
+ /* Default to report protocol on connect */
+ UsingReportProtocol = true;
}
/** Event handler for the USB_Disconnect event. This indicates that the device is no longer connected to a host via
@@ -141,9 +144,6 @@ EVENT_HANDLER(USB_ConfigurationChanged)
/* Indicate USB connected and ready */
UpdateStatus(Status_USBReady);
- /* Default to report protocol on connect */
- UsingReportProtocol = true;
-
/* Start running mouse reporting task */
Scheduler_SetTaskMode(USB_Mouse_Report, TASK_RUN);
}
diff --git a/LUFA.pnproj b/LUFA.pnproj
index 8c68c4895..6af35f58a 100644
--- a/LUFA.pnproj
+++ b/LUFA.pnproj
@@ -1 +1 @@
-<Project name="LUFA"><Folder name="Demos"><Folder name="TestApp"><File path="Demos\TestApp\makefile"></File><File path="Demos\TestApp\TestApp.c"></File><File path="Demos\TestApp\TestApp.h"></File><File path="Demos\TestApp\TestEvents.c"></File><File path="Demos\TestApp\TestEvents.h"></File><File path="Demos\TestApp\Descriptors.c"></File><File path="Demos\TestApp\Descriptors.h"></File><File path="Demos\TestApp\TestApp.txt"></File><File path="Demos\TestApp\Doxygen.conf"></File></Folder><Folder name="Mouse"><File path="Demos\Mouse\makefile"></File><File path="Demos\Mouse\Descriptors.c"></File><File path="Demos\Mouse\Descriptors.h"></File><File path="Demos\Mouse\Mouse.h"></File><File path="Demos\Mouse\Mouse.c"></File><File path="Demos\Mouse\Mouse.txt"></File><File path="Demos\Mouse\Doxygen.conf"></File></Folder><Folder name="Keyboard"><File path="Demos\Keyboard\Descriptors.c"></File><File path="Demos\Keyboard\Keyboard.c"></File><File path="Demos\Keyboard\Descriptors.h"></File><File path="Demos\Keyboard\Keyboard.h"></File><File path="Demos\Keyboard\makefile"></File><File path="Demos\Keyboard\Keyboard.txt"></File><File path="Demos\Keyboard\Doxygen.conf"></File></Folder><Folder name="MouseHost"><File path="Demos\MouseHost\MouseHost.h"></File><File path="Demos\MouseHost\makefile"></File><File path="Demos\MouseHost\MouseHost.c"></File><File path="Demos\MouseHost\ConfigDescriptor.c"></File><File path="Demos\MouseHost\ConfigDescriptor.h"></File><File path="Demos\MouseHost\Doxygen.conf"></File><File path="Demos\MouseHost\MouseHost.txt"></File></Folder><Folder name="KeyboardHost"><File path="Demos\KeyboardHost\makefile"></File><File path="Demos\KeyboardHost\KeyboardHost.c"></File><File path="Demos\KeyboardHost\KeyboardHost.h"></File><File path="Demos\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\KeyboardHost\Doxygen.conf"></File><File path="Demos\KeyboardHost\KeyboardHost.txt"></File></Folder><Folder name="Joystick"><File path="Demos\Joystick\makefile"></File><File path="Demos\Joystick\Descriptors.c"></File><File path="Demos\Joystick\Descriptors.h"></File><File path="Demos\Joystick\Joystick.c"></File><File path="Demos\Joystick\Joystick.h"></File><File path="Demos\Joystick\Joystick.txt"></File><File path="Demos\Joystick\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Demos\CDC\makefile"></File><File path="Demos\CDC\CDC.c"></File><File path="Demos\CDC\CDC.h"></File><File path="Demos\CDC\Descriptors.c"></File><File path="Demos\CDC\Descriptors.h"></File><File path="Demos\CDC\CDC.txt"></File><File path="Demos\CDC\LUFA CDC.inf"></File><File path="Demos\CDC\Doxygen.conf"></File></Folder><Folder name="USBtoSerial"><File path="Demos\USBtoSerial\Descriptors.h"></File><File path="Demos\USBtoSerial\RingBuff.c"></File><File path="Demos\USBtoSerial\RingBuff.h"></File><File path="Demos\USBtoSerial\Descriptors.c"></File><File path="Demos\USBtoSerial\makefile"></File><File path="Demos\USBtoSerial\USBtoSerial.h"></File><File path="Demos\USBtoSerial\USBtoSerial.c"></File><File path="Demos\USBtoSerial\USBtoSerial.txt"></File><File path="Demos\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\USBtoSerial\Doxygen.conf"></File></Folder><Folder name="MassStorage"><File path="Demos\MassStorage\MassStorage.h"></File><File path="Demos\MassStorage\Descriptors.c"></File><File path="Demos\MassStorage\Descriptors.h"></File><File path="Demos\MassStorage\makefile"></File><File path="Demos\MassStorage\MassStorage.c"></File><File path="Demos\MassStorage\SCSI.h"></File><File path="Demos\MassStorage\SCSI.c"></File><File path="Demos\MassStorage\DataflashManager.h"></File><File path="Demos\MassStorage\SCSI_Codes.h"></File><File path="Demos\MassStorage\MassStorage.txt"></File><File path="Demos\MassStorage\DataflashManager.c"></File><File path="Demos\MassStorage\Doxygen.conf"></File></Folder><Folder name="KeyboardHostViaInt"><File path="Demos\KeyboardHostViaInt\makefile"></File><File path="Demos\KeyboardHostViaInt\KeyboardHostViaInt.c"></File><File path="Demos\KeyboardHostViaInt\KeyboardHostViaInt.h"></File><File path="Demos\KeyboardHostViaInt\ConfigDescriptor.c"></File><File path="Demos\KeyboardHostViaInt\ConfigDescriptor.h"></File><File path="Demos\KeyboardHostViaInt\Doxygen.conf"></File><File path="Demos\KeyboardHostViaInt\KeyboardHostViaInt.txt"></File></Folder><Folder name="MouseHostViaInt"><File path="Demos\MouseHostViaInt\MouseHostViaInt.h"></File><File path="Demos\MouseHostViaInt\makefile"></File><File path="Demos\MouseHostViaInt\MouseHostViaInt.c"></File><File path="Demos\MouseHostViaInt\ConfigDescriptor.c"></File><File path="Demos\MouseHostViaInt\ConfigDescriptor.h"></File><File path="Demos\MouseHostViaInt\Doxygen.conf"></File><File path="Demos\MouseHostViaInt\MouseHostViaInt.txt"></File></Folder><Folder name="AudioOutput"><File path="Demos\AudioOutput\makefile"></File><File path="Demos\AudioOutput\AudioOutput.c"></File><File path="Demos\AudioOutput\AudioOutput.h"></File><File path="Demos\AudioOutput\Descriptors.c"></File><File path="Demos\AudioOutput\Descriptors.h"></File><File path="Demos\AudioOutput\Doxygen.conf"></File><File path="Demos\AudioOutput\AudioOutput.txt"></File></Folder><Folder name="MassStorageHost"><File path="Demos\MassStorageHost\MassStorageHost.h"></File><File path="Demos\MassStorageHost\makefile"></File><File path="Demos\MassStorageHost\MassStorageHost.c"></File><File path="Demos\MassStorageHost\MassStoreCommands.c"></File><File path="Demos\MassStorageHost\MassStoreCommands.h"></File><File path="Demos\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\MassStorageHost\Doxygen.conf"></File><File path="Demos\MassStorageHost\SCSI_Codes.h"></File><File path="Demos\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="AudioInput"><File path="Demos\AudioInput\makefile"></File><File path="Demos\AudioInput\AudioInput.h"></File><File path="Demos\AudioInput\Descriptors.h"></File><File path="Demos\AudioInput\Descriptors.c"></File><File path="Demos\AudioInput\AudioInput.c"></File><File path="Demos\AudioInput\Doxygen.conf"></File><File path="Demos\AudioInput\AudioInput.txt"></File></Folder><Folder name="KeyboardViaInt"><File path="Demos\KeyboardViaInt\Descriptors.c"></File><File path="Demos\KeyboardViaInt\Descriptors.h"></File><File path="Demos\KeyboardViaInt\KeyboardViaInt.c"></File><File path="Demos\KeyboardViaInt\KeyboardViaInt.h"></File><File path="Demos\KeyboardViaInt\makefile"></File><File path="Demos\KeyboardViaInt\KeyboardViaInt.txt"></File><File path="Demos\KeyboardViaInt\Doxygen.conf"></File></Folder><Folder name="MouseViaInt"><File path="Demos\MouseViaInt\Descriptors.c"></File><File path="Demos\MouseViaInt\Descriptors.h"></File><File path="Demos\MouseViaInt\makefile"></File><File path="Demos\MouseViaInt\MouseViaInt.c"></File><File path="Demos\MouseViaInt\MouseViaInt.h"></File><File path="Demos\MouseViaInt\MouseViaInt.txt"></File><File path="Demos\MouseViaInt\Doxygen.conf"></File></Folder><Folder name="MouseFullInt"><File path="Demos\MouseFullInt\Descriptors.c"></File><File path="Demos\MouseFullInt\Descriptors.h"></File><File path="Demos\MouseFullInt\makefile"></File><File path="Demos\MouseFullInt\MouseFullInt.c"></File><File path="Demos\MouseFullInt\MouseFullInt.h"></File><File path="Demos\MouseFullInt\MouseFullInt.txt"></File><File path="Demos\MouseFullInt\Doxygen.conf"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\KeyboardHostWithParser\makefile"></File><File path="Demos\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\MouseHostWithParser\makefile"></File><File path="Demos\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\MouseHostWithParser\HIDReport.c"></File><File path="Demos\MouseHostWithParser\HIDReport.h"></File><File path="Demos\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\MouseHostWithParser\MouseHostWithParser.txt"></File></Folder><Folder name="MIDI"><File path="Demos\MIDI\Descriptors.c"></File><File path="Demos\MIDI\Descriptors.h"></File><File path="Demos\MIDI\makefile"></File><File path="Demos\MIDI\MIDI.c"></File><File path="Demos\MIDI\MIDI.h"></File><File path="Demos\MIDI\Doxygen.conf"></File><File path="Demos\MIDI\MIDI.txt"></File></Folder><Folder name="CDCHost"><File path="Demos\CDCHost\CDCHost.c"></File><File path="Demos\CDCHost\CDCHost.h"></File><File path="Demos\CDCHost\makefile"></File><File path="Demos\CDCHost\ConfigDescriptor.c"></File><File path="Demos\CDCHost\ConfigDescriptor.h"></File><File path="Demos\CDCHost\Doxygen.conf"></File><File path="Demos\CDCHost\CDCHost.txt"></File></Folder><Folder name="StillImageHost"><File path="Demos\StillImageHost\makefile"></File><File path="Demos\StillImageHost\PIMACodes.h"></File><File path="Demos\StillImageHost\StillImageCommands.c"></File><File path="Demos\StillImageHost\StillImageCommands.h"></File><File path="Demos\StillImageHost\StillImageHost.c"></File><File path="Demos\StillImageHost\StillImageHost.h"></File><File path="Demos\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\StillImageHost\Doxygen.conf"></File></Folder><Folder name="KeyboardFullInt"><File path="Demos\KeyboardFullInt\Descriptors.c"></File><File path="Demos\KeyboardFullInt\Descriptors.h"></File><File path="Demos\KeyboardFullInt\KeyboardFullInt.c"></File><File path="Demos\KeyboardFullInt\KeyboardFullInt.h"></File><File path="Demos\KeyboardFullInt\makefile"></File><File path="Demos\KeyboardFullInt\KeyboardFullInt.txt"></File><File path="Demos\KeyboardFullInt\Doxygen.conf"></File></Folder><Folder name="RNDISEthernet"><File path="Demos\RNDISEthernet\RNDIS.c"></File><File path="Demos\RNDISEthernet\Descriptors.c"></File><File path="Demos\RNDISEthernet\Webserver.h"></File><File path="Demos\RNDISEthernet\ARP.c"></File><File path="Demos\RNDISEthernet\ARP.h"></File><File path="Demos\RNDISEthernet\Descriptors.h"></File><File path="Demos\RNDISEthernet\DHCP.c"></File><File path="Demos\RNDISEthernet\DHCP.h"></File><File path="Demos\RNDISEthernet\Ethernet.c"></File><File path="Demos\RNDISEthernet\Ethernet.h"></File><File path="Demos\RNDISEthernet\EthernetProtocols.h"></File><File path="Demos\RNDISEthernet\ICMP.c"></File><File path="Demos\RNDISEthernet\ICMP.h"></File><File path="Demos\RNDISEthernet\IP.c"></File><File path="Demos\RNDISEthernet\IP.h"></File><File path="Demos\RNDISEthernet\makefile"></File><File path="Demos\RNDISEthernet\ProtocolDecoders.c"></File><File path="Demos\RNDISEthernet\ProtocolDecoders.h"></File><File path="Demos\RNDISEthernet\RNDIS.h"></File><File path="Demos\RNDISEthernet\RNDISEthernet.aps"></File><File path="Demos\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\RNDISEthernet\TCP.c"></File><File path="Demos\RNDISEthernet\TCP.h"></File><File path="Demos\RNDISEthernet\UDP.c"></File><File path="Demos\RNDISEthernet\UDP.h"></File><File path="Demos\RNDISEthernet\Webserver.c"></File><File path="Demos\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\RNDISEthernet\Doxygen.conf"></File><File path="Demos\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\RNDISEthernet\RNDISConstants.h"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\KeyboardMouse\Descriptors.c"></File><File path="Demos\KeyboardMouse\Descriptors.h"></File><File path="Demos\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\KeyboardMouse\makefile"></File><File path="Demos\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\KeyboardMouse\Doxygen.conf"></File></Folder><Folder name="DualCDC"><File path="Demos\DualCDC\Descriptors.c"></File><File path="Demos\DualCDC\Descriptors.h"></File><File path="Demos\DualCDC\makefile"></File><File path="Demos\DualCDC\DualCDC.c"></File><File path="Demos\DualCDC\DualCDC.h"></File><File path="Demos\DualCDC\DualCDC.txt"></File><File path="Demos\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\DualCDC\Doxygen.conf"></File></Folder><Folder name="BluetoothHost"><File path="Demos\BluetoothHost\makefile"></File><File path="Demos\BluetoothHost\BluetoothHost.c"></File><File path="Demos\BluetoothHost\BluetoothHost.h"></File><File path="Demos\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\BluetoothHost\DeviceDescriptor.h"></File><File path="Demos\BluetoothHost\BluetoothStack.c"></File><File path="Demos\BluetoothHost\BluetoothStack.h"></File><File path="Demos\BluetoothHost\BluetoothClassCodes.h"></File><File path="Demos\BluetoothHost\BluetoothHCICommands.h"></File><File path="Demos\BluetoothHost\BluetoothHCICommands.c"></File><File path="Demos\BluetoothHost\BluetoothACLPackets.c"></File><File path="Demos\BluetoothHost\BluetoothACLPackets.h"></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\ButtLoadTag.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\StdRequestType.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><File path="LUFA\Drivers\USB\LowLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\LowLevel\StreamCallbacks.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File></Folder><Folder name="Class"><File path="LUFA\Drivers\USB\Class\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\Class\ConfigDescriptor.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="AT90USBXXX"><Folder name="AT90USBXXX67"><File path="LUFA\Drivers\AT90USBXXX\AT90USBXXX67\ADC.h"></File></Folder><File path="LUFA\Drivers\AT90USBXXX\Serial_Stream.h"></File><File path="LUFA\Drivers\AT90USBXXX\ADC.h"></File><File path="LUFA\Drivers\AT90USBXXX\Serial.c"></File><File path="LUFA\Drivers\AT90USBXXX\Serial.h"></File><File path="LUFA\Drivers\AT90USBXXX\Serial_Stream.c"></File><File path="LUFA\Drivers\AT90USBXXX\SPI.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\HWB.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.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\HWB.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\HWB.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.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\HWB.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\HWB.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></Folder></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.h"></File><File path="LUFA\Scheduler\Scheduler.c"></File></Folder><Folder name="MemoryAllocator"><File path="LUFA\MemoryAllocator\DynAlloc.h"></File><File path="LUFA\MemoryAllocator\DynAlloc.c"></File></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\HWB.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\BuildingLinkableLibraries.txt"></File><File path="LUFA\GettingStarted.txt"></File><File path="LUFA\MainPage.txt"></File><File path="LUFA\SchedulerOverview.txt"></File><File path="LUFA\VIDAndPIDValues.txt"></File><File path="LUFA\ChangeLog.txt"></File><File path="LUFA\CompileTimeTokens.txt"></File><File path="LUFA\MigrationInformation.txt"></File><File path="LUFA\DirectorySummaries.txt"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\WritingBoardDrivers.txt"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\MagstripeHW.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\CircularBitBuffer.c"></File><File path="Projects\Magstripe\CircularBitBuffer.h"></File></Folder><Folder name="AVRISP_Programmer"><File path="Projects\AVRISP_Programmer\AVRISP_Firmware_Design.txt"></File><File path="Projects\AVRISP_Programmer\AVRISP_Programmer.c"></File><File path="Projects\AVRISP_Programmer\AVRISP_Programmer.h"></File><File path="Projects\AVRISP_Programmer\AVRISP_Programmer.txt"></File><File path="Projects\AVRISP_Programmer\Descriptors.c"></File><File path="Projects\AVRISP_Programmer\makefile"></File><File path="Projects\AVRISP_Programmer\Sample_Programming_Session.txt"></File><File path="Projects\AVRISP_Programmer\RingBuff.c"></File><File path="Projects\AVRISP_Programmer\RingBuff.h"></File><File path="Projects\AVRISP_Programmer\Descriptors.h"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File></Project> \ No newline at end of file
+<Project name="LUFA"><Folder name="Demos"><Folder name="TestApp"><File path="Demos\TestApp\makefile"></File><File path="Demos\TestApp\TestApp.c"></File><File path="Demos\TestApp\TestApp.h"></File><File path="Demos\TestApp\TestEvents.c"></File><File path="Demos\TestApp\TestEvents.h"></File><File path="Demos\TestApp\Descriptors.c"></File><File path="Demos\TestApp\Descriptors.h"></File><File path="Demos\TestApp\TestApp.txt"></File><File path="Demos\TestApp\Doxygen.conf"></File></Folder><Folder name="Mouse"><File path="Demos\Mouse\makefile"></File><File path="Demos\Mouse\Descriptors.c"></File><File path="Demos\Mouse\Descriptors.h"></File><File path="Demos\Mouse\Mouse.h"></File><File path="Demos\Mouse\Mouse.c"></File><File path="Demos\Mouse\Mouse.txt"></File><File path="Demos\Mouse\Doxygen.conf"></File></Folder><Folder name="Keyboard"><File path="Demos\Keyboard\Descriptors.c"></File><File path="Demos\Keyboard\Keyboard.c"></File><File path="Demos\Keyboard\Descriptors.h"></File><File path="Demos\Keyboard\Keyboard.h"></File><File path="Demos\Keyboard\makefile"></File><File path="Demos\Keyboard\Keyboard.txt"></File><File path="Demos\Keyboard\Doxygen.conf"></File></Folder><Folder name="MouseHost"><File path="Demos\MouseHost\MouseHost.h"></File><File path="Demos\MouseHost\makefile"></File><File path="Demos\MouseHost\MouseHost.c"></File><File path="Demos\MouseHost\ConfigDescriptor.c"></File><File path="Demos\MouseHost\ConfigDescriptor.h"></File><File path="Demos\MouseHost\Doxygen.conf"></File><File path="Demos\MouseHost\MouseHost.txt"></File></Folder><Folder name="KeyboardHost"><File path="Demos\KeyboardHost\makefile"></File><File path="Demos\KeyboardHost\KeyboardHost.c"></File><File path="Demos\KeyboardHost\KeyboardHost.h"></File><File path="Demos\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\KeyboardHost\Doxygen.conf"></File><File path="Demos\KeyboardHost\KeyboardHost.txt"></File></Folder><Folder name="Joystick"><File path="Demos\Joystick\makefile"></File><File path="Demos\Joystick\Descriptors.c"></File><File path="Demos\Joystick\Descriptors.h"></File><File path="Demos\Joystick\Joystick.c"></File><File path="Demos\Joystick\Joystick.h"></File><File path="Demos\Joystick\Joystick.txt"></File><File path="Demos\Joystick\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Demos\CDC\makefile"></File><File path="Demos\CDC\CDC.c"></File><File path="Demos\CDC\CDC.h"></File><File path="Demos\CDC\Descriptors.c"></File><File path="Demos\CDC\Descriptors.h"></File><File path="Demos\CDC\CDC.txt"></File><File path="Demos\CDC\LUFA CDC.inf"></File><File path="Demos\CDC\Doxygen.conf"></File></Folder><Folder name="USBtoSerial"><File path="Demos\USBtoSerial\Descriptors.h"></File><File path="Demos\USBtoSerial\RingBuff.c"></File><File path="Demos\USBtoSerial\RingBuff.h"></File><File path="Demos\USBtoSerial\Descriptors.c"></File><File path="Demos\USBtoSerial\makefile"></File><File path="Demos\USBtoSerial\USBtoSerial.h"></File><File path="Demos\USBtoSerial\USBtoSerial.c"></File><File path="Demos\USBtoSerial\USBtoSerial.txt"></File><File path="Demos\USBtoSerial\LUFA USBtoSerial.inf"></File><File path="Demos\USBtoSerial\Doxygen.conf"></File></Folder><Folder name="MassStorage"><File path="Demos\MassStorage\MassStorage.h"></File><File path="Demos\MassStorage\Descriptors.c"></File><File path="Demos\MassStorage\Descriptors.h"></File><File path="Demos\MassStorage\makefile"></File><File path="Demos\MassStorage\MassStorage.c"></File><File path="Demos\MassStorage\SCSI.h"></File><File path="Demos\MassStorage\SCSI.c"></File><File path="Demos\MassStorage\DataflashManager.h"></File><File path="Demos\MassStorage\SCSI_Codes.h"></File><File path="Demos\MassStorage\MassStorage.txt"></File><File path="Demos\MassStorage\DataflashManager.c"></File><File path="Demos\MassStorage\Doxygen.conf"></File></Folder><Folder name="KeyboardHostViaInt"><File path="Demos\KeyboardHostViaInt\makefile"></File><File path="Demos\KeyboardHostViaInt\KeyboardHostViaInt.c"></File><File path="Demos\KeyboardHostViaInt\KeyboardHostViaInt.h"></File><File path="Demos\KeyboardHostViaInt\ConfigDescriptor.c"></File><File path="Demos\KeyboardHostViaInt\ConfigDescriptor.h"></File><File path="Demos\KeyboardHostViaInt\Doxygen.conf"></File><File path="Demos\KeyboardHostViaInt\KeyboardHostViaInt.txt"></File></Folder><Folder name="MouseHostViaInt"><File path="Demos\MouseHostViaInt\MouseHostViaInt.h"></File><File path="Demos\MouseHostViaInt\makefile"></File><File path="Demos\MouseHostViaInt\MouseHostViaInt.c"></File><File path="Demos\MouseHostViaInt\ConfigDescriptor.c"></File><File path="Demos\MouseHostViaInt\ConfigDescriptor.h"></File><File path="Demos\MouseHostViaInt\Doxygen.conf"></File><File path="Demos\MouseHostViaInt\MouseHostViaInt.txt"></File></Folder><Folder name="AudioOutput"><File path="Demos\AudioOutput\makefile"></File><File path="Demos\AudioOutput\AudioOutput.c"></File><File path="Demos\AudioOutput\AudioOutput.h"></File><File path="Demos\AudioOutput\Descriptors.c"></File><File path="Demos\AudioOutput\Descriptors.h"></File><File path="Demos\AudioOutput\Doxygen.conf"></File><File path="Demos\AudioOutput\AudioOutput.txt"></File></Folder><Folder name="MassStorageHost"><File path="Demos\MassStorageHost\MassStorageHost.h"></File><File path="Demos\MassStorageHost\makefile"></File><File path="Demos\MassStorageHost\MassStorageHost.c"></File><File path="Demos\MassStorageHost\MassStoreCommands.c"></File><File path="Demos\MassStorageHost\MassStoreCommands.h"></File><File path="Demos\MassStorageHost\ConfigDescriptor.c"></File><File path="Demos\MassStorageHost\ConfigDescriptor.h"></File><File path="Demos\MassStorageHost\Doxygen.conf"></File><File path="Demos\MassStorageHost\SCSI_Codes.h"></File><File path="Demos\MassStorageHost\MassStorageHost.txt"></File></Folder><Folder name="AudioInput"><File path="Demos\AudioInput\makefile"></File><File path="Demos\AudioInput\AudioInput.h"></File><File path="Demos\AudioInput\Descriptors.h"></File><File path="Demos\AudioInput\Descriptors.c"></File><File path="Demos\AudioInput\AudioInput.c"></File><File path="Demos\AudioInput\Doxygen.conf"></File><File path="Demos\AudioInput\AudioInput.txt"></File></Folder><Folder name="KeyboardViaInt"><File path="Demos\KeyboardViaInt\Descriptors.c"></File><File path="Demos\KeyboardViaInt\Descriptors.h"></File><File path="Demos\KeyboardViaInt\KeyboardViaInt.c"></File><File path="Demos\KeyboardViaInt\KeyboardViaInt.h"></File><File path="Demos\KeyboardViaInt\makefile"></File><File path="Demos\KeyboardViaInt\KeyboardViaInt.txt"></File><File path="Demos\KeyboardViaInt\Doxygen.conf"></File></Folder><Folder name="MouseViaInt"><File path="Demos\MouseViaInt\Descriptors.c"></File><File path="Demos\MouseViaInt\Descriptors.h"></File><File path="Demos\MouseViaInt\makefile"></File><File path="Demos\MouseViaInt\MouseViaInt.c"></File><File path="Demos\MouseViaInt\MouseViaInt.h"></File><File path="Demos\MouseViaInt\MouseViaInt.txt"></File><File path="Demos\MouseViaInt\Doxygen.conf"></File></Folder><Folder name="MouseFullInt"><File path="Demos\MouseFullInt\Descriptors.c"></File><File path="Demos\MouseFullInt\Descriptors.h"></File><File path="Demos\MouseFullInt\makefile"></File><File path="Demos\MouseFullInt\MouseFullInt.c"></File><File path="Demos\MouseFullInt\MouseFullInt.h"></File><File path="Demos\MouseFullInt\MouseFullInt.txt"></File><File path="Demos\MouseFullInt\Doxygen.conf"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\KeyboardHostWithParser\makefile"></File><File path="Demos\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\MouseHostWithParser\makefile"></File><File path="Demos\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\MouseHostWithParser\HIDReport.c"></File><File path="Demos\MouseHostWithParser\HIDReport.h"></File><File path="Demos\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\MouseHostWithParser\MouseHostWithParser.txt"></File></Folder><Folder name="MIDI"><File path="Demos\MIDI\Descriptors.c"></File><File path="Demos\MIDI\Descriptors.h"></File><File path="Demos\MIDI\makefile"></File><File path="Demos\MIDI\MIDI.c"></File><File path="Demos\MIDI\MIDI.h"></File><File path="Demos\MIDI\Doxygen.conf"></File><File path="Demos\MIDI\MIDI.txt"></File></Folder><Folder name="CDCHost"><File path="Demos\CDCHost\CDCHost.c"></File><File path="Demos\CDCHost\CDCHost.h"></File><File path="Demos\CDCHost\makefile"></File><File path="Demos\CDCHost\ConfigDescriptor.c"></File><File path="Demos\CDCHost\ConfigDescriptor.h"></File><File path="Demos\CDCHost\Doxygen.conf"></File><File path="Demos\CDCHost\CDCHost.txt"></File></Folder><Folder name="StillImageHost"><File path="Demos\StillImageHost\makefile"></File><File path="Demos\StillImageHost\PIMACodes.h"></File><File path="Demos\StillImageHost\StillImageCommands.c"></File><File path="Demos\StillImageHost\StillImageCommands.h"></File><File path="Demos\StillImageHost\StillImageHost.c"></File><File path="Demos\StillImageHost\StillImageHost.h"></File><File path="Demos\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\StillImageHost\Doxygen.conf"></File></Folder><Folder name="KeyboardFullInt"><File path="Demos\KeyboardFullInt\Descriptors.c"></File><File path="Demos\KeyboardFullInt\Descriptors.h"></File><File path="Demos\KeyboardFullInt\KeyboardFullInt.c"></File><File path="Demos\KeyboardFullInt\KeyboardFullInt.h"></File><File path="Demos\KeyboardFullInt\makefile"></File><File path="Demos\KeyboardFullInt\KeyboardFullInt.txt"></File><File path="Demos\KeyboardFullInt\Doxygen.conf"></File></Folder><Folder name="RNDISEthernet"><File path="Demos\RNDISEthernet\RNDIS.c"></File><File path="Demos\RNDISEthernet\Descriptors.c"></File><File path="Demos\RNDISEthernet\Webserver.h"></File><File path="Demos\RNDISEthernet\ARP.c"></File><File path="Demos\RNDISEthernet\ARP.h"></File><File path="Demos\RNDISEthernet\Descriptors.h"></File><File path="Demos\RNDISEthernet\DHCP.c"></File><File path="Demos\RNDISEthernet\DHCP.h"></File><File path="Demos\RNDISEthernet\Ethernet.c"></File><File path="Demos\RNDISEthernet\Ethernet.h"></File><File path="Demos\RNDISEthernet\EthernetProtocols.h"></File><File path="Demos\RNDISEthernet\ICMP.c"></File><File path="Demos\RNDISEthernet\ICMP.h"></File><File path="Demos\RNDISEthernet\IP.c"></File><File path="Demos\RNDISEthernet\IP.h"></File><File path="Demos\RNDISEthernet\makefile"></File><File path="Demos\RNDISEthernet\ProtocolDecoders.c"></File><File path="Demos\RNDISEthernet\ProtocolDecoders.h"></File><File path="Demos\RNDISEthernet\RNDIS.h"></File><File path="Demos\RNDISEthernet\RNDISEthernet.aps"></File><File path="Demos\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\RNDISEthernet\TCP.c"></File><File path="Demos\RNDISEthernet\TCP.h"></File><File path="Demos\RNDISEthernet\UDP.c"></File><File path="Demos\RNDISEthernet\UDP.h"></File><File path="Demos\RNDISEthernet\Webserver.c"></File><File path="Demos\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\RNDISEthernet\Doxygen.conf"></File><File path="Demos\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\RNDISEthernet\RNDISConstants.h"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\KeyboardMouse\Descriptors.c"></File><File path="Demos\KeyboardMouse\Descriptors.h"></File><File path="Demos\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\KeyboardMouse\makefile"></File><File path="Demos\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\KeyboardMouse\Doxygen.conf"></File></Folder><Folder name="DualCDC"><File path="Demos\DualCDC\Descriptors.c"></File><File path="Demos\DualCDC\Descriptors.h"></File><File path="Demos\DualCDC\makefile"></File><File path="Demos\DualCDC\DualCDC.c"></File><File path="Demos\DualCDC\DualCDC.h"></File><File path="Demos\DualCDC\DualCDC.txt"></File><File path="Demos\DualCDC\LUFA DualCDC.inf"></File><File path="Demos\DualCDC\Doxygen.conf"></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\ButtLoadTag.h"></File><File path="LUFA\Common\BoardTypes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><File path="LUFA\Drivers\USB\LowLevel\HostChapter9.h"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.c"></File><File path="LUFA\Drivers\USB\LowLevel\LowLevel.h"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.h"></File><File path="LUFA\Drivers\USB\LowLevel\StdRequestType.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><File path="LUFA\Drivers\USB\LowLevel\USBMode.h"></File><File path="LUFA\Drivers\USB\LowLevel\StreamCallbacks.h"></File></Folder><Folder name="HighLevel"><File path="LUFA\Drivers\USB\HighLevel\USBTask.h"></File><File path="LUFA\Drivers\USB\HighLevel\Events.c"></File><File path="LUFA\Drivers\USB\HighLevel\Events.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\HighLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\HighLevel\USBTask.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.c"></File><File path="LUFA\Drivers\USB\HighLevel\StdDescriptors.h"></File></Folder><Folder name="Class"><File path="LUFA\Drivers\USB\Class\HIDParser.c"></File><File path="LUFA\Drivers\USB\Class\HIDParser.h"></File><File path="LUFA\Drivers\USB\Class\HIDReportData.h"></File><File path="LUFA\Drivers\USB\Class\ConfigDescriptor.c"></File><File path="LUFA\Drivers\USB\Class\ConfigDescriptor.h"></File></Folder><File path="LUFA\Drivers\USB\USB.h"></File></Folder><Folder name="Misc"><File path="LUFA\Drivers\Misc\TerminalCodes.h"></File></Folder><Folder name="AT90USBXXX"><Folder name="AT90USBXXX67"><File path="LUFA\Drivers\AT90USBXXX\AT90USBXXX67\ADC.h"></File></Folder><File path="LUFA\Drivers\AT90USBXXX\Serial_Stream.h"></File><File path="LUFA\Drivers\AT90USBXXX\ADC.h"></File><File path="LUFA\Drivers\AT90USBXXX\Serial.c"></File><File path="LUFA\Drivers\AT90USBXXX\Serial.h"></File><File path="LUFA\Drivers\AT90USBXXX\Serial_Stream.c"></File><File path="LUFA\Drivers\AT90USBXXX\SPI.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\HWB.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.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\HWB.h"></File><File path="LUFA\Drivers\Board\STK526\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\STK526\LEDs.h"></File></Folder><Folder name="STK525"><File path="LUFA\Drivers\Board\STK525\Dataflash.h"></File><File path="LUFA\Drivers\Board\STK525\Joystick.h"></File><File path="LUFA\Drivers\Board\STK525\HWB.h"></File><File path="LUFA\Drivers\Board\STK525\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\STK525\LEDs.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\HWB.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\HWB.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></Folder></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.h"></File><File path="LUFA\Scheduler\Scheduler.c"></File></Folder><Folder name="MemoryAllocator"><File path="LUFA\MemoryAllocator\DynAlloc.h"></File><File path="LUFA\MemoryAllocator\DynAlloc.c"></File></Folder><Folder name="DriverStubs"><File path="LUFA\DriverStubs\Dataflash.h"></File><File path="LUFA\DriverStubs\HWB.h"></File><File path="LUFA\DriverStubs\Joystick.h"></File><File path="LUFA\DriverStubs\LEDs.h"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\BuildingLinkableLibraries.txt"></File><File path="LUFA\GettingStarted.txt"></File><File path="LUFA\MainPage.txt"></File><File path="LUFA\SchedulerOverview.txt"></File><File path="LUFA\VIDAndPIDValues.txt"></File><File path="LUFA\ChangeLog.txt"></File><File path="LUFA\CompileTimeTokens.txt"></File><File path="LUFA\MigrationInformation.txt"></File><File path="LUFA\DirectorySummaries.txt"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\WritingBoardDrivers.txt"></File></Folder><Folder name="Projects"><Folder name="MagStripe"><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\MagstripeHW.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\CircularBitBuffer.c"></File><File path="Projects\Magstripe\CircularBitBuffer.h"></File></Folder><Folder name="AVRISP_Programmer"><File path="Projects\AVRISP_Programmer\AVRISP_Firmware_Design.txt"></File><File path="Projects\AVRISP_Programmer\AVRISP_Programmer.c"></File><File path="Projects\AVRISP_Programmer\AVRISP_Programmer.h"></File><File path="Projects\AVRISP_Programmer\AVRISP_Programmer.txt"></File><File path="Projects\AVRISP_Programmer\Descriptors.c"></File><File path="Projects\AVRISP_Programmer\makefile"></File><File path="Projects\AVRISP_Programmer\Sample_Programming_Session.txt"></File><File path="Projects\AVRISP_Programmer\RingBuff.c"></File><File path="Projects\AVRISP_Programmer\RingBuff.h"></File><File path="Projects\AVRISP_Programmer\Descriptors.h"></File></Folder><File path="Projects\makefile"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File></Folder><Folder name="TeensyHID"><File path="Bootloaders\TeensyHID\Descriptors.c"></File><File path="Bootloaders\TeensyHID\Descriptors.h"></File><File path="Bootloaders\TeensyHID\makefile"></File><File path="Bootloaders\TeensyHID\TeensyHID.c"></File><File path="Bootloaders\TeensyHID\TeensyHID.h"></File><File path="Bootloaders\TeensyHID\TeensyHID.txt"></File></Folder><File path="Bootloaders\makefile"></File></Folder><File path="makefile"></File></Project> \ No newline at end of file
diff --git a/LUFA/ChangeLog.txt b/LUFA/ChangeLog.txt
index 6e837f36c..721d5e864 100644
--- a/LUFA/ChangeLog.txt
+++ b/LUFA/ChangeLog.txt
@@ -38,6 +38,7 @@
* - Added DataflashManager_WriteBlocks_RAM() and DataflashManager_ReadBlocks_RAM() functions to the MassStorage demo, to allow for easy
* interfacing with a FAT library for dataflash file level access
* - Incomplete non-functional BluetoothHost demo removed until it has reached a stable state to prevent confusion
+ * - Corrected CDC class bootloader to fix a few bugs, changed address counter to store x2 addresses for convenience
*
* \section Sec_ChangeLog090209 Version 090209
*