altos: average 512 accel/baro samples at startup instead of 1000
[fw/altos] / src / ao_flight.c
index 980c16be555f67ca389ff0982690689f894bd99c..9f651ae29d214f759efa96a7986590a6d755afcd 100644 (file)
@@ -84,9 +84,6 @@ __xdata uint8_t ao_flight_force_idle;
 #define ACCEL_VEL_MACH VEL_MPS_TO_COUNT(200)
 #define ACCEL_VEL_BOOST        VEL_MPS_TO_COUNT(5)
 
-int32_t accel_vel_mach;
-int32_t accel_vel_boost;
-
 /*
  * Barometer calibration
  *
@@ -199,23 +196,21 @@ ao_flight(void)
 
                        /* startup state:
                         *
-                        * Collect 1000 samples of acceleration and pressure
+                        * Collect 512 samples of acceleration and pressure
                         * data and average them to find the resting values
                         */
-                       if (nsamples < 1000) {
+                       if (nsamples < 512) {
                                ao_raw_accel_sum += ao_raw_accel;
                                ao_raw_pres_sum += ao_raw_pres;
                                ++nsamples;
                                continue;
                        }
-                       ao_ground_accel = (ao_raw_accel_sum / nsamples);
-                       ao_ground_pres = (ao_raw_pres_sum / nsamples);
+                       ao_ground_accel = ao_raw_accel_sum >> 9;
+                       ao_ground_pres = ao_raw_pres_sum >> 9;
                        ao_min_pres = ao_ground_pres;
                        ao_config_get();
                        ao_main_pres = ao_altitude_to_pres(ao_pres_to_altitude(ao_ground_pres) + ao_config.main_deploy);
                        ao_accel_2g = ao_config.accel_minus_g - ao_config.accel_plus_g;
-                       accel_vel_mach = ACCEL_VEL_MACH;
-                       accel_vel_boost = ACCEL_VEL_BOOST;
                        ao_flight_vel = 0;
                        ao_min_vel = 0;
                        ao_old_vel = ao_flight_vel;
@@ -468,11 +463,5 @@ void
 ao_flight_init(void)
 {
        ao_flight_state = ao_flight_startup;
-       ao_interval_min_accel = 0;
-       ao_interval_max_accel = 0x7fff;
-       ao_interval_min_pres = 0;
-       ao_interval_max_pres = 0x7fff;
-       ao_interval_end = AO_INTERVAL_TICKS;
-
        ao_add_task(&flight_task, ao_flight, "flight");
 }