From e0420015df848f18d5eb1672da4ccac578d454cf Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Sun, 21 Jun 2009 05:04:18 +0000
Subject: Re-add signature byte defines to the DFU and CDC class bootloaders --
 the SIGNATURE_x defines in the AVR device header files only exist in a newer
 version of avr-libc than is in the Debian repositories, causing build issues
 on Linux.

---
 Bootloaders/CDC/BootloaderCDC.c   |  6 +++---
 Bootloaders/CDC/BootloaderCDC.h   |  7 +------
 Bootloaders/CDC/BootloaderCDC.txt |  7 -------
 Bootloaders/CDC/Descriptors.h     | 40 +++++++++++++++++++++++++++++++++++++++
 Bootloaders/DFU/BootloaderDFU.c   |  2 +-
 Bootloaders/DFU/BootloaderDFU.h   |  7 +------
 Bootloaders/DFU/BootloaderDFU.txt |  7 -------
 Bootloaders/DFU/Descriptors.h     | 27 ++++++++++++++++++++++++++
 Bootloaders/TeensyHID/TeensyHID.h |  3 +--
 9 files changed, 74 insertions(+), 32 deletions(-)

diff --git a/Bootloaders/CDC/BootloaderCDC.c b/Bootloaders/CDC/BootloaderCDC.c
index d72d128a1..92c2291c9 100644
--- a/Bootloaders/CDC/BootloaderCDC.c
+++ b/Bootloaders/CDC/BootloaderCDC.c
@@ -424,9 +424,9 @@ void CDC_Task(void)
 		}
 		else if (Command == 's')
 		{
-			WriteNextResponseByte(SIGNATURE_2);		
-			WriteNextResponseByte(SIGNATURE_1);
-			WriteNextResponseByte(SIGNATURE_0);
+			WriteNextResponseByte(AVR_SIGNATURE_3);		
+			WriteNextResponseByte(AVR_SIGNATURE_2);
+			WriteNextResponseByte(AVR_SIGNATURE_1);
 		}
 		else if (Command == 'b')
 		{
diff --git a/Bootloaders/CDC/BootloaderCDC.h b/Bootloaders/CDC/BootloaderCDC.h
index 97e32e9fb..fa98a15b3 100644
--- a/Bootloaders/CDC/BootloaderCDC.h
+++ b/Bootloaders/CDC/BootloaderCDC.h
@@ -46,12 +46,7 @@
 
 		#include "Descriptors.h"
 
-		#include <LUFA/Drivers/USB/USB.h>                // USB Functionality
-
-	/* Preprocessor Checks: */
-		#if !defined(SIGNATURE_0) || !defined(SIGNATURE_1) || !defined(SIGNATURE_2)
-			#error Device signature byte constants are not defined due to outdated avr-libc version. See demo documentation.
-		#endif
+		#include <LUFA/Drivers/USB/USB.h>
 
 	/* Macros: */
 		/** CDC Class Specific request to get the line encoding on a CDC-ACM virtual serial port, including the
diff --git a/Bootloaders/CDC/BootloaderCDC.txt b/Bootloaders/CDC/BootloaderCDC.txt
index 1122e73ae..c518195eb 100644
--- a/Bootloaders/CDC/BootloaderCDC.txt
+++ b/Bootloaders/CDC/BootloaderCDC.txt
@@ -54,12 +54,5 @@
  *    <td><b>Location:</b></td>
  *    <td><b>Description:</b></td>
  *   </tr>
- *   <tr>
- *    <td>SIGNATURE_0, SIGNATURE_1, SIGNATURE_2</td>
- *    <td>Makefile CDEFS</td>
- *    <td>AVR part signature bytes. These are normally defined as part of the AVR device header files in recent avr-libc
- *        distributions. If your avr-libc library is out of date and does not define these values, you can define them
- *        manually in the makefile CDEFS.</td>
- *   </tr>
  *  </table>
  */
\ No newline at end of file
diff --git a/Bootloaders/CDC/Descriptors.h b/Bootloaders/CDC/Descriptors.h
index d913f45c0..62d75986e 100644
--- a/Bootloaders/CDC/Descriptors.h
+++ b/Bootloaders/CDC/Descriptors.h
@@ -40,6 +40,46 @@
 		#include <LUFA/Drivers/USB/USB.h>
 
 	/* Macros: */
+		#if defined(__AVR_AT90USB1286__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x97
+			#define AVR_SIGNATURE_3               0x82
+		#elif defined(__AVR_AT90USB1287__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x97
+			#define AVR_SIGNATURE_3               0x82
+		#elif defined(__AVR_AT90USB646__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x96
+			#define AVR_SIGNATURE_3               0x82
+		#elif defined(__AVR_AT90USB647__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x96
+			#define AVR_SIGNATURE_3               0x82
+		#elif defined(__AVR_AT90USB162__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x94
+			#define AVR_SIGNATURE_3               0x82
+		#elif defined(__AVR_AT90USB82__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x94
+			#define AVR_SIGNATURE_3               0x82
+		#elif defined(__AVR_ATmega32U6__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x95
+			#define AVR_SIGNATURE_3               0x88
+		#elif defined(__AVR_ATmega32U4__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x95
+			#define AVR_SIGNATURE_3               0x87
+		#elif defined(__AVR_ATmega16U4__)
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x94
+			#define AVR_SIGNATURE_3               0x88
+		#else
+			#error The selected AVR part is not currently supported by this bootloader.
+		#endif
+
 		/** Structure for a CDC class Functional descriptor, with a given data size. This is used instead of a
 		 *  type define so that the same macro can be used for functional descriptors of varying data lengths,
 		 *  while allowing the sizeof() operator to return correct results.
diff --git a/Bootloaders/DFU/BootloaderDFU.c b/Bootloaders/DFU/BootloaderDFU.c
index 58a751188..ca0387ba7 100644
--- a/Bootloaders/DFU/BootloaderDFU.c
+++ b/Bootloaders/DFU/BootloaderDFU.c
@@ -678,7 +678,7 @@ static void ProcessWriteCommand(void)
 static void ProcessReadCommand(void)
 {
 	const uint8_t BootloaderInfo[3] = {BOOTLOADER_VERSION, BOOTLOADER_ID_BYTE1, BOOTLOADER_ID_BYTE2};
-	const uint8_t SignatureInfo[3]  = {SIGNATURE_0, SIGNATURE_1, SIGNATURE_2};
+	const uint8_t SignatureInfo[3]  = {AVR_SIGNATURE_1,    AVR_SIGNATURE_2,     AVR_SIGNATURE_3};
 
 	uint8_t DataIndexToRead = SentCommand.Data[1];
 
diff --git a/Bootloaders/DFU/BootloaderDFU.h b/Bootloaders/DFU/BootloaderDFU.h
index 776281eb8..a47da3d5c 100644
--- a/Bootloaders/DFU/BootloaderDFU.h
+++ b/Bootloaders/DFU/BootloaderDFU.h
@@ -47,12 +47,7 @@
 	
 		#include "Descriptors.h"
 		
-		#include <LUFA/Drivers/USB/USB.h>                // USB Functionality
-	
-	/* Preprocessor Checks: */
-		#if !defined(SIGNATURE_0) || !defined(SIGNATURE_1) || !defined(SIGNATURE_2)
-			#error Device signature byte constants are not defined due to outdated avr-libc version. See demo documentation.
-		#endif
+		#include <LUFA/Drivers/USB/USB.h>
 	
 	/* Macros: */
 		/** Configuration define. Define this token to true to case the bootloader to reject all memory commands
diff --git a/Bootloaders/DFU/BootloaderDFU.txt b/Bootloaders/DFU/BootloaderDFU.txt
index eb6495e6e..05bfa71fa 100644
--- a/Bootloaders/DFU/BootloaderDFU.txt
+++ b/Bootloaders/DFU/BootloaderDFU.txt
@@ -73,12 +73,5 @@
  *        erase has been performed. This can be used in conjunction with the AVR's lockbits to prevent the AVRs firmware from
  *        being dumped by unauthorized persons.</td>
  *   </tr>
- *   <tr>
- *    <td>SIGNATURE_0, SIGNATURE_1, SIGNATURE_2</td>
- *    <td>Makefile CDEFS</td>
- *    <td>AVR part signature bytes. These are normally defined as part of the AVR device header files in recent avr-libc
- *        distributions. If your avr-libc library is out of date and does not define these values, you can define them
- *        manually in the makefile CDEFS.</td>
- *   </tr>
  *  </table>
  */
diff --git a/Bootloaders/DFU/Descriptors.h b/Bootloaders/DFU/Descriptors.h
index 570bb6e08..0943ef32b 100644
--- a/Bootloaders/DFU/Descriptors.h
+++ b/Bootloaders/DFU/Descriptors.h
@@ -65,22 +65,49 @@
 
 		#if defined(__AVR_AT90USB1286__)
 			#define PRODUCT_ID_CODE               0x2FFB
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x97
+			#define AVR_SIGNATURE_3               0x82
 		#elif defined(__AVR_AT90USB1287__)
 			#define PRODUCT_ID_CODE               0x2FFB
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x97
+			#define AVR_SIGNATURE_3               0x82
 		#elif defined(__AVR_AT90USB646__)
 			#define PRODUCT_ID_CODE               0x2FF9
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x96
+			#define AVR_SIGNATURE_3               0x82
 		#elif defined(__AVR_AT90USB647__)
 			#define PRODUCT_ID_CODE               0x2FF9
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x96
+			#define AVR_SIGNATURE_3               0x82
 		#elif defined(__AVR_AT90USB162__)
 			#define PRODUCT_ID_CODE               0x2FFA
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x94
+			#define AVR_SIGNATURE_3               0x82
 		#elif defined(__AVR_AT90USB82__)
 			#define PRODUCT_ID_CODE               0x2FF7
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x94
+			#define AVR_SIGNATURE_3               0x82
 		#elif defined(__AVR_ATmega32U6__)
 			#define PRODUCT_ID_CODE               0x2FFB
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x95
+			#define AVR_SIGNATURE_3               0x88
 		#elif defined(__AVR_ATmega32U4__)
 			#define PRODUCT_ID_CODE               0x2FF4
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x95
+			#define AVR_SIGNATURE_3               0x87
 		#elif defined(__AVR_ATmega16U4__)
 			#define PRODUCT_ID_CODE               0x2FF3
+			#define AVR_SIGNATURE_1               0x1E
+			#define AVR_SIGNATURE_2               0x94
+			#define AVR_SIGNATURE_3               0x88
 		#else
 			#error The selected AVR part is not currently supported by this bootloader.
 		#endif
diff --git a/Bootloaders/TeensyHID/TeensyHID.h b/Bootloaders/TeensyHID/TeensyHID.h
index 9414eec77..b7d4d6bac 100644
--- a/Bootloaders/TeensyHID/TeensyHID.h
+++ b/Bootloaders/TeensyHID/TeensyHID.h
@@ -47,8 +47,7 @@
 
 		#include "Descriptors.h"
 
-		#include <LUFA/Version.h>                    // Library Version Information
-		#include <LUFA/Drivers/USB/USB.h>            // USB Functionality
+		#include <LUFA/Drivers/USB/USB.h>
 		
 	/* Preprocessor Checks: */
 		#if !defined(__AVR_AT90USB162__)
-- 
cgit v1.2.3