Skip to content

Commit 6f59533

Browse files
maxmclaukartben
authored andcommitted
drivers: bmp581: change sensor_channel units to match spec
The bmp581 driver currently returns pressure in pascals, when the sensor_channel enum specifies kilopascals. Signed-off-by: Maxmillion McLaughlin <max@sorcerer.earth>
1 parent 7e31f6b commit 6f59533

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

drivers/sensor/bosch/bmp581/bmp581.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -376,14 +376,14 @@ static int bmp581_sample_fetch(const struct device *dev, enum sensor_channel cha
376376
drv->last_sample.temperature.val2 = (data[1] << 8 | data[0]) * 10;
377377

378378
if (drv->osr_odr_press_config.press_en == BMP5_ENABLE) {
379-
uint32_t raw_pressure = (uint32_t)((uint32_t)(data[5] << 16) |
380-
(uint16_t)(data[4] << 8) | data[3]);
381379
/* convert raw sensor data to sensor_value. Shift the decimal part by
382380
* 4 decimal places to compensate for the conversion in
383381
* sensor_value_to_double()
384382
*/
385-
drv->last_sample.pressure.val1 = raw_pressure >> 6;
386-
drv->last_sample.pressure.val2 = (raw_pressure & BIT_MASK(6)) * 10000;
383+
uint32_t raw_pressure = (uint32_t)((uint32_t)(data[5] << 16) |
384+
(uint16_t)(data[4] << 8) | data[3]) >> 6;
385+
drv->last_sample.pressure.val1 = raw_pressure / 1000;
386+
drv->last_sample.pressure.val2 = (raw_pressure % 1000) * 1000;
387387
} else {
388388
drv->last_sample.pressure.val1 = 0;
389389
drv->last_sample.pressure.val2 = 0;
@@ -404,7 +404,7 @@ static int bmp581_channel_get(const struct device *dev, enum sensor_channel chan
404404

405405
switch (chan) {
406406
case SENSOR_CHAN_PRESS:
407-
/* returns pressure in Pa */
407+
/* returns pressure in kPa */
408408
*val = drv->last_sample.pressure;
409409
return BMP5_OK;
410410
case SENSOR_CHAN_AMBIENT_TEMP:

0 commit comments

Comments
 (0)