diff options
author | Keith Packard <keithp@keithp.com> | 2017-05-27 00:27:04 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2017-05-27 00:27:04 -0700 |
commit | b6b5c64f93fa56bcb22ea1c4279e4f754e6e6f1c (patch) | |
tree | 6ec6ecb767be291c8712030e0097fae051652637 /altoslib | |
parent | 8b4dcca73c65e87462d5f8d08dbc025aa8cf08a6 (diff) |
altosdroid: Deal with AltosState changes
cal data split out from altos state.
altos state needed to have no-arguments constructor for JSON code.
Also messed with voice to make it stay quiet during app startup.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib')
-rw-r--r-- | altoslib/AltosDataListener.java | 11 | ||||
-rw-r--r-- | altoslib/AltosFlightSeries.java | 2 | ||||
-rw-r--r-- | altoslib/AltosFlightStats.java | 69 | ||||
-rw-r--r-- | altoslib/AltosMapStore.java | 2 | ||||
-rw-r--r-- | altoslib/AltosState.java | 38 | ||||
-rw-r--r-- | altoslib/AltosTelemetryFile.java | 2 |
6 files changed, 57 insertions, 67 deletions
diff --git a/altoslib/AltosDataListener.java b/altoslib/AltosDataListener.java index 14c29d85..f8d38731 100644 --- a/altoslib/AltosDataListener.java +++ b/altoslib/AltosDataListener.java @@ -16,9 +16,9 @@ package org.altusmetrum.altoslib_11; public abstract class AltosDataListener { - public AltosCalData cal_data; - - public double time = AltosLib.MISSING; + public AltosCalData cal_data = null; + public double time = AltosLib.MISSING; + public int state = AltosLib.MISSING; public void set_time(double time) { if (time != AltosLib.MISSING) @@ -29,8 +29,6 @@ public abstract class AltosDataListener { return time; } - public int state = AltosLib.MISSING; - public void set_state(int state) { if (state != AltosLib.MISSING) this.state = state; @@ -67,6 +65,9 @@ public abstract class AltosDataListener { public abstract void set_pyro_fired(int pyro_mask); public abstract void set_companion(AltosCompanion companion); + public AltosDataListener() { + } + public AltosDataListener(AltosCalData cal_data) { this.cal_data = cal_data; } diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index 944cff31..5cf552fc 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -216,7 +216,7 @@ public class AltosFlightSeries extends AltosDataListener { private void compute_height() { double ground_altitude = cal_data.ground_altitude; - if (height_series == null && ground_altitude != AltosLib.MISSING) { + if (height_series == null && ground_altitude != AltosLib.MISSING && altitude_series != null) { height_series = add_series(height_name, AltosConvert.height); for (AltosTimeValue alt : altitude_series) height_series.add(alt.time, alt.value - ground_altitude); diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index 9ebdb9e6..f48e6be6 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -51,21 +51,26 @@ public class AltosFlightStats { double landed_time(AltosFlightSeries series) { double landed_state_time = AltosLib.MISSING; - for (AltosTimeValue state : series.state_series) { - if (state.value == AltosLib.ao_flight_landed) { - landed_state_time = state.time; - break; + if (series.state_series != null) { + for (AltosTimeValue state : series.state_series) { + if (state.value == AltosLib.ao_flight_landed) { + landed_state_time = state.time; + break; + } } } - if (landed_state_time == AltosLib.MISSING) + if (landed_state_time == AltosLib.MISSING && series.height_series != null) landed_state_time = series.height_series.get(series.height_series.size()-1).time; double landed_height = AltosLib.MISSING; - for (AltosTimeValue height : series.height_series) { - if (height.time >= landed_state_time) { - landed_height = height.value; - break; + + if (series.height_series != null) { + for (AltosTimeValue height : series.height_series) { + if (height.time >= landed_state_time) { + landed_height = height.value; + break; + } } } @@ -76,13 +81,15 @@ public class AltosFlightStats { double landed_time = AltosLib.MISSING; - for (AltosTimeValue height : series.height_series) { - if (height.value > landed_height + 10) { - above = true; - } else { - if (above && Math.abs(height.value - landed_height) < 2) { - above = false; - landed_time = height.time; + if (series.height_series != null) { + for (AltosTimeValue height : series.height_series) { + if (height.value > landed_height + 10) { + above = true; + } else { + if (above && Math.abs(height.value - landed_height) < 2) { + above = false; + landed_time = height.time; + } } } } @@ -93,17 +100,21 @@ public class AltosFlightStats { double boost_time = AltosLib.MISSING; double boost_state_time = AltosLib.MISSING; - for (AltosTimeValue state : series.state_series) { - if (state.value >= AltosLib.ao_flight_boost && state.value <= AltosLib.ao_flight_landed) { - boost_state_time = state.time; - break; + if (series.state_series != null) { + for (AltosTimeValue state : series.state_series) { + if (state.value >= AltosLib.ao_flight_boost && state.value <= AltosLib.ao_flight_landed) { + boost_state_time = state.time; + break; + } } } - for (AltosTimeValue accel : series.accel_series) { - if (accel.value < 1) - boost_time = accel.time; - if (boost_state_time != AltosLib.MISSING && accel.time >= boost_state_time) - break; + if (series.accel_series != null) { + for (AltosTimeValue accel : series.accel_series) { + if (accel.value < 1) + boost_time = accel.time; + if (boost_state_time != AltosLib.MISSING && accel.time >= boost_state_time) + break; + } } return boost_time; } @@ -136,12 +147,16 @@ public class AltosFlightStats { if (s == AltosLib.ao_flight_boost) state_start[s] = boost_time; - else + else if (series.state_series != null) state_start[s] = series.state_series.time_of(s); + else + state_start[s] = AltosLib.MISSING; if (s == AltosLib.ao_flight_main) state_end[s] = landed_time; - else + else if (series.state_series != null) state_end[s] = series.state_series.time_of(s+1); + else + state_end[s] = AltosLib.MISSING; if (series.speed_series != null) state_speed[s] = series.speed_series.average(state_start[s], state_end[s]); diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index 7cce05a5..460c52b6 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -91,6 +91,7 @@ public class AltosMapStore { static Object forbidden_lock = new Object(); static long forbidden_time; static boolean forbidden_set; + public static int forbidden_response; private int fetch_url() { URL u; @@ -116,6 +117,7 @@ public class AltosMapStore { synchronized (forbidden_lock) { forbidden_time = System.nanoTime(); forbidden_set = true; + forbidden_response = response; return AltosMapTile.forbidden; } } diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index d3929b8f..e5a0541e 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -43,8 +43,6 @@ public class AltosState extends AltosDataListener { public int rssi; public int status; - public double time; - class AltosValue { double value; double prev_value; @@ -288,7 +286,6 @@ public class AltosState extends AltosDataListener { } } - private int state; public boolean landed; public boolean ascent; /* going up? */ public boolean boost; /* under power */ @@ -506,23 +503,7 @@ public class AltosState extends AltosDataListener { pressure.set(p, time); } - class AltosForce extends AltosValue { - void set(double p, double time) { - super.set(p, time); - } - - AltosForce() { - super(); - } - } - private AltosForce thrust; - - public double thrust() { - return thrust.value(); - } - public void set_thrust(double N) { - thrust.set(N, time); } public double baro_height() { @@ -720,15 +701,8 @@ public class AltosState extends AltosDataListener { public int speak_tick; public double speak_altitude; - public String callsign; - public String firmware_version; - public double ground_accel; - public int log_format; - public int log_space; - public String product; - public AltosCompanion companion; public int pyro_fired; @@ -756,7 +730,6 @@ public class AltosState extends AltosDataListener { ground_pressure = new AltosGroundPressure(); altitude = new AltosAltitude(); pressure = new AltosPressure(); - thrust = new AltosForce(); speed = new AltosSpeed(); acceleration = new AltosAccel(); orient = new AltosCValue(); @@ -810,15 +783,8 @@ public class AltosState extends AltosDataListener { speak_tick = AltosLib.MISSING; speak_altitude = AltosLib.MISSING; - callsign = null; - firmware_version = null; - ground_accel = AltosLib.MISSING; - log_format = AltosLib.MISSING; - log_space = AltosLib.MISSING; - product = null; - companion = null; pyro_fired = 0; @@ -1108,6 +1074,10 @@ public class AltosState extends AltosDataListener { this.pyro_fired = fired; } + public AltosState() { + init(); + } + public AltosState (AltosCalData cal_data) { super(cal_data); init(); diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 46a5d060..40b9c9bf 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -123,6 +123,8 @@ public class AltosTelemetryFile implements AltosRecordSet { cal_data.set_tick(tick); if (cal_data.time() >= -1) telem.provide_data(listener, cal_data); + if (listener.state == AltosLib.ao_flight_landed) + break; } listener.finish(); } |