From a6687ce902a3011796aee93f87d08545e5f0cec9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 26 Mar 2020 10:01:48 -0700 Subject: [PATCH] altosui: Report baro ground alt for 'Pad Altitude' when GPS missing The 'Pad Altitude' field in the pad tab of AltosUI was originally one of three fields designed to report the GPS position of the pad. When TeleMini was added, the code was updated to separate the lat/lon from altitude display, but the pad_alt field in AltosState used for that was still only computed from GPS data. This fix gets rid of the confusing 'pad_alt' field in AltosState and has the 'Pad Altitude' data select either GPS ground altitude or baro ground altitude, depending on whether GPS data is available. signed-off-by: Keith Packard --- altoslib/AltosState.java | 6 ++---- altosui/AltosPad.java | 10 +++++++--- altosuilib/AltosInfoTable.java | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index e3ea0524..fc972748 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -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(); } @@ -693,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; @@ -775,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(); diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index 004bd534..e9bb4e41 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -214,9 +214,13 @@ public class AltosPad extends AltosUIFlightTab { class PadAlt extends AltosUIUnitsIndicator { public double value(AltosState state, int i) { - if (report_pad(state)) - return state.pad_alt; - else if (state.gps != null) + if (report_pad(state)) { + double alt = state.gps_ground_altitude(); + if (alt == AltosLib.MISSING) + alt = state.ground_altitude(); + return alt; + } + else if (state.gps != null && state.gps.alt != AltosLib.MISSING) return state.gps.alt; else return state.altitude(); diff --git a/altosuilib/AltosInfoTable.java b/altosuilib/AltosInfoTable.java index e20a516c..226f112f 100644 --- a/altosuilib/AltosInfoTable.java +++ b/altosuilib/AltosInfoTable.java @@ -242,7 +242,7 @@ public class AltosInfoTable extends JTable implements AltosFlightDisplay, Hierar } info_add_deg(1, "Pad latitude", state.pad_lat, 'N', 'S'); info_add_deg(1, "Pad longitude", state.pad_lon, 'E', 'W'); - info_add_row(1, "Pad GPS alt", "%6.0f m", state.pad_alt); + info_add_row(1, "Pad GPS alt", "%6.0f m", state.gps_ground_altitude()); } if (state.gps.year != AltosLib.MISSING) info_add_row(2, "GPS date", "%04d-%02d-%02d", -- 2.30.2