#include <ao_data.h>
#endif
+#ifndef HAS_KALMAN
+#define HAS_KALMAN 1
+#endif
+
#if HAS_GYRO
#include <ao_quaternion.h>
#endif
angle_t ao_sample_orients[AO_NUM_ORIENT];
uint8_t ao_sample_orient_pos;
#endif
-#ifdef HAS_MOTOR_PRESSURE
+#if HAS_MOTOR_PRESSURE
motor_pressure_t ao_sample_motor_pressure;
#endif
ao_sample_set_one_orient(void)
{
ao_sample_orients[ao_sample_orient_pos] = ao_sample_orient;
- ao_sample_orient_pos = (ao_sample_orient_pos + 1) % AO_NUM_ORIENT;
+ ao_sample_orient_pos = (uint8_t) ((ao_sample_orient_pos + 1) % AO_NUM_ORIENT);
}
static void
float rotz;
rotz = ao_rotation.z * ao_rotation.z - ao_rotation.y * ao_rotation.y - ao_rotation.x * ao_rotation.x + ao_rotation.r * ao_rotation.r;
- ao_sample_orient = acosf(rotz) * (float) (180.0/M_PI);
+ ao_sample_orient = (angle_t) (acosf(rotz) * (float) (180.0/M_PI));
}
#endif /* HAS_GYRO */
ao_sample_preflight_set(void)
{
#if HAS_ACCEL
- ao_ground_accel = ao_sample_accel_sum >> 9;
+ ao_ground_accel = (accel_t) (ao_sample_accel_sum >> 9);
ao_sample_accel_sum = 0;
#endif
#if HAS_BARO
ao_sample_pres_sum = 0;
#endif
#if HAS_IMU
- ao_ground_accel_along = ao_sample_accel_along_sum >> 9;
- ao_ground_accel_across = ao_sample_accel_across_sum >> 9;
- ao_ground_accel_through = ao_sample_accel_through_sum >> 9;
+ ao_ground_accel_along = (accel_t) (ao_sample_accel_along_sum >> 9);
+ ao_ground_accel_across = (accel_t) (ao_sample_accel_across_sum >> 9);
+ ao_ground_accel_through = (accel_t) (ao_sample_accel_through_sum >> 9);
ao_sample_accel_along_sum = 0;
ao_sample_accel_across_sum = 0;
ao_sample_accel_through_sum = 0;
#endif
#if HAS_MOTOR_PRESSURE
- ao_ground_motor_pressure = ao_sample_motor_pressure_sum >> 9;
+ ao_ground_motor_pressure = (motor_pressure_t) (ao_sample_motor_pressure_sum >> 9);
ao_sample_motor_pressure_sum = 0;
#endif
#if HAS_GYRO
++nsamples;
else
ao_sample_preflight_set();
-#if !HAS_BARO
+#if !HAS_BARO && HAS_KALMAN
if ((nsamples & 0x3f) == 0)
ao_kalman_reset_accumulate();
#endif
else {
if (ao_flight_state < ao_flight_boost)
ao_sample_preflight_update();
+#if HAS_KALMAN
ao_kalman();
+#endif
#if HAS_GYRO
ao_sample_rotate();
#endif