adc_battery_monitor.h 858 B

123456789101112131415161718192021222324252627282930
  1. #ifndef ADC_BATTERY_MONITOR_H
  2. #define ADC_BATTERY_MONITOR_H
  3. #include <functional>
  4. #include <driver/gpio.h>
  5. #include <adc_battery_estimation.h>
  6. #include <esp_timer.h>
  7. class AdcBatteryMonitor {
  8. public:
  9. AdcBatteryMonitor(adc_unit_t adc_unit, adc_channel_t adc_channel, float upper_resistor, float lower_resistor, gpio_num_t charging_pin = GPIO_NUM_NC);
  10. ~AdcBatteryMonitor();
  11. bool IsCharging();
  12. bool IsDischarging();
  13. uint8_t GetBatteryLevel();
  14. void OnChargingStatusChanged(std::function<void(bool)> callback);
  15. private:
  16. gpio_num_t charging_pin_;
  17. adc_battery_estimation_handle_t adc_battery_estimation_handle_ = nullptr;
  18. esp_timer_handle_t timer_handle_ = nullptr;
  19. bool is_charging_ = false;
  20. std::function<void(bool)> on_charging_status_changed_;
  21. void CheckBatteryStatus();
  22. };
  23. #endif // ADC_BATTERY_MONITOR_H