From 67b8bdb4ea8c22688d4f18416593346585595cfa Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 2 Apr 2013 17:29:40 -0700 Subject: [PATCH] altosui: Display current GPS in 'pad' tab for 'startup' staten This is the state for telegps, so just display the current GPS info as we don't know where it started at. Signed-off-by: Keith Packard --- altoslib/AltosState.java | 24 ++++++++++++------------ altosui/AltosPad.java | 39 +++++++++++++++++++++++++++++++++------ 2 files changed, 45 insertions(+), 18 deletions(-) diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index f18bf368..8a3bbd4c 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -98,14 +98,16 @@ public class AltosState { ground_altitude = data.ground_altitude(); altitude = data.altitude(); + if (altitude == AltosRecord.MISSING && data.gps != null) + altitude = data.gps.alt; height = AltosRecord.MISSING; if (data.kalman_height != AltosRecord.MISSING) height = data.kalman_height; else { - if (prev_state != null && altitude != AltosRecord.MISSING && ground_altitude != AltosRecord.MISSING) { + if (altitude != AltosRecord.MISSING && ground_altitude != AltosRecord.MISSING) { double cur_height = altitude - ground_altitude; - if (prev_state.height == AltosRecord.MISSING) + if (prev_state == null || prev_state.height == AltosRecord.MISSING) height = cur_height; else height = (prev_state.height * 15 + cur_height) / 16.0; @@ -116,10 +118,8 @@ public class AltosState { if (data.kalman_acceleration != AltosRecord.MISSING) acceleration = data.kalman_acceleration; - else { + else acceleration = data.acceleration(); - System.out.printf ("data acceleration %g\n", acceleration); - } temperature = data.temperature(); drogue_sense = data.drogue_voltage(); main_sense = data.main_voltage(); @@ -179,10 +179,10 @@ public class AltosState { gps = null; baro_speed = AltosRecord.MISSING; accel_speed = AltosRecord.MISSING; - max_baro_speed = AltosRecord.MISSING; - max_accel_speed = AltosRecord.MISSING; - max_height = AltosRecord.MISSING; - max_acceleration = AltosRecord.MISSING; + max_baro_speed = 0; + max_accel_speed = 0; + max_height = 0; + max_acceleration = 0; time_change = 0; } @@ -230,12 +230,12 @@ public class AltosState { /* Only look at accelerometer data under boost */ if (boost && acceleration != AltosRecord.MISSING && (max_acceleration == AltosRecord.MISSING || acceleration > max_acceleration)) max_acceleration = acceleration; - if (boost && accel_speed != AltosRecord.MISSING && (max_accel_speed == AltosRecord.MISSING || accel_speed > max_accel_speed)) + if (boost && accel_speed != AltosRecord.MISSING && accel_speed > max_accel_speed) max_accel_speed = accel_speed; - if (boost && baro_speed != AltosRecord.MISSING && (max_baro_speed == AltosRecord.MISSING || baro_speed > max_baro_speed)) + if (boost && baro_speed != AltosRecord.MISSING && baro_speed > max_baro_speed) max_baro_speed = baro_speed; - if (height != AltosRecord.MISSING || (max_height == AltosRecord.MISSING || height > max_height)) + if (height != AltosRecord.MISSING && height > max_height) max_height = height; if (data.gps != null) { if (gps == null || !gps.locked || data.gps.locked) diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index 66cb4cfc..eb08525c 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -66,6 +66,10 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { value.setFont(Altos.value_font); } + public void set_label(String text) { + label.setText(text); + } + public LaunchStatus (GridBagLayout layout, int y, String text) { GridBagConstraints c = new GridBagConstraints(); c.weighty = 1; @@ -135,6 +139,10 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { show(String.format(format, v)); } + public void set_label(String text) { + label.setText(text); + } + void reset() { value.setText(""); } @@ -267,7 +275,13 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class PadLat extends LaunchValue { void show (AltosState state, int crc_errors) { - show(pos(state.pad_lat,"N", "S")); + if (state.state < AltosLib.ao_flight_pad && state.gps != null) { + show(pos(state.gps.lat,"N", "S")); + set_label("Latitude"); + } else { + show(pos(state.pad_lat,"N", "S")); + set_label("Pad Latitude"); + } } public PadLat (GridBagLayout layout, int y) { super (layout, y, "Pad Latitude"); @@ -278,7 +292,13 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class PadLon extends LaunchValue { void show (AltosState state, int crc_errors) { - show(pos(state.pad_lon,"E", "W")); + if (state.state < AltosLib.ao_flight_pad && state.gps != null) { + show(pos(state.gps.lon,"E", "W")); + set_label("Longitude"); + } else { + show(pos(state.pad_lon,"E", "W")); + set_label("Pad Longitude"); + } } public PadLon (GridBagLayout layout, int y) { super (layout, y, "Pad Longitude"); @@ -289,10 +309,17 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class PadAlt extends LaunchValue { void show (AltosState state, int crc_errors) { - if (state.pad_alt == AltosRecord.MISSING) - hide(); - else - show("%4.0f m", state.pad_alt); + if (state.state < AltosLib.ao_flight_pad && state.gps != null) { + show("%4.0f m", state.gps.alt); + set_label("Altitude"); + } else { + if (state.pad_alt == AltosRecord.MISSING) + hide(); + else { + show("%4.0f m", state.pad_alt); + set_label("Pad Altitude"); + } + } } public PadAlt (GridBagLayout layout, int y) { super (layout, y, "Pad Altitude"); -- 2.30.2