X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosui%2FAltosPad.java;h=a29cdd6f92273b93ca9dffa909e9c946b65908ec;hp=5c33fd16630fc03578c51e809345b93d7672e132;hb=247fa1c669f987830540e618bf263b08284118df;hpb=bd440afc2a6e37b74fffcf1b977e149485095316 diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index 5c33fd16..a29cdd6f 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,8 +19,8 @@ package altosui; import java.util.*; -import org.altusmetrum.altoslib_5.*; -import org.altusmetrum.altosuilib_3.*; +import org.altusmetrum.altoslib_11.*; +import org.altusmetrum.altosuilib_11.*; public class AltosPad extends AltosUIFlightTab { @@ -45,20 +46,20 @@ public class AltosPad extends AltosUIFlightTab { class LoggingReady extends AltosUIIndicator { public void show (AltosState state, AltosListenerState listener_state) { - if (state == null || state.flight == AltosLib.MISSING) { + if (state == null || state.cal_data.flight == AltosLib.MISSING) { hide(); } else { - if (state.flight != 0) { - if (state.state <= Altos.ao_flight_pad) + if (state.cal_data.flight != 0) { + if (state.state() <= Altos.ao_flight_pad) show("Ready to record"); - else if (state.state < Altos.ao_flight_landed || - state.state == AltosLib.ao_flight_stateless) + else if (state.state() < Altos.ao_flight_landed || + state.state() == AltosLib.ao_flight_stateless) show("Recording data"); else show("Recorded data"); } else show("Storage full"); - set_lights(state.flight != 0); + set_lights(state.cal_data.flight != 0); } } public LoggingReady (AltosUIFlightTab container, int y) { @@ -101,15 +102,24 @@ public class AltosPad extends AltosUIFlightTab { class ReceiverBattery extends AltosUIVoltageIndicator { - public double voltage(AltosState state) { return AltosLib.MISSING; } + double last_voltage = AltosLib.MISSING; + + public double voltage(AltosState state) { + return last_voltage; + } - public boolean hide(double v) { return v == AltosLib.MISSING; } public double good() { return AltosLib.ao_battery_good; } + public boolean hide(AltosState state, AltosListenerState listener_state, int i) { + return value(state, listener_state, i) == AltosLib.MISSING; + } + public double value(AltosState state, AltosListenerState listener_state, int i) { if (listener_state == null) - return AltosLib.MISSING; - return listener_state.battery; + last_voltage = AltosLib.MISSING; + else + last_voltage = listener_state.battery; + return last_voltage; } public ReceiverBattery (AltosUIFlightTab container, int y) { @@ -117,6 +127,15 @@ public class AltosPad extends AltosUIFlightTab { } } + boolean report_pad(AltosState state) { + if (state.state() == AltosLib.ao_flight_stateless || + state.state() < AltosLib.ao_flight_pad) + { + return false; + } + return true; + } + class PadLat extends AltosUIIndicator { double last_lat = AltosLib.MISSING - 1; @@ -126,12 +145,12 @@ public class AltosPad extends AltosUIFlightTab { String label = null; if (state != null) { - if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.lat != AltosLib.MISSING) { - lat = state.gps.lat; - label = "Latitude"; - } else { + if (report_pad(state)) { lat = state.pad_lat; label = "Pad Latitude"; + } else if (state.gps != null) { + lat = state.gps.lat; + label = "Latitude"; } } if (lat != last_lat) { @@ -163,12 +182,12 @@ public class AltosPad extends AltosUIFlightTab { String label = null; if (state != null) { - if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.lon != AltosLib.MISSING) { - lon = state.gps.lon; - label = "Longitude"; - } else { + if (report_pad(state)) { lon = state.pad_lon; label = "Pad Longitude"; + } else if (state.gps != null) { + lon = state.gps.lon; + label = "Longitude"; } } if (lon != last_lon) { @@ -191,40 +210,28 @@ public class AltosPad extends AltosUIFlightTab { } } - class PadAlt extends AltosUIIndicator { + class PadAlt extends AltosUIUnitsIndicator { - double last_alt = AltosLib.MISSING - 1; + public double value(AltosState state, int i) { + if (report_pad(state)) + return state.pad_alt; + else if (state.gps != null) + return state.gps.alt; + else + return state.altitude(); + } public void show (AltosState state, AltosListenerState listener_state) { - double alt = AltosLib.MISSING; - String label = null; + String label = "Altitude"; - if (state != null) { - if (state.state < AltosLib.ao_flight_pad && state.gps != null && state.gps.alt != AltosLib.MISSING) { - alt = state.gps.alt; - label = "Altitude"; - } else { - alt = state.pad_alt; - label = "Pad Altitude"; - } - } - if (alt != last_alt) { - if (alt != AltosLib.MISSING) { - show(AltosConvert.height.show(5, alt)); - set_label(label); - } else - hide(); - last_alt = alt; - } - } - - public void reset() { - super.reset(); - last_alt = AltosLib.MISSING - 1; + if (state != null && report_pad(state)) + label = "Pad Altitude"; + set_label(label); + super.show(state, listener_state); } public PadAlt (AltosUIFlightTab container, int y) { - super (container, y, "Pad Altitude", 1, false, 2); + super (container, y, AltosConvert.height, "Pad Altitude", 1, false, 2); } } public String getName() { return "Pad"; } @@ -232,12 +239,12 @@ public class AltosPad extends AltosUIFlightTab { public AltosPad() { int y = 0; add(new Battery(this, y++)); + add(new ReceiverBattery(this, y++)); add(new Apogee(this, y++)); add(new Main(this, y++)); add(new LoggingReady(this, y++)); add(new GPSLocked(this, y++)); add(new GPSReady(this, y++)); - add(new ReceiverBattery(this, y++)); add(new PadLat(this, y++)); add(new PadLon(this, y++)); add(new PadAlt(this, y++));