From: Keith Packard Date: Wed, 3 Apr 2013 00:44:06 +0000 (-0700) Subject: altosui: Graph TeleMini flights without crashing X-Git-Tag: altosdroid_v1.2-1~31 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=30c397296bcdaceb4c2c9d0509dc591b489ece02 altosui: Graph TeleMini flights without crashing Adding maps to the graph UI failed to check for missing GPS data in a couple of places causing crashes when fed a TeleMini file. Signed-off-by: Keith Packard --- diff --git a/altosui/AltosFlightStats.java b/altosui/AltosFlightStats.java index da06bb3d..dee31a8d 100644 --- a/altosui/AltosFlightStats.java +++ b/altosui/AltosFlightStats.java @@ -150,7 +150,7 @@ public class AltosFlightStats { max_speed = state.max_baro_speed; max_acceleration = state.max_acceleration; } - if (state.gps.locked && state.gps.nsat >= 4) { + if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) { if (state.state <= Altos.ao_flight_pad) { pad_lat = state.gps.lat; pad_lon = state.gps.lon; diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index 2f3575a4..f6e57e7e 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -26,17 +26,19 @@ public class AltosGraphUI extends AltosUIFrame AltosGraphDataSet graphDataSet; AltosFlightStats stats; AltosFlightStatsTable statsTable; + boolean has_gps; - boolean fill_map(AltosRecordIterable records) { + void fill_map(AltosRecordIterable records) { boolean any_gps = false; for (AltosRecord record : records) { state = new AltosState(record, state); - if (state.gps.locked && state.gps.nsat >= 4) { + if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) { + if (map == null) + map = new AltosSiteMap(); map.show(state, 0); - any_gps = true; + has_gps = true; } } - return any_gps; } AltosGraphUI(AltosRecordIterable records, File file) throws InterruptedException, IOException { @@ -54,13 +56,13 @@ public class AltosGraphUI extends AltosUIFrame statsTable = new AltosFlightStatsTable(stats); - map = new AltosSiteMap(); - pane.add("Flight Graph", graph.panel); pane.add("Configure Graph", enable); pane.add("Flight Statistics", statsTable); - if (fill_map(records)) + has_gps = false; + fill_map(records); + if (has_gps) pane.add("Map", map); setContentPane (pane); @@ -69,7 +71,7 @@ public class AltosGraphUI extends AltosUIFrame setDefaultCloseOperation(DISPOSE_ON_CLOSE); setVisible(true); - if (state != null) + if (state != null && has_gps) map.centre(state); } }