altosui: Report baro ground alt for 'Pad Altitude' when GPS missing
[fw/altos] / altoslib / AltosState.java
index 3ab2c0eb5dd4a4fdcefa95b4c60c7cb3922fdfdb..fc9727481201162bf636e6c4324b2d3140458310 100644 (file)
@@ -20,7 +20,7 @@
  * Track flight state from telemetry or eeprom data stream
  */
 
-package org.altusmetrum.altoslib_13;
+package org.altusmetrum.altoslib_14;
 
 public class AltosState extends AltosDataListener {
 
@@ -307,13 +307,12 @@ public class AltosState extends AltosDataListener {
        class AltosGpsGroundAltitude extends AltosValue {
                void set(double a, double t) {
                        super.set(a, t);
-                       pad_alt = value();
+
                        gps_altitude.set_gps_height();
                }
 
                void set_filtered(double a, double t) {
                        super.set_filtered(a, t);
-                       pad_alt = value();
                        gps_altitude.set_gps_height();
                }
 
@@ -513,26 +512,27 @@ public class AltosState extends AltosDataListener {
        }
 
        public double height() {
-               double k = kalman_height.value();
-               if (k != AltosLib.MISSING)
-                       return k;
-
                double b = baro_height();
                if (b != AltosLib.MISSING)
                        return b;
 
+               double k = kalman_height.value();
+               if (k != AltosLib.MISSING)
+                       return k;
+
                return gps_height();
        }
 
        public double max_height() {
-               double  k = kalman_height.max();
-               if (k != AltosLib.MISSING)
-                       return k;
-
                double a = altitude.max();
                double g = ground_altitude();
                if (a != AltosLib.MISSING && g != AltosLib.MISSING)
                        return a - g;
+
+               double  k = kalman_height.max();
+               if (k != AltosLib.MISSING)
+                       return k;
+
                return max_gps_height();
        }
 
@@ -692,7 +692,7 @@ public class AltosState extends AltosDataListener {
 
        public double   gps_height;
 
-       public double pad_lat, pad_lon, pad_alt;
+       public double pad_lat, pad_lon;
 
        public int      speak_tick;
        public double   speak_altitude;
@@ -774,7 +774,6 @@ public class AltosState extends AltosDataListener {
 
                pad_lat = AltosLib.MISSING;
                pad_lon = AltosLib.MISSING;
-               pad_alt = AltosLib.MISSING;
 
                gps_altitude = new AltosGpsAltitude();
                gps_ground_altitude = new AltosGpsGroundAltitude();
@@ -884,8 +883,8 @@ public class AltosState extends AltosDataListener {
                received_time = ms;
        }
 
-       public void set_gps(AltosGPS gps) {
-               super.set_gps(gps);
+       public void set_gps(AltosGPS gps, boolean set_location, boolean set_sats) {
+               super.set_gps(gps, set_location, set_sats);
                if (gps != null) {
                        this.gps = gps;
                        update_gps();