X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosState.java;h=403c74be16a70eccbdbf3f9ef34d28da44e000f7;hp=072cb790bfb1161b5d11d2d6c9f86c5ae560185d;hb=3c2f601139d36761de6a8a2210545d082ef16133;hpb=c7f540330c040c521f9d7626009a406e704a5e41 diff --git a/altosui/AltosState.java b/altosui/AltosState.java index 072cb790..403c74be 100644 --- a/altosui/AltosState.java +++ b/altosui/AltosState.java @@ -21,6 +21,8 @@ package altosui; +import org.altusmetrum.AltosLib.*; + public class AltosState { AltosRecord data; @@ -35,6 +37,7 @@ public class AltosState { int state; boolean landed; boolean ascent; /* going up? */ + boolean boost; /* under power */ double ground_altitude; double height; @@ -53,6 +56,9 @@ public class AltosState { AltosGPS gps; + AltosIMU imu; + AltosMag mag; + double pad_lat; double pad_lon; double pad_alt; @@ -106,6 +112,8 @@ public class AltosState { max_acceleration = prev_state.max_acceleration; max_speed = prev_state.max_speed; max_baro_speed = prev_state.max_baro_speed; + imu = prev_state.imu; + mag = prev_state.mag; /* make sure the clock is monotonic */ while (tick < prev_state.tick) @@ -134,7 +142,7 @@ public class AltosState { 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) @@ -166,13 +174,14 @@ public class AltosState { 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)