altos: Make sure pa to altitude conversion is done with 32 bits
[fw/altos] / src / core / ao_log_mega.c
index 1763b9ebac6ad39e88a1b6592b0095d33ce80843..ac1590db760f67ee82506a07ced3b87ce711480d 100644 (file)
@@ -23,6 +23,8 @@
 static __xdata uint8_t ao_log_mutex;
 static __xdata struct ao_log_mega log;
 
+__code uint8_t ao_log_format = AO_LOG_FORMAT_MEGAMETRUM;
+
 static uint8_t
 ao_log_csum(__xdata uint8_t *b) __reentrant
 {
@@ -110,14 +112,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;