mirror of
https://github.com/Dasharo/zephyr.git
synced 2026-03-06 14:57:20 -08:00
sensor: bq274xx: support fetching all channels
Change bq274xx_sample_fetch to support SENSOR_CHAN_ALL. This makes it possible to get the sensor data using the sensor shell, besides being generally convenient. Also drop a redundant comment. Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
This commit is contained in:
committed by
Maureen Helm
parent
76509a73b1
commit
4dc7437d45
@@ -357,11 +357,6 @@ static int bq274xx_gauge_configure(const struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief sensor value get
|
||||
*
|
||||
* @return -ENOTSUP for unsupported channels
|
||||
*/
|
||||
static int bq274xx_channel_get(const struct device *dev, enum sensor_channel chan,
|
||||
struct sensor_value *val)
|
||||
{
|
||||
@@ -441,117 +436,115 @@ static int bq274xx_channel_get(const struct device *dev, enum sensor_channel cha
|
||||
static int bq274xx_sample_fetch(const struct device *dev, enum sensor_channel chan)
|
||||
{
|
||||
struct bq274xx_data *data = dev->data;
|
||||
int ret;
|
||||
int ret = -ENOTSUP;
|
||||
|
||||
if (!data->configured) {
|
||||
ret = bq274xx_gauge_configure(dev);
|
||||
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
switch (chan) {
|
||||
case SENSOR_CHAN_GAUGE_VOLTAGE:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_VOLTAGE) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_VOLTAGE,
|
||||
&data->voltage);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read voltage");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_AVG_CURRENT:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_AVG_CURRENT) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_AVG_CURRENT,
|
||||
&data->avg_current);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read average current ");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_TEMP:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_TEMP) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_INT_TEMP,
|
||||
&data->internal_temperature);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read internal temperature");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_STDBY_CURRENT:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_STDBY_CURRENT) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_STDBY_CURRENT,
|
||||
&data->stdby_current);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read standby current");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_MAX_LOAD_CURRENT:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_MAX_LOAD_CURRENT) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_MAX_CURRENT,
|
||||
&data->max_load_current);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read maximum current");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_STATE_OF_CHARGE:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_STATE_OF_CHARGE) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_SOC,
|
||||
&data->state_of_charge);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read state of charge");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_FULL_CHARGE_CAPACITY:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_FULL_CHARGE_CAPACITY) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_FULL_CAPACITY,
|
||||
&data->full_charge_capacity);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read full charge capacity");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_REMAINING_CHARGE_CAPACITY:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_REMAINING_CHARGE_CAPACITY) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_REM_CAPACITY,
|
||||
&data->remaining_charge_capacity);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read remaining charge capacity");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_NOM_AVAIL_CAPACITY:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_NOM_AVAIL_CAPACITY) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_NOM_CAPACITY,
|
||||
&data->nom_avail_capacity);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read nominal available capacity");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_FULL_AVAIL_CAPACITY:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_FULL_AVAIL_CAPACITY) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_AVAIL_CAPACITY,
|
||||
&data->full_avail_capacity);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read full available capacity");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_AVG_POWER:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_AVG_POWER) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_AVG_POWER,
|
||||
&data->avg_power);
|
||||
if (ret < 0) {
|
||||
LOG_ERR("Failed to read battery average power");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SENSOR_CHAN_GAUGE_STATE_OF_HEALTH:
|
||||
if (chan == SENSOR_CHAN_ALL || chan == SENSOR_CHAN_GAUGE_STATE_OF_HEALTH) {
|
||||
ret = bq274xx_cmd_reg_read(dev, BQ274XX_CMD_SOH,
|
||||
&data->state_of_health);
|
||||
|
||||
@@ -561,13 +554,9 @@ static int bq274xx_sample_fetch(const struct device *dev, enum sensor_channel ch
|
||||
LOG_ERR("Failed to read state of health");
|
||||
return -EIO;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user