From 7ace314cc12f24c1c3108311bdfb3a2ed484ab37 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Wed, 9 Dec 2009 00:50:55 +0000
Subject: [PATCH] Increase timeout of Mass Storage and Still Image host
 commands to 10 seconds (up from 5) to account for slow-processing devices.

Added brace guards to macros with parameters to prevent unintended changed evaluation of the macro expression.

Minor code cleanups (remove redundant comments, fix spacing, etc.).
---
 Bootloaders/DFU/BootloaderDFU.h               |  4 ++--
 .../MassStorage/Lib/DataflashManager.h        |  8 ++++----
 .../Device/ClassDriver/MassStorage/Lib/SCSI.h |  6 +++---
 .../ClassDriver/MassStorage/MassStorage.h     |  2 +-
 .../Lib/DataflashManager.h                    |  6 +++---
 .../MassStorageKeyboard/MassStorageKeyboard.h |  2 +-
 .../ClassDriver/RNDISEthernet/RNDISEthernet.h |  2 +-
 .../Device/Incomplete/Sideshow/Descriptors.c  |  8 +++-----
 Demos/Device/Incomplete/Sideshow/Sideshow.h   | 12 +++++++----
 .../Device/LowLevel/AudioInput/Descriptors.h  |  4 ++--
 .../Device/LowLevel/AudioOutput/Descriptors.h |  2 +-
 .../DualVirtualSerial/DualVirtualSerial.h     |  6 +++---
 Demos/Device/LowLevel/GenericHID/GenericHID.h |  4 ++--
 Demos/Device/LowLevel/Joystick/Joystick.h     |  2 +-
 Demos/Device/LowLevel/Keyboard/Keyboard.h     | 14 ++++++-------
 .../LowLevel/KeyboardMouse/KeyboardMouse.h    |  8 ++++----
 Demos/Device/LowLevel/MIDI/MIDI.h             |  2 +-
 .../MassStorage/Lib/DataflashManager.h        |  6 +++---
 Demos/Device/LowLevel/MassStorage/Lib/SCSI.h  | 20 +++++++++----------
 .../Device/LowLevel/MassStorage/MassStorage.h |  2 +-
 Demos/Device/LowLevel/Mouse/Mouse.h           | 14 ++++++-------
 .../LowLevel/RNDISEthernet/RNDISEthernet.h    |  2 +-
 .../LowLevel/VirtualSerial/VirtualSerial.h    |  8 ++++----
 .../MassStorageHost/MassStorageHost.h         |  2 +-
 .../ClassDriver/PrinterHost/PrinterHost.h     |  2 +-
 .../RNDISEthernetHost/RNDISEthernetHost.h     |  2 +-
 .../BluetoothHost/ConfigDescriptor.h          |  2 +-
 .../BluetoothHost/DeviceDescriptor.h          |  2 +-
 .../GenericHIDHost/ConfigDescriptor.h         |  4 ++--
 .../LowLevel/GenericHIDHost/GenericHIDHost.h  |  6 +++---
 .../JoystickHostWithParser/ConfigDescriptor.h |  2 +-
 .../JoystickHostWithParser.h                  |  2 +-
 .../LowLevel/KeyboardHost/ConfigDescriptor.h  |  2 +-
 .../KeyboardHostWithParser/ConfigDescriptor.h |  2 +-
 .../KeyboardHostWithParser.h                  |  2 +-
 .../Host/LowLevel/MIDIHost/ConfigDescriptor.h |  2 +-
 .../MassStorageHost/ConfigDescriptor.h        |  2 +-
 .../MassStorageHost/Lib/MassStoreCommands.h   |  2 +-
 .../MassStorageHost/MassStorageHost.h         |  2 +-
 .../LowLevel/MouseHost/ConfigDescriptor.h     |  2 +-
 Demos/Host/LowLevel/MouseHost/MouseHost.h     |  4 ++--
 .../MouseHostWithParser/ConfigDescriptor.h    |  2 +-
 .../MouseHostWithParser/MouseHostWithParser.h |  2 +-
 Demos/Host/LowLevel/PrinterHost/PrinterHost.h |  2 +-
 .../RNDISEthernetHost/ConfigDescriptor.h      |  2 +-
 .../RNDISEthernetHost/RNDISEthernetHost.h     |  2 +-
 .../StillImageHost/ConfigDescriptor.h         |  2 +-
 .../StillImageHost/Lib/StillImageCommands.h   |  8 ++++----
 .../LowLevel/StillImageHost/StillImageHost.h  |  2 +-
 LUFA/Drivers/Board/Dataflash.h                |  2 +-
 LUFA/Drivers/USB/Class/Host/MassStorage.h     |  2 +-
 LUFA/Drivers/USB/Class/Host/StillImage.h      |  2 +-
 LUFA/Drivers/USB/HighLevel/StdDescriptors.h   | 12 +++++------
 LUFA/Drivers/USB/HighLevel/USBTask.h          |  4 +++-
 LUFA/Drivers/USB/LowLevel/Endpoint.h          |  2 +-
 LUFA/ManPages/ChangeLog.txt                   |  3 +++
 LUFA/ManPages/FutureChanges.txt               |  6 +++++-
 Projects/AVRISP/Lib/V2Protocol.h              |  2 +-
 .../StandaloneProgrammer.h                    |  2 +-
 Projects/MissileLauncher/MissileLauncher.c    |  2 +-
 Projects/MissileLauncher/MissileLauncher.h    |  6 +++---
 61 files changed, 133 insertions(+), 122 deletions(-)

