altoslib: Missed a couple of easy mini voltage API changes
[fw/altos] / src / core / ao_log_mega.c
index 404e6bf7325e10950d4f143b894ad60b821ff61e..768947d541728159f7e86d16c30d2122ad4a4914 100644 (file)
@@ -23,7 +23,7 @@
 static __xdata uint8_t ao_log_mutex;
 static __xdata struct ao_log_mega log;
 
-__code uint8_t ao_log_format = AO_LOG_FORMAT_MEGAMETRUM;
+__code uint8_t ao_log_format = AO_LOG_FORMAT_TELEMEGA;
 
 static uint8_t
 ao_log_csum(__xdata uint8_t *b) __reentrant
@@ -65,6 +65,7 @@ ao_log_dump_check_data(void)
        return 1;
 }
 
+#if HAS_ADC
 static __data uint8_t  ao_log_data_pos;
 
 /* a hack to make sure that ao_log_megas fill the eeprom block in even units */
@@ -94,6 +95,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,14 +121,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;
-                               log.u.sensor.pres = ao_data_ring[ao_log_data_pos].ms5607.pres;
-                               log.u.sensor.temp = ao_data_ring[ao_log_data_pos].ms5607.temp;
+#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;
+#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;
@@ -133,6 +152,7 @@ ao_log(void)
                                log.u.volt.n_sense = AO_ADC_NUM_SENSE;
                                for (i = 0; i < AO_ADC_NUM_SENSE; i++)
                                        log.u.volt.sense[i] = ao_data_ring[ao_log_data_pos].adc.sense[i];
+                               log.u.volt.pyro = ao_pyro_fired;
                                ao_log_mega(&log);
                                next_other = log.tick + AO_OTHER_INTERVAL;
                        }
@@ -153,6 +173,8 @@ ao_log(void)
                }
 #endif
 
+               ao_log_flush();
+
                /* Wait for a while */
                ao_delay(AO_MS_TO_TICKS(100));
 
@@ -161,6 +183,7 @@ ao_log(void)
                        ao_sleep(&ao_log_running);
        }
 }
+#endif
 
 uint16_t
 ao_log_flight(uint8_t slot)