On Thu, May 02, 2024 at 07:16:16PM +0200, Vasileios Amoiridis wrote: > Hi Angel! > > Indeed the datasheet says that the pressure is a signed value. But this comes > in contrast with 2 things: > > 1) The BMP58x sensor does not have a compensation function so the value from the > sensor is a pressure value just in different unit from the one reported by IIO. > And the sensor is able to report in between 30-125kPa according to the > datasheet which are both positive values so it makes more sense to be an > unsigned value. > > 2) According to the BMP5 sensor API [1] provided by Bosch, the pressure is > declared as an unsigned value. > > So, what should we trust? > > [1]: https://github.com/boschsensortec/BMP5_SensorAPI/blob/master/bmp5_defs.h#L895 The pressure sensor reading cannot be negative, as the pressure range of the sensor is 300 - 1250 hPa,so this change does not need to be applied for bmp580_read_press(). Also, the overflow issue does not happen with the pressure reading since the value read back from the device is scaled up only by 2^6 for pressure vs 2^16 for temperature, so multiplying by 1000 even for the maximum value would still fit in a 32-bit signed integer. Temperature ranges above ~32.767C, however, will overflow a 32-bit signed integer when multiplied by 2^16 * 1000 which is why this change is necessary only for temperature readings. Hope this helps clarify. Best, Adam