From 9464fa168e7510634224a88fb7f571d784bcd827 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Wed, 13 Oct 2010 21:05:55 +0000
Subject: [PATCH] Renamed ENDPOINT_DOUBLEBANK_SUPPORTED() to
 ENDPOINT_BANKS_SUPPORTED() and changed it to return the maximum number of
 supported banks for the given endpoint.

---
 LUFA/Drivers/USB/Class/Device/CDC.h    |  6 ++---
 LUFA/Drivers/USB/LowLevel/Endpoint.h   | 36 +++++++++++++-------------
 LUFA/ManPages/ChangeLog.txt            |  2 ++
 LUFA/ManPages/MigrationInformation.txt |  3 +++
 4 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/LUFA/Drivers/USB/Class/Device/CDC.h b/LUFA/Drivers/USB/Class/Device/CDC.h
index 956ff28de..2e66e9fa7 100644
--- a/LUFA/Drivers/USB/Class/Device/CDC.h
+++ b/LUFA/Drivers/USB/Class/Device/CDC.h
@@ -211,9 +211,9 @@
 			 *  \pre This function must only be called when the Device state machine is in the \ref DEVICE_STATE_Configured state or
 			 *       the call will fail.
 			 *
-			 *  \param[in,out]   CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
-			 *  \param[in]       Data              Pointer to the string to send to the host.
-			 *  \param[in]       Length            Size in bytes of the string to send to the host.
+			 *  \param[in,out] CDCInterfaceInfo  Pointer to a structure containing a CDC Class configuration and state.
+			 *  \param[in]     Data              Pointer to the string to send to the host.
+			 *  \param[in]     Length            Size in bytes of the string to send to the host.
 			 *
 			 *  \return A value from the \ref Endpoint_Stream_RW_ErrorCodes_t enum.
 			 */
diff --git a/LUFA/Drivers/USB/LowLevel/Endpoint.h b/LUFA/Drivers/USB/LowLevel/Endpoint.h
index 25ed9bad9..d75990391 100644
--- a/LUFA/Drivers/USB/LowLevel/Endpoint.h
+++ b/LUFA/Drivers/USB/LowLevel/Endpoint.h
@@ -93,30 +93,30 @@
 		/* 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_MAXSIZE3(MaxSize, Banks) (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)
+			#define _ENDPOINT_GET_BANKS(EPIndex)           _ENDPOINT_GET_BANKS2(ENDPOINT_DETAILS_EP ## EPIndex)
+			#define _ENDPOINT_GET_BANKS2(EPDetails)        _ENDPOINT_GET_BANKS3(EPDetails)
+			#define _ENDPOINT_GET_BANKS3(MaxSize, Banks)   (Banks)
 
 			#if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR)
 				#define ENDPOINT_DETAILS_MAXEP             7
 
-				#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
+				#define ENDPOINT_DETAILS_EP0               64,  2
+				#define ENDPOINT_DETAILS_EP1               256, 2
+				#define ENDPOINT_DETAILS_EP2               64,  2
+				#define ENDPOINT_DETAILS_EP3               64,  2
+				#define ENDPOINT_DETAILS_EP4               64,  2
+				#define ENDPOINT_DETAILS_EP5               64,  2
+				#define ENDPOINT_DETAILS_EP6               64,  2
 			#else
 				#define ENDPOINT_DETAILS_MAXEP             5
 
-				#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
+				#define ENDPOINT_DETAILS_EP0               64,  2
+				#define ENDPOINT_DETAILS_EP1               64,  1
+				#define ENDPOINT_DETAILS_EP2               64,  1
+				#define ENDPOINT_DETAILS_EP3               64,  2
+				#define ENDPOINT_DETAILS_EP4               64,  2
 			#endif
 
 		/* Inline Functions: */
@@ -203,11 +203,11 @@
 			 */
 			#define ENDPOINT_MAX_SIZE(EPIndex)              _ENDPOINT_GET_MAXSIZE(EPIndex)
 
-			/** Indicates if the given endpoint supports double banking.
+			/** Indicates the total number of banks supported by the given endpoint.
 			 *
 			 *  \param[in] EPIndex  Endpoint number, a value between 0 and (ENDPOINT_TOTAL_ENDPOINTS - 1)
 			 */
-			#define ENDPOINT_DOUBLEBANK_SUPPORTED(EPIndex)  _ENDPOINT_GET_DOUBLEBANK(EPIndex)
+			#define ENDPOINT_BANKS_SUPPORTED(EPIndex)       _ENDPOINT_GET_BANKS(EPIndex)
 
 			#if !defined(CONTROL_ONLY_DEVICE) || defined(__DOXYGEN__)
 				/** Total number of endpoints (including the default control endpoint at address 0) which may
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 68e3826f3..11ecdc83a 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -48,6 +48,8 @@
   *  - Changed default value for the reset polarity parameter in the AVRISP-MKII project so that it defaults to active low drive
   *  - Changed configuration descriptor parser for all host mode projects and class drivers to ensure better compatibility with devices
   *  - Moved the USB mode specifier constants into a new enum, so that they are semantically related to one another
+  *  - Renamed ENDPOINT_DOUBLEBANK_SUPPORTED() to ENDPOINT_BANKS_SUPPORTED() and changed it to return the maximum number of supported banks for
+  *    the given endpoint
   *
   *  <b>Fixed:</b>
   *  - Fixed USB_GetHIDReportItemInfo() function modifying the given report item's data when the report item does not exist
diff --git a/LUFA/ManPages/MigrationInformation.txt b/LUFA/ManPages/MigrationInformation.txt
index 474e9f4c7..0ab6a6f0f 100644
--- a/LUFA/ManPages/MigrationInformation.txt
+++ b/LUFA/ManPages/MigrationInformation.txt
@@ -31,6 +31,9 @@
  *      eliminate any casting of descriptor pointers to a non-const pointer.
  *    - The names of the class specific descriptor type defines in the USB Class drivers have changed - refer to the driver documentation
  *      for each class driver for the new class specific descriptor type names.
+ *    - The ENDPOINT_DOUBLEBANK_SUPPORTED() macro is has been renamed \ref ENDPOINT_BANKS_SUPPORTED() and now returns the total number of
+ *      banks supported by the given endpoint. Existing code should switch to the new naming scheme, and test that the return value of the
+ *      macro is equal to or greated than 2 to regain the previous functionality.
  *
  *  <b>Host Mode</b>
  *    - Pipes MUST be allocated in ascending order to ensure that bank corruption does not occur. Ensure that your user application
-- 
GitLab