This allows projects to store the altitude data in different
representations or with different access modes.
By default, altitude data is stored in meters, but the initializers
include decimeter values so those can be used instead if desired.
Signed-off-by: Keith Packard <keithp@keithp.com>
-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"
};
#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)
#define ALT_SCALE (1 << ALT_SHIFT)
#define ALT_MASK (ALT_SCALE - 1)
real i_v;
r_v = sample * l.m + l.b;
real i_v;
r_v = sample * l.m + l.b;
- i_v = (round(alt_part[sub]) * (seg_len - off) + round(alt_part[sub+1]) * off) / seg_len;
- return i_v;
+ i_v = (round(alt_part[sub]*10) * (seg_len - off) + round(alt_part[sub+1]*10) * off) / seg_len;
+ return i_v/10;
printf ("#define NALT %d\n", dim(alt_part));
printf ("#define ALT_SHIFT %d\n", pa_part_shift + pa_sample_shift);
printf ("#define NALT %d\n", dim(alt_part));
printf ("#define ALT_SHIFT %d\n", pa_part_shift + pa_sample_shift);
-printf ("#ifndef SATURATE\n#define SATURATE(x) (x)\n#endif\n");
+printf ("#ifndef AO_ALT_VALUE\n#define AO_ALT_VALUE(x) (alt_t) (x)\n#endif\n");
for (int part = 0; part < dim(alt_part); part++) {
real kPa = sample_to_Pa(part_to_sample(part)) / 1000;
for (int part = 0; part < dim(alt_part); part++) {
real kPa = sample_to_Pa(part_to_sample(part)) / 1000;
- printf ("SATURATE(%9d), /* %6.2f kPa error %6.2fm */\n",
- round (alt_part[part]), kPa,
+ printf ("AO_ALT_VALUE(%10.1f), /* %6.2f kPa error %6.2fm */\n",
+ round (alt_part[part]*10) / 10, kPa,