41 lines
759 B
C
41 lines
759 B
C
|
#ifndef CHARGE_CONTROL_H
|
||
|
#define CHARGE_CONTROL_H
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <stdbool.h>
|
||
|
|
||
|
// 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);
|
||
|
|
||
|
#endif // CHARGE_CONTROL_H
|