diff --git a/Bootloaders/DFU/BootloaderDFU.h b/Bootloaders/DFU/BootloaderDFU.h
index c711e4378..aac341f8c 100644
--- a/Bootloaders/DFU/BootloaderDFU.h
+++ b/Bootloaders/DFU/BootloaderDFU.h
@@ -79,7 +79,7 @@
 		 *  \param[in] dataarr  Command byte array to check against
 		 *  \param[in] cb1      First command byte to check
 		 */
-		#define IS_ONEBYTE_COMMAND(dataarr, cb1)       (dataarr[0] == cb1)
+		#define IS_ONEBYTE_COMMAND(dataarr, cb1)       (dataarr[0] == (cb1))
 
 		/** Convenience macro, used to determine if the issued command is the given two-byte long command.
 		 *
@@ -87,7 +87,7 @@
 		 *  \param[in] cb1      First command byte to check
 		 *  \param[in] cb2      Second command byte to check
 		 */
-		#define IS_TWOBYTE_COMMAND(dataarr, cb1, cb2) ((dataarr[0] == cb1) && (dataarr[1] == cb2))
+		#define IS_TWOBYTE_COMMAND(dataarr, cb1, cb2) ((dataarr[0] == (cb1)) && (dataarr[1] == (cb2)))
 	
 		/** Length of the DFU file suffix block, appended to the end of each complete memory write command.
 		 *  The DFU file suffix is currently unused (but is designed to give extra file information, such as
diff --git a/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h b/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h
index 2deac0963..dcd5deec8 100644
--- a/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h
+++ b/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.h
@@ -42,10 +42,10 @@
 		#include "MassStorage.h"
 		#include "Descriptors.h"
 
-		#include <LUFA/Common/Common.h>                 // Function Attribute, Atomic, Debug and ISR Macros
-		#include <LUFA/Drivers/USB/USB.h>               // USB Functionality
-		#include <LUFA/Drivers/USB/Class/MassStorage.h> // Mass Storage Class Driver
-		#include <LUFA/Drivers/Board/Dataflash.h>       // Dataflash chip driver
+		#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: */
 		#if (DATAFLASH_PAGE_SIZE % 16)
diff --git a/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h b/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h
index a1cbf675b..9d71e14c6 100644
--- a/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h
+++ b/Demos/Device/ClassDriver/MassStorage/Lib/SCSI.h
@@ -56,9 +56,9 @@
 		 *  \param[in] acode  New SCSI additional sense key to set the additional sense code to
 		 *  \param[in] aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
 		 */
-		#define SCSI_SET_SENSE(key, acode, aqual)  MACROS{ SenseData.SenseKey = key;              \
-		                                                   SenseData.AdditionalSenseCode = acode; \
-		                                                   SenseData.AdditionalSenseQualifier = aqual; }MACROE
+		#define SCSI_SET_SENSE(key, acode, aqual)  MACROS{ SenseData.SenseKey = (key);                   \
+		                                                   SenseData.AdditionalSenseCode = (acode);      \
+		                                                   SenseData.AdditionalSenseQualifier = (aqual); }MACROE
 
 		/** Macro for the SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
 		#define DATA_READ           true
diff --git a/Demos/Device/ClassDriver/MassStorage/MassStorage.h b/Demos/Device/ClassDriver/MassStorage/MassStorage.h
index fca288d7c..5fb37f140 100644
--- a/Demos/Device/ClassDriver/MassStorage/MassStorage.h
+++ b/Demos/Device/ClassDriver/MassStorage/MassStorage.h
@@ -65,7 +65,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 		
 		/** Total number of logical drives within the device - must be non-zero. */
 		#define TOTAL_LUNS                1
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.h b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.h
index 5e9debcb0..b626d4896 100644
--- a/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.h
+++ b/Demos/Device/ClassDriver/MassStorageKeyboard/Lib/DataflashManager.h
@@ -42,9 +42,9 @@
 		#include "MassStorageKeyboard.h"
 		#include "Descriptors.h"
 
-		#include <LUFA/Common/Common.h>              // Function Attribute, Atomic, Debug and ISR Macros
-		#include <LUFA/Drivers/USB/USB.h>            // USB Functionality
-		#include <LUFA/Drivers/Board/Dataflash.h>    // Dataflash chip driver
+		#include <LUFA/Common/Common.h>
+		#include <LUFA/Drivers/USB/USB.h>
+		#include <LUFA/Drivers/Board/Dataflash.h>
 
 	/* Preprocessor Checks: */
 		#if (DATAFLASH_PAGE_SIZE % 16)
diff --git a/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h b/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h
index c82fb7836..df01dac8a 100644
--- a/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h
+++ b/Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h
@@ -72,7 +72,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY         LEDS_LED2
 		
 		/** Total number of logical drives within the device - must be non-zero. */
 		#define TOTAL_LUNS               1
diff --git a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h
index b91a54d21..a132a664b 100644
--- a/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h
+++ b/Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.h
@@ -71,7 +71,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 		
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Demos/Device/Incomplete/Sideshow/Descriptors.c b/Demos/Device/Incomplete/Sideshow/Descriptors.c
index 647e0b4f9..ed5853f90 100644
--- a/Demos/Device/Incomplete/Sideshow/Descriptors.c
+++ b/Demos/Device/Incomplete/Sideshow/Descriptors.c
@@ -192,11 +192,9 @@ uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue, const uint8_t wIndex,
 					Size    = pgm_read_byte(&SerialNumberString.Header.Size);
 					break;
 				case 0xEE:
