From 62022252ea4d2763e15c1150367ca972bc4926bf Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Thu, 29 Jul 2010 13:04:53 +0000
Subject: [PATCH] Add special support to the AVRISP-MKII for the new model
 USBTINY-MKII's additional LED to indicate target power source.

Add support to the USBTINY-MKII's additional LED in the board's LED driver header.

Changed LED indicator masks for the AVRISP-MKII project, so that there are defined roles for each LED.
---
 LUFA/Drivers/Board/USBTINYMKII/LEDs.h |  5 ++++-
 LUFA/ManPages/ChangeLog.txt           |  2 ++
 Projects/AVRISP-MKII/AVRISP-MKII.c    |  8 +++++++-
 Projects/AVRISP-MKII/AVRISP-MKII.h    | 12 +++++++-----
 4 files changed, 20 insertions(+), 7 deletions(-)

diff --git a/LUFA/Drivers/Board/USBTINYMKII/LEDs.h b/LUFA/Drivers/Board/USBTINYMKII/LEDs.h
index 6be770621..b0383a64a 100644
--- a/LUFA/Drivers/Board/USBTINYMKII/LEDs.h
+++ b/LUFA/Drivers/Board/USBTINYMKII/LEDs.h
@@ -72,8 +72,11 @@
 			/** LED mask for the second LED on the board. */
 			#define LEDS_LED2        (1 << 7)
 
+			/** LED mask for the third LED on the board. */
+			#define LEDS_LED3        (1 << 5)
+
 			/** LED mask for all the LEDs on the board. */
-			#define LEDS_ALL_LEDS    (LEDS_LED1 | LEDS_LED2)
+			#define LEDS_ALL_LEDS    (LEDS_LED1 | LEDS_LED2 | LEDS_LED3)
 
 			/** LED mask for the none of the board LEDs. */
 			#define LEDS_NO_LEDS     0
diff --git a/LUFA/ManPages/ChangeLog.txt b/LUFA/ManPages/ChangeLog.txt
index 2e8496e30..69a712cd0 100644
--- a/LUFA/ManPages/ChangeLog.txt
+++ b/LUFA/ManPages/ChangeLog.txt
@@ -20,6 +20,7 @@
   *  - Added start of a new Test and Measurement class demo (thanks to Peter Lawrence)
   *  - Added new SPI_ORDER_* data order masks to the SPI peripheral driver
   *  - Added support to the AVRISP-MKII project for ISP speeds slower than 125KHz via a new software SPI driver
+  *  - Added support for the new button/LED on the latest model USBTINY-MKII
   *
   *  <b>Changed:</b>
   *  - The RingBuff library code has been replaced in the XPLAINBridge, Benito and USBtoSerial projects with an ultra lightweight
@@ -39,6 +40,7 @@
   *    behaviour of the command line tools used to perform the check on each platform
   *  - Internal USB driver source files renamed and moved to ease future possible architecture ports
   *  - All internal pseudo-function macros have been converted to true inline functions for type-safety and readability
+  *  - Changed LED indicator masks for the AVRISP-MKII project, so that there are defined roles for each LED
   *
   *  <b>Fixed:</b>
   *  - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from
diff --git a/Projects/AVRISP-MKII/AVRISP-MKII.c b/Projects/AVRISP-MKII/AVRISP-MKII.c
index 7293906bb..0afb087cf 100644
--- a/Projects/AVRISP-MKII/AVRISP-MKII.c
+++ b/Projects/AVRISP-MKII/AVRISP-MKII.c
@@ -49,6 +49,12 @@ int main(void)
 
 	for (;;)
 	{
+		#if (BOARD == BOARD_USBTINYMKII)
+		/* On the USBTINY-MKII target, there is a secondary LED which indicates the current selected power
+		   mode - either VBUS, or sourced from the VTARGET pin of the programming connectors */
+		LEDs_ChangeLEDs(LEDMASK_VBUSPOWER, (PIND & (1 << 0)) ? LEDMASK_VBUSPOWER : 0);
+		#endif
+		
 		AVRISP_Task();
 		USB_USBTask();
 	}
@@ -66,7 +72,7 @@ void SetupHardware(void)
 
 	/* Hardware Initialization */
 	LEDs_Init();
-	USB_Init();
+	USB_Init();	
 }
 
 /** Event handler for the library USB Connection event. */
diff --git a/Projects/AVRISP-MKII/AVRISP-MKII.h b/Projects/AVRISP-MKII/AVRISP-MKII.h
index 1018ebc3d..3491abf0c 100644
--- a/Projects/AVRISP-MKII/AVRISP-MKII.h
+++ b/Projects/AVRISP-MKII/AVRISP-MKII.h
@@ -42,8 +42,6 @@
 		#include <avr/interrupt.h>
 		#include <avr/power.h>
 
-		#include "Descriptors.h"
-
 		#include <LUFA/Version.h>
 		#include <LUFA/Drivers/Board/LEDs.h>
 		#include <LUFA/Drivers/USB/USB.h>
@@ -52,6 +50,7 @@
 			#include <LUFA/Drivers/Peripheral/ADC.h>
 		#endif
 		
+		#include "Descriptors.h"
 		#include "Lib/V2Protocol.h"
 
 	/* Macros: */
@@ -59,16 +58,19 @@
 		#define LEDMASK_USB_NOTREADY      LEDS_LED1
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is enumerating. */
-		#define LEDMASK_USB_ENUMERATING  (LEDS_LED2 | LEDS_LED3)
+		#define LEDMASK_USB_ENUMERATING  (LEDS_LED1 | LEDS_LED2)
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is ready. */
-		#define LEDMASK_USB_READY        (LEDS_LED2 | LEDS_LED4)
+		#define LEDMASK_USB_READY         LEDS_LED2
 
 		/** LED mask for the library LED driver, to indicate that an error has occurred in the USB interface. */
-		#define LEDMASK_USB_ERROR        (LEDS_LED1 | LEDS_LED3)
+		#define LEDMASK_USB_ERROR         LEDS_LED1
 
 		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
 		#define LEDMASK_BUSY             (LEDS_LED1 | LEDS_LED2)
+		
+		/** LED mask for the library LED driver, to indicate that the target is being powered by VBUS. */
+		#define LEDMASK_VBUSPOWER         LEDS_LED3
 
 	/* Function Prototypes: */
 		void SetupHardware(void);
-- 
GitLab