From 417d34385c9568f04e4cbbf5cc2444981815fbe0 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Sun, 18 Feb 2018 17:49:50 +1100
Subject: [PATCH] Ensure USE_INTERNAL_SERIAL is set to NO_DESCRIPTOR if
 internal serial is disabled.

---
 LUFA/DoxygenPages/ChangeLog.txt            |  4 ++++
 LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h   | 13 +++++++------
 LUFA/Drivers/USB/Core/UC3/Device_UC3.h     |  3 ++-
 LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h | 13 +++++++------
 4 files changed, 20 insertions(+), 13 deletions(-)

diff --git a/LUFA/DoxygenPages/ChangeLog.txt b/LUFA/DoxygenPages/ChangeLog.txt
index 147cacc36..0370ed9c8 100644
--- a/LUFA/DoxygenPages/ChangeLog.txt
+++ b/LUFA/DoxygenPages/ChangeLog.txt
@@ -7,6 +7,10 @@
  /** \page Page_ChangeLog Project Changelog
   *
   *  \section Sec_ChangeLogXXXXXX Version XXXXXX
+  *  <b>New:</b>
+  *  - Core:
+  *   - The USE_INTERNAL_SERIAL definition can now be overridden by the user to a custom string index (thanks to Nicohood)
+  *
   *  <b>Fixed:</b>
   *  - Core:
   *   - Fixed DeviceUsesOUTPipe flag not being set correctly in the HID host class driver (thanks to Wolfgang Schnerring)
diff --git a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h
index 6b5c3199f..43a3d6a72 100644
--- a/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h
+++ b/LUFA/Drivers/USB/Core/AVR8/Device_AVR8.h
@@ -114,23 +114,24 @@
 				 *  number for the device.
 				 */
 				#ifndef USE_INTERNAL_SERIAL
-				#define USE_INTERNAL_SERIAL            0xDC
+					#define USE_INTERNAL_SERIAL         0xDC
 				#endif
 
 				/** Length of the device's unique internal serial number, in bits, if present on the selected microcontroller
 				 *  model.
 				 */
-				#define INTERNAL_SERIAL_LENGTH_BITS    80
+				#define INTERNAL_SERIAL_LENGTH_BITS     80
 
 				/** Start address of the internal serial number, in the appropriate address space, if present on the selected microcontroller
 				 *  model.
 				 */
-				#define INTERNAL_SERIAL_START_ADDRESS  0x0E
+				#define INTERNAL_SERIAL_START_ADDRESS   0x0E
 			#else
-				#define USE_INTERNAL_SERIAL            NO_DESCRIPTOR
+				#undef	USE_INTERNAL_SERIAL
+				#define USE_INTERNAL_SERIAL             NO_DESCRIPTOR
 
-				#define INTERNAL_SERIAL_LENGTH_BITS    0
-				#define INTERNAL_SERIAL_START_ADDRESS  0
+				#define INTERNAL_SERIAL_LENGTH_BITS     0
+				#define INTERNAL_SERIAL_START_ADDRESS   0
 			#endif
 
 		/* Function Prototypes: */
diff --git a/LUFA/Drivers/USB/Core/UC3/Device_UC3.h b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h
index dde71665f..4d0f70335 100644
--- a/LUFA/Drivers/USB/Core/UC3/Device_UC3.h
+++ b/LUFA/Drivers/USB/Core/UC3/Device_UC3.h
@@ -103,7 +103,7 @@
 				 *  number for the device.
 				 */
 				#ifndef USE_INTERNAL_SERIAL
-				#define USE_INTERNAL_SERIAL             0xDC
+					#define USE_INTERNAL_SERIAL         0xDC
 				#endif
 
 				/** Length of the device's unique internal serial number, in bits, if present on the selected microcontroller
@@ -116,6 +116,7 @@
 				 */
 				#define INTERNAL_SERIAL_START_ADDRESS   0x80800204
 			#else
+				#undef	USE_INTERNAL_SERIAL
 				#define USE_INTERNAL_SERIAL             NO_DESCRIPTOR
 
 				#define INTERNAL_SERIAL_LENGTH_BITS     0
diff --git a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
index 526fae0c4..65b24a9ae 100644
--- a/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
+++ b/LUFA/Drivers/USB/Core/XMEGA/Device_XMEGA.h
@@ -111,23 +111,24 @@
 				 *  number for the device.
 				 */
 				#ifndef USE_INTERNAL_SERIAL
-				#define USE_INTERNAL_SERIAL            0xDC
+					#define USE_INTERNAL_SERIAL         0xDC
 				#endif
 
 				/** Length of the device's unique internal serial number, in bits, if present on the selected microcontroller
 				 *  model.
 				 */
-				#define INTERNAL_SERIAL_LENGTH_BITS    (8 * (1 + (offsetof(NVM_PROD_SIGNATURES_t, COORDY1) - offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0))))
+				#define INTERNAL_SERIAL_LENGTH_BITS     (8 * (1 + (offsetof(NVM_PROD_SIGNATURES_t, COORDY1) - offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0))))
 
 				/** Start address of the internal serial number, in the appropriate address space, if present on the selected microcontroller
 				 *  model.
 				 */
-				#define INTERNAL_SERIAL_START_ADDRESS  offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0)
+				#define INTERNAL_SERIAL_START_ADDRESS   offsetof(NVM_PROD_SIGNATURES_t, LOTNUM0)
 			#else
-				#define USE_INTERNAL_SERIAL            NO_DESCRIPTOR
+				#undef	USE_INTERNAL_SERIAL
+				#define USE_INTERNAL_SERIAL             NO_DESCRIPTOR
 
-				#define INTERNAL_SERIAL_LENGTH_BITS    0
-				#define INTERNAL_SERIAL_START_ADDRESS  0
+				#define INTERNAL_SERIAL_LENGTH_BITS     0
+				#define INTERNAL_SERIAL_START_ADDRESS   0
 			#endif
 
 		/* Function Prototypes: */
-- 
GitLab