diff --git a/drivers/fuel_gauge/sbs_gauge/sbs_gauge.c b/drivers/fuel_gauge/sbs_gauge/sbs_gauge.c index c21b8f67753e27..8e2bcc4a171535 100644 --- a/drivers/fuel_gauge/sbs_gauge/sbs_gauge.c +++ b/drivers/fuel_gauge/sbs_gauge/sbs_gauge.c @@ -95,6 +95,31 @@ static int sbs_gauge_get_prop(const struct device *dev, struct fuel_gauge_get_pr rc = sbs_cmd_reg_read(dev, SBS_GAUGE_CMD_VOLTAGE, &val); prop->value.voltage = val * 1000; break; + case FUEL_GAUGE_MODE: + rc = sbs_cmd_reg_read(dev, SBS_GAUGE_CMD_BATTERY_MODE, &val); + prop->value.mode = val; + break; + case FUEL_GAUGE_CHARGE_CURRENT: + rc = sbs_cmd_reg_read(dev, SBS_GAUGE_CMD_CHG_CURRENT, &val); + prop->value.chg_current = val; + break; + case FUEL_GAUGE_CHARGE_VOLTAGE: + rc = sbs_cmd_reg_read(dev, SBS_GAUGE_CMD_CHG_VOLTAGE, &val); + prop->value.chg_voltage = val; + break; + case FUEL_GAUGE_STATUS: + rc = sbs_cmd_reg_read(dev, SBS_GAUGE_CMD_FLAGS, &val); + prop->value.fg_status = val; + break; + case FUEL_GAUGE_DESIGN_CAPACITY: + rc = sbs_cmd_reg_read(dev, SBS_GAUGE_CMD_NOM_CAPACITY, &val); + prop->value.design_cap = val; + break; + case FUEL_GAUGE_DESIGN_VOLTAGE: + rc = sbs_cmd_reg_read(dev, SBS_GAUGE_CMD_DESIGN_VOLTAGE, &val); + prop->value.design_volt = val; + break; + default: rc = -ENOTSUP; } diff --git a/include/zephyr/drivers/fuel_gauge.h b/include/zephyr/drivers/fuel_gauge.h index 11b4d0924d5884..9eb14215f9321c 100644 --- a/include/zephyr/drivers/fuel_gauge.h +++ b/include/zephyr/drivers/fuel_gauge.h @@ -63,9 +63,21 @@ extern "C" { #define FUEL_GAUGE_TEMPERATURE FUEL_GAUGE_STATE_OF_CHARGE + 1 /** Battery voltage (uV) */ #define FUEL_GAUGE_VOLTAGE FUEL_GAUGE_TEMPERATURE + 1 +/** Battery Mode (flags) */ +#define FUEL_GAUGE_MODE FUEL_GAUGE_VOLTAGE + 1 +/** Battery desired Max Charging Current (mA) */ +#define FUEL_GAUGE_CHARGE_CURRENT FUEL_GAUGE_MODE + 1 +/** Battery desired Max Charging Voltage (mV) */ +#define FUEL_GAUGE_CHARGE_VOLTAGE FUEL_GAUGE_CHARGE_CURRENT + 1 +/** Alarm, Status and Error codes (flags) */ +#define FUEL_GAUGE_STATUS FUEL_GAUGE_CHARGE_VOLTAGE + 1 +/** Design Capacity (mAh or 10mWh) */ +#define FUEL_GAUGE_DESIGN_CAPACITY FUEL_GAUGE_STATUS + 1 +/** Design Voltage (mV) */ +#define FUEL_GAUGE_DESIGN_VOLTAGE FUEL_GAUGE_DESIGN_CAPACITY + 1 /** Reserved to demark end of common fuel gauge properties */ -#define FUEL_GAUGE_COMMON_COUNT FUEL_GAUGE_VOLTAGE + 1 +#define FUEL_GAUGE_COMMON_COUNT FUEL_GAUGE_DESIGN_VOLTAGE + 1 /** * Reserved to demark downstream custom properties - use this value as the actual value may change * over future versions of this API @@ -115,6 +127,18 @@ struct fuel_gauge_get_property { uint16_t temperature; /** FUEL_GAUGE_VOLTAGE */ int voltage; + /** FUEL_GAUGE_MODE */ + uint16_t mode; + /** FUEL_GAUGE_CHARGE_CURRENT */ + uint16_t chg_current; + /** FUEL_GAUGE_CHARGE_VOLTAGE */ + uint16_t chg_voltage; + /** FUEL_GAUGE_STATUS */ + uint16_t fg_status; + /** FUEL_GAUGE_DESIGN_CAPACITY */ + uint16_t design_cap; + /** FUEL_GAUGE_DESIGN_VOLTAGE */ + uint16_t design_volt; } value; };