diff --git a/drivers/sensors/bmp180_base.c b/drivers/sensors/bmp180_base.c index e388e1ea33a..3ad89e38945 100644 --- a/drivers/sensors/bmp180_base.c +++ b/drivers/sensors/bmp180_base.c @@ -293,7 +293,7 @@ void bmp180_read_press_temp(FAR struct bmp180_dev_s *priv) ****************************************************************************/ int bmp180_getpressure(FAR struct bmp180_dev_s *priv, - FAR float *temperature) + FAR int *temperature) { int32_t x1; int32_t x2; @@ -338,7 +338,9 @@ int bmp180_getpressure(FAR struct bmp180_dev_s *priv, sninfo("Compensated temperature = %" PRId32 "\n", temp); if (temperature != NULL) + { *temperature = temp; + } /* Calculate true pressure */ diff --git a/drivers/sensors/bmp180_base.h b/drivers/sensors/bmp180_base.h index b24080a96fd..7780dda4179 100644 --- a/drivers/sensors/bmp180_base.h +++ b/drivers/sensors/bmp180_base.h @@ -132,6 +132,6 @@ int bmp180_checkid(FAR struct bmp180_dev_s *priv); void bmp180_updatecaldata(FAR struct bmp180_dev_s *priv); void bmp180_read_press_temp(FAR struct bmp180_dev_s *priv); int bmp180_getpressure(FAR struct bmp180_dev_s *priv, - FAR float *temperature); + FAR int *temperature); #endif /* CONFIG_I2C && CONFIG_SENSORS_BMP180 */ diff --git a/drivers/sensors/bmp180_uorb.c b/drivers/sensors/bmp180_uorb.c index 305a7bf91dc..17d5e8e2875 100644 --- a/drivers/sensors/bmp180_uorb.c +++ b/drivers/sensors/bmp180_uorb.c @@ -197,6 +197,8 @@ static void bmp180_worker(FAR void *arg) { FAR struct bmp180_dev_uorb_s *priv = arg; struct sensor_baro baro; + int press; + int temp; DEBUGASSERT(priv != NULL); @@ -204,7 +206,9 @@ static void bmp180_worker(FAR void *arg) bmp180_worker, priv, priv->interval / USEC_PER_TICK); - baro.pressure = bmp180_getpressure(&priv->dev, &baro.temperature) / 100.0f; + press = bmp180_getpressure(&priv->dev, &temp); + baro.temperature = sensor_data_itof(temp); + baro.pressure = sensor_data_divi(press, 100); baro.timestamp = sensor_get_timestamp(); priv->lower.push_event(priv->lower.priv, &baro, sizeof(baro));