@@ -20,8 +20,12 @@ void halt() {
2020static char command[160 ];
2121
2222// For power saving
23+ constexpr unsigned long ACTIVE_TIME_SEC_INUSE = 2 * 60 ; // 2 minutes
24+ constexpr unsigned long ACTIVE_TIME_SEC_IDLE = 5 ; // 5 seconds
25+ constexpr unsigned long IDLE_PERIOD_SEC = 30 * 60 ; // 30 minutes
26+
2327unsigned long lastActive = 0 ; // mark last active time
24- unsigned long nextSleepinSecs = 120 ; // next sleep in seconds. The first sleep (if enabled) is after 2 minutes from boot
28+ unsigned long nextSleepinSecs = ACTIVE_TIME_SEC_INUSE ; // next sleep in seconds
2529
2630void setup () {
2731 Serial.begin (115200 );
@@ -136,14 +140,14 @@ void loop() {
136140
137141 if (the_mesh.getNodePrefs ()->powersaving_enabled && !the_mesh.hasPendingWork ()) {
138142 #if defined(NRF52_PLATFORM)
139- board.sleep (1800 ); // nrf ignores seconds param, sleeps whenever possible
143+ board.sleep (IDLE_PERIOD_SEC ); // nrf ignores seconds param, sleeps whenever possible
140144 #else
141145 if (the_mesh.millisHasNowPassed (lastActive + nextSleepinSecs * 1000 )) { // To check if it is time to sleep
142- board.sleep (1800 ); // To sleep. Wake up after 30 minutes or when receiving a LoRa packet
146+ board.sleep (IDLE_PERIOD_SEC ); // To sleep. Wake up after 30 minutes or when receiving a LoRa packet
143147 lastActive = millis ();
144- nextSleepinSecs = 5 ; // Default: To work for 5s and sleep again
148+ nextSleepinSecs = ACTIVE_TIME_SEC_IDLE ; // Default: To work for 5s and sleep again
145149 } else {
146- nextSleepinSecs += 5 ; // When there is pending work, to work another 5s
150+ nextSleepinSecs += ACTIVE_TIME_SEC_IDLE ; // When there is pending work, to work another 5s
147151 }
148152 #endif
149153 }
0 commit comments