7#ifdef USE_BQ25186_PG_GPO
15static constexpr uint8_t BQ25186_REG_STAT0 = 0x00;
16static constexpr uint8_t BQ25186_REG_STAT1 = 0x01;
17static constexpr uint8_t BQ25186_REG_FLAG0 = 0x02;
18static constexpr uint8_t BQ25186_REG_VBAT_CTRL = 0x03;
19static constexpr uint8_t BQ25186_REG_ICHG_CTRL = 0x04;
20static constexpr uint8_t BQ25186_REG_CHARGECTRL0 = 0x05;
21static constexpr uint8_t BQ25186_REG_CHARGECTRL1 = 0x06;
22static constexpr uint8_t BQ25186_REG_IC_CTRL = 0x07;
23static constexpr uint8_t BQ25186_REG_TMR_ILIM = 0x08;
24static constexpr uint8_t BQ25186_REG_SHIP_RST = 0x09;
25static constexpr uint8_t BQ25186_REG_SYS_REG = 0x0A;
26static constexpr uint8_t BQ25186_REG_TS_CONTROL = 0x0B;
27static constexpr uint8_t BQ25186_REG_MASK_ID = 0x0C;
28static constexpr size_t BQ25186_CONFIG_REGISTER_COUNT = BQ25186_REG_MASK_ID - BQ25186_REG_VBAT_CTRL + 1;
31static constexpr size_t BQ25186_STATUS_REGISTER_COUNT = BQ25186_REG_MASK_ID - BQ25186_REG_STAT0 + 1;
34static constexpr uint8_t BQ25186_VBAT_CTRL_PG_MODE = 0x80;
35static constexpr uint8_t BQ25186_SYS_REG_PG_GPO_LEVEL = 0x10;
46 void setup()
override;
55#ifdef BQ25186_BINARY_SENSOR_COUNT
58#ifdef BQ25186_TEXT_SENSOR_COUNT
61#ifdef USE_BQ25186_PG_GPO
65 return this->
update_register_(BQ25186_REG_SYS_REG, BQ25186_SYS_REG_PG_GPO_LEVEL,
66 level ? BQ25186_SYS_REG_PG_GPO_LEVEL : 0);
76#ifdef USE_BQ25186_PG_GPO
81#ifdef BQ25186_BINARY_SENSOR_COUNT
84#ifdef BQ25186_TEXT_SENSOR_COUNT
87#ifdef USE_BQ25186_PG_GPO
This class simplifies creating components that periodically check a state.
Minimal static vector - saves memory by avoiding std::vector overhead.
One field of a status register; match has a bit set for each field value that reads as on.
StaticVector< BQ25186TextSensor *, BQ25186_TEXT_SENSOR_COUNT > text_sensors_
BQ25186ConfigRegisters regs_
bool write_pg_gpo_level(bool level)
void check_pg_gpo_(const BQ25186StatusRegisters &status, bool &pending)
switch_::Switch * pg_gpo_switch_
StaticVector< BQ25186BinarySensor *, BQ25186_BINARY_SENSOR_COUNT > binary_sensors_
bool write_register_(uint8_t reg, uint8_t value)
bool config_matches_(const BQ25186StatusRegisters ®s) const
bool apply_config(const BQ25186ConfigRegisters ®s)
uint8_t expected_register_(size_t index) const
bool update_register_(uint8_t reg, uint8_t mask, uint8_t value)
void dump_config() override
void register_text_sensor(BQ25186TextSensor *sensor)
bool write_ship_rst(uint8_t mask, uint8_t value)
Write the masked bits of SHIP_RST.
void set_setup_registers(const BQ25186ConfigRegisters ®s)
void set_pg_gpo_switch(switch_::Switch *pg_gpo_switch)
The /PG/GPO pin is put in general purpose output mode when a switch drives it.
void register_binary_sensor(BQ25186BinarySensor *sensor)
A two-bit status field; first is the string table index of the field's value 0.
This Class provides the methods to read/write bytes from/to an i2c device.
I2CRegister reg(uint8_t a_register)
calls the I2CRegister constructor
Base class for all switches.
std::array< uint8_t, BQ25186_CONFIG_REGISTER_COUNT > BQ25186ConfigRegisters
std::array< uint8_t, BQ25186_STATUS_REGISTER_COUNT > BQ25186StatusRegisters