Files
Flipdot-display/src/esp32/logic/boot_policy.cpp
T

37 lines
800 B
C++
Raw Normal View History

#include "logic/boot_policy.h"
#include "config.h"
BootDecision decideBoot(ResetKind reset, uint8_t crash_count)
{
switch (reset)
{
case ResetKind::PowerOn:
return {BootMode::Normal, 0};
case ResetKind::Crash:
if (crash_count < 255)
crash_count++;
if (crash_count >= SAFE_MODE_CRASHES)
return {BootMode::SafeMode, crash_count};
return {BootMode::PanicWindow, crash_count};
case ResetKind::Software:
case ResetKind::Other:
default:
return {BootMode::Normal, crash_count};
}
}
uint8_t crashCountAfterSafeMode()
{
return SAFE_MODE_CRASHES - 1;
}
bool shouldMarkFirmwareValid(uint32_t running_ms, bool wifi_connected)
{
return running_ms >= FIRMWARE_VALID_TIME && wifi_connected;
}
bool shouldClearCrashCount(uint32_t running_ms)
{
return running_ms >= CRASH_FREE_TIME;
}