2020-02-21 17:01:26 -08:00
|
|
|
#pragma once
|
|
|
|
|
|
2020-02-22 12:01:59 -08:00
|
|
|
#include "Arduino.h"
|
2020-04-14 11:40:49 -07:00
|
|
|
#include "Observer.h"
|
2020-04-14 20:22:27 -07:00
|
|
|
#include "configuration.h"
|
2020-02-22 12:01:59 -08:00
|
|
|
|
2020-10-30 17:05:32 +08:00
|
|
|
void doDeepSleep(uint64_t msecToWake), cpuDeepSleep(uint64_t msecToWake);
|
|
|
|
|
|
2022-07-31 07:11:47 -05:00
|
|
|
#ifdef ARCH_ESP32
|
2020-04-14 20:22:27 -07:00
|
|
|
#include "esp_sleep.h"
|
2020-02-22 14:45:58 -08:00
|
|
|
esp_sleep_wakeup_cause_t doLightSleep(uint64_t msecToWake);
|
2020-04-14 20:22:27 -07:00
|
|
|
|
|
|
|
|
extern esp_sleep_source_t wakeCause;
|
|
|
|
|
#endif
|
2020-02-22 13:14:10 -08:00
|
|
|
void setGPSPower(bool on);
|
2020-02-21 17:01:26 -08:00
|
|
|
|
|
|
|
|
// Perform power on init that we do on each wake from deep sleep
|
|
|
|
|
void initDeepSleep();
|
|
|
|
|
|
|
|
|
|
void setCPUFast(bool on);
|
|
|
|
|
void setLed(bool ledOn);
|
|
|
|
|
|
2020-06-10 14:11:43 -07:00
|
|
|
/** return true if sleep is allowed right now */
|
|
|
|
|
bool doPreflightSleep();
|
|
|
|
|
|
2020-02-21 17:01:26 -08:00
|
|
|
extern int bootCount;
|
|
|
|
|
|
|
|
|
|
// is bluetooth sw currently running?
|
2020-04-14 11:40:49 -07:00
|
|
|
extern bool bluetoothOn;
|
|
|
|
|
|
|
|
|
|
/// Called to ask any observers if they want to veto sleep. Return 1 to veto or 0 to allow sleep to happen
|
|
|
|
|
extern Observable<void *> preflightSleep;
|
|
|
|
|
|
|
|
|
|
/// Called to tell observers we are now entering (light or deep) sleep and you should prepare. Must return 0
|
|
|
|
|
extern Observable<void *> notifySleep;
|
|
|
|
|
|
|
|
|
|
/// Called to tell observers we are now entering (deep) sleep and you should prepare. Must return 0
|
2020-06-15 07:04:03 -07:00
|
|
|
extern Observable<void *> notifyDeepSleep;
|
|
|
|
|
|
|
|
|
|
void enableModemSleep();
|