-					/* Great, another Microsoft-proprietary extention. String address 0xEE is used
-					   by Windows for "OS Descriptors", which in this case allows us to indicate that
-					   our device is Sideshow compatible. Most people would be happy using the normal
-					   0xFF 0x?? 0x?? Class/Subclass/Protocol values like the USBIF intended. */
-					   
+					/* A Microsoft-proprietary extention. String address 0xEE is used by Windows for
+					   "OS Descriptors", which in this case allows us to indicate that our device is
+					   Sideshow compatible regardless of VID/PID values. */
 					Address = (void*)&OSDescriptorString;
 					Size    = pgm_read_byte(&OSDescriptorString.Header.Size);
 					break;
diff --git a/Demos/Device/Incomplete/Sideshow/Sideshow.h b/Demos/Device/Incomplete/Sideshow/Sideshow.h
index f2890ef21..6369036e6 100644
--- a/Demos/Device/Incomplete/Sideshow/Sideshow.h
+++ b/Demos/Device/Incomplete/Sideshow/Sideshow.h
@@ -45,21 +45,25 @@
 		#include <LUFA/Drivers/Peripheral/SerialStream.h>
 
 	/* Macros: */
+		/** Device control request for used in the Microsoft OS Descriptor for retrieving the OS Feature
+		 *  descriptors of the device
+		 */
 		#define REQ_GetOSFeatureDescriptor        0x01
 		
+		/** Descriptor index for a Microsoft Proprietary Extended Device Compatibility descriptor */
 		#define EXTENDED_COMPAT_ID_DESCRIPTOR     0x0004
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is not ready. */
-		#define LEDMASK_USB_NOTREADY      LEDS_LED1
+		#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)
 		
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Demos/Device/LowLevel/AudioInput/Descriptors.h b/Demos/Device/LowLevel/AudioInput/Descriptors.h
index 9e7b2d6d1..cda03c0c7 100644
--- a/Demos/Device/LowLevel/AudioInput/Descriptors.h
+++ b/Demos/Device/LowLevel/AudioInput/Descriptors.h
@@ -125,7 +125,7 @@
 		 *
 		 *  \param[in] freq  Required audio sampling frequency in HZ
 		 */
-		#define SAMPLE_FREQ(freq)  {LowWord: ((uint32_t)freq & 0x00FFFF), HighByte: (((uint32_t)freq >> 16) & 0x0000FF)}
+		#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.
@@ -138,7 +138,7 @@
 		#define EP_ACCEPTS_SMALL_PACKETS     (0 << 7)
 
 		/** Endpoint number of the Audio isochronous streaming data endpoint. */
-		#define AUDIO_STREAM_EPNUM       1
+		#define AUDIO_STREAM_EPNUM           1
 		
 		/** Endpoint size in bytes of the Audio isochronous streaming data endpoint. The Windows audio stack requires
 		 *  at least 192 bytes for correct output, thus the smaller 128 byte maximum endpoint size on some of the smaller
diff --git a/Demos/Device/LowLevel/AudioOutput/Descriptors.h b/Demos/Device/LowLevel/AudioOutput/Descriptors.h
index 0f2bb65bd..958e69eaa 100644
--- a/Demos/Device/LowLevel/AudioOutput/Descriptors.h
+++ b/Demos/Device/LowLevel/AudioOutput/Descriptors.h
@@ -125,7 +125,7 @@
 		 *
 		 *  \param[in] freq  Required audio sampling frequency in HZ
 		 */
-		#define SAMPLE_FREQ(freq)  {LowWord: ((uint32_t)freq & 0x00FFFF), HighByte: (((uint32_t)freq >> 16) & 0x0000FF)}
+		#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.
diff --git a/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h b/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h
index 55ab6b214..d83dd79b6 100644
--- a/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h
+++ b/Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.h
@@ -51,13 +51,13 @@
 
 	/* Macros: */
 		/** CDC Class specific request to get the current virtual serial port configuration settings. */
-		#define REQ_GetLineEncoding          0x21
+		#define REQ_GetLineEncoding       0x21
 
 		/** CDC Class specific request to set the current virtual serial port configuration settings. */
-		#define REQ_SetLineEncoding          0x20
+		#define REQ_SetLineEncoding       0x20
 
 		/** CDC Class specific request to set the current virtual serial port handshake line states. */
-		#define REQ_SetControlLineState      0x22
+		#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
diff --git a/Demos/Device/LowLevel/GenericHID/GenericHID.h b/Demos/Device/LowLevel/GenericHID/GenericHID.h
index da3d4ac60..80379ee44 100644
--- a/Demos/Device/LowLevel/GenericHID/GenericHID.h
+++ b/Demos/Device/LowLevel/GenericHID/GenericHID.h
@@ -51,10 +51,10 @@
 			
 	/* Macros: */
 		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport      0x01
+		#define REQ_GetReport             0x01
 
 		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport      0x09
+		#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/Joystick.h b/Demos/Device/LowLevel/Joystick/Joystick.h
index db280ee5c..bf339fe16 100644
--- a/Demos/Device/LowLevel/Joystick/Joystick.h
+++ b/Demos/Device/LowLevel/Joystick/Joystick.h
@@ -52,7 +52,7 @@
 
 	/* Macros: */
 		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport   0x01
+		#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/Keyboard.h b/Demos/Device/LowLevel/Keyboard/Keyboard.h
index 576e08030..889b6f919 100644
--- a/Demos/Device/LowLevel/Keyboard/Keyboard.h
+++ b/Demos/Device/LowLevel/Keyboard/Keyboard.h
@@ -54,25 +54,25 @@
 
 	/* Macros: */
 		/** Idle period indicating that reports should be sent only when the inputs have changed */
-		#define HID_IDLE_CHANGESONLY   0
+		#define HID_IDLE_CHANGESONLY      0
 
 		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport          0x01
