X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fdrivers%2Fao_ms5607_convert.c;h=0e96f60bbff3284e21edd6f78dd03c5cb28a87f7;hb=refs%2Fheads%2Fmaster;hp=4d412cbe9ed18ee3e1d47fbdaf1a250230917efa;hpb=3d5db24708b37d86eac187169e2553a408dfeb83;p=fw%2Faltos diff --git a/src/drivers/ao_ms5607_convert.c b/src/drivers/ao_ms5607_convert.c index 4d412cbe..a7c2fbc2 100644 --- a/src/drivers/ao_ms5607_convert.c +++ b/src/drivers/ao_ms5607_convert.c @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -25,9 +26,9 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value int64_t OFF; int64_t SENS; - dT = sample->temp - ((int32_t) ao_ms5607_prom.tref << 8); + dT = (int32_t) ((int32_t) sample->temp - ((int32_t) ao_ms5607_prom.tref << 8)); - TEMP = 2000 + (((int64_t) dT * ao_ms5607_prom.tempsens) >> 23); + TEMP = (int32_t) (2000 + (((int64_t) dT * ao_ms5607_prom.tempsens) >> 23)); #if HAS_MS5611 OFF = ((int64_t) ao_ms5607_prom.off << 16) + (((int64_t) ao_ms5607_prom.tco * dT) >> 7); @@ -38,7 +39,7 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value #endif if (TEMP < 2000) { - int32_t T2 = ((int64_t) dT * (int64_t) dT) >> 31; + int32_t T2 = (int32_t) (((int64_t) dT * (int64_t) dT) >> 31); int32_t TEMPM = TEMP - 2000; int64_t OFF2 = (61 * (int64_t) TEMPM * (int64_t) TEMPM) >> 4; int64_t SENS2 = 2 * (int64_t) TEMPM * (int64_t) TEMPM; @@ -56,6 +57,6 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value SENS -= SENS2; } - value->pres = ((((int64_t) sample->pres * SENS) >> 21) - OFF) >> 15; + value->pres = (int32_t) (((((int64_t) sample->pres * SENS) >> 21) - OFF) >> 15); value->temp = TEMP; }