Files
firmware/src/sleep.h

42 lines
1.3 KiB
C
Raw Normal View History

#pragma once
2020-02-22 12:01:59 -08:00
#include "Arduino.h"
#include "Observer.h"
#include "configuration.h"
2020-02-22 12:01:59 -08:00
2023-04-11 13:32:19 +02:00
void doDeepSleep(uint32_t msecToWake), cpuDeepSleep(uint32_t msecToWake);
2020-10-30 17:05:32 +08:00
#ifdef ARCH_ESP32
#include "esp_sleep.h"
2020-02-22 14:45:58 -08:00
esp_sleep_wakeup_cause_t doLightSleep(uint64_t msecToWake);
extern esp_sleep_source_t wakeCause;
#endif
2020-02-22 13:14:10 -08:00
void setGPSPower(bool on);
void doGPSpowersave(bool on);
// Perform power on init that we do on each wake from deep sleep
void initDeepSleep();
void setCPUFast(bool on);
void setLed(bool ledOn);
/** return true if sleep is allowed right now */
bool doPreflightSleep();
extern int bootCount;
// is bluetooth sw currently running?
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;
/// Called to tell GPS thread to enter deep sleep independently of LoRa/MCU sleep, prior to full poweroff. Must return 0
extern Observable<void *> notifyGPSSleep;
2020-06-15 07:04:03 -07:00
void enableModemSleep();