From 97ab77d548964115e4b41ad5952194fcd1455c96 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 14 Sep 2012 11:13:02 -0700 Subject: [PATCH 1/1] altosui: Fix Landed tab units And clean up the whole flight value reporting code base. It would be nice to create a separate class to make this easier; at present there's a bunch of customization embedded in how values are presented in each tab. Reported by: Bdale Garbee Signed-off-by: Keith Packard --- altosui/AltosAscent.java | 43 ++++++++++++++++++++------- altosui/AltosDescent.java | 28 +++++++++++------- altosui/AltosKML.java | 6 +++- altosui/AltosLanded.java | 40 ++++++++++++++----------- altosui/AltosPad.java | 61 ++++++++++++++++++++++++++------------- 5 files changed, 120 insertions(+), 58 deletions(-) diff --git a/altosui/AltosAscent.java b/altosui/AltosAscent.java index a158eb21..3fe517aa 100644 --- a/altosui/AltosAscent.java +++ b/altosui/AltosAscent.java @@ -51,6 +51,20 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { } void show(AltosState state, int crc_errors) {} + + void show(String s) { + show(); + value.setText(s); + } + + void show(AltosUnits units, double v) { + show(units.show(8, v)); + } + + void show(String format, double v) { + show(String.format(format, v)); + } + void reset() { value.setText(""); lights.set(false); @@ -112,6 +126,19 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { value.setVisible(true); } + void show(String s) { + show(); + value.setText(s); + } + + void show(AltosUnits units, double v) { + show(units.show(8, v)); + } + + void show(String format, double v) { + show(String.format(format, v)); + } + void hide() { label.setVisible(false); value.setVisible(false); @@ -268,8 +295,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Apogee extends AscentStatus { void show (AltosState state, int crc_errors) { - show(); - value.setText(String.format("%4.2f V", state.drogue_sense)); + show("%4.2f V", state.drogue_sense); lights.set(state.drogue_sense > 3.2); } public Apogee (GridBagLayout layout, int y) { @@ -281,8 +307,7 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Main extends AscentStatus { void show (AltosState state, int crc_errors) { - show(); - value.setText(String.format("%4.2f V", state.main_sense)); + show("%4.2f V", state.main_sense); lights.set(state.main_sense > 3.2); } public Main (GridBagLayout layout, int y) { @@ -294,11 +319,10 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Lat extends AscentValue { void show (AltosState state, int crc_errors) { - show(); if (state.gps != null) - value.setText(pos(state.gps.lat,"N", "S")); + show(pos(state.gps.lat,"N", "S")); else - value.setText("???"); + show("???"); } public Lat (GridBagLayout layout, int y) { super (layout, y, "Latitude"); @@ -309,11 +333,10 @@ public class AltosAscent extends JComponent implements AltosFlightDisplay { class Lon extends AscentValue { void show (AltosState state, int crc_errors) { - show(); if (state.gps != null) - value.setText(pos(state.gps.lon,"E", "W")); + show(pos(state.gps.lon,"E", "W")); else - value.setText("???"); + show("???"); } public Lon (GridBagLayout layout, int y) { super (layout, y, "Longitude"); diff --git a/altosui/AltosDescent.java b/altosui/AltosDescent.java index 62258814..73972b86 100644 --- a/altosui/AltosDescent.java +++ b/altosui/AltosDescent.java @@ -45,6 +45,15 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { lights.setVisible(true); } + void show(String s) { + show(); + value.setText(s); + } + + void show(String format, double value) { + show(String.format(format, value)); + } + void hide() { label.setVisible(false); value.setVisible(false); @@ -119,16 +128,17 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { value.setVisible(false); } - void show(AltosUnits units, double v) { - value.setText(units.show(8, v)); + void show(String v) { + show(); + value.setText(v); } - void show(String format, double v) { - value.setText(String.format(format, v)); + void show(AltosUnits units, double v) { + show(units.show(8, v)); } - void show(String v) { - value.setText(v); + void show(String format, double v) { + show(String.format(format, v)); } void set_font() { @@ -307,8 +317,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { class Apogee extends DescentStatus { void show (AltosState state, int crc_errors) { - show(); - value.setText(String.format("%4.2f V", state.drogue_sense)); + show("%4.2f V", state.drogue_sense); lights.set(state.drogue_sense > 3.2); } public Apogee (GridBagLayout layout, int y) { @@ -320,8 +329,7 @@ public class AltosDescent extends JComponent implements AltosFlightDisplay { class Main extends DescentStatus { void show (AltosState state, int crc_errors) { - show(); - value.setText(String.format("%4.2f V", state.main_sense)); + show("%4.2f V", state.main_sense); lights.set(state.main_sense > 3.2); } public Main (GridBagLayout layout, int y) { diff --git a/altosui/AltosKML.java b/altosui/AltosKML.java index ff0734b8..6bac1d9c 100644 --- a/altosui/AltosKML.java +++ b/altosui/AltosKML.java @@ -131,8 +131,12 @@ public class AltosKML implements AltosWriter { public void write(AltosRecord record) { AltosGPS gps = record.gps; - if (gps == null) + if (gps == null) { + System.out.printf ("no gps\n"); return; + } + + System.out.printf ("seen %x\n", record.seen); if ((record.seen & (AltosRecord.seen_flight)) == 0) return; if ((record.seen & (AltosRecord.seen_gps_lat)) == 0) diff --git a/altosui/AltosLanded.java b/altosui/AltosLanded.java index a47e1cbd..68efae8d 100644 --- a/altosui/AltosLanded.java +++ b/altosui/AltosLanded.java @@ -46,6 +46,19 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio value.setVisible(true); } + void show(String s) { + show(); + value.setText(s); + } + + void show(AltosUnits units, double v) { + show(units.show(8, v)); + } + + void show(String format, double v) { + show(String.format(format, v)); + } + public void set_font() { label.setFont(Altos.label_font); value.setFont(Altos.value_font); @@ -56,12 +69,6 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio value.setVisible(false); } - void show(String format, double v) { - show(); - value.setText(String.format(format, v)); - } - - public LandedValue (GridBagLayout layout, int y, String text) { GridBagConstraints c = new GridBagConstraints(); c.weighty = 1; @@ -102,11 +109,10 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio class Lat extends LandedValue { void show (AltosState state, int crc_errors) { - show(); if (state.gps != null && state.gps.connected) - value.setText(pos(state.gps.lat,"N", "S")); + show(pos(state.gps.lat,"N", "S")); else - value.setText("???"); + show("???"); } public Lat (GridBagLayout layout, int y) { super (layout, y, "Latitude"); @@ -119,9 +125,9 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio void show (AltosState state, int crc_errors) { show(); if (state.gps != null && state.gps.connected) - value.setText(pos(state.gps.lon,"E", "W")); + show(pos(state.gps.lon,"E", "W")); else - value.setText("???"); + show("???"); } public Lon (GridBagLayout layout, int y) { super (layout, y, "Longitude"); @@ -136,7 +142,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio if (state.from_pad != null) show("%3.0f°", state.from_pad.bearing); else - value.setText("???"); + show("???"); } public Bearing (GridBagLayout layout, int y) { super (layout, y, "Bearing"); @@ -149,9 +155,9 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio void show (AltosState state, int crc_errors) { show(); if (state.from_pad != null) - show("%6.0f m", state.from_pad.distance); + show(AltosConvert.distance, state.from_pad.distance); else - value.setText("???"); + show("???"); } public Distance (GridBagLayout layout, int y) { super (layout, y, "Distance"); @@ -162,7 +168,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio class Height extends LandedValue { void show (AltosState state, int crc_errors) { - show("%6.0f m", state.max_height); + show(AltosConvert.height, state.max_height); } public Height (GridBagLayout layout, int y) { super (layout, y, "Maximum Height"); @@ -173,7 +179,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio class Speed extends LandedValue { void show (AltosState state, int crc_errors) { - show("%6.0f m/s", state.max_speed); + show(AltosConvert.speed, state.max_speed); } public Speed (GridBagLayout layout, int y) { super (layout, y, "Maximum Speed"); @@ -184,7 +190,7 @@ public class AltosLanded extends JComponent implements AltosFlightDisplay, Actio class Accel extends LandedValue { void show (AltosState state, int crc_errors) { - show("%6.0f m/s²", state.max_acceleration); + show(AltosConvert.accel, state.max_acceleration); } public Accel (GridBagLayout layout, int y) { super (layout, y, "Maximum Acceleration"); diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index 0a3f3d65..947c7540 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -38,6 +38,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { AltosLights lights; void show(AltosState state, int crc_errors) {} + void reset() { value.setText(""); lights.set(false); @@ -49,6 +50,19 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { lights.setVisible(true); } + void show(String s) { + show(); + value.setText(s); + } + + void show(String format, double value) { + show(String.format(format, value)); + } + + void show(String format, int value) { + show(String.format(format, value)); + } + public void hide() { label.setVisible(false); value.setVisible(false); @@ -116,9 +130,23 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { value.setFont(Altos.value_font); } + void show(String s) { + show(); + value.setText(s); + } + + void show(AltosUnits units, double v) { + show(units.show(8, v)); + } + + void show(String format, double v) { + show(String.format(format, v)); + } + void reset() { value.setText(""); } + public LaunchValue (GridBagLayout layout, int y, String text) { GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad, Altos.tab_elt_pad); @@ -148,7 +176,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class Battery extends LaunchStatus { void show (AltosState state, int crc_errors) { - value.setText(String.format("%4.2f V", state.battery)); + show("%4.2f V", state.battery); lights.set(state.battery > 3.7); } public Battery (GridBagLayout layout, int y) { @@ -160,8 +188,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class Apogee extends LaunchStatus { void show (AltosState state, int crc_errors) { - show(); - value.setText(String.format("%4.2f V", state.drogue_sense)); + show("%4.2f V", state.drogue_sense); lights.set(state.drogue_sense > 3.2); } public Apogee (GridBagLayout layout, int y) { @@ -173,8 +200,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class Main extends LaunchStatus { void show (AltosState state, int crc_errors) { - show(); - value.setText(String.format("%4.2f V", state.main_sense)); + show("%4.2f V", state.main_sense); lights.set(state.main_sense > 3.2); } public Main (GridBagLayout layout, int y) { @@ -186,17 +212,16 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class LoggingReady extends LaunchStatus { void show (AltosState state, int crc_errors) { - show(); if (state.data.flight != 0) { if (state.data.state <= Altos.ao_flight_pad) - value.setText("Ready to record"); + show("Ready to record"); else if (state.data.state < Altos.ao_flight_landed) - value.setText("Recording data"); + show("Recording data"); else - value.setText("Recorded data"); + show("Recorded data"); } else - value.setText("Storage full"); + show("Storage full"); lights.set(state.data.flight != 0); } public LoggingReady (GridBagLayout layout, int y) { @@ -208,8 +233,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class GPSLocked extends LaunchStatus { void show (AltosState state, int crc_errors) { - show(); - value.setText(String.format("%4d sats", state.gps.nsat)); + show("%4d sats", state.gps.nsat); lights.set(state.gps.locked && state.gps.nsat >= 4); } public GPSLocked (GridBagLayout layout, int y) { @@ -221,11 +245,10 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class GPSReady extends LaunchStatus { void show (AltosState state, int crc_errors) { - show(); if (state.gps_ready) - value.setText("Ready"); + show("Ready"); else - value.setText(String.format("Waiting %d", state.gps_waiting)); + show("Waiting %d", state.gps_waiting); lights.set(state.gps_ready); } public GPSReady (GridBagLayout layout, int y) { @@ -248,8 +271,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class PadLat extends LaunchValue { void show (AltosState state, int crc_errors) { - show(); - value.setText(pos(state.pad_lat,"N", "S")); + show(pos(state.pad_lat,"N", "S")); } public PadLat (GridBagLayout layout, int y) { super (layout, y, "Pad Latitude"); @@ -260,8 +282,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class PadLon extends LaunchValue { void show (AltosState state, int crc_errors) { - show(); - value.setText(pos(state.pad_lon,"E", "W")); + show(pos(state.pad_lon,"E", "W")); } public PadLon (GridBagLayout layout, int y) { super (layout, y, "Pad Longitude"); @@ -272,7 +293,7 @@ public class AltosPad extends JComponent implements AltosFlightDisplay { class PadAlt extends LaunchValue { void show (AltosState state, int crc_errors) { - value.setText(String.format("%4.0f m", state.pad_alt)); + show("%4.0f m", state.pad_alt); } public PadAlt (GridBagLayout layout, int y) { super (layout, y, "Pad Altitude"); -- 2.30.2