Avoid 16-bit overflow in velocity computation.
[fw/altos] / ao_flight.c
index 3e747d0668f02399c0d3ec15850d38e36dead71a..51b2cd5eff138d8ff937f2fc3917ca4ca7aa0820 100644 (file)
@@ -170,7 +170,7 @@ ao_flight(void)
                         * so subtract instead of add.
                         */
                        ticks = ao_flight_tick - ao_flight_prev_tick;
-                       ao_vel_change = (((ao_raw_accel + ao_raw_accel_prev) >> 1) - ao_ground_accel);
+                       ao_vel_change = (((ao_raw_accel >> 1) + (ao_raw_accel_prev >> 1)) - ao_ground_accel);
                        ao_raw_accel_prev = ao_raw_accel;
 
                        /* one is a common interval */