diff options
-rw-r--r-- | altosui/AltosEepromIterable.java | 1 | ||||
-rw-r--r-- | altosui/AltosRecord.java | 3 | ||||
-rw-r--r-- | altosui/AltosState.java | 2 | ||||
-rw-r--r-- | altosui/AltosTelemetryRecordLegacy.java | 6 | ||||
-rw-r--r-- | altosui/AltosTelemetryRecordLocation.java | 1 |
5 files changed, 11 insertions, 2 deletions
diff --git a/altosui/AltosEepromIterable.java b/altosui/AltosEepromIterable.java index 812e5fc6..d8205816 100644 --- a/altosui/AltosEepromIterable.java +++ b/altosui/AltosEepromIterable.java @@ -177,6 +177,7 @@ public class AltosEepromIterable extends AltosRecordIterable { state.gps.locked = (flags & Altos.AO_GPS_VALID) != 0; state.gps.nsat = (flags & Altos.AO_GPS_NUM_SAT_MASK) >> Altos.AO_GPS_NUM_SAT_SHIFT; + state.new_gps = true; has_gps = true; break; case Altos.AO_LOG_GPS_LAT: diff --git a/altosui/AltosRecord.java b/altosui/AltosRecord.java index 486c96b2..4dfa98be 100644 --- a/altosui/AltosRecord.java +++ b/altosui/AltosRecord.java @@ -65,6 +65,7 @@ public class AltosRecord implements Comparable <AltosRecord> { int flight_pres; AltosGPS gps; + boolean new_gps; double time; /* seconds since boost */ @@ -274,6 +275,7 @@ public class AltosRecord implements Comparable <AltosRecord> { speed = old.speed; height = old.height; gps = new AltosGPS(old.gps); + new_gps = false; companion = old.companion; } @@ -304,6 +306,7 @@ public class AltosRecord implements Comparable <AltosRecord> { speed = MISSING; height = MISSING; gps = new AltosGPS(); + new_gps = false; companion = null; } } diff --git a/altosui/AltosState.java b/altosui/AltosState.java index 3d8e5e12..da498bc1 100644 --- a/altosui/AltosState.java +++ b/altosui/AltosState.java @@ -135,7 +135,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) diff --git a/altosui/AltosTelemetryRecordLegacy.java b/altosui/AltosTelemetryRecordLegacy.java index f59027ab..f2f63358 100644 --- a/altosui/AltosTelemetryRecordLegacy.java +++ b/altosui/AltosTelemetryRecordLegacy.java @@ -265,8 +265,10 @@ public class AltosTelemetryRecordLegacy extends AltosRecord implements AltosTele flight_vel = map.get_int(AO_TELEM_ADHOC_SPEED, MISSING); flight_pres = map.get_int(AO_TELEM_ADHOC_BARO, MISSING); - if (map.has(AO_TELEM_GPS_STATE)) + if (map.has(AO_TELEM_GPS_STATE)) { gps = new AltosGPS(map); + new_gps = true; + } else gps = null; } @@ -355,6 +357,7 @@ public class AltosTelemetryRecordLegacy extends AltosRecord implements AltosTele } gps = new AltosGPS(words, i, version); + new_gps = true; } public AltosTelemetryRecordLegacy(String line) throws ParseException, AltosCRCException { @@ -467,6 +470,7 @@ public class AltosTelemetryRecordLegacy extends AltosRecord implements AltosTele if ((gps_flags & (AO_GPS_VALID|AO_GPS_RUNNING)) != 0) { gps = new AltosGPS(); + new_gps = true; seen |= seen_gps_time | seen_gps_lat | seen_gps_lon; gps.nsat = (gps_flags & AO_GPS_NUM_SAT_MASK); diff --git a/altosui/AltosTelemetryRecordLocation.java b/altosui/AltosTelemetryRecordLocation.java index 76bd106e..80db454d 100644 --- a/altosui/AltosTelemetryRecordLocation.java +++ b/altosui/AltosTelemetryRecordLocation.java @@ -85,6 +85,7 @@ public class AltosTelemetryRecordLocation extends AltosTelemetryRecordRaw { next.gps.hdop = hdop; next.gps.vdop = vdop; next.seen |= AltosRecord.seen_gps_time | AltosRecord.seen_gps_lat | AltosRecord.seen_gps_lon; + next.new_gps = true; } return next; |