summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-09-28 22:39:55 -0700
committerKeith Packard <keithp@keithp.com>2012-10-03 07:45:30 -0700
commitfdd08cc093134c5f87dab9533b99a042a699381b (patch)
tree2d642710c424348ee33215feb31b742bca0df915
parentdc7216d286cc7fe8007f5208ad97a630166572f3 (diff)
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 <keithp@keithp.com>
-rw-r--r--src/drivers/ao_ms5607.c6
1 files changed, 5 insertions, 1 deletions
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;