altos: Flush the on-board mega log after every sample interval.
[fw/altos] / src / core / ao_log_mega.c
index e7c2b0d9388dc49213b315191ee94af494a15b78..ba3f7bfc22729a42b3920e89c5e1dab90aad2e56 100644 (file)
@@ -94,6 +94,14 @@ ao_log(void)
        log.tick = ao_sample_tick;
 #if HAS_ACCEL
        log.u.flight.ground_accel = ao_ground_accel;
+#endif
+#if HAS_GYRO
+       log.u.flight.ground_accel_along = ao_ground_accel_along;
+       log.u.flight.ground_accel_across = ao_ground_accel_across;
+       log.u.flight.ground_accel_through = ao_ground_accel_through;
+       log.u.flight.ground_pitch = ao_ground_pitch;
+       log.u.flight.ground_yaw = ao_ground_yaw;
+       log.u.flight.ground_roll = ao_ground_roll;
 #endif
        log.u.flight.ground_pres = ao_ground_pres;
        log.u.flight.flight = ao_flight_number;
@@ -112,18 +120,24 @@ ao_log(void)
                        log.tick = ao_data_ring[ao_log_data_pos].tick;
                        if ((int16_t) (log.tick - next_sensor) >= 0) {
                                log.type = AO_LOG_SENSOR;
+#if HAS_MS5607
                                log.u.sensor.pres = ao_data_ring[ao_log_data_pos].ms5607_raw.pres;
                                log.u.sensor.temp = ao_data_ring[ao_log_data_pos].ms5607_raw.temp;
+#endif
+#if HAS_MPU6000
                                log.u.sensor.accel_x = ao_data_ring[ao_log_data_pos].mpu6000.accel_x;
                                log.u.sensor.accel_y = ao_data_ring[ao_log_data_pos].mpu6000.accel_y;
                                log.u.sensor.accel_z = ao_data_ring[ao_log_data_pos].mpu6000.accel_z;
                                log.u.sensor.gyro_x = ao_data_ring[ao_log_data_pos].mpu6000.gyro_x;
                                log.u.sensor.gyro_y = ao_data_ring[ao_log_data_pos].mpu6000.gyro_y;
                                log.u.sensor.gyro_z = ao_data_ring[ao_log_data_pos].mpu6000.gyro_z;
+#endif
+#if HAS_HMC5883
                                log.u.sensor.mag_x = ao_data_ring[ao_log_data_pos].hmc5883.x;
                                log.u.sensor.mag_y = ao_data_ring[ao_log_data_pos].hmc5883.y;
                                log.u.sensor.mag_z = ao_data_ring[ao_log_data_pos].hmc5883.z;
-                               log.u.sensor.accel = ao_data_ring[ao_log_data_pos].adc.accel;
+#endif
+                               log.u.sensor.accel = ao_data_accel(&ao_data_ring[ao_log_data_pos]);
                                ao_log_mega(&log);
                                if (ao_log_state <= ao_flight_coast)
                                        next_sensor = log.tick + AO_SENSOR_INTERVAL_ASCENT;
@@ -157,6 +171,8 @@ ao_log(void)
                }
 #endif
 
+               ao_log_flush();
+
                /* Wait for a while */
                ao_delay(AO_MS_TO_TICKS(100));