altos: Make MS5607 PROM a public variable
[fw/altos] / src / drivers / ao_ms5607_convert.c
index e61d19ed61d637eee6fff3e48982cdc82856062b..4d412cbe9ed18ee3e1d47fbdaf1a250230917efa 100644 (file)
@@ -25,16 +25,16 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value
        int64_t OFF;
        int64_t SENS;
 
-       dT = sample->temp - ((int32_t) ms5607_prom.tref << 8);
+       dT = sample->temp - ((int32_t) ao_ms5607_prom.tref << 8);
        
-       TEMP = 2000 + (((int64_t) dT * ms5607_prom.tempsens) >> 23);
+       TEMP = 2000 + (((int64_t) dT * ao_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);
+       OFF = ((int64_t) ao_ms5607_prom.off << 16) + (((int64_t) ao_ms5607_prom.tco * dT) >> 7);
+       SENS = ((int64_t) ao_ms5607_prom.sens << 15) + (((int64_t) ao_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);
+       OFF = ((int64_t) ao_ms5607_prom.off << 17) + (((int64_t) ao_ms5607_prom.tco * dT) >> 6);
+       SENS = ((int64_t) ao_ms5607_prom.sens << 16) + (((int64_t) ao_ms5607_prom.tcs * dT) >> 7);
 #endif
 
        if (TEMP < 2000) {
@@ -42,11 +42,14 @@ ao_ms5607_convert(struct ao_ms5607_sample *sample, struct ao_ms5607_value *value
                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;
-               if (TEMP < 1500) {
+               if (TEMP < -1500) {
                        int32_t TEMPP = TEMP + 1500;
-                       int64_t TEMPP2 = TEMPP * TEMPP;
-                       OFF2 = OFF2 + 15 * TEMPP2;
-                       SENS2 = SENS2 + 8 * TEMPP2;
+                       /* You'd think this would need a 64-bit int, but
+                        * that would imply a temperature below -327.67°C...
+                        */
+                       int32_t TEMPP2 = TEMPP * TEMPP;
+                       OFF2 = OFF2 + (int64_t) 15 * TEMPP2;
+                       SENS2 = SENS2 + (int64_t) 8 * TEMPP2;
                }
                TEMP -= T2;
                OFF -= OFF2;