core: Fix sleep_led
authortmk <hasu@tmk-kbd.com>
Wed, 12 Oct 2016 05:35:53 +0000 (14:35 +0900)
committertmk <hasu@tmk-kbd.com>
Wed, 12 Oct 2016 05:35:53 +0000 (14:35 +0900)
tmk_core/common/avr/sleep_led.c
tmk_core/common/avr/suspend.c
tmk_core/common/command.c
tmk_core/common/sleep_led.h

index dab3eb0f3ceae9c6d1525c861d328ad825e00bd8..37c2cf1b19b387e6ed7f30b696e5234dffac4f0a 100644 (file)
@@ -45,10 +45,17 @@ void sleep_led_disable(void)
     TIMSK1 &= ~_BV(OCIE1A);
 }
 
-void sleep_led_toggle(void)
+
+__attribute__ ((weak))
+void sleep_led_on(void)
 {
-    /* Disable Compare Match Interrupt */
-    TIMSK1 ^= _BV(OCIE1A);
+    led_set(1<<USB_LED_CAPS_LOCK);
+}
+
+__attribute__ ((weak))
+void sleep_led_off(void)
+{
+    led_set(0);
 }
 
 
@@ -86,10 +93,10 @@ ISR(TIMER1_COMPA_vect)
     
     // LED on
     if (timer.pwm.count == 0) {
-        led_set(1<<USB_LED_CAPS_LOCK);
+        sleep_led_on();
     }
     // LED off
     if (timer.pwm.count == pgm_read_byte(&breathing_table[timer.pwm.index])) {
-        led_set(0);
+        sleep_led_off();
     }
 }
index 150588ced70642095d8884da6f3c160727fd36ad..02d7e4c9426eea2921a4322d3959fe8952c7154d 100644 (file)
@@ -96,7 +96,11 @@ void suspend_idle(uint8_t time)
 
 void suspend_power_down(void)
 {
-#ifdef SUSPEND_MODE_STANDBY
+#ifdef NO_SUSPEND_POWER_DOWN
+    ;
+#elif defined(SUSPEND_MODE_NOPOWERSAVE)
+    ;
+#elif defined(SUSPEND_MODE_STANDBY)
     standby();
 #elif defined(SUSPEND_MODE_IDLE)
     idle();
index 6920970020cc3f0a8ec72e645940b39132074362..bb471e887e5d7de3638888c1062a623f4616f9e3 100644 (file)
@@ -182,14 +182,22 @@ static bool command_common(uint8_t code)
 {
 #ifdef KEYBOARD_LOCK_ENABLE
     static host_driver_t *host_driver = 0;
+#endif
+#ifdef SLEEP_LED_ENABLE
+    static bool sleep_led_test = false;
 #endif
     switch (code) {
 #ifdef SLEEP_LED_ENABLE
         case KC_Z:
             // test breathing sleep LED
             print("Sleep LED test\n");
-            sleep_led_toggle();
-            led_set(host_keyboard_leds());
+            if (sleep_led_test) {
+                sleep_led_disable();
+                led_set(host_keyboard_leds());
+            } else {
+                sleep_led_enable();
+            }
+            sleep_led_test = !sleep_led_test;
             break;
 #endif
 #ifdef BOOTMAGIC_ENABLE
index 6bdcf558a4503f50b1c81a81546482cf56a4112a..585c0d995b75ad22b9b6dd39d31026fe8ea5207e 100644 (file)
@@ -2,20 +2,10 @@
 #define SLEEP_LED_H
 
 
-#ifdef SLEEP_LED_ENABLE
-
 void sleep_led_init(void);
 void sleep_led_enable(void);
 void sleep_led_disable(void);
-void sleep_led_toggle(void);
-
-#else
-
-#define sleep_led_init()
-#define sleep_led_enable()
-#define sleep_led_disable()
-#define sleep_led_toggle()
-
-#endif
+void sleep_led_on(void);
+void sleep_led_off(void);
 
 #endif
Imprint / Impressum