diff --git a/Demos/Device/ClassDriver/AudioInput/AudioInput.h b/Demos/Device/ClassDriver/AudioInput/AudioInput.h
index 741a091d0045bcbfc3afb134216ed63cb0d2af64..a243333bf106b81f1dd3ba85762ef221014e3cd6 100644
--- a/Demos/Device/ClassDriver/AudioInput/AudioInput.h
+++ b/Demos/Device/ClassDriver/AudioInput/AudioInput.h
@@ -47,7 +47,6 @@
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/Peripheral/ADC.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Audio.h>
 
 		#include "Descriptors.h"
 
diff --git a/Demos/Device/ClassDriver/AudioInput/Descriptors.h b/Demos/Device/ClassDriver/AudioInput/Descriptors.h
index 5ca7afbf507f226316d2a2af9a8fc6e2a036e1bd..c3a437e98d80b56b3054ef508fe4a48fbab21d11 100644
--- a/Demos/Device/ClassDriver/AudioInput/Descriptors.h
+++ b/Demos/Device/ClassDriver/AudioInput/Descriptors.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Audio.h>
 
 		#include <avr/pgmspace.h>
 
diff --git a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
index 62498cb7f562f5d10b77b8d2f191e335bf1f1795..c03a82050870b99b3b9ad332b21afde3959253b4 100644
--- a/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
+++ b/Demos/Device/ClassDriver/AudioOutput/AudioOutput.h
@@ -48,7 +48,6 @@
 		#include <LUFA/Version.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Audio.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Device/ClassDriver/AudioOutput/Descriptors.h b/Demos/Device/ClassDriver/AudioOutput/Descriptors.h
index 5ca7afbf507f226316d2a2af9a8fc6e2a036e1bd..d5b11b3771f7ce9a553b4b44e9ce8877006ef1fe 100644
--- a/Demos/Device/ClassDriver/AudioOutput/Descriptors.h
+++ b/Demos/Device/ClassDriver/AudioOutput/Descriptors.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Audio.h>
 
 		#include <avr/pgmspace.h>
 
@@ -82,4 +81,3 @@
 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
 
 #endif
-
diff --git a/Demos/Device/ClassDriver/DualVirtualSerial/Descriptors.h b/Demos/Device/ClassDriver/DualVirtualSerial/Descriptors.h
index fba85e8051acfdffab42205cb5dc5ebb692290f5..4749b60a45835b54dcb2a1846138ec1e056fd3f7 100644
--- a/Demos/Device/ClassDriver/DualVirtualSerial/Descriptors.h
+++ b/Demos/Device/ClassDriver/DualVirtualSerial/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** Endpoint number of the first CDC interface's device-to-host notification IN endpoint. */
@@ -102,4 +101,3 @@
 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
 
 #endif
-
diff --git a/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.h b/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.h
index eccb4d85945dd0ba95dbca929e12f8d3d32bcda6..f2f43da02a9ed90c921e7d8f083a73175d2a1fe9 100644
--- a/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.h
+++ b/Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Board/Joystick.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Device/ClassDriver/GenericHID/Descriptors.h b/Demos/Device/ClassDriver/GenericHID/Descriptors.h
index de427e626c7907ddb02957f7124f7c567d9c102e..2941bd403aaee8d46615dfba404458f104349e60 100644
--- a/Demos/Device/ClassDriver/GenericHID/Descriptors.h
+++ b/Demos/Device/ClassDriver/GenericHID/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Type Defines: */
 		/** Type define for the device configuration descriptor structure. This must be defined in the
diff --git a/Demos/Device/ClassDriver/GenericHID/GenericHID.h b/Demos/Device/ClassDriver/GenericHID/GenericHID.h
index 28a2c440eb266c88e0845a7767726907a7244676..533c76bffaf0de9227c1efe922c4f1d31709b315 100644
--- a/Demos/Device/ClassDriver/GenericHID/GenericHID.h
+++ b/Demos/Device/ClassDriver/GenericHID/GenericHID.h
@@ -48,7 +48,6 @@
 		#include <LUFA/Version.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Device/ClassDriver/Joystick/Descriptors.h b/Demos/Device/ClassDriver/Joystick/Descriptors.h
index 878b0380cf7acccd5af3a74d3e60ac4a19b4e6c9..b2b34b6300902bd0d0f43d393bda9875b8be8e7c 100644
--- a/Demos/Device/ClassDriver/Joystick/Descriptors.h
+++ b/Demos/Device/ClassDriver/Joystick/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Type Defines: */
 		/** Type define for the device configuration descriptor structure. This must be defined in the
diff --git a/Demos/Device/ClassDriver/Joystick/Joystick.h b/Demos/Device/ClassDriver/Joystick/Joystick.h
index 821400196bd5e727b01c648afbae0506e263b438..8826001cc813c194f9af4a0a6af6016cb15def2e 100644
--- a/Demos/Device/ClassDriver/Joystick/Joystick.h
+++ b/Demos/Device/ClassDriver/Joystick/Joystick.h
@@ -50,7 +50,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Type Defines: */
 		/** Type define for the joystick HID report structure, for creating and sending HID reports to the host PC.
diff --git a/Demos/Device/ClassDriver/Keyboard/Descriptors.h b/Demos/Device/ClassDriver/Keyboard/Descriptors.h
index d94beb718b99251887d93858912adb7d418e741d..5165700f457baafd66f2ed81f8aef6a177d833fa 100644
--- a/Demos/Device/ClassDriver/Keyboard/Descriptors.h
+++ b/Demos/Device/ClassDriver/Keyboard/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Type Defines: */
 		/** Type define for the device configuration descriptor structure. This must be defined in the
diff --git a/Demos/Device/ClassDriver/Keyboard/Keyboard.h b/Demos/Device/ClassDriver/Keyboard/Keyboard.h
index b2b29a379d62a729c4b3381570b3e97e2317f7d4..3131945bd57f54cab34915cd0ef4bc8cbb13ab6e 100644
--- a/Demos/Device/ClassDriver/Keyboard/Keyboard.h
+++ b/Demos/Device/ClassDriver/Keyboard/Keyboard.h
@@ -51,7 +51,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.h b/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.h
index 83636e0fa8afed5fedccc678d915e2685925f9dc..5b6a60651d71ef5bfd84bd7ebc97cbc75d7be5fc 100644
--- a/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.h
+++ b/Demos/Device/ClassDriver/KeyboardMouse/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Type Defines: */
 		/** Type define for the device configuration descriptor structure. This must be defined in the
diff --git a/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.h b/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.h
index 186602f63ad74034585021188aa8363884b92521..5359eef2d48c70869f7b4581bac05e5a53d72368 100644
--- a/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.h
+++ b/Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.h
@@ -46,7 +46,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Device/ClassDriver/MIDI/Descriptors.h b/Demos/Device/ClassDriver/MIDI/Descriptors.h
index 06020c8f9e8c0e505d0743a3a4ca1a708f729f9e..ca3219ada018ade02108f4937904ebf59efb5404 100644
--- a/Demos/Device/ClassDriver/MIDI/Descriptors.h
+++ b/Demos/Device/ClassDriver/MIDI/Descriptors.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MIDI.h>
 
 		#include <avr/pgmspace.h>
 
diff --git a/Demos/Device/ClassDriver/MIDI/MIDI.h b/Demos/Device/ClassDriver/MIDI/MIDI.h
index c97311654bcb4f55e59f4239fe08d8e5ca02ded4..e12ac678a89e7a74ea6b8142e8a41c7b307fe9e2 100644
--- a/Demos/Device/ClassDriver/MIDI/MIDI.h
+++ b/Demos/Device/ClassDriver/MIDI/MIDI.h
@@ -51,7 +51,6 @@
 		#include <LUFA/Drivers/Board/Joystick.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MIDI.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Device/ClassDriver/MassStorage/Descriptors.h b/Demos/Device/ClassDriver/MassStorage/Descriptors.h
index c816e238305be3b90632bdcd37e706049f363aad..0327a4774aba61ededfe904796cf6f8f5545337f 100644
--- a/Demos/Device/ClassDriver/MassStorage/Descriptors.h
+++ b/Demos/Device/ClassDriver/MassStorage/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 	/* Macros: */
 		/** Endpoint number of the Mass Storage device-to-host data IN endpoint. */
diff --git a/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h b/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h
index d3949f23ee71928609a86e471ff7f87219141164..c07b46e6921f07e1fad73887dc80140bbe179f21 100644
--- a/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h
+++ b/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h
@@ -44,7 +44,6 @@
 
 		#include <LUFA/Common/Common.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 		#include <LUFA/Drivers/Board/Dataflash.h>
 
 	/* Preprocessor Checks: */
diff --git a/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h b/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h
index 6c7071dcdc150ff8df7b281f2cdf2559e3097101..787a039a099b4f90346a04d85e5d1950ed60b12e 100644
--- a/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h
+++ b/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h
@@ -41,7 +41,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 		#include "MassStorage.h"
 		#include "Descriptors.h"
diff --git a/Demos/Device/ClassDriver/MassStorage/MassStorage.h b/Demos/Device/ClassDriver/MassStorage/MassStorage.h
index 3e829e7b5ab9974d9ac56331c9a2648c3c7cea65..b76fee3ff9cc232ecfb8f77cf3db752c29a4e2a9 100644
--- a/Demos/Device/ClassDriver/MassStorage/MassStorage.h
+++ b/Demos/Device/ClassDriver/MassStorage/MassStorage.h
@@ -51,7 +51,6 @@
 		#include <LUFA/Version.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.h b/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.h
index dd861e6b8e1c641a0d07d9b1ebb99725e05d1d70..6e668640b8eadcd60a606c79cd42601d342936c7 100644
--- a/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.h
+++ b/Demos/Device/ClassDriver/MassStorageKeyboard/Descriptors.h
@@ -41,8 +41,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Macros: */
 		/** Endpoint number of the Keyboard HID reporting IN endpoint. */
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.h b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.h
index b2dd70febac9d6d6d853d4c98d143cbe16e0539c..d7843b3bb128f9f9e44b14fa1245ba785e784ea1 100644
--- a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.h
+++ b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/SCSI.h
@@ -41,7 +41,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 		#include "MassStorageKeyboard.h"
 		#include "Descriptors.h"
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h b/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h
index 43e04d0b100679d4a2e682846f58f349db456f2a..703035d5a839041c67307fd307e06b230aad460a 100644
--- a/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h
+++ b/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h
@@ -56,8 +56,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
-		#include <LUFA/Drivers/USB/Class/Device/HID.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Device/ClassDriver/Mouse/Descriptors.h b/Demos/Device/ClassDriver/Mouse/Descriptors.h
index 243c88d35490c0e283d95df7a7fc7c52df8b2ea7..6765223b5b896b221597f6329e9d4788e0cace31 100644
--- a/Demos/Device/ClassDriver/Mouse/Descriptors.h
+++ b/Demos/Device/ClassDriver/Mouse/Descriptors.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 		#include <avr/pgmspace.h>
 
diff --git a/Demos/Device/ClassDriver/Mouse/Mouse.h b/Demos/Device/ClassDriver/Mouse/Mouse.h
index 60278371819a208922c248f1e717c0d8e6072c23..6255c07c5d6314aa454482e2b9d10281eb3e4c63 100644
--- a/Demos/Device/ClassDriver/Mouse/Mouse.h
+++ b/Demos/Device/ClassDriver/Mouse/Mouse.h
@@ -52,7 +52,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Descriptors.h b/Demos/Device/ClassDriver/RNDISEthernet/Descriptors.h
index 7f67bc09b4b11f35416531ae431cec427e0cc89c..4f7beb1ef35d69009121370f1f2c5e0fb87eeef5 100644
--- a/Demos/Device/ClassDriver/RNDISEthernet/Descriptors.h
+++ b/Demos/Device/ClassDriver/RNDISEthernet/Descriptors.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/RNDIS.h>
 
 		#include <avr/pgmspace.h>
 
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h b/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h
index 572fdeb8288378c03180d7f2b3dff8564d89ed31..2bb7b33ce4c60b1897cac498d362d05320ad3e5c 100644
--- a/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h
+++ b/Demos/Device/ClassDriver/RNDISEthernet/Lib/ProtocolDecoders.h
@@ -41,7 +41,6 @@
 		#include <avr/pgmspace.h>
 		#include <stdio.h>
 
-		#include <LUFA/Drivers/USB/Class/RNDIS.h>
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 
 		#include "EthernetProtocols.h"
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h
index 2cbdb31048077718b23246f8e50f71e22ea4b931..ce2d55c71249f0cacb688ecc8cf6186efbecfc89 100644
--- a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h
+++ b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h
@@ -54,7 +54,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/RNDIS.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Device/ClassDriver/VirtualSerial/Descriptors.h b/Demos/Device/ClassDriver/VirtualSerial/Descriptors.h
index ddd9495ea509cbec2ec136cd031cc458efa73511..e9b55a3d01892ce9c19000b292e148c5f91bb632 100644
--- a/Demos/Device/ClassDriver/VirtualSerial/Descriptors.h
+++ b/Demos/Device/ClassDriver/VirtualSerial/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** Endpoint number of the CDC device-to-host notification IN endpoint. */
diff --git a/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.h b/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.h
index a16e4a7a1e9d4cb04279300e103270fcdaf09e1b..bc82b02cd449d38573b0d30629e4e6f83b4a674e 100644
--- a/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.h
+++ b/Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.h
@@ -50,7 +50,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Board/Joystick.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.h b/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.h
index 85a5aed8454c965f38d74e0253f9c59a7115eb33..a9e6fb2f1fcfe91266e25fe85abc3bd91675e648 100644
--- a/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.h
+++ b/Demos/Device/ClassDriver/VirtualSerialMouse/Descriptors.h
@@ -40,8 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Macros: */
 		/** Endpoint number of the CDC device-to-host notification IN endpoint. */
diff --git a/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.h b/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.h
index 16c7891ae8aaaa7942c9974cc49dae483055625e..f9d4fd52177120375592084c5b87f73e5db8d431 100644
--- a/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.h
+++ b/Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.h
@@ -50,8 +50,6 @@
 		#include <LUFA/Drivers/Board/Joystick.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.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. */
diff --git a/Demos/Device/LowLevel/AudioInput/AudioInput.c b/Demos/Device/LowLevel/AudioInput/AudioInput.c
index e681f3bd116f7faca93d5f98bd91ba1eaac49077..8e2d9747145c4426b2c24881c636a19e70f63b36 100644
--- a/Demos/Device/LowLevel/AudioInput/AudioInput.c
+++ b/Demos/Device/LowLevel/AudioInput/AudioInput.c
@@ -185,7 +185,7 @@ void USB_Audio_Task(void)
 			/* Microphone is biased to half rail voltage, subtract the bias from the sample value */
 			AudioSample -= (SAMPLE_MAX_RANGE / 2);
 			#endif		
-		#end if
+		#endif
 
 		/* Write the sample to the buffer */
 		Endpoint_Write_Word_LE(AudioSample);
diff --git a/Demos/Device/LowLevel/AudioInput/Descriptors.c b/Demos/Device/LowLevel/AudioInput/Descriptors.c
index 432f0c909e5a8d423fdade16e6f702c8d63ba8cc..85599fbc48a091fa2d14539c6f864a16c67b69b2 100644
--- a/Demos/Device/LowLevel/AudioInput/Descriptors.c
+++ b/Demos/Device/LowLevel/AudioInput/Descriptors.c
@@ -104,25 +104,25 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_ControlInterface_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Interface_AC_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_AudioHeader,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_Header,
 
 			.ACSpecification          = VERSION_BCD(01.00),
-			.TotalLength              = (sizeof(USB_Audio_Interface_AC_t) +
-			                             sizeof(USB_Audio_InputTerminal_t) +
-			                             sizeof(USB_Audio_OutputTerminal_t)),
+			.TotalLength              = (sizeof(USB_Audio_Descriptor_Interface_AC_t) +
+			                             sizeof(USB_Audio_Descriptor_InputTerminal_t) +
+			                             sizeof(USB_Audio_Descriptor_OutputTerminal_t)),
 
 			.InCollection             = 1,
-			.InterfaceNumbers         = {1},
+			.InterfaceNumber          = 1,
 		},
 
 	.Audio_InputTerminal =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_InputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_InputTerminal,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_InputTerminal_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
 
 			.TerminalID               = 0x01,
-			.TerminalType             = TERMINAL_IN_MIC,
+			.TerminalType             = AUDIO_TERMINAL_IN_MIC,
 			.AssociatedOutputTerminal = 0x00,
 
 			.TotalChannels            = 1,
@@ -134,11 +134,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_OutputTerminal =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_OutputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_OutputTerminal,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_OutputTerminal_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
 
 			.TerminalID               = 0x02,
-			.TerminalType             = TERMINAL_STREAMING,
+			.TerminalType             = AUDIO_TERMINAL_STREAMING,
 			.AssociatedInputTerminal  = 0x00,
 
 			.SourceID                 = 0x01,
@@ -180,8 +180,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_StreamInterface_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Interface_AS_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_General,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AS_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_General,
 
 			.TerminalLink             = 0x02,
 
@@ -191,25 +191,24 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_AudioFormat =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Format_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_Format,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Format_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_FormatType,
 
 			.FormatType               = 0x01,
 			.Channels                 = 0x01,
 
 			.SubFrameSize             = 0x02,
 			.BitResolution            = 16,
-			.SampleFrequencyType      = (sizeof(ConfigurationDescriptor.Audio_AudioFormat.SampleFrequencies) /
-			                             sizeof(Audio_SampleFreq_t)),
+			.SampleFrequencyType      = AUDIO_TOTAL_SAMPLE_RATES,
 
-			.SampleFrequencies        = {SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)}
+			.SampleFrequencies        = {AUDIO_SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)}
 		},
 
 	.Audio_StreamEndpoint =
 		{
 			.Endpoint =
 				{
-					.Header              = {.Size = sizeof(USB_Audio_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
+					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
 
 					.EndpointAddress     = (ENDPOINT_DESCRIPTOR_DIR_IN | AUDIO_STREAM_EPNUM),
 					.Attributes          = (EP_TYPE_ISOCHRONOUS | ENDPOINT_ATTR_SYNC | ENDPOINT_USAGE_DATA),
@@ -223,10 +222,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_StreamEndpoint_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_StreamEndpoint_Spc_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = DSUBTYPE_General,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Spc_t), .Type = DTYPE_CSEndpoint},
+			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
 
-			.Attributes               = EP_ACCEPTS_SMALL_PACKETS,
+			.Attributes               = AUDIO_EP_ACCEPTS_SMALL_PACKETS,
 
 			.LockDelayUnits           = 0x00,
 			.LockDelay                = 0x0000
diff --git a/Demos/Device/LowLevel/AudioInput/Descriptors.h b/Demos/Device/LowLevel/AudioInput/Descriptors.h
index c8b43b61719a26a5a282c70462d1a354c2640a95..c3a437e98d80b56b3054ef508fe4a48fbab21d11 100644
--- a/Demos/Device/LowLevel/AudioInput/Descriptors.h
+++ b/Demos/Device/LowLevel/AudioInput/Descriptors.h
@@ -42,95 +42,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Macros: */
-		/** Audio class descriptor subtype value for a Audio class specific header descriptor. */
-		#define DSUBTYPE_AudioHeader         0x01
-
-		/** Audio class descriptor subtype value for an Output Terminal Audio class specific descriptor. */
-		#define DSUBTYPE_InputTerminal       0x02
-
-		/** Audio class descriptor subtype value for an Input Terminal Audio class specific descriptor. */
-		#define DSUBTYPE_OutputTerminal      0x03
-
-		/** Audio class descriptor subtype value for a Feature Unit Audio class specific descriptor. */
-		#define DSUBTYPE_FeatureUnit         0x06
-
-		/** Audio class descriptor subtype value for a general Audio class specific descriptor. */
-		#define DSUBTYPE_General             0x01
-
-		/** Audio class descriptor subtype value for an Audio class specific descriptor indicating the format of an audio stream. */
-		#define DSUBTYPE_Format              0x02
-
-		//@{
-		/** Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details. */
-
-		#define CHANNEL_LEFT_FRONT           (1 << 0)
-		#define CHANNEL_RIGHT_FRONT          (1 << 1)
-		#define CHANNEL_CENTER_FRONT         (1 << 2)
-		#define CHANNEL_LOW_FREQ_ENHANCE     (1 << 3)
-		#define CHANNEL_LEFT_SURROUND        (1 << 4)
-		#define CHANNEL_RIGHT_SURROUND       (1 << 5)
-		#define CHANNEL_LEFT_OF_CENTER       (1 << 6)
-		#define CHANNEL_RIGHT_OF_CENTER      (1 << 7)
-		#define CHANNEL_SURROUND             (1 << 8)
-		#define CHANNEL_SIDE_LEFT            (1 << 9)
-		#define CHANNEL_SIDE_RIGHT           (1 << 10)
-		#define CHANNEL_TOP                  (1 << 11)
-		//@}
-
-		//@{
-		/** Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details. */
-
-		#define FEATURE_MUTE                 (1 << 0)
-		#define FEATURE_VOLUME               (1 << 1)
-		#define FEATURE_BASS                 (1 << 2)
-		#define FEATURE_MID                  (1 << 3)
-		#define FEATURE_TREBLE               (1 << 4)
-		#define FEATURE_GRAPHIC_EQUALIZER    (1 << 5)
-		#define FEATURE_AUTOMATIC_GAIN       (1 << 6)
-		#define FEATURE_DELAY                (1 << 7)
-		#define FEATURE_BASS_BOOST           (1 << 8)
-		#define FEATURE_BASS_LOUDNESS        (1 << 9)
-		//@}
-
-		//@{
-		/** Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details. */
-
-		#define TERMINAL_UNDEFINED           0x0100
-		#define TERMINAL_STREAMING           0x0101
-		#define TERMINAL_VENDOR              0x01FF
-		#define TERMINAL_IN_UNDEFINED        0x0200
-		#define TERMINAL_IN_MIC              0x0201
-		#define TERMINAL_IN_DESKTOP_MIC      0x0202
-		#define TERMINAL_IN_PERSONAL_MIC     0x0203
-		#define TERMINAL_IN_OMNIDIR_MIC      0x0204
-		#define TERMINAL_IN_MIC_ARRAY        0x0205
-		#define TERMINAL_IN_PROCESSING_MIC   0x0206
-		#define TERMINAL_IN_OUT_UNDEFINED    0x0300
-		#define TERMINAL_OUT_SPEAKER         0x0301
-		#define TERMINAL_OUT_HEADPHONES      0x0302
-		#define TERMINAL_OUT_HEAD_MOUNTED    0x0303
-		#define TERMINAL_OUT_DESKTOP         0x0304
-		#define TERMINAL_OUT_ROOM            0x0305
-		#define TERMINAL_OUT_COMMUNICATION   0x0306
-		#define TERMINAL_OUT_LOWFREQ         0x0307
-		//@}
-
-		/** Convenience macro, to fill a 24-bit AudioSampleFreq_t structure with the given sample rate as a 24-bit number.
-		 *
-		 *  \param[in] freq  Required audio sampling frequency in HZ
-		 */
-		#define SAMPLE_FREQ(freq)  {LowWord: ((uint32_t)(freq) & 0x00FFFF), HighByte: (((uint32_t)(freq) >> 16) & 0x0000FF)}
-
-		/** Mask for the attributes parameter of an Audio class specific Endpoint descriptor, indicating that the endpoint
-		 *  accepts only filled endpoint packets of audio samples.
-		 */
-		#define EP_ACCEPTS_ONLY_FULL_PACKETS (1 << 7)
-
-		/** Mask for the attributes parameter of an Audio class specific Endpoint descriptor, indicating that the endpoint
-		 *  will accept partially filled endpoint packets of audio samples.
-		 */
-		#define EP_ACCEPTS_SMALL_PACKETS     (0 << 7)
-
 		/** Endpoint number of the Audio isochronous streaming data endpoint. */
 		#define AUDIO_STREAM_EPNUM           1
 
@@ -144,165 +55,23 @@
 		#define AUDIO_SAMPLE_FREQUENCY       48000
 
 	/* Type Defines: */
-		/** Type define for an Audio class specific interface descriptor. This follows a regular interface descriptor to
-		 *  supply extra information about the audio device's layout to the host. See the USB Audio specification for more
-		 *  details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint16_t                  ACSpecification; /**< Binary coded decimal value, indicating the supported Audio Class specification version */
-			uint16_t                  TotalLength; /**< Total length of the Audio class specific descriptors, including this descriptor */
-
-			uint8_t                   InCollection; /**< Total number of audio class interfaces within this device */
-			uint8_t                   InterfaceNumbers[1]; /**< Interface numbers of each audio interface */
-		} USB_Audio_Interface_AC_t;
-
-		/** Type define for an Audio class specific Feature Unit descriptor. This indicates to the host what features
-		 *  are present in the device's audio stream for basic control, such as per-channel volume. See the USB Audio
-		 *  specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   UnitID; /**< ID value of this feature unit - must be a unique value within the device */
-			uint8_t                   SourceID; /**< Source ID value of the audio source input into this feature unit */
-
-			uint8_t                   ControlSize; /**< Size of each element in the ChanelControlls array */
-			uint8_t                   ChannelControls[3]; /**< Feature masks for the control channel, and each separate audio channel */
-
-			uint8_t                   FeatureUnitStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_Audio_FeatureUnit_t;
-
-		/** Type define for an Audio class specific input terminal descriptor. This indicates to the host that the device
-		 *  contains an input audio source, either from a physical terminal on the device, or a logical terminal (for example,
-		 *  a USB endpoint). See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   TerminalID; /**< ID value of this terminal unit - must be a unique value within the device */
-			uint16_t                  TerminalType; /**< Type of terminal, a TERMINAL_* mask */
-			uint8_t                   AssociatedOutputTerminal; /**< ID of associated output terminal, for physically grouped terminals
-			                                                     *   such as the speaker and microphone of a phone handset
-			                                                     */
-			uint8_t                   TotalChannels; /**< Total number of separate audio channels within this interface (right, left, etc.) */
-			uint16_t                  ChannelConfig; /**< CHANNEL_* masks indicating what channel layout is supported by this terminal */
-
-			uint8_t                   ChannelStrIndex; /**< Index of a string descriptor describing this channel within the device */
-			uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_Audio_InputTerminal_t;
-
-		/** Type define for an Audio class specific output terminal descriptor. This indicates to the host that the device
-		 *  contains an output audio sink, either to a physical terminal on the device, or a logical terminal (for example,
-		 *  a USB endpoint). See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   TerminalID; /**< ID value of this terminal unit - must be a unique value within the device */
-			uint16_t                  TerminalType; /**< Type of terminal, a TERMINAL_* mask */
-			uint8_t                   AssociatedInputTerminal; /**< ID of associated input terminal, for physically grouped terminals
-			                                                    *   such as the speaker and microphone of a phone handset
-			                                                    */
-			uint8_t                   SourceID; /**< ID value of the unit this terminal's audio is sourced from */
-
-			uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_Audio_OutputTerminal_t;
-
-		/** Type define for an Audio class specific streaming interface descriptor. This indicates to the host
-		 *  how audio streams within the device are formatted. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   TerminalLink; /**< ID value of the output terminal this descriptor is describing */
-
-			uint8_t                   FrameDelay; /**< Delay in frames resulting from the complete sample processing from input to output */
-			uint16_t                  AudioFormat; /**< Format of the audio stream, see Audio Device Formats specification */
-		} USB_Audio_Interface_AS_t;
-
-		/** Type define for a 24bit audio sample frequency structure. GCC does not contain a built in 24bit datatype,
-		 *  this this structure is used to build up the value instead. Fill this structure with the SAMPLE_FREQ() macro.
-		 */
-		typedef struct
-		{
-			uint16_t                  LowWord; /**< Low 16 bits of the 24-bit value */
-			uint8_t                   HighByte; /**< Upper 8 bits of the 24-bit value */
-		} Audio_SampleFreq_t;
-
-		/** Type define for an Audio class specific audio format descriptor. This is used to give the host full details
-		 *  about the number of channels, the sample resolution, acceptable sample frequencies and encoding method used
-		 *  in the device's audio streams. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   FormatType; /**< Format of the audio stream, see Audio Device Formats specification */
-			uint8_t                   Channels; /**< Total number of discrete channels in the stream */
-
-			uint8_t                   SubFrameSize; /**< Size in bytes of each channel's sample data in the stream */
-			uint8_t                   BitResolution; /**< Bits of resolution of each channel's samples in the stream */
-
-			uint8_t                   SampleFrequencyType; /**< Total number of sample frequencies supported by the device */
-			Audio_SampleFreq_t        SampleFrequencies[1]; /**< Sample frequencies supported by the device */
-		} USB_Audio_Format_t;
-
-		/** Type define for an Audio class specific endpoint descriptor. This contains a regular endpoint
-		 *  descriptor with a few Audio-class specific extensions. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
-
-			uint8_t                   Refresh; /**< Always set to zero */
-			uint8_t                   SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
-		} USB_Audio_StreamEndpoint_Std_t;
-
-		/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
-		 *  on the usage of endpoints used to stream audio in and out of the USB Audio device, and follows an Audio
-		 *  class specific extended endpoint descriptor. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   Attributes; /**< Audio class specific endpoint attributes, such as ACCEPTS_SMALL_PACKETS */
-
-			uint8_t                   LockDelayUnits; /**< Units used for the LockDelay field, see Audio class specification */
-			uint16_t                  LockDelay; /**< Time required to internally lock endpoint's internal clock recovery circuitry */
-		} USB_Audio_StreamEndpoint_Spc_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
 		 */
 		typedef struct
 		{
-			USB_Descriptor_Configuration_Header_t Config;
-			USB_Descriptor_Interface_t            Audio_ControlInterface;
-			USB_Audio_Interface_AC_t              Audio_ControlInterface_SPC;
-			USB_Audio_InputTerminal_t             Audio_InputTerminal;
-			USB_Audio_OutputTerminal_t            Audio_OutputTerminal;
-			USB_Descriptor_Interface_t            Audio_StreamInterface_Alt0;
-			USB_Descriptor_Interface_t            Audio_StreamInterface_Alt1;
-			USB_Audio_Interface_AS_t              Audio_StreamInterface_SPC;
-			USB_Audio_Format_t                    Audio_AudioFormat;
-			USB_Audio_StreamEndpoint_Std_t        Audio_StreamEndpoint;
-			USB_Audio_StreamEndpoint_Spc_t        Audio_StreamEndpoint_SPC;
+			USB_Descriptor_Configuration_Header_t     Config;
+			USB_Descriptor_Interface_t                Audio_ControlInterface;
+			USB_Audio_Descriptor_Interface_AC_t       Audio_ControlInterface_SPC;
+			USB_Audio_Descriptor_InputTerminal_t      Audio_InputTerminal;
+			USB_Audio_Descriptor_OutputTerminal_t     Audio_OutputTerminal;
+			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt0;
+			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt1;
+			USB_Audio_Descriptor_Interface_AS_t       Audio_StreamInterface_SPC;
+			USB_Audio_Descriptor_Format_t             Audio_AudioFormat;
+			USB_Audio_Descriptor_StreamEndpoint_Std_t Audio_StreamEndpoint;
+			USB_Audio_Descriptor_StreamEndpoint_Spc_t Audio_StreamEndpoint_SPC;
 		} USB_Descriptor_Configuration_t;
 
 	/* Function Prototypes: */
diff --git a/Demos/Device/LowLevel/AudioOutput/Descriptors.c b/Demos/Device/LowLevel/AudioOutput/Descriptors.c
index cc3d8ccae5aee2c350da751eae0e0227f1983546..d177c31c331058273baa910062c0ff2aafff6f3a 100644
--- a/Demos/Device/LowLevel/AudioOutput/Descriptors.c
+++ b/Demos/Device/LowLevel/AudioOutput/Descriptors.c
@@ -104,29 +104,29 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_ControlInterface_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Interface_AC_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_AudioHeader,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_Header,
 
 			.ACSpecification          = VERSION_BCD(01.00),
-			.TotalLength              = (sizeof(USB_Audio_Interface_AC_t) +
-			                             sizeof(USB_Audio_InputTerminal_t) +
-			                             sizeof(USB_Audio_OutputTerminal_t)),
+			.TotalLength              = (sizeof(USB_Audio_Descriptor_Interface_AC_t) +
+			                             sizeof(USB_Audio_Descriptor_InputTerminal_t) +
+			                             sizeof(USB_Audio_Descriptor_OutputTerminal_t)),
 
 			.InCollection             = 1,
-			.InterfaceNumbers         = {1},
+			.InterfaceNumber          = 1,
 		},
 
 	.Audio_InputTerminal =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_InputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_InputTerminal,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_InputTerminal_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
 
 			.TerminalID               = 0x01,
-			.TerminalType             = TERMINAL_STREAMING,
+			.TerminalType             = AUDIO_TERMINAL_STREAMING,
 			.AssociatedOutputTerminal = 0x00,
 
 			.TotalChannels            = 2,
-			.ChannelConfig            = (CHANNEL_LEFT_FRONT | CHANNEL_RIGHT_FRONT),
+			.ChannelConfig            = (AUDIO_CHANNEL_LEFT_FRONT | AUDIO_CHANNEL_RIGHT_FRONT),
 
 			.ChannelStrIndex          = NO_DESCRIPTOR,
 			.TerminalStrIndex         = NO_DESCRIPTOR
@@ -134,11 +134,11 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_OutputTerminal =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_OutputTerminal_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_OutputTerminal,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_OutputTerminal_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
 
 			.TerminalID               = 0x02,
-			.TerminalType             = TERMINAL_OUT_SPEAKER,
+			.TerminalType             = AUDIO_TERMINAL_OUT_SPEAKER,
 			.AssociatedInputTerminal  = 0x00,
 
 			.SourceID                 = 0x01,
@@ -180,8 +180,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_StreamInterface_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Interface_AS_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_General,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AS_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_General,
 
 			.TerminalLink             = 0x01,
 
@@ -191,8 +191,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_AudioFormat =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Format_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_Format,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Format_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_FormatType,
 
 			.FormatType               = 0x01,
 			.Channels                 = 0x02,
@@ -200,16 +200,15 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 			.SubFrameSize             = 0x02,
 			.BitResolution            = 16,
 
-			.SampleFrequencyType      = (sizeof(ConfigurationDescriptor.Audio_AudioFormat.SampleFrequencies) /
-			                             sizeof(Audio_SampleFreq_t)),
-			.SampleFrequencies        = {SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)}
+			.SampleFrequencyType      = AUDIO_TOTAL_SAMPLE_RATES,
+			.SampleFrequencies        = {AUDIO_SAMPLE_FREQ(AUDIO_SAMPLE_FREQUENCY)}
 		},
 
 	.Audio_StreamEndpoint =
 		{
 			.Endpoint =
 				{
-					.Header              = {.Size = sizeof(USB_Audio_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
+					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
 
 					.EndpointAddress     = (ENDPOINT_DESCRIPTOR_DIR_OUT | AUDIO_STREAM_EPNUM),
 					.Attributes          = (EP_TYPE_ISOCHRONOUS | ENDPOINT_ATTR_SYNC | ENDPOINT_USAGE_DATA),
@@ -223,10 +222,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_StreamEndpoint_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_StreamEndpoint_Spc_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = DSUBTYPE_General,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Spc_t), .Type = DTYPE_CSEndpoint},
+			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
 
-			.Attributes               = EP_ACCEPTS_SMALL_PACKETS,
+			.Attributes               = AUDIO_EP_ACCEPTS_SMALL_PACKETS,
 
 			.LockDelayUnits           = 0x00,
 			.LockDelay                = 0x0000
diff --git a/Demos/Device/LowLevel/AudioOutput/Descriptors.h b/Demos/Device/LowLevel/AudioOutput/Descriptors.h
index c8b43b61719a26a5a282c70462d1a354c2640a95..d5b11b3771f7ce9a553b4b44e9ce8877006ef1fe 100644
--- a/Demos/Device/LowLevel/AudioOutput/Descriptors.h
+++ b/Demos/Device/LowLevel/AudioOutput/Descriptors.h
@@ -42,95 +42,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Macros: */
-		/** Audio class descriptor subtype value for a Audio class specific header descriptor. */
-		#define DSUBTYPE_AudioHeader         0x01
-
-		/** Audio class descriptor subtype value for an Output Terminal Audio class specific descriptor. */
-		#define DSUBTYPE_InputTerminal       0x02
-
-		/** Audio class descriptor subtype value for an Input Terminal Audio class specific descriptor. */
-		#define DSUBTYPE_OutputTerminal      0x03
-
-		/** Audio class descriptor subtype value for a Feature Unit Audio class specific descriptor. */
-		#define DSUBTYPE_FeatureUnit         0x06
-
-		/** Audio class descriptor subtype value for a general Audio class specific descriptor. */
-		#define DSUBTYPE_General             0x01
-
-		/** Audio class descriptor subtype value for an Audio class specific descriptor indicating the format of an audio stream. */
-		#define DSUBTYPE_Format              0x02
-
-		//@{
-		/** Supported channel mask for an Audio class terminal descriptor. See the Audio class specification for more details. */
-
-		#define CHANNEL_LEFT_FRONT           (1 << 0)
-		#define CHANNEL_RIGHT_FRONT          (1 << 1)
-		#define CHANNEL_CENTER_FRONT         (1 << 2)
-		#define CHANNEL_LOW_FREQ_ENHANCE     (1 << 3)
-		#define CHANNEL_LEFT_SURROUND        (1 << 4)
-		#define CHANNEL_RIGHT_SURROUND       (1 << 5)
-		#define CHANNEL_LEFT_OF_CENTER       (1 << 6)
-		#define CHANNEL_RIGHT_OF_CENTER      (1 << 7)
-		#define CHANNEL_SURROUND             (1 << 8)
-		#define CHANNEL_SIDE_LEFT            (1 << 9)
-		#define CHANNEL_SIDE_RIGHT           (1 << 10)
-		#define CHANNEL_TOP                  (1 << 11)
-		//@}
-
-		//@{
-		/** Supported feature mask for an Audio class feature unit descriptor. See the Audio class specification for more details. */
-
-		#define FEATURE_MUTE                 (1 << 0)
-		#define FEATURE_VOLUME               (1 << 1)
-		#define FEATURE_BASS                 (1 << 2)
-		#define FEATURE_MID                  (1 << 3)
-		#define FEATURE_TREBLE               (1 << 4)
-		#define FEATURE_GRAPHIC_EQUALIZER    (1 << 5)
-		#define FEATURE_AUTOMATIC_GAIN       (1 << 6)
-		#define FEATURE_DELAY                (1 << 7)
-		#define FEATURE_BASS_BOOST           (1 << 8)
-		#define FEATURE_BASS_LOUDNESS        (1 << 9)
-		//@}
-
-		//@{
-		/** Terminal type constant for an Audio class terminal descriptor. See the Audio class specification for more details. */
-
-		#define TERMINAL_UNDEFINED           0x0100
-		#define TERMINAL_STREAMING           0x0101
-		#define TERMINAL_VENDOR              0x01FF
-		#define TERMINAL_IN_UNDEFINED        0x0200
-		#define TERMINAL_IN_MIC              0x0201
-		#define TERMINAL_IN_DESKTOP_MIC      0x0202
-		#define TERMINAL_IN_PERSONAL_MIC     0x0203
-		#define TERMINAL_IN_OMNIDIR_MIC      0x0204
-		#define TERMINAL_IN_MIC_ARRAY        0x0205
-		#define TERMINAL_IN_PROCESSING_MIC   0x0206
-		#define TERMINAL_IN_OUT_UNDEFINED    0x0300
-		#define TERMINAL_OUT_SPEAKER         0x0301
-		#define TERMINAL_OUT_HEADPHONES      0x0302
-		#define TERMINAL_OUT_HEAD_MOUNTED    0x0303
-		#define TERMINAL_OUT_DESKTOP         0x0304
-		#define TERMINAL_OUT_ROOM            0x0305
-		#define TERMINAL_OUT_COMMUNICATION   0x0306
-		#define TERMINAL_OUT_LOWFREQ         0x0307
-		//@}
-
-		/** Convenience macro, to fill a 24-bit AudioSampleFreq_t structure with the given sample rate as a 24-bit number.
-		 *
-		 *  \param[in] freq  Required audio sampling frequency in HZ
-		 */
-		#define SAMPLE_FREQ(freq)  {LowWord: ((uint32_t)(freq) & 0x00FFFF), HighByte: (((uint32_t)(freq) >> 16) & 0x0000FF)}
-
-		/** Mask for the attributes parameter of an Audio class specific Endpoint descriptor, indicating that the endpoint
-		 *  accepts only filled endpoint packets of audio samples.
-		 */
-		#define EP_ACCEPTS_ONLY_FULL_PACKETS (1 << 7)
-
-		/** Mask for the attributes parameter of an Audio class specific Endpoint descriptor, indicating that the endpoint
-		 *  will accept partially filled endpoint packets of audio samples.
-		 */
-		#define EP_ACCEPTS_SMALL_PACKETS     (0 << 7)
-
 		/** Endpoint number of the Audio isochronous streaming data endpoint. */
 		#define AUDIO_STREAM_EPNUM           1
 
@@ -144,165 +55,23 @@
 		#define AUDIO_SAMPLE_FREQUENCY       48000
 
 	/* Type Defines: */
-		/** Type define for an Audio class specific interface descriptor. This follows a regular interface descriptor to
-		 *  supply extra information about the audio device's layout to the host. See the USB Audio specification for more
-		 *  details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint16_t                  ACSpecification; /**< Binary coded decimal value, indicating the supported Audio Class specification version */
-			uint16_t                  TotalLength; /**< Total length of the Audio class specific descriptors, including this descriptor */
-
-			uint8_t                   InCollection; /**< Total number of audio class interfaces within this device */
-			uint8_t                   InterfaceNumbers[1]; /**< Interface numbers of each audio interface */
-		} USB_Audio_Interface_AC_t;
-
-		/** Type define for an Audio class specific Feature Unit descriptor. This indicates to the host what features
-		 *  are present in the device's audio stream for basic control, such as per-channel volume. See the USB Audio
-		 *  specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   UnitID; /**< ID value of this feature unit - must be a unique value within the device */
-			uint8_t                   SourceID; /**< Source ID value of the audio source input into this feature unit */
-
-			uint8_t                   ControlSize; /**< Size of each element in the ChanelControlls array */
-			uint8_t                   ChannelControls[3]; /**< Feature masks for the control channel, and each separate audio channel */
-
-			uint8_t                   FeatureUnitStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_Audio_FeatureUnit_t;
-
-		/** Type define for an Audio class specific input terminal descriptor. This indicates to the host that the device
-		 *  contains an input audio source, either from a physical terminal on the device, or a logical terminal (for example,
-		 *  a USB endpoint). See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   TerminalID; /**< ID value of this terminal unit - must be a unique value within the device */
-			uint16_t                  TerminalType; /**< Type of terminal, a TERMINAL_* mask */
-			uint8_t                   AssociatedOutputTerminal; /**< ID of associated output terminal, for physically grouped terminals
-			                                                     *   such as the speaker and microphone of a phone handset
-			                                                     */
-			uint8_t                   TotalChannels; /**< Total number of separate audio channels within this interface (right, left, etc.) */
-			uint16_t                  ChannelConfig; /**< CHANNEL_* masks indicating what channel layout is supported by this terminal */
-
-			uint8_t                   ChannelStrIndex; /**< Index of a string descriptor describing this channel within the device */
-			uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_Audio_InputTerminal_t;
-
-		/** Type define for an Audio class specific output terminal descriptor. This indicates to the host that the device
-		 *  contains an output audio sink, either to a physical terminal on the device, or a logical terminal (for example,
-		 *  a USB endpoint). See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   TerminalID; /**< ID value of this terminal unit - must be a unique value within the device */
-			uint16_t                  TerminalType; /**< Type of terminal, a TERMINAL_* mask */
-			uint8_t                   AssociatedInputTerminal; /**< ID of associated input terminal, for physically grouped terminals
-			                                                    *   such as the speaker and microphone of a phone handset
-			                                                    */
-			uint8_t                   SourceID; /**< ID value of the unit this terminal's audio is sourced from */
-
-			uint8_t                   TerminalStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_Audio_OutputTerminal_t;
-
-		/** Type define for an Audio class specific streaming interface descriptor. This indicates to the host
-		 *  how audio streams within the device are formatted. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   TerminalLink; /**< ID value of the output terminal this descriptor is describing */
-
-			uint8_t                   FrameDelay; /**< Delay in frames resulting from the complete sample processing from input to output */
-			uint16_t                  AudioFormat; /**< Format of the audio stream, see Audio Device Formats specification */
-		} USB_Audio_Interface_AS_t;
-
-		/** Type define for a 24bit audio sample frequency structure. GCC does not contain a built in 24bit datatype,
-		 *  this this structure is used to build up the value instead. Fill this structure with the SAMPLE_FREQ() macro.
-		 */
-		typedef struct
-		{
-			uint16_t                  LowWord; /**< Low 16 bits of the 24-bit value */
-			uint8_t                   HighByte; /**< Upper 8 bits of the 24-bit value */
-		} Audio_SampleFreq_t;
-
-		/** Type define for an Audio class specific audio format descriptor. This is used to give the host full details
-		 *  about the number of channels, the sample resolution, acceptable sample frequencies and encoding method used
-		 *  in the device's audio streams. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   FormatType; /**< Format of the audio stream, see Audio Device Formats specification */
-			uint8_t                   Channels; /**< Total number of discrete channels in the stream */
-
-			uint8_t                   SubFrameSize; /**< Size in bytes of each channel's sample data in the stream */
-			uint8_t                   BitResolution; /**< Bits of resolution of each channel's samples in the stream */
-
-			uint8_t                   SampleFrequencyType; /**< Total number of sample frequencies supported by the device */
-			Audio_SampleFreq_t        SampleFrequencies[1]; /**< Sample frequencies supported by the device */
-		} USB_Audio_Format_t;
-
-		/** Type define for an Audio class specific endpoint descriptor. This contains a regular endpoint
-		 *  descriptor with a few Audio-class specific extensions. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
-
-			uint8_t                   Refresh; /**< Always set to zero */
-			uint8_t                   SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
-		} USB_Audio_StreamEndpoint_Std_t;
-
-		/** Type define for an Audio class specific extended endpoint descriptor. This contains extra information
-		 *  on the usage of endpoints used to stream audio in and out of the USB Audio device, and follows an Audio
-		 *  class specific extended endpoint descriptor. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   Attributes; /**< Audio class specific endpoint attributes, such as ACCEPTS_SMALL_PACKETS */
-
-			uint8_t                   LockDelayUnits; /**< Units used for the LockDelay field, see Audio class specification */
-			uint16_t                  LockDelay; /**< Time required to internally lock endpoint's internal clock recovery circuitry */
-		} USB_Audio_StreamEndpoint_Spc_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
 		 */
 		typedef struct
 		{
-			USB_Descriptor_Configuration_Header_t Config;
-			USB_Descriptor_Interface_t            Audio_ControlInterface;
-			USB_Audio_Interface_AC_t              Audio_ControlInterface_SPC;
-			USB_Audio_InputTerminal_t             Audio_InputTerminal;
-			USB_Audio_OutputTerminal_t            Audio_OutputTerminal;
-			USB_Descriptor_Interface_t            Audio_StreamInterface_Alt0;
-			USB_Descriptor_Interface_t            Audio_StreamInterface_Alt1;
-			USB_Audio_Interface_AS_t              Audio_StreamInterface_SPC;
-			USB_Audio_Format_t                    Audio_AudioFormat;
-			USB_Audio_StreamEndpoint_Std_t        Audio_StreamEndpoint;
-			USB_Audio_StreamEndpoint_Spc_t        Audio_StreamEndpoint_SPC;
+			USB_Descriptor_Configuration_Header_t     Config;
+			USB_Descriptor_Interface_t                Audio_ControlInterface;
+			USB_Audio_Descriptor_Interface_AC_t       Audio_ControlInterface_SPC;
+			USB_Audio_Descriptor_InputTerminal_t      Audio_InputTerminal;
+			USB_Audio_Descriptor_OutputTerminal_t     Audio_OutputTerminal;
+			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt0;
+			USB_Descriptor_Interface_t                Audio_StreamInterface_Alt1;
+			USB_Audio_Descriptor_Interface_AS_t       Audio_StreamInterface_SPC;
+			USB_Audio_Descriptor_Format_t             Audio_AudioFormat;
+			USB_Audio_Descriptor_StreamEndpoint_Std_t Audio_StreamEndpoint;
+			USB_Audio_Descriptor_StreamEndpoint_Spc_t Audio_StreamEndpoint_SPC;
 		} USB_Descriptor_Configuration_t;
 
 	/* Function Prototypes: */
@@ -312,4 +81,3 @@
 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
 
 #endif
-
diff --git a/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.c b/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.c
index ca5af27702575089e6d1e90c5c69b497c9989d3b..775ab082874295edfec805ec3f16a03396158749 100644
--- a/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.c
+++ b/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.c
@@ -130,24 +130,24 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.CDC1_Functional_Header =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalHeader_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x00,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Header,
 
 			.CDCSpecification       = VERSION_BCD(01.10),
 		},
 
 	.CDC1_Functional_ACM =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalACM_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x02,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_ACM,
 
 			.Capabilities           = 0x06,
 		},
 
 	.CDC1_Functional_Union =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalUnion_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x06,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 
 			.MasterInterfaceNumber  = 0,
 			.SlaveInterfaceNumber   = 1,
@@ -231,24 +231,24 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.CDC2_Functional_Header =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalHeader_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x00,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Header,
 
 			.CDCSpecification       = VERSION_BCD(01.10),
 		},
 
 	.CDC2_Functional_ACM =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalACM_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x02,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_ACM,
 
 			.Capabilities           = 0x06,
 		},
 
 	.CDC2_Functional_Union =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalUnion_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x06,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 
 			.MasterInterfaceNumber  = 2,
 			.SlaveInterfaceNumber   = 3,
diff --git a/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.h b/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.h
index ba876f1dfd5f7dc449b7811607048b5040412d65..5ef3af94a7efe094d9aaf43b20c561698a784a67 100644
--- a/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.h
+++ b/Demos/Device/LowLevel/DualVirtualSerial/Descriptors.h
@@ -42,23 +42,23 @@
 		#include <avr/pgmspace.h>
 
 	/* Macros: */
+		/** Endpoint number of the first CDC interface's device-to-host notification IN endpoint. */
+		#define CDC1_NOTIFICATION_EPNUM        3
+
 		/** Endpoint number of the first CDC interface's device-to-host data IN endpoint. */
 		#define CDC1_TX_EPNUM                  1
 
 		/** Endpoint number of the first CDC interface's host-to-device data OUT endpoint. */
 		#define CDC1_RX_EPNUM                  2
 
-		/** Endpoint number of the first CDC interface's device-to-host notification IN endpoint. */
-		#define CDC1_NOTIFICATION_EPNUM        3
+		/** Endpoint number of the second CDC interface's device-to-host notification IN endpoint. */
+		#define CDC2_NOTIFICATION_EPNUM        4
 
 		/** Endpoint number of the second CDC interface's device-to-host data IN endpoint. */
-		#define CDC2_TX_EPNUM                  4
+		#define CDC2_TX_EPNUM                  5
 
 		/** Endpoint number of the second CDC interface's host-to-device data OUT endpoint. */
-		#define CDC2_RX_EPNUM                  5
-
-		/** Endpoint number of the second CDC interface's device-to-host notification IN endpoint. */
-		#define CDC2_NOTIFICATION_EPNUM        6
+		#define CDC2_RX_EPNUM                  6
 
 		/** Size in bytes of the CDC device-to-host notification IN endpoints. */
 		#define CDC_NOTIFICATION_EPSIZE        8
@@ -67,40 +67,6 @@
 		#define CDC_TXRX_EPSIZE                16
 
 	/* Type Defines: */
-		/** Type define for a CDC class-specific functional header descriptor. This indicates to the host that the device
-		 *  contains one or more CDC functional data descriptors, which give the CDC interface's capabilities and configuration.
-		 *  See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint16_t                CDCSpecification; /**< Version number of the CDC specification implemented by the device,
-			                                           *   encoded in BCD format.
-			                                           */
-		} USB_Descriptor_CDC_FunctionalHeader_t;
-
-		/** Type define for a CDC class-specific functional ACM descriptor. This indicates to the host that the CDC interface
-		 *  supports the CDC ACM subclass of the CDC specification. See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint8_t                 Capabilities; /**< Capabilities of the ACM interface, given as a bit mask. */
-		} USB_Descriptor_CDC_FunctionalACM_t;
-
-		/** Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific
-		 *  CDC control and data interfaces are related. See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint8_t                 MasterInterfaceNumber; /**< Interface number of the CDC Control interface. */
-			uint8_t                 SlaveInterfaceNumber; /**< Interface number of the CDC Data interface. */
-		} USB_Descriptor_CDC_FunctionalUnion_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -110,18 +76,18 @@
 			USB_Descriptor_Configuration_Header_t    Config;
 			USB_Descriptor_Interface_Association_t   CDC1_IAD;
 			USB_Descriptor_Interface_t               CDC1_CCI_Interface;
-			USB_Descriptor_CDC_FunctionalHeader_t    CDC1_Functional_Header;
-			USB_Descriptor_CDC_FunctionalACM_t       CDC1_Functional_ACM;
-			USB_Descriptor_CDC_FunctionalUnion_t     CDC1_Functional_Union;
+			USB_CDC_Descriptor_FunctionalHeader_t    CDC1_Functional_Header;
+			USB_CDC_Descriptor_FunctionalACM_t       CDC1_Functional_ACM;
+			USB_CDC_Descriptor_FunctionalUnion_t     CDC1_Functional_Union;
 			USB_Descriptor_Endpoint_t                CDC1_ManagementEndpoint;
 			USB_Descriptor_Interface_t               CDC1_DCI_Interface;
 			USB_Descriptor_Endpoint_t                CDC1_DataOutEndpoint;
 			USB_Descriptor_Endpoint_t                CDC1_DataInEndpoint;
 			USB_Descriptor_Interface_Association_t   CDC2_IAD;
 			USB_Descriptor_Interface_t               CDC2_CCI_Interface;
-			USB_Descriptor_CDC_FunctionalHeader_t    CDC2_Functional_Header;
-			USB_Descriptor_CDC_FunctionalACM_t       CDC2_Functional_ACM;
-			USB_Descriptor_CDC_FunctionalUnion_t     CDC2_Functional_Union;
+			USB_CDC_Descriptor_FunctionalHeader_t    CDC2_Functional_Header;
+			USB_CDC_Descriptor_FunctionalACM_t       CDC2_Functional_ACM;
+			USB_CDC_Descriptor_FunctionalUnion_t     CDC2_Functional_Union;
 			USB_Descriptor_Endpoint_t                CDC2_ManagementEndpoint;
 			USB_Descriptor_Interface_t               CDC2_DCI_Interface;
 			USB_Descriptor_Endpoint_t                CDC2_DataOutEndpoint;
@@ -135,4 +101,3 @@
 		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);
 
 #endif
-
diff --git a/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.c b/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.c
index 45159a8f8e9e694ffffb3511cd208881ee6e4f52..b1a9d1c56ae644bc5340ec5ebae3c4b08eb88d66 100644
--- a/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.c
+++ b/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.c
@@ -44,10 +44,10 @@
  *  It is possible to completely ignore these value or use other settings as the host is completely unaware of the physical
  *  serial link characteristics and instead sends and receives data in endpoint streams.
  */
-CDC_Line_Coding_t LineEncoding1 = { .BaudRateBPS = 0,
-                                    .CharFormat  = OneStopBit,
-                                    .ParityType  = Parity_None,
-                                    .DataBits    = 8            };
+CDC_LineEncoding_t LineEncoding1 = { .BaudRateBPS = 0,
+                                     .CharFormat  = CDC_LINEENCODING_OneStopBit,
+                                     .ParityType  = CDC_PARITY_None,
+                                     .DataBits    = 8                            };
 
 /** Contains the current baud rate and other settings of the second virtual serial port. While this demo does not use
  *  the physical USART and thus does not use these settings, they must still be retained and returned to the host
@@ -57,10 +57,10 @@ CDC_Line_Coding_t LineEncoding1 = { .BaudRateBPS = 0,
  *  It is possible to completely ignore these value or use other settings as the host is completely unaware of the physical
  *  serial link characteristics and instead sends and receives data in endpoint streams.
  */
-CDC_Line_Coding_t LineEncoding2 = { .BaudRateBPS = 0,
-                                    .CharFormat  = OneStopBit,
-                                    .ParityType  = Parity_None,
-                                    .DataBits    = 8            };
+CDC_LineEncoding_t LineEncoding2 = { .BaudRateBPS = 0,
+                                     .CharFormat  = CDC_LINEENCODING_OneStopBit,
+                                     .ParityType  = CDC_PARITY_None,
+                                     .DataBits    = 8                            };
 
 
 /** Main program entry point. This routine configures the hardware required by the application, then
@@ -158,29 +158,29 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Process CDC specific control requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_GetLineEncoding:
+		case CDC_REQ_GetLineEncoding:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
 
 				/* Write the line coding data to the control endpoint */
-				Endpoint_Write_Control_Stream_LE(LineEncodingData, sizeof(CDC_Line_Coding_t));
+				Endpoint_Write_Control_Stream_LE(LineEncodingData, sizeof(CDC_LineEncoding_t));
 				Endpoint_ClearOUT();
 			}
 
 			break;
-		case REQ_SetLineEncoding:
+		case CDC_REQ_SetLineEncoding:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
 
 				/* Read the line coding data in from the host into the global struct */
-				Endpoint_Read_Control_Stream_LE(LineEncodingData, sizeof(CDC_Line_Coding_t));
+				Endpoint_Read_Control_Stream_LE(LineEncodingData, sizeof(CDC_LineEncoding_t));
 				Endpoint_ClearIN();
 			}
 
 			break;
-		case REQ_SetControlLineState:
+		case CDC_REQ_SetControlLineState:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
diff --git a/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h b/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h
index b66750112f88f196207e5780ad6d36e1552f6694..626bc53731a8c5afc44aa435d752e1644f9faba3 100644
--- a/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h
+++ b/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h
@@ -51,15 +51,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 
 	/* Macros: */
-		/** CDC Class specific request to get the current virtual serial port configuration settings. */
-		#define REQ_GetLineEncoding       0x21
-
-		/** CDC Class specific request to set the current virtual serial port configuration settings. */
-		#define REQ_SetLineEncoding       0x20
-
-		/** CDC Class specific request to set the current virtual serial port handshake line states. */
-		#define REQ_SetControlLineState   0x22
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
@@ -72,41 +63,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for the virtual serial port line encoding settings, for storing the current USART configuration
-		 *  as set by the host via a class specific request.
-		 */
-		typedef struct
-		{
-			uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second */
-			uint8_t  CharFormat; /**< Character format of the virtual serial port, a value from the
-			                      *   CDCDevice_CDC_LineCodingFormats_t enum
-			                      */
-			uint8_t  ParityType; /**< Parity setting of the virtual serial port, a value from the
-			                      *   CDCDevice_LineCodingParity_t enum
-			                      */
-			uint8_t  DataBits; /**< Bits of data per character of the virtual serial port */
-		} CDC_Line_Coding_t;
-
-	/* Enums: */
-		/** Enum for the possible line encoding formats of a virtual serial port. */
-		enum CDCDevice_CDC_LineCodingFormats_t
-		{
-			OneStopBit          = 0, /**< Each frame contains one stop bit */
-			OneAndAHalfStopBits = 1, /**< Each frame contains one and a half stop bits */
-			TwoStopBits         = 2, /**< Each frame contains two stop bits */
-		};
-
-		/** Enum for the possible line encoding parity settings of a virtual serial port. */
-		enum CDCDevice_LineCodingParity_t
-		{
-			Parity_None         = 0, /**< No parity bit mode on each frame */
-			Parity_Odd          = 1, /**< Odd parity bit mode on each frame */
-			Parity_Even         = 2, /**< Even parity bit mode on each frame */
-			Parity_Mark         = 3, /**< Mark parity bit mode on each frame */
-			Parity_Space        = 4, /**< Space parity bit mode on each frame */
-		};
-
 	/* Function Prototypes: */
 		void CDC1_Task(void);
 		void CDC2_Task(void);
diff --git a/Demos/Device/LowLevel/GenericHID/Descriptors.c b/Demos/Device/LowLevel/GenericHID/Descriptors.c
index 4401796450334d0a4dec85e4ef89007a3bc445b5..79cecb587e413c301f6afcef4adeca2752680bef 100644
--- a/Demos/Device/LowLevel/GenericHID/Descriptors.c
+++ b/Demos/Device/LowLevel/GenericHID/Descriptors.c
@@ -130,12 +130,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.HID_GenericHID =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+			.Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
 			.HIDSpec                = VERSION_BCD(01.11),
 			.CountryCode            = 0x00,
 			.TotalReportDescriptors = 1,
-			.HIDReportType          = DTYPE_Report,
+			.HIDReportType          = HID_DTYPE_Report,
 			.HIDReportLength        = sizeof(GenericReport)
 		},
 
@@ -237,11 +237,11 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 			}
 
 			break;
-		case DTYPE_HID:
+		case HID_DTYPE_HID:
 			Address = &ConfigurationDescriptor.HID_GenericHID;
-			Size    = sizeof(USB_Descriptor_HID_t);
+			Size    = sizeof(USB_HID_Descriptor_HID_t);
 			break;
-		case DTYPE_Report:
+		case HID_DTYPE_Report:
 			Address = &GenericReport;
 			Size    = sizeof(GenericReport);
 			break;
diff --git a/Demos/Device/LowLevel/GenericHID/Descriptors.h b/Demos/Device/LowLevel/GenericHID/Descriptors.h
index 2033c27e719812718c2b748e11c7c2ae0ce3532d..4d952e56337b98b1f6528e3f5d116018ab5b8a21 100644
--- a/Demos/Device/LowLevel/GenericHID/Descriptors.h
+++ b/Demos/Device/LowLevel/GenericHID/Descriptors.h
@@ -42,25 +42,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Type Defines: */
-		/** Type define for the HID class specific HID descriptor, to describe the HID device's specifications. Refer to the HID
-		 *  specification for details on the structure elements.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t               Header;
-
-			uint16_t                              HIDSpec;
-			uint8_t                               CountryCode;
-
-			uint8_t                               TotalReportDescriptors;
-
-			uint8_t                               HIDReportType;
-			uint16_t                              HIDReportLength;
-		} USB_Descriptor_HID_t;
-
-		/** Type define for the data type used to store HID report descriptor elements. */
-		typedef uint8_t USB_Descriptor_HIDReport_Datatype_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -69,7 +50,7 @@
 		{
 			USB_Descriptor_Configuration_Header_t Config;
 			USB_Descriptor_Interface_t            HID_Interface;
-			USB_Descriptor_HID_t                  HID_GenericHID;
+			USB_HID_Descriptor_HID_t              HID_GenericHID;
 	        USB_Descriptor_Endpoint_t             HID_ReportINEndpoint;
 	        USB_Descriptor_Endpoint_t             HID_ReportOUTEndpoint;
 		} USB_Descriptor_Configuration_t;
@@ -87,12 +68,6 @@
 		/** Size in bytes of the Generic HID reports (including report ID byte). */
 		#define GENERIC_REPORT_SIZE       8
 
-		/** Descriptor header type value, to indicate a HID class HID descriptor. */
-		#define DTYPE_HID                 0x21
-
-		/** Descriptor header type value, to indicate a HID class HID report descriptor. */
-		#define DTYPE_Report              0x22
-
 	/* Function Prototypes: */
 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 		                                    const uint8_t wIndex,
diff --git a/Demos/Device/LowLevel/GenericHID/GenericHID.c b/Demos/Device/LowLevel/GenericHID/GenericHID.c
index d7c2e37280b77b7433f09a83fa766baf54fe2684..d0e89ca8407e03758053eb89081a49a55bf44d73 100644
--- a/Demos/Device/LowLevel/GenericHID/GenericHID.c
+++ b/Demos/Device/LowLevel/GenericHID/GenericHID.c
@@ -116,7 +116,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Handle HID Class specific requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_GetReport:
+		case HID_REQ_GetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				uint8_t GenericData[GENERIC_REPORT_SIZE];
@@ -130,7 +130,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_SetReport:
+		case HID_REQ_SetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				uint8_t GenericData[GENERIC_REPORT_SIZE];
diff --git a/Demos/Device/LowLevel/GenericHID/GenericHID.h b/Demos/Device/LowLevel/GenericHID/GenericHID.h
index 840902e51f15e67487422763b6a45adc12f48ca9..d8900271c906cdfd7e65127e1915a336f11432aa 100644
--- a/Demos/Device/LowLevel/GenericHID/GenericHID.h
+++ b/Demos/Device/LowLevel/GenericHID/GenericHID.h
@@ -51,12 +51,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 
 	/* Macros: */
-		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport             0x01
-
-		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport             0x09
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
diff --git a/Demos/Device/LowLevel/Joystick/Descriptors.c b/Demos/Device/LowLevel/Joystick/Descriptors.c
index 08674c8d6a4f8b9be15a5310eb92316f411d30f6..fac68871e3c707f53b13399593db917ef28b5783 100644
--- a/Demos/Device/LowLevel/Joystick/Descriptors.c
+++ b/Demos/Device/LowLevel/Joystick/Descriptors.c
@@ -140,12 +140,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.HID_JoystickHID =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+			.Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
 			.HIDSpec                = VERSION_BCD(01.11),
 			.CountryCode            = 0x00,
 			.TotalReportDescriptors = 1,
-			.HIDReportType          = DTYPE_Report,
+			.HIDReportType          = HID_DTYPE_Report,
 			.HIDReportLength        = sizeof(JoystickReport)
 		},
 
@@ -239,7 +239,7 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 			break;
 		case DTYPE_HID:
 			Address = &ConfigurationDescriptor.HID_JoystickHID;
-			Size    = sizeof(USB_Descriptor_HID_t);
+			Size    = sizeof(USB_HID_Descriptor_HID_t);
 			break;
 		case DTYPE_Report:
 			Address = &JoystickReport;
diff --git a/Demos/Device/LowLevel/Joystick/Descriptors.h b/Demos/Device/LowLevel/Joystick/Descriptors.h
index 76f609715e9c9d1911f0a9f5fce4148bfe194374..e58d9a487da12f2b203d779fe62ef4379f30378d 100644
--- a/Demos/Device/LowLevel/Joystick/Descriptors.h
+++ b/Demos/Device/LowLevel/Joystick/Descriptors.h
@@ -42,25 +42,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Type Defines: */
-		/** Type define for the HID class specific HID descriptor, to describe the HID device's specifications. Refer to the HID
-		 *  specification for details on the structure elements.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t               Header;
-
-			uint16_t                              HIDSpec;
-			uint8_t                               CountryCode;
-
-			uint8_t                               TotalReportDescriptors;
-
-			uint8_t                               HIDReportType;
-			uint16_t                              HIDReportLength;
-		} USB_Descriptor_HID_t;
-
-		/** Type define for the data type used to store HID report descriptor elements. */
-		typedef uint8_t USB_Descriptor_HIDReport_Datatype_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -69,7 +50,7 @@
 		{
 			USB_Descriptor_Configuration_Header_t Config;
 			USB_Descriptor_Interface_t            HID_Interface;
-			USB_Descriptor_HID_t                  HID_JoystickHID;
+			USB_HID_Descriptor_HID_t              HID_JoystickHID;
 	        USB_Descriptor_Endpoint_t             HID_ReportINEndpoint;
 		} USB_Descriptor_Configuration_t;
 
diff --git a/Demos/Device/LowLevel/Joystick/Joystick.c b/Demos/Device/LowLevel/Joystick/Joystick.c
index 24f744fdb28796c8156e381b45ee88c0cf285d63..0419a7e50e41e58d8f810f534fecbcb5d3c6cbe1 100644
--- a/Demos/Device/LowLevel/Joystick/Joystick.c
+++ b/Demos/Device/LowLevel/Joystick/Joystick.c
@@ -112,7 +112,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Handle HID Class specific requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_GetReport:
+		case HID_REQ_GetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				USB_JoystickReport_Data_t JoystickReportData;
diff --git a/Demos/Device/LowLevel/Joystick/Joystick.h b/Demos/Device/LowLevel/Joystick/Joystick.h
index e1ae5122852035fbfafdcabf47222ab577e15554..3b02218ad7e324f0ca6508436d365825f287e038 100644
--- a/Demos/Device/LowLevel/Joystick/Joystick.h
+++ b/Demos/Device/LowLevel/Joystick/Joystick.h
@@ -52,9 +52,6 @@
 		#include <LUFA/Drivers/Board/Buttons.h>
 
 	/* Macros: */
-		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport             0x01
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
diff --git a/Demos/Device/LowLevel/Keyboard/Descriptors.c b/Demos/Device/LowLevel/Keyboard/Descriptors.c
index e1a87662fb8ae2e7cb08c5d47255acf665c8def0..711d0ff7e3d7bde8ffd88605d4c6c98aa30f2b56 100644
--- a/Demos/Device/LowLevel/Keyboard/Descriptors.c
+++ b/Demos/Device/LowLevel/Keyboard/Descriptors.c
@@ -147,12 +147,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.HID_KeyboardHID =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+			.Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
 			.HIDSpec                = VERSION_BCD(01.11),
 			.CountryCode            = 0x00,
 			.TotalReportDescriptors = 1,
-			.HIDReportType          = DTYPE_Report,
+			.HIDReportType          = HID_DTYPE_Report,
 			.HIDReportLength        = sizeof(KeyboardReport)
 		},
 
@@ -254,11 +254,11 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 			}
 
 			break;
-		case DTYPE_HID:
+		case HID_DTYPE_HID:
 			Address = &ConfigurationDescriptor.HID_KeyboardHID;
-			Size    = sizeof(USB_Descriptor_HID_t);
+			Size    = sizeof(USB_HID_Descriptor_HID_t);
 			break;
-		case DTYPE_Report:
+		case HID_DTYPE_Report:
 			Address = &KeyboardReport;
 			Size    = sizeof(KeyboardReport);
 			break;
diff --git a/Demos/Device/LowLevel/Keyboard/Descriptors.h b/Demos/Device/LowLevel/Keyboard/Descriptors.h
index 0ee13a4e4ef1c60075e3f85e482553a086f387aa..75922954acb714788cce1245e571e7ce905868b5 100644
--- a/Demos/Device/LowLevel/Keyboard/Descriptors.h
+++ b/Demos/Device/LowLevel/Keyboard/Descriptors.h
@@ -43,25 +43,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Type Defines: */
-		/** Type define for the HID class specific HID descriptor, to describe the HID device's specifications. Refer to the HID
-		 *  specification for details on the structure elements.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header;
-
-			uint16_t                HIDSpec;
-			uint8_t                 CountryCode;
-
-			uint8_t                 TotalReportDescriptors;
-
-			uint8_t                 HIDReportType;
-			uint16_t                HIDReportLength;
-		} USB_Descriptor_HID_t;
-
-		/** Type define for the data type used to store HID report descriptor elements. */
-		typedef uint8_t USB_Descriptor_HIDReport_Datatype_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -70,7 +51,7 @@
 		{
 			USB_Descriptor_Configuration_Header_t Config;
 			USB_Descriptor_Interface_t            HID_Interface;
-			USB_Descriptor_HID_t                  HID_KeyboardHID;
+			USB_HID_Descriptor_HID_t              HID_KeyboardHID;
 	        USB_Descriptor_Endpoint_t             HID_ReportINEndpoint;
 	        USB_Descriptor_Endpoint_t             HID_ReportOUTEndpoint;
 		} USB_Descriptor_Configuration_t;
@@ -85,12 +66,6 @@
 		/** Size in bytes of the Keyboard HID reporting IN and OUT endpoints. */
 		#define KEYBOARD_EPSIZE           8
 
-		/** Descriptor header type value, to indicate a HID class HID descriptor. */
-		#define DTYPE_HID                 0x21
-
-		/** Descriptor header type value, to indicate a HID class HID report descriptor. */
-		#define DTYPE_Report              0x22
-
 	/* Function Prototypes: */
 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 		                                    const uint8_t wIndex,
diff --git a/Demos/Device/LowLevel/Keyboard/Keyboard.c b/Demos/Device/LowLevel/Keyboard/Keyboard.c
index 9d187f8506a22a9d59fbb3e3527f16d995b96f56..d1f52d16c552f7ad9dc801a2d49b58d52a202695 100644
--- a/Demos/Device/LowLevel/Keyboard/Keyboard.c
+++ b/Demos/Device/LowLevel/Keyboard/Keyboard.c
@@ -138,7 +138,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Handle HID Class specific requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_GetReport:
+		case HID_REQ_GetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				USB_KeyboardReport_Data_t KeyboardReportData;
@@ -154,7 +154,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_SetReport:
+		case HID_REQ_SetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -177,7 +177,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_GetProtocol:
+		case HID_REQ_GetProtocol:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -190,7 +190,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_SetProtocol:
+		case HID_REQ_SetProtocol:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -201,7 +201,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_SetIdle:
+		case HID_REQ_SetIdle:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -212,7 +212,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_GetIdle:
+		case HID_REQ_GetIdle:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -251,7 +251,7 @@ void CreateKeyboardReport(USB_KeyboardReport_Data_t* const ReportData)
 	memset(ReportData, 0, sizeof(USB_KeyboardReport_Data_t));
 
 	/* Make sent key uppercase by indicating that the left shift key is pressed */
-	ReportData->Modifier = KEYBOARD_MODIFER_LEFTSHIFT;
+	ReportData->Modifier = HID_KEYBOARD_MODIFER_LEFTSHIFT;
 
 	if (JoyStatus_LCL & JOY_UP)
 	  ReportData->KeyCode[UsedKeyCodes++] = 0x04; // A
@@ -278,13 +278,13 @@ void ProcessLEDReport(const uint8_t LEDReport)
 {
 	uint8_t LEDMask = LEDS_LED2;
 
-	if (LEDReport & KEYBOARD_LED_NUMLOCK)
+	if (LEDReport & HID_KEYBOARD_LED_NUMLOCK)
 	  LEDMask |= LEDS_LED1;
 
-	if (LEDReport & KEYBOARD_LED_CAPSLOCK)
+	if (LEDReport & HID_KEYBOARD_LED_CAPSLOCK)
 	  LEDMask |= LEDS_LED3;
 
-	if (LEDReport & KEYBOARD_LED_SCROLLLOCK)
+	if (LEDReport & HID_KEYBOARD_LED_SCROLLLOCK)
 	  LEDMask |= LEDS_LED4;
 
 	/* Set the status LEDs to the current Keyboard LED status */
@@ -305,7 +305,7 @@ void SendNextReport(void)
 	SendReport = (memcmp(&PrevKeyboardReportData, &KeyboardReportData, sizeof(USB_KeyboardReport_Data_t)) != 0);
 
 	/* Check if the idle period is set and has elapsed */
-	if ((IdleCount != HID_IDLE_CHANGESONLY) && (!(IdleMSRemaining)))
+	if (IdleCount && (!(IdleMSRemaining)))
 	{
 		/* Reset the idle time remaining counter */
 		IdleMSRemaining = IdleCount;
diff --git a/Demos/Device/LowLevel/Keyboard/Keyboard.h b/Demos/Device/LowLevel/Keyboard/Keyboard.h
index 06526566c5cff1a17efa5597d806a57556a436de..d0502e1e50d9343db7ccb10861c3a03561f785ca 100644
--- a/Demos/Device/LowLevel/Keyboard/Keyboard.h
+++ b/Demos/Device/LowLevel/Keyboard/Keyboard.h
@@ -54,63 +54,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 
 	/* Macros: */
-		/** Idle period indicating that reports should be sent only when the inputs have changed. */
-		#define HID_IDLE_CHANGESONLY        0
-
-		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport               0x01
-
-		/** HID Class specific request to get the idle timeout period of the device. */
-		#define REQ_GetIdle                 0x02
-
-		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport               0x09
-
-		/** HID Class specific request to set the idle timeout period of the device. */
-		#define REQ_SetIdle                 0x0A
-
-		/** HID Class specific request to get the current HID protocol in use, either report or boot. */
-		#define REQ_GetProtocol             0x03
-
-		/** HID Class specific request to set the current HID protocol in use, either report or boot. */
-		#define REQ_SetProtocol             0x0B
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTCTRL   (1 << 0)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left shift key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTSHIFT  (1 << 1)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left alt key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTALT    (1 << 2)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left GUI key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTGUI    (1 << 3)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right control key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTCTRL  (1 << 4)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right shift key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTSHIFT (1 << 5)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right alt key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTALT   (1 << 6)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTGUI   (1 << 7)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's NUM LOCK mode is currently set. */
-		#define KEYBOARD_LED_NUMLOCK        (1 << 0)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's CAPS LOCK mode is currently set. */
-		#define KEYBOARD_LED_CAPSLOCK       (1 << 1)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's SCROLL LOCK mode is currently set. */
-		#define KEYBOARD_LED_SCROLLLOCK     (1 << 2)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's KATANA mode is currently set. */
-		#define KEYBOARD_LED_KATANA         (1 << 3)
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY        LEDS_LED1
 
@@ -123,17 +66,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR           (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for the keyboard HID report structure, for creating and sending HID reports to the host PC.
-		 *  This mirrors the layout described to the host in the HID report descriptor, in Descriptors.c.
-		 */
-		typedef struct
-		{
-			uint8_t Modifier; /**< Modifier mask byte, containing a mask of modifier keys set (such as shift or CTRL) */
-			uint8_t Reserved; /**< Reserved, always set as 0x00 */
-			uint8_t KeyCode[6]; /**< Array of up to six simultaneous key codes of pressed keys */
-		} USB_KeyboardReport_Data_t;
-
 	/* Function Prototypes: */
 		void SetupHardware(void);
 		void HID_Task(void);
diff --git a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c
index b04dccdf8900ac65938b89de93d310277e417338..39d6c73e8057537c6e6056517a57af8b1afad81c 100644
--- a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c
+++ b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.c
@@ -180,12 +180,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.HID1_KeyboardHID =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+			.Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
 			.HIDSpec                = VERSION_BCD(01.11),
 			.CountryCode            = 0x00,
 			.TotalReportDescriptors = 1,
-			.HIDReportType          = DTYPE_Report,
+			.HIDReportType          = HID_DTYPE_Report,
 			.HIDReportLength        = sizeof(KeyboardReport)
 		},
 
@@ -227,12 +227,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.HID2_MouseHID =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+			.Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
 			.HIDSpec                = VERSION_BCD(01.11),
 			.CountryCode            = 0x00,
 			.TotalReportDescriptors = 1,
-			.HIDReportType          = DTYPE_Report,
+			.HIDReportType          = HID_DTYPE_Report,
 			.HIDReportLength        = sizeof(MouseReport)
 		},
 
@@ -324,19 +324,19 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 			}
 
 			break;
-		case DTYPE_HID:
+		case HID_DTYPE_HID:
 			if (!(wIndex))
 			{
 				Address = &ConfigurationDescriptor.HID1_KeyboardHID;
-				Size    = sizeof(USB_Descriptor_HID_t);
+				Size    = sizeof(USB_HID_Descriptor_HID_t);
 			}
 			else
 			{
 				Address = &ConfigurationDescriptor.HID2_MouseHID;
-				Size    = sizeof(USB_Descriptor_HID_t);
+				Size    = sizeof(USB_HID_Descriptor_HID_t);
 			}
 			break;
-		case DTYPE_Report:
+		case HID_DTYPE_Report:
 			if (!(wIndex))
 			{
 				Address = &KeyboardReport;
diff --git a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.h b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.h
index 908591c2656ed7acebc63efb0a4d8095b6deedb5..11eadc771eb4827efcaaf3c4f674ec5d8b524b3d 100644
--- a/Demos/Device/LowLevel/KeyboardMouse/Descriptors.h
+++ b/Demos/Device/LowLevel/KeyboardMouse/Descriptors.h
@@ -43,25 +43,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Type Defines: */
-		/** Type define for the HID class specific HID descriptor, to describe the HID device's specifications. Refer to the HID
-		 *  specification for details on the structure elements.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t               Header;
-
-			uint16_t                              HIDSpec;
-			uint8_t                               CountryCode;
-
-			uint8_t                               TotalReportDescriptors;
-
-			uint8_t                               HIDReportType;
-			uint16_t                              HIDReportLength;
-		} USB_Descriptor_HID_t;
-
-		/** Type define for the data type used to store HID report descriptor elements. */
-		typedef uint8_t USB_Descriptor_HIDReport_Datatype_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -70,11 +51,11 @@
 		{
 			USB_Descriptor_Configuration_Header_t Config;
 			USB_Descriptor_Interface_t            HID1_KeyboardInterface;
-			USB_Descriptor_HID_t                  HID1_KeyboardHID;
+			USB_HID_Descriptor_HID_t              HID1_KeyboardHID;
 	        USB_Descriptor_Endpoint_t             HID1_ReportINEndpoint;
 	        USB_Descriptor_Endpoint_t             HID1_ReportOUTEndpoint;
 			USB_Descriptor_Interface_t            HID2_MouseInterface;
-			USB_Descriptor_HID_t                  HID2_MouseHID;
+			USB_HID_Descriptor_HID_t              HID2_MouseHID;
 	        USB_Descriptor_Endpoint_t             HID2_ReportINEndpoint;
 		} USB_Descriptor_Configuration_t;
 
@@ -91,12 +72,6 @@
 		/** Size in bytes of each of the HID reporting IN and OUT endpoints. */
 		#define HID_EPSIZE                8
 
-		/** Descriptor header type value, to indicate a HID class HID descriptor. */
-		#define DTYPE_HID                 0x21
-
-		/** Descriptor header type value, to indicate a HID class HID report descriptor. */
-		#define DTYPE_Report              0x22
-
 	/* Function Prototypes: */
 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 		                                    const uint8_t wIndex,
diff --git a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c
index 67895737873763b5678dd136fdeda7c6fad2b069..fc81445c11022a94d8a30b751807b6ac7040c5ad 100644
--- a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c
+++ b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c
@@ -129,7 +129,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Handle HID Class specific requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_GetReport:
+		case HID_REQ_GetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -155,7 +155,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_SetReport:
+		case HID_REQ_SetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -190,13 +190,13 @@ void Keyboard_ProcessLEDReport(const uint8_t LEDStatus)
 {
 	uint8_t LEDMask = LEDS_LED2;
 
-	if (LEDStatus & KEYBOARD_LED_NUMLOCK)
+	if (LEDStatus & HID_KEYBOARD_LED_NUMLOCK)
 	  LEDMask |= LEDS_LED1;
 
-	if (LEDStatus & KEYBOARD_LED_CAPSLOCK)
+	if (LEDStatus & HID_KEYBOARD_LED_CAPSLOCK)
 	  LEDMask |= LEDS_LED3;
 
-	if (LEDStatus & KEYBOARD_LED_SCROLLLOCK)
+	if (LEDStatus & HID_KEYBOARD_LED_SCROLLLOCK)
 	  LEDMask |= LEDS_LED4;
 
 	/* Set the status LEDs to the current Keyboard LED status */
@@ -219,7 +219,7 @@ void Keyboard_HID_Task(void)
 	if (!(Buttons_GetStatus() & BUTTONS_BUTTON1))
 	{
 		/* Make sent key uppercase by indicating that the left shift key is pressed */
-		KeyboardReportData.Modifier = KEYBOARD_MODIFER_LEFTSHIFT;
+		KeyboardReportData.Modifier = HID_KEYBOARD_MODIFER_LEFTSHIFT;
 
 		if (JoyStatus_LCL & JOY_UP)
 		  KeyboardReportData.KeyCode[0] = 0x04; // A
diff --git a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h
index 40572992db5602093f5f88cb55cbbd9e3f97be8f..bcf77ccd62e31f774e6bc505e03d537a8ffc498c 100644
--- a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h
+++ b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h
@@ -49,54 +49,6 @@
 		#include <LUFA/Drivers/Board/Buttons.h>
 
 	/* Macros: */
-		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport               0x01
-
-		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport               0x09
-
-		/** HID Class specific request to get the current HID protocol in use, either report or boot. */
-		#define REQ_GetProtocol             0x03
-
-		/** HID Class specific request to set the current HID protocol in use, either report or boot. */
-		#define REQ_SetProtocol             0x0B
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left control key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTCTRL   (1 << 0)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left shift key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTSHIFT  (1 << 1)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left alt key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTALT    (1 << 2)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's left GUI key is currently pressed. */
-		#define KEYBOARD_MODIFER_LEFTGUI    (1 << 3)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right control key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTCTRL  (1 << 4)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right shift key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTSHIFT (1 << 5)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right alt key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTALT   (1 << 6)
-
-		/** Constant for a keyboard report modifier byte, indicating that the keyboard's right GUI key is currently pressed. */
-		#define KEYBOARD_MODIFER_RIGHTGUI   (1 << 7)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's NUM LOCK mode is currently set. */
-		#define KEYBOARD_LED_NUMLOCK        (1 << 0)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's CAPS LOCK mode is currently set. */
-		#define KEYBOARD_LED_CAPSLOCK       (1 << 1)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's SCROLL LOCK mode is currently set. */
-		#define KEYBOARD_LED_SCROLLLOCK     (1 << 2)
-
-		/** Constant for a keyboard output report LED byte, indicating that the host's KATANA mode is currently set. */
-		#define KEYBOARD_LED_KATANA         (1 << 3)
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY        LEDS_LED1
 
@@ -109,27 +61,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR           (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for the keyboard HID report structure, for creating and sending HID reports to the host PC.
-		 *  This mirrors the layout described to the host in the HID report descriptor, in Descriptors.c.
-		 */
-		typedef struct
-		{
-			uint8_t Modifier; /**< Modifier mask byte, containing a mask of modifier keys set (such as shift or CTRL) */
-			uint8_t Reserved; /**< Reserved, always set as 0x00 */
-			uint8_t KeyCode[6]; /**< Array of up to six simultaneous key codes of pressed keys */
-		} USB_KeyboardReport_Data_t;
-
-		/** Type define for the mouse HID report structure, for creating and sending HID reports to the host PC.
-		 *  This mirrors the layout described to the host in the HID report descriptor, in Descriptors.c.
-		 */
-		typedef struct
-		{
-			uint8_t Button; /**< Bit mask of the currently pressed mouse buttons */
-			int8_t  X; /**< Current mouse delta X movement, as a signed 8-bit integer */
-			int8_t  Y; /**< Current mouse delta Y movement, as a signed 8-bit integer */
-		} USB_MouseReport_Data_t;
-
 	/* Function Prototypes: */
 		void SetupHardware(void);
 		void Keyboard_ProcessLEDReport(const uint8_t LEDStatus);
diff --git a/Demos/Device/LowLevel/MIDI/Descriptors.c b/Demos/Device/LowLevel/MIDI/Descriptors.c
index 5640c67ca0457a820e2d0d6d3ca18c43275fccc1..d6092bbd4b1ebcb43765c8f94bd367e4949cae30 100644
--- a/Demos/Device/LowLevel/MIDI/Descriptors.c
+++ b/Demos/Device/LowLevel/MIDI/Descriptors.c
@@ -104,14 +104,14 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_ControlInterface_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Interface_AC_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_AudioHeader,
+			.Header                   = {.Size = sizeof(USB_Audio_Descriptor_Interface_AC_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_Header,
 
-			.AudioSpecification       = VERSION_BCD(01.00),
-			.TotalLength              = sizeof(USB_Audio_Interface_AC_t),
+			.ACSpecification          = VERSION_BCD(01.00),
+			.TotalLength              = sizeof(USB_Audio_Descriptor_Interface_AC_t),
 
 			.InCollection             = 1,
-			.InterfaceNumbers         = {1},
+			.InterfaceNumber          = 1,
 		},
 
 	.Audio_StreamInterface =
@@ -132,8 +132,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.Audio_StreamInterface_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_Audio_Interface_MIDI_AS_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_General,
+			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_AudioInterface_AS_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_General,
 
 			.AudioSpecification       = VERSION_BCD(01.00),
 
@@ -143,10 +143,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.MIDI_In_Jack_Emb =
 		{
-			.Header                   = {.Size = sizeof(USB_MIDI_In_Jack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_InputJack,
+			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
 
-			.JackType                 = JACKTYPE_EMBEDDED,
+			.JackType                 = MIDI_JACKTYPE_Embedded,
 			.JackID                   = 0x01,
 
 			.JackStrIndex             = NO_DESCRIPTOR
@@ -154,10 +154,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.MIDI_In_Jack_Ext =
 		{
-			.Header                   = {.Size = sizeof(USB_MIDI_In_Jack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_InputJack,
+			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_InputJack_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_InputTerminal,
 
-			.JackType                 = JACKTYPE_EXTERNAL,
+			.JackType                 = MIDI_JACKTYPE_External,
 			.JackID                   = 0x02,
 
 			.JackStrIndex             = NO_DESCRIPTOR
@@ -165,10 +165,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.MIDI_Out_Jack_Emb =
 		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Out_Jack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_OutputJack,
+			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
 
-			.JackType                 = JACKTYPE_EMBEDDED,
+			.JackType                 = MIDI_JACKTYPE_Embedded,
 			.JackID                   = 0x03,
 
 			.NumberOfPins             = 1,
@@ -180,10 +180,10 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.MIDI_Out_Jack_Ext =
 		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Out_Jack_t), .Type = DTYPE_CSInterface},
-			.Subtype                  = DSUBTYPE_OutputJack,
+			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_OutputJack_t), .Type = DTYPE_CSInterface},
+			.Subtype                  = AUDIO_DSUBTYPE_CSInterface_OutputTerminal,
 
-			.JackType                 = JACKTYPE_EXTERNAL,
+			.JackType                 = MIDI_JACKTYPE_External,
 			.JackID                   = 0x04,
 
 			.NumberOfPins             = 1,
@@ -197,7 +197,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 		{
 			.Endpoint =
 				{
-					.Header              = {.Size = sizeof(USB_Audio_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
+					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
 
 					.EndpointAddress     = (ENDPOINT_DESCRIPTOR_DIR_OUT | MIDI_STREAM_OUT_EPNUM),
 					.Attributes          = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
@@ -211,8 +211,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.MIDI_In_Jack_Endpoint_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = DSUBTYPE_General,
+			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint},
+			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
 
 			.TotalEmbeddedJacks       = 0x01,
 			.AssociatedJackID         = {0x01}
@@ -222,7 +222,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 		{
 			.Endpoint =
 				{
-					.Header              = {.Size = sizeof(USB_Audio_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
+					.Header              = {.Size = sizeof(USB_Audio_Descriptor_StreamEndpoint_Std_t), .Type = DTYPE_Endpoint},
 
 					.EndpointAddress     = (ENDPOINT_DESCRIPTOR_DIR_IN | MIDI_STREAM_IN_EPNUM),
 					.Attributes          = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
@@ -236,8 +236,8 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.MIDI_Out_Jack_Endpoint_SPC =
 		{
-			.Header                   = {.Size = sizeof(USB_MIDI_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint},
-			.Subtype                  = DSUBTYPE_General,
+			.Header                   = {.Size = sizeof(USB_MIDI_Descriptor_Jack_Endpoint_t), .Type = DTYPE_CSEndpoint},
+			.Subtype                  = AUDIO_DSUBTYPE_CSEndpoint_General,
 
 			.TotalEmbeddedJacks       = 0x01,
 			.AssociatedJackID         = {0x03}
diff --git a/Demos/Device/LowLevel/MIDI/Descriptors.h b/Demos/Device/LowLevel/MIDI/Descriptors.h
index abaabb731853b4a4eea4ceeeea6ea7f7c6248175..deae054bb1c2defb00ed4804b9cc076fe6aae4b9 100644
--- a/Demos/Device/LowLevel/MIDI/Descriptors.h
+++ b/Demos/Device/LowLevel/MIDI/Descriptors.h
@@ -42,24 +42,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Macros: */
-		/** Audio class descriptor subtype value for a Audio class specific header descriptor. */
-		#define DSUBTYPE_AudioHeader        0x01
-
-		/** Audio class descriptor subtype value for a Audio class specific MIDI input jack descriptor. */
-		#define DSUBTYPE_InputJack          0x02
-
-		/** Audio class descriptor subtype value for a Audio class specific MIDI output jack descriptor. */
-		#define DSUBTYPE_OutputJack         0x03
-
-		/** Audio class descriptor subtype value for a general Audio class specific descriptor. */
-		#define DSUBTYPE_General            0x01
-
-		/** Audio class descriptor jack type value for an embedded (logical) MIDI input or output jack. */
-		#define JACKTYPE_EMBEDDED           0x01
-
-		/** Audio class descriptor jack type value for an external (physical) MIDI input or output jack. */
-		#define JACKTYPE_EXTERNAL           0x02
-
 		/** Endpoint number of the MIDI streaming data IN endpoint, for device-to-host data transfers. */
 		#define MIDI_STREAM_IN_EPNUM        1
 
@@ -70,110 +52,25 @@
 		#define MIDI_STREAM_EPSIZE          64
 
 	/* Type Defines: */
-		/** Type define for an Audio class specific interface descriptor. This follows a regular interface descriptor to
-		 *  supply extra information about the audio device's layout to the host. See the USB Audio specification for more
-		 *  details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint16_t                  AudioSpecification; /**< Binary coded decimal value, indicating the supported Audio Class specification version */
-			uint16_t                  TotalLength; /**< Total length of the Audio class specific control descriptors, including this descriptor */
-
-			uint8_t                   InCollection; /**< Total number of audio class interfaces within this device */
-			uint8_t                   InterfaceNumbers[1]; /**< Interface numbers of each audio interface */
-		} USB_Audio_Interface_AC_t;
-
-		/** Type define for an Audio class specific MIDI streaming interface descriptor. This indicates to the host
-		 *  how MIDI the specification compliance of the device and the total length of the Audio class specific descriptors.
-		 *  See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint16_t                  AudioSpecification; /**< Binary coded decimal value, indicating the supported Audio Class specification version */
-			uint16_t                  TotalLength; /**< Total length of the Audio class specific descriptors, including this descriptor */
-		} USB_Audio_Interface_MIDI_AS_t;
-
-		/** Type define for an Audio class specific endpoint descriptor. This contains a regular endpoint
-		 *  descriptor with a few Audio-class specific extensions. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Endpoint_t Endpoint; /**< Standard endpoint descriptor describing the audio endpoint */
-
-			uint8_t                   Refresh; /**< Always set to zero */
-			uint8_t                   SyncEndpointNumber; /**< Endpoint address to send synchronization information to, if needed (zero otherwise) */
-		} USB_Audio_StreamEndpoint_Std_t;
-
-		/** Type define for an Audio class specific MIDI IN jack. This gives information to the host on a MIDI input, either
-		 *  a physical input jack, or a logical jack (receiving input data internally, or from the host via an endpoint).
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   JackType; /**< Type of jack, one of the JACKTYPE_* mask values */
-			uint8_t                   JackID; /**< ID value of this jack - must be a unique value within the device */
-
-			uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_MIDI_In_Jack_t;
-
-		/** Type define for an Audio class specific MIDI OUT jack. This gives information to the host on a MIDI output, either
-		 *  a physical output jack, or a logical jack (sending output data internally, or to the host via an endpoint).
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   JackType; /**< Type of jack, one of the JACKTYPE_* mask values */
-			uint8_t                   JackID; /**< ID value of this jack - must be a unique value within the device */
-
-			uint8_t                   NumberOfPins; /**< Number of output channels within the jack, either physical or logical */
-			uint8_t                   SourceJackID[1]; /**< ID of each output pin's source data jack */
-			uint8_t                   SourcePinID[1]; /**< Pin number in the input jack of each output pin's source data */
-
-			uint8_t                   JackStrIndex; /**< Index of a string descriptor describing this descriptor within the device */
-		} USB_MIDI_Out_Jack_t;
-
-		/** Type define for an Audio class specific extended MIDI jack endpoint descriptor. This contains extra information
-		 *  on the usage of MIDI endpoints used to stream MIDI events in and out of the USB Audio device, and follows an Audio
-		 *  class specific extended MIDI endpoint descriptor. See the USB Audio specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t   Header; /**< Regular descriptor header containing the descriptor's type and length */
-			uint8_t                   Subtype; /**< Sub type value used to distinguish between audio class specific descriptors */
-
-			uint8_t                   TotalEmbeddedJacks; /**< Total number of jacks inside this endpoint */
-			uint8_t                   AssociatedJackID[1]; /**< IDs of each jack inside the endpoint */
-		} USB_MIDI_Jack_Endpoint_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
 		 */
 		typedef struct
 		{
-			USB_Descriptor_Configuration_Header_t Config;
-			USB_Descriptor_Interface_t            Audio_ControlInterface;
-			USB_Audio_Interface_AC_t              Audio_ControlInterface_SPC;
-			USB_Descriptor_Interface_t            Audio_StreamInterface;
-			USB_Audio_Interface_MIDI_AS_t         Audio_StreamInterface_SPC;
-			USB_MIDI_In_Jack_t                    MIDI_In_Jack_Emb;
-			USB_MIDI_In_Jack_t                    MIDI_In_Jack_Ext;
-			USB_MIDI_Out_Jack_t                   MIDI_Out_Jack_Emb;
-			USB_MIDI_Out_Jack_t                   MIDI_Out_Jack_Ext;
-			USB_Audio_StreamEndpoint_Std_t        MIDI_In_Jack_Endpoint;
-			USB_MIDI_Jack_Endpoint_t              MIDI_In_Jack_Endpoint_SPC;
-			USB_Audio_StreamEndpoint_Std_t        MIDI_Out_Jack_Endpoint;
-			USB_MIDI_Jack_Endpoint_t              MIDI_Out_Jack_Endpoint_SPC;
+			USB_Descriptor_Configuration_Header_t     Config;
+			USB_Descriptor_Interface_t                Audio_ControlInterface;
+			USB_Audio_Descriptor_Interface_AC_t       Audio_ControlInterface_SPC;
+			USB_Descriptor_Interface_t                Audio_StreamInterface;
+			USB_MIDI_Descriptor_AudioInterface_AS_t   Audio_StreamInterface_SPC;
+			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Emb;
+			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Ext;
+			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Emb;
+			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Ext;
+			USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_In_Jack_Endpoint;
+			USB_MIDI_Descriptor_Jack_Endpoint_t       MIDI_In_Jack_Endpoint_SPC;
+			USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_Out_Jack_Endpoint;
+			USB_MIDI_Descriptor_Jack_Endpoint_t       MIDI_Out_Jack_Endpoint_SPC;
 		} USB_Descriptor_Configuration_t;
 
 	/* Function Prototypes: */
diff --git a/Demos/Device/LowLevel/MIDI/MIDI.c b/Demos/Device/LowLevel/MIDI/MIDI.c
index 4696d23368451b464373ef14dc637b8b5d2bc75a..05a3a71fc89005c1fe4d16a2370b0f392ee2f374 100644
--- a/Demos/Device/LowLevel/MIDI/MIDI.c
+++ b/Demos/Device/LowLevel/MIDI/MIDI.c
@@ -160,7 +160,7 @@ void MIDI_Task(void)
 		/* Check if a MIDI command is to be sent */
 		if (MIDICommand)
 		{
-			USB_MIDI_EventPacket_t MIDIEvent = (USB_MIDI_EventPacket_t)
+			MIDI_EventPacket_t MIDIEvent = (MIDI_EventPacket_t)
 				{
 					.CableNumber = 0,
 					.Command     = (MIDICommand >> 4),
@@ -187,7 +187,7 @@ void MIDI_Task(void)
 	/* Check if a MIDI command has been received */
 	if (Endpoint_IsOUTReceived())
 	{
-		USB_MIDI_EventPacket_t MIDIEvent;
+		MIDI_EventPacket_t MIDIEvent;
 
 		/* Read the MIDI event packet from the endpoint */
 		Endpoint_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent));
diff --git a/Demos/Device/LowLevel/MIDI/MIDI.h b/Demos/Device/LowLevel/MIDI/MIDI.h
index e2f39f3bd22f742c70638c8d286b8852163b495e..36a1afc45e7c1c445b9e0509bd58afdde9acbcc1 100644
--- a/Demos/Device/LowLevel/MIDI/MIDI.h
+++ b/Demos/Device/LowLevel/MIDI/MIDI.h
@@ -52,22 +52,6 @@
 		#include <LUFA/Drivers/Board/Buttons.h>
 
    /* Macros: */
-		/** MIDI command for a note on (activation) event. */
-		#define MIDI_COMMAND_NOTE_ON      0x90
-
-		/** MIDI command for a note off (deactivation) event. */
-		#define MIDI_COMMAND_NOTE_OFF     0x80
-
-		/** Standard key press velocity value used for all note events, as no pressure sensor is mounted. */
-		#define MIDI_STANDARD_VELOCITY    64
-
-		/** Convenience macro. MIDI channels are numbered from 1-10 (natural numbers) however the logical channel
-		 *  addresses are zero-indexed. This converts a natural MIDI channel number into the logical channel address.
-		 *
-		 *  \param[in] channel  MIDI channel number to address
-		 */
-		#define MIDI_CHANNEL(channel)    ((channel) - 1)
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
@@ -80,18 +64,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for a USB MIDI event packet, used to encapsulate sent and received MIDI messages from a USB MIDI interface. */
-		typedef struct
-		{
-			unsigned char Command     : 4; /**< MIDI command being sent or received in the event packet */
-			unsigned char CableNumber : 4; /**< Virtual cable number of the event being sent or received in the given MIDI interface */
-
-			uint8_t Data1; /**< First byte of data in the MIDI event */
-			uint8_t Data2; /**< Second byte of data in the MIDI event */
-			uint8_t Data3; /**< Third byte of data in the MIDI event */
-		} USB_MIDI_EventPacket_t;
-
    /* Function Prototypes: */
 		void SetupHardware(void);
 		void MIDI_Task(void);
diff --git a/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h b/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
index 0c4869df47a8ae21d9794ce9dab41597e76f2cb1..5a7a3e0a1e84d6610cb9a2e793124fdc8da23ef9 100644
--- a/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
+++ b/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
@@ -47,7 +47,6 @@
 		#include "MassStorage.h"
 		#include "Descriptors.h"
 		#include "DataflashManager.h"
-		#include "SCSI_Codes.h"
 
 	/* Macros: */
 		/** Macro to set the current SCSI sense data to the given key, additional sense code and additional sense qualifier. This
@@ -109,7 +108,7 @@
 			uint8_t       VendorID[8];
 			uint8_t       ProductID[16];
 			uint8_t       RevisionID[4];
-		} SCSI_Inquiry_Response_t;
+		} MS_SCSI_Inquiry_Response_t;
 
 		/** Type define for a SCSI sense structure to a SCSI REQUEST SENSE command. For details of the
 		 *  structure contents, refer to the SCSI specifications.
@@ -133,7 +132,7 @@
 			uint8_t       AdditionalSenseQualifier;
 			uint8_t       FieldReplaceableUnitCode;
 			uint8_t       SenseKeySpecific[3];
-		} SCSI_Request_Sense_Response_t;
+		} MS_SCSI_Request_Sense_Response_t;
 
 	/* Function Prototypes: */
 		bool SCSI_DecodeSCSICommand(void);
diff --git a/Demos/Device/LowLevel/MassStorage/Lib/SCSI_Codes.h b/Demos/Device/LowLevel/MassStorage/Lib/SCSI_Codes.h
deleted file mode 100644
index 6bcd5780f71e23b7aa8ab20b77bd29be898b2b53..0000000000000000000000000000000000000000
--- a/Demos/Device/LowLevel/MassStorage/Lib/SCSI_Codes.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2010.
-
-  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 containing macros for possible SCSI commands and SENSE data. Refer to
- *  the SCSI standard documentation for more information on each SCSI command and
- *  the SENSE data.
- */
-
-#ifndef _SCSI_CODES_H_
-#define _SCSI_CODES_H_
-
-	/* Macros: */
-		#define SCSI_CMD_INQUIRY                               0x12
-		#define SCSI_CMD_REQUEST_SENSE                         0x03
-		#define SCSI_CMD_TEST_UNIT_READY                       0x00
-		#define SCSI_CMD_READ_CAPACITY_10                      0x25
-		#define SCSI_CMD_SEND_DIAGNOSTIC                       0x1D
-		#define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL          0x1E
-		#define SCSI_CMD_WRITE_10                              0x2A
-		#define SCSI_CMD_READ_10                               0x28
-		#define SCSI_CMD_WRITE_6                               0x0A
-		#define SCSI_CMD_READ_6                                0x08
-		#define SCSI_CMD_VERIFY_10                             0x2F
-		#define SCSI_CMD_MODE_SENSE_6                          0x1A
-		#define SCSI_CMD_MODE_SENSE_10                         0x5A
-
-		#define SCSI_SENSE_KEY_GOOD                            0x00
-		#define SCSI_SENSE_KEY_RECOVERED_ERROR                 0x01
-		#define SCSI_SENSE_KEY_NOT_READY                       0x02
-		#define SCSI_SENSE_KEY_MEDIUM_ERROR                    0x03
-		#define SCSI_SENSE_KEY_HARDWARE_ERROR                  0x04
-		#define SCSI_SENSE_KEY_ILLEGAL_REQUEST                 0x05
-		#define SCSI_SENSE_KEY_UNIT_ATTENTION                  0x06
-		#define SCSI_SENSE_KEY_DATA_PROTECT                    0x07
-		#define SCSI_SENSE_KEY_BLANK_CHECK                     0x08
-		#define SCSI_SENSE_KEY_VENDOR_SPECIFIC                 0x09
-		#define SCSI_SENSE_KEY_COPY_ABORTED                    0x0A
-		#define SCSI_SENSE_KEY_ABORTED_COMMAND                 0x0B
-		#define SCSI_SENSE_KEY_VOLUME_OVERFLOW                 0x0D
-		#define SCSI_SENSE_KEY_MISCOMPARE                      0x0E
-
-		#define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION          0x00
-		#define SCSI_ASENSE_LOGICAL_UNIT_NOT_READY             0x04
-		#define SCSI_ASENSE_INVALID_COMMAND                    0x20
-		#define SCSI_ASENSE_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE 0x21
-		#define SCSI_ASENSE_INVALID_FIELD_IN_CDB               0x24
-		#define SCSI_ASENSE_WRITE_PROTECTED                    0x27
-		#define SCSI_ASENSE_NOT_READY_TO_READY_CHANGE          0x28
-		#define SCSI_ASENSE_FORMAT_ERROR                       0x31
-		#define SCSI_ASENSE_MEDIUM_NOT_PRESENT                 0x3A
-
-		#define SCSI_ASENSEQ_NO_QUALIFIER                      0x00
-		#define SCSI_ASENSEQ_FORMAT_COMMAND_FAILED             0x01
-		#define SCSI_ASENSEQ_INITIALIZING_COMMAND_REQUIRED     0x02
-		#define SCSI_ASENSEQ_OPERATION_IN_PROGRESS             0x07
-
-#endif
-
diff --git a/Demos/Device/LowLevel/MassStorage/MassStorage.c b/Demos/Device/LowLevel/MassStorage/MassStorage.c
index a168061f5f6996d0caacd45ad9ca00842584e755..9eb964e758caaf947a4ec571cf8fd790d5d571a0 100644
--- a/Demos/Device/LowLevel/MassStorage/MassStorage.c
+++ b/Demos/Device/LowLevel/MassStorage/MassStorage.c
@@ -38,13 +38,13 @@
 #include "MassStorage.h"
 
 /** Structure to hold the latest Command Block Wrapper issued by the host, containing a SCSI command to execute. */
-CommandBlockWrapper_t  CommandBlock;
+MS_CommandBlockWrapper_t  CommandBlock;
 
 /** Structure to hold the latest Command Status Wrapper to return to the host, containing the status of the last issued command. */
-CommandStatusWrapper_t CommandStatus = { .Signature = CSW_SIGNATURE };
+MS_CommandStatusWrapper_t CommandStatus = { .Signature = MS_CSW_SIGNATURE };
 
 /** Flag to asynchronously abort any in-progress data transfers upon the reception of a mass storage reset command. */
-volatile bool          IsMassStoreReset = false;
+volatile bool IsMassStoreReset = false;
 
 
 /** Main program entry point. This routine configures the hardware required by the application, then
@@ -129,7 +129,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Process UFI specific control requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_MassStorageReset:
+		case MS_REQ_MassStorageReset:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -140,7 +140,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_GetMaxLUN:
+		case MS_REQ_GetMaxLUN:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -172,11 +172,11 @@ void MassStorage_Task(void)
 		LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
 
 		/* Check direction of command, select Data IN endpoint if data is from the device */
-		if (CommandBlock.Flags & COMMAND_DIRECTION_DATA_IN)
+		if (CommandBlock.Flags & MS_COMMAND_DIR_DATA_IN)
 		  Endpoint_SelectEndpoint(MASS_STORAGE_IN_EPNUM);
 
 		/* Decode the received SCSI command, set returned status code */
-		CommandStatus.Status = SCSI_DecodeSCSICommand() ? Command_Pass : Command_Fail;
+		CommandStatus.Status = SCSI_DecodeSCSICommand() ? MS_SCSI_COMMAND_Pass : MS_SCSI_COMMAND_Fail;
 
 		/* Load in the CBW tag into the CSW to link them together */
 		CommandStatus.Tag = CommandBlock.Tag;
@@ -185,7 +185,7 @@ void MassStorage_Task(void)
 		CommandStatus.DataTransferResidue = CommandBlock.DataTransferLength;
 
 		/* Stall the selected data pipe if command failed (if data is still to be transferred) */
-		if ((CommandStatus.Status == Command_Fail) && (CommandStatus.DataTransferResidue))
+		if ((CommandStatus.Status == MS_SCSI_COMMAND_Fail) && (CommandStatus.DataTransferResidue))
 		  Endpoint_StallTransaction();
 
 		/* Return command status block to the host */
@@ -237,11 +237,11 @@ static bool ReadInCommandBlock(void)
 	  return false;
 
 	/* Verify the command block - abort if invalid */
-	if ((CommandBlock.Signature         != CBW_SIGNATURE) ||
-	    (CommandBlock.LUN               >= TOTAL_LUNS)    ||
-		(CommandBlock.Flags              & 0x1F)          ||
-		(CommandBlock.SCSICommandLength == 0)             ||
-		(CommandBlock.SCSICommandLength >  MAX_SCSI_COMMAND_LENGTH))
+	if ((CommandBlock.Signature         != MS_CBW_SIGNATURE) ||
+	    (CommandBlock.LUN               >= TOTAL_LUNS)       ||
+		(CommandBlock.Flags              & 0x1F)             ||
+		(CommandBlock.SCSICommandLength == 0)                ||
+		(CommandBlock.SCSICommandLength >  sizeof(CommandBlock.SCSICommandData)))
 	{
 		/* Stall both data pipes until reset by host */
 		Endpoint_StallTransaction();
diff --git a/Demos/Device/LowLevel/MassStorage/MassStorage.h b/Demos/Device/LowLevel/MassStorage/MassStorage.h
index d993a9a5dc4fd0ba652b6171fb2437b339d1821c..825d96912b7d9df876961afcdd2f878b42e50582 100644
--- a/Demos/Device/LowLevel/MassStorage/MassStorage.h
+++ b/Demos/Device/LowLevel/MassStorage/MassStorage.h
@@ -53,27 +53,6 @@
 		#include <LUFA/Drivers/Board/Dataflash.h>
 
 	/* Macros: */
-		/** Mass Storage Class specific request to reset the Mass Storage interface, ready for the next command. */
-		#define REQ_MassStorageReset       0xFF
-
-		/** Mass Storage Class specific request to retrieve the total number of Logical Units (drives) in the SCSI device. */
-		#define REQ_GetMaxLUN              0xFE
-
-		/** Maximum length of a SCSI command which can be issued by the device or host in a Mass Storage bulk wrapper. */
-		#define MAX_SCSI_COMMAND_LENGTH    16
-
-		/** Magic signature for a Command Block Wrapper used in the Mass Storage Bulk-Only transport protocol. */
-		#define CBW_SIGNATURE              0x43425355UL
-
-		/** Magic signature for a Command Status Wrapper used in the Mass Storage Bulk-Only transport protocol. */
-		#define CSW_SIGNATURE              0x53425355UL
-
-		/** Mask for a Command Block Wrapper's flags attribute to specify a command with data sent from host-to-device. */
-		#define COMMAND_DIRECTION_DATA_OUT (0 << 7)
-
-		/** Mask for a Command Block Wrapper's flags attribute to specify a command with data sent from device-to-host. */
-		#define COMMAND_DIRECTION_DATA_IN  (1 << 7)
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY       LEDS_LED1
 
@@ -89,41 +68,10 @@
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
 		#define LEDMASK_USB_BUSY           LEDS_LED2
 
-	/* Type Defines: */
-		/** Type define for a Command Block Wrapper, used in the Mass Storage Bulk-Only Transport protocol. */
-		typedef struct
-		{
-			uint32_t Signature; /**< Command block signature, must be CBW_SIGNATURE to indicate a valid Command Block */
-			uint32_t Tag; /**< Unique command ID value, to associate a command block wrapper with its command status wrapper */
-			uint32_t DataTransferLength; /**< Length of the optional data portion of the issued command, in bytes */
-			uint8_t  Flags; /**< Command block flags, indicating command data direction */
-			uint8_t  LUN; /**< Logical Unit number this command is issued to */
-			uint8_t  SCSICommandLength; /**< Length of the issued SCSI command within the SCSI command data array */
-			uint8_t  SCSICommandData[MAX_SCSI_COMMAND_LENGTH]; /**< Issued SCSI command in the Command Block */
-		} CommandBlockWrapper_t;
-
-		/** Type define for a Command Status Wrapper, used in the Mass Storage Bulk-Only Transport protocol. */
-		typedef struct
-		{
-			uint32_t Signature; /**< Status block signature, must be CSW_SIGNATURE to indicate a valid Command Status */
-			uint32_t Tag; /**< Unique command ID value, to associate a command block wrapper with its command status wrapper */
-			uint32_t DataTransferResidue; /**< Number of bytes of data not processed in the SCSI command */
-			uint8_t  Status; /**< Status code of the issued command - a value from the MassStorage_CommandStatusCodes_t enum */
-		} CommandStatusWrapper_t;
-
-	/* Enums: */
-		/** Enum for the possible command status wrapper return status codes. */
-		enum MassStorage_CommandStatusCodes_t
-		{
-			Command_Pass = 0, /**< Command completed with no error */
-			Command_Fail = 1, /**< Command failed to complete - host may check the exact error via a SCSI REQUEST SENSE command */
-			Phase_Error  = 2  /**< Command failed due to being invalid in the current phase */
-		};
-
 	/* Global Variables: */
-		extern CommandBlockWrapper_t  CommandBlock;
-		extern CommandStatusWrapper_t CommandStatus;
-		extern volatile bool          IsMassStoreReset;
+		extern MS_CommandBlockWrapper_t  CommandBlock;
+		extern MS_CommandStatusWrapper_t CommandStatus;
+		extern volatile bool             IsMassStoreReset;
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Demos/Device/LowLevel/Mouse/Descriptors.c b/Demos/Device/LowLevel/Mouse/Descriptors.c
index d6caf51cdb10ab0da5102cf770a6fcc5c7aec36c..dab5425e43f92a4395ff4099838bb52f8710b389 100644
--- a/Demos/Device/LowLevel/Mouse/Descriptors.c
+++ b/Demos/Device/LowLevel/Mouse/Descriptors.c
@@ -140,12 +140,12 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.HID_MouseHID =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_HID_t), .Type = DTYPE_HID},
+			.Header                 = {.Size = sizeof(USB_HID_Descriptor_HID_t), .Type = HID_DTYPE_HID},
 
 			.HIDSpec                = VERSION_BCD(01.11),
 			.CountryCode            = 0x00,
 			.TotalReportDescriptors = 1,
-			.HIDReportType          = DTYPE_Report,
+			.HIDReportType          = HID_DTYPE_Report,
 			.HIDReportLength        = sizeof(MouseReport)
 		},
 
@@ -237,11 +237,11 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 			}
 
 			break;
-		case DTYPE_HID:
+		case HID_DTYPE_HID:
 			Address = &ConfigurationDescriptor.HID_MouseHID;
-			Size    = sizeof(USB_Descriptor_HID_t);
+			Size    = sizeof(USB_HID_Descriptor_HID_t);
 			break;
-		case DTYPE_Report:
+		case HID_DTYPE_Report:
 			Address = &MouseReport;
 			Size    = sizeof(MouseReport);
 			break;
diff --git a/Demos/Device/LowLevel/Mouse/Descriptors.h b/Demos/Device/LowLevel/Mouse/Descriptors.h
index 2d9a329d0b13e32ef2dd401938e2a2c379895d60..6765223b5b896b221597f6329e9d4788e0cace31 100644
--- a/Demos/Device/LowLevel/Mouse/Descriptors.h
+++ b/Demos/Device/LowLevel/Mouse/Descriptors.h
@@ -42,25 +42,6 @@
 		#include <avr/pgmspace.h>
 
 	/* Type Defines: */
-		/** Type define for the HID class specific HID descriptor, to describe the HID device's specifications. Refer to the HID
-		 *  specification for details on the structure elements.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header;
-
-			uint16_t                HIDSpec;
-			uint8_t                 CountryCode;
-
-			uint8_t                 TotalReportDescriptors;
-
-			uint8_t                 HIDReportType;
-			uint16_t                HIDReportLength;
-		} USB_Descriptor_HID_t;
-
-		/** Type define for the data type used to store HID report descriptor elements. */
-		typedef uint8_t USB_Descriptor_HIDReport_Datatype_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -69,7 +50,7 @@
 		{
 			USB_Descriptor_Configuration_Header_t Config;
 			USB_Descriptor_Interface_t            HID_Interface;
-			USB_Descriptor_HID_t                  HID_MouseHID;
+			USB_HID_Descriptor_HID_t              HID_MouseHID;
 	        USB_Descriptor_Endpoint_t             HID_ReportINEndpoint;
 		} USB_Descriptor_Configuration_t;
 
@@ -80,12 +61,6 @@
 		/** Size in bytes of the Mouse HID reporting IN endpoint. */
 		#define MOUSE_EPSIZE              8
 
-		/** Descriptor header type value, to indicate a HID class HID descriptor. */
-		#define DTYPE_HID                 0x21
-
-		/** Descriptor header type value, to indicate a HID class HID report descriptor. */
-		#define DTYPE_Report              0x22
-
 	/* Function Prototypes: */
 		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
 		                                    const uint8_t wIndex,
diff --git a/Demos/Device/LowLevel/Mouse/Mouse.c b/Demos/Device/LowLevel/Mouse/Mouse.c
index 23df2a610be0353bf515852b5cb4b14c65efa087..5df26bde8b27eb8567a235ba1bbd0553c8236493 100644
--- a/Demos/Device/LowLevel/Mouse/Mouse.c
+++ b/Demos/Device/LowLevel/Mouse/Mouse.c
@@ -44,7 +44,7 @@ bool UsingReportProtocol = true;
 /** Current Idle period. This is set by the host via a Set Idle HID class request to silence the device's reports
  *  for either the entire idle duration, or until the report status changes (e.g. the user moves the mouse).
  */
-uint16_t IdleCount = HID_IDLE_CHANGESONLY;
+uint16_t IdleCount = 0;
 
 /** Current Idle period remaining. When the IdleCount value is set, this tracks the remaining number of idle
  *  milliseconds. This is separate to the IdleCount timer and is incremented and compared as the host may request
@@ -135,7 +135,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Handle HID Class specific requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_GetReport:
+		case HID_REQ_GetReport:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				USB_MouseReport_Data_t MouseReportData;
@@ -154,7 +154,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_GetProtocol:
+		case HID_REQ_GetProtocol:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -167,7 +167,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_SetProtocol:
+		case HID_REQ_SetProtocol:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -178,7 +178,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_SetIdle:
+		case HID_REQ_SetIdle:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -189,7 +189,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_GetIdle:
+		case HID_REQ_GetIdle:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -261,7 +261,7 @@ void SendNextReport(void)
 	  SendReport = true;
 
 	/* Check if the idle period is set and has elapsed */
-	if ((IdleCount != HID_IDLE_CHANGESONLY) && (!(IdleMSRemaining)))
+	if (IdleCount && (!(IdleMSRemaining)))
 	{
 		/* Reset the idle time remaining counter */
 		IdleMSRemaining = IdleCount;
diff --git a/Demos/Device/LowLevel/Mouse/Mouse.h b/Demos/Device/LowLevel/Mouse/Mouse.h
index f551f5d6e1fe5ea87bbcc58620bc80c74c739050..7158b7736108d0ee57efedb5e45c748204d100b1 100644
--- a/Demos/Device/LowLevel/Mouse/Mouse.h
+++ b/Demos/Device/LowLevel/Mouse/Mouse.h
@@ -53,27 +53,6 @@
 		#include <LUFA/Drivers/Board/Buttons.h>
 
 	/* Macros: */
-		/** Idle period indicating that reports should be sent only when the inputs have changed */
-		#define HID_IDLE_CHANGESONLY      0
-
-		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport             0x01
-
-		/** HID Class specific request to get the idle timeout period of the device. */
-		#define REQ_GetIdle               0x02
-
-		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport             0x09
-
-		/** HID Class specific request to set the idle timeout period of the device. */
-		#define REQ_SetIdle               0x0A
-
-		/** HID Class specific request to get the current HID protocol in use, either report or boot. */
-		#define REQ_GetProtocol           0x03
-
-		/** HID Class specific request to set the current HID protocol in use, either report or boot. */
-		#define REQ_SetProtocol           0x0B
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
@@ -86,17 +65,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for the mouse HID report structure, for creating and sending HID reports to the host PC.
-		 *  This mirrors the layout described to the host in the HID report descriptor, in Descriptors.c.
-		 */
-		typedef struct
-		{
-			uint8_t Button; /**< Bit mask of the currently pressed mouse buttons */
-			int8_t  X; /**< Current mouse delta X movement, as a signed 8-bit integer */
-			int8_t  Y; /**< Current mouse delta Y movement, as a signed 8-bit integer */
-		} USB_MouseReport_Data_t;
-
 	/* Function Prototypes: */
 		void SetupHardware(void);
 		void Mouse_Task(void);
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Descriptors.c b/Demos/Device/LowLevel/RNDISEthernet/Descriptors.c
index 97da47e694695a09afda47cc1a6f433d88f37c2a..33f1dfe93e00df3aac980b952e5bebe937d6ea46 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Descriptors.c
+++ b/Demos/Device/LowLevel/RNDISEthernet/Descriptors.c
@@ -104,24 +104,24 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.CDC_Functional_Header =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalHeader_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x00,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Header,
 
 			.CDCSpecification       = VERSION_BCD(01.10),
 		},
 
 	.CDC_Functional_ACM =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalACM_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x02,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_ACM,
 
 			.Capabilities           = 0x00,
 		},
 
 	.CDC_Functional_Union =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalUnion_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x06,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 
 			.MasterInterfaceNumber  = 0,
 			.SlaveInterfaceNumber   = 1,
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h b/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h
index 34d64e0075e5a4b9c43f750a42a88be3592107fb..c24462d2919e15d5b0ba7f238e7d4049018b6dfb 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/Descriptors.h
@@ -58,40 +58,6 @@
 		#define CDC_NOTIFICATION_EPSIZE        8
 
 	/* Type Defines: */
-		/** Type define for a CDC class-specific functional header descriptor. This indicates to the host that the device
-		 *  contains one or more CDC functional data descriptors, which give the CDC interface's capabilities and configuration.
-		 *  See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint16_t                CDCSpecification; /**< Version number of the CDC specification implemented by the device,
-			                                           *   encoded in BCD format.
-			                                           */
-		} USB_Descriptor_CDC_FunctionalHeader_t;
-
-		/** Type define for a CDC class-specific functional ACM descriptor. This indicates to the host that the CDC interface
-		 *  supports the CDC ACM subclass of the CDC specification. See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint8_t                 Capabilities; /**< Capabilities of the ACM interface, given as a bit mask. */
-		} USB_Descriptor_CDC_FunctionalACM_t;
-
-		/** Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific
-		 *  CDC control and data interfaces are related. See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint8_t                 MasterInterfaceNumber; /**< Interface number of the CDC Control interface. */
-			uint8_t                 SlaveInterfaceNumber; /**< Interface number of the CDC Data interface. */
-		} USB_Descriptor_CDC_FunctionalUnion_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -100,9 +66,9 @@
 		{
 			USB_Descriptor_Configuration_Header_t    Config;
 			USB_Descriptor_Interface_t               CDC_CCI_Interface;
-			USB_Descriptor_CDC_FunctionalHeader_t    CDC_Functional_Header;
-			USB_Descriptor_CDC_FunctionalACM_t       CDC_Functional_ACM;
-			USB_Descriptor_CDC_FunctionalUnion_t     CDC_Functional_Union;
+			USB_CDC_Descriptor_FunctionalHeader_t    CDC_Functional_Header;
+			USB_CDC_Descriptor_FunctionalACM_t       CDC_Functional_ACM;
+			USB_CDC_Descriptor_FunctionalUnion_t     CDC_Functional_Union;
 			USB_Descriptor_Endpoint_t                CDC_NotificationEndpoint;
 			USB_Descriptor_Interface_t               CDC_DCI_Interface;
 			USB_Descriptor_Endpoint_t                RNDIS_DataOutEndpoint;
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.h b/Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.h
index d97761539ba4804a57144fe62758410b52582e2a..b8e312c93729cc0feb86e15f5e9cc6715822d169 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/ARP.h
@@ -40,6 +40,8 @@
 		#include <avr/io.h>
 		#include <string.h>
 
+		#include <LUFA/Drivers/USB/USB.h>
+
 		#include "EthernetProtocols.h"
 		#include "Ethernet.h"
 		#include "ProtocolDecoders.h"
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h b/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h
index 68fffb48f9c360d846a011d4c4c4b9a6be798104..52d120dbb0b77ff1be7670a9fbeded2d3a8c6d48 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/Ethernet.h
@@ -81,14 +81,6 @@
 		#define NO_PROCESS                       -1
 
 	/* Type Defines: */
-		/** Type define for an Ethernet frame buffer. */
-		typedef struct
-		{
-			uint8_t       FrameData[ETHERNET_FRAME_SIZE_MAX]; /**< Ethernet frame contents */
-			uint16_t      FrameLength; /**< Length in bytes of the Ethernet frame stored in the buffer */
-			bool          FrameInBuffer; /**< Indicates if a frame is currently stored in the buffer */
-		} Ethernet_Frame_Info_t;
-
 		/** Type define for an Ethernet frame header. */
 		typedef struct
 		{
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/EthernetProtocols.h b/Demos/Device/LowLevel/RNDISEthernet/Lib/EthernetProtocols.h
index 8f529d6b4fdeb5272206dafa76c0d81b0bbc9967..4c1caaa88c20b520b3259c801a3c1fa1b25605a3 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Lib/EthernetProtocols.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/EthernetProtocols.h
@@ -76,7 +76,7 @@
 		typedef struct
 		{
 			uint8_t       Octets[6]; /**< Individual bytes of a MAC address */
-		} MAC_Address_t;
+		} RNDIS_MAC_Address_t;
 
 		/** Type define for a protocol IP address of a device on a network. */
 		typedef struct
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.c b/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.c
index 52055700337657e806b5f3c5947a0094fe6ff688..2a537e2ae415a5f47f7fb7a7adafbb2ce8bb0864 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.c
+++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.c
@@ -264,7 +264,7 @@ static bool ProcessNDISQuery(const uint32_t OId, void* QueryData, uint16_t Query
 			*ResponseSize = sizeof(uint32_t);
 
 			/* Always indicate hardware ready */
-			*((uint32_t*)ResponseData) = NdisHardwareStatusReady;
+			*((uint32_t*)ResponseData) = NDIS_HardwareStatus_Ready;
 
 			return true;
 		case OID_GEN_MEDIA_SUPPORTED:
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.h b/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.h
index ed35b35467e695c7e3932dda0efaa473bd3bf428..00ce8696127b9c70aaafabde8d2cb496343b501f 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDIS.h
@@ -44,167 +44,6 @@
 		#include "RNDISConstants.h"
 		#include "Ethernet.h"
 
-	/* Macros: */
-		/** Implemented RNDIS Version Major. */
-		#define REMOTE_NDIS_VERSION_MAJOR             0x01
-
-		/** Implemented RNDIS Version Minor. */
-		#define REMOTE_NDIS_VERSION_MINOR             0x00
-
-		/** RNDIS request to issue a host-to-device NDIS command. */
-		#define REQ_SendEncapsulatedCommand           0x00
-
-		/** RNDIS request to issue a device-to-host NDIS response. */
-		#define REQ_GetEncapsulatedResponse           0x01
-
-	/* Enums: */
-		/** Enum for the possible NDIS adapter states. */
-		enum RNDIS_States_t
-		{
-			RNDIS_Uninitialized    = 0, /**< Adapter currently uninitialized */
-			RNDIS_Initialized      = 1, /**< Adapter currently initialized but not ready for data transfers */
-			RNDIS_Data_Initialized = 2, /**< Adapter currently initialized and ready for data transfers */
-		};
-
-		/** Enum for the NDIS hardware states. */
-		enum NDIS_Hardware_Status_t
-		{
-			NdisHardwareStatusReady, /**< Hardware Ready to accept commands from the host */
-			NdisHardwareStatusInitializing, /**< Hardware busy initializing */
-			NdisHardwareStatusReset, /**< Hardware reset */
-			NdisHardwareStatusClosing, /**< Hardware currently closing */
-			NdisHardwareStatusNotReady /**< Hardware not ready to accept commands from the host */
-		};
-
-	/* Type Defines: */
-		/** Type define for a RNDIS message header, sent before RNDIS messages. */
-		typedef struct
-		{
-			uint32_t MessageType; /**< RNDIS message type, a REMOTE_NDIS_*_MSG constant */
-			uint32_t MessageLength; /**< Total length of the RNDIS message, in bytes */
-		} RNDIS_Message_Header_t;
-
-		/** Type define for a RNDIS packet message, used to encapsulate Ethernet packets sent to and from the adapter. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t DataOffset;
-			uint32_t DataLength;
-			uint32_t OOBDataOffset;
-			uint32_t OOBDataLength;
-			uint32_t NumOOBDataElements;
-			uint32_t PerPacketInfoOffset;
-			uint32_t PerPacketInfoLength;
-			uint32_t VcHandle;
-			uint32_t Reserved;
-		} RNDIS_Packet_Message_t;
-
-		/** Type define for a RNDIS Initialize command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-
-			uint32_t MajorVersion;
-			uint32_t MinorVersion;
-			uint32_t MaxTransferSize;
-		} RNDIS_Initialize_Message_t;
-
-		/** Type define for a RNDIS Initialize complete response message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-
-			uint32_t MajorVersion;
-			uint32_t MinorVersion;
-			uint32_t DeviceFlags;
-			uint32_t Medium;
-			uint32_t MaxPacketsPerTransfer;
-			uint32_t MaxTransferSize;
-			uint32_t PacketAlignmentFactor;
-			uint32_t AFListOffset;
-			uint32_t AFListSize;
-		} RNDIS_Initialize_Complete_t;
-
-		/** Type define for a RNDIS Keep-alive command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-		} RNDIS_KeepAlive_Message_t;
-
-		/** Type define for a RNDIS Keep-alive complete message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-		} RNDIS_KeepAlive_Complete_t;
-
-		/** Type define for a RNDIS Reset complete message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t Status;
-
-			uint32_t AddressingReset;
-		} RNDIS_Reset_Complete_t;
-
-		/** Type define for a RNDIS Set command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-
-			uint32_t Oid;
-			uint32_t InformationBufferLength;
-			uint32_t InformationBufferOffset;
-			uint32_t DeviceVcHandle;
-		} RNDIS_Set_Message_t;
-
-		/** Type define for a RNDIS Set complete response message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-		} RNDIS_Set_Complete_t;
-
-		/** Type define for a RNDIS Query command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-
-			uint32_t Oid;
-			uint32_t InformationBufferLength;
-			uint32_t InformationBufferOffset;
-			uint32_t DeviceVcHandle;
-		} RNDIS_Query_Message_t;
-
-		/** Type define for a RNDIS Query complete response message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-
-			uint32_t InformationBufferLength;
-			uint32_t InformationBufferOffset;
-		} RNDIS_Query_Complete_t;
-
 	/* External Variables: */
 		extern uint8_t                 RNDISMessageBuffer[];
 		extern RNDIS_Message_Header_t* MessageHeader;
diff --git a/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDISConstants.h b/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDISConstants.h
deleted file mode 100644
index 273fdb81eafc49cdd69c9c3ade7e0c375aa9b063..0000000000000000000000000000000000000000
--- a/Demos/Device/LowLevel/RNDISEthernet/Lib/RNDISConstants.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2010.
-
-  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
- *
- *  RNDIS specification related constants. For more information on these
- *  constants, please refer to the Microsoft RNDIS specification.
- */
-
-#ifndef _RNDIS_CONSTANTS_DEVICE_H_
-#define _RNDIS_CONSTANTS_DEVICE_H_
-
-	/* Macros: */
-		#define REMOTE_NDIS_PACKET_MSG                0x00000001UL
-		#define REMOTE_NDIS_INITIALIZE_MSG            0x00000002UL
-		#define REMOTE_NDIS_HALT_MSG                  0x00000003UL
-		#define REMOTE_NDIS_QUERY_MSG                 0x00000004UL
-		#define REMOTE_NDIS_SET_MSG                   0x00000005UL
-		#define REMOTE_NDIS_RESET_MSG                 0x00000006UL
-		#define REMOTE_NDIS_INDICATE_STATUS_MSG       0x00000007UL
-		#define REMOTE_NDIS_KEEPALIVE_MSG             0x00000008UL
-
-		#define REMOTE_NDIS_INITIALIZE_CMPLT          0x80000002UL
-		#define REMOTE_NDIS_QUERY_CMPLT               0x80000004UL
-		#define REMOTE_NDIS_SET_CMPLT                 0x80000005UL
-		#define REMOTE_NDIS_RESET_CMPLT               0x80000006UL
-		#define REMOTE_NDIS_KEEPALIVE_CMPLT           0x80000008UL
-
-		#define REMOTE_NDIS_STATUS_SUCCESS            0x00000000UL
-		#define REMOTE_NDIS_STATUS_FAILURE            0xC0000001UL
-		#define REMOTE_NDIS_STATUS_INVALID_DATA       0xC0010015UL
-		#define REMOTE_NDIS_STATUS_NOT_SUPPORTED      0xC00000BBUL
-		#define REMOTE_NDIS_STATUS_MEDIA_CONNECT      0x4001000BUL
-		#define REMOTE_NDIS_STATUS_MEDIA_DISCONNECT   0x4001000CUL
-
-		#define REMOTE_NDIS_MEDIA_STATE_CONNECTED     0x00000000UL
-		#define REMOTE_NDIS_MEDIA_STATE_DISCONNECTED  0x00000001UL
-
-		#define REMOTE_NDIS_MEDIUM_802_3              0x00000000UL
-
-		#define REMOTE_NDIS_DF_CONNECTIONLESS	      0x00000001UL
-		#define REMOTE_NDIS_DF_CONNECTION_ORIENTED    0x00000002UL
-
-		#define REMOTE_NDIS_PACKET_DIRECTED           0x00000001UL
-		#define REMOTE_NDIS_PACKET_MULTICAST          0x00000002UL
-		#define REMOTE_NDIS_PACKET_ALL_MULTICAST      0x00000004UL
-		#define REMOTE_NDIS_PACKET_BROADCAST          0x00000008UL
-		#define REMOTE_NDIS_PACKET_SOURCE_ROUTING     0x00000010UL
-		#define REMOTE_NDIS_PACKET_PROMISCUOUS        0x00000020UL
-		#define REMOTE_NDIS_PACKET_SMT                0x00000040UL
-		#define REMOTE_NDIS_PACKET_ALL_LOCAL          0x00000080UL
-		#define REMOTE_NDIS_PACKET_GROUP              0x00001000UL
-		#define REMOTE_NDIS_PACKET_ALL_FUNCTIONAL     0x00002000UL
-		#define REMOTE_NDIS_PACKET_FUNCTIONAL         0x00004000UL
-		#define REMOTE_NDIS_PACKET_MAC_FRAME          0x00008000UL
-
-		#define OID_GEN_SUPPORTED_LIST                0x00010101UL
-		#define OID_GEN_HARDWARE_STATUS               0x00010102UL
-		#define OID_GEN_MEDIA_SUPPORTED               0x00010103UL
-		#define OID_GEN_MEDIA_IN_USE                  0x00010104UL
-		#define OID_GEN_MAXIMUM_FRAME_SIZE            0x00010106UL
-		#define OID_GEN_MAXIMUM_TOTAL_SIZE            0x00010111UL
-		#define OID_GEN_LINK_SPEED                    0x00010107UL
-		#define OID_GEN_TRANSMIT_BLOCK_SIZE           0x0001010AUL
-		#define OID_GEN_RECEIVE_BLOCK_SIZE            0x0001010BUL
-		#define OID_GEN_VENDOR_ID                     0x0001010CUL
-		#define OID_GEN_VENDOR_DESCRIPTION            0x0001010DUL
-		#define OID_GEN_CURRENT_PACKET_FILTER         0x0001010EUL
-		#define OID_GEN_MAXIMUM_TOTAL_SIZE            0x00010111UL
-		#define OID_GEN_MEDIA_CONNECT_STATUS          0x00010114UL
-		#define OID_GEN_PHYSICAL_MEDIUM               0x00010202UL
-		#define OID_GEN_XMIT_OK                       0x00020101UL
-		#define OID_GEN_RCV_OK                        0x00020102UL
-		#define OID_GEN_XMIT_ERROR                    0x00020103UL
-		#define OID_GEN_RCV_ERROR                     0x00020104UL
-		#define OID_GEN_RCV_NO_BUFFER                 0x00020105UL
-		#define OID_802_3_PERMANENT_ADDRESS           0x01010101UL
-		#define OID_802_3_CURRENT_ADDRESS             0x01010102UL
-		#define OID_802_3_MULTICAST_LIST              0x01010103UL
-		#define OID_802_3_MAXIMUM_LIST_SIZE           0x01010104UL
-		#define OID_802_3_RCV_ERROR_ALIGNMENT         0x01020101UL
-		#define OID_802_3_XMIT_ONE_COLLISION          0x01020102UL
-		#define OID_802_3_XMIT_MORE_COLLISIONS        0x01020103UL
-
-#endif
-
diff --git a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
index e8eda4ccde1b17971b2d8d53d8b5d3b16caa6339..4e26db7354ec2e1027352b076321f6eef1a796fa 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
+++ b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
@@ -121,7 +121,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Process RNDIS class commands */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_SendEncapsulatedCommand:
+		case RNDIS_REQ_SendEncapsulatedCommand:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -135,7 +135,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 			}
 
 			break;
-		case REQ_GetEncapsulatedResponse:
+		case RNDIS_REQ_GetEncapsulatedResponse:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				/* Check if a response to the last message is ready */
@@ -172,10 +172,10 @@ void RNDIS_Task(void)
 	/* Check if a message response is ready for the host */
 	if (Endpoint_IsINReady() && ResponseReady)
 	{
-		USB_Notification_t Notification = (USB_Notification_t)
+		USB_Request_Header_t Notification = (USB_Request_Header_t)
 			{
 				.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-				.bNotification = NOTIF_RESPONSE_AVAILABLE,
+				.bRequest      = RNDIS_NOTIF_ResponseAvailable,
 				.wValue        = 0,
 				.wIndex        = 0,
 				.wLength       = 0,
diff --git a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h
index fb1a8d314a95201008e4e7ad975486038f4d3472..d3a8182621781492ba384551ebc2dfa7d9bdbd12 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h
@@ -75,19 +75,6 @@
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
 		#define LEDMASK_USB_BUSY          LEDS_LED2
 
-	/* Type Defines: */
-		/** Type define for a RNDIS notification message, for transmission to the RNDIS host via the notification
-		 *  Endpoint.
-		 */
-		typedef struct
-		{
-			uint8_t  bmRequestType; /**< Notification type, a mask of values from SrdRequestType.h */
-			uint8_t  bNotification; /**< Notification index, indicating what the RNDIS notification relates to */
-			uint16_t wValue; /**< Two byte notification value parameter */
-			uint16_t wIndex; /**< Two byte notification index parameter */
-			uint16_t wLength; /**< Size of data payload following the notification header */
-		} USB_Notification_t;
-
 	/* Function Prototypes: */
 		void SetupHardware(void);
 		void RNDIS_Task(void);
diff --git a/Demos/Device/LowLevel/VirtualSerial/Descriptors.c b/Demos/Device/LowLevel/VirtualSerial/Descriptors.c
index 9b3aea4b856351167da426fb023e259b940c56cc..1d98fbb814c645666f07d8e1a290ab7b9dad4a19 100644
--- a/Demos/Device/LowLevel/VirtualSerial/Descriptors.c
+++ b/Demos/Device/LowLevel/VirtualSerial/Descriptors.c
@@ -116,24 +116,24 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
 
 	.CDC_Functional_Header =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalHeader_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x00,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalHeader_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Header,
 
 			.CDCSpecification       = VERSION_BCD(01.10),
 		},
 
 	.CDC_Functional_ACM =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalACM_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x02,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalACM_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_ACM,
 
 			.Capabilities           = 0x06,
 		},
 
 	.CDC_Functional_Union =
 		{
-			.Header                 = {.Size = sizeof(USB_Descriptor_CDC_FunctionalUnion_t), .Type = DTYPE_CSInterface},
-			.Subtype                = 0x06,
+			.Header                 = {.Size = sizeof(USB_CDC_Descriptor_FunctionalUnion_t), .Type = DTYPE_CSInterface},
+			.Subtype                = CDC_DSUBTYPE_CSInterface_Union,
 
 			.MasterInterfaceNumber  = 0,
 			.SlaveInterfaceNumber   = 1,
diff --git a/Demos/Device/LowLevel/VirtualSerial/Descriptors.h b/Demos/Device/LowLevel/VirtualSerial/Descriptors.h
index 7a8da898ebb8472a16076290fe003ebb9d1cee9d..670e3433a4516b29c59cdd482f6a46b75b8b29b1 100644
--- a/Demos/Device/LowLevel/VirtualSerial/Descriptors.h
+++ b/Demos/Device/LowLevel/VirtualSerial/Descriptors.h
@@ -58,40 +58,6 @@
 		#define CDC_TXRX_EPSIZE                16
 
 	/* Type Defines: */
-		/** Type define for a CDC class-specific functional header descriptor. This indicates to the host that the device
-		 *  contains one or more CDC functional data descriptors, which give the CDC interface's capabilities and configuration.
-		 *  See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint16_t                CDCSpecification; /**< Version number of the CDC specification implemented by the device,
-			                                           *   encoded in BCD format.
-			                                           */
-		} USB_Descriptor_CDC_FunctionalHeader_t;
-
-		/** Type define for a CDC class-specific functional ACM descriptor. This indicates to the host that the CDC interface
-		 *  supports the CDC ACM subclass of the CDC specification. See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint8_t                 Capabilities; /**< Capabilities of the ACM interface, given as a bit mask. */
-		} USB_Descriptor_CDC_FunctionalACM_t;
-
-		/** Type define for a CDC class-specific functional Union descriptor. This indicates to the host that specific
-		 *  CDC control and data interfaces are related. See the CDC class specification for more details.
-		 */
-		typedef struct
-		{
-			USB_Descriptor_Header_t Header; /**< Regular descriptor header containing the descriptor's type and length. */
-			uint8_t                 Subtype; /**< Sub type value used to distinguish between CDC class-specific descriptors. */
-			uint8_t                 MasterInterfaceNumber; /**< Interface number of the CDC Control interface. */
-			uint8_t                 SlaveInterfaceNumber; /**< Interface number of the CDC Data interface. */
-		} USB_Descriptor_CDC_FunctionalUnion_t;
-
 		/** Type define for the device configuration descriptor structure. This must be defined in the
 		 *  application code, as the configuration descriptor contains several sub-descriptors which
 		 *  vary between devices, and which describe the device's usage to the host.
@@ -100,9 +66,9 @@
 		{
 			USB_Descriptor_Configuration_Header_t    Config;
 			USB_Descriptor_Interface_t               CDC_CCI_Interface;
-			USB_Descriptor_CDC_FunctionalHeader_t    CDC_Functional_Header;
-			USB_Descriptor_CDC_FunctionalACM_t       CDC_Functional_ACM;
-			USB_Descriptor_CDC_FunctionalUnion_t     CDC_Functional_Union;
+			USB_CDC_Descriptor_FunctionalHeader_t    CDC_Functional_Header;
+			USB_CDC_Descriptor_FunctionalACM_t       CDC_Functional_ACM;
+			USB_CDC_Descriptor_FunctionalUnion_t     CDC_Functional_Union;
 			USB_Descriptor_Endpoint_t                CDC_NotificationEndpoint;
 			USB_Descriptor_Interface_t               CDC_DCI_Interface;
 			USB_Descriptor_Endpoint_t                CDC_DataOutEndpoint;
diff --git a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c
index 22d65ffe7039110846b32439d6b1adb01252a788..9cf958a06dcf274fe3d338ec4d0c4f05069bb9df 100644
--- a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c
+++ b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c
@@ -44,10 +44,10 @@
  *  It is possible to completely ignore these value or use other settings as the host is completely unaware of the physical
  *  serial link characteristics and instead sends and receives data in endpoint streams.
  */
-CDC_Line_Coding_t LineEncoding = { .BaudRateBPS = 0,
-                                   .CharFormat  = OneStopBit,
-                                   .ParityType  = Parity_None,
-                                   .DataBits    = 8            };
+CDC_LineEncoding_t LineEncoding = { .BaudRateBPS = 0,
+                                    .CharFormat  = CDC_LINEENCODING_OneStopBit,
+                                    .ParityType  = CDC_PARITY_None,
+                                    .DataBits    = 8                            };
 
 /** Main program entry point. This routine contains the overall program flow, including initial
  *  setup of all components and the main program loop.
@@ -131,29 +131,29 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
 	/* Process CDC specific control requests */
 	switch (USB_ControlRequest.bRequest)
 	{
-		case REQ_GetLineEncoding:
+		case CDC_REQ_GetLineEncoding:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
 
 				/* Write the line coding data to the control endpoint */
-				Endpoint_Write_Control_Stream_LE(&LineEncoding, sizeof(CDC_Line_Coding_t));
+				Endpoint_Write_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t));
 				Endpoint_ClearOUT();
 			}
 
 			break;
-		case REQ_SetLineEncoding:
+		case CDC_REQ_SetLineEncoding:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
 
 				/* Read the line coding data in from the host into the global struct */
-				Endpoint_Read_Control_Stream_LE(&LineEncoding, sizeof(CDC_Line_Coding_t));
+				Endpoint_Read_Control_Stream_LE(&LineEncoding, sizeof(CDC_LineEncoding_t));
 				Endpoint_ClearIN();
 			}
 
 			break;
-		case REQ_SetControlLineState:
+		case CDC_REQ_SetControlLineState:
 			if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
 			{
 				Endpoint_ClearSETUP();
@@ -180,29 +180,6 @@ void CDC_Task(void)
 	if (USB_DeviceState != DEVICE_STATE_Configured)
 	  return;
 
-#if 0
-	/* NOTE: Here you can use the notification endpoint to send back line state changes to the host, for the special RS-232
-	 *       handshake signal lines (and some error states), via the CONTROL_LINE_IN_* masks and the following code:
-	 */
-	USB_Notification_Header_t Notification = (USB_Notification_Header_t)
-		{
-			.NotificationType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.Notification     = NOTIF_SerialState,
-			.wValue           = 0,
-			.wIndex           = 0,
-			.wLength          = sizeof(uint16_t),
-		};
-
-	uint16_t LineStateMask;
-
-	// Set LineStateMask here to a mask of CONTROL_LINE_IN_* masks to set the input handshake line states to send to the host
-
-	Endpoint_SelectEndpoint(CDC_NOTIFICATION_EPNUM);
-	Endpoint_Write_Stream_LE(&Notification, sizeof(Notification));
-	Endpoint_Write_Stream_LE(&LineStateMask, sizeof(LineStateMask));
-	Endpoint_ClearIN();
-#endif
-
 	/* Determine if a joystick action has occurred */
 	if (JoyStatus_LCL & JOY_UP)
 	  ReportString = "Joystick Up\r\n";
diff --git a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h
index b435cca6e356fbd14f253f91ff89dd2bc946440d..9634bd379e78993286a92f220138a2475b90112c 100644
--- a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h
+++ b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h
@@ -51,66 +51,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 
 	/* Macros: */
-		/** CDC Class specific request to get the current virtual serial port configuration settings. */
-		#define REQ_GetLineEncoding          0x21
-
-		/** CDC Class specific request to set the current virtual serial port configuration settings. */
-		#define REQ_SetLineEncoding          0x20
-
-		/** CDC Class specific request to set the current virtual serial port handshake line states. */
-		#define REQ_SetControlLineState      0x22
-
-		/** Notification type constant for a change in the virtual serial port handshake line states, for
-		 *  use with a USB_Notification_Header_t notification structure when sent to the host via the CDC
-		 *  notification endpoint.
-		 */
-		#define NOTIF_SerialState            0x20
-
-		/** Mask for the DTR handshake line for use with the REQ_SetControlLineState class specific request
-		 *  from the host, to indicate that the DTR line state should be high.
-		 */
-		#define CONTROL_LINE_OUT_DTR         (1 << 0)
-
-		/** Mask for the RTS handshake line for use with the REQ_SetControlLineState class specific request
-		 *  from the host, to indicate that theRTS line state should be high.
-		 */
-		#define CONTROL_LINE_OUT_RTS         (1 << 1)
-
-		/** Mask for the DCD handshake line for use with the NOTIF_SerialState class specific notification
-		 *  from the device to the host, to indicate that the DCD line state is currently high.
-		 */
-		#define CONTROL_LINE_IN_DCD          (1 << 0)
-
-		/** Mask for the DSR handshake line for use with the NOTIF_SerialState class specific notification
-		 *  from the device to the host, to indicate that the DSR line state is currently high.
-		 */
-		#define CONTROL_LINE_IN_DSR          (1 << 1)
-
-		/** Mask for the BREAK handshake line for use with the NOTIF_SerialState class specific notification
-		 *  from the device to the host, to indicate that the BREAK line state is currently high.
-		 */
-		#define CONTROL_LINE_IN_BREAK        (1 << 2)
-
-		/** Mask for the RING handshake line for use with the NOTIF_SerialState class specific notification
-		 *  from the device to the host, to indicate that the RING line state is currently high.
-		 */
-		#define CONTROL_LINE_IN_RING         (1 << 3)
-
-		/** Mask for use with the NOTIF_SerialState class specific notification from the device to the host,
-		 *  to indicate that a framing error has occurred on the virtual serial port.
-		 */
-		#define CONTROL_LINE_IN_FRAMEERROR   (1 << 4)
-
-		/** Mask for use with the NOTIF_SerialState class specific notification from the device to the host,
-		 *  to indicate that a parity error has occurred on the virtual serial port.
-		 */
-		#define CONTROL_LINE_IN_PARITYERROR  (1 << 5)
-
-		/** Mask for use with the NOTIF_SerialState class specific notification from the device to the host,
-		 *  to indicate that a data overrun error has occurred on the virtual serial port.
-		 */
-		#define CONTROL_LINE_IN_OVERRUNERROR (1 << 6)
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY         LEDS_LED1
 
@@ -123,55 +63,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR           (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for the virtual serial port line encoding settings, for storing the current USART configuration
-		 *  as set by the host via a class specific request.
-		 */
-		typedef struct
-		{
-			uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second */
-			uint8_t  CharFormat; /**< Character format of the virtual serial port, a value from the
-			                      *   CDCDevice_CDC_LineCodingFormats_t enum
-			                      */
-			uint8_t  ParityType; /**< Parity setting of the virtual serial port, a value from the
-			                      *   CDCDevice_LineCodingParity_t enum
-			                      */
-			uint8_t  DataBits; /**< Bits of data per character of the virtual serial port */
-		} CDC_Line_Coding_t;
-
-		/** Type define for a CDC notification, sent to the host via the CDC notification endpoint to indicate a
-		 *  change in the device state asynchronously.
-		 */
-		typedef struct
-		{
-			uint8_t  NotificationType; /**< Notification type, a mask of REQDIR_*, REQTYPE_* and REQREC_* constants
-			                            *   from the library StdRequestType.h header
-			                            */
-			uint8_t  Notification; /**< Notification value, a NOTIF_* constant */
-			uint16_t wValue; /**< Notification wValue, notification-specific */
-			uint16_t wIndex; /**< Notification wIndex, notification-specific */
-			uint16_t wLength; /**< Notification wLength, notification-specific */
-		} USB_Notification_Header_t;
-
-	/* Enums: */
-		/** Enum for the possible line encoding formats of a virtual serial port. */
-		enum CDCDevice_CDC_LineCodingFormats_t
-		{
-			OneStopBit          = 0, /**< Each frame contains one stop bit */
-			OneAndAHalfStopBits = 1, /**< Each frame contains one and a half stop bits */
-			TwoStopBits         = 2, /**< Each frame contains two stop bits */
-		};
-
-		/** Enum for the possible line encoding parity settings of a virtual serial port. */
-		enum CDCDevice_LineCodingParity_t
-		{
-			Parity_None         = 0, /**< No parity bit mode on each frame */
-			Parity_Odd          = 1, /**< Odd parity bit mode on each frame */
-			Parity_Even         = 2, /**< Even parity bit mode on each frame */
-			Parity_Mark         = 3, /**< Mark parity bit mode on each frame */
-			Parity_Space        = 4, /**< Space parity bit mode on each frame */
-		};
-
 	/* Function Prototypes: */
 		void SetupHardware(void);
 		void CDC_Task(void);
diff --git a/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.h b/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.h
index 243c88d35490c0e283d95df7a7fc7c52df8b2ea7..6765223b5b896b221597f6329e9d4788e0cace31 100644
--- a/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.h
+++ b/Demos/DualRole/ClassDriver/MouseHostDevice/Descriptors.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 		#include <avr/pgmspace.h>
 
diff --git a/Demos/DualRole/ClassDriver/MouseHostDevice/MouseHostDevice.h b/Demos/DualRole/ClassDriver/MouseHostDevice/MouseHostDevice.h
index 4b4e1ac1ffb45176ea09ccc7be9ee7a4f2d4b798..d7b511fd434947ee872cd2144f7bec589824770f 100644
--- a/Demos/DualRole/ClassDriver/MouseHostDevice/MouseHostDevice.h
+++ b/Demos/DualRole/ClassDriver/MouseHostDevice/MouseHostDevice.h
@@ -51,7 +51,6 @@
 		#include <LUFA/Drivers/Board/Joystick.h>
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 		#include "Descriptors.h"
 		#include "DeviceFunctions.h"
diff --git a/Demos/Host/ClassDriver/JoystickHostWithParser/JoystickHostWithParser.h b/Demos/Host/ClassDriver/JoystickHostWithParser/JoystickHostWithParser.h
index 51f641dd45acc306e73d00d9684cc02cd065dc45..d4a56e7dbe03ed61c2eb8eaa0c944f0fe8d70509 100644
--- a/Demos/Host/ClassDriver/JoystickHostWithParser/JoystickHostWithParser.h
+++ b/Demos/Host/ClassDriver/JoystickHostWithParser/JoystickHostWithParser.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.h b/Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.h
index a569162e58b1d110161b9a54d0d1c28d7a991ff0..ed4b50245302275e395779c2f1280f21851ec19c 100644
--- a/Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.h
+++ b/Demos/Host/ClassDriver/KeyboardHost/KeyboardHost.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.h b/Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.h
index b31d5cb664d4fe4be59a9238947ca2bea491ab99..048d20ca646328c3323d4234c5f2c3c363feee76 100644
--- a/Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.h
+++ b/Demos/Host/ClassDriver/KeyboardHostWithParser/KeyboardHostWithParser.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Host/ClassDriver/MIDIHost/MIDIHost.h b/Demos/Host/ClassDriver/MIDIHost/MIDIHost.h
index 977eabbd3252fe08ac2823e09b363fd6f7d91e65..77a6154f2b00f0633951edcab695de8a00ec3cfa 100644
--- a/Demos/Host/ClassDriver/MIDIHost/MIDIHost.h
+++ b/Demos/Host/ClassDriver/MIDIHost/MIDIHost.h
@@ -51,7 +51,6 @@
 		#include <LUFA/Drivers/Board/Buttons.h>
 		#include <LUFA/Drivers/Board/Joystick.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MIDI.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h b/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h
index af8470cf0c4e8a07250fbd54fbedb37be0c81748..532ed787ef8891dca074df15c3fa85bde7b9f644 100644
--- a/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h
+++ b/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h
@@ -50,7 +50,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Host/ClassDriver/MouseHost/MouseHost.h b/Demos/Host/ClassDriver/MouseHost/MouseHost.h
index c5567ed3871f76eaae1ecf7a20401c047c95c24a..482ad0a81be132d044f1729e9f2fc21072381cb5 100644
--- a/Demos/Host/ClassDriver/MouseHost/MouseHost.h
+++ b/Demos/Host/ClassDriver/MouseHost/MouseHost.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
index e4958b7c52376bad5d9547c529d28641120c7a11..cffcebfed6c93f72567c05bba4b09c76dfb79fdc 100644
--- a/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
+++ b/Demos/Host/ClassDriver/MouseHostWithParser/MouseHostWithParser.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.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. */
diff --git a/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h
index 120dec40fc1759599298fe621d6a1434aa465358..496aa59f6d8d71ee7ee9ae8806c45a13369bf6f2 100644
--- a/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h
+++ b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Printer.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h b/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h
index 56a6fe94e8ac00b970d8f679d24e470ea68eaa75..97e2e9c36fca5c69ddac96c09feffe7907d1e424 100644
--- a/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h
+++ b/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/RNDIS.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Host/ClassDriver/StillImageHost/StillImageHost.h b/Demos/Host/ClassDriver/StillImageHost/StillImageHost.h
index 3f4375dc77a47fb28c1c3c077b0487883500eb9e..ec0724e63e4d38551a5689b166334bf06f251ee4 100644
--- a/Demos/Host/ClassDriver/StillImageHost/StillImageHost.h
+++ b/Demos/Host/ClassDriver/StillImageHost/StillImageHost.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/StillImage.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.h b/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.h
index e873f539ff6b2737c3583499017bed3d6dc438be..917627d6559c6676203d1fddad5c67dd5cf34db1 100644
--- a/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.h
+++ b/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c
index ba182607b01b5aac09c60b226179ade1fa48715d..dfee3664d2cddee589a3b4ee23c296f30ab2ae79 100644
--- a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c
+++ b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.c
@@ -212,7 +212,7 @@ void WriteNextReport(uint8_t* ReportOUTData,
 		USB_ControlRequest = (USB_Request_Header_t)
 			{
 				.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-				.bRequest      = REQ_SetReport,
+				.bRequest      = HID_REQ_SetReport,
 				.wValue        = ((ReportType << 8) | ReportIndex),
 				.wIndex        = 0,
 				.wLength       = ReportLength,
diff --git a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h
index e3fc32135b88fe556870ed91f1041dbe2ba3b507..71e6c01c4e08bec052c1f2325235f346701a9c23 100644
--- a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h
+++ b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h
@@ -53,9 +53,6 @@
 		#include "ConfigDescriptor.h"
 
 	/* Macros: */
-		/** HID Class specific request to send a HID report to the device. */
-		#define REQ_SetReport             0x09
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c
index 20eaec7c901cdf6129e3b266ec3628728fef2062..33d77154ba460651ac7d8c5470266a0997f45197 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.c
@@ -52,7 +52,7 @@ uint8_t ProcessConfigurationDescriptor(void)
 	uint16_t CurrConfigBytesRem;
 
 	USB_Descriptor_Interface_t* HIDInterface   = NULL;
-	USB_Descriptor_HID_t*       HIDDescriptor  = NULL;
+	USB_HID_Descriptor_HID_t*   HIDDescriptor  = NULL;
 	USB_Descriptor_Endpoint_t*  DataINEndpoint = NULL;
 
 	/* Retrieve the entire configuration descriptor into the allocated buffer */
@@ -95,7 +95,7 @@ uint8_t ProcessConfigurationDescriptor(void)
 			}
 
 			/* Save the HID descriptor for later use */
-			HIDDescriptor = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_HID_t);
+			HIDDescriptor = DESCRIPTOR_PCAST(CurrConfigLocation, USB_HID_Descriptor_HID_t);
 
 			/* Skip the remainder of the loop as we have not found an endpoint yet */
 			continue;
@@ -178,7 +178,7 @@ uint8_t DComp_NextJoystickInterfaceDataEndpoint(void* CurrentDescriptor)
  */
 uint8_t DComp_NextHID(void* CurrentDescriptor)
 {
-	if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)
+	if (DESCRIPTOR_TYPE(CurrentDescriptor) == HID_DTYPE_HID)
 	  return DESCRIPTOR_SEARCH_Found;
 	else
 	  return DESCRIPTOR_SEARCH_NotFound;
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h
index 5aafe7d396d779f044fa270847ce7be275bd9ab8..b401109636e87236fb86137b09fc13c9b8583088 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h
@@ -48,12 +48,6 @@
 		/** Interface Protocol value for a Boot Protocol Mouse compliant device. */
 		#define JOYSTICK_PROTOCOL           0x02
 
-		/** Descriptor header type constant for a HID descriptor. */
-		#define DTYPE_HID                   0x21
-
-		/** Descriptor header type constant for a HID report descriptor. */
-		#define DTYPE_Report                0x22
-
 		/** Pipe number for the joystick report data pipe. */
 		#define JOYSTICK_DATA_IN_PIPE       1
 
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.c b/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.c
index 76e26a0d5dc5fd1a93360f92c9c7a10f45d8b69b..14e01a6cd1388303207a9485c2c8bd5145ab751b 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.c
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.c
@@ -51,7 +51,7 @@ uint8_t GetHIDReportData(void)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_INTERFACE),
 			.bRequest      = REQ_GetDescriptor,
-			.wValue        = (DTYPE_Report << 8),
+			.wValue        = (HID_DTYPE_Report << 8),
 			.wIndex        = 0,
 			.wLength       = HIDReportSize,
 		};
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.h b/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.h
index 0808806f7721417a73e477db3e9071975ebffa24..9b67a44208479a06311b0fe17693289c47ec35b8 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.h
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/HIDReport.h
@@ -38,25 +38,24 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Host/HIDParser.h>
 
 		#include "JoystickHostWithParser.h"
-
+		
 	/* Macros: */
-		/** HID Report Descriptor Usage for a Joystick. */
-		#define USAGE_JOYSTICK              0x04
-
 		/** HID Report Descriptor Usage Page value for a toggle button. */
 		#define USAGE_PAGE_BUTTON           0x09
 
 		/** HID Report Descriptor Usage Page value for a Generic Desktop Control. */
 		#define USAGE_PAGE_GENERIC_DCTRL    0x01
 
+		/** HID Report Descriptor Usage for a Joystick. */
+		#define USAGE_JOYSTICK              0x04
+
 		/** HID Report Descriptor Usage value for a X axis movement. */
 		#define USAGE_X                     0x30
 
 		/** HID Report Descriptor Usage value for a Y axis movement. */
-		#define USAGE_Y                     0x31
+		#define USAGE_Y                     0x31	
 
 	/* Enums: */
 		/** Enum for the possible return codes of the \ref GetHIDReportData() function. */
@@ -67,21 +66,6 @@
 			ParseControlError       = 2, /**< Control error occurred while trying to read the device HID descriptor */
 		};
 
-	/* Type Defines: */
-		/** Type define for a HID descriptor. */
-		typedef struct
-		{
-			USB_Descriptor_Header_t  Header; /**< Regular descriptor header containing the descriptor's type and length */
-
-			uint16_t                 HIDSpec; /**< Implemented HID class specification, in BCD encoded format */
-			uint8_t                  CountryCode; /**< Country code value for localized hardware */
-
-			uint8_t                  TotalHIDDescriptors; /**< Total number of HID report descriptors in the current interface */
-
-			uint8_t                  HIDReportType; /**< HID report type of the first HID report descriptor */
-			uint16_t                 HIDReportLength; /**< Total size in bytes of the first HID report descriptor */
-		} USB_Descriptor_HID_t;
-
 	/* External Variables: */
 		extern uint16_t         HIDReportSize;
 		extern HID_ReportInfo_t HIDReportInfo;
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h b/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h
index 403465fbe112f628f308680a54804b51d81c443c..966ebbe66527b3b0a1cc722918e318b8375aef08 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h
@@ -65,7 +65,7 @@
 
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
-
+		
 	/* Function Prototypes: */
 		void Joystick_HID_Task(void);
 		void SetupHardware(void);
diff --git a/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.c b/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.c
index 269fe2779f2c158115f8af1fd0019cf64fb88db7..760f0ddee375efdcf4677f5faa8829dd72a6f1bf 100644
--- a/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.c
+++ b/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.c
@@ -233,7 +233,7 @@ void Keyboard_HID_Task(void)
 			USB_ControlRequest = (USB_Request_Header_t)
 				{
 					.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-					.bRequest      = REQ_SetProtocol,
+					.bRequest      = HID_REQ_SetProtocol,
 					.wValue        = 0,
 					.wIndex        = 0,
 					.wLength       = 0,
diff --git a/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.h b/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.h
index 63d6c06b5ceacd08f7e211365695d703a6c36b22..95097728b50c7f8ba6fc84ac4db7113af7d3bd5e 100644
--- a/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.h
+++ b/Demos/Host/LowLevel/KeyboardHost/KeyboardHost.h
@@ -53,9 +53,6 @@
 		#include "ConfigDescriptor.h"
 
 	/* Macros: */
-		/** HID Class Specific request to set the report protocol mode. */
-		#define REQ_SetProtocol             0x0B
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
@@ -68,15 +65,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for a standard Boot Protocol Keyboard report. */
-		typedef struct
-		{
-			uint8_t Modifier; /**< Keyboard modifier byte, indicating pressed modifier keys (such as Shift, Control, etc.) */
-			uint8_t Reserved; /**< Reserved for OEM use, always set to 0 */
-			uint8_t KeyCode[6]; /**< Key codes of the currently pressed keys */
-		} USB_KeyboardReport_Data_t;
-
 	/* Function Prototypes: */
 		void Keyboard_HID_Task(void);
 		void SetupHardware(void);
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
index fe35d95b78f2919f08ee93296fbaa180e295407d..dc2daf9ed3db866804d2868f0dc1460d29daa5d9 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.c
@@ -178,7 +178,7 @@ uint8_t DComp_NextKeyboardInterfaceDataEndpoint(void* CurrentDescriptor)
  */
 uint8_t DComp_NextHID(void* CurrentDescriptor)
 {
-	if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)
+	if (DESCRIPTOR_TYPE(CurrentDescriptor) == HID_DTYPE_HID)
 	  return DESCRIPTOR_SEARCH_Found;
 	else if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_Interface)
 	  return DESCRIPTOR_SEARCH_Fail;
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h
index d23c89dd0622ad7214a0805e3bf312e53fa03345..ab04b310558d93fd0a9e1d3df5600665add9f2aa 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h
@@ -48,12 +48,6 @@
 		/** Interface Protocol value for a Boot Protocol Keyboard compliant device. */
 		#define KEYBOARD_PROTOCOL              0x01
 
-		/** Descriptor header type constant for a HID descriptor. */
-		#define DTYPE_HID                      0x21
-
-		/** Descriptor header type constant for a HID report descriptor. */
-		#define DTYPE_Report                   0x22
-
 		/** Pipe number for the keyboard report data pipe. */
 		#define KEYBOARD_DATA_IN_PIPE          1
 
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/HIDReport.h b/Demos/Host/LowLevel/KeyboardHostWithParser/HIDReport.h
index e18ad3aaee77986c6be9e62164c3fdeae1bd11a2..cf409caf8a15c29b802bfb929c11ed3ddf482db9 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/HIDReport.h
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/HIDReport.h
@@ -38,14 +38,9 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Host/HIDParser.h>
 
 		#include "KeyboardHostWithParser.h"
 
-	/* Macros: */
-		/** HID Report Descriptor Usage Page value for a desktop keyboard. */
-		#define USAGE_PAGE_KEYBOARD             0x07
-
 	/* Enums: */
 		/** Enum for the possible return codes of the \ref GetHIDReportData() function. */
 		enum KeyboardHostWithParser_GetHIDReportDataCodes_t
@@ -55,21 +50,6 @@
 			ParseControlError       = 2, /**< Control error occurred while trying to read the device HID descriptor */
 		};
 
-	/* Type Defines: */
-		/** Type define for a HID descriptor. */
-		typedef struct
-		{
-			USB_Descriptor_Header_t  Header; /**< Regular descriptor header containing the descriptor's type and length */
-
-			uint16_t                 HIDSpec; /**< Implemented HID class specification, in BCD encoded format */
-			uint8_t                  CountryCode; /**< Country code value for localized hardware */
-
-			uint8_t                  TotalHIDDescriptors; /**< Total number of HID report descriptors in the current interface */
-
-			uint8_t                  HIDReportType; /**< HID report type of the first HID report descriptor */
-			uint16_t                 HIDReportLength; /**< Total size in bytes of the first HID report descriptor */
-		} USB_Descriptor_HID_t;
-
 	/* External Variables: */
 		extern uint16_t         HIDReportSize;
 		extern HID_ReportInfo_t HIDReportInfo;
diff --git a/Demos/Host/LowLevel/MIDIHost/MIDIHost.c b/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
index 63ed6da257fc275091bd83391407b1070248be59..e004099fc284ddb717f946575ac3ddaced320520 100644
--- a/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
+++ b/Demos/Host/LowLevel/MIDIHost/MIDIHost.c
@@ -179,7 +179,7 @@ void MIDI_Host_Task(void)
 
 			if (Pipe_IsINReceived())
 			{
-				USB_MIDI_EventPacket_t MIDIEvent;
+				MIDI_EventPacket_t MIDIEvent;
 
 				Pipe_Read_Stream_LE(&MIDIEvent, sizeof(MIDIEvent));
 
@@ -244,7 +244,7 @@ void MIDI_Host_Task(void)
 				/* Check if a MIDI command is to be sent */
 				if (MIDICommand)
 				{
-					USB_MIDI_EventPacket_t MIDIEvent = (USB_MIDI_EventPacket_t)
+					MIDI_EventPacket_t MIDIEvent = (MIDI_EventPacket_t)
 						{
 							.CableNumber = 0,
 							.Command     = (MIDICommand >> 4),
diff --git a/Demos/Host/LowLevel/MIDIHost/MIDIHost.h b/Demos/Host/LowLevel/MIDIHost/MIDIHost.h
index f7fb57a91c7d4798c266429454f36c83986690e6..86c51cb0a4201dda2ab20b09da0bd8a9cefc0361 100644
--- a/Demos/Host/LowLevel/MIDIHost/MIDIHost.h
+++ b/Demos/Host/LowLevel/MIDIHost/MIDIHost.h
@@ -55,22 +55,6 @@
 		#include "ConfigDescriptor.h"
 
 	/* Macros: */
-		/** MIDI command for a note on (activation) event. */
-		#define MIDI_COMMAND_NOTE_ON      0x90
-
-		/** MIDI command for a note off (deactivation) event. */
-		#define MIDI_COMMAND_NOTE_OFF     0x80
-
-		/** Standard key press velocity value used for all note events, as no pressure sensor is mounted. */
-		#define MIDI_STANDARD_VELOCITY    64
-
-		/** Convenience macro. MIDI channels are numbered from 1-10 (natural numbers) however the logical channel
-		 *  addresses are zero-indexed. This converts a natural MIDI channel number into the logical channel address.
-		 *
-		 *  \param[in] channel  MIDI channel number to address
-		 */
-		#define MIDI_CHANNEL(channel)     (channel - 1)
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
@@ -83,18 +67,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for a USB MIDI event packet, used to encapsulate sent and received MIDI messages from a USB MIDI interface. */
-		typedef struct
-		{
-			unsigned char Command     : 4; /**< MIDI command being sent or received in the event packet */
-			unsigned char CableNumber : 4; /**< Virtual cable number of the event being sent or received in the given MIDI interface */
-
-			uint8_t Data1; /**< First byte of data in the MIDI event */
-			uint8_t Data2; /**< Second byte of data in the MIDI event */
-			uint8_t Data3; /**< Third byte of data in the MIDI event */
-		} USB_MIDI_EventPacket_t;
-
 	/* Function Prototypes: */
 		void SetupHardware(void);
 		void MIDI_Host_Task(void);
diff --git a/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c b/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
index 71258966084648699f892fee6ce5395956f2fea9..1ab70077e84abb96f386f25538fe27bb766e86c9 100644
--- a/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
+++ b/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.c
@@ -63,7 +63,7 @@ static uint32_t MassStore_Tag = 1;
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
  */
-static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlock,
+static uint8_t MassStore_SendCommand(MS_CommandBlockWrapper_t* const SCSICommandBlock,
                                      void* BufferPtr)
 {
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
@@ -80,7 +80,7 @@ static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlo
 	Pipe_Unfreeze();
 
 	/* Write the CBW command to the OUT pipe */
-	if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(CommandBlockWrapper_t))) != PIPE_RWSTREAM_NoError)
+	if ((ErrorCode = Pipe_Write_Stream_LE(SCSICommandBlock, sizeof(MS_CommandBlockWrapper_t))) != PIPE_RWSTREAM_NoError)
 	  return ErrorCode;
 
 	/* Send the data in the OUT pipe to the attached device */
@@ -182,7 +182,7 @@ static uint8_t MassStore_WaitForDataReceived(void)
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
  */
-static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSICommandBlock,
+static uint8_t MassStore_SendReceiveData(MS_CommandBlockWrapper_t* const SCSICommandBlock,
                                          void* BufferPtr)
 {
 	uint8_t  ErrorCode = PIPE_RWSTREAM_NoError;
@@ -238,7 +238,7 @@ static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSIComman
  *
  *  \return A value from the Pipe_Stream_RW_ErrorCodes_t enum, or MASS_STORE_SCSI_COMMAND_FAILED if the SCSI command fails
  */
-static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICommandStatus)
+static uint8_t MassStore_GetReturnedStatus(MS_CommandStatusWrapper_t* const SCSICommandStatus)
 {
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
@@ -251,7 +251,7 @@ static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICom
 	Pipe_Unfreeze();
 
 	/* Load in the CSW from the attached device */
-	if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(CommandStatusWrapper_t))) != PIPE_RWSTREAM_NoError)
+	if ((ErrorCode = Pipe_Read_Stream_LE(SCSICommandStatus, sizeof(MS_CommandStatusWrapper_t))) != PIPE_RWSTREAM_NoError)
 	  return ErrorCode;
 
 	/* Clear the data ready for next reception */
@@ -261,7 +261,7 @@ static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICom
 	Pipe_Freeze();
 
 	/* Check to see if command failed */
-	if (SCSICommandStatus->Status != Command_Pass)
+	if (SCSICommandStatus->Status != MS_SCSI_COMMAND_Pass)
 	  ErrorCode = MASS_STORE_SCSI_COMMAND_FAILED;
 
 	return ErrorCode;
@@ -277,7 +277,7 @@ uint8_t MassStore_MassStorageReset(void)
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_MassStorageReset,
+			.bRequest      = MS_REQ_MassStorageReset,
 			.wValue        = 0,
 			.wIndex        = 0,
 			.wLength       = 0,
@@ -307,7 +307,7 @@ uint8_t MassStore_GetMaxLUN(uint8_t* const MaxLUNIndex)
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_GetMaxLUN,
+			.bRequest      = MS_REQ_GetMaxLUN,
 			.wValue        = 0,
 			.wIndex        = 0,
 			.wLength       = 1,
@@ -345,7 +345,7 @@ uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 	/* Create a CBW with a SCSI command to issue INQUIRY command */
-	CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+	MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
 		{
 			.Signature          = CBW_SIGNATURE,
 			.DataTransferLength = sizeof(SCSI_Inquiry_Response_t),
@@ -363,7 +363,7 @@ uint8_t MassStore_Inquiry(const uint8_t LUNIndex,
 				}
 		};
 
-	CommandStatusWrapper_t SCSICommandStatus;
+	MS_CommandStatusWrapper_t SCSICommandStatus;
 
 	/* Send the command and any data to the attached device */
 	if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, InquiryPtr)) != PIPE_RWSTREAM_NoError)
@@ -396,7 +396,7 @@ uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 	/* Create a CBW with a SCSI command to issue REQUEST SENSE command */
-	CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+	MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
 		{
 			.Signature          = CBW_SIGNATURE,
 			.DataTransferLength = sizeof(SCSI_Request_Sense_Response_t),
@@ -414,7 +414,7 @@ uint8_t MassStore_RequestSense(const uint8_t LUNIndex,
 				}
 		};
 
-	CommandStatusWrapper_t SCSICommandStatus;
+	MS_CommandStatusWrapper_t SCSICommandStatus;
 
 	/* Send the command and any data to the attached device */
 	if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, SensePtr)) != PIPE_RWSTREAM_NoError)
@@ -453,7 +453,7 @@ uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 	/* Create a CBW with a SCSI command to read in the given blocks from the device */
-	CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+	MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
 		{
 			.Signature          = CBW_SIGNATURE,
 			.DataTransferLength = ((uint32_t)Blocks * BlockSize),
@@ -475,7 +475,7 @@ uint8_t MassStore_ReadDeviceBlock(const uint8_t LUNIndex,
 				}
 		};
 
-	CommandStatusWrapper_t SCSICommandStatus;
+	MS_CommandStatusWrapper_t SCSICommandStatus;
 
 	/* Send the command and any data to the attached device */
 	if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
@@ -514,7 +514,7 @@ uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 	/* Create a CBW with a SCSI command to write the given blocks to the device */
-	CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+	MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
 		{
 			.Signature          = CBW_SIGNATURE,
 			.DataTransferLength = ((uint32_t)Blocks * BlockSize),
@@ -536,7 +536,7 @@ uint8_t MassStore_WriteDeviceBlock(const uint8_t LUNIndex,
 				}
 		};
 
-	CommandStatusWrapper_t SCSICommandStatus;
+	MS_CommandStatusWrapper_t SCSICommandStatus;
 
 	/* Send the command and any data to the attached device */
 	if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, BufferPtr)) != PIPE_RWSTREAM_NoError)
@@ -567,7 +567,7 @@ uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 	/* Create a CBW with a SCSI command to issue TEST UNIT READY command */
-	CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+	MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
 		{
 			.Signature          = CBW_SIGNATURE,
 			.DataTransferLength = 0,
@@ -585,7 +585,7 @@ uint8_t MassStore_TestUnitReady(const uint8_t LUNIndex)
 				}
 		};
 
-	CommandStatusWrapper_t SCSICommandStatus;
+	MS_CommandStatusWrapper_t SCSICommandStatus;
 
 	/* Send the command and any data to the attached device */
 	if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
@@ -618,7 +618,7 @@ uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 	/* Create a CBW with a SCSI command to issue READ CAPACITY command */
-	CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+	MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
 		{
 			.Signature          = CBW_SIGNATURE,
 			.DataTransferLength = sizeof(SCSI_Capacity_t),
@@ -640,7 +640,7 @@ uint8_t MassStore_ReadCapacity(const uint8_t LUNIndex,
 				}
 		};
 
-	CommandStatusWrapper_t SCSICommandStatus;
+	MS_CommandStatusWrapper_t SCSICommandStatus;
 
 	/* Send the command and any data to the attached device */
 	if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, CapacityPtr)) != PIPE_RWSTREAM_NoError)
@@ -678,7 +678,7 @@ uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
 	uint8_t ErrorCode = PIPE_RWSTREAM_NoError;
 
 	/* Create a CBW with a SCSI command to issue PREVENT ALLOW MEDIUM REMOVAL command */
-	CommandBlockWrapper_t SCSICommandBlock = (CommandBlockWrapper_t)
+	MS_CommandBlockWrapper_t SCSICommandBlock = (MS_CommandBlockWrapper_t)
 		{
 			.Signature          = CBW_SIGNATURE,
 			.DataTransferLength = 0,
@@ -696,7 +696,7 @@ uint8_t MassStore_PreventAllowMediumRemoval(const uint8_t LUNIndex,
 				}
 		};
 
-	CommandStatusWrapper_t SCSICommandStatus;
+	MS_CommandStatusWrapper_t SCSICommandStatus;
 
 	/* Send the command and any data to the attached device */
 	if ((ErrorCode = MassStore_SendCommand(&SCSICommandBlock, NULL)) != PIPE_RWSTREAM_NoError)
diff --git a/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h b/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h
index 8fcffe424c0b5afd73941ee150da221b81bf3142..0fed5e06f3807cd4982196351aca3b586c6670b3 100644
--- a/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h
+++ b/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h
@@ -40,151 +40,24 @@
 		#include <avr/io.h>
 
 		#include "MassStorageHost.h"
-		#include "SCSI_Codes.h"
 
 		#include <LUFA/Drivers/USB/USB.h>
 
 	/* Macros: */
-		/** Class specific request to reset the Mass Storage interface of the attached device. */
-		#define REQ_MassStorageReset                0xFF
-
-		/** Class specific request to retrieve the maximum Logical Unit Number (LUN) index of the attached device. */
-		#define REQ_GetMaxLUN                       0xFE
-
-		/** Command Block Wrapper signature byte, for verification of valid CBW blocks. */
-		#define CBW_SIGNATURE                       0x43425355UL
-
-		/** Command Static Wrapper signature byte, for verification of valid CSW blocks. */
-		#define CSW_SIGNATURE                       0x53425355UL
-
-		/** Data direction mask for the Flags field of a CBW, indicating Host-to-Device transfer direction. */
-		#define COMMAND_DIRECTION_DATA_OUT          (0 << 7)
-
-		/** Data direction mask for the Flags field of a CBW, indicating Device-to-Host transfer direction. */
-		#define COMMAND_DIRECTION_DATA_IN           (1 << 7)
-
 		/** Timeout period between the issuing of a CBW to a device, and the reception of the first packet. */
 		#define COMMAND_DATA_TIMEOUT_MS             10000
 
 		/** Additional error code for Mass Storage functions when a device returns a logical command failure. */
 		#define MASS_STORE_SCSI_COMMAND_FAILED      0xC0
 
-	/* Type Defines: */
-		/** Type define for a Mass Storage class Command Block Wrapper, used to wrap SCSI
-		 *  commands for transport over the USB bulk endpoints to the device.
-		 */
-		typedef struct
-		{
-			uint32_t Signature; /**< Command block signature, always equal to CBW_SIGNATURE */
-			uint32_t Tag; /**< Current CBW tag, to positively associate a CBW with a CSW (filled automatically) */
-			uint32_t DataTransferLength; /**< Length of data to transfer, following the CBW */
-			uint8_t  Flags; /**< Block flags, equal to one of the COMMAND_DIRECTION_DATA_* macros */
-			uint8_t  LUN; /**< Logical Unit Number the CBW is addressed to in the device */
-			uint8_t  SCSICommandLength; /**< Length of the SCSI command in the CBW */
-			uint8_t  SCSICommandData[16]; /**< SCSI command to issue to the device */
-		} CommandBlockWrapper_t;
-
-		/** Type define for a Mass Storage class Command Status Wrapper, used to wrap SCSI
-		 *  responses for transport over the USB bulk endpoints from the device.
-		 */
-		typedef struct
-		{
-			uint32_t Signature; /**< Command status signature, always equal to CSW_SIGNATURE */
-			uint32_t Tag; /**< Current CBW tag, to positively associate a CBW with a CSW */
-			uint32_t DataTransferResidue; /**< Length of data not transferred */
-			uint8_t  Status; /**< Command status, a value from the MassStorageHost_CommandStatusCodes_t enum */
-		} CommandStatusWrapper_t;
-
-		/** Type define for a SCSI Sense structure. Structures of this type are filled out by the
-		 *  device via the \ref MassStore_RequestSense() function, indicating the current sense data of the
-		 *  device (giving explicit error codes for the last issued command). For details of the
-		 *  structure contents, refer to the SCSI specifications.
-		 */
-		typedef struct
-		{
-			uint8_t       ResponseCode;
-
-			uint8_t       SegmentNumber;
-
-			unsigned char SenseKey            : 4;
-			unsigned char Reserved            : 1;
-			unsigned char ILI                 : 1;
-			unsigned char EOM                 : 1;
-			unsigned char FileMark            : 1;
-
-			uint8_t      Information[4];
-			uint8_t      AdditionalLength;
-			uint8_t      CmdSpecificInformation[4];
-			uint8_t      AdditionalSenseCode;
-			uint8_t      AdditionalSenseQualifier;
-			uint8_t      FieldReplaceableUnitCode;
-			uint8_t      SenseKeySpecific[3];
-		} SCSI_Request_Sense_Response_t;
-
-		/** Type define for a SCSI Inquiry structure. Structures of this type are filled out by the
-		 *  device via the \ref MassStore_Inquiry() function, retrieving the attached device's information.
-		 *  For details of the structure contents, refer to the SCSI specifications.
-		 */
-		typedef struct
-		{
-			unsigned char DeviceType          : 5;
-			unsigned char PeripheralQualifier : 3;
-
-			unsigned char Reserved            : 7;
-			unsigned char Removable           : 1;
-
-			uint8_t      Version;
-
-			unsigned char ResponseDataFormat  : 4;
-			unsigned char Reserved2           : 1;
-			unsigned char NormACA             : 1;
-			unsigned char TrmTsk              : 1;
-			unsigned char AERC                : 1;
-
-			uint8_t      AdditionalLength;
-			uint8_t      Reserved3[2];
-
-			unsigned char SoftReset           : 1;
-			unsigned char CmdQue              : 1;
-			unsigned char Reserved4           : 1;
-			unsigned char Linked              : 1;
-			unsigned char Sync                : 1;
-			unsigned char WideBus16Bit        : 1;
-			unsigned char WideBus32Bit        : 1;
-			unsigned char RelAddr             : 1;
-
-			uint8_t      VendorID[8];
-			uint8_t      ProductID[16];
-			uint8_t      RevisionID[4];
-		} SCSI_Inquiry_Response_t;
-
-		/** SCSI capacity structure, to hold the total capacity of the device in both the number
-		 *  of blocks in the current LUN, and the size of each block. This structure is filled by
-		 *  the device when the \ref MassStore_ReadCapacity() function is called.
-		 */
-		typedef struct
-		{
-			uint32_t Blocks; /**< Number of blocks in the addressed LUN of the device */
-			uint32_t BlockSize; /**< Number of bytes in each block in the addressed LUN */
-		} SCSI_Capacity_t;
-
-	/* Enums: */
-		/** CSW status return codes, indicating the overall status of the issued CBW. */
-		enum MassStorageHost_CommandStatusCodes_t
-		{
-			Command_Pass = 0, /**< Command completed successfully */
-			Command_Fail = 1, /**< Command failed to complete successfully */
-			Phase_Error  = 2 /**< Phase error while processing the issued command */
-		};
-
 	/* Function Prototypes: */
 		#if defined(INCLUDE_FROM_MASSSTORE_COMMANDS_C)
-			static uint8_t MassStore_SendCommand(CommandBlockWrapper_t* const SCSICommandBlock,
+			static uint8_t MassStore_SendCommand(MS_CommandBlockWrapper_t* const SCSICommandBlock,
 			                                     void* BufferPtr);
 			static uint8_t MassStore_WaitForDataReceived(void);
-			static uint8_t MassStore_SendReceiveData(CommandBlockWrapper_t* const SCSICommandBlock,
+			static uint8_t MassStore_SendReceiveData(MS_CommandBlockWrapper_t* const SCSICommandBlock,
 			                                         void* BufferPtr) ATTR_NON_NULL_PTR_ARG(1);
-			static uint8_t MassStore_GetReturnedStatus(CommandStatusWrapper_t* const SCSICommandStatus) ATTR_NON_NULL_PTR_ARG(1);
+			static uint8_t MassStore_GetReturnedStatus(MS_CommandStatusWrapper_t* const SCSICommandStatus) ATTR_NON_NULL_PTR_ARG(1);
 		#endif
 
 		uint8_t MassStore_MassStorageReset(void);
diff --git a/Demos/Host/LowLevel/MassStorageHost/Lib/SCSI_Codes.h b/Demos/Host/LowLevel/MassStorageHost/Lib/SCSI_Codes.h
deleted file mode 100644
index 6bcd5780f71e23b7aa8ab20b77bd29be898b2b53..0000000000000000000000000000000000000000
--- a/Demos/Host/LowLevel/MassStorageHost/Lib/SCSI_Codes.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2010.
-
-  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 containing macros for possible SCSI commands and SENSE data. Refer to
- *  the SCSI standard documentation for more information on each SCSI command and
- *  the SENSE data.
- */
-
-#ifndef _SCSI_CODES_H_
-#define _SCSI_CODES_H_
-
-	/* Macros: */
-		#define SCSI_CMD_INQUIRY                               0x12
-		#define SCSI_CMD_REQUEST_SENSE                         0x03
-		#define SCSI_CMD_TEST_UNIT_READY                       0x00
-		#define SCSI_CMD_READ_CAPACITY_10                      0x25
-		#define SCSI_CMD_SEND_DIAGNOSTIC                       0x1D
-		#define SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL          0x1E
-		#define SCSI_CMD_WRITE_10                              0x2A
-		#define SCSI_CMD_READ_10                               0x28
-		#define SCSI_CMD_WRITE_6                               0x0A
-		#define SCSI_CMD_READ_6                                0x08
-		#define SCSI_CMD_VERIFY_10                             0x2F
-		#define SCSI_CMD_MODE_SENSE_6                          0x1A
-		#define SCSI_CMD_MODE_SENSE_10                         0x5A
-
-		#define SCSI_SENSE_KEY_GOOD                            0x00
-		#define SCSI_SENSE_KEY_RECOVERED_ERROR                 0x01
-		#define SCSI_SENSE_KEY_NOT_READY                       0x02
-		#define SCSI_SENSE_KEY_MEDIUM_ERROR                    0x03
-		#define SCSI_SENSE_KEY_HARDWARE_ERROR                  0x04
-		#define SCSI_SENSE_KEY_ILLEGAL_REQUEST                 0x05
-		#define SCSI_SENSE_KEY_UNIT_ATTENTION                  0x06
-		#define SCSI_SENSE_KEY_DATA_PROTECT                    0x07
-		#define SCSI_SENSE_KEY_BLANK_CHECK                     0x08
-		#define SCSI_SENSE_KEY_VENDOR_SPECIFIC                 0x09
-		#define SCSI_SENSE_KEY_COPY_ABORTED                    0x0A
-		#define SCSI_SENSE_KEY_ABORTED_COMMAND                 0x0B
-		#define SCSI_SENSE_KEY_VOLUME_OVERFLOW                 0x0D
-		#define SCSI_SENSE_KEY_MISCOMPARE                      0x0E
-
-		#define SCSI_ASENSE_NO_ADDITIONAL_INFORMATION          0x00
-		#define SCSI_ASENSE_LOGICAL_UNIT_NOT_READY             0x04
-		#define SCSI_ASENSE_INVALID_COMMAND                    0x20
-		#define SCSI_ASENSE_LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE 0x21
-		#define SCSI_ASENSE_INVALID_FIELD_IN_CDB               0x24
-		#define SCSI_ASENSE_WRITE_PROTECTED                    0x27
-		#define SCSI_ASENSE_NOT_READY_TO_READY_CHANGE          0x28
-		#define SCSI_ASENSE_FORMAT_ERROR                       0x31
-		#define SCSI_ASENSE_MEDIUM_NOT_PRESENT                 0x3A
-
-		#define SCSI_ASENSEQ_NO_QUALIFIER                      0x00
-		#define SCSI_ASENSEQ_FORMAT_COMMAND_FAILED             0x01
-		#define SCSI_ASENSEQ_INITIALIZING_COMMAND_REQUIRED     0x02
-		#define SCSI_ASENSEQ_OPERATION_IN_PROGRESS             0x07
-
-#endif
-
diff --git a/Demos/Host/LowLevel/MouseHost/MouseHost.c b/Demos/Host/LowLevel/MouseHost/MouseHost.c
index a7bda5ae5aeb48a6af759ce3d4cc05109f67acd0..e039657a4e064dafeaf97c3eb96cfeb68646e9c2 100644
--- a/Demos/Host/LowLevel/MouseHost/MouseHost.c
+++ b/Demos/Host/LowLevel/MouseHost/MouseHost.c
@@ -235,7 +235,7 @@ void Mouse_HID_Task(void)
 			USB_ControlRequest = (USB_Request_Header_t)
 				{
 					.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-					.bRequest      = REQ_SetProtocol,
+					.bRequest      = HID_REQ_SetProtocol,
 					.wValue        = 0,
 					.wIndex        = 0,
 					.wLength       = 0,
diff --git a/Demos/Host/LowLevel/MouseHost/MouseHost.h b/Demos/Host/LowLevel/MouseHost/MouseHost.h
index dc75013f83bffdbec6e3afd5647caf8848b1abbc..709f08205ce0bdeeb47f611a32a99629fad5d86c 100644
--- a/Demos/Host/LowLevel/MouseHost/MouseHost.h
+++ b/Demos/Host/LowLevel/MouseHost/MouseHost.h
@@ -53,9 +53,6 @@
 		#include "ConfigDescriptor.h"
 
 	/* Macros: */
-		/** HID Class Specific request to set the report protocol mode. */
-		#define REQ_SetProtocol           0x0B
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
@@ -68,15 +65,6 @@
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
-	/* Type Defines: */
-		/** Type define for a standard Boot Protocol Mouse report. */
-		typedef struct
-		{
-			uint8_t Button; /**< Button mask for currently pressed buttons in the mouse */
-			int8_t  X; /**< Current delta X movement of the mouse */
-			int8_t  Y; /**< Current delta Y movement on the mouse */
-		} USB_MouseReport_Data_t;
-
 	/* Function Prototypes: */
 		void Mouse_HID_Task(void);
 		void SetupHardware(void);
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
index 7a1a6faaaced104a394c86f2a3a815c646246193..eb85e4a474de66bcfbe3862d42241701e79af49c 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
+++ b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.c
@@ -52,7 +52,7 @@ uint8_t ProcessConfigurationDescriptor(void)
 	uint16_t CurrConfigBytesRem;
 
 	USB_Descriptor_Interface_t* HIDInterface   = NULL;
-	USB_Descriptor_HID_t*       HIDDescriptor  = NULL;
+	USB_HID_Descriptor_HID_t*   HIDDescriptor  = NULL;
 	USB_Descriptor_Endpoint_t*  DataINEndpoint = NULL;
 
 	/* Retrieve the entire configuration descriptor into the allocated buffer */
@@ -95,7 +95,7 @@ uint8_t ProcessConfigurationDescriptor(void)
 			}
 
 			/* Save the HID descriptor for later use */
-			HIDDescriptor = DESCRIPTOR_PCAST(CurrConfigLocation, USB_Descriptor_HID_t);
+			HIDDescriptor = DESCRIPTOR_PCAST(CurrConfigLocation, USB_HID_Descriptor_HID_t);
 
 			/* Skip the remainder of the loop as we have not found an endpoint yet */
 			continue;
@@ -178,7 +178,7 @@ uint8_t DComp_NextMouseInterfaceDataEndpoint(void* CurrentDescriptor)
  */
 uint8_t DComp_NextHID(void* CurrentDescriptor)
 {
-	if (DESCRIPTOR_TYPE(CurrentDescriptor) == DTYPE_HID)
+	if (DESCRIPTOR_TYPE(CurrentDescriptor) == HID_DTYPE_HID)
 	  return DESCRIPTOR_SEARCH_Found;
 	else
 	  return DESCRIPTOR_SEARCH_NotFound;
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h
index 504bc0b761a7661f213f97154ae23d46798ec4c1..2e44b40689b5db34a94433ac4f2351f9c4229288 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h
@@ -48,12 +48,6 @@
 		/** Interface Protocol value for a Boot Protocol Mouse compliant device. */
 		#define MOUSE_PROTOCOL              0x02
 
-		/** Descriptor header type constant for a HID descriptor. */
-		#define DTYPE_HID                   0x21
-
-		/** Descriptor header type constant for a HID report descriptor. */
-		#define DTYPE_Report                0x22
-
 		/** Pipe number for the mouse report data pipe. */
 		#define MOUSE_DATA_IN_PIPE          1
 
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.c b/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.c
index 18799c27f784e912a905c5db3399cc655e5431ed..f02ca9a3898edba57e6bd1f2710fc32912c90e35 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.c
+++ b/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.c
@@ -51,7 +51,7 @@ uint8_t GetHIDReportData(void)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_STANDARD | REQREC_INTERFACE),
 			.bRequest      = REQ_GetDescriptor,
-			.wValue        = (DTYPE_Report << 8),
+			.wValue        = (HID_DTYPE_Report << 8),
 			.wIndex        = 0,
 			.wLength       = HIDReportSize,
 		};
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h b/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h
index 19cfd753ceaaac5d502e16f0b9b44ed11a90d4ab..a63bc045e2dbbd4d3dc00cfa272bdf1b90a60e27 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h
+++ b/Demos/Host/LowLevel/MouseHostWithParser/HIDReport.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/Host/HIDParser.h>
 
 		#include "MouseHostWithParser.h"
 
@@ -70,21 +69,6 @@
 			ParseControlError       = 2, /**< Control error occurred while trying to read the device HID descriptor */
 		};
 
-	/* Type Defines: */
-		/** Type define for a HID descriptor. */
-		typedef struct
-		{
-			USB_Descriptor_Header_t  Header; /**< Regular descriptor header containing the descriptor's type and length */
-
-			uint16_t                 HIDSpec; /**< Implemented HID class specification, in BCD encoded format */
-			uint8_t                  CountryCode; /**< Country code value for localized hardware */
-
-			uint8_t                  TotalHIDDescriptors; /**< Total number of HID report descriptors in the current interface */
-
-			uint8_t                  HIDReportType; /**< HID report type of the first HID report descriptor */
-			uint16_t                 HIDReportLength; /**< Total size in bytes of the first HID report descriptor */
-		} USB_Descriptor_HID_t;
-
 	/* External Variables: */
 		extern uint16_t         HIDReportSize;
 		extern HID_ReportInfo_t HIDReportInfo;
diff --git a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
index da79e03cc6f3fb23d2559322a63ad91c35cf3f61..d46a7ab38d0848efacfcc550933543955e86a83b 100644
--- a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
+++ b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
@@ -81,7 +81,7 @@ uint8_t Printer_GetDeviceID(char* DeviceIDString,
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_GetDeviceID,
+			.bRequest      = PRNT_REQ_GetDeviceID,
 			.wValue        = 0,
 			.wIndex        = PrinterInterfaceNumber,
 			.wLength       = sizeof(DeviceIDStringLength),
@@ -128,7 +128,7 @@ uint8_t Printer_GetPortStatus(uint8_t* const PortStatus)
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_GetPortStatus,
+			.bRequest      = PRNT_REQ_GetPortStatus,
 			.wValue        = 0,
 			.wIndex        = PrinterInterfaceNumber,
 			.wLength       = sizeof(uint8_t),
@@ -149,7 +149,7 @@ uint8_t Printer_SoftReset(void)
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_SoftReset,
+			.bRequest      = PRNT_REQ_SoftReset,
 			.wValue        = 0,
 			.wIndex        = PrinterInterfaceNumber,
 			.wLength       = 0,
diff --git a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h
index 812ff7e5a426e0d994d00922b9a5c4747b21c883..99e1b956838b628e9ea1ee3fe28f58fe7c4e8c5c 100644
--- a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h
+++ b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.h
@@ -44,16 +44,6 @@
 
 		#include "../PrinterHost.h"
 
-	/* Macros: */
-		/** Printer class-specific request to retrieve the printer's ID string. */
-		#define REQ_GetDeviceID              0
-
-		/** Printer class-specific request to retrieve the printer's virtual port status flags. */
-		#define REQ_GetPortStatus            1
-
-		/** Printer class-specific request to soft-reset the device. */
-		#define REQ_SoftReset                2
-
 	/* Function Prototypes: */
 		uint8_t Printer_SendData(const void* const PrinterCommands,
 		                         const uint16_t CommandSize);
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h b/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h
index b4a056f8551963273fe3fda29a8cf96fc195df5e..740d73ef017cba824032e81a932f68060143c801 100644
--- a/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h
@@ -42,15 +42,6 @@
 		#include "RNDISEthernetHost.h"
 
 	/* Macros: */
-		/** Interface Class value for the CDC class. */
-		#define CDC_CONTROL_CLASS              0x02
-
-		/** Interface Class value for the CDC Communication Interface subclass. */
-		#define CDC_CONTROL_SUBCLASS           0x02
-
-		/** Interface Class value for the CDC RNDIS vendor specific protocol. */
-		#define CDC_CONTROL_PROTOCOL           0xFF
-
 		/** Interface Class value for the CDC data class. */
 		#define CDC_DATA_CLASS                 0x0A
 
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.c b/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.c
index 661762b8b8ce26f1c269c79154ebb30d92a814ca..461c59eea26fb12f362208e3e8558b7a7cbb961c 100644
--- a/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.c
+++ b/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.c
@@ -53,7 +53,7 @@ uint8_t RNDIS_SendEncapsulatedCommand(void* const Buffer,
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_SendEncapsulatedCommand,
+			.bRequest      = RNDIS_REQ_SendEncapsulatedCommand,
 			.wValue        = 0,
 			.wIndex        = 0,
 			.wLength       = Length,
@@ -78,7 +78,7 @@ uint8_t RNDIS_GetEncapsulatedResponse(void* const Buffer,
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_GetEncapsulatedResponse,
+			.bRequest      = RNDIS_REQ_GetEncapsulatedResponse,
 			.wValue        = 0,
 			.wIndex        = 0,
 			.wLength       = Length,
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.h b/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.h
index f474c9bd89518b90b4b5de7730a8a3c5fbc9c0eb..91312fdde19a6136dcb36fcb310b7b76829992f3 100644
--- a/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.h
+++ b/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISCommands.h
@@ -43,151 +43,9 @@
 
 		#include <LUFA/Drivers/USB/USB.h>
 
-		#include "RNDISConstants.h"
 		#include "../RNDISEthernetHost.h"
 
-	/* Type Defines: */
-		/** Type define for a RNDIS message header, sent before RNDIS messages. */
-		typedef struct
-		{
-			uint32_t MessageType; /**< RNDIS message type, a REMOTE_NDIS_*_MSG constant */
-			uint32_t MessageLength; /**< Total length of the RNDIS message, in bytes */
-		} RNDIS_Message_Header_t;
-
-		/** Type define for a RNDIS packet message, used to encapsulate Ethernet packets sent to and from the adapter. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t DataOffset;
-			uint32_t DataLength;
-			uint32_t OOBDataOffset;
-			uint32_t OOBDataLength;
-			uint32_t NumOOBDataElements;
-			uint32_t PerPacketInfoOffset;
-			uint32_t PerPacketInfoLength;
-			uint32_t VcHandle;
-			uint32_t Reserved;
-		} RNDIS_Packet_Message_t;
-
-		/** Type define for a RNDIS Initialize command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-
-			uint32_t MajorVersion;
-			uint32_t MinorVersion;
-			uint32_t MaxTransferSize;
-		} RNDIS_Initialize_Message_t;
-
-		/** Type define for a RNDIS Initialize complete response message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-
-			uint32_t MajorVersion;
-			uint32_t MinorVersion;
-			uint32_t DeviceFlags;
-			uint32_t Medium;
-			uint32_t MaxPacketsPerTransfer;
-			uint32_t MaxTransferSize;
-			uint32_t PacketAlignmentFactor;
-			uint32_t AFListOffset;
-			uint32_t AFListSize;
-		} RNDIS_Initialize_Complete_t;
-
-		/** Type define for a RNDIS Keep-alive command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-		} RNDIS_KeepAlive_Message_t;
-
-		/** Type define for a RNDIS Keep-alive complete message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-		} RNDIS_KeepAlive_Complete_t;
-
-		/** Type define for a RNDIS Reset complete message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t Status;
-
-			uint32_t AddressingReset;
-		} RNDIS_Reset_Complete_t;
-
-		/** Type define for a RNDIS Set command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-
-			uint32_t Oid;
-			uint32_t InformationBufferLength;
-			uint32_t InformationBufferOffset;
-			uint32_t DeviceVcHandle;
-		} RNDIS_Set_Message_t;
-
-		/** Type define for a RNDIS Set complete response message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-		} RNDIS_Set_Complete_t;
-
-		/** Type define for a RNDIS Query command message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-
-			uint32_t Oid;
-			uint32_t InformationBufferLength;
-			uint32_t InformationBufferOffset;
-			uint32_t DeviceVcHandle;
-		} RNDIS_Query_Message_t;
-
-		/** Type define for a RNDIS Query complete response message. */
-		typedef struct
-		{
-			uint32_t MessageType;
-			uint32_t MessageLength;
-			uint32_t RequestId;
-			uint32_t Status;
-
-			uint32_t InformationBufferLength;
-			uint32_t InformationBufferOffset;
-		} RNDIS_Query_Complete_t;
-
 	/* Macros: */
-		/** RNDIS request to issue a host-to-device NDIS command. */
-		#define REQ_SendEncapsulatedCommand           0x00
-
-		/** RNDIS request to issue a device-to-host NDIS response. */
-		#define REQ_GetEncapsulatedResponse           0x01
-
-		/** Implemented RNDIS Version Major. */
-		#define REMOTE_NDIS_VERSION_MAJOR             0x01
-
-		/** Implemented RNDIS Version Minor. */
-		#define REMOTE_NDIS_VERSION_MINOR             0x00
-
 		/** Additional error code for RNDIS functions when a device returns a logical command failure. */
 		#define RNDIS_COMMAND_FAILED                  0xC0
 
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISConstants.h b/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISConstants.h
deleted file mode 100644
index 273fdb81eafc49cdd69c9c3ade7e0c375aa9b063..0000000000000000000000000000000000000000
--- a/Demos/Host/LowLevel/RNDISEthernetHost/Lib/RNDISConstants.h
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-             LUFA Library
-     Copyright (C) Dean Camera, 2010.
-
-  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
- *
- *  RNDIS specification related constants. For more information on these
- *  constants, please refer to the Microsoft RNDIS specification.
- */
-
-#ifndef _RNDIS_CONSTANTS_DEVICE_H_
-#define _RNDIS_CONSTANTS_DEVICE_H_
-
-	/* Macros: */
-		#define REMOTE_NDIS_PACKET_MSG                0x00000001UL
-		#define REMOTE_NDIS_INITIALIZE_MSG            0x00000002UL
-		#define REMOTE_NDIS_HALT_MSG                  0x00000003UL
-		#define REMOTE_NDIS_QUERY_MSG                 0x00000004UL
-		#define REMOTE_NDIS_SET_MSG                   0x00000005UL
-		#define REMOTE_NDIS_RESET_MSG                 0x00000006UL
-		#define REMOTE_NDIS_INDICATE_STATUS_MSG       0x00000007UL
-		#define REMOTE_NDIS_KEEPALIVE_MSG             0x00000008UL
-
-		#define REMOTE_NDIS_INITIALIZE_CMPLT          0x80000002UL
-		#define REMOTE_NDIS_QUERY_CMPLT               0x80000004UL
-		#define REMOTE_NDIS_SET_CMPLT                 0x80000005UL
-		#define REMOTE_NDIS_RESET_CMPLT               0x80000006UL
-		#define REMOTE_NDIS_KEEPALIVE_CMPLT           0x80000008UL
-
-		#define REMOTE_NDIS_STATUS_SUCCESS            0x00000000UL
-		#define REMOTE_NDIS_STATUS_FAILURE            0xC0000001UL
-		#define REMOTE_NDIS_STATUS_INVALID_DATA       0xC0010015UL
-		#define REMOTE_NDIS_STATUS_NOT_SUPPORTED      0xC00000BBUL
-		#define REMOTE_NDIS_STATUS_MEDIA_CONNECT      0x4001000BUL
-		#define REMOTE_NDIS_STATUS_MEDIA_DISCONNECT   0x4001000CUL
-
-		#define REMOTE_NDIS_MEDIA_STATE_CONNECTED     0x00000000UL
-		#define REMOTE_NDIS_MEDIA_STATE_DISCONNECTED  0x00000001UL
-
-		#define REMOTE_NDIS_MEDIUM_802_3              0x00000000UL
-
-		#define REMOTE_NDIS_DF_CONNECTIONLESS	      0x00000001UL
-		#define REMOTE_NDIS_DF_CONNECTION_ORIENTED    0x00000002UL
-
-		#define REMOTE_NDIS_PACKET_DIRECTED           0x00000001UL
-		#define REMOTE_NDIS_PACKET_MULTICAST          0x00000002UL
-		#define REMOTE_NDIS_PACKET_ALL_MULTICAST      0x00000004UL
-		#define REMOTE_NDIS_PACKET_BROADCAST          0x00000008UL
-		#define REMOTE_NDIS_PACKET_SOURCE_ROUTING     0x00000010UL
-		#define REMOTE_NDIS_PACKET_PROMISCUOUS        0x00000020UL
-		#define REMOTE_NDIS_PACKET_SMT                0x00000040UL
-		#define REMOTE_NDIS_PACKET_ALL_LOCAL          0x00000080UL
-		#define REMOTE_NDIS_PACKET_GROUP              0x00001000UL
-		#define REMOTE_NDIS_PACKET_ALL_FUNCTIONAL     0x00002000UL
-		#define REMOTE_NDIS_PACKET_FUNCTIONAL         0x00004000UL
-		#define REMOTE_NDIS_PACKET_MAC_FRAME          0x00008000UL
-
-		#define OID_GEN_SUPPORTED_LIST                0x00010101UL
-		#define OID_GEN_HARDWARE_STATUS               0x00010102UL
-		#define OID_GEN_MEDIA_SUPPORTED               0x00010103UL
-		#define OID_GEN_MEDIA_IN_USE                  0x00010104UL
-		#define OID_GEN_MAXIMUM_FRAME_SIZE            0x00010106UL
-		#define OID_GEN_MAXIMUM_TOTAL_SIZE            0x00010111UL
-		#define OID_GEN_LINK_SPEED                    0x00010107UL
-		#define OID_GEN_TRANSMIT_BLOCK_SIZE           0x0001010AUL
-		#define OID_GEN_RECEIVE_BLOCK_SIZE            0x0001010BUL
-		#define OID_GEN_VENDOR_ID                     0x0001010CUL
-		#define OID_GEN_VENDOR_DESCRIPTION            0x0001010DUL
-		#define OID_GEN_CURRENT_PACKET_FILTER         0x0001010EUL
-		#define OID_GEN_MAXIMUM_TOTAL_SIZE            0x00010111UL
-		#define OID_GEN_MEDIA_CONNECT_STATUS          0x00010114UL
-		#define OID_GEN_PHYSICAL_MEDIUM               0x00010202UL
-		#define OID_GEN_XMIT_OK                       0x00020101UL
-		#define OID_GEN_RCV_OK                        0x00020102UL
-		#define OID_GEN_XMIT_ERROR                    0x00020103UL
-		#define OID_GEN_RCV_ERROR                     0x00020104UL
-		#define OID_GEN_RCV_NO_BUFFER                 0x00020105UL
-		#define OID_802_3_PERMANENT_ADDRESS           0x01010101UL
-		#define OID_802_3_CURRENT_ADDRESS             0x01010102UL
-		#define OID_802_3_MULTICAST_LIST              0x01010103UL
-		#define OID_802_3_MAXIMUM_LIST_SIZE           0x01010104UL
-		#define OID_802_3_RCV_ERROR_ALIGNMENT         0x01020101UL
-		#define OID_802_3_XMIT_ONE_COLLISION          0x01020102UL
-		#define OID_802_3_XMIT_MORE_COLLISIONS        0x01020103UL
-
-#endif
-
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h b/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h
index c52fe6b9ce86f858fd15c5bb578f27e61885ee27..764bc1f8c2f51838e06d7661dd9fafebd84f4794 100644
--- a/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h
+++ b/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h
@@ -70,19 +70,6 @@
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
 		#define LEDMASK_USB_BUSY          LEDS_LED2
 
-	/* Type Defines: */
-		/** Type define for a RNDIS notification message, for transmission to the RNDIS host via the notification
-		 *  Endpoint.
-		 */
-		typedef struct
-		{
-			uint8_t  bmRequestType; /**< Notification type, a mask of values from SrdRequestType.h */
-			uint8_t  bNotification; /**< Notification index, indicating what the RNDIS notification relates to */
-			uint16_t wValue; /**< Two byte notification value parameter */
-			uint16_t wIndex; /**< Two byte notification index parameter */
-			uint16_t wLength; /**< Size of data payload following the notification header */
-		} USB_Notification_t;
-
 	/* Function Prototypes: */
 		void SetupHardware(void);
 		void PrintIncomingPackets(void);
diff --git a/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h b/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h
index 692b1fae816c3db977ba2f9127f860c411ad55aa..74a443adc44e7b8ac2b90c98ac333800ddd2abbc 100644
--- a/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h
+++ b/Demos/Host/LowLevel/StillImageHost/Lib/PIMACodes.h
@@ -41,12 +41,5 @@
 		#define PIMA_OPERATION_OPENSESSION           0x1002
 		#define PIMA_OPERATION_CLOSESESSION          0x1003
 
-		#define PIMA_RESPONSE_OK                     0x2001
-		#define PIMA_RESPONSE_GENERALERROR           0x2002
-		#define PIMA_RESPONSE_SESSIONNOTOPEN         0x2003
-		#define PIMA_RESPONSE_INVALIDTRANSACTIONID   0x2004
-		#define PIMA_RESPONSE_OPERATIONNOTSUPPORTED  0x2005
-		#define PIMA_RESPONSE_PARAMETERNOTSUPPORTED  0x2006
-
 #endif
 
diff --git a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c
index 9d6828e323c0a99756910031e46a899748a12442..e82b643fd188db47e09a190bc8dd7d5ab5d3b368 100644
--- a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c
+++ b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.c
@@ -58,7 +58,7 @@ void SImage_SendBlockHeader(void)
 	Pipe_Write_Stream_LE(&PIMA_SendBlock, PIMA_COMMAND_SIZE(0));
 
 	/* If the block type is a command, send its parameters (if any) */
-	if (PIMA_SendBlock.Type == CType_CommandBlock)
+	if (PIMA_SendBlock.Type == PIMA_CONTAINER_CommandBlock)
 	{
 		/* Determine the size of the parameters in the block via the data length attribute */
 		uint8_t ParamBytes = (PIMA_SendBlock.DataLength - PIMA_COMMAND_SIZE(0));
@@ -169,7 +169,7 @@ uint8_t SImage_ReceiveBlockHeader(void)
 	Pipe_Read_Stream_LE(&PIMA_ReceivedBlock, PIMA_COMMAND_SIZE(0));
 
 	/* Check if the returned block type is a response block */
-	if (PIMA_ReceivedBlock.Type == CType_ResponseBlock)
+	if (PIMA_ReceivedBlock.Type == PIMA_CONTAINER_ResponseBlock)
 	{
 		/* Determine the size of the parameters in the block via the data length attribute */
 		uint8_t ParamBytes = (PIMA_ReceivedBlock.DataLength - PIMA_COMMAND_SIZE(0));
diff --git a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
index 2ab36c2baf9aab7b6c8406d6f237ab9b65f2c8e4..5f4d9c1ef5d32db7e8e393c673a8119c32769514 100644
--- a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
+++ b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
@@ -43,54 +43,9 @@
 		#include "../StillImageHost.h"
 
 	/* Macros: */
-		/** Length in bytes of a given Unicode string's character length.
-		 *
-		 *  \param[in] chars  Total number of Unicode characters in the string
-		 */
-		#define UNICODE_STRING_LENGTH(chars)   ((chars) << 1)
-
 		/** Timeout period between the issuing of a command to a device, and the reception of the first packet. */
 		#define COMMAND_DATA_TIMEOUT_MS        10000
 
-		/** Used in the DataLength field of a PIMA container, to give the total container size in bytes for
-		 *  a command container.
-		 *
-		 *  \param[in] params  Number of parameters which are to be sent in the Param field of the container
-		 */
-		#define PIMA_COMMAND_SIZE(params)      ((sizeof(PIMA_SendBlock) - sizeof(PIMA_SendBlock.Params)) + \
-		                                        ((params) * sizeof(PIMA_SendBlock.Params[0])))
-
-		/** Used in the DataLength field of a PIMA container, to give the total container size in bytes for
-		 *  a data container.
-		 *
-		 *  \param[in] datalen  Length in bytes of the data in the container
-		 */
-		#define PIMA_DATA_SIZE(datalen)        ((sizeof(PIMA_SendBlock) - sizeof(PIMA_SendBlock.Params)) + datalen)
-
-	/* Type Defines: */
-		/** Type define for a PIMA container, use to send commands and receive responses to and from an
-		 *  attached Still Image device.
-		 */
-		typedef struct
-		{
-			uint32_t DataLength; /**< Length of the container and data, in bytes */
-			uint16_t Type; /**< Container type, a value from the PIMA_Container_Types_t enum */
-			uint16_t Code; /**< Command, event or response code of the container */
-			uint32_t TransactionID; /**< Unique container ID to link blocks together */
-			uint32_t Params[3]; /**< Block parameters to be issued along with the block code (command blocks only) */
-		} PIMA_Container_t;
-
-	/* Enums: */
-		/** Enum for the possible PIMA contains types. */
-		enum PIMA_Container_Types_t
-		{
-			CType_Undefined         = 0, /**< Undefined container type */
-			CType_CommandBlock      = 1, /**< Command Block container type */
-			CType_DataBlock         = 2, /**< Data Block container type */
-			CType_ResponseBlock     = 3, /**< Response container type */
-			CType_EventBlock        = 4, /**< Event Block container type */
-		};
-
 	/* External Variables: */
 		extern PIMA_Container_t PIMA_SendBlock;
 		extern PIMA_Container_t PIMA_ReceivedBlock;
diff --git a/Demos/Host/LowLevel/StillImageHost/StillImageHost.c b/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
index aa139e225ffada34dd387b73e4b42696699d79da..0474cd01517f2eb0172cc3851c6c3f002566f1e1 100644
--- a/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
+++ b/Demos/Host/LowLevel/StillImageHost/StillImageHost.c
@@ -180,7 +180,7 @@ void StillImage_Task(void)
 			PIMA_SendBlock = (PIMA_Container_t)
 				{
 					.DataLength    = PIMA_COMMAND_SIZE(0),
-					.Type          = CType_CommandBlock,
+					.Type          = PIMA_CONTAINER_CommandBlock,
 					.Code          = PIMA_OPERATION_GETDEVICEINFO,
 					.TransactionID = 0x00000000,
 					.Params        = {},
@@ -252,7 +252,7 @@ void StillImage_Task(void)
 			}
 
 			/* Verify that the command completed successfully */
-			if ((PIMA_ReceivedBlock.Type != CType_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
+			if ((PIMA_ReceivedBlock.Type != PIMA_CONTAINER_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
 			{
 				ShowCommandError(PIMA_ReceivedBlock.Code, true);
 
@@ -265,7 +265,7 @@ void StillImage_Task(void)
 			PIMA_SendBlock = (PIMA_Container_t)
 				{
 					.DataLength    = PIMA_COMMAND_SIZE(1),
-					.Type          = CType_CommandBlock,
+					.Type          = PIMA_CONTAINER_CommandBlock,
 					.Code          = PIMA_OPERATION_OPENSESSION,
 					.TransactionID = 0x00000000,
 					.Params        = {0x00000001},
@@ -284,7 +284,7 @@ void StillImage_Task(void)
 			}
 
 			/* Verify that the command completed successfully */
-			if ((PIMA_ReceivedBlock.Type != CType_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
+			if ((PIMA_ReceivedBlock.Type != PIMA_CONTAINER_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
 			{
 				ShowCommandError(PIMA_ReceivedBlock.Code, true);
 
@@ -297,7 +297,7 @@ void StillImage_Task(void)
 			PIMA_SendBlock = (PIMA_Container_t)
 				{
 					.DataLength    = PIMA_COMMAND_SIZE(1),
-					.Type          = CType_CommandBlock,
+					.Type          = PIMA_CONTAINER_CommandBlock,
 					.Code          = PIMA_OPERATION_CLOSESESSION,
 					.TransactionID = 0x00000001,
 					.Params        = {0x00000001},
@@ -316,7 +316,7 @@ void StillImage_Task(void)
 			}
 
 			/* Verify that the command completed successfully */
-			if ((PIMA_ReceivedBlock.Type != CType_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
+			if ((PIMA_ReceivedBlock.Type != PIMA_CONTAINER_ResponseBlock) || (PIMA_ReceivedBlock.Code != PIMA_RESPONSE_OK))
 			{
 				ShowCommandError(PIMA_ReceivedBlock.Code, true);
 
diff --git a/Demos/Host/LowLevel/StillImageHost/StillImageHost.h b/Demos/Host/LowLevel/StillImageHost/StillImageHost.h
index 9c88f71f0158c514c495af1923cad481cc238452..f03c45aaa519ba1a67785155ca6de4f25f0fc7ff 100644
--- a/Demos/Host/LowLevel/StillImageHost/StillImageHost.h
+++ b/Demos/Host/LowLevel/StillImageHost/StillImageHost.h
@@ -45,7 +45,6 @@
 
 		#include "ConfigDescriptor.h"
 
-		#include "Lib/PIMACodes.h"
 		#include "Lib/StillImageCommands.h"
 
 		#include <LUFA/Drivers/Misc/TerminalCodes.h>
diff --git a/LUFA.pnproj b/LUFA.pnproj
index c86e293050b93968503a58f4e49ae23e877f08ee..37f5b2fec63a097a067b15d6118e539de8e88083 100644
--- a/LUFA.pnproj
+++ b/LUFA.pnproj
@@ -1 +1 @@
-<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.aps"></File></Folder><Folder name="MassStorageKeyboard"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.h"></File><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><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.aps"></File></Folder><Folder name="VirtualSerialMouse"><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\LUFA VirtualSerialMouse.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.aps"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File><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><File path="Demos\Device\LowLevel\MassStorage\MassStorage.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\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><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\LowLevel\VirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.aps"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><Folder name="Lib"><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.h"></File></Folder><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File></Folder><Folder name="TestAndMeasurement"><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\makefile"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="JoystickHostWithParser"><File path="Demos\Host\ClassDriver\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\ClassDriver\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MIDIHost\makefile"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><File path="Demos\Host\ClassDriver\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\PrinterHost\makefile"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><File path="Demos\Host\ClassDriver\RNDISEthernetHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\makefile"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.c"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.h"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.txt"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.aps"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\ClassDriver\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\makefile"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.aps"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><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><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MIDIHost\makefile"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.h"></File><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><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.aps"></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><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\makefile"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Doxygen.conf"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="DualRole"><Folder name="ClassDriver"><Folder name="MouseHostDevice"><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Doxygen.conf"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\makefile"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.txt"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.aps"></File></Folder><File path="Demos\DualRole\ClassDriver\makefile"></File></Folder><File path="Demos\DualRole\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\BoardTypes.h"></File><File path="LUFA\Common\Attributes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.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\OTG.h"></File><File path="LUFA\Drivers\USB\LowLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\LowLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.c"></File><File path="LUFA\Drivers\USB\LowLevel\USBController.c"></File><File path="LUFA\Drivers\USB\LowLevel\USBController.h"></File></Folder><Folder name="HighLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Pipe_RW.c"></File><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Endpoint_Control_R.c"></File></Folder><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\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><File path="LUFA\Drivers\USB\HighLevel\DeviceStandardReq.c"></File><File path="LUFA\Drivers\USB\HighLevel\DeviceStandardReq.h"></File><File path="LUFA\Drivers\USB\HighLevel\HostStandardReq.c"></File><File path="LUFA\Drivers\USB\HighLevel\HostStandardReq.h"></File><File path="LUFA\Drivers\USB\HighLevel\EndpointStream.h"></File><File path="LUFA\Drivers\USB\HighLevel\EndpointStream.c"></File><File path="LUFA\Drivers\USB\HighLevel\PipeStream.h"></File><File path="LUFA\Drivers\USB\HighLevel\PipeStream.c"></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="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><Folder name="BENITO"><File path="LUFA\Drivers\Board\BENITO\LEDs.h"></File><File path="LUFA\Drivers\Board\BENITO\Buttons.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\LEDs.h"></File></Folder><Folder name="BUI"><File path="LUFA\Drivers\Board\BUI\LEDs.h"></File></Folder><Folder name="BLACKCAT"><File path="LUFA\Drivers\Board\BLACKCAT\LEDs.h"></File></Folder><Folder name="CULV3"><File path="LUFA\Drivers\Board\CULV3\Buttons.h"></File><File path="LUFA\Drivers\Board\CULV3\LEDs.h"></File></Folder><Folder name="EVK527"><File path="LUFA\Drivers\Board\EVK527\Buttons.h"></File><File path="LUFA\Drivers\Board\EVK527\LEDs.h"></File><File path="LUFA\Drivers\Board\EVK527\Joystick.h"></File><File path="LUFA\Drivers\Board\EVK527\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\EVK527\Dataflash.h"></File></Folder><Folder name="JMDBU2"><File path="LUFA\Drivers\Board\JMDBU2\Buttons.h"></File><File path="LUFA\Drivers\Board\JMDBU2\LEDs.h"></File></Folder><Folder name="MAXIMUS"><File path="LUFA\Drivers\Board\MAXIMUS\LEDs.h"></File></Folder><Folder name="MINIMUS"></Folder><Folder name="OLIMEX162"><File path="LUFA\Drivers\Board\OLIMEX162\LEDs.h"></File><File path="LUFA\Drivers\Board\OLIMEX162\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="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="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="TEENSY"><File path="LUFA\Drivers\Board\TEENSY\LEDs.h"></File></Folder><Folder name="UDIP"><File path="LUFA\Drivers\Board\UDIP\LEDs.h"></File><File path="LUFA\Drivers\Board\UDIP\Buttons.h"></File></Folder><Folder name="UNO"><File path="LUFA\Drivers\Board\UNO\LEDs.h"></File></Folder><Folder name="USBFOO"><File path="LUFA\Drivers\Board\USBFOO\Buttons.h"></File><File path="LUFA\Drivers\Board\USBFOO\LEDS.h"></File></Folder><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="USBTINYMKII"><File path="LUFA\Drivers\Board\USBTINYMKII\LEDs.h"></File><File path="LUFA\Drivers\Board\USBTINYMKII\Buttons.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File><File path="LUFA\Drivers\Board\XPLAIN\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\XPLAIN\Dataflash.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AVRU4U6U7"><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\ADC.h"></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><File path="LUFA\Drivers\Peripheral\TWI.c"></File></Folder></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File><File path="LUFA\ManPages\AlternativeStacks.txt"></File><File path="LUFA\ManPages\SoftwareBootloaderJump.txt"></File><File path="LUFA\ManPages\LicenseInfo.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><Folder name="CodeTemplates"><Folder name="DriverStubs"><File path="LUFA\CodeTemplates\DriverStubs\Buttons.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Dataflash.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Joystick.h"></File><File path="LUFA\CodeTemplates\DriverStubs\LEDs.h"></File></Folder><File path="LUFA\CodeTemplates\makefile_template"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\License.txt"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File><File path="Bootloaders\DFU\BootloaderDFU.aps"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File><File path="Bootloaders\CDC\BootloaderCDC.aps"></File></Folder><File path="Bootloaders\makefile"></File></Folder><Folder name="Projects"><Folder name="AVRISP-MKII"><Folder name="Lib"><Folder name="ISP"><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.h"></File></Folder><Folder name="XPROG"><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.h"></File></Folder><File path="Projects\AVRISP-MKII\Lib\V2Protocol.c"></File><File path="Projects\AVRISP-MKII\Lib\V2Protocol.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolConstants.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.c"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.h"></File></Folder><File path="Projects\AVRISP-MKII\Descriptors.c"></File><File path="Projects\AVRISP-MKII\Descriptors.h"></File><File path="Projects\AVRISP-MKII\Doxygen.conf"></File><File path="Projects\AVRISP-MKII\makefile"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.c"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.h"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.txt"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.aps"></File></Folder><Folder name="Benito"><Folder name="Lib"><File path="Projects\Benito\Lib\LightweightRingBuff.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><File path="Projects\Benito\Benito.aps"></File></Folder><Folder name="LEDNotifier"><Folder name="CPUUsageApp"><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.csproj"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.Designer.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.resx"></File><File path="Projects\LEDNotifier\CPUUsageApp\Program.cs"></File></Folder><Folder name="HotmailNotifierApp"><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.csproj"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.Designer.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.resx"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\Program.cs"></File></Folder><Folder name="LEDMixerApp"><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.csproj"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.Designer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.resx"></File><File path="Projects\LEDNotifier\LEDMixerApp\Program.cs"></File></Folder><File path="Projects\LEDNotifier\Descriptors.c"></File><File path="Projects\LEDNotifier\Descriptors.h"></File><File path="Projects\LEDNotifier\Doxygen.conf"></File><File path="Projects\LEDNotifier\LEDNotifier.c"></File><File path="Projects\LEDNotifier\LEDNotifier.h"></File><File path="Projects\LEDNotifier\LEDNotifier.txt"></File><File path="Projects\LEDNotifier\LUFA LED Notifier.inf"></File><File path="Projects\LEDNotifier\makefile"></File><File path="Projects\LEDNotifier\LEDNotifier.aps"></File></Folder><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\Magstripe.aps"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File><File path="Projects\MissileLauncher\MissileLauncher.aps"></File></Folder><Folder name="RelayBoard"><File path="Projects\RelayBoard\Descriptors.c"></File><File path="Projects\RelayBoard\Descriptors.h"></File><File path="Projects\RelayBoard\Doxygen.conf"></File><File path="Projects\RelayBoard\makefile"></File><File path="Projects\RelayBoard\RelayBoard.c"></File><File path="Projects\RelayBoard\RelayBoard.h"></File><File path="Projects\RelayBoard\RelayBoard.txt"></File><File path="Projects\RelayBoard\RelayBoard.aps"></File></Folder><Folder name="TempDataLogger"><Folder name="Lib"><Folder name="FATFs"><File path="Projects\TempDataLogger\Lib\FATFs\diskio.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\diskio.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ffconf.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\integer.h"></File></Folder><File path="Projects\TempDataLogger\Lib\DataflashManager.c"></File><File path="Projects\TempDataLogger\Lib\DataflashManager.h"></File><File path="Projects\TempDataLogger\Lib\DS1307.c"></File><File path="Projects\TempDataLogger\Lib\DS1307.h"></File><File path="Projects\TempDataLogger\Lib\SCSI.c"></File><File path="Projects\TempDataLogger\Lib\SCSI.h"></File></Folder><Folder name="TempLogHostApp"><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.Designer.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.resx"></File><File path="Projects\TempDataLogger\TempLogHostApp\Program.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\TempLoggerHostApp.csproj"></File></Folder><File path="Projects\TempDataLogger\Descriptors.c"></File><File path="Projects\TempDataLogger\Descriptors.h"></File><File path="Projects\TempDataLogger\Doxygen.conf"></File><File path="Projects\TempDataLogger\makefile"></File><File path="Projects\TempDataLogger\TempDataLogger.c"></File><File path="Projects\TempDataLogger\TempDataLogger.h"></File><File path="Projects\TempDataLogger\TemperatureDataLogger.txt"></File><File path="Projects\TempDataLogger\TempDataLogger.aps"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Projects\USBtoSerial\Lib\LightweightRingBuff.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><File path="Projects\USBtoSerial\USBtoSerial.aps"></File></Folder><Folder name="Webserver"><Folder name="Lib"><Folder name="uip"><File path="Projects\Webserver\Lib\uip\clock.c"></File><File path="Projects\Webserver\Lib\uip\clock.h"></File><File path="Projects\Webserver\Lib\uip\timer.c"></File><File path="Projects\Webserver\Lib\uip\timer.h"></File><File path="Projects\Webserver\Lib\uip\uip.c"></File><File path="Projects\Webserver\Lib\uip\uip.h"></File><File path="Projects\Webserver\Lib\uip\uip_arp.c"></File><File path="Projects\Webserver\Lib\uip\uip_arp.h"></File><File path="Projects\Webserver\Lib\uip\uipopt.h"></File><File path="Projects\Webserver\Lib\uip\uip-split.c"></File><File path="Projects\Webserver\Lib\uip\uip-split.h"></File></Folder><Folder name="FATFs"><File path="Projects\Webserver\Lib\FATFs\diskio.c"></File><File path="Projects\Webserver\Lib\FATFs\diskio.h"></File><File path="Projects\Webserver\Lib\FATFs\ff.c"></File><File path="Projects\Webserver\Lib\FATFs\ff.h"></File><File path="Projects\Webserver\Lib\FATFs\ffconf.h"></File><File path="Projects\Webserver\Lib\FATFs\integer.h"></File></Folder><File path="Projects\Webserver\Lib\DataflashManager.c"></File><File path="Projects\Webserver\Lib\DataflashManager.h"></File><File path="Projects\Webserver\Lib\uIPManagement.c"></File><File path="Projects\Webserver\Lib\uIPManagement.h"></File><File path="Projects\Webserver\Lib\HTTPServerApp.c"></File><File path="Projects\Webserver\Lib\HTTPServerApp.h"></File><File path="Projects\Webserver\Lib\SCSI.c"></File><File path="Projects\Webserver\Lib\SCSI.h"></File><File path="Projects\Webserver\Lib\DHCPClientApp.c"></File><File path="Projects\Webserver\Lib\DHCPClientApp.h"></File><File path="Projects\Webserver\Lib\TELNETServerApp.c"></File><File path="Projects\Webserver\Lib\TELNETServerApp.h"></File></Folder><File path="Projects\Webserver\makefile"></File><File path="Projects\Webserver\Webserver.c"></File><File path="Projects\Webserver\Webserver.h"></File><File path="Projects\Webserver\Doxygen.conf"></File><File path="Projects\Webserver\Webserver.txt"></File><File path="Projects\Webserver\Descriptors.c"></File><File path="Projects\Webserver\Descriptors.h"></File><File path="Projects\Webserver\USBHostMode.c"></File><File path="Projects\Webserver\USBHostMode.h"></File><File path="Projects\Webserver\USBDeviceMode.c"></File><File path="Projects\Webserver\USBDeviceMode.h"></File><File path="Projects\Webserver\Webserver.aps"></File></Folder><Folder name="XPLAINBridge"><Folder name="Lib"><File path="Projects\XPLAINBridge\Lib\SoftUART.c"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.h"></File><File path="Projects\XPLAINBridge\Lib\LightweightRingBuff.h"></File><File path="Projects\XPLAINBridge\Lib\HardSPI.c"></File><File path="Projects\XPLAINBridge\Lib\HardSPI.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\AVRISPDescriptors.c"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.h"></File><File path="Projects\XPLAINBridge\Doxygen.conf"></File><File path="Projects\XPLAINBridge\XPLAINBridge.aps"></File><File path="Projects\XPLAINBridge\CDCDescriptors.c"></File><File path="Projects\XPLAINBridge\CDCDescriptors.h"></File></Folder><Folder name="Incomplete"><Folder name="StandaloneProgrammer"><Folder name="Lib"><Folder name="PetiteFATFs"><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\integer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\makefile"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.h"></File></Folder></Folder><File path="Projects\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
+<Project name="LUFA"><Folder name="Demos"><Folder name="Device"><Folder name="ClassDriver"><Folder name="AudioInput"><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.c"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.h"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.txt"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioInput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioInput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioInput\makefile"></File><File path="Demos\Device\ClassDriver\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.c"></File><File path="Demos\Device\ClassDriver\AudioOutput\Descriptors.h"></File><File path="Demos\Device\ClassDriver\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\AudioOutput\makefile"></File><File path="Demos\Device\ClassDriver\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.c"></File><File path="Demos\Device\ClassDriver\GenericHID\Descriptors.h"></File><File path="Demos\Device\ClassDriver\GenericHID\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.c"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.h"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.txt"></File><File path="Demos\Device\ClassDriver\GenericHID\makefile"></File><File path="Demos\Device\ClassDriver\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\ClassDriver\Joystick\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Joystick\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Joystick\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.c"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.h"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.txt"></File><File path="Demos\Device\ClassDriver\Joystick\makefile"></File><File path="Demos\Device\ClassDriver\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.c"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.h"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.txt"></File><File path="Demos\Device\ClassDriver\Keyboard\makefile"></File><File path="Demos\Device\ClassDriver\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\makefile"></File><File path="Demos\Device\ClassDriver\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorage\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorage\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorage\makefile"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.c"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.h"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.txt"></File><File path="Demos\Device\ClassDriver\MassStorage\MassStorage.aps"></File></Folder><Folder name="MassStorageKeyboard"><Folder name="Lib"><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\DataflashManager.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Lib\SCSI.h"></File></Folder><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\makefile"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.c"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.h"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.txt"></File><File path="Demos\Device\ClassDriver\MassStorageKeyboard\MassStorageKeyboard.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\ClassDriver\MIDI\Descriptors.c"></File><File path="Demos\Device\ClassDriver\MIDI\Descriptors.h"></File><File path="Demos\Device\ClassDriver\MIDI\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\MIDI\makefile"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.c"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.h"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.txt"></File><File path="Demos\Device\ClassDriver\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\ClassDriver\Mouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\Mouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\Mouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\Mouse\makefile"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.c"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.h"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.txt"></File><File path="Demos\Device\ClassDriver\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\makefile"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\ClassDriver\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerial\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerial\VirtualSerial.aps"></File></Folder><Folder name="VirtualSerialMouse"><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Descriptors.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\Doxygen.conf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\LUFA VirtualSerialMouse.inf"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\makefile"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.c"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.h"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.txt"></File><File path="Demos\Device\ClassDriver\VirtualSerialMouse\VirtualSerialMouse.aps"></File></Folder><File path="Demos\Device\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="AudioInput"><File path="Demos\Device\LowLevel\AudioInput\AudioInput.c"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.h"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.txt"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioInput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioInput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioInput\makefile"></File><File path="Demos\Device\LowLevel\AudioInput\AudioInput.aps"></File></Folder><Folder name="AudioOutput"><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.c"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.h"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.txt"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.c"></File><File path="Demos\Device\LowLevel\AudioOutput\Descriptors.h"></File><File path="Demos\Device\LowLevel\AudioOutput\Doxygen.conf"></File><File path="Demos\Device\LowLevel\AudioOutput\makefile"></File><File path="Demos\Device\LowLevel\AudioOutput\AudioOutput.aps"></File></Folder><Folder name="DualVirtualSerial"><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.c"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.h"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.txt"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\LUFA DualVirtualSerial.inf"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\DualVirtualSerial\DualVirtualSerial.aps"></File></Folder><Folder name="GenericHID"><File path="Demos\Device\LowLevel\GenericHID\Descriptors.c"></File><File path="Demos\Device\LowLevel\GenericHID\Descriptors.h"></File><File path="Demos\Device\LowLevel\GenericHID\Doxygen.conf"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.c"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.h"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.txt"></File><File path="Demos\Device\LowLevel\GenericHID\makefile"></File><File path="Demos\Device\LowLevel\GenericHID\GenericHID.aps"></File></Folder><Folder name="Joystick"><File path="Demos\Device\LowLevel\Joystick\Descriptors.c"></File><File path="Demos\Device\LowLevel\Joystick\Descriptors.h"></File><File path="Demos\Device\LowLevel\Joystick\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.c"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.h"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.txt"></File><File path="Demos\Device\LowLevel\Joystick\makefile"></File><File path="Demos\Device\LowLevel\Joystick\Joystick.aps"></File></Folder><Folder name="Keyboard"><File path="Demos\Device\LowLevel\Keyboard\Descriptors.c"></File><File path="Demos\Device\LowLevel\Keyboard\Descriptors.h"></File><File path="Demos\Device\LowLevel\Keyboard\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.c"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.h"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.txt"></File><File path="Demos\Device\LowLevel\Keyboard\makefile"></File><File path="Demos\Device\LowLevel\Keyboard\Keyboard.aps"></File></Folder><Folder name="KeyboardMouse"><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.c"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.h"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.txt"></File><File path="Demos\Device\LowLevel\KeyboardMouse\makefile"></File><File path="Demos\Device\LowLevel\KeyboardMouse\KeyboardMouse.aps"></File></Folder><Folder name="MassStorage"><Folder name="Lib"><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\DataflashManager.h"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.c"></File><File path="Demos\Device\LowLevel\MassStorage\Lib\SCSI.h"></File></Folder><File path="Demos\Device\LowLevel\MassStorage\Descriptors.c"></File><File path="Demos\Device\LowLevel\MassStorage\Descriptors.h"></File><File path="Demos\Device\LowLevel\MassStorage\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MassStorage\makefile"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.c"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.h"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.txt"></File><File path="Demos\Device\LowLevel\MassStorage\MassStorage.aps"></File></Folder><Folder name="MIDI"><File path="Demos\Device\LowLevel\MIDI\Descriptors.c"></File><File path="Demos\Device\LowLevel\MIDI\Descriptors.h"></File><File path="Demos\Device\LowLevel\MIDI\Doxygen.conf"></File><File path="Demos\Device\LowLevel\MIDI\makefile"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.c"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.h"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.txt"></File><File path="Demos\Device\LowLevel\MIDI\MIDI.aps"></File></Folder><Folder name="Mouse"><File path="Demos\Device\LowLevel\Mouse\Descriptors.c"></File><File path="Demos\Device\LowLevel\Mouse\Descriptors.h"></File><File path="Demos\Device\LowLevel\Mouse\Doxygen.conf"></File><File path="Demos\Device\LowLevel\Mouse\makefile"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.c"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.h"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.txt"></File><File path="Demos\Device\LowLevel\Mouse\Mouse.aps"></File></Folder><Folder name="RNDISEthernet"><Folder name="Lib"><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ARP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\DHCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Ethernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\EthernetProtocols.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ICMP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\IP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\ProtocolDecoders.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\RNDIS.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\TCP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\UDP.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Lib\Webserver.c"></File></Folder><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Descriptors.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\Doxygen.conf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\LUFA RNDIS.inf"></File><File path="Demos\Device\LowLevel\RNDISEthernet\makefile"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.c"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.h"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.txt"></File><File path="Demos\Device\LowLevel\RNDISEthernet\RNDISEthernet.aps"></File></Folder><Folder name="VirtualSerial"><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\Descriptors.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\Doxygen.conf"></File><File path="Demos\Device\LowLevel\VirtualSerial\LUFA VirtualSerial.inf"></File><File path="Demos\Device\LowLevel\VirtualSerial\makefile"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.c"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.h"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.txt"></File><File path="Demos\Device\LowLevel\VirtualSerial\VirtualSerial.aps"></File></Folder><File path="Demos\Device\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="SideShow"><Folder name="Lib"><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowApplications.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommands.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowCommon.h"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.c"></File><File path="Demos\Device\Incomplete\Sideshow\Lib\SideshowContent.h"></File></Folder><File path="Demos\Device\Incomplete\Sideshow\Descriptors.c"></File><File path="Demos\Device\Incomplete\Sideshow\Descriptors.h"></File><File path="Demos\Device\Incomplete\Sideshow\makefile"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.c"></File><File path="Demos\Device\Incomplete\Sideshow\Sideshow.h"></File></Folder><Folder name="TestAndMeasurement"><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\Descriptors.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.c"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\TestAndMeasurement.h"></File><File path="Demos\Device\Incomplete\TestAndMeasurement\makefile"></File></Folder></Folder><File path="Demos\Device\makefile"></File></Folder><Folder name="Host"><Folder name="ClassDriver"><Folder name="JoystickHostWithParser"><File path="Demos\Host\ClassDriver\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\ClassDriver\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\ClassDriver\KeyboardHost\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><File path="Demos\Host\ClassDriver\MassStorageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MassStorageHost\makefile"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.c"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.h"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.txt"></File><File path="Demos\Host\ClassDriver\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\ClassDriver\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MIDIHost\makefile"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\ClassDriver\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\ClassDriver\MouseHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHost\makefile"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.c"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.h"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.txt"></File><File path="Demos\Host\ClassDriver\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\ClassDriver\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\makefile"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\ClassDriver\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><File path="Demos\Host\ClassDriver\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\PrinterHost\makefile"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\ClassDriver\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><File path="Demos\Host\ClassDriver\RNDISEthernetHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\makefile"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.c"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.h"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.txt"></File><File path="Demos\Host\ClassDriver\RNDISEthernetHost\RNDISEthernetHost.aps"></File></Folder><Folder name="StillImageHost"><File path="Demos\Host\ClassDriver\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\StillImageHost\makefile"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.txt"></File><File path="Demos\Host\ClassDriver\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\ClassDriver\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\makefile"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\ClassDriver\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\ClassDriver\makefile"></File></Folder><Folder name="LowLevel"><Folder name="GenericHIDHost"><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.c"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.h"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.txt"></File><File path="Demos\Host\LowLevel\GenericHIDHost\makefile"></File><File path="Demos\Host\LowLevel\GenericHIDHost\GenericHIDHost.aps"></File></Folder><Folder name="JoystickHostWithParser"><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.c"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.h"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.txt"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\JoystickHostWithParser\JoystickHostWithParser.aps"></File></Folder><Folder name="KeyboardHost"><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.c"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.h"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.txt"></File><File path="Demos\Host\LowLevel\KeyboardHost\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHost\KeyboardHost.aps"></File></Folder><Folder name="KeyboardHostWithParser"><File path="Demos\Host\LowLevel\KeyboardHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.c"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.h"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.txt"></File><File path="Demos\Host\LowLevel\KeyboardHostWithParser\KeyboardHostWithParser.aps"></File></Folder><Folder name="MassStorageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.c"></File><File path="Demos\Host\LowLevel\MassStorageHost\Lib\MassStoreCommands.h"></File><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><File path="Demos\Host\LowLevel\MassStorageHost\MassStorageHost.aps"></File></Folder><Folder name="MIDIHost"><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MIDIHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MIDIHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MIDIHost\makefile"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.c"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.h"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.txt"></File><File path="Demos\Host\LowLevel\MIDIHost\MIDIHost.aps"></File></Folder><Folder name="MouseHost"><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHost\makefile"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.c"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.h"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.txt"></File><File path="Demos\Host\LowLevel\MouseHost\MouseHost.aps"></File></Folder><Folder name="MouseHostWithParser"><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.txt"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\Doxygen.conf"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\HIDReport.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\makefile"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.c"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.h"></File><File path="Demos\Host\LowLevel\MouseHostWithParser\MouseHostWithParser.aps"></File></Folder><Folder name="PrinterHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.c"></File><File path="Demos\Host\LowLevel\PrinterHost\Lib\PrinterCommands.h"></File></Folder><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\PrinterHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\PrinterHost\makefile"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.c"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.h"></File><File path="Demos\Host\LowLevel\PrinterHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.txt"></File><File path="Demos\Host\LowLevel\PrinterHost\PrinterHost.aps"></File></Folder><Folder name="RNDISEthernetHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\Lib\RNDISCommands.h"></File></Folder><File path="Demos\Host\LowLevel\RNDISEthernetHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\makefile"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.c"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.h"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISHost.txt"></File><File path="Demos\Host\LowLevel\RNDISEthernetHost\RNDISEthernetHost.aps"></File></Folder><Folder name="StillImageHost"><Folder name="Lib"><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.c"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\StillImageCommands.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Lib\PIMACodes.h"></File></Folder><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\StillImageHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\StillImageHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\StillImageHost\makefile"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.c"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.h"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.txt"></File><File path="Demos\Host\LowLevel\StillImageHost\StillImageHost.aps"></File></Folder><Folder name="VirtualSerialHost"><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\ConfigDescriptor.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\Doxygen.conf"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\makefile"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.c"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.h"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.txt"></File><File path="Demos\Host\LowLevel\VirtualSerialHost\VirtualSerialHost.aps"></File></Folder><File path="Demos\Host\LowLevel\makefile"></File></Folder><Folder name="Incomplete"><Folder name="BluetoothHost"><Folder name="Lib"><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothACLPackets.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothClassCodes.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothHCICommands.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\BluetoothStack.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDPServices.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMM.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\SDP.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\Lib\RFCOMMControl.h"></File></Folder><File path="Demos\Host\Incomplete\BluetoothHost\makefile"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothHost.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\ConfigDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\DeviceDescriptor.h"></File><File path="Demos\Host\Incomplete\BluetoothHost\Doxygen.conf"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.c"></File><File path="Demos\Host\Incomplete\BluetoothHost\BluetoothEvents.h"></File></Folder></Folder><File path="Demos\Host\makefile"></File></Folder><Folder name="DualRole"><Folder name="ClassDriver"><Folder name="MouseHostDevice"><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Doxygen.conf"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\makefile"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\Descriptors.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.c"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\HostFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\DeviceFunctions.h"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.txt"></File><File path="Demos\DualRole\ClassDriver\MouseHostDevice\MouseHostDevice.aps"></File></Folder><File path="Demos\DualRole\ClassDriver\makefile"></File></Folder><File path="Demos\DualRole\makefile"></File></Folder><File path="Demos\makefile"></File></Folder><Folder name="LUFA"><Folder name="Common"><File path="LUFA\Common\Common.h"></File><File path="LUFA\Common\BoardTypes.h"></File><File path="LUFA\Common\Attributes.h"></File></Folder><Folder name="Drivers"><Folder name="USB"><Folder name="LowLevel"><File path="LUFA\Drivers\USB\LowLevel\Pipe.c"></File><File path="LUFA\Drivers\USB\LowLevel\Pipe.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\OTG.h"></File><File path="LUFA\Drivers\USB\LowLevel\USBInterrupt.c"></File><File path="LUFA\Drivers\USB\LowLevel\USBInterrupt.h"></File><File path="LUFA\Drivers\USB\LowLevel\Device.c"></File><File path="LUFA\Drivers\USB\LowLevel\USBController.c"></File><File path="LUFA\Drivers\USB\LowLevel\USBController.h"></File></Folder><Folder name="HighLevel"><Folder name="Template"><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Pipe_RW.c"></File><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Endpoint_RW.c"></File><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Endpoint_Control_W.c"></File><File path="LUFA\Drivers\USB\HighLevel\Template\Template_Endpoint_Control_R.c"></File></Folder><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\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><File path="LUFA\Drivers\USB\HighLevel\DeviceStandardReq.c"></File><File path="LUFA\Drivers\USB\HighLevel\DeviceStandardReq.h"></File><File path="LUFA\Drivers\USB\HighLevel\HostStandardReq.c"></File><File path="LUFA\Drivers\USB\HighLevel\HostStandardReq.h"></File><File path="LUFA\Drivers\USB\HighLevel\EndpointStream.h"></File><File path="LUFA\Drivers\USB\HighLevel\EndpointStream.c"></File><File path="LUFA\Drivers\USB\HighLevel\PipeStream.h"></File><File path="LUFA\Drivers\USB\HighLevel\PipeStream.c"></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="ATAVRUSBRF01"><File path="LUFA\Drivers\Board\ATAVRUSBRF01\LEDs.h"></File><File path="LUFA\Drivers\Board\ATAVRUSBRF01\Buttons.h"></File></Folder><Folder name="BENITO"><File path="LUFA\Drivers\Board\BENITO\LEDs.h"></File><File path="LUFA\Drivers\Board\BENITO\Buttons.h"></File></Folder><Folder name="BUMBLEB"><File path="LUFA\Drivers\Board\BUMBLEB\Buttons.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\Joystick.h"></File><File path="LUFA\Drivers\Board\BUMBLEB\LEDs.h"></File></Folder><Folder name="BUI"><File path="LUFA\Drivers\Board\BUI\LEDs.h"></File></Folder><Folder name="BLACKCAT"><File path="LUFA\Drivers\Board\BLACKCAT\LEDs.h"></File></Folder><Folder name="CULV3"><File path="LUFA\Drivers\Board\CULV3\Buttons.h"></File><File path="LUFA\Drivers\Board\CULV3\LEDs.h"></File></Folder><Folder name="EVK527"><File path="LUFA\Drivers\Board\EVK527\Buttons.h"></File><File path="LUFA\Drivers\Board\EVK527\LEDs.h"></File><File path="LUFA\Drivers\Board\EVK527\Joystick.h"></File><File path="LUFA\Drivers\Board\EVK527\AT45DB321C.h"></File><File path="LUFA\Drivers\Board\EVK527\Dataflash.h"></File></Folder><Folder name="JMDBU2"><File path="LUFA\Drivers\Board\JMDBU2\Buttons.h"></File><File path="LUFA\Drivers\Board\JMDBU2\LEDs.h"></File></Folder><Folder name="MAXIMUS"><File path="LUFA\Drivers\Board\MAXIMUS\LEDs.h"></File></Folder><Folder name="MINIMUS"></Folder><Folder name="OLIMEX162"><File path="LUFA\Drivers\Board\OLIMEX162\LEDs.h"></File><File path="LUFA\Drivers\Board\OLIMEX162\Buttons.h"></File></Folder><Folder name="RZUSBSTICK"><File path="LUFA\Drivers\Board\RZUSBSTICK\LEDs.h"></File></Folder><Folder name="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="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="TEENSY"><File path="LUFA\Drivers\Board\TEENSY\LEDs.h"></File></Folder><Folder name="UDIP"><File path="LUFA\Drivers\Board\UDIP\LEDs.h"></File><File path="LUFA\Drivers\Board\UDIP\Buttons.h"></File></Folder><Folder name="UNO"><File path="LUFA\Drivers\Board\UNO\LEDs.h"></File></Folder><Folder name="USBFOO"><File path="LUFA\Drivers\Board\USBFOO\Buttons.h"></File><File path="LUFA\Drivers\Board\USBFOO\LEDS.h"></File></Folder><Folder name="USBKEY"><File path="LUFA\Drivers\Board\USBKEY\Dataflash.h"></File><File path="LUFA\Drivers\Board\USBKEY\Joystick.h"></File><File path="LUFA\Drivers\Board\USBKEY\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\USBKEY\LEDs.h"></File><File path="LUFA\Drivers\Board\USBKEY\Buttons.h"></File></Folder><Folder name="USBTINYMKII"><File path="LUFA\Drivers\Board\USBTINYMKII\LEDs.h"></File><File path="LUFA\Drivers\Board\USBTINYMKII\Buttons.h"></File></Folder><Folder name="XPLAIN"><File path="LUFA\Drivers\Board\XPLAIN\LEDs.h"></File><File path="LUFA\Drivers\Board\XPLAIN\AT45DB642D.h"></File><File path="LUFA\Drivers\Board\XPLAIN\Dataflash.h"></File></Folder><File path="LUFA\Drivers\Board\Temperature.h"></File><File path="LUFA\Drivers\Board\Dataflash.h"></File><File path="LUFA\Drivers\Board\Joystick.h"></File><File path="LUFA\Drivers\Board\Temperature.c"></File><File path="LUFA\Drivers\Board\LEDs.h"></File><File path="LUFA\Drivers\Board\Buttons.h"></File></Folder><Folder name="Peripheral"><Folder name="AVRU4U6U7"><File path="LUFA\Drivers\Peripheral\AVRU4U6U7\ADC.h"></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><File path="LUFA\Drivers\Peripheral\TWI.c"></File></Folder></Folder><Folder name="ManPages"><File path="LUFA\ManPages\AboutLUFA.txt"></File><File path="LUFA\ManPages\BuildingLinkableLibraries.txt"></File><File path="LUFA\ManPages\ChangeLog.txt"></File><File path="LUFA\ManPages\CompileTimeTokens.txt"></File><File path="LUFA\ManPages\DevelopingWithLUFA.txt"></File><File path="LUFA\ManPages\DeviceSupport.txt"></File><File path="LUFA\ManPages\DirectorySummaries.txt"></File><File path="LUFA\ManPages\Donating.txt"></File><File path="LUFA\ManPages\FutureChanges.txt"></File><File path="LUFA\ManPages\GettingStarted.txt"></File><File path="LUFA\ManPages\Groups.txt"></File><File path="LUFA\ManPages\LibraryResources.txt"></File><File path="LUFA\ManPages\LUFAPoweredProjects.txt"></File><File path="LUFA\ManPages\MainPage.txt"></File><File path="LUFA\ManPages\MigrationInformation.txt"></File><File path="LUFA\ManPages\VIDAndPIDValues.txt"></File><File path="LUFA\ManPages\WritingBoardDrivers.txt"></File><File path="LUFA\ManPages\ConfiguringApps.txt"></File><File path="LUFA\ManPages\CompilingApps.txt"></File><File path="LUFA\ManPages\ProgrammingApps.txt"></File><File path="LUFA\ManPages\LibraryApps.txt"></File><File path="LUFA\ManPages\WhyUseLUFA.txt"></File><File path="LUFA\ManPages\LUFAvsAtmelStack.txt"></File><File path="LUFA\ManPages\AlternativeStacks.txt"></File><File path="LUFA\ManPages\SoftwareBootloaderJump.txt"></File><File path="LUFA\ManPages\LicenseInfo.txt"></File></Folder><Folder name="Scheduler"><File path="LUFA\Scheduler\Scheduler.c"></File><File path="LUFA\Scheduler\Scheduler.h"></File></Folder><Folder name="CodeTemplates"><Folder name="DriverStubs"><File path="LUFA\CodeTemplates\DriverStubs\Buttons.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Dataflash.h"></File><File path="LUFA\CodeTemplates\DriverStubs\Joystick.h"></File><File path="LUFA\CodeTemplates\DriverStubs\LEDs.h"></File></Folder><File path="LUFA\CodeTemplates\makefile_template"></File></Folder><File path="LUFA\makefile"></File><File path="LUFA\Version.h"></File><File path="LUFA\Doxygen.conf"></File><File path="LUFA\License.txt"></File></Folder><Folder name="Bootloaders"><Folder name="DFU"><File path="Bootloaders\DFU\BootloaderDFU.c"></File><File path="Bootloaders\DFU\BootloaderDFU.h"></File><File path="Bootloaders\DFU\Descriptors.c"></File><File path="Bootloaders\DFU\Descriptors.h"></File><File path="Bootloaders\DFU\makefile"></File><File path="Bootloaders\DFU\BootloaderDFU.txt"></File><File path="Bootloaders\DFU\Doxygen.conf"></File><File path="Bootloaders\DFU\BootloaderDFU.aps"></File></Folder><Folder name="CDC"><File path="Bootloaders\CDC\BootloaderCDC.c"></File><File path="Bootloaders\CDC\BootloaderCDC.h"></File><File path="Bootloaders\CDC\Descriptors.c"></File><File path="Bootloaders\CDC\Descriptors.h"></File><File path="Bootloaders\CDC\makefile"></File><File path="Bootloaders\CDC\LUFA CDC Bootloader.inf"></File><File path="Bootloaders\CDC\Doxygen.conf"></File><File path="Bootloaders\CDC\BootloaderCDC.txt"></File><File path="Bootloaders\CDC\BootloaderCDC.aps"></File></Folder><File path="Bootloaders\makefile"></File></Folder><Folder name="Projects"><Folder name="AVRISP-MKII"><Folder name="Lib"><Folder name="ISP"><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\ISP\ISPTarget.h"></File></Folder><Folder name="XPROG"><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\TINYNVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XMEGANVM.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGProtocol.h"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.c"></File><File path="Projects\AVRISP-MKII\Lib\XPROG\XPROGTarget.h"></File></Folder><File path="Projects\AVRISP-MKII\Lib\V2Protocol.c"></File><File path="Projects\AVRISP-MKII\Lib\V2Protocol.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolConstants.h"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.c"></File><File path="Projects\AVRISP-MKII\Lib\V2ProtocolParams.h"></File></Folder><File path="Projects\AVRISP-MKII\Descriptors.c"></File><File path="Projects\AVRISP-MKII\Descriptors.h"></File><File path="Projects\AVRISP-MKII\Doxygen.conf"></File><File path="Projects\AVRISP-MKII\makefile"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.c"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.h"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.txt"></File><File path="Projects\AVRISP-MKII\AVRISP-MKII.aps"></File></Folder><Folder name="Benito"><Folder name="Lib"><File path="Projects\Benito\Lib\LightweightRingBuff.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><File path="Projects\Benito\Benito.aps"></File></Folder><Folder name="LEDNotifier"><Folder name="CPUUsageApp"><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.csproj"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.Designer.cs"></File><File path="Projects\LEDNotifier\CPUUsageApp\CPUMonitor.resx"></File><File path="Projects\LEDNotifier\CPUUsageApp\Program.cs"></File></Folder><Folder name="HotmailNotifierApp"><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.csproj"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.Designer.cs"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\MailNotifier.resx"></File><File path="Projects\LEDNotifier\HotmailNotifierApp\Program.cs"></File></Folder><Folder name="LEDMixerApp"><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.csproj"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.Designer.cs"></File><File path="Projects\LEDNotifier\LEDMixerApp\LEDMixer.resx"></File><File path="Projects\LEDNotifier\LEDMixerApp\Program.cs"></File></Folder><File path="Projects\LEDNotifier\Descriptors.c"></File><File path="Projects\LEDNotifier\Descriptors.h"></File><File path="Projects\LEDNotifier\Doxygen.conf"></File><File path="Projects\LEDNotifier\LEDNotifier.c"></File><File path="Projects\LEDNotifier\LEDNotifier.h"></File><File path="Projects\LEDNotifier\LEDNotifier.txt"></File><File path="Projects\LEDNotifier\LUFA LED Notifier.inf"></File><File path="Projects\LEDNotifier\makefile"></File><File path="Projects\LEDNotifier\LEDNotifier.aps"></File></Folder><Folder name="MagStripe"><Folder name="Lib"><File path="Projects\Magstripe\Lib\CircularBitBuffer.c"></File><File path="Projects\Magstripe\Lib\CircularBitBuffer.h"></File><File path="Projects\Magstripe\Lib\MagstripeHW.h"></File></Folder><File path="Projects\Magstripe\Descriptors.c"></File><File path="Projects\Magstripe\Descriptors.h"></File><File path="Projects\Magstripe\Magstripe.c"></File><File path="Projects\Magstripe\Magstripe.h"></File><File path="Projects\Magstripe\makefile"></File><File path="Projects\Magstripe\Magstripe.txt"></File><File path="Projects\Magstripe\Doxygen.conf"></File><File path="Projects\Magstripe\Magstripe.aps"></File></Folder><Folder name="MissileLauncher"><File path="Projects\MissileLauncher\ConfigDescriptor.c"></File><File path="Projects\MissileLauncher\ConfigDescriptor.h"></File><File path="Projects\MissileLauncher\Doxygen.conf"></File><File path="Projects\MissileLauncher\makefile"></File><File path="Projects\MissileLauncher\MissileLauncher.c"></File><File path="Projects\MissileLauncher\MissileLauncher.h"></File><File path="Projects\MissileLauncher\MissileLauncher.txt"></File><File path="Projects\MissileLauncher\MissileLauncher.aps"></File></Folder><Folder name="RelayBoard"><File path="Projects\RelayBoard\Descriptors.c"></File><File path="Projects\RelayBoard\Descriptors.h"></File><File path="Projects\RelayBoard\Doxygen.conf"></File><File path="Projects\RelayBoard\makefile"></File><File path="Projects\RelayBoard\RelayBoard.c"></File><File path="Projects\RelayBoard\RelayBoard.h"></File><File path="Projects\RelayBoard\RelayBoard.txt"></File><File path="Projects\RelayBoard\RelayBoard.aps"></File></Folder><Folder name="TempDataLogger"><Folder name="Lib"><Folder name="FATFs"><File path="Projects\TempDataLogger\Lib\FATFs\diskio.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\diskio.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.c"></File><File path="Projects\TempDataLogger\Lib\FATFs\ff.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\ffconf.h"></File><File path="Projects\TempDataLogger\Lib\FATFs\integer.h"></File></Folder><File path="Projects\TempDataLogger\Lib\DataflashManager.c"></File><File path="Projects\TempDataLogger\Lib\DataflashManager.h"></File><File path="Projects\TempDataLogger\Lib\DS1307.c"></File><File path="Projects\TempDataLogger\Lib\DS1307.h"></File><File path="Projects\TempDataLogger\Lib\SCSI.c"></File><File path="Projects\TempDataLogger\Lib\SCSI.h"></File></Folder><Folder name="TempLogHostApp"><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.Designer.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\DataLoggerSettings.resx"></File><File path="Projects\TempDataLogger\TempLogHostApp\Program.cs"></File><File path="Projects\TempDataLogger\TempLogHostApp\TempLoggerHostApp.csproj"></File></Folder><File path="Projects\TempDataLogger\Descriptors.c"></File><File path="Projects\TempDataLogger\Descriptors.h"></File><File path="Projects\TempDataLogger\Doxygen.conf"></File><File path="Projects\TempDataLogger\makefile"></File><File path="Projects\TempDataLogger\TempDataLogger.c"></File><File path="Projects\TempDataLogger\TempDataLogger.h"></File><File path="Projects\TempDataLogger\TemperatureDataLogger.txt"></File><File path="Projects\TempDataLogger\TempDataLogger.aps"></File></Folder><Folder name="USBtoSerial"><Folder name="Lib"><File path="Projects\USBtoSerial\Lib\LightweightRingBuff.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><File path="Projects\USBtoSerial\USBtoSerial.aps"></File></Folder><Folder name="Webserver"><Folder name="Lib"><Folder name="uip"><File path="Projects\Webserver\Lib\uip\clock.c"></File><File path="Projects\Webserver\Lib\uip\clock.h"></File><File path="Projects\Webserver\Lib\uip\timer.c"></File><File path="Projects\Webserver\Lib\uip\timer.h"></File><File path="Projects\Webserver\Lib\uip\uip.c"></File><File path="Projects\Webserver\Lib\uip\uip.h"></File><File path="Projects\Webserver\Lib\uip\uip_arp.c"></File><File path="Projects\Webserver\Lib\uip\uip_arp.h"></File><File path="Projects\Webserver\Lib\uip\uipopt.h"></File><File path="Projects\Webserver\Lib\uip\uip-split.c"></File><File path="Projects\Webserver\Lib\uip\uip-split.h"></File></Folder><Folder name="FATFs"><File path="Projects\Webserver\Lib\FATFs\diskio.c"></File><File path="Projects\Webserver\Lib\FATFs\diskio.h"></File><File path="Projects\Webserver\Lib\FATFs\ff.c"></File><File path="Projects\Webserver\Lib\FATFs\ff.h"></File><File path="Projects\Webserver\Lib\FATFs\ffconf.h"></File><File path="Projects\Webserver\Lib\FATFs\integer.h"></File></Folder><File path="Projects\Webserver\Lib\DataflashManager.c"></File><File path="Projects\Webserver\Lib\DataflashManager.h"></File><File path="Projects\Webserver\Lib\uIPManagement.c"></File><File path="Projects\Webserver\Lib\uIPManagement.h"></File><File path="Projects\Webserver\Lib\HTTPServerApp.c"></File><File path="Projects\Webserver\Lib\HTTPServerApp.h"></File><File path="Projects\Webserver\Lib\SCSI.c"></File><File path="Projects\Webserver\Lib\SCSI.h"></File><File path="Projects\Webserver\Lib\DHCPClientApp.c"></File><File path="Projects\Webserver\Lib\DHCPClientApp.h"></File><File path="Projects\Webserver\Lib\TELNETServerApp.c"></File><File path="Projects\Webserver\Lib\TELNETServerApp.h"></File></Folder><File path="Projects\Webserver\makefile"></File><File path="Projects\Webserver\Webserver.c"></File><File path="Projects\Webserver\Webserver.h"></File><File path="Projects\Webserver\Doxygen.conf"></File><File path="Projects\Webserver\Webserver.txt"></File><File path="Projects\Webserver\Descriptors.c"></File><File path="Projects\Webserver\Descriptors.h"></File><File path="Projects\Webserver\USBHostMode.c"></File><File path="Projects\Webserver\USBHostMode.h"></File><File path="Projects\Webserver\USBDeviceMode.c"></File><File path="Projects\Webserver\USBDeviceMode.h"></File><File path="Projects\Webserver\Webserver.aps"></File></Folder><Folder name="XPLAINBridge"><Folder name="Lib"><File path="Projects\XPLAINBridge\Lib\SoftUART.c"></File><File path="Projects\XPLAINBridge\Lib\SoftUART.h"></File><File path="Projects\XPLAINBridge\Lib\LightweightRingBuff.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\AVRISPDescriptors.c"></File><File path="Projects\XPLAINBridge\AVRISPDescriptors.h"></File><File path="Projects\XPLAINBridge\Doxygen.conf"></File><File path="Projects\XPLAINBridge\XPLAINBridge.aps"></File><File path="Projects\XPLAINBridge\USARTDescriptors.c"></File><File path="Projects\XPLAINBridge\USARTDescriptors.h"></File></Folder><Folder name="Incomplete"><Folder name="StandaloneProgrammer"><Folder name="Lib"><Folder name="PetiteFATFs"><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\diskio.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\integer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\PetiteFATFs\pff.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\DataflashManager.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\SCSI.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Lib\ProgrammerConfig.h"></File></Folder><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\Descriptors.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\makefile"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\StandaloneProgrammer.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskDevice.h"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.c"></File><File path="Projects\Incomplete\StandaloneProgrammer\DiskHost.h"></File></Folder></Folder><File path="Projects\makefile"></File></Folder><File path="makefile"></File><File path="README.txt"></File></Project>
\ No newline at end of file
diff --git a/LUFA/Drivers/USB/Class/Audio.h b/LUFA/Drivers/USB/Class/Audio.h
index b28133811cfd4b6216dce5e7b4dccfac637e1db1..5216e0d5792bb2ccbacd5bedd8dd48dedc690614 100644
--- a/LUFA/Drivers/USB/Class/Audio.h
+++ b/LUFA/Drivers/USB/Class/Audio.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassAudio Audio Class Driver - LUFA/Drivers/Class/Audio.h
+ *  @defgroup Group_USBClassAudio Audio Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -59,16 +59,12 @@
 #define _AUDIO_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_AUDIO_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_AUDIO_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_DEVICE)
 			#include "Device/Audio.h"
 		#endif
diff --git a/LUFA/Drivers/USB/Class/CDC.h b/LUFA/Drivers/USB/Class/CDC.h
index 988edcdd781440bbdf1f317dc1c6404017ec105a..87ecd84b103d6c8af45a7a49defee729d1463210 100644
--- a/LUFA/Drivers/USB/Class/CDC.h
+++ b/LUFA/Drivers/USB/Class/CDC.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassCDC CDC-ACM (Virtual Serial) Class Driver - LUFA/Drivers/Class/CDC.h
+ *  @defgroup Group_USBClassCDC CDC-ACM (Virtual Serial) Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -60,16 +60,12 @@
 #define _CDC_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_CDC_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_CDC_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_DEVICE)
 			#include "Device/CDC.h"
 		#endif
diff --git a/LUFA/Drivers/USB/Class/Common/Audio.h b/LUFA/Drivers/USB/Class/Common/Audio.h
index 5e65865a03cdf185664cfef9a234a90949ac37c2..b848015e04595b15321b866e80299c6e7205df95 100644
--- a/LUFA/Drivers/USB/Class/Common/Audio.h
+++ b/LUFA/Drivers/USB/Class/Common/Audio.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB Audio 1.0 Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/Audio.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassAudio
@@ -51,7 +51,7 @@
 #define _AUDIO_CLASS_COMMON_H_
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 
 		#include <string.h>
 
@@ -62,7 +62,7 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_AUDIO_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/Audio.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
diff --git a/LUFA/Drivers/USB/Class/Common/CDC.h b/LUFA/Drivers/USB/Class/Common/CDC.h
index 6d2c519b8fad5501eaadb237977d7efbeb9f9ff3..eb6577e5ca18e6a0d96a1a55ef51ff9421520914 100644
--- a/LUFA/Drivers/USB/Class/Common/CDC.h
+++ b/LUFA/Drivers/USB/Class/Common/CDC.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB CDC Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/CDC.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassCDC
@@ -51,7 +51,7 @@
 #define _CDC_CLASS_COMMON_H_
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 
 		#include <string.h>
 
@@ -62,7 +62,7 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_CDC_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/CDC.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
@@ -308,6 +308,21 @@
 			uint8_t bMasterInterface; /**< Interface number of the CDC Control interface. */
 			uint8_t bSlaveInterface0; /**< Interface number of the CDC Data interface. */
 		} USB_CDC_StdDescriptor_FunctionalUnion_t;
+		
+		/** Type define for a CDC Line Encoding structure, used to hold the various encoding parameters for a virtual
+		 *  serial port.
+		 */
+		typedef struct
+		{
+			uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second. */
+			uint8_t  CharFormat; /**< Character format of the virtual serial port, a value from the
+								  *   \ref CDC_LineEncodingFormats_t enum.
+								  */
+			uint8_t  ParityType; /**< Parity setting of the virtual serial port, a value from the
+								  *   \ref CDC_LineEncodingParity_t enum.
+								  */
+			uint8_t  DataBits; /**< Bits of data per character of the virtual serial port. */
+		} CDC_LineEncoding_t;
 
 	/* Disable C linkage for C++ Compilers: */
 		#if defined(__cplusplus)
diff --git a/LUFA/Drivers/USB/Class/Common/HID.h b/LUFA/Drivers/USB/Class/Common/HID.h
index 3658c8eba7b71b1e0120f2deafef0677013ee2af..b5d095e084c5a2ceffaf17c74b59dba7b54a0f0e 100644
--- a/LUFA/Drivers/USB/Class/Common/HID.h
+++ b/LUFA/Drivers/USB/Class/Common/HID.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB HID Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/HID.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassHID
@@ -51,13 +51,13 @@
 #define _HID_CLASS_COMMON_H_
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 
 		#include <string.h>
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_HID_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/HID.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
diff --git a/LUFA/Drivers/USB/Class/Common/MIDI.h b/LUFA/Drivers/USB/Class/Common/MIDI.h
index ef3f8fceff9d3e60d0a15c2600d5cac0b4577ae4..22e32479fef0e93822203ccc2789418bd1f5a1d8 100644
--- a/LUFA/Drivers/USB/Class/Common/MIDI.h
+++ b/LUFA/Drivers/USB/Class/Common/MIDI.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB MIDI Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/MIDI.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassMIDI
@@ -54,7 +54,7 @@
 		#define __INCLUDE_FROM_AUDIO_DRIVER
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 		#include "Audio.h"
 
 		#include <string.h>
@@ -66,7 +66,7 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_MIDI_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/MIDI.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
diff --git a/LUFA/Drivers/USB/Class/Common/MassStorage.h b/LUFA/Drivers/USB/Class/Common/MassStorage.h
index dea847c13e864b6495129be4dc6b53ad0119c9a3..e8693335d2abf21460671ad32182b257048527dd 100644
--- a/LUFA/Drivers/USB/Class/Common/MassStorage.h
+++ b/LUFA/Drivers/USB/Class/Common/MassStorage.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB Mass Storage Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/MassStorage.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassMS
@@ -51,7 +51,7 @@
 #define _MS_CLASS_COMMON_H_
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 
 		#include <string.h>
 
@@ -62,7 +62,7 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_MS_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/MassStorage.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
diff --git a/LUFA/Drivers/USB/Class/Common/Printer.h b/LUFA/Drivers/USB/Class/Common/Printer.h
index 97e94a3bc1f9069959d6e6f88e35bb8862e982da..03ae12e59051481ce640556598b013dc573c6f89 100644
--- a/LUFA/Drivers/USB/Class/Common/Printer.h
+++ b/LUFA/Drivers/USB/Class/Common/Printer.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB Printer Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/Printer.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassPrinter
@@ -51,7 +51,7 @@
 #define _PRINTER_CLASS_COMMON_H_
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 
 		#include <string.h>
 
@@ -62,7 +62,7 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_PRINTER_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/Printer.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
@@ -75,6 +75,22 @@
 		/** Port status mask for a printer device, indicating that the device is currently out of paper. */
 		#define PRNT_PORTSTATUS_PAPEREMPTY  (1 << 5)
 
+	/* Enums: */
+		/** Enum for the Printer class specific control requests that can be issued by the USB bus host. */
+		enum PRNT_ClassRequests_t
+		{
+			PRNT_REQ_GetDeviceID      = 0x00, /**< Printer class-specific request to retrieve the Unicode ID
+			                                   *   string of the device, containing the device's name, manufacturer
+			                                   *   and supported printer languages.
+			                                   */
+			PRNT_REQ_GetPortStatus    = 0x01, /**< Printer class-specific request to get the current status of the
+			                                   *   virtual printer port, for device selection and ready states.
+			                                   */
+			PRNT_REQ_SoftReset        = 0x02, /**< Printer class-specific request to reset the device, ready for new
+			                                   *   printer commands.
+			                                   */
+		};		
+
 	/* Disable C linkage for C++ Compilers: */
 		#if defined(__cplusplus)
 			}
diff --git a/LUFA/Drivers/USB/Class/Common/RNDIS.h b/LUFA/Drivers/USB/Class/Common/RNDIS.h
index 6b5234b13ac2d7c8312199e8d9a38a0773019de6..ae2d5bd54c59ac752a960d460ae928d35b5ee0fe 100644
--- a/LUFA/Drivers/USB/Class/Common/RNDIS.h
+++ b/LUFA/Drivers/USB/Class/Common/RNDIS.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB RNDIS Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/RNDIS.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassRNDIS
@@ -54,7 +54,7 @@
 		#define __INCLUDE_FROM_CDC_DRIVER
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 		#include "RNDISConstants.h"
 		#include "CDC.h"
 
@@ -67,7 +67,7 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_RNDIS_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/RNDIS.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
diff --git a/LUFA/Drivers/USB/Class/Common/RNDISConstants.h b/LUFA/Drivers/USB/Class/Common/RNDISConstants.h
index 8edbbd70105192ac8569a6e5a18c3c27516c0864..2b955d095abbc5b288e594ecd2b7c86afc09a1c8 100644
--- a/LUFA/Drivers/USB/Class/Common/RNDISConstants.h
+++ b/LUFA/Drivers/USB/Class/Common/RNDISConstants.h
@@ -33,8 +33,8 @@
  *
  *  Common RNDIS class constant definitions.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/Audio.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \file
diff --git a/LUFA/Drivers/USB/Class/Common/StillImage.h b/LUFA/Drivers/USB/Class/Common/StillImage.h
index 2ba4227acce6115266ebf9e7d3fe2574babad01c..bb9460934b1e6ef60fe59f2f2bdb535ef4999413 100644
--- a/LUFA/Drivers/USB/Class/Common/StillImage.h
+++ b/LUFA/Drivers/USB/Class/Common/StillImage.h
@@ -33,8 +33,8 @@
  *
  *  Common definitions and declarations for the library USB Still Image Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/StillImage.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassSI
@@ -51,7 +51,7 @@
 #define _SI_CLASS_COMMON_H_
 
 	/* Includes: */
-		#include "../../USB.h"
+		#include "../../HighLevel/StdDescriptors.h"
 
 		#include <string.h>
 
@@ -62,7 +62,7 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_SI_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/StillImage.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
 	/* Macros: */
@@ -79,42 +79,42 @@
 		 *
 		 *  \param[in] Params  Number of parameters which are to be sent in the Param field of the container.
 		 */
-		#define PIMA_COMMAND_SIZE(Params)     ((sizeof(SI_PIMA_Container_t) - 12) + ((Params) * sizeof(uint32_t)))
+		#define PIMA_COMMAND_SIZE(Params)     ((sizeof(PIMA_Container_t) - 12) + ((Params) * sizeof(uint32_t)))
 
 		/** Used in the DataLength field of a PIMA container, to give the total container size in bytes for
 		 *  a data container.
 		 *
 		 *  \param[in] DataLen  Length in bytes of the data in the container.
 		 */
-		#define PIMA_DATA_SIZE(DataLen)       ((sizeof(SI_PIMA_Container_t) - 12) + (DataLen))
+		#define PIMA_DATA_SIZE(DataLen)       ((sizeof(PIMA_Container_t) - 12) + (DataLen))
 
 	/* Enums: */
 		/** Enum for the possible PIMA contains types. */
-		enum SI_PIMA_Container_Types_t
+		enum PIMA_Container_Types_t
 		{
-			SI_PIMA_CONTAINER_Undefined     = 0, /**< Undefined container type. */
-			SI_PIMA_CONTAINER_CommandBlock  = 1, /**< Command Block container type. */
-			SI_PIMA_CONTAINER_DataBlock     = 2, /**< Data Block container type. */
-			SI_PIMA_CONTAINER_ResponseBlock = 3, /**< Response container type. */
-			SI_PIMA_CONTAINER_EventBlock    = 4, /**< Event Block container type. */
+			PIMA_CONTAINER_Undefined     = 0, /**< Undefined container type. */
+			PIMA_CONTAINER_CommandBlock  = 1, /**< Command Block container type. */
+			PIMA_CONTAINER_DataBlock     = 2, /**< Data Block container type. */
+			PIMA_CONTAINER_ResponseBlock = 3, /**< Response container type. */
+			PIMA_CONTAINER_EventBlock    = 4, /**< Event Block container type. */
 		};
 
 	/* Enums: */
 		/** Enums for the possible status codes of a returned Response Block from an attached PIMA compliant Still Image device. */
-		enum SI_PIMA_ResponseCodes_t
+		enum PIMA_ResponseCodes_t
 		{
-			SI_PIMA_RESPONSE_OK                    = 1, /**< Response code indicating no error in the issued command. */
-			SI_PIMA_RESPONSE_GeneralError          = 2, /**< Response code indicating a general error while processing the
+			PIMA_RESPONSE_OK                    = 1, /**< Response code indicating no error in the issued command. */
+			PIMA_RESPONSE_GeneralError          = 2, /**< Response code indicating a general error while processing the
 			                                             *  issued command.
 			                                             */
-			SI_PIMA_RESPONSE_SessionNotOpen        = 3, /**< Response code indicating that the sent command requires an open
+			PIMA_RESPONSE_SessionNotOpen        = 3, /**< Response code indicating that the sent command requires an open
 			                                             *   session before being issued.
 			                                             */
-			SI_PIMA_RESPONSE_InvalidTransaction    = 4, /**< Response code indicating an invalid transaction occurred. */
-			SI_PIMA_RESPONSE_OperationNotSupported = 5, /**< Response code indicating that the issued command is not supported
+			PIMA_RESPONSE_InvalidTransaction    = 4, /**< Response code indicating an invalid transaction occurred. */
+			PIMA_RESPONSE_OperationNotSupported = 5, /**< Response code indicating that the issued command is not supported
 			                                             *   by the attached device.
 			                                             */
-			SI_PIMA_RESPONSE_ParameterNotSupported = 6, /**< Response code indicating that one or more of the issued command's
+			PIMA_RESPONSE_ParameterNotSupported = 6, /**< Response code indicating that one or more of the issued command's
 			                                             *   parameters are not supported by the device.
 			                                             */
 		};
@@ -128,11 +128,11 @@
 		typedef struct
 		{
 			uint32_t DataLength; /**< Length of the container and data, in bytes. */
-			uint16_t Type; /**< Container type, a value from the \ref SI_PIMA_Container_Types_t enum. */
+			uint16_t Type; /**< Container type, a value from the \ref PIMA_Container_Types_t enum. */
 			uint16_t Code; /**< Command, event or response code of the container. */
 			uint32_t TransactionID; /**< Unique container ID to link blocks together. */
 			uint32_t Params[3]; /**< Block parameters to be issued along with the block code (command blocks only). */
-		} SI_PIMA_Container_t;
+		} PIMA_Container_t;
 
 	/* Disable C linkage for C++ Compilers: */
 		#if defined(__cplusplus)
diff --git a/LUFA/Drivers/USB/Class/Device/Audio.c b/LUFA/Drivers/USB/Class/Device/Audio.c
index 106a968dc24f73fdf05e1c8ff2a46e095f5f2843..156a521406e8ccc693f87f3f574423dfbeaa3725 100644
--- a/LUFA/Drivers/USB/Class/Device/Audio.c
+++ b/LUFA/Drivers/USB/Class/Device/Audio.c
@@ -33,6 +33,7 @@
 #if defined(USB_CAN_BE_DEVICE)
 
 #define  __INCLUDE_FROM_AUDIO_DRIVER
+#define  __INCLUDE_FROM_AUDIO_DEVICE_C
 #include "Audio.h"
 
 void Audio_Device_ProcessControlRequest(USB_ClassInfo_Audio_Device_t* const AudioInterfaceInfo)
diff --git a/LUFA/Drivers/USB/Class/Device/Audio.h b/LUFA/Drivers/USB/Class/Device/Audio.h
index 6520a3379ab2d2d4c470461ed4da1c24b0fef4fd..a20a7177e4951b9bffbae5ab71d277e40af9483e 100644
--- a/LUFA/Drivers/USB/Class/Device/Audio.h
+++ b/LUFA/Drivers/USB/Class/Device/Audio.h
@@ -33,8 +33,8 @@
  *
  *  Device mode driver for the library USB Audio 1.0 Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/Audio.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassAudio
@@ -66,7 +66,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_AUDIO_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/Audio.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_AUDIO_DEVICE_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
diff --git a/LUFA/Drivers/USB/Class/Device/CDC.c b/LUFA/Drivers/USB/Class/Device/CDC.c
index f95496ebde46af1e354890f4fae974f8e3cc7262..2019ede0a9a742e20bc0e0d266710be33dbf449d 100644
--- a/LUFA/Drivers/USB/Class/Device/CDC.c
+++ b/LUFA/Drivers/USB/Class/Device/CDC.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_DEVICE)
 
-#define  __INCLUDE_FROM_CDC_CLASS_DEVICE_C
 #define  __INCLUDE_FROM_CDC_DRIVER
+#define  __INCLUDE_FROM_CDC_DEVICE_C
 #include "CDC.h"
 
 void CDC_Device_Event_Stub(void)
diff --git a/LUFA/Drivers/USB/Class/Device/CDC.h b/LUFA/Drivers/USB/Class/Device/CDC.h
index 2e66e9fa763f0cb4ff23fc92ec40848a1990dee1..9d6db767f4cec88bd3d29ee58352d57c5878029d 100644
--- a/LUFA/Drivers/USB/Class/Device/CDC.h
+++ b/LUFA/Drivers/USB/Class/Device/CDC.h
@@ -33,8 +33,8 @@
  *
  *  Device mode driver for the library USB CDC Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/CDC.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassCDC
@@ -84,7 +84,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_CDC_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/CDC.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_CDC_DEVICE_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
@@ -128,19 +132,10 @@
 											   */
 					} ControlLineStates; /**< Current states of the virtual serial port's control lines between the device and host. */
 
-					struct
-					{
-						uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second. */
-						uint8_t  CharFormat; /**< Character format of the virtual serial port, a value from the
-											  *   \ref CDC_LineEncodingFormats_t enum.
-											  */
-						uint8_t  ParityType; /**< Parity setting of the virtual serial port, a value from the
-											  *   \ref CDC_LineEncodingParity_t enum.
-											  */
-						uint8_t  DataBits; /**< Bits of data per character of the virtual serial port. */
-					} LineEncoding;	/** Line encoding used in the virtual serial port, for the device's information. This is generally
-					                 *  only used if the virtual serial port data is to be reconstructed on a physical UART.
-					                 */
+					CDC_LineEncoding_t LineEncoding; /** Line encoding used in the virtual serial port, for the device's information.
+					                                  *  This is generally only used if the virtual serial port data is to be
+					                                  *  reconstructed on a physical UART.
+					                                  */
 				} State; /**< State data for the USB class interface within the device. All elements in this section
 				          *   are reset to their defaults when the interface is enumerated.
 				          */
@@ -318,7 +313,7 @@
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_CDC_CLASS_DEVICE_C)
+			#if defined(__INCLUDE_FROM_CDC_DEVICE_C)
 				static int CDC_Device_putchar(char c,
 				                              FILE* Stream) ATTR_NON_NULL_PTR_ARG(2);
 				static int CDC_Device_getchar(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
diff --git a/LUFA/Drivers/USB/Class/Device/HID.c b/LUFA/Drivers/USB/Class/Device/HID.c
index cdfe8497a56e6c22ec49222c7a46c96a9b850940..91a4f7a21d58555c3069974f08959cd6d46b6f14 100644
--- a/LUFA/Drivers/USB/Class/Device/HID.c
+++ b/LUFA/Drivers/USB/Class/Device/HID.c
@@ -33,6 +33,7 @@
 #if defined(USB_CAN_BE_DEVICE)
 
 #define  __INCLUDE_FROM_HID_DRIVER
+#define  __INCLUDE_FROM_HID_DEVICE_C
 #include "HID.h"
 
 void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
diff --git a/LUFA/Drivers/USB/Class/Device/HID.h b/LUFA/Drivers/USB/Class/Device/HID.h
index 5329e294ebb5557475557c93611ffa2a4c2398f2..a7a931c7b91664e425083c63416a45e62dabfd25 100644
--- a/LUFA/Drivers/USB/Class/Device/HID.h
+++ b/LUFA/Drivers/USB/Class/Device/HID.h
@@ -33,8 +33,8 @@
  *
  *  Device mode driver for the library USB HID Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/HID.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassHID
@@ -66,9 +66,14 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_HID_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/HID.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
+		#if defined(__INCLUDE_FROM_HID_DEVICE_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
+		#endif
+
+
 	/* Public Interface - May be used in end-application: */
 		/* Type Defines: */
 			/** \brief HID Class Device Mode Configuration and State Structure.
diff --git a/LUFA/Drivers/USB/Class/Device/MIDI.c b/LUFA/Drivers/USB/Class/Device/MIDI.c
index 783b67ce7a5b9059f9aa49f9ccba82c8c9122e81..f7c59b51ec0e971b5cc1c5419c37004466b805f3 100644
--- a/LUFA/Drivers/USB/Class/Device/MIDI.c
+++ b/LUFA/Drivers/USB/Class/Device/MIDI.c
@@ -33,6 +33,7 @@
 #if defined(USB_CAN_BE_DEVICE)
 
 #define  __INCLUDE_FROM_MIDI_DRIVER
+#define  __INCLUDE_FROM_MIDI_DEVICE_C
 #include "MIDI.h"
 
 bool MIDI_Device_ConfigureEndpoints(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo)
diff --git a/LUFA/Drivers/USB/Class/Device/MIDI.h b/LUFA/Drivers/USB/Class/Device/MIDI.h
index 5af6e18a25e919ec921ed5b86c8a04f4550514f5..3f633acfcda445aad1da246ba05464d98bd5918b 100644
--- a/LUFA/Drivers/USB/Class/Device/MIDI.h
+++ b/LUFA/Drivers/USB/Class/Device/MIDI.h
@@ -33,8 +33,8 @@
  *
  *  Device mode driver for the library USB MIDI Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/MIDI.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassMIDI
@@ -66,7 +66,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_MIDI_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/MIDI.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_MIDI_DEVICE_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
diff --git a/LUFA/Drivers/USB/Class/Device/MassStorage.c b/LUFA/Drivers/USB/Class/Device/MassStorage.c
index 039684437271cefb7b8887b7b0b8bbf2d0d98808..f053a043e1219e4c4abc87320f369d45331ae571 100644
--- a/LUFA/Drivers/USB/Class/Device/MassStorage.c
+++ b/LUFA/Drivers/USB/Class/Device/MassStorage.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_DEVICE)
 
-#define  __INCLUDE_FROM_MS_CLASS_DEVICE_C
 #define  __INCLUDE_FROM_MS_DRIVER
+#define  __INCLUDE_FROM_MASSSTORAGE_DEVICE_C
 #include "MassStorage.h"
 
 static volatile bool* CallbackIsResetSource;
diff --git a/LUFA/Drivers/USB/Class/Device/MassStorage.h b/LUFA/Drivers/USB/Class/Device/MassStorage.h
index 8201a3ce9f82c4966d2fb977377bf517967b34cd..6611ca1148a867d30d09465f85d10e201123abfc 100644
--- a/LUFA/Drivers/USB/Class/Device/MassStorage.h
+++ b/LUFA/Drivers/USB/Class/Device/MassStorage.h
@@ -33,8 +33,8 @@
  *
  *  Device mode driver for the library USB Mass Storage Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/MassStorage.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassMS
@@ -66,7 +66,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_MS_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/MassStorage.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_MASSSTORAGE_DEVICE_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
@@ -154,7 +158,7 @@
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_MS_CLASS_DEVICE_C)
+			#if defined(__INCLUDE_FROM_MASSSTORAGE_DEVICE_C)
 				static void    MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 				static bool    MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t StreamCallback_MS_Device_AbortOnMassStoreReset(void);
diff --git a/LUFA/Drivers/USB/Class/Device/RNDIS.c b/LUFA/Drivers/USB/Class/Device/RNDIS.c
index 7b6719da6c8511bcb7b045fc71f0acdcb828ca5a..d4ee38d58c8848cf67ab47f6b3383105c50503fe 100644
--- a/LUFA/Drivers/USB/Class/Device/RNDIS.c
+++ b/LUFA/Drivers/USB/Class/Device/RNDIS.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_DEVICE)
 
-#define  __INCLUDE_FROM_RNDIS_CLASS_DEVICE_C
 #define  __INCLUDE_FROM_RNDIS_DRIVER
+#define  __INCLUDE_FROM_RNDIS_DEVICE_C
 #include "RNDIS.h"
 
 static const uint32_t PROGMEM AdapterSupportedOIDList[]  =
diff --git a/LUFA/Drivers/USB/Class/Device/RNDIS.h b/LUFA/Drivers/USB/Class/Device/RNDIS.h
index 5aebcc63a7b1fca6c3af2d23586fe9361236131e..86d4121379e826032b069460f027582888fd0f8a 100644
--- a/LUFA/Drivers/USB/Class/Device/RNDIS.h
+++ b/LUFA/Drivers/USB/Class/Device/RNDIS.h
@@ -33,8 +33,8 @@
  *
  *  Device mode driver for the library USB RNDIS Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/RNDIS.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassRNDIS
@@ -66,9 +66,14 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_RNDIS_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/RNDIS.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
+		#if defined(__INCLUDE_FROM_RNDIS_DEVICE_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
+		#endif
+
+
 	/* Public Interface - May be used in end-application: */
 		/* Type Defines: */
 			/** \brief RNDIS Class Device Mode Configuration and State Structure.
@@ -151,7 +156,7 @@
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
 		/* Function Prototypes: */
-		#if defined(__INCLUDE_FROM_RNDIS_CLASS_DEVICE_C)
+		#if defined(__INCLUDE_FROM_RNDIS_DEVICE_C)
 			static void RNDIS_Device_ProcessRNDISControlMessage(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo)
 			                                                    ATTR_NON_NULL_PTR_ARG(1);
 			static bool RNDIS_Device_ProcessNDISQuery(USB_ClassInfo_RNDIS_Device_t* const RNDISInterfaceInfo,
diff --git a/LUFA/Drivers/USB/Class/HID.h b/LUFA/Drivers/USB/Class/HID.h
index 3fb74f37994afa7a0d910778ee36029a5125c68b..9c0a7ea333b246c0d37647a4fd3c4cebe900b529 100644
--- a/LUFA/Drivers/USB/Class/HID.h
+++ b/LUFA/Drivers/USB/Class/HID.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassHID HID Class Driver - LUFA/Drivers/Class/HID.h
+ *  @defgroup Group_USBClassHID HID Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -61,16 +61,12 @@
 #define _HID_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_HID_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_HID_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_DEVICE)
 			#include "Device/HID.h"
 		#endif
diff --git a/LUFA/Drivers/USB/Class/Host/CDC.c b/LUFA/Drivers/USB/Class/Host/CDC.c
index 57ca35cdc194aaf472ddd6a0a79ce9c520ce5036..28d94e5945019e750ccf7da33a2d238c66ad41ca 100644
--- a/LUFA/Drivers/USB/Class/Host/CDC.c
+++ b/LUFA/Drivers/USB/Class/Host/CDC.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
-#define  __INCLUDE_FROM_CDC_CLASS_HOST_C
 #define  __INCLUDE_FROM_CDC_DRIVER
+#define  __INCLUDE_FROM_CDC_HOST_C
 #include "CDC.h"
 
 uint8_t CDC_Host_ConfigurePipes(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo,
diff --git a/LUFA/Drivers/USB/Class/Host/CDC.h b/LUFA/Drivers/USB/Class/Host/CDC.h
index 8a4b576ca33dcc99b9944b594da76f7edbe5899a..164e94f925285d165a011c61f6304930adc613e0 100644
--- a/LUFA/Drivers/USB/Class/Host/CDC.h
+++ b/LUFA/Drivers/USB/Class/Host/CDC.h
@@ -33,8 +33,8 @@
  *
  *  Host mode driver for the library USB CDC Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/CDC.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassCDC
@@ -67,9 +67,13 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_CDC_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/CDC.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
+		#if defined(__INCLUDE_FROM_CDC_HOST_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
+		#endif
+		
 	/* Public Interface - May be used in end-application: */
 		/* Type Defines: */
 			/** \brief CDC Class Host Mode Configuration and State Structure.
@@ -116,21 +120,12 @@
 											   */
 					} ControlLineStates; /**< Current states of the virtual serial port's control lines between the device and host. */
 
-					struct
-					{
-						uint32_t BaudRateBPS; /**< Baud rate of the virtual serial port, in bits per second. */
-						uint8_t  CharFormat; /**< Character format of the virtual serial port, a value from the
-											  *   \ref CDC_LineEncodingFormats_t enum.
-											  */
-						uint8_t  ParityType; /**< Parity setting of the virtual serial port, a value from the
-											  *   \ref CDC_LineEncodingParity_t enum.
-											  */
-						uint8_t  DataBits; /**< Bits of data per character of the virtual serial port. */
-					} LineEncoding; /**< Line encoding used in the virtual serial port, for the device's information. This is generally
-					                 *   only used if the virtual serial port data is to be reconstructed on a physical UART. When set
-					                 *   by the host application, the \ref CDC_Host_SetLineEncoding() function must be called to push
-					                 *   the changes to the device.
-					                 */
+					CDC_LineEncoding_t LineEncoding; /**< Line encoding used in the virtual serial port, for the device's information.
+					                                  *   This is generally only used if the virtual serial port data is to be
+					                                  *   reconstructed on a physical UART. When set by the host application, the
+					                                  *   \ref CDC_Host_SetLineEncoding() function must be called to push the changes
+					                                  *   to the device.
+					                                  */
 				} State; /**< State data for the USB class interface within the device. All elements in this section
 						  *   <b>may</b> be set to initial values, but may also be ignored to default to sane values when
 						  *   the interface is enumerated.
@@ -320,7 +315,7 @@
 			#define CDC_DATA_PROTOCOL               0x00
 
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_CDC_CLASS_HOST_C)
+			#if defined(__INCLUDE_FROM_CDC_HOST_C)
 				static int CDC_Host_putchar(char c,
 				                            FILE* Stream) ATTR_NON_NULL_PTR_ARG(2);
 				static int CDC_Host_getchar(FILE* Stream) ATTR_NON_NULL_PTR_ARG(1);
diff --git a/LUFA/Drivers/USB/Class/Host/HID.c b/LUFA/Drivers/USB/Class/Host/HID.c
index e5afca06cfc77292534f7f2e5debf1fac29b885f..c3876650044d95b65b5a4720f93db48ef0b12d71 100644
--- a/LUFA/Drivers/USB/Class/Host/HID.c
+++ b/LUFA/Drivers/USB/Class/Host/HID.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
-#define  __INCLUDE_FROM_HID_CLASS_HOST_C
 #define  __INCLUDE_FROM_HID_DRIVER
+#define  __INCLUDE_FROM_HID_HOST_C
 #include "HID.h"
 
 uint8_t HID_Host_ConfigurePipes(USB_ClassInfo_HID_Host_t* const HIDInterfaceInfo,
diff --git a/LUFA/Drivers/USB/Class/Host/HID.h b/LUFA/Drivers/USB/Class/Host/HID.h
index 0ef3674d8fe7b27c1a22d0deac59017aebb41714..9c86e124052383651e91bc4c45cf3b9118004971 100644
--- a/LUFA/Drivers/USB/Class/Host/HID.h
+++ b/LUFA/Drivers/USB/Class/Host/HID.h
@@ -33,8 +33,8 @@
  *
  *  Host mode driver for the library USB HID Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/HID.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassHID
@@ -66,9 +66,14 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_HID_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/HID.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
 		#endif
 
+		#if defined(__INCLUDE_FROM_HID_HOST_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
+		#endif
+
+
 	/* Public Interface - May be used in end-application: */
 		/* Macros: */
 			/** Error code for some HID Host functions, indicating a logical (and not hardware) error. */
@@ -296,7 +301,7 @@
 			#define HID_INTERFACE_CLASS             0x03
 
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_HID_CLASS_HOST_C)
+			#if defined(__INCLUDE_FROM_HID_HOST_C)
 				static uint8_t DCOMP_HID_Host_NextHIDInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t DCOMP_HID_Host_NextHID(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t DCOMP_HID_Host_NextHIDInterfaceEndpoint(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
diff --git a/LUFA/Drivers/USB/Class/Host/HIDParser.c b/LUFA/Drivers/USB/Class/Host/HIDParser.c
index 43f703a932026eb7cdf98b32946ad9389202a9fb..54416d66abd2b0b3ee76176c55e7016798867622 100644
--- a/LUFA/Drivers/USB/Class/Host/HIDParser.c
+++ b/LUFA/Drivers/USB/Class/Host/HIDParser.c
@@ -32,6 +32,7 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
+#define  __INCLUDE_FROM_HID_DRIVER
 #include "HIDParser.h"
 
 uint8_t USB_ProcessHIDReport(const uint8_t* ReportData,
diff --git a/LUFA/Drivers/USB/Class/Host/HIDParser.h b/LUFA/Drivers/USB/Class/Host/HIDParser.h
index ba7346968c16e1f824f4fcc9732fa6f73d526bad..3d1ea54942d6436f2e9ddab51fa931eef83c1b78 100644
--- a/LUFA/Drivers/USB/Class/Host/HIDParser.h
+++ b/LUFA/Drivers/USB/Class/Host/HIDParser.h
@@ -58,10 +58,6 @@
 #ifndef __HIDPARSER_H__
 #define __HIDPARSER_H__
 
-	/* Macros: */
-		#define __INCLUDE_FROM_USB_DRIVER
-		#define __INCLUDE_FROM_HID_DRIVER
-
 	/* Includes: */
 		#include <string.h>
 		#include <stdbool.h>
diff --git a/LUFA/Drivers/USB/Class/Host/MIDI.c b/LUFA/Drivers/USB/Class/Host/MIDI.c
index 99ae8a8ab83a01734816f3ca5d10c30e6390e1e2..4483b5073e970b7543f4ca31b5692b5245b79ce7 100644
--- a/LUFA/Drivers/USB/Class/Host/MIDI.c
+++ b/LUFA/Drivers/USB/Class/Host/MIDI.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
-#define  __INCLUDE_FROM_MIDI_CLASS_HOST_C
 #define  __INCLUDE_FROM_MIDI_DRIVER
+#define  __INCLUDE_FROM_MIDI_HOST_C
 #include "MIDI.h"
 
 uint8_t MIDI_Host_ConfigurePipes(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
diff --git a/LUFA/Drivers/USB/Class/Host/MIDI.h b/LUFA/Drivers/USB/Class/Host/MIDI.h
index e77487db4ba7cc7e0eacb7658e094751e5c8d7bf..34228121ff45c3e4a4822679d9cc89fd682a76c8 100644
--- a/LUFA/Drivers/USB/Class/Host/MIDI.h
+++ b/LUFA/Drivers/USB/Class/Host/MIDI.h
@@ -33,8 +33,8 @@
  *
  *  Host mode driver for the library USB MIDI Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/MIDI.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassMIDI
@@ -64,7 +64,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_MIDI_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/MIDI.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_MIDI_HOST_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
@@ -190,7 +194,7 @@
 			#define MIDI_STREAMING_PROTOCOL        0x00
 
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_MIDI_CLASS_HOST_C)
+			#if defined(__INCLUDE_FROM_MIDI_HOST_C)
 				static uint8_t DCOMP_MIDI_Host_NextMIDIStreamingInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t DCOMP_MIDI_Host_NextMIDIStreamingDataEndpoint(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 			#endif
diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.c b/LUFA/Drivers/USB/Class/Host/MassStorage.c
index 26d096b4ff5863f617a4cf5fa5da175dab71dde3..97b0aba4d9cc9cc9e38936b08e18c7e1219d2d2d 100644
--- a/LUFA/Drivers/USB/Class/Host/MassStorage.c
+++ b/LUFA/Drivers/USB/Class/Host/MassStorage.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
-#define  __INCLUDE_FROM_MS_CLASS_HOST_C
 #define  __INCLUDE_FROM_MS_DRIVER
+#define  __INCLUDE_FROM_MASSSTORAGE_HOST_C
 #include "MassStorage.h"
 
 uint8_t MS_Host_ConfigurePipes(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
@@ -309,7 +309,7 @@ uint8_t MS_Host_ResetMSInterface(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo)
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_MassStorageReset,
+			.bRequest      = MS_REQ_MassStorageReset,
 			.wValue        = 0,
 			.wIndex        = MSInterfaceInfo->State.InterfaceNumber,
 			.wLength       = 0,
@@ -328,7 +328,7 @@ uint8_t MS_Host_GetMaxLUN(USB_ClassInfo_MS_Host_t* const MSInterfaceInfo,
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_GetMaxLUN,
+			.bRequest      = MS_REQ_GetMaxLUN,
 			.wValue        = 0,
 			.wIndex        = MSInterfaceInfo->State.InterfaceNumber,
 			.wLength       = 1,
diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.h b/LUFA/Drivers/USB/Class/Host/MassStorage.h
index f442db8467f1ca2305c8d4a0eb3175939dd1bbee..f375f32446bd93c62d9bed57f2d9f33ef702a599 100644
--- a/LUFA/Drivers/USB/Class/Host/MassStorage.h
+++ b/LUFA/Drivers/USB/Class/Host/MassStorage.h
@@ -33,8 +33,8 @@
  *
  *  Host mode driver for the library USB Mass Storage Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/MassStorage.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassMS
@@ -64,7 +64,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_MS_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/MassStorage.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_MASSSTORAGE_HOST_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
@@ -313,9 +317,6 @@
 			#define MASS_STORE_SUBCLASS            0x06
 			#define MASS_STORE_PROTOCOL            0x50
 
-			#define REQ_MassStorageReset           0xFF
-			#define REQ_GetMaxLUN                  0xFE
-
 			#define CBW_SIGNATURE                  0x43425355UL
 			#define CSW_SIGNATURE                  0x53425355UL
 
@@ -325,7 +326,7 @@
 			#define COMMAND_DATA_TIMEOUT_MS        10000
 
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_MS_CLASS_HOST_C)
+			#if defined(__INCLUDE_FROM_MASSSTORAGE_HOST_C)
 				static uint8_t DCOMP_MS_Host_NextMSInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t DCOMP_MS_Host_NextMSInterfaceEndpoint(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 
diff --git a/LUFA/Drivers/USB/Class/Host/Printer.c b/LUFA/Drivers/USB/Class/Host/Printer.c
index 6cbd892dc1d072cc046448668869acb4d1548eb4..4249a8b7023a41ceea6da84e9ad4f7d04b326c16 100644
--- a/LUFA/Drivers/USB/Class/Host/Printer.c
+++ b/LUFA/Drivers/USB/Class/Host/Printer.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
-#define  __INCLUDE_FROM_PRINTER_CLASS_HOST_C
 #define  __INCLUDE_FROM_PRINTER_DRIVER
+#define  __INCLUDE_FROM_PRINTER_HOST_C
 #include "Printer.h"
 
 uint8_t PRNT_Host_ConfigurePipes(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo,
@@ -175,7 +175,7 @@ uint8_t PRNT_Host_GetPortStatus(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceIn
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_GetPortStatus,
+			.bRequest      = PRNT_REQ_GetPortStatus,
 			.wValue        = 0,
 			.wIndex        = PRNTInterfaceInfo->State.InterfaceNumber,
 			.wLength       = sizeof(uint8_t),
@@ -191,7 +191,7 @@ uint8_t PRNT_Host_SoftReset(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      = REQ_SoftReset,
+			.bRequest      = PRNT_REQ_SoftReset,
 			.wValue        = 0,
 			.wIndex        = PRNTInterfaceInfo->State.InterfaceNumber,
 			.wLength       = 0,
@@ -345,7 +345,7 @@ uint8_t PRNT_Host_GetDeviceID(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo
 	USB_ControlRequest = (USB_Request_Header_t)
 		{
 			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
-			.bRequest      =  REQ_GetDeviceID,
+			.bRequest      = PRNT_REQ_GetDeviceID,
 			.wValue        = 0,
 			.wIndex        = PRNTInterfaceInfo->State.InterfaceNumber,
 			.wLength       = sizeof(DeviceIDStringLength),
diff --git a/LUFA/Drivers/USB/Class/Host/Printer.h b/LUFA/Drivers/USB/Class/Host/Printer.h
index 96ecd0fd6d8ec80669c87428df3329a4b694374a..962806e52c46cd3163cbd503b03e456414cafa18 100644
--- a/LUFA/Drivers/USB/Class/Host/Printer.h
+++ b/LUFA/Drivers/USB/Class/Host/Printer.h
@@ -33,8 +33,8 @@
  *
  *  Host mode driver for the library USB Printer Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/Printer.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassPrinter
@@ -64,7 +64,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_PRINTER_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/Printer.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_PRINTER_HOST_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
@@ -265,12 +269,8 @@
 			#define PRINTER_SUBCLASS               0x01
 			#define PRINTER_PROTOCOL               0x02
 
-			#define REQ_GetDeviceID                0
-			#define REQ_GetPortStatus              1
-			#define REQ_SoftReset                  2
-
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_PRINTER_CLASS_HOST_C)
+			#if defined(__INCLUDE_FROM_PRINTER_HOST_C)
 				static uint8_t DCOMP_PRNT_Host_NextPRNTInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t DCOMP_PRNT_Host_NextPRNTInterfaceEndpoint(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 			#endif
diff --git a/LUFA/Drivers/USB/Class/Host/RNDIS.c b/LUFA/Drivers/USB/Class/Host/RNDIS.c
index 541b7d3d1fb7e7133487b59c684630022d589d45..ad242b2589f66438730213ede39ab7696c0d81e9 100644
--- a/LUFA/Drivers/USB/Class/Host/RNDIS.c
+++ b/LUFA/Drivers/USB/Class/Host/RNDIS.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
-#define  __INCLUDE_FROM_RNDIS_CLASS_HOST_C
 #define  __INCLUDE_FROM_RNDIS_DRIVER
+#define  __INCLUDE_FROM_RNDIS_HOST_C
 #include "RNDIS.h"
 
 uint8_t RNDIS_Host_ConfigurePipes(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
diff --git a/LUFA/Drivers/USB/Class/Host/RNDIS.h b/LUFA/Drivers/USB/Class/Host/RNDIS.h
index 5ff2e1b8440faa73f2eaf501ed3271c04035dd1e..2c2aad8df3cd06c52606cef048c261ff9dc4d9a7 100644
--- a/LUFA/Drivers/USB/Class/Host/RNDIS.h
+++ b/LUFA/Drivers/USB/Class/Host/RNDIS.h
@@ -33,8 +33,8 @@
  *
  *  Host mode driver for the library USB RNDIS Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/RNDIS.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassRNDIS
@@ -68,7 +68,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_RNDIS_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/RNDIS.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_RNDIS_HOST_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
@@ -267,7 +271,7 @@
 			#define RNDIS_DATA_PROTOCOL               0x00
 
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_RNDIS_CLASS_HOST_C)
+			#if defined(__INCLUDE_FROM_RNDIS_HOST_C)
 				static uint8_t RNDIS_SendEncapsulatedCommand(USB_ClassInfo_RNDIS_Host_t* const RNDISInterfaceInfo,
 				                                             void* Buffer,
 				                                             const uint16_t Length) ATTR_NON_NULL_PTR_ARG(1)
diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.c b/LUFA/Drivers/USB/Class/Host/StillImage.c
index f7f8637a2acda640385f427e1bb2ad01e2e52156..25c5f20b06f49d758af51c2e60e09c87e91f3d73 100644
--- a/LUFA/Drivers/USB/Class/Host/StillImage.c
+++ b/LUFA/Drivers/USB/Class/Host/StillImage.c
@@ -32,8 +32,8 @@
 #include "../../HighLevel/USBMode.h"
 #if defined(USB_CAN_BE_HOST)
 
-#define  __INCLUDE_FROM_SI_CLASS_HOST_C
 #define  __INCLUDE_FROM_SI_DRIVER
+#define  __INCLUDE_FROM_STILLIMAGE_HOST_C
 #include "StillImage.h"
 
 uint8_t SI_Host_ConfigurePipes(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
@@ -163,7 +163,7 @@ uint8_t DCOMP_SI_Host_NextSIInterfaceEndpoint(void* const CurrentDescriptor)
 }
 
 uint8_t SI_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
-                                SI_PIMA_Container_t* const PIMAHeader)
+                                PIMA_Container_t* const PIMAHeader)
 {
 	uint8_t ErrorCode;
 
@@ -194,7 +194,7 @@ uint8_t SI_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 }
 
 uint8_t SI_Host_ReceiveBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
-                                   SI_PIMA_Container_t* const PIMAHeader)
+                                   PIMA_Container_t* const PIMAHeader)
 {
 	uint16_t TimeoutMSRem        = COMMAND_DATA_TIMEOUT_MS;
 	uint16_t PreviousFrameNumber = USB_Host_GetFrameNumber();
@@ -243,7 +243,7 @@ uint8_t SI_Host_ReceiveBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInf
 
 	Pipe_Read_Stream_LE(PIMAHeader, PIMA_COMMAND_SIZE(0), NO_STREAM_CALLBACK);
 
-	if (PIMAHeader->Type == SI_PIMA_CONTAINER_ResponseBlock)
+	if (PIMAHeader->Type == PIMA_CONTAINER_ResponseBlock)
 	{
 		uint8_t ParamBytes = (PIMAHeader->DataLength - PIMA_COMMAND_SIZE(0));
 
@@ -316,7 +316,7 @@ bool SI_Host_IsEventReceived(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 }
 
 uint8_t SI_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
-                                   SI_PIMA_Container_t* const PIMAHeader)
+                                   PIMA_Container_t* const PIMAHeader)
 {
 	uint8_t ErrorCode;
 
@@ -326,7 +326,7 @@ uint8_t SI_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInf
 	Pipe_SelectPipe(SIInterfaceInfo->Config.EventsPipeNumber);
 	Pipe_Unfreeze();
 
-	ErrorCode = Pipe_Read_Stream_LE(PIMAHeader, sizeof(SI_PIMA_Container_t), NO_STREAM_CALLBACK);
+	ErrorCode = Pipe_Read_Stream_LE(PIMAHeader, sizeof(PIMA_Container_t), NO_STREAM_CALLBACK);
 
 	Pipe_ClearIN();
 	Pipe_Freeze();
@@ -344,10 +344,10 @@ uint8_t SI_Host_OpenSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 	SIInterfaceInfo->State.TransactionID = 0;
 	SIInterfaceInfo->State.IsSessionOpen = false;
 
-	SI_PIMA_Container_t PIMABlock = (SI_PIMA_Container_t)
+	PIMA_Container_t PIMABlock = (PIMA_Container_t)
 		{
 			.DataLength    = PIMA_COMMAND_SIZE(1),
-			.Type          = SI_PIMA_CONTAINER_CommandBlock,
+			.Type          = PIMA_CONTAINER_CommandBlock,
 			.Code          = 0x1002,
 			.Params        = {1},
 		};
@@ -358,7 +358,7 @@ uint8_t SI_Host_OpenSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 	if ((ErrorCode = SI_Host_ReceiveBlockHeader(SIInterfaceInfo, &PIMABlock)) != PIPE_RWSTREAM_NoError)
 	  return ErrorCode;
 
-	if ((PIMABlock.Type != SI_PIMA_CONTAINER_ResponseBlock) || (PIMABlock.Code != 0x2001))
+	if ((PIMABlock.Type != PIMA_CONTAINER_ResponseBlock) || (PIMABlock.Code != 0x2001))
 	  return SI_ERROR_LOGICAL_CMD_FAILED;
 
 	SIInterfaceInfo->State.IsSessionOpen = true;
@@ -373,10 +373,10 @@ uint8_t SI_Host_CloseSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 
 	uint8_t ErrorCode;
 
-	SI_PIMA_Container_t PIMABlock = (SI_PIMA_Container_t)
+	PIMA_Container_t PIMABlock = (PIMA_Container_t)
 		{
 			.DataLength    = PIMA_COMMAND_SIZE(1),
-			.Type          = SI_PIMA_CONTAINER_CommandBlock,
+			.Type          = PIMA_CONTAINER_CommandBlock,
 			.Code          = 0x1003,
 			.Params        = {1},
 		};
@@ -389,7 +389,7 @@ uint8_t SI_Host_CloseSession(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 
 	SIInterfaceInfo->State.IsSessionOpen = false;
 
-	if ((PIMABlock.Type != SI_PIMA_CONTAINER_ResponseBlock) || (PIMABlock.Code != 0x2001))
+	if ((PIMABlock.Type != PIMA_CONTAINER_ResponseBlock) || (PIMABlock.Code != 0x2001))
 	  return SI_ERROR_LOGICAL_CMD_FAILED;
 
 	return PIPE_RWSTREAM_NoError;
@@ -405,10 +405,10 @@ uint8_t SI_Host_SendCommand(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 
 	uint8_t ErrorCode;
 
-	SI_PIMA_Container_t PIMABlock = (SI_PIMA_Container_t)
+	PIMA_Container_t PIMABlock = (PIMA_Container_t)
 		{
 			.DataLength    = PIMA_COMMAND_SIZE(TotalParams),
-			.Type          = SI_PIMA_CONTAINER_CommandBlock,
+			.Type          = PIMA_CONTAINER_CommandBlock,
 			.Code          = Operation,
 		};
 
@@ -423,7 +423,7 @@ uint8_t SI_Host_SendCommand(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
 uint8_t SI_Host_ReceiveResponse(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 {
 	uint8_t ErrorCode;
-	SI_PIMA_Container_t PIMABlock;
+	PIMA_Container_t PIMABlock;
 
 	if ((USB_HostState != HOST_STATE_Configured) || !(SIInterfaceInfo->State.IsActive))
 	  return HOST_SENDCONTROL_DeviceDisconnected;
@@ -431,7 +431,7 @@ uint8_t SI_Host_ReceiveResponse(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo)
 	if ((ErrorCode = SI_Host_ReceiveBlockHeader(SIInterfaceInfo, &PIMABlock)) != PIPE_RWSTREAM_NoError)
 	  return ErrorCode;
 
-	if ((PIMABlock.Type != SI_PIMA_CONTAINER_ResponseBlock) || (PIMABlock.Code != 0x2001))
+	if ((PIMABlock.Type != PIMA_CONTAINER_ResponseBlock) || (PIMABlock.Code != 0x2001))
 	  return SI_ERROR_LOGICAL_CMD_FAILED;
 
 	return PIPE_RWSTREAM_NoError;
diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.h b/LUFA/Drivers/USB/Class/Host/StillImage.h
index d2e6fe0d2b93d640e693ee47aa447f34b29505b9..07c6546c2f629ff70b4d44bb53584a3048d8aa6b 100644
--- a/LUFA/Drivers/USB/Class/Host/StillImage.h
+++ b/LUFA/Drivers/USB/Class/Host/StillImage.h
@@ -33,8 +33,8 @@
  *
  *  Host mode driver for the library USB Still Image Class driver.
  *
- *  \note This file should not be included directly. It is automatically included as needed by the class driver
- *        dispatch header located in LUFA/Drivers/USB/Class/StillImage.h.
+ *  \note This file should not be included directly. It is automatically included as needed by the USB module driver
+ *        dispatch header located in LUFA/Drivers/USB.h.
  */
 
 /** \ingroup Group_USBClassSI
@@ -64,7 +64,11 @@
 
 	/* Preprocessor Checks: */
 		#if !defined(__INCLUDE_FROM_SI_DRIVER)
-			#error Do not include this file directly. Include LUFA/Drivers/Class/StillImage.h instead.
+			#error Do not include this file directly. Include LUFA/Drivers/USB.h instead.
+		#endif
+
+		#if defined(__INCLUDE_FROM_STILLIMAGE_HOST_C) && defined(NO_STREAM_CALLBACKS)
+			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
 		#endif
 
 	/* Public Interface - May be used in end-application: */
@@ -184,7 +188,7 @@
 			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 			 */
 			uint8_t SI_Host_SendBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
-			                                SI_PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
+			                                PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
 			                                ATTR_NON_NULL_PTR_ARG(2);
 
 			/** Receives a raw PIMA block header to the device. This can be used to receive arbitrary PIMA blocks from the device with
@@ -199,7 +203,7 @@
 			 *  \return A value from the \ref Pipe_Stream_RW_ErrorCodes_t enum.
 			 */
 			uint8_t SI_Host_ReceiveBlockHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
-			                                   SI_PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
+			                                   PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
 			                                   ATTR_NON_NULL_PTR_ARG(2);
 
 			/** Sends a given PIMA command to the attached device, filling out the PIMA command header's Transaction ID automatically.
@@ -256,7 +260,7 @@
 			 *          returned a logical command failure.
 			 */
 			uint8_t SI_Host_ReceiveEventHeader(USB_ClassInfo_SI_Host_t* const SIInterfaceInfo,
-			                                   SI_PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
+			                                   PIMA_Container_t* const PIMAHeader) ATTR_NON_NULL_PTR_ARG(1)
 			                                   ATTR_NON_NULL_PTR_ARG(2);
 
 			/** Sends arbitrary data to the attached device, for use in the data phase of PIMA commands which require data
@@ -314,7 +318,7 @@
 			#define COMMAND_DATA_TIMEOUT_MS        10000
 
 		/* Function Prototypes: */
-			#if defined(__INCLUDE_FROM_SI_CLASS_HOST_C)
+			#if defined(__INCLUDE_FROM_STILLIMAGE_HOST_C)
 				static uint8_t DCOMP_SI_Host_NextSIInterface(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 				static uint8_t DCOMP_SI_Host_NextSIInterfaceEndpoint(void* const CurrentDescriptor) ATTR_NON_NULL_PTR_ARG(1);
 			#endif
diff --git a/LUFA/Drivers/USB/Class/MIDI.h b/LUFA/Drivers/USB/Class/MIDI.h
index c7de15cfcf5c1b58113dc4a5bb17b5f6fb6bd090..6427683b43f6d3f5a5451802ff72f28c71b39dd7 100644
--- a/LUFA/Drivers/USB/Class/MIDI.h
+++ b/LUFA/Drivers/USB/Class/MIDI.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassMIDI MIDI Class Driver - LUFA/Drivers/Class/MIDI.h
+ *  @defgroup Group_USBClassMIDI MIDI Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -63,16 +63,12 @@
 #define _MIDI_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_MIDI_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_MIDI_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_DEVICE)
 			#include "Device/MIDI.h"
 		#endif
diff --git a/LUFA/Drivers/USB/Class/MassStorage.h b/LUFA/Drivers/USB/Class/MassStorage.h
index 985300f007b434b0f7886bddbabba47a3b2a4cb0..6660253414fde1174f5517d905e60ee14d266fcb 100644
--- a/LUFA/Drivers/USB/Class/MassStorage.h
+++ b/LUFA/Drivers/USB/Class/MassStorage.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassMS Mass Storage Class Driver - LUFA/Drivers/Class/MassStorage.h
+ *  @defgroup Group_USBClassMS Mass Storage Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -60,16 +60,12 @@
 #define _MS_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_MS_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_MS_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_DEVICE)
 			#include "Device/MassStorage.h"
 		#endif
diff --git a/LUFA/Drivers/USB/Class/Printer.h b/LUFA/Drivers/USB/Class/Printer.h
index 9bd3b5257df6f1475e39367e117e28e329301ea7..ebd525af1b2ebe804d20d6ea7001e600c2947588 100644
--- a/LUFA/Drivers/USB/Class/Printer.h
+++ b/LUFA/Drivers/USB/Class/Printer.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassPrinter Printer Class Driver - LUFA/Drivers/Class/Printer.h
+ *  @defgroup Group_USBClassPrinter Printer Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -61,16 +61,12 @@
 #define _PRINTER_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_PRINTER_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_PRINTER_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_HOST)
 			#include "Host/Printer.h"
 		#endif
diff --git a/LUFA/Drivers/USB/Class/RNDIS.h b/LUFA/Drivers/USB/Class/RNDIS.h
index 1b0381e8c8817dcd11009ed647b9ff0affafd2af..228fbf9a4ee28b61f53350f92549240a014a1335 100644
--- a/LUFA/Drivers/USB/Class/RNDIS.h
+++ b/LUFA/Drivers/USB/Class/RNDIS.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassRNDIS RNDIS (Networking) Class Driver - LUFA/Drivers/Class/RNDIS.h
+ *  @defgroup Group_USBClassRNDIS RNDIS (Networking) Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -60,16 +60,12 @@
 #define _RNDIS_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_RNDIS_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_RNDIS_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_DEVICE)
 			#include "Device/RNDIS.h"
 		#endif
diff --git a/LUFA/Drivers/USB/Class/StillImage.h b/LUFA/Drivers/USB/Class/StillImage.h
index 85a2eef48c3d3a68c108e1e8057a34fe30c200f4..ff60d075c01f2cf6053b713feec935feccbe3d21 100644
--- a/LUFA/Drivers/USB/Class/StillImage.h
+++ b/LUFA/Drivers/USB/Class/StillImage.h
@@ -38,7 +38,7 @@
  */
 
 /** \ingroup Group_USBClassDrivers
- *  @defgroup Group_USBClassSI Still Image Class Driver - LUFA/Drivers/Class/StillImage.h
+ *  @defgroup Group_USBClassSI Still Image Class Driver
  *
  *  \section Sec_Dependencies Module Source Dependencies
  *  The following files must be built with any user project that uses this module:
@@ -59,16 +59,12 @@
 #define _SI_CLASS_H_
 
 	/* Macros: */
-		#define __INCLUDE_FROM_SI_DRIVER
 		#define __INCLUDE_FROM_USB_DRIVER
+		#define __INCLUDE_FROM_SI_DRIVER
 
 	/* Includes: */
 		#include "../HighLevel/USBMode.h"
 
-		#if defined(NO_STREAM_CALLBACKS)
-			#error The NO_STREAM_CALLBACKS compile time option cannot be used in projects using the library Class drivers.
-		#endif
-
 		#if defined(USB_CAN_BE_HOST)
 			#include "Host/StillImage.h"
 		#endif
diff --git a/LUFA/Drivers/USB/USB.h b/LUFA/Drivers/USB/USB.h
index b8dce821e4652cdc06ade6052320bc5890a9e52a..bae0450eb3ccc0b628e215bc0ee7a235a21d6dca 100644
--- a/LUFA/Drivers/USB/USB.h
+++ b/LUFA/Drivers/USB/USB.h
@@ -394,6 +394,15 @@
 		#if defined(USB_CAN_BE_BOTH) || defined(__DOXYGEN__)
 			#include "LowLevel/OTG.h"
 		#endif
+		
+		#include "Class/Audio.h"
+		#include "Class/CDC.h"
+		#include "Class/HID.h"
+		#include "Class/MassStorage.h"
+		#include "Class/MIDI.h"
+		#include "Class/Printer.h"
+		#include "Class/RNDIS.h"
+		#include "Class/StillImage.h"
 
 #endif
 
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 0dbdde5d9ec81a85f019eaeef74f8f30a3b12c82..f31902c33378d610112e723c3fd6a345a704f1ed 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -54,6 +54,9 @@
   *  - Moved the USB mode specifier constants into a new enum, so that they are semantically related to one another
   *  - Renamed ENDPOINT_DOUBLEBANK_SUPPORTED() to ENDPOINT_BANKS_SUPPORTED() and changed it to return the maximum number of supported banks for
   *    the given endpoint
+  *  - Better algorithm to extract and convert the internal device serial number into a string descriptor (if present)
+  *  - All USB class drivers are now automatically included when LUFA/Drivers/USB.h is included, and no longer need to be seperately included
+  *  - All LowLevel demos changed to use the constants and types defined in the USB class drivers
   *
   *  <b>Fixed:</b>
   *  - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist
diff --git a/LUFA/ManPages/MigrationInformation.txt b/LUFA/ManPages/MigrationInformation.txt
index 0ab6a6f0f475242dfb74caca81cb8411a0fb9602..004d9a07846fdcefdc860e06356d3768d8d452c5 100644
--- a/LUFA/ManPages/MigrationInformation.txt
+++ b/LUFA/ManPages/MigrationInformation.txt
@@ -21,6 +21,9 @@
  *      specified, the controller will default to UID selection mode.
  *    - The USB mode specifier constants have been moved into a new enum and renamed. Existing projects should use the equivalent
  *      value in the new \ref USB_Modes_t enum.
+ *    - All class driver headers are now included as part of the standard LUFA/Drivers/USB/USB.h master dispatch header, and should
+ *      no longer be included seperately. Class driver module source files must still be added as a seperate module in the project's
+ *      makefile if used.
  *
  *  <b>Device Mode</b>
  *    - Endpoints MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application
diff --git a/Projects/Benito/Benito.h b/Projects/Benito/Benito.h
index 974956993ee45fb0052ef6113dca295fcb7e7934..4152f217492b959d0f553c8500dc3c4980133f72 100644
--- a/Projects/Benito/Benito.h
+++ b/Projects/Benito/Benito.h
@@ -48,7 +48,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Peripheral/Serial.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate TX activity. */
diff --git a/Projects/Benito/Descriptors.h b/Projects/Benito/Descriptors.h
index ddd9495ea509cbec2ec136cd031cc458efa73511..e9b55a3d01892ce9c19000b292e148c5f91bb632 100644
--- a/Projects/Benito/Descriptors.h
+++ b/Projects/Benito/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** Endpoint number of the CDC device-to-host notification IN endpoint. */
diff --git a/Projects/Incomplete/StandaloneProgrammer/Descriptors.h b/Projects/Incomplete/StandaloneProgrammer/Descriptors.h
index 62399db30c126ea4482b879f171f9d83548657dd..1b4a3672aaebb0385238d46be183ba5ccce25af6 100644
--- a/Projects/Incomplete/StandaloneProgrammer/Descriptors.h
+++ b/Projects/Incomplete/StandaloneProgrammer/Descriptors.h
@@ -40,8 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** Endpoint number of the CDC device-to-host notification IN endpoint. */
diff --git a/Projects/Incomplete/StandaloneProgrammer/DiskDevice.h b/Projects/Incomplete/StandaloneProgrammer/DiskDevice.h
index 76e528e5e7b8b5bac43ee677222cd6b7362edfbe..714355e44b788f7fe5902b4c85c9aa74a6f58bc1 100644
--- a/Projects/Incomplete/StandaloneProgrammer/DiskDevice.h
+++ b/Projects/Incomplete/StandaloneProgrammer/DiskDevice.h
@@ -44,7 +44,6 @@
 
 		#include <LUFA/Drivers/USB/USB.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 	/* Function Prototypes: */
 		#if defined(USB_CAN_BE_DEVICE)
diff --git a/Projects/Incomplete/StandaloneProgrammer/DiskHost.h b/Projects/Incomplete/StandaloneProgrammer/DiskHost.h
index cbb63577adba2c58455f937bf2ef97462f2d36b8..aa0d62c7c440c938d11c34fc905b5b971a16d7f4 100644
--- a/Projects/Incomplete/StandaloneProgrammer/DiskHost.h
+++ b/Projects/Incomplete/StandaloneProgrammer/DiskHost.h
@@ -44,7 +44,6 @@
 
 		#include <LUFA/Drivers/USB/USB.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 	/* External Variables: */
 		#if defined(USB_CAN_BE_HOST)
diff --git a/Projects/Incomplete/StandaloneProgrammer/Lib/DataflashManager.h b/Projects/Incomplete/StandaloneProgrammer/Lib/DataflashManager.h
index b42b13297eac4fd6343350cce4629b6fb0419226..72cf026d5de324c116d492d59431b89123748ddf 100644
--- a/Projects/Incomplete/StandaloneProgrammer/Lib/DataflashManager.h
+++ b/Projects/Incomplete/StandaloneProgrammer/Lib/DataflashManager.h
@@ -43,7 +43,6 @@
 		#include "Descriptors.h"
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 		#include <LUFA/Drivers/Board/Dataflash.h>
 
 	/* Preprocessor Checks: */
diff --git a/Projects/Incomplete/StandaloneProgrammer/Lib/SCSI.h b/Projects/Incomplete/StandaloneProgrammer/Lib/SCSI.h
index 75d281414df3aa0b548edd5589ef6037f6c1b19e..0382c62b27654230efd6a938e2a5d4e468d19811 100644
--- a/Projects/Incomplete/StandaloneProgrammer/Lib/SCSI.h
+++ b/Projects/Incomplete/StandaloneProgrammer/Lib/SCSI.h
@@ -41,7 +41,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 		#include "StandaloneProgrammer.h"
 		#include "Descriptors.h"
diff --git a/Projects/LEDNotifier/Descriptors.h b/Projects/LEDNotifier/Descriptors.h
index ddd9495ea509cbec2ec136cd031cc458efa73511..e9b55a3d01892ce9c19000b292e148c5f91bb632 100644
--- a/Projects/LEDNotifier/Descriptors.h
+++ b/Projects/LEDNotifier/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** Endpoint number of the CDC device-to-host notification IN endpoint. */
diff --git a/Projects/LEDNotifier/LEDNotifier.h b/Projects/LEDNotifier/LEDNotifier.h
index f91fa6e95ca67d127ca0bf32f9fd3849b7202e57..2a1d769cf82947d7cf6446ca4b49a8d79373699f 100644
--- a/Projects/LEDNotifier/LEDNotifier.h
+++ b/Projects/LEDNotifier/LEDNotifier.h
@@ -49,7 +49,6 @@
 		#include <LUFA/Version.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Projects/Magstripe/Descriptors.h b/Projects/Magstripe/Descriptors.h
index 963aaac099e9f7bc4aad9b7703999e2036b81598..6a4f22ad96a2ec52fbff9427e8bc7a1d229bf4d8 100644
--- a/Projects/Magstripe/Descriptors.h
+++ b/Projects/Magstripe/Descriptors.h
@@ -41,7 +41,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Type Defines: */
 		/** Type define for the device configuration descriptor structure. This must be defined in the
diff --git a/Projects/Magstripe/Magstripe.h b/Projects/Magstripe/Magstripe.h
index 58f3f237319905a3d99c33b4deaa72ff925cd934..1e29a1880026ac22ba5cdd1a368108f76e398691 100644
--- a/Projects/Magstripe/Magstripe.h
+++ b/Projects/Magstripe/Magstripe.h
@@ -49,7 +49,6 @@
 
 		#include <LUFA/Version.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 	/* Macros: */
 		/** Total number of tracks which can be read from the card, between 1 and 3. */
diff --git a/Projects/MissileLauncher/MissileLauncher.c b/Projects/MissileLauncher/MissileLauncher.c
index 6b22df82e3b39ff68ee62c4726d0aced6f275408..6897d6637905555fadf9afec6f8b1e75325b0163 100644
--- a/Projects/MissileLauncher/MissileLauncher.c
+++ b/Projects/MissileLauncher/MissileLauncher.c
@@ -283,7 +283,7 @@ void WriteNextReport(uint8_t* const ReportOUTData,
 		USB_ControlRequest = (USB_Request_Header_t)
 			{
 				.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-				.bRequest      = REQ_SetReport,
+				.bRequest      = HID_REQ_SetReport,
 				.wValue        = 0x02,
 				.wIndex        = 0x01,
 				.wLength       = ReportLength,
diff --git a/Projects/MissileLauncher/MissileLauncher.h b/Projects/MissileLauncher/MissileLauncher.h
index 080d568f989543c62d78990bc8ea896dffb1c21e..9e8421c92baab3cae4e84b385ffbc18cc3b623cf 100644
--- a/Projects/MissileLauncher/MissileLauncher.h
+++ b/Projects/MissileLauncher/MissileLauncher.h
@@ -54,23 +54,20 @@
 		#include "ConfigDescriptor.h"
 
 	/* Macros: */
-		/** HID Class specific request to send a HID report to the device. */
-		#define REQ_SetReport             0x09
-
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
-		#define LEDMASK_USB_ENUMERATING  (LEDS_LED2 | LEDS_LED3)
+		#define LEDMASK_USB_ENUMERATING   (LEDS_LED2 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
-		#define LEDMASK_USB_READY        (LEDS_LED2 | LEDS_LED4)
+		#define LEDMASK_USB_READY         (LEDS_LED2 | LEDS_LED4)
 
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
-		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
+		#define LEDMASK_USB_ERROR         (LEDS_LED1 | LEDS_LED3)
 
 		/** Size of the Launcher report command buffer. */
-		#define LAUNCHER_CMD_BUFFER_SIZE 64
+		#define LAUNCHER_CMD_BUFFER_SIZE  64
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Projects/RelayBoard/RelayBoard.h b/Projects/RelayBoard/RelayBoard.h
index f3814b299acb2c2546fe043ae073678a2bbd7674..e928c732df19fd56e1014202afd015427936f50a 100644
--- a/Projects/RelayBoard/RelayBoard.h
+++ b/Projects/RelayBoard/RelayBoard.h
@@ -54,7 +54,7 @@
 		#define RELAY2      (1 << 6)
 		#define RELAY3      (1 << 5)
 		#define RELAY4      (1 << 4)
-		#define ALL_RELAYS  (RELAY1|RELAY2|RELAY3|RELAY4)
+		#define ALL_RELAYS  (RELAY1 | RELAY2 | RELAY3 | RELAY4)
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Projects/TempDataLogger/Descriptors.h b/Projects/TempDataLogger/Descriptors.h
index 3b5e78ea376e3d8c4f9b83eaa5f82323d91376ce..41bcd7f25bbf193db1410dba331dd15e20c7f2ee 100644
--- a/Projects/TempDataLogger/Descriptors.h
+++ b/Projects/TempDataLogger/Descriptors.h
@@ -13,8 +13,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
-		#include <LUFA/Drivers/USB/Class/HID.h>
 
 		#include "TempDataLogger.h"
 
diff --git a/Projects/TempDataLogger/Lib/DataflashManager.h b/Projects/TempDataLogger/Lib/DataflashManager.h
index cd1c460cd2e6465810e19f4b3eb7bf26d5a50808..4250e2628eb330b50b241ec61672a1608686e7e5 100644
--- a/Projects/TempDataLogger/Lib/DataflashManager.h
+++ b/Projects/TempDataLogger/Lib/DataflashManager.h
@@ -44,7 +44,6 @@
 
 		#include <LUFA/Common/Common.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 		#include <LUFA/Drivers/Board/Dataflash.h>
 
 	/* Preprocessor Checks: */
diff --git a/Projects/TempDataLogger/Lib/SCSI.h b/Projects/TempDataLogger/Lib/SCSI.h
index 39c9aee46c291579b40ea2fb389412f40e598aa8..661dd115603997df9db81760efa0c02f40ca2437 100644
--- a/Projects/TempDataLogger/Lib/SCSI.h
+++ b/Projects/TempDataLogger/Lib/SCSI.h
@@ -41,7 +41,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 		#include "../TempDataLogger.h"
 		#include "../Descriptors.h"
diff --git a/Projects/TempDataLogger/TempDataLogger.h b/Projects/TempDataLogger/TempDataLogger.h
index ce79670a226f296729904871147cc47ce9fb50db..0e3a1c8358a2cd9d901d54e02f25082453fe02bf 100644
--- a/Projects/TempDataLogger/TempDataLogger.h
+++ b/Projects/TempDataLogger/TempDataLogger.h
@@ -55,8 +55,6 @@
 		#include <LUFA/Drivers/Board/Temperature.h>
 		#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. */
diff --git a/Projects/USBtoSerial/Descriptors.h b/Projects/USBtoSerial/Descriptors.h
index ddd9495ea509cbec2ec136cd031cc458efa73511..e9b55a3d01892ce9c19000b292e148c5f91bb632 100644
--- a/Projects/USBtoSerial/Descriptors.h
+++ b/Projects/USBtoSerial/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** Endpoint number of the CDC device-to-host notification IN endpoint. */
diff --git a/Projects/USBtoSerial/USBtoSerial.h b/Projects/USBtoSerial/USBtoSerial.h
index 9233ba203a1fa2bf40475f39f5e44ec791cf6065..364d8c0bfd9fe0d8f4b5570d54efcaf63528009c 100644
--- a/Projects/USBtoSerial/USBtoSerial.h
+++ b/Projects/USBtoSerial/USBtoSerial.h
@@ -50,7 +50,6 @@
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/Peripheral/Serial.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
diff --git a/Projects/Webserver/Descriptors.h b/Projects/Webserver/Descriptors.h
index c816e238305be3b90632bdcd37e706049f363aad..0327a4774aba61ededfe904796cf6f8f5545337f 100644
--- a/Projects/Webserver/Descriptors.h
+++ b/Projects/Webserver/Descriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 	/* Macros: */
 		/** Endpoint number of the Mass Storage device-to-host data IN endpoint. */
diff --git a/Projects/Webserver/Lib/DataflashManager.h b/Projects/Webserver/Lib/DataflashManager.h
index 3351922abc3cd2379d584f35c9132c42c484906f..473168c3c514aa68b490ed739d61eff12bf1d04c 100644
--- a/Projects/Webserver/Lib/DataflashManager.h
+++ b/Projects/Webserver/Lib/DataflashManager.h
@@ -43,7 +43,6 @@
 
 		#include <LUFA/Common/Common.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 		#include <LUFA/Drivers/Board/Dataflash.h>
 
 	/* Preprocessor Checks: */
diff --git a/Projects/Webserver/Lib/SCSI.h b/Projects/Webserver/Lib/SCSI.h
index 2ff6d05dcb6400d459080d60cebb8cb2c29e67c7..daba1e033166338a97d986c8af360a3c94d9b3ef 100644
--- a/Projects/Webserver/Lib/SCSI.h
+++ b/Projects/Webserver/Lib/SCSI.h
@@ -41,8 +41,7 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
-
+		
 		#include "../Descriptors.h"
 		#include "DataflashManager.h"
 
diff --git a/Projects/Webserver/Lib/uIPManagement.h b/Projects/Webserver/Lib/uIPManagement.h
index f5ac26e5532d767e501b3b429941e281181f00ac..61521eb7773e088562028f3916b084d08004df2e 100644
--- a/Projects/Webserver/Lib/uIPManagement.h
+++ b/Projects/Webserver/Lib/uIPManagement.h
@@ -37,7 +37,7 @@
 #define _UIP_MANAGEMENT_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/Class/RNDIS.h>
+		#include <LUFA/Drivers/USB/USB.h>
 
 		#include <uip.h>
 		#include <uip_arp.h>
diff --git a/Projects/Webserver/USBDeviceMode.h b/Projects/Webserver/USBDeviceMode.h
index ec3e71390efbd7ca80c03b16b74f7c19be2f0d81..5823dcd0df800a3449f6c91764405fb8cd358e3a 100644
--- a/Projects/Webserver/USBDeviceMode.h
+++ b/Projects/Webserver/USBDeviceMode.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/MassStorage.h>
 
 		#include "Webserver.h"
 		#include "Descriptors.h"
diff --git a/Projects/Webserver/USBHostMode.h b/Projects/Webserver/USBHostMode.h
index e05c600f274647e9b44e9d666a5f88735df82d97..459bb385e7ba7be7007259262c4c5a93b7a7b36f 100644
--- a/Projects/Webserver/USBHostMode.h
+++ b/Projects/Webserver/USBHostMode.h
@@ -38,7 +38,6 @@
 
 	/* Includes: */
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/RNDIS.h>
 
 		#include "Webserver.h"
 		#include "Lib/uIPManagement.h"
diff --git a/Projects/XPLAINBridge/USARTDescriptors.h b/Projects/XPLAINBridge/USARTDescriptors.h
index 0287e81ae7044b61dfe4d9b520e32425607adbcc..7f22cc0ce447fef1114930a3873a2468ce463c5f 100644
--- a/Projects/XPLAINBridge/USARTDescriptors.h
+++ b/Projects/XPLAINBridge/USARTDescriptors.h
@@ -40,7 +40,6 @@
 		#include <avr/pgmspace.h>
 
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** Endpoint number of the CDC device-to-host notification IN endpoint. */
diff --git a/Projects/XPLAINBridge/XPLAINBridge.h b/Projects/XPLAINBridge/XPLAINBridge.h
index ac4378dc751242b1e0c3bf2abf4d0fde8de47aae..43129c1b59a37e62cc8cb15b18b59e61fa38b7df 100644
--- a/Projects/XPLAINBridge/XPLAINBridge.h
+++ b/Projects/XPLAINBridge/XPLAINBridge.h
@@ -52,7 +52,6 @@
 		#include <LUFA/Version.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
-		#include <LUFA/Drivers/USB/Class/CDC.h>
 
 	/* Macros: */
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */