From 66347ce19bb7e6ade64827a01b0ba834bff1e361 Mon Sep 17 00:00:00 2001 From: Todd Herbert Date: Mon, 15 Apr 2024 18:24:01 +1200 Subject: [PATCH] Optionally disable blink during light-sleep --- src/PowerFSM.cpp | 15 ++++++++++++--- variants/heltec_wireless_paper/variant.h | 1 + variants/heltec_wireless_paper_v1/variant.h | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/PowerFSM.cpp b/src/PowerFSM.cpp index ac48e664c..b632615e4 100644 --- a/src/PowerFSM.cpp +++ b/src/PowerFSM.cpp @@ -17,6 +17,7 @@ #include "sleep.h" #include "target_specific.h" +// How long between LED blinks during light-sleep #ifndef SLEEP_TIME #define SLEEP_TIME 30 #endif @@ -84,19 +85,27 @@ static void lsIdle() if (secsSlept < config.power.ls_secs) { // If some other service would stall sleep, don't let sleep happen yet if (doPreflightSleep()) { + +#ifdef LS_NO_BLINK + // Sleep now for the full duration + uint32_t sleepTime = config.power.ls_secs; +#else // Briefly come out of sleep long enough to blink the led once every few seconds uint32_t sleepTime = SLEEP_TIME; - +#endif setLed(false); // Never leave led on while in light sleep esp_sleep_source_t wakeCause2 = doLightSleep(sleepTime * 1000LL); switch (wakeCause2) { case ESP_SLEEP_WAKEUP_TIMER: - // Normal case: timer expired, we should just go back to sleep ASAP +#ifndef LS_NO_BLINK + // Normal case: timer expired, we should just go back to sleep ASAP setLed(true); // briefly turn on led wakeCause2 = doLightSleep(100); // leave led on for 1ms - +#else + // If LS_NO_BLINK, no action here. Mark complete (secsSlept), and handle next time lsIdle() is called +#endif secsSlept += sleepTime; // LOG_INFO("sleeping, flash led!\n"); break; diff --git a/variants/heltec_wireless_paper/variant.h b/variants/heltec_wireless_paper/variant.h index 466925a2e..f039b9e31 100644 --- a/variants/heltec_wireless_paper/variant.h +++ b/variants/heltec_wireless_paper/variant.h @@ -58,3 +58,4 @@ // Power management #define NIMBLE_DEINIT_FOR_DEEPSLEEP // Required to reach manufacturers claim of 18uA +#define LS_NO_BLINK // Prevent LED blink during light-sleep. BLE hardware has slow current ramp-down; too wasteful \ No newline at end of file diff --git a/variants/heltec_wireless_paper_v1/variant.h b/variants/heltec_wireless_paper_v1/variant.h index 466925a2e..f039b9e31 100644 --- a/variants/heltec_wireless_paper_v1/variant.h +++ b/variants/heltec_wireless_paper_v1/variant.h @@ -58,3 +58,4 @@ // Power management #define NIMBLE_DEINIT_FOR_DEEPSLEEP // Required to reach manufacturers claim of 18uA +#define LS_NO_BLINK // Prevent LED blink during light-sleep. BLE hardware has slow current ramp-down; too wasteful \ No newline at end of file