MCPcopy Create free account
hub / github.com/crosspoint-reader/crosspoint-reader / enterDeepSleep

Function enterDeepSleep

src/main.cpp:237–270  ·  view source on GitHub ↗

Enter deep sleep mode

Source from the content-addressed store, hash-verified

235
236// Enter deep sleep mode
237void enterDeepSleep(bool fromTimeout = false) {
238 HalPowerManager::Lock powerLock; // Ensure we are at normal CPU frequency for sleep preparation
239 APP_STATE.lastSleepFromReader = activityManager.isReaderActivity();
240
241 const bool isQuickResumeSleep =
242 SETTINGS.sleepScreen == CrossPointSettings::SLEEP_SCREEN_MODE::QUICK_RESUME ||
243 (fromTimeout &&
244 SETTINGS.quickResumeSleepScreen == CrossPointSettings::QUICK_RESUME_SLEEP_SCREEN::QUICK_RESUME_AFTER_TIMEOUT);
245 APP_STATE.showBootScreen = !isQuickResumeSleep;
246
247 APP_STATE.saveToFile();
248
249 // Commit to sleeping before goToSleep() runs the outgoing activity's onExit():
250 // a WiFi activity would otherwise silentRestart() here and reboot instead.
251 deepSleepInProgress = true;
252 activityManager.goToSleep(fromTimeout);
253
254 if (isQuickResumeSleep) {
255 saveSleepFrameBuffer();
256 }
257
258 // Tear down WiFi so the modem power domain isn't held alive across deep sleep.
259 // Wake from deep sleep is effectively a chip reset, so no state needs to survive.
260 if (WiFi.getMode() != WIFI_MODE_NULL) {
261 WiFi.disconnect(true);
262 WiFi.mode(WIFI_OFF);
263 }
264
265 halTiltSensor.deepSleep();
266 display.deepSleep();
267 LOG_DBG("MAIN", "Entering deep sleep");
268
269 powerManager.startDeepSleep(gpio);
270}
271
272void setupDisplayAndFonts(bool seamless = false) {
273 display.begin(seamless);

Callers 1

loopFunction · 0.85

Calls 6

saveSleepFrameBufferFunction · 0.85
goToSleepMethod · 0.80
isReaderActivityMethod · 0.45
saveToFileMethod · 0.45
deepSleepMethod · 0.45
startDeepSleepMethod · 0.45

Tested by

no test coverage detected