+		#define REQ_GetReport             0x01
 
 		/** HID Class specific request to get the idle timeout period of the device. */
-		#define REQ_GetIdle            0x02
+		#define REQ_GetIdle               0x02
 
 		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport          0x09
+		#define REQ_SetReport             0x09
 
 		/** HID Class specific request to set the idle timeout period of the device. */
-		#define REQ_SetIdle            0x0A
+		#define REQ_SetIdle               0x0A
 
 		/** HID Class specific request to get the current HID protocol in use, either report or boot. */
-		#define REQ_GetProtocol        0x03
+		#define REQ_GetProtocol           0x03
 
 		/** HID Class specific request to set the current HID protocol in use, either report or boot. */
-		#define REQ_SetProtocol        0x0B
+		#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
diff --git a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h
index 57e152b9a..c939bdfa0 100644
--- a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h
+++ b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.h
@@ -49,16 +49,16 @@
 		
 	/* Macros: */
 		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport      0x01
+		#define REQ_GetReport             0x01
 
 		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport      0x09
+		#define REQ_SetReport             0x09
 
 		/** HID Class specific request to get the current HID protocol in use, either report or boot. */
-		#define REQ_GetProtocol    0x03
+		#define REQ_GetProtocol           0x03
 
 		/** HID Class specific request to set the current HID protocol in use, either report or boot. */
-		#define REQ_SetProtocol    0x0B
+		#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
diff --git a/Demos/Device/LowLevel/MIDI/MIDI.h b/Demos/Device/LowLevel/MIDI/MIDI.h
index 3e7a06d6d..992d54cea 100644
--- a/Demos/Device/LowLevel/MIDI/MIDI.h
+++ b/Demos/Device/LowLevel/MIDI/MIDI.h
@@ -65,7 +65,7 @@
 		 *
 		 *  \param[in] channel  MIDI channel number to address
 		 */
-		#define MIDI_CHANNEL(channel)     (channel - 1)
+		#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
diff --git a/Demos/Device/LowLevel/MassStorage/Lib/DataflashManager.h b/Demos/Device/LowLevel/MassStorage/Lib/DataflashManager.h
index cfba56d3c..e906a4c51 100644
--- a/Demos/Device/LowLevel/MassStorage/Lib/DataflashManager.h
+++ b/Demos/Device/LowLevel/MassStorage/Lib/DataflashManager.h
@@ -42,9 +42,9 @@
 		#include "MassStorage.h"
 		#include "Descriptors.h"
 
-		#include <LUFA/Common/Common.h>              // Function Attribute, Atomic, Debug and ISR Macros
-		#include <LUFA/Drivers/USB/USB.h>            // USB Functionality
-		#include <LUFA/Drivers/Board/Dataflash.h>    // Dataflash chip driver
+		#include <LUFA/Common/Common.h>
+		#include <LUFA/Drivers/USB/USB.h>
+		#include <LUFA/Drivers/Board/Dataflash.h>
 
 	/* Preprocessor Checks: */
 		#if (DATAFLASH_PAGE_SIZE % 16)
diff --git a/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h b/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
index f642debba..93a494215 100644
--- a/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
+++ b/Demos/Device/LowLevel/MassStorage/Lib/SCSI.h
@@ -40,9 +40,9 @@
 		#include <avr/io.h>
 		#include <avr/pgmspace.h>
 
-		#include <LUFA/Common/Common.h>              // Function Attribute, Atomic, Debug and ISR Macros
-		#include <LUFA/Drivers/USB/USB.h>            // USB Functionality
-		#include <LUFA/Drivers/Board/LEDs.h>         // LEDs driver
+		#include <LUFA/Common/Common.h>
+		#include <LUFA/Drivers/USB/USB.h>
+		#include <LUFA/Drivers/Board/LEDs.h>
 
 		#include "MassStorage.h"
 		#include "Descriptors.h"
@@ -58,21 +58,21 @@
 		 *  \param[in] acode  New SCSI additional sense key to set the additional sense code to
 		 *  \param[in] aqual  New SCSI additional sense key qualifier to set the additional sense qualifier code to
 		 */
-		#define SCSI_SET_SENSE(key, acode, aqual)  MACROS{ SenseData.SenseKey = key;              \
-		                                                   SenseData.AdditionalSenseCode = acode; \
-		                                                   SenseData.AdditionalSenseQualifier = aqual; }MACROE
+		#define SCSI_SET_SENSE(key, acode, aqual)  MACROS{ SenseData.SenseKey = (key);              \
+		                                                   SenseData.AdditionalSenseCode = (acode); \
+		                                                   SenseData.AdditionalSenseQualifier = (aqual); }MACROE
 
 		/** Macro for the SCSI_Command_ReadWrite_10() function, to indicate that data is to be read from the storage medium. */
-		#define DATA_READ         true
+		#define DATA_READ           true
 
 		/** Macro for the SCSI_Command_ReadWrite_10() function, to indicate that data is to be written to the storage medium. */
-		#define DATA_WRITE        false
+		#define DATA_WRITE          false
 
 		/** Value for the DeviceType entry in the SCSI_Inquiry_Response_t enum, indicating a Block Media device. */
-		#define DEVICE_TYPE_BLOCK 0x00
+		#define DEVICE_TYPE_BLOCK   0x00
 		
 		/** Value for the DeviceType entry in the SCSI_Inquiry_Response_t enum, indicating a CD-ROM device. */
