X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosCalData.java;h=ae0a9294800348cc396445cf7ffc1a1e749820f6;hb=855a7d243a5a85728a7b23fdfe9485d4ecaf71cf;hp=58d34abeb0e738dca8bcc0964fef69f650f41604;hpb=f26cfe417c6977cf1e7e75a4f050e25f64d41859;p=fw%2Faltos diff --git a/altoslib/AltosCalData.java b/altoslib/AltosCalData.java index 58d34abe..ae0a9294 100644 --- a/altoslib/AltosCalData.java +++ b/altoslib/AltosCalData.java @@ -204,12 +204,15 @@ public class AltosCalData { this.state = state; } - public double gps_ground_altitude = AltosLib.MISSING; + public AltosGPS gps_pad = null; - public void set_gps_altitude(double altitude) { - if ((state != AltosLib.MISSING && state < AltosLib.ao_flight_boost) || - gps_ground_altitude == AltosLib.MISSING) - gps_ground_altitude = altitude; + public double gps_pad_altitude = AltosLib.MISSING; + + public void set_gps(AltosGPS gps) { + if ((state != AltosLib.MISSING && state < AltosLib.ao_flight_boost) || gps_pad == null) + gps_pad = gps; + if (gps_pad_altitude == AltosLib.MISSING && gps.alt != AltosLib.MISSING) + gps_pad_altitude = gps.alt; } /* @@ -217,6 +220,7 @@ public class AltosCalData { * object and then deliver the result atomically to the listener */ AltosGPS temp_gps = null; + AltosGPS prev_gps = null; int temp_gps_sat_tick = AltosLib.MISSING; public AltosGPS temp_gps() { @@ -226,9 +230,10 @@ public class AltosCalData { public void reset_temp_gps() { if (temp_gps != null) { if (temp_gps.locked && temp_gps.nsat >= 4) - set_gps_altitude(temp_gps.alt); + set_gps(temp_gps); + prev_gps = temp_gps; + temp_gps = null; } - temp_gps = null; } public boolean gps_pending() { @@ -237,7 +242,10 @@ public class AltosCalData { public AltosGPS make_temp_gps(int tick, boolean sats) { if (temp_gps == null) { - temp_gps = new AltosGPS(); + if (prev_gps != null) + temp_gps = prev_gps.clone(); + else + temp_gps = new AltosGPS(); } if (sats) { if (tick != temp_gps_sat_tick)