#ifndef __POWERMANAGER_H__ #define __POWERMANAGER_H__ #include #include "driver/gpio.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" #include "freertos/timers.h" class PowerManager{ public: PowerManager(); void Initialize(); bool IsCharging(); bool IsDischarging(); bool IsChargingDone(); int GetBatteryLevel(); void CheckStartup(); void Start5V(); void Shutdown5V(); void Start4G(); void Shutdown4G(); void Sleep(); void CheckBatteryStatus(); void OnChargingStatusChanged(std::function callback); void OnChargingStatusDisChanged(std::function callback); private: esp_timer_handle_t timer_handle_; std::function charging_callback_; std::function discharging_callback_; int is_charging_ = -1; int is_discharging_ = -1; int call_count_ = 0; }; #endif