-		#define DEVICE_TYPE_CDROM 0x05
+		#define DEVICE_TYPE_CDROM   0x05
 
 	/* Type Defines: */
 		/** Type define for a SCSI response structure to a SCSI INQUIRY command. For details of the
diff --git a/Demos/Device/LowLevel/MassStorage/MassStorage.h b/Demos/Device/LowLevel/MassStorage/MassStorage.h
index 65407c8c1..05dbe75bc 100644
--- a/Demos/Device/LowLevel/MassStorage/MassStorage.h
+++ b/Demos/Device/LowLevel/MassStorage/MassStorage.h
@@ -94,7 +94,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 		
 	/* Type defines: */
 		/** Type define for a Command Block Wrapper, used in the Mass Storage Bulk-Only Transport protocol. */
diff --git a/Demos/Device/LowLevel/Mouse/Mouse.h b/Demos/Device/LowLevel/Mouse/Mouse.h
index 698fe478a..3296f5c89 100644
--- a/Demos/Device/LowLevel/Mouse/Mouse.h
+++ b/Demos/Device/LowLevel/Mouse/Mouse.h
@@ -53,25 +53,25 @@
 
 	/* Macros: */
 		/** Idle period indicating that reports should be sent only when the inputs have changed */
-		#define HID_IDLE_CHANGESONLY 0
+		#define HID_IDLE_CHANGESONLY      0
 	
 		/** HID Class specific request to get the next HID report from the device. */
-		#define REQ_GetReport        0x01
+		#define REQ_GetReport             0x01
 
 		/** HID Class specific request to get the idle timeout period of the device. */
-		#define REQ_GetIdle          0x02
+		#define REQ_GetIdle               0x02
 
 		/** HID Class specific request to send the next HID report to the device. */
-		#define REQ_SetReport        0x09
+		#define REQ_SetReport             0x09
 
 		/** HID Class specific request to set the idle timeout period of the device. */
-		#define REQ_SetIdle          0x0A
+		#define REQ_SetIdle               0x0A
 
 		/** HID Class specific request to get the current HID protocol in use, either report or boot. */
-		#define REQ_GetProtocol      0x03
+		#define REQ_GetProtocol           0x03
 
 		/** HID Class specific request to set the current HID protocol in use, either report or boot. */
-		#define REQ_SetProtocol      0x0B
+		#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
diff --git a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h
index 3ae896607..0f6d9e6aa 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h
+++ b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.h
@@ -74,7 +74,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 		
 	/* Type Defines: */
 		/** Type define for a RNDIS notification message, for transmission to the RNDIS host via the notification
diff --git a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h
index d8abc1207..ee6235474 100644
--- a/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h
+++ b/Demos/Device/LowLevel/VirtualSerial/VirtualSerial.h
@@ -111,16 +111,16 @@
 		#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
+		#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)
 
 	/* Type Defines: */
 		/** Type define for the virtual serial port line encoding settings, for storing the current USART configuration
diff --git a/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h b/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h
index 4c3539fd0..45646ce86 100644
--- a/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h
+++ b/Demos/Host/ClassDriver/MassStorageHost/MassStorageHost.h
@@ -65,7 +65,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 		
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h
index 24e42ebca..762192763 100644
--- a/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h
+++ b/Demos/Host/ClassDriver/PrinterHost/PrinterHost.h
@@ -64,7 +64,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 		
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h b/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h
index ea87648c0..48dc939c6 100644
--- a/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h
+++ b/Demos/Host/ClassDriver/RNDISEthernetHost/RNDISEthernetHost.h
@@ -64,7 +64,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 		
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
diff --git a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h
index e94368714..6b59289df 100644
--- a/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h
+++ b/Demos/Host/Incomplete/BluetoothHost/ConfigDescriptor.h
@@ -32,7 +32,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "BluetoothHost.h"
 		
diff --git a/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h b/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h
index 46edbdb27..9de8bc1b5 100644
--- a/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h
+++ b/Demos/Host/Incomplete/BluetoothHost/DeviceDescriptor.h
@@ -32,7 +32,7 @@
 #define _DEVICEDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "BluetoothHost.h"
 		
diff --git a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h
index 48616106d..7cc1576ae 100644
--- a/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/GenericHIDHost/ConfigDescriptor.h
@@ -37,13 +37,13 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "GenericHIDHost.h"
 		
 	/* Macros: */
 		/** Interface Class value for the Human Interface Device class */
-		#define HID_CLASS                 0x03
+		#define HID_CLASS                   0x03
 
 		/** Maximum size of a device configuration descriptor which can be processed by the host, in bytes */
 		#define MAX_CONFIG_DESCRIPTOR_SIZE  512
diff --git a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h
index 1c6210ad2..bae5369ad 100644
--- a/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h
+++ b/Demos/Host/LowLevel/GenericHIDHost/GenericHIDHost.h
@@ -54,13 +54,13 @@
 		
 	/* Macros: */
 		/** Pipe number for the HID data IN pipe */
-		#define HID_DATA_IN_PIPE                 1
+		#define HID_DATA_IN_PIPE          1
 		
 		/** Pipe number for the HID data OUT pipe */
-		#define HID_DATA_OUT_PIPE                2
+		#define HID_DATA_OUT_PIPE         2
 
 		/** HID Class specific request to send a HID report to the device. */
-		#define REQ_SetReport                    0x09
+		#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.h b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h
index 62684306f..7fcd5113e 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "HIDReport.h"
 		
diff --git a/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h b/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h
index 73c593850..32e2626f7 100644
--- a/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h
+++ b/Demos/Host/LowLevel/JoystickHostWithParser/JoystickHostWithParser.h
@@ -54,7 +54,7 @@
 
 	/* Macros: */
 		/** Pipe number for the joystick report data pipe */
