mirror of
https://github.com/meshtastic/firmware.git
synced 2025-02-10 06:31:25 +00:00
![Ben Meadors](/assets/img/avatar_default.png)
* WIP * Sleepy sleepy low power tracker * Sleepy tracker clear * NRF52 PoC * Simplify NRF52 "sleep" * Trackers aren't polite * Remove unnecessary include * Removed accidental commit * Fixed not-so-sleepy T-Beam due to button gpio mask precendence * Added sleepOnNextExecution for allowing fulfillment of pending messages before shutting down * Cleanup * Don't wantResponse for trackers * Heltec wireless tracker doesn't like the button interrupt (maybe all s3 because user button press doubles as bootloader mode trigger?)
46 lines
1.3 KiB
C
46 lines
1.3 KiB
C
#pragma once
|
|
|
|
#include "Arduino.h"
|
|
#include "Observer.h"
|
|
#include "configuration.h"
|
|
|
|
void doDeepSleep(uint32_t msecToWake, bool skipPreflight), cpuDeepSleep(uint32_t msecToWake);
|
|
|
|
#ifdef ARCH_ESP32
|
|
#include "esp_sleep.h"
|
|
esp_sleep_wakeup_cause_t doLightSleep(uint64_t msecToWake);
|
|
|
|
extern esp_sleep_source_t wakeCause;
|
|
#endif
|
|
|
|
#ifdef HAS_PMU
|
|
#include "XPowersLibInterface.hpp"
|
|
extern XPowersLibInterface *PMU;
|
|
#endif
|
|
|
|
// 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
|
|
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;
|
|
void enableModemSleep(); |