drivers: sensor: ina23x: fix sample fetching

Fix the usage of sensor shell module that calls sensor_sample_fetch
function with SENSOR_CHAN_ALL id which is not supported and
causes the following error:

uart:~$ sensor get INA237 current
Failed to read sensor: -134
channel idx=31 current =   0.000000

Fix that by adding support for SENSOR_CHAN_ALL channel id.

Signed-off-by: Bartosz Bilas <b.bilas@grinn-global.com>
This commit is contained in:
Bartosz Bilas 2021-10-21 17:56:28 +02:00 committed by Maureen Helm
commit 919b3f9165

View file

@ -159,33 +159,35 @@ static int ina23x_sample_fetch(const struct device *dev,
struct ina23x_data *ina23x = dev->data; struct ina23x_data *ina23x = dev->data;
int ret; int ret;
switch (chan) { if (chan != SENSOR_CHAN_ALL &&
case SENSOR_CHAN_VOLTAGE: chan != SENSOR_CHAN_VOLTAGE &&
chan != SENSOR_CHAN_CURRENT &&
chan != SENSOR_CHAN_POWER) {
return -ENOTSUP;
}
if ((chan == SENSOR_CHAN_ALL) || (chan == SENSOR_CHAN_VOLTAGE)) {
ret = ina23x_reg_read(dev, INA23X_REG_BUS_VOLT, &ina23x->bus_voltage); ret = ina23x_reg_read(dev, INA23X_REG_BUS_VOLT, &ina23x->bus_voltage);
if (ret < 0) { if (ret < 0) {
LOG_ERR("Failed to read bus voltage"); LOG_ERR("Failed to read bus voltage");
return ret; return ret;
} }
break; }
case SENSOR_CHAN_CURRENT: if ((chan == SENSOR_CHAN_ALL) || (chan == SENSOR_CHAN_CURRENT)) {
ret = ina23x_reg_read(dev, INA23X_REG_CURRENT, &ina23x->current); ret = ina23x_reg_read(dev, INA23X_REG_CURRENT, &ina23x->current);
if (ret < 0) { if (ret < 0) {
LOG_ERR("Failed to read current"); LOG_ERR("Failed to read current");
return ret; return ret;
} }
break; }
case SENSOR_CHAN_POWER: if ((chan == SENSOR_CHAN_ALL) || (chan == SENSOR_CHAN_POWER)) {
ret = ina23x_reg_read(dev, INA23X_REG_POWER, &ina23x->power); ret = ina23x_reg_read(dev, INA23X_REG_POWER, &ina23x->power);
if (ret < 0) { if (ret < 0) {
LOG_ERR("Failed to read power"); LOG_ERR("Failed to read power");
return ret; return ret;
} }
break;
default:
return -ENOTSUP;
} }
return 0; return 0;