#ifndef CHARGE_CONTROL_H #define CHARGE_CONTROL_H #include #include // forward declarations struct MeasurementResult; enum ChargeState { CHARGE_WAIT_CHARGEPUMP, CHARGE_INITIAL, CHARGE_TRANSITION, CHARGE_FLOAT, CHARGE_SLEEP, CHARGE_HIGH_TEMPERATURE }; enum DischargeState { DISCHARGE_WAIT_CHARGEPUMP, DISCHARGE_OK, DISCHARGE_VOLTAGE_LOW, DISCHARGE_OVERCURRENT }; // Error flags #define LOAD_OVERCURRENT (1 << 0) #define CHARGE_PUMP_ERROR (1 << 1) #define OVER_TEMPERATURE (1 << 2) void charge_control_init(void); void charge_control_update(uint64_t uptime_ms, struct MeasurementResult *meas); bool charge_control_is_charge_blocked(void); bool charge_control_is_discharge_blocked(void); bool charge_control_is_idle(void); #endif // CHARGE_CONTROL_H