*
* 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
package altosui;
import java.util.*;
-import org.altusmetrum.altoslib_5.*;
-import org.altusmetrum.altosuilib_3.*;
+import org.altusmetrum.altoslib_12.*;
+import org.altusmetrum.altosuilib_12.*;
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) {
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) {
}
}
+ 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;
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) {
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) {
}
}
- 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"; }
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++));