Merge pull request #2286 from IoTThinks/MCdev-PowerSaving-for-nrf52-companion-202604

Added Power Saving for NRF52 companions to have extra 30% battery life
This commit is contained in:
ripplebiz
2026-05-31 18:49:46 +10:00
committed by GitHub
3 changed files with 18 additions and 4 deletions
+5
View File
@@ -2222,3 +2222,8 @@ bool MyMesh::advert() {
return false; return false;
} }
} }
// To check if there is pending work
bool MyMesh::hasPendingWork() const {
return _mgr->getOutboundTotal() > 0;
}
+3
View File
@@ -177,6 +177,9 @@ public:
} }
#endif #endif
// To check if there is pending work
bool hasPendingWork() const;
private: private:
void writeOKFrame(); void writeOKFrame();
void writeErrFrame(uint8_t err_code); void writeErrFrame(uint8_t err_code);
+10 -4
View File
@@ -250,13 +250,19 @@ void loop() {
#endif #endif
rtc_clock.tick(); rtc_clock.tick();
if (!the_mesh.hasPendingWork()) {
#if defined(NRF52_PLATFORM)
board.sleep(0); // nrf ignores seconds param, sleeps whenever possible
#endif
}
#if defined(ESP32) && defined(WIFI_SSID) #if defined(ESP32) && defined(WIFI_SSID)
// Safely attempt to reconnect every 10 seconds if flagged // Safely attempt to reconnect every 10 seconds if flagged
if (wifi_needs_reconnect && (millis() - last_wifi_reconnect_attempt > 10000)) { if (wifi_needs_reconnect && (millis() - last_wifi_reconnect_attempt > 10000)) {
WIFI_DEBUG_PRINTLN("Attempting manual WiFi reconnect..."); WIFI_DEBUG_PRINTLN("Attempting manual WiFi reconnect...");
WiFi.disconnect(); WiFi.disconnect();
WiFi.reconnect(); WiFi.reconnect();
last_wifi_reconnect_attempt = millis(); last_wifi_reconnect_attempt = millis();
} }
#endif #endif
} }