static __xdata uint8_t ao_log_mutex;
static __xdata struct ao_log_mega log;
+__code uint8_t ao_log_format = AO_LOG_FORMAT_TELEMEGA;
+
static uint8_t
ao_log_csum(__xdata uint8_t *b) __reentrant
{
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;
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;
}
#endif
+ ao_log_flush();
+
/* Wait for a while */
ao_delay(AO_MS_TO_TICKS(100));