]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - tmk_core/common/avr/suspend.c
Generate API docs from source code comments (#2491)
[qmk_firmware.git] / tmk_core / common / avr / suspend.c
index c07c2801d5ef75e277ab1b460f0fcac826b13568..4cdd6a420e788e0fe9f392ef14764d1af5214596 100644 (file)
@@ -9,8 +9,18 @@
 #include "suspend.h"
 #include "timer.h"
 #include "led.h"
+#include "host.h"
+
 #ifdef PROTOCOL_LUFA
-#include "lufa.h"
+       #include "lufa.h"
+#endif
+
+#ifdef AUDIO_ENABLE
+    #include "audio.h"
+#endif /* AUDIO_ENABLE */
+
+#ifdef RGBLIGHT_ANIMATIONS
+  #include "rgblight.h"
 #endif
 
 
@@ -31,6 +41,10 @@ __asm__ __volatile__ (  \
 )
 
 
+/** \brief Suspend idle
+ *
+ * FIXME: needs doc
+ */
 void suspend_idle(uint8_t time)
 {
     cli();
@@ -41,7 +55,9 @@ void suspend_idle(uint8_t time)
     sleep_disable();
 }
 
-/* Power down MCU with watchdog timer
+#ifndef NO_SUSPEND_POWER_DOWN
+/** \brief Power down MCU with watchdog timer
+ *
  * wdto: watchdog timer timeout defined in <avr/wdt.h>
  *          WDTO_15MS
  *          WDTO_30MS
@@ -55,6 +71,11 @@ void suspend_idle(uint8_t time)
  *          WDTO_8S
  */
 static uint8_t wdt_timeout = 0;
+
+/** \brief Power down
+ *
+ * FIXME: needs doc
+ */
 static void power_down(uint8_t wdto)
 {
 #ifdef PROTOCOL_LUFA
@@ -72,6 +93,16 @@ static void power_down(uint8_t wdto)
        // Turn off LED indicators
        led_set(0);
 
+       #ifdef AUDIO_ENABLE
+        // This sometimes disables the start-up noise, so it's been disabled
+               // stop_all_notes();
+       #endif /* AUDIO_ENABLE */
+#ifdef RGBLIGHT_SLEEP
+#ifdef RGBLIGHT_ANIMATIONS
+  rgblight_timer_disable();
+#endif
+  rgblight_disable();
+#endif
     // TODO: more power saving
     // See PicoPower application note
     // - I/O port input with pullup
@@ -87,38 +118,50 @@ static void power_down(uint8_t wdto)
     // Disable watchdog after sleep
     wdt_disable();
 }
+#endif
 
+/** \brief Suspend power down
+ *
+ * FIXME: needs doc
+ */
 void suspend_power_down(void)
 {
+#ifndef NO_SUSPEND_POWER_DOWN
     power_down(WDTO_15MS);
+#endif
 }
 
 __attribute__ ((weak)) void matrix_power_up(void) {}
 __attribute__ ((weak)) void matrix_power_down(void) {}
 bool suspend_wakeup_condition(void)
 {
-#ifdef BACKLIGHT_ENABLE
-    backlight_set(0);
-#endif
     matrix_power_up();
     matrix_scan();
     matrix_power_down();
     for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
         if (matrix_get_row(r)) return true;
     }
-    return false;
+     return false;
 }
 
-// run immediately after wakeup
+/** \brief run immediately after wakeup
+ *
+ * FIXME: needs doc
+ */
 void suspend_wakeup_init(void)
 {
     // clear keyboard state
     clear_keyboard();
 #ifdef BACKLIGHT_ENABLE
-    backlight_set(0);
     backlight_init();
 #endif
-led_set(host_keyboard_leds());
+       led_set(host_keyboard_leds());
+#ifdef RGBLIGHT_SLEEP
+  rgblight_enable();
+#ifdef RGBLIGHT_ANIMATIONS
+  rgblight_timer_enable();
+#endif
+#endif
 }
 
 #ifndef NO_SUSPEND_POWER_DOWN
@@ -135,4 +178,3 @@ ISR(WDT_vect)
     }
 }
 #endif
-