sforkowany z mirror/meshtastic-firmware
never loop waiting on hardware without some sort of timeout ;-)
related to https://github.com/meshtastic/Meshtastic-esp32/issues/531.2-legacy
rodzic
65128a04c9
commit
3443e60718
|
@ -23,14 +23,23 @@ static void sdsEnter()
|
||||||
doDeepSleep(radioConfig.preferences.sds_secs * 1000LL);
|
doDeepSleep(radioConfig.preferences.sds_secs * 1000LL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "error.h"
|
||||||
|
|
||||||
static void lsEnter()
|
static void lsEnter()
|
||||||
{
|
{
|
||||||
DEBUG_MSG("lsEnter begin, ls_secs=%u\n", radioConfig.preferences.ls_secs);
|
DEBUG_MSG("lsEnter begin, ls_secs=%u\n", radioConfig.preferences.ls_secs);
|
||||||
screen.setOn(false);
|
screen.setOn(false);
|
||||||
|
|
||||||
while (!service.radio.rf95.canSleep())
|
uint32_t now = millis();
|
||||||
|
while (!service.radio.rf95.canSleep()) {
|
||||||
delay(10); // Kinda yucky - wait until radio says say we can shutdown (finished in process sends/receives)
|
delay(10); // Kinda yucky - wait until radio says say we can shutdown (finished in process sends/receives)
|
||||||
|
|
||||||
|
if (millis() - now > 30 * 1000) { // If we wait too long just report an error and go to sleep
|
||||||
|
recordCriticalError(ErrSleepEnterWait);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gps.prepareSleep(); // abandon in-process parsing
|
gps.prepareSleep(); // abandon in-process parsing
|
||||||
|
|
||||||
// if (!isUSBPowered) // FIXME - temp hack until we can put gps in sleep mode, if we have AC when we go to sleep then
|
// if (!isUSBPowered) // FIXME - temp hack until we can put gps in sleep mode, if we have AC when we go to sleep then
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/// Error codes for critical error
|
/// Error codes for critical error
|
||||||
enum CriticalErrorCode { NoError, ErrTxWatchdog };
|
enum CriticalErrorCode { NoError, ErrTxWatchdog, ErrSleepEnterWait };
|
||||||
|
|
||||||
/// Record an error that should be reported via analytics
|
/// Record an error that should be reported via analytics
|
||||||
void recordCriticalError(CriticalErrorCode code, uint32_t address = 0);
|
void recordCriticalError(CriticalErrorCode code, uint32_t address = 0);
|
||||||
|
|
Ładowanie…
Reference in New Issue