Removed complicated logic for the Endpoint_ConfigureEndpoint() function to use inline...
authorDean Camera <dean@fourwalledcubicle.com>
Mon, 9 Aug 2010 10:20:10 +0000 (10:20 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Mon, 9 Aug 2010 10:20:10 +0000 (10:20 +0000)
Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints.

43 files changed:
Demos/Device/ClassDriver/AudioInput/AudioInput.c
Demos/Device/ClassDriver/AudioOutput/AudioOutput.c
Demos/Device/ClassDriver/DualVirtualSerial/DualVirtualSerial.c
Demos/Device/ClassDriver/GenericHID/GenericHID.c
Demos/Device/ClassDriver/Joystick/Joystick.c
Demos/Device/ClassDriver/Keyboard/Keyboard.c
Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c
Demos/Device/ClassDriver/MIDI/MIDI.c
Demos/Device/ClassDriver/MassStorage/MassStorage.c
Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c
Demos/Device/ClassDriver/Mouse/Mouse.c
Demos/Device/ClassDriver/RNDISEthernet/RNDISEthernet.c
Demos/Device/ClassDriver/VirtualSerial/VirtualSerial.c
Demos/Device/ClassDriver/VirtualSerialMouse/VirtualSerialMouse.c
Demos/Device/Incomplete/Sideshow/Sideshow.c
Demos/Device/Incomplete/TestAndMeasurement/TestAndMeasurement.c
Demos/Device/LowLevel/AudioInput/AudioInput.c
Demos/Device/LowLevel/AudioOutput/AudioOutput.c
Demos/Device/LowLevel/DualVirtualSerial/DualVirtualSerial.c
Demos/Device/LowLevel/GenericHID/GenericHID.c
Demos/Device/LowLevel/Joystick/Joystick.c
Demos/Device/LowLevel/Keyboard/Descriptors.c
Demos/Device/LowLevel/Keyboard/Descriptors.h
Demos/Device/LowLevel/Keyboard/Keyboard.c
Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c
Demos/Device/LowLevel/MIDI/MIDI.c
Demos/Device/LowLevel/MassStorage/MassStorage.c
Demos/Device/LowLevel/Mouse/Mouse.c
Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
Demos/Device/LowLevel/VirtualSerial/VirtualSerial.c
LUFA/Drivers/USB/LowLevel/Endpoint.c
LUFA/Drivers/USB/LowLevel/Endpoint.h
LUFA/Drivers/USB/LowLevel/Pipe.h
LUFA/ManPages/ChangeLog.txt
Projects/AVRISP-MKII/AVRISP-MKII.c
Projects/Benito/Benito.c
Projects/Incomplete/MIDIToneGenerator/MIDIToneGenerator.c
Projects/Incomplete/StandaloneProgrammer/DiskDevice.c
Projects/Magstripe/Magstripe.c
Projects/TempDataLogger/TempDataLogger.c
Projects/USBtoSerial/USBtoSerial.c
Projects/Webserver/USBDeviceMode.c
Projects/XPLAINBridge/XPLAINBridge.c

index 32caffc..ceaeb89 100644 (file)
@@ -136,10 +136,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-       
-       if (!(Audio_Device_ConfigureEndpoints(&Microphone_Audio_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= Audio_Device_ConfigureEndpoints(&Microphone_Audio_Interface);
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 8587093..cf2eb2d 100644 (file)
@@ -188,10 +188,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-       
-       if (!(Audio_Device_ConfigureEndpoints(&Speaker_Audio_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= Audio_Device_ConfigureEndpoints(&Speaker_Audio_Interface);
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index ffbc12c..915c8fc 100644 (file)
@@ -175,13 +175,12 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial1_CDC_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial1_CDC_Interface);
+       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial2_CDC_Interface);
 
-       if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial2_CDC_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 8b51b76..4fe58a8 100644 (file)
@@ -113,12 +113,13 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(HID_Device_ConfigureEndpoints(&Generic_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Generic_HID_Interface);
 
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index e2804d6..622106f 100644 (file)
@@ -107,12 +107,13 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(HID_Device_ConfigureEndpoints(&Joystick_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Joystick_HID_Interface);
 
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 80f0ad9..8d85030 100644 (file)
@@ -107,12 +107,13 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
 
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 43634ea..6ba7ce3 100644 (file)
@@ -130,15 +130,14 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       
-       if (!(HID_Device_ConfigureEndpoints(&Mouse_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Mouse_HID_Interface);
 
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 04d4bdb..f627d55 100644 (file)
@@ -180,10 +180,13 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-       
-       if (!(MIDI_Device_ConfigureEndpoints(&Keyboard_MIDI_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= MIDI_Device_ConfigureEndpoints(&Keyboard_MIDI_Interface);
+
+       USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index b1ec7d3..a8f21f1 100644 (file)
@@ -110,10 +110,13 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
+
+       USB_Device_EnableSOFEvents();
 
-       if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 4ac5ebd..ba62130 100644 (file)
@@ -136,15 +136,14 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-
-       if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       bool ConfigSuccess = true;
 
-       if (!(HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
 
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 19ca013..6efdb99 100644 (file)
@@ -107,12 +107,13 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(HID_Device_ConfigureEndpoints(&Mouse_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Mouse_HID_Interface);
 
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 76c4906..d332b20 100644 (file)
@@ -123,10 +123,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(RNDIS_Device_ConfigureEndpoints(&Ethernet_RNDIS_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= RNDIS_Device_ConfigureEndpoints(&Ethernet_RNDIS_Interface);
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index c87b33c..1ee0b34 100644 (file)
@@ -153,10 +153,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 6dfdafb..86cdb4e 100644 (file)
@@ -164,15 +164,14 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Mouse_HID_Interface);
 
-       if (!(HID_Device_ConfigureEndpoints(&Mouse_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-         
        USB_Device_EnableSOFEvents();
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);   
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index f6ece61..644e957 100644 (file)
@@ -95,22 +95,16 @@ void EVENT_USB_Device_Disconnect(void)
 
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup Sideshow In and Out Endpoints */
-       if (!(Endpoint_ConfigureEndpoint(SIDESHOW_IN_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_IN, SIDESHOW_IO_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup Sideshow Data Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(SIDESHOW_IN_EPNUM,  EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   SIDESHOW_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(SIDESHOW_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   SIDESHOW_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
 
-       if (!(Endpoint_ConfigureEndpoint(SIDESHOW_OUT_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_OUT, SIDESHOW_IO_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 void EVENT_USB_Device_UnhandledControlRequest(void)
index e174aa9..94b8687 100644 (file)
@@ -118,29 +118,18 @@ void EVENT_USB_Device_Disconnect(void)
  */\r
 void EVENT_USB_Device_ConfigurationChanged(void)\r
 {\r
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+       bool ConfigSuccess = true;\r
 \r
        /* Setup TMC In, Out and Notification Endpoints */\r
-       if (!(Endpoint_ConfigureEndpoint(TMC_IN_EPNUM, EP_TYPE_BULK,\r
-                                            ENDPOINT_DIR_IN, TMC_IO_EPSIZE,\r
-                                        ENDPOINT_BANK_SINGLE)))\r
-       {\r
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
-       }\r
-\r
-       if (!(Endpoint_ConfigureEndpoint(TMC_OUT_EPNUM, EP_TYPE_BULK,\r
-                                            ENDPOINT_DIR_OUT, TMC_IO_EPSIZE,\r
-                                        ENDPOINT_BANK_SINGLE)))\r
-       {\r
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
-       }\r
-\r
-       if (!(Endpoint_ConfigureEndpoint(TMC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,\r
-                                            ENDPOINT_DIR_IN, TMC_NOTIFICATION_EPSIZE,\r
-                                        ENDPOINT_BANK_SINGLE)))\r
-       {\r
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
-       }\r
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(TMC_IN_EPNUM,  EP_TYPE_BULK, ENDPOINT_DIR_IN,\r
+                                                   TMC_IO_EPSIZE, ENDPOINT_BANK_SINGLE);\r
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(TMC_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,\r
+                                                   TMC_IO_EPSIZE, ENDPOINT_BANK_SINGLE);\r
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(TMC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,\r
+                                                   TMC_IO_EPSIZE, ENDPOINT_BANK_SINGLE);\r
+\r
+       /* Indicate endpoint configuration success or failure */\r
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);\r
 }\r
 \r
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific\r
index 6655a27..eb29f34 100644 (file)
@@ -110,16 +110,14 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup audio stream endpoint */
-       if (!(Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS,
-                                            ENDPOINT_DIR_IN, AUDIO_STREAM_EPSIZE,
-                                        ENDPOINT_BANK_DOUBLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup Audio Stream Endpoint */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS, ENDPOINT_DIR_IN,
+                                                   AUDIO_STREAM_EPSIZE, ENDPOINT_BANK_DOUBLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index f2a8867..2732afc 100644 (file)
@@ -137,16 +137,14 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup audio stream endpoint */
-       if (!(Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS,
-                                            ENDPOINT_DIR_OUT, AUDIO_STREAM_EPSIZE,
-                                        ENDPOINT_BANK_DOUBLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup Audio Stream Endpoint */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(AUDIO_STREAM_EPNUM, EP_TYPE_ISOCHRONOUS, ENDPOINT_DIR_OUT,
+                                                   AUDIO_STREAM_EPSIZE, ENDPOINT_BANK_DOUBLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index 29fd57f..84a3291 100644 (file)
@@ -119,57 +119,31 @@ void EVENT_USB_Device_Disconnect(void)
  *  of the USB device after enumeration - the device endpoints are configured and the CDC management tasks are started.
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
-{                                                         
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-
-       /* Setup CDC Notification, Rx and Tx Endpoints for the first CDC */
-       if (!(Endpoint_ConfigureEndpoint(CDC1_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       if (!(Endpoint_ConfigureEndpoint(CDC1_TX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       if (!(Endpoint_ConfigureEndpoint(CDC1_RX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       /* Setup CDC Notification, Rx and Tx Endpoints for the second CDC */
-       if (!(Endpoint_ConfigureEndpoint(CDC2_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       if (!(Endpoint_ConfigureEndpoint(CDC2_TX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       if (!(Endpoint_ConfigureEndpoint(CDC2_RX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
+{
+       bool ConfigSuccess = true;
+
+       /* Setup first CDC Interface's Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC1_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Setup second CDC Interface's Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC2_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
+
        /* Reset line encoding baud rates so that the host knows to send new values */
        LineEncoding1.BaudRateBPS = 0;
        LineEncoding2.BaudRateBPS = 0;
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index 9929358..5146efd 100644 (file)
@@ -95,24 +95,16 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup Generic IN Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(GENERIC_IN_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, GENERIC_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       /* Setup Generic OUT Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(GENERIC_OUT_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_OUT, GENERIC_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup HID Report Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(GENERIC_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   GENERIC_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(GENERIC_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
+                                                   GENERIC_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index 561914a..08c4892 100644 (file)
@@ -93,16 +93,14 @@ void EVENT_USB_Device_Disconnect(void)
  */ 
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup Joystick Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(JOYSTICK_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, JOYSTICK_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup HID Report Endpoint */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(JOYSTICK_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   JOYSTICK_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index 4963c7b..a96d4cc 100644 (file)
@@ -160,7 +160,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | KEYBOARD_EPNUM),
+                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | KEYBOARD_IN_EPNUM),
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = KEYBOARD_EPSIZE,
                        .PollingIntervalMS      = 0x0A
@@ -170,7 +170,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor =
                {
                        .Header                 = {.Size = sizeof(USB_Descriptor_Endpoint_t), .Type = DTYPE_Endpoint},
 
-                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | KEYBOARD_LEDS_EPNUM),
+                       .EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | KEYBOARD_OUT_EPNUM),
                        .Attributes             = (EP_TYPE_INTERRUPT | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA),
                        .EndpointSize           = KEYBOARD_EPSIZE,
                        .PollingIntervalMS      = 0x0A
index d4b9ebf..126b71b 100644 (file)
                                        
        /* Macros: */
                /** Endpoint number of the Keyboard HID reporting IN endpoint. */
-               #define KEYBOARD_EPNUM               1
+               #define KEYBOARD_IN_EPNUM         1
 
                /** Endpoint number of the Keyboard HID reporting OUT endpoint. */
-               #define KEYBOARD_LEDS_EPNUM          2
+               #define KEYBOARD_OUT_EPNUM        2
                
                /** Size in bytes of the Keyboard HID reporting IN and OUT endpoints. */                
-               #define KEYBOARD_EPSIZE              8
+               #define KEYBOARD_EPSIZE           8
 
                /** Descriptor header type value, to indicate a HID class HID descriptor. */
                #define DTYPE_HID                 0x21
index 71b5861..12bf5ba 100644 (file)
@@ -114,26 +114,19 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {      
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup Keyboard Keycode Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(KEYBOARD_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, KEYBOARD_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       /* Setup Keyboard LED Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(KEYBOARD_LEDS_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_OUT, KEYBOARD_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
+       /* Setup HID Report Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   KEYBOARD_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
+                                                   KEYBOARD_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Turn on Start-of-Frame events for tracking HID report period exiry */
        USB_Device_EnableSOFEvents();
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); 
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
@@ -332,7 +325,7 @@ void SendNextReport(void)
        }
        
        /* Select the Keyboard Report Endpoint */
-       Endpoint_SelectEndpoint(KEYBOARD_EPNUM);
+       Endpoint_SelectEndpoint(KEYBOARD_IN_EPNUM);
 
        /* Check if Keyboard Endpoint Ready for Read/Write and if we should send a new report */
        if (Endpoint_IsReadWriteAllowed() && SendReport)
@@ -352,7 +345,7 @@ void SendNextReport(void)
 void ReceiveNextReport(void)
 {
        /* Select the Keyboard LED Report Endpoint */
-       Endpoint_SelectEndpoint(KEYBOARD_LEDS_EPNUM);
+       Endpoint_SelectEndpoint(KEYBOARD_OUT_EPNUM);
 
        /* Check if Keyboard LED Endpoint contains a packet */
        if (Endpoint_IsOUTReceived())
index 03d6799..687dc31 100644 (file)
@@ -101,32 +101,20 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup Keyboard Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, HID_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       /* Setup Keyboard LED Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_OUT, HID_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup Keyboard HID Report Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   HID_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(KEYBOARD_OUT_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_OUT,
+                                                   HID_EPSIZE, ENDPOINT_BANK_SINGLE);
 
-       /* Setup Mouse Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, HID_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup Mouse HID Report Endpoint */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_IN_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   HID_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); 
 }
 
 /** Event handler for the USB_UnhandledControlPacket event. This is used to catch standard and class specific
index a9843ed..5570dd1 100644 (file)
@@ -91,23 +91,16 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup MIDI stream endpoints */
-       if (!(Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_OUT, MIDI_STREAM_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }       
-       
-       if (!(Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_IN, MIDI_STREAM_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup MIDI Data Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(MIDI_STREAM_IN_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   MIDI_STREAM_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); 
 }
 
 /** Task to handle the generation of MIDI note change events in response to presses of the board joystick, and send them
index 5b0ab17..4b0b582 100644 (file)
@@ -108,23 +108,16 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup Mass Storage In and Out Endpoints */
-       if (!(Endpoint_ConfigureEndpoint(MASS_STORAGE_IN_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_IN, MASS_STORAGE_IO_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       if (!(Endpoint_ConfigureEndpoint(MASS_STORAGE_OUT_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_OUT, MASS_STORAGE_IO_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }                                                          
+       /* Setup Mass Storage Data Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(MASS_STORAGE_IN_EPNUM,  EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   MASS_STORAGE_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(MASS_STORAGE_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   MASS_STORAGE_IO_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);                                                    
 }
 
 /** Event handler for the USB_UnhandledControlPacket event. This is used to catch standard and class specific
index 97aa55f..1cc6d88 100644 (file)
@@ -113,18 +113,17 @@ void EVENT_USB_Device_Disconnect(void)
  */ 
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-       
-       /* Setup Mouse Report Endpoint */
-       if (!(Endpoint_ConfigureEndpoint(MOUSE_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, MOUSE_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       bool ConfigSuccess = true;
 
+       /* Setup HID Report Endpoint */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(MOUSE_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   MOUSE_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Turn on Start-of-Frame events for tracking HID report period exiry */
        USB_Device_EnableSOFEvents();
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); 
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index d11829d..6b3e2c4 100644 (file)
@@ -98,30 +98,18 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-
-       /* Setup CDC Notification, Rx and Tx Endpoints */
-       if (!(Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }                                                          
-
-       if (!(Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-
-       if (!(Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       bool ConfigSuccess = true;
+
+       /* Setup RNDIS Data Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index 64b3a2c..633cdcf 100644 (file)
@@ -105,33 +105,21 @@ void EVENT_USB_Device_Disconnect(void)
  */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
+
+       /* Setup CDC Data Endpoints */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT, ENDPOINT_DIR_IN,
+                                                   CDC_NOTIFICATION_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   CDC_TXRX_EPSIZE, ENDPOINT_BANK_SINGLE);
 
-       /* Setup CDC Notification, Rx and Tx Endpoints */
-       if (!(Endpoint_ConfigureEndpoint(CDC_NOTIFICATION_EPNUM, EP_TYPE_INTERRUPT,
-                                            ENDPOINT_DIR_IN, CDC_NOTIFICATION_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       if (!(Endpoint_ConfigureEndpoint(CDC_TX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_IN, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
-       if (!(Endpoint_ConfigureEndpoint(CDC_RX_EPNUM, EP_TYPE_BULK,
-                                            ENDPOINT_DIR_OUT, CDC_TXRX_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
-       
        /* Reset line encoding baud rate so that the host knows to send new values */
        LineEncoding.BaudRateBPS = 0;
+
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); 
 }
 
 /** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
index 4eecdc5..ee3f9d6 100644 (file)
 uint8_t USB_ControlEndpointSize = ENDPOINT_CONTROLEP_DEFAULT_SIZE;
 #endif
 
-uint8_t Endpoint_BytesToEPSizeMaskDynamic(const uint16_t Size)
-{
-       return Endpoint_BytesToEPSizeMask(Size);
-}
-
 bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
                                     const uint8_t UECFG0XData,
                                     const uint8_t UECFG1XData)
index eb4b616..48e6605 100644 (file)
                #if !defined(__INCLUDE_FROM_USB_DRIVER)
                        #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.
                #endif
-               
+
+               #if !defined(NO_STREAM_CALLBACKS) || defined(__DOXYGEN__)
+                       #define __CALLBACK_PARAM     , StreamCallbackPtr_t Callback
+               #else
+                       #define __CALLBACK_PARAM
+               #endif
+
+       /* Private Interface - For use in library only: */
+       #if !defined(__DOXYGEN__)
+               /* Macros: */
+                       #define _ENDPOINT_GET_MAXSIZE(EPIndex)         _ENDPOINT_GET_MAXSIZE2(ENDPOINT_DETAILS_EP ## EPIndex)
+                       #define _ENDPOINT_GET_MAXSIZE2(EPDetails)      _ENDPOINT_GET_MAXSIZE3(EPDetails)
+                       #define _ENDPOINT_GET_MAXSIZE3(MaxSize, DB)    (MaxSize)
+
+                       #define _ENDPOINT_GET_DOUBLEBANK(EPIndex)      _ENDPOINT_GET_DOUBLEBANK2(ENDPOINT_DETAILS_EP ## EPIndex)
+                       #define _ENDPOINT_GET_DOUBLEBANK2(EPDetails)   _ENDPOINT_GET_DOUBLEBANK3(EPDetails)
+                       #define _ENDPOINT_GET_DOUBLEBANK3(MaxSize, DB) (DB)
+                       
+                       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
+                               #define ENDPOINT_DETAILS_EP0               64,  true
+                               #define ENDPOINT_DETAILS_EP1               256, true
+                               #define ENDPOINT_DETAILS_EP2               64,  true
+                               #define ENDPOINT_DETAILS_EP3               64,  true
+                               #define ENDPOINT_DETAILS_EP4               64,  true
+                               #define ENDPOINT_DETAILS_EP5               64,  true
+                               #define ENDPOINT_DETAILS_EP6               64,  true
+                       #else
+                               #define ENDPOINT_DETAILS_EP0               64,  true
+                               #define ENDPOINT_DETAILS_EP1               64,  false
+                               #define ENDPOINT_DETAILS_EP2               64,  false
+                               #define ENDPOINT_DETAILS_EP3               64,  true
+                               #define ENDPOINT_DETAILS_EP4               64,  true                    
+                       #endif
+
+               /* Inline Functions: */
+                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST
+                                                                                              ATTR_ALWAYS_INLINE;
+                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
+                       {
+                               uint8_t  MaskVal    = 0;
+                               uint16_t CheckBytes = 8;
+                               
+                               while (CheckBytes < Bytes)
+                               {
+                                       MaskVal++;
+                                       CheckBytes <<= 1;
+                               }
+                               
+                               return (MaskVal << EPSIZE0);
+                       }
+
+               /* Function Prototypes: */
+                       void Endpoint_ClearEndpoints(void);
+                       bool Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
+                                                           const uint8_t UECFG0XData,
+                                                           const uint8_t UECFG1XData);
+
+       #endif
+       
        /* Public Interface - May be used in end-application: */
                /* Macros: */
                        /** Endpoint data direction mask for \ref Endpoint_ConfigureEndpoint(). This indicates that the endpoint
                                                                            */
                        };
 
-               /* Inline Functions: */
+               /* Inline Functions: */                 
+                       /** Configures the specified endpoint number with the given endpoint type, direction, bank size
+                        *  and banking mode. Endpoints should be allocated in ascending order by their address in the
+                        *  device (i.e. endpoint 1 should be configured before endpoint 2 and so on) to prevent fragmentation
+                        *  of the USB FIFO memory.
+                        *
+                        *  The endpoint type may be one of the EP_TYPE_* macros listed in LowLevel.h and the direction
+                        *  may be either \ref ENDPOINT_DIR_OUT or \ref ENDPOINT_DIR_IN.
+                        *
+                        *  The bank size must indicate the maximum packet size that the endpoint can handle. Different
+                        *  endpoint numbers can handle different maximum packet sizes - refer to the chosen USB AVR's
+                        *  datasheet to determine the maximum bank size for each endpoint.
+                        *
+                        *  The banking mode may be either \ref ENDPOINT_BANK_SINGLE or \ref ENDPOINT_BANK_DOUBLE.
+                        *
+                        *  \note The default control endpoint should not be manually configured by the user application, as 
+                        *        it is automatically configured by the library internally.
+                        *        \n\n
+                        *
+                        *  \note This routine will select the specified endpoint, and the endpoint will remain selected
+                        *        once the routine completes regardless of if the endpoint configuration succeeds.
+                        *
+                        *  \return Boolean true if the configuration succeeded, false otherwise.
+                        */
+                       static inline bool Endpoint_ConfigureEndpoint(const uint8_t Number,
+                                                                     const uint8_t Type,
+                                                                     const uint8_t Direction,
+                                                                     const uint16_t Size,
+                                                                     const uint8_t Banks) ATTR_ALWAYS_INLINE;
+                       static inline bool Endpoint_ConfigureEndpoint(const uint8_t Number,
+                                                                     const uint8_t Type,
+                                                                     const uint8_t Direction,
+                                                                     const uint16_t Size,
+                                                                     const uint8_t Banks)
+                       {
+                               return Endpoint_ConfigureEndpoint_Prv(Number, (((Type) << EPTYPE0) | (Direction)),
+                                                                     ((1 << ALLOC) | Banks | Endpoint_BytesToEPSizeMask(Size)));
+                       }
+
                        /** Indicates the number of bytes currently stored in the current endpoint's selected bank.
                         *
                         *  \note The return width of this function may differ, depending on the maximum endpoint bank size
                        #endif
 
                /* Function Prototypes: */
-                       #if !defined(NO_STREAM_CALLBACKS) || defined(__DOXYGEN__)
-                               #define __CALLBACK_PARAM     , StreamCallbackPtr_t Callback
-                       #else
-                               #define __CALLBACK_PARAM
-                       #endif
-               
-                       /** Configures the specified endpoint number with the given endpoint type, direction, bank size
-                        *  and banking mode. Endpoints should be allocated in ascending order by their address in the
-                        *  device (i.e. endpoint 1 should be configured before endpoint 2 and so on) to prevent fragmentation
-                        *  of the USB FIFO memory.
-                        *
-                        *  The endpoint type may be one of the EP_TYPE_* macros listed in LowLevel.h and the direction
-                        *  may be either \ref ENDPOINT_DIR_OUT or \ref ENDPOINT_DIR_IN.
-                        *
-                        *  The bank size must indicate the maximum packet size that the endpoint can handle. Different
-                        *  endpoint numbers can handle different maximum packet sizes - refer to the chosen USB AVR's
-                        *  datasheet to determine the maximum bank size for each endpoint.
-                        *
-                        *  The banking mode may be either \ref ENDPOINT_BANK_SINGLE or \ref ENDPOINT_BANK_DOUBLE.
-                        *
-                        *  \note The default control endpoint should not be manually configured by the user application, as 
-                        *        it is automatically configured by the library internally.
-                        *        \n\n
-                        *
-                        *  \note This routine will select the specified endpoint, and the endpoint will remain selected
-                        *        once the routine completes regardless of if the endpoint configuration succeeds.
-                        *
-                        *  \return Boolean true if the configuration succeeded, false otherwise.
-                        */
-                       bool Endpoint_ConfigureEndpoint(const uint8_t  Number,
-                                                       const uint8_t Type,
-                                                       const uint8_t Direction,
-                                                       const uint16_t Size,
-                                                       const uint8_t Banks);
-
                        /** Spin-loops until the currently selected non-control endpoint is ready for the next packet of data
                         *  to be read or written to it.
                         *
                        uint8_t Endpoint_Read_Control_EStream_BE(void* Buffer,
                                                                 uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);
 
-       /* Private Interface - For use in library only: */
-       #if !defined(__DOXYGEN__)
-               /* Macros: */
-                       #define _ENDPOINT_GET_MAXSIZE(n)               _ENDPOINT_GET_MAXSIZE2(ENDPOINT_DETAILS_EP ## n)
-                       #define _ENDPOINT_GET_MAXSIZE2(details)        _ENDPOINT_GET_MAXSIZE3(details)
-                       #define _ENDPOINT_GET_MAXSIZE3(maxsize, db)    maxsize
-
-                       #define _ENDPOINT_GET_DOUBLEBANK(n)            _ENDPOINT_GET_DOUBLEBANK2(ENDPOINT_DETAILS_EP ## n)
-                       #define _ENDPOINT_GET_DOUBLEBANK2(details)     _ENDPOINT_GET_DOUBLEBANK3(details)
-                       #define _ENDPOINT_GET_DOUBLEBANK3(maxsize, db) db
-                       
-                       #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
-                               #define ENDPOINT_DETAILS_EP0               64,  true
-                               #define ENDPOINT_DETAILS_EP1               256, true
-                               #define ENDPOINT_DETAILS_EP2               64,  true
-                               #define ENDPOINT_DETAILS_EP3               64,  true
-                               #define ENDPOINT_DETAILS_EP4               64,  true
-                               #define ENDPOINT_DETAILS_EP5               64,  true
-                               #define ENDPOINT_DETAILS_EP6               64,  true
-                       #else
-                               #define ENDPOINT_DETAILS_EP0               64,  true
-                               #define ENDPOINT_DETAILS_EP1               64,  false
-                               #define ENDPOINT_DETAILS_EP2               64,  false
-                               #define ENDPOINT_DETAILS_EP3               64,  true
-                               #define ENDPOINT_DETAILS_EP4               64,  true                    
-                       #endif
-
-                       #define Endpoint_ConfigureEndpoint(Number, Type, Direction, Size, Banks)                           \
-                                            (__builtin_constant_p(Size) ? Endpoint_ConfigureEndpointStatic((Number),      \
-                                                                                                           (Type),        \
-                                                                                                           (Direction),   \
-                                                                                                           Size, Banks) : \
-                                                                          Endpoint_ConfigureEndpointDynamic((Number),     \
-                                                                                                            (Type),       \
-                                                                                                            (Direction),  \
-                                                                                                            Size, Banks))
-
-               /* Function Prototypes: */
-                       void    Endpoint_ClearEndpoints(void);
-                       uint8_t Endpoint_BytesToEPSizeMaskDynamic(const uint16_t Size);
-                       bool    Endpoint_ConfigureEndpoint_Prv(const uint8_t Number,
-                                                              const uint8_t UECFG0XData,
-                                                              const uint8_t UECFG1XData);                      
-
-               /* Inline Functions: */
-                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;
-                       static inline uint8_t Endpoint_BytesToEPSizeMask(const uint16_t Bytes)
-                       {
-                               uint8_t  MaskVal    = 0;
-                               uint16_t CheckBytes = 8;
-                               
-                               while (CheckBytes < Bytes)
-                               {
-                                       MaskVal++;
-                                       CheckBytes <<= 1;
-                               }
-                               
-                               return (MaskVal << EPSIZE0);
-                       }
-                       
-                       static inline bool Endpoint_ConfigureEndpointStatic(const uint8_t Number,
-                                                                           const uint8_t Type,
-                                                                           const uint8_t Direction,
-                                                                           const uint16_t Size,
-                                                                           const uint8_t Banks)
-                       {
-                               return Endpoint_ConfigureEndpoint_Prv(Number, (((Type) << EPTYPE0) | (Direction)),
-                                                                     ((1 << ALLOC) | Banks | Endpoint_BytesToEPSizeMask(Size)));
-                       }
-
-                       static inline bool Endpoint_ConfigureEndpointDynamic(const uint8_t Number,
-                                                                            const uint8_t Type,
-                                                                            const uint8_t Direction,
-                                                                            const uint16_t Size,
-                                                                            const uint8_t Banks)
-                       {
-                               return Endpoint_ConfigureEndpoint_Prv(Number, (((Type) << EPTYPE0) | (Direction)),
-                                                                     ((1 << ALLOC) | Banks | Endpoint_BytesToEPSizeMaskDynamic(Size)));
-                       }
-       #endif
-
        /* Disable C linkage for C++ Compilers: */
                #if defined(__cplusplus)
                        }
index 0b07cbb..868a93a 100644 (file)
                        #error Do not include this file directly. Include LUFA/Drivers/USB/USB.h instead.
                #endif
 
-       /* Private Interface - For use in library only: */
-       #if !defined(__DOXYGEN__)
-               /* Macros: */
-                       #if !defined(ENDPOINT_CONTROLEP) && !defined(__DOXYGEN__)
-                               #define ENDPOINT_CONTROLEP          0
-                       #endif
-       #endif
+               #if !defined(NO_STREAM_CALLBACKS) || defined(__DOXYGEN__)
+                       #define __CALLBACK_PARAM     , StreamCallbackPtr_t Callback
+               #else
+                       #define __CALLBACK_PARAM
+               #endif
                
        /* Public Interface - May be used in end-application: */
                /* Macros: */
                        extern uint8_t USB_ControlPipeSize;
 
                /* Function Prototypes: */
-                       #if !defined(NO_STREAM_CALLBACKS) || defined(__DOXYGEN__)
-                               #define __CALLBACK_PARAM     , StreamCallbackPtr_t Callback
-                       #else
-                               #define __CALLBACK_PARAM
-                       #endif
-
                        /** Configures the specified pipe number with the given pipe type, token, target endpoint number in the
                         *  attached device, bank size and banking mode. Pipes should be allocated in ascending order by their
                         *  address in the device (i.e. pipe 1 should be configured before pipe 2 and so on) to prevent fragmentation
                                                     __CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);
 
        /* Private Interface - For use in library only: */
-       #if !defined(__DOXYGEN__)                       
-               /* Function Prototypes: */
-                       void Pipe_ClearPipes(void);
-
+       #if !defined(__DOXYGEN__)
+               /* Macros: */
+                       #if !defined(ENDPOINT_CONTROLEP)
+                               #define ENDPOINT_CONTROLEP          0
+                       #endif
+                       
                /* Inline Functions: */
                        static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;
                        static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)
                                return (MaskVal << EPSIZE0);
                        }
 
+               /* Function Prototypes: */
+                       void Pipe_ClearPipes(void);
        #endif
 
        /* Disable C linkage for C++ Compilers: */
index e76b344..bdbfd4a 100644 (file)
@@ -7,7 +7,11 @@
  /** \page Page_ChangeLog Project Changelog
   *
   *  \section Sec_ChangeLogXXXXXX Version XXXXXX
-  *  There is currently no changelog information for this release.
+  *  <b>Changed:</b>
+  *  - Removed complicated logic for the Endpoint_ConfigureEndpoint() function to use inlined or function called versions
+  *    depending of if the given bank size is a compile time constant, as the compiler does a better job of optimizing
+  *    with basic code
+  *  - Changed over all device demos to use a clearer algorithm for the configuring of the application's endpoints
   *
   *  \section Sec_ChangeLog100807 Version 100807
   *  <b>New:</b>
index 83b39ef..8f27a9b 100644 (file)
@@ -90,25 +90,19 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       /* Indicate USB connected and ready */
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       /* Setup AVRISP data Endpoints */
-       if (!(Endpoint_ConfigureEndpoint(AVRISP_DATA_OUT_EPNUM, EP_TYPE_BULK,
-                                        ENDPOINT_DIR_OUT, AVRISP_DATA_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       /* Setup AVRISP Data Endpoint(s) */
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(AVRISP_DATA_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                   AVRISP_DATA_EPSIZE, ENDPOINT_BANK_SINGLE);
 
        #if defined(LIBUSB_DRIVER_COMPAT)
-       if (!(Endpoint_ConfigureEndpoint(AVRISP_DATA_IN_EPNUM, EP_TYPE_BULK,
-                                        ENDPOINT_DIR_IN, AVRISP_DATA_EPSIZE,
-                                        ENDPOINT_BANK_SINGLE)))
-       {
-               LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-       }
+       ConfigSuccess &= Endpoint_ConfigureEndpoint(AVRISP_DATA_IN_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                   AVRISP_DATA_EPSIZE, ENDPOINT_BANK_SINGLE);
        #endif
+       
+       /* Indicate endpoint configuration success or failure */
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR); 
 }
 
 /** Processes incoming V2 Protocol commands from the host, returning a response when required. */
index 88005ee..a9afda4 100644 (file)
@@ -190,11 +190,13 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
+
        PulseMSRemaining.PingPongLEDPulse = 0;
-       LEDs_SetAllLEDs(LEDS_NO_LEDS);
 
-       if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_ERROR);
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDS_NO_LEDS : LEDMASK_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index ba498c9..ecb87a2 100644 (file)
@@ -173,10 +173,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
-       
-       if (!(MIDI_Device_ConfigureEndpoints(&Keyboard_MIDI_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= MIDI_Device_ConfigureEndpoints(&Keyboard_MIDI_Interface);
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 516917c..3a0ff53 100644 (file)
@@ -73,10 +73,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= MS_Device_ConfigureEndpoints(&DiskDevice_MS_Interface);
 
-       if (!(MS_Device_ConfigureEndpoints(&DiskDevice_MS_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index 4c0d7a1..afc0b93 100644 (file)
@@ -145,7 +145,7 @@ void ReadMagstripeData(void)
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
        HID_Device_ConfigureEndpoints(&Keyboard_HID_Interface);
-       
+
        USB_Device_EnableSOFEvents();
 }
 
index d26871b..ee9ca18 100644 (file)
@@ -237,13 +237,12 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
+       ConfigSuccess &= HID_Device_ConfigureEndpoints(&Generic_HID_Interface);
 
-       if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
-         
-       if (!(HID_Device_ConfigureEndpoints(&Generic_HID_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);   
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index c2ecc7c..b50537e 100644 (file)
@@ -139,10 +139,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
 
-       if (!(CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
+
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index d6b76ec..58f7edc 100644 (file)
@@ -85,10 +85,11 @@ void EVENT_USB_Device_Disconnect(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       LEDs_SetAllLEDs(LEDMASK_USB_READY);
+       bool ConfigSuccess = true;
+
+       ConfigSuccess &= MS_Device_ConfigureEndpoints(&Disk_MS_Interface);
 
-       if (!(MS_Device_ConfigureEndpoints(&Disk_MS_Interface)))
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */
index f02fe9b..ded80c2 100644 (file)
@@ -172,12 +172,12 @@ void SetupHardware(void)
 /** Event handler for the library USB Configuration Changed event. */
 void EVENT_USB_Device_ConfigurationChanged(void)
 {
-       bool EndpointConfigSuccess = true;
+       bool ConfigSuccess = true;
 
        /* Configure the device endpoints according to the selected mode */
        if (CurrentFirmwareMode == MODE_USART_BRIDGE)
        {
-               EndpointConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
+               ConfigSuccess &= CDC_Device_ConfigureEndpoints(&VirtualSerial_CDC_Interface);
 
                /* Configure the UART flush timer - run at Fcpu/1024 for maximum interval before overflow */
                TCCR0B = ((1 << CS02) | (1 << CS00));
@@ -191,24 +191,19 @@ void EVENT_USB_Device_ConfigurationChanged(void)
        }
        else
        {
-               EndpointConfigSuccess &= Endpoint_ConfigureEndpoint(AVRISP_DATA_OUT_EPNUM, EP_TYPE_BULK,
-                                                                                                   ENDPOINT_DIR_OUT, AVRISP_DATA_EPSIZE,
-                                                                                                   ENDPOINT_BANK_SINGLE);
+               ConfigSuccess &= Endpoint_ConfigureEndpoint(AVRISP_DATA_OUT_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_OUT,
+                                                           AVRISP_DATA_EPSIZE, ENDPOINT_BANK_SINGLE);
 
                #if defined(LIBUSB_DRIVER_COMPAT)
-               EndpointConfigSuccess &= Endpoint_ConfigureEndpoint(AVRISP_DATA_IN_EPNUM, EP_TYPE_BULK,
-                                                                   ENDPOINT_DIR_IN, AVRISP_DATA_EPSIZE,
-                                                                   ENDPOINT_BANK_SINGLE);
+               ConfigSuccess &= Endpoint_ConfigureEndpoint(AVRISP_DATA_IN_EPNUM, EP_TYPE_BULK, ENDPOINT_DIR_IN,
+                                                           AVRISP_DATA_EPSIZE, ENDPOINT_BANK_SINGLE);
                #endif
        
                /* Configure the V2 protocol packet handler */
                V2Protocol_Init();
        }
 
-       if (EndpointConfigSuccess)
-         LEDs_SetAllLEDs(LEDMASK_USB_READY);
-       else
-         LEDs_SetAllLEDs(LEDMASK_USB_ERROR);
+       LEDs_SetAllLEDs(ConfigSuccess ? LEDMASK_USB_READY : LEDMASK_USB_ERROR);
 }
 
 /** Event handler for the library USB Unhandled Control Request event. */