#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 Enable4G(); void Disable4G(); void Sleep(); void CheckBatteryStatus(); void OnChargingStatusChanged(std::function callback); void OnChargingStatusDisChanged(std::function callback); void OnBtLinkStatusChanged(std::function callback); void InitializeBtModul(); void DeinitBtModul(); private: esp_timer_handle_t timer_handle_; std::function charging_callback_; std::function discharging_callback_; std::function bt_link_callback_; int is_charging_ = -1; int is_discharging_ = -1; int call_count_ = 0; TaskHandle_t m_bt_task_handle; static void BtTask(void *arg); }; #endif