altoslib: Missed a couple of easy mini voltage API changes
[fw/altos] / src / core / ao_convert_pa.c
index 0c93caea60550acd80dac0a879453774fd532050..fe6e0ef699b803de2b6109e088ee638ac1be0431 100644 (file)
 #include "ao.h"
 #endif
 
-static const int32_t altitude_table[] = {
+#ifndef AO_CONST_ATTRIB
+#define AO_CONST_ATTRIB
+#endif
+
+static const alt_t altitude_table[] AO_CONST_ATTRIB = {
 #include "altitude-pa.h"
 };
 
+#ifndef FETCH_ALT
+#define FETCH_ALT(o)   altitude_table[o]
+#endif
+
 #define ALT_SCALE      (1 << ALT_SHIFT)
 #define ALT_MASK       (ALT_SCALE - 1)
 
-int32_t
+alt_t
 ao_pa_to_altitude(int32_t pa)
 {
        int16_t o;
@@ -35,16 +43,17 @@ ao_pa_to_altitude(int32_t pa)
 
        if (pa < 0)
                pa = 0;
-       if (pa > 120000)
-               pa = 120000;
+       if (pa > 120000L)
+               pa = 120000L;
        o = pa >> ALT_SHIFT;
        part = pa & ALT_MASK;
 
-       low = (int32_t) altitude_table[o] * (ALT_SCALE - part);
-       high = (int32_t) altitude_table[o+1] * part + (ALT_SCALE >> 1);
+       low = (int32_t) FETCH_ALT(o) * (ALT_SCALE - part);
+       high = (int32_t) FETCH_ALT(o+1) * part + (ALT_SCALE >> 1);
        return (low + high) >> ALT_SHIFT;
 }
 
+#ifdef AO_CONVERT_TEST
 int32_t
 ao_altitude_to_pa(int32_t alt)
 {
@@ -70,3 +79,4 @@ ao_altitude_to_pa(int32_t alt)
                pa = 0;
        return pa;
 }
+#endif