altosui: Display current GPS in 'pad' tab for 'startup' staten
authorKeith Packard <keithp@keithp.com>
Wed, 3 Apr 2013 00:29:40 +0000 (17:29 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 3 Apr 2013 00:29:40 +0000 (17:29 -0700)
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 <keithp@keithp.com>
altoslib/AltosState.java
altosui/AltosPad.java

index f18bf36..8a3bbd4 100644 (file)
@@ -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)
index 66cb4cf..eb08525 100644 (file)
@@ -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");