-		#define JOYSTICK_DATAPIPE              1
+		#define JOYSTICK_DATAPIPE         1
 
 		/** 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/KeyboardHost/ConfigDescriptor.h b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h
index 6dd9366ab..07d3b2e93 100644
--- a/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/KeyboardHost/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "KeyboardHost.h"
 		
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h
index 9c6575cb1..2a6d56ddb 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "HIDReport.h"
 		
diff --git a/Demos/Host/LowLevel/KeyboardHostWithParser/KeyboardHostWithParser.h b/Demos/Host/LowLevel/KeyboardHostWithParser/KeyboardHostWithParser.h
index 8453bb661..461c2a059 100644
--- a/Demos/Host/LowLevel/KeyboardHostWithParser/KeyboardHostWithParser.h
+++ b/Demos/Host/LowLevel/KeyboardHostWithParser/KeyboardHostWithParser.h
@@ -49,7 +49,7 @@
 
 	/* Macros: */
 		/** Pipe number for the keyboard report data pipe */
-		#define KEYBOARD_DATAPIPE              1
+		#define KEYBOARD_DATAPIPE         1
 
 		/** 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/MIDIHost/ConfigDescriptor.h b/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h
index 8a49e2bd0..1ca24d495 100644
--- a/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/MIDIHost/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>      // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "MIDIHost.h"
 		
diff --git a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h
index 2f311a5bb..e51faa481 100644
--- a/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/MassStorageHost/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "MassStorageHost.h"
 		
diff --git a/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h b/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h
index c7bb7c7d9..9ce419b4f 100644
--- a/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h
+++ b/Demos/Host/LowLevel/MassStorageHost/Lib/MassStoreCommands.h
@@ -64,7 +64,7 @@
 		#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             2000
+		#define COMMAND_DATA_TIMEOUT_MS             10000
 
 		/** Pipe number of the Mass Storage data IN pipe */
 		#define MASS_STORE_DATA_IN_PIPE             1
diff --git a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
index e9f02784c..663b7205d 100644
--- a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
+++ b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
@@ -70,7 +70,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 		
 	/* Function Prototypes: */
 		void MassStorage_Task(void);
diff --git a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h
index 6a194b1c8..1acf20592 100644
--- a/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/MouseHost/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "MouseHost.h"
 		
diff --git a/Demos/Host/LowLevel/MouseHost/MouseHost.h b/Demos/Host/LowLevel/MouseHost/MouseHost.h
index 6a31c658b..207ac0c34 100644
--- a/Demos/Host/LowLevel/MouseHost/MouseHost.h
+++ b/Demos/Host/LowLevel/MouseHost/MouseHost.h
@@ -54,10 +54,10 @@
 		
 	/* Macros: */
 		/** Pipe number for the mouse data IN pipe */
-		#define MOUSE_DATAPIPE              1
+		#define MOUSE_DATAPIPE            1
 		
 		/** HID Class Specific request to set the report protocol mode */
-		#define REQ_SetProtocol             0x0B
+		#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
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h
index 7b33c7428..fe0419798 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/MouseHostWithParser/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "HIDReport.h"
 		
diff --git a/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.h b/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.h
index 92782cf75..9183cca1a 100644
--- a/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.h
+++ b/Demos/Host/LowLevel/MouseHostWithParser/MouseHostWithParser.h
@@ -54,7 +54,7 @@
 
 	/* Macros: */
 		/** Pipe number for the mouse report data pipe */
-		#define MOUSE_DATAPIPE              1
+		#define MOUSE_DATAPIPE            1
 
 		/** 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/PrinterHost/PrinterHost.h b/Demos/Host/LowLevel/PrinterHost/PrinterHost.h
index db7a9fe7e..b5008c1e9 100644
--- a/Demos/Host/LowLevel/PrinterHost/PrinterHost.h
+++ b/Demos/Host/LowLevel/PrinterHost/PrinterHost.h
@@ -67,7 +67,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 	
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 	
 	/* Function Prototypes: */
 		void EVENT_USB_Host_DeviceAttached(void);
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h b/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h
index 4279c1a13..d2d1596f7 100644
--- a/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/RNDISEthernetHost/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "RNDISEthernetHost.h"
 		
diff --git a/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h b/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h
index 47e5c24d1..480c1138f 100644
--- a/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h
+++ b/Demos/Host/LowLevel/RNDISEthernetHost/RNDISEthernetHost.h
@@ -67,7 +67,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 				
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 
 	/* Type Defines: */
 		/** Type define for a RNDIS notification message, for transmission to the RNDIS host via the notification
diff --git a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h
index 24dd0664d..946edb16b 100644
--- a/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h
+++ b/Demos/Host/LowLevel/StillImageHost/ConfigDescriptor.h
@@ -37,7 +37,7 @@
 #define _CONFIGDESCRIPTOR_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "StillImageHost.h"
 		
diff --git a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
index 6ac70fc50..b38f5c176 100644
--- a/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
+++ b/Demos/Host/LowLevel/StillImageHost/Lib/StillImageCommands.h
@@ -37,7 +37,7 @@
 #define _STILL_IMAGE_COMMANDS_H_
 
 	/* Includes: */
-		#include <LUFA/Drivers/USB/USB.h>                        // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 		#include "PIMACodes.h"
 
@@ -55,10 +55,10 @@
 		 *
 		 *  \param[in] chars  Total number of Unicode characters in the string
 		 */
-		#define UNICODE_STRING_LENGTH(chars)   (chars << 1)
+		#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        5000
+		#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.
@@ -66,7 +66,7 @@
 		 *  \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])))
