]> git.donarmstrong.com Git - kiibohd-controller.git/commitdiff
Fixing potential WF LED issue
authorJacob Alexander <haata@kiibohd.com>
Wed, 2 Mar 2016 03:35:21 +0000 (19:35 -0800)
committerJacob Alexander <haata@kiibohd.com>
Wed, 2 Mar 2016 04:29:11 +0000 (20:29 -0800)
- Added fix for USB Current Change
  * If called during interrupt, could hang the I2C bus
  * Delaying I2C writes till scan loop

Scan/ISSILed/led_scan.c
Scan/WhiteFox/defaultMap.kll

index 609f2d713b1f1c503529907d05f45b41ff333392..a091b8624d3788528618ef42fe9b25d64add8272 100644 (file)
@@ -639,12 +639,26 @@ uint8_t I2C_Send( uint8_t *data, uint8_t sendLen, uint8_t recvLen )
 
 
 // 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 @@ inline uint8_t LED_scan()
 // 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;
 }
 
 
index 6a4e6413ac195e426b50cab4deecdadfc06893cc..037319bb1690cdeb7994a3a383626dc291968cf7 100644 (file)
@@ -95,7 +95,7 @@ ISSILedMask1 = "
        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 @@ ISSILedBrightness1 = "
 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 */
 ";