altos: Require sequencing through 'main' state before landing
[fw/altos] / src / ao_sample.c
index ef403393cb6c276fbd81c38c46cbe4f559d3dd1a..ac15664663c0b7b2fdb2183d8af3a26b87a4a103 100644 (file)
@@ -37,21 +37,21 @@ __data uint8_t              ao_sample_adc;
  * Sensor calibration values
  */
 
-__xdata int16_t                ao_ground_pres;         /* startup pressure */
-__xdata int16_t                ao_ground_height;       /* MSL of ao_ground_pres */
+__pdata int16_t                ao_ground_pres;         /* startup pressure */
+__pdata int16_t                ao_ground_height;       /* MSL of ao_ground_pres */
 
 #if HAS_ACCEL
-__xdata int16_t                ao_ground_accel;        /* startup acceleration */
-__xdata int16_t                ao_accel_2g;            /* factory accel calibration */
-__xdata int32_t                ao_accel_scale;         /* sensor to m/s² conversion */
+__pdata int16_t                ao_ground_accel;        /* startup acceleration */
+__pdata int16_t                ao_accel_2g;            /* factory accel calibration */
+__pdata int32_t                ao_accel_scale;         /* sensor to m/s² conversion */
 #endif
 
-static __xdata uint8_t ao_preflight;           /* in preflight mode */
+static __pdata uint8_t ao_preflight;           /* in preflight mode */
 
-static __xdata uint16_t        nsamples;
-__xdata int32_t ao_sample_pres_sum;
+static __pdata uint16_t        nsamples;
+__pdata int32_t ao_sample_pres_sum;
 #if HAS_ACCEL
-__xdata int32_t ao_sample_accel_sum;
+__pdata int32_t ao_sample_accel_sum;
 #endif
 
 static void
@@ -68,16 +68,17 @@ ao_sample_preflight(void)
 #endif
                ao_sample_pres_sum += ao_sample_pres;
                ++nsamples;
-               ao_preflight = FALSE;
-       }
-       ao_config_get();
+       } else {
+               ao_config_get();
 #if HAS_ACCEL
-       ao_ground_accel = ao_sample_accel_sum >> 9;
-       ao_accel_2g = ao_config.accel_minus_g - ao_config.accel_plus_g;
-       ao_accel_scale = to_fix32(GRAVITY * 2 * 16) / ao_accel_2g;
+               ao_ground_accel = ao_sample_accel_sum >> 9;
+               ao_accel_2g = ao_config.accel_minus_g - ao_config.accel_plus_g;
+               ao_accel_scale = to_fix32(GRAVITY * 2 * 16) / ao_accel_2g;
 #endif
-       ao_ground_pres = ao_sample_pres_sum >> 9;
-       ao_ground_height = ao_pres_to_altitude(ao_ground_pres);
+               ao_ground_pres = ao_sample_pres_sum >> 9;
+               ao_ground_height = ao_pres_to_altitude(ao_ground_pres);
+               ao_preflight = FALSE;
+       }
 }
 
 uint8_t