#ifndef ADC_BATTERY_MONITOR_H #define ADC_BATTERY_MONITOR_H #include #include #include #include class AdcBatteryMonitor { public: 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); ~AdcBatteryMonitor(); bool IsCharging(); bool IsDischarging(); uint8_t GetBatteryLevel(); void OnChargingStatusChanged(std::function callback); private: gpio_num_t charging_pin_; adc_battery_estimation_handle_t adc_battery_estimation_handle_ = nullptr; esp_timer_handle_t timer_handle_ = nullptr; bool is_charging_ = false; std::function on_charging_status_changed_; void CheckBatteryStatus(); }; #endif // ADC_BATTERY_MONITOR_H