+		                                        ((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.
diff --git a/Demos/Host/LowLevel/StillImageHost/StillImageHost.h b/Demos/Host/LowLevel/StillImageHost/StillImageHost.h
index 89956e0f5..23077c44c 100644
--- a/Demos/Host/LowLevel/StillImageHost/StillImageHost.h
+++ b/Demos/Host/LowLevel/StillImageHost/StillImageHost.h
@@ -66,7 +66,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 		
 	/* Function Prototypes: */
 		void StillImage_Task(void);
diff --git a/LUFA/Drivers/Board/Dataflash.h b/LUFA/Drivers/Board/Dataflash.h
index f65298a1d..22f4b10d6 100644
--- a/LUFA/Drivers/Board/Dataflash.h
+++ b/LUFA/Drivers/Board/Dataflash.h
@@ -111,7 +111,7 @@
 				#define Dataflash_GetSelectedChip()          (DATAFLASH_CHIPCS_PORT & DATAFLASH_CHIPCS_MASK)
 
 				#define Dataflash_SelectChip(mask)   MACROS{ DATAFLASH_CHIPCS_PORT = ((DATAFLASH_CHIPCS_PORT \
-															 & ~DATAFLASH_CHIPCS_MASK) | mask);              }MACROE
+															 & ~DATAFLASH_CHIPCS_MASK) | (mask));            }MACROE
 				
 				#define Dataflash_DeselectChip()             Dataflash_SelectChip(DATAFLASH_NO_CHIP)
 			#endif
diff --git a/LUFA/Drivers/USB/Class/Host/MassStorage.h b/LUFA/Drivers/USB/Class/Host/MassStorage.h
index 584172fe8..aa70733f5 100644
--- a/LUFA/Drivers/USB/Class/Host/MassStorage.h
+++ b/LUFA/Drivers/USB/Class/Host/MassStorage.h
@@ -267,7 +267,7 @@
 			#define COMMAND_DIRECTION_DATA_OUT     (0 << 7)
 			#define COMMAND_DIRECTION_DATA_IN      (1 << 7)
 			
-			#define COMMAND_DATA_TIMEOUT_MS        2000
+			#define COMMAND_DATA_TIMEOUT_MS        10000
 
 			#define MS_FOUND_DATAPIPE_IN           (1 << 0)
 			#define MS_FOUND_DATAPIPE_OUT          (1 << 1)
diff --git a/LUFA/Drivers/USB/Class/Host/StillImage.h b/LUFA/Drivers/USB/Class/Host/StillImage.h
index 4478931e0..f89b59ec6 100644
--- a/LUFA/Drivers/USB/Class/Host/StillImage.h
+++ b/LUFA/Drivers/USB/Class/Host/StillImage.h
@@ -230,7 +230,7 @@
 			#define SI_FOUND_DATAPIPE_IN           (1 << 1)
 			#define SI_FOUND_DATAPIPE_OUT          (1 << 2)
 
-			#define COMMAND_DATA_TIMEOUT_MS        5000
+			#define COMMAND_DATA_TIMEOUT_MS        10000
 		
 		/* Function Prototypes: */
 			#if defined(INCLUDE_FROM_SI_CLASS_HOST_C)
diff --git a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
index 286294424..9b46c0936 100644
--- a/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
+++ b/LUFA/Drivers/USB/HighLevel/StdDescriptors.h
@@ -82,12 +82,12 @@
 			#endif
 			
 			/** Macro to calculate the power value for the device descriptor, from a given number of milliamps. */
-			#define USB_CONFIG_POWER_MA(mA)           (mA >> 1)
+			#define USB_CONFIG_POWER_MA(mA)           ((mA) >> 1)
 
 			/** Macro to calculate the Unicode length of a string with a given number of Unicode characters.
 			 *  Should be used in string descriptor's headers for giving the string descriptor's byte length.
 			 */
-			#define USB_STRING_LEN(str)               (sizeof(USB_Descriptor_Header_t) + (str << 1))
+			#define USB_STRING_LEN(str)               (sizeof(USB_Descriptor_Header_t) + ((str) << 1))
 			
 			/** Macro to encode a given four digit floating point version number (e.g. 01.23) into Binary Coded
 			 *  Decimal format for descriptor fields requiring BCD encoding, such as the USB version number in the
@@ -593,10 +593,10 @@
 	/* Private Interface - For use in library only: */
 	#if !defined(__DOXYGEN__)
 		/* Macros: */
-			#define VERSION_TENS(x)                   (int)(x / 10)
-			#define VERSION_ONES(x)                   (int)(x - (10 * VERSION_TENS(x)))
-			#define VERSION_TENTHS(x)                 (int)((x - (int)x) * 10)
-			#define VERSION_HUNDREDTHS(x)             (int)(((x - (int)x) * 100) - (10 * VERSION_TENTHS(x)))
+			#define VERSION_TENS(x)                   (int)((x) / 10)
+			#define VERSION_ONES(x)                   (int)((x) - (10 * VERSION_TENS(x)))
+			#define VERSION_TENTHS(x)                 (int)(((x) - (int)(x)) * 10)
+			#define VERSION_HUNDREDTHS(x)             (int)((((x) - (int)(x)) * 100) - (10 * VERSION_TENTHS(x)))
 	#endif
 	
 	/* Disable C linkage for C++ Compilers: */
diff --git a/LUFA/Drivers/USB/HighLevel/USBTask.h b/LUFA/Drivers/USB/HighLevel/USBTask.h
index cc0601548..4c9b717a4 100644
--- a/LUFA/Drivers/USB/HighLevel/USBTask.h
+++ b/LUFA/Drivers/USB/HighLevel/USBTask.h
@@ -175,7 +175,9 @@
 			#endif
 			
 		/* Macros: */
