From: Keith Packard Date: Sat, 29 Sep 2012 05:39:55 +0000 (-0700) Subject: altos: Provide MS5611 configuration option, HAS_MS5611 X-Git-Tag: 1.1.9.1~50 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=fdd08cc093134c5f87dab9533b99a042a699381b altos: Provide MS5611 configuration option, HAS_MS5611 MS5611 and MS5607 use slightly different conversion functions. Alas, there doesn't appear to be a way to tell them apart in software. This patch adds the necessary conversion changes and makes them depend on a compile-time configuration option. Signed-off-by: Keith Packard --- diff --git a/src/drivers/ao_ms5607.c b/src/drivers/ao_ms5607.c index 704b4583..b0d5ddd4 100644 --- a/src/drivers/ao_ms5607.c +++ b/src/drivers/ao_ms5607.c @@ -179,9 +179,13 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value TEMP = 2000 + (((int64_t) dT * ms5607_prom.tempsens) >> 23); +#if HAS_MS5611 + OFF = ((int64_t) ms5607_prom.off << 16) + (((int64_t) ms5607_prom.tco * dT) >> 7); + SENS = ((int64_t) ms5607_prom.sens << 15) + (((int64_t) ms5607_prom.tcs * dT) >> 8); +#else OFF = ((int64_t) ms5607_prom.off << 17) + (((int64_t) ms5607_prom.tco * dT) >> 6); - SENS = ((int64_t) ms5607_prom.sens << 16) + (((int64_t) ms5607_prom.tcs * dT) >> 7); +#endif if (TEMP < 2000) { int32_t T2 = ((int64_t) dT * (int64_t) dT) >> 31;