sleep_timer.h 849 B

1234567891011121314151617181920212223242526272829303132
  1. #pragma once
  2. #include <functional>
  3. #include <esp_timer.h>
  4. #include <esp_pm.h>
  5. class SleepTimer {
  6. public:
  7. SleepTimer(int seconds_to_light_sleep = 20, int seconds_to_deep_sleep = -1);
  8. ~SleepTimer();
  9. void SetEnabled(bool enabled);
  10. void OnEnterLightSleepMode(std::function<void()> callback);
  11. void OnExitLightSleepMode(std::function<void()> callback);
  12. void OnEnterDeepSleepMode(std::function<void()> callback);
  13. void WakeUp();
  14. private:
  15. void CheckTimer();
  16. esp_timer_handle_t sleep_timer_ = nullptr;
  17. bool enabled_ = false;
  18. int ticks_ = 0;
  19. int seconds_to_light_sleep_;
  20. int seconds_to_deep_sleep_;
  21. bool in_light_sleep_mode_ = false;
  22. std::function<void()> on_enter_light_sleep_mode_;
  23. std::function<void()> on_exit_light_sleep_mode_;
  24. std::function<void()> on_enter_deep_sleep_mode_;
  25. };