int state;
boolean landed;
boolean ascent; /* going up? */
+ boolean boost; /* under power */
double ground_altitude;
double height;
int speak_tick;
double speak_altitude;
-
void init (AltosRecord cur, AltosState prev_state) {
int i;
AltosRecord prev;
time = tick / 100.0;
- if (state == Altos.ao_flight_pad || state == Altos.ao_flight_idle) {
+ if (cur.new_gps && (state == Altos.ao_flight_pad || state == Altos.ao_flight_idle)) {
/* Track consecutive 'good' gps reports, waiting for 10 of them */
if (data.gps != null && data.gps.locked && data.gps.nsat >= 4)
ascent = (Altos.ao_flight_boost <= state &&
state <= Altos.ao_flight_coast);
+ boost = (Altos.ao_flight_boost == state);
- /* Only look at accelerometer data on the way up */
- if (ascent && acceleration > max_acceleration)
+ /* Only look at accelerometer data under boost */
+ if (boost && acceleration > max_acceleration)
max_acceleration = acceleration;
- if (ascent && speed > max_speed)
+ if (boost && speed > max_speed)
max_speed = speed;
- if (ascent && baro_speed > max_baro_speed)
+ if (boost && baro_speed > max_baro_speed)
max_baro_speed = baro_speed;
if (height > max_height)