changeset 422:cbcdb7a16b7c

Fixing potential WF LED issue - Added fix for USB Current Change * If called during interrupt, could hang the I2C bus * Delaying I2C writes till scan loop
author Jacob Alexander <haata@kiibohd.com>
date Tue, 01 Mar 2016 19:35:21 -0800
parents ad693d70c292
children 64d1057661f3
files Scan/ISSILed/led_scan.c Scan/WhiteFox/defaultMap.kll
diffstat 2 files changed, 21 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/Scan/ISSILed/led_scan.c	Tue Feb 23 14:35:08 2016 -0800
+++ b/Scan/ISSILed/led_scan.c	Tue Mar 01 19:35:21 2016 -0800
@@ -639,12 +639,26 @@
 
 
 // LED State processing loop
+unsigned int LED_currentEvent = 0;
 inline uint8_t LED_scan()
 {
+	// Check for current change event
+	if ( LED_currentEvent )
+	{
+		// TODO dim LEDs in low power mode instead of shutting off
+		if ( LED_currentEvent < 150 )
+		{
+			// Enable Software shutdown of ISSI chip
+			LED_writeReg( 0x0A, 0x00, 0x0B );
+		}
+		else
+		{
+			// Disable Software shutdown of ISSI chip
+			LED_writeReg( 0x0A, 0x01, 0x0B );
+		}
 
-	// I2C Busy
-	// S & I2C_S_BUSY
-	//I2C_S_BUSY
+		LED_currentEvent = 0;
+	}
 
 	return 0;
 }
@@ -654,17 +668,8 @@
 // current - mA
 void LED_currentChange( unsigned int current )
 {
-	// TODO dim LEDs in low power mode instead of shutting off
-	if ( current < 150 )
-	{
-		// Enabled Software shutdown of ISSI chip
-		LED_writeReg( 0x0A, 0x00, 0x0B );
-	}
-	else
-	{
-		// Disable Software shutdown of ISSI chip
-		LED_writeReg( 0x0A, 0x01, 0x0B );
-	}
+	// Delay action till next LED scan loop (as this callback sometimes occurs during interrupt requests)
+	LED_currentEvent = current;
 }
 
 
--- a/Scan/WhiteFox/defaultMap.kll	Tue Feb 23 14:35:08 2016 -0800
+++ b/Scan/WhiteFox/defaultMap.kll	Tue Mar 01 19:35:21 2016 -0800
@@ -95,7 +95,7 @@
 	0xFF, 0x00, /* C6-1 -> C6-16 */
 	0xFF, 0x00, /* C7-1 -> C7-16 */
 	0xFF, 0x00, /* C8-1 -> C8-16 */
-	0xFE, 0x00, /* C9-1 -> C9-16 */
+	0xFF, 0x00, /* C9-1 -> C9-16 */
 ";
 
 # LED Brightness Override
@@ -124,6 +124,6 @@
 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* C6-1 -> C6-16 */
 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* C7-1 -> C7-16 */
 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* C8-1 -> C8-16 */
-0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* C9-1 -> C9-16 */
+0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* C9-1 -> C9-16 */
 ";