From a908773a13ee491f2f8907cdf57c26fb39e10658 Mon Sep 17 00:00:00 2001
From: Dean Camera <dean@fourwalledcubicle.com>
Date: Wed, 6 May 2009 12:43:00 +0000
Subject: [PATCH] Change device demos to cache the board button values in the
 same manner as the board joystick to maintain consistency.

---
 Demos/Device/Joystick/Joystick.c        | 14 ++++++++------
 Demos/Device/Mouse/Mouse.c              |  5 +++--
 LUFA/Drivers/USB/LowLevel/DevChapter9.c |  4 ++--
 3 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/Demos/Device/Joystick/Joystick.c b/Demos/Device/Joystick/Joystick.c
index b2de42fc2..cf136d076 100644
--- a/Demos/Device/Joystick/Joystick.c
+++ b/Demos/Device/Joystick/Joystick.c
@@ -153,9 +153,10 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
  */
 bool GetNextReport(USB_JoystickReport_Data_t* ReportData)
 {
-	static uint8_t PrevJoyStatus = 0;
-	uint8_t        JoyStatus_LCL        = Joystick_GetStatus();
-	bool           InputChanged         = false;
+	static uint8_t PrevJoyStatus    = 0;
+	uint8_t        JoyStatus_LCL    = Joystick_GetStatus();
+	uint8_t        ButtonStatus_LCL = Buttons_GetStatus();
+	bool           InputChanged     = false;
 
 	/* Clear the report contents */
 	memset(ReportData, 0, sizeof(USB_JoystickReport_Data_t));
@@ -173,14 +174,15 @@ bool GetNextReport(USB_JoystickReport_Data_t* ReportData)
 	if (JoyStatus_LCL & JOY_PRESS)
 	  ReportData->Button  = (1 << 1);
 	  
-	if (Buttons_GetStatus() & BUTTONS_BUTTON1)
+	if (ButtonStatus_LCL & BUTTONS_BUTTON1)
 	  ReportData->Button |= (1 << 0);
 	  
 	/* Check if the new report is different to the previous report */
-	InputChanged = (uint8_t)(PrevJoyStatus ^ JoyStatus_LCL);
+	InputChanged = (uint8_t)(PrevJoyStatus ^ JoyStatus_LCL) | (uint8_t)(PrevButtonStatus ^ ButtonStatus_LCL);
 
 	/* Save the current joystick status for later comparison */
-	PrevJoyStatus = JoyStatus_LCL;
+	PrevJoyStatus    = JoyStatus_LCL;
+	PrevButtonStatus = ButtonStatus_LCL;
 
 	/* Return whether the new report is different to the previous report or not */
 	return InputChanged;
diff --git a/Demos/Device/Mouse/Mouse.c b/Demos/Device/Mouse/Mouse.c
index 7fff291f4..763d366e9 100644
--- a/Demos/Device/Mouse/Mouse.c
+++ b/Demos/Device/Mouse/Mouse.c
@@ -287,7 +287,8 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
  */
 void CreateMouseReport(USB_MouseReport_Data_t* ReportData)
 {
-	uint8_t JoyStatus_LCL = Joystick_GetStatus();
+	uint8_t JoyStatus_LCL    = Joystick_GetStatus();
+	uint8_t ButtonStatus_LCL = Buttons_GetStatus();
 	
 	/* Clear the report contents */
 	memset(ReportData, 0, sizeof(USB_MouseReport_Data_t));
@@ -305,7 +306,7 @@ void CreateMouseReport(USB_MouseReport_Data_t* ReportData)
 	if (JoyStatus_LCL & JOY_PRESS)
 	  ReportData->Button  = (1 << 0);
 	  
-	if (Buttons_GetStatus() & BUTTONS_BUTTON1)
+	if (ButtonStatus_LCL & BUTTONS_BUTTON1)
 	  ReportData->Button |= (1 << 1);
 }
 
diff --git a/LUFA/Drivers/USB/LowLevel/DevChapter9.c b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
index bf1cb6c8f..9c319fc07 100644
--- a/LUFA/Drivers/USB/LowLevel/DevChapter9.c
+++ b/LUFA/Drivers/USB/LowLevel/DevChapter9.c
@@ -131,7 +131,7 @@ static void USB_Device_SetAddress(void)
 
 static void USB_Device_SetConfiguration(void)
 {
-	bool    AlreadyConfigured = (USB_ConfigurationNumber != 0);
+	bool AlreadyConfigured = (USB_ConfigurationNumber != 0);
 
 #if defined(USE_SINGLE_DEVICE_CONFIGURATION)
 	if ((uint8_t)USB_ControlRequest.wValue > 1)
@@ -188,7 +188,7 @@ static void USB_Device_GetDescriptor(void)
 	#if defined(USE_RAM_DESCRIPTORS)
 	Endpoint_Write_Control_Stream_LE(DescriptorPointer, DescriptorSize);
 	#else
-	bool     SendZLP;
+	bool SendZLP;
 	
 	if (USB_ControlRequest.wLength > DescriptorSize)
 	  USB_ControlRequest.wLength = DescriptorSize;
-- 
GitLab