-			#define HOST_TASK_NONBLOCK_WAIT(duration, nextstate) MACROS{USB_HostState = HOST_STATE_WaitForDevice; WaitMSRemaining = duration; PostWaitState = nextstate; }MACROE
+			#define HOST_TASK_NONBLOCK_WAIT(duration, nextstate) MACROS{ USB_HostState = HOST_STATE_WaitForDevice; \
+			                                                             WaitMSRemaining = (duration);             \
+			                                                             PostWaitState = (nextstate);        }MACROE
 	#endif
 	
 	/* Disable C linkage for C++ Compilers: */
diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.h b/LUFA/Drivers/USB/LowLevel/Endpoint.h
index b9122e408..eb09a0ddb 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.h
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.h
@@ -353,7 +353,7 @@
 				#if !defined(CONTROL_ONLY_DEVICE)
 					#define Endpoint_SelectEndpoint(epnum)    MACROS{ UENUM = (epnum); }MACROE
 				#else
-					#define Endpoint_SelectEndpoint(epnum)    (void)epnum
+					#define Endpoint_SelectEndpoint(epnum)    (void)(epnum)
 				#endif
 
 				#define Endpoint_ResetFIFO(epnum)             MACROS{ UERST = (1 << (epnum)); UERST = 0; }MACROE
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 1fdd96626..f7af9a1e9 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -53,6 +53,9 @@
   *  - Fixed HID Parser not distributing the Usage Min and Usage Max values across an array of report items
   *  - Fixed Mass Storage Host Class driver and Low Level demo not clearing the error condition if an attached device returns a
   *    STALL to a GET MAX LUN request (thanks to Martin Luxen)
+  *  - Fixed TeensyHID bootloader not properly shutting down the USB interface to trigger a disconnection on the host before resetting
+  *  - Fixed MassStorageHost Class driver demo not having USB_STREAM_TIMEOUT_MS compile time option set properly to prevent slow 
+  *    devices from timing out the data pipes
   *
   *  \section Sec_ChangeLog091122 Version 091122
   *
diff --git a/LUFA/ManPages/FutureChanges.txt b/LUFA/ManPages/FutureChanges.txt
index 987ce3d37..3267afc73 100644
--- a/LUFA/ManPages/FutureChanges.txt
+++ b/LUFA/ManPages/FutureChanges.txt
@@ -26,7 +26,11 @@
   *      -# Write LUFA tutorials
   *  - Demos/Projects
   *      -# Multiple-Report HID device
-  *      -# Device/Host bridge
+  *      -# Device/Host USB bridge
+  *      -# Finish BluetoothHost demo
+  *      -# Finish MIDI class Bootloader
+  *      -# Finish SideShow demo
+  *      -# Finish StandaloneProgrammer project
   *  - Ports
   *      -# AVR32 UC3B series microcontrollers
   *      -# Atmel ARM7 series microcontrollers
diff --git a/Projects/AVRISP/Lib/V2Protocol.h b/Projects/AVRISP/Lib/V2Protocol.h
index d40f951f9..c6203004f 100644
--- a/Projects/AVRISP/Lib/V2Protocol.h
+++ b/Projects/AVRISP/Lib/V2Protocol.h
@@ -57,7 +57,7 @@
 
 	/* Macros: */
 		/** Programmer ID string, returned to the host during the CMD_SIGN_ON command processing */
-		#define PROGRAMMER_ID                   "AVRISP_MK2"
+		#define PROGRAMMER_ID             "AVRISP_MK2"
 
 		/** Timeout in milliseconds of target busy-wait loops waiting for a command to complete */
 		#define TARGET_BUSY_TIMEOUT_MS    240
diff --git a/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h b/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h
index 744ad01bf..828e3ea50 100644
--- a/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h
+++ b/Projects/Incomplete/StandaloneProgrammer/StandaloneProgrammer.h
@@ -68,7 +68,7 @@
 		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
-		#define LEDMASK_USB_BUSY         (LEDS_LED2)
+		#define LEDMASK_USB_BUSY          LEDS_LED2
 		
 	/* External Variables: */
 		extern FILE DiskStream;
diff --git a/Projects/MissileLauncher/MissileLauncher.c b/Projects/MissileLauncher/MissileLauncher.c
index a16d3132b..26dd077cd 100644
--- a/Projects/MissileLauncher/MissileLauncher.c
+++ b/Projects/MissileLauncher/MissileLauncher.c
@@ -287,7 +287,7 @@ void WriteNextReport(uint8_t* ReportOUTData, uint16_t ReportLength)
 		USB_ControlRequest = (USB_Request_Header_t)
 			{
 				.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
-				.bRequest      = 0x09,
+				.bRequest      = REQ_SetReport,
 				.wValue        = 0x02,
 				.wIndex        = 0x01,
 				.wLength       = ReportLength,
diff --git a/Projects/MissileLauncher/MissileLauncher.h b/Projects/MissileLauncher/MissileLauncher.h
index 86fbe8602..e92fe743c 100644
--- a/Projects/MissileLauncher/MissileLauncher.h
+++ b/Projects/MissileLauncher/MissileLauncher.h
@@ -55,13 +55,13 @@
 		
 	/* Macros: */
 		/** Pipe number for the HID data IN pipe */
-		#define HID_DATA_IN_PIPE                 1
+		#define HID_DATA_IN_PIPE          1
 		
 		/** Pipe number for the HID data OUT pipe */
-		#define HID_DATA_OUT_PIPE                2
+		#define HID_DATA_OUT_PIPE         2
 
 		/** HID Class specific request to send a HID report to the device. */
-		#define REQ_SetReport                    0x09
+		#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
-- 
GitLab