From 59365eb4e1f63a1ced1667ac233058a06a8eecef Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 11 Feb 2013 10:34:47 -0800 Subject: [PATCH] altosui: Remove graph series which aren't available Make sure all graph series have actual data underlying them by checking the available data before creating the series objects. Signed-off-by: Keith Packard --- altosui/AltosFlightStats.java | 11 +++ altosui/AltosFlightStatsTable.java | 2 +- altosui/AltosGraph.java | 127 +++++++++++++++-------------- altosui/AltosGraphUI.java | 16 ++-- 4 files changed, 89 insertions(+), 67 deletions(-) diff --git a/altosui/AltosFlightStats.java b/altosui/AltosFlightStats.java index 7f0c9adb..da06bb3d 100644 --- a/altosui/AltosFlightStats.java +++ b/altosui/AltosFlightStats.java @@ -36,6 +36,9 @@ public class AltosFlightStats { int hour, minute, second; double lat, lon; double pad_lat, pad_lon; + boolean has_gps; + boolean has_other_adc; + boolean has_rssi; double landed_time(AltosRecordIterable iterable) { AltosState state = null; @@ -101,11 +104,18 @@ public class AltosFlightStats { hour = minute = second = -1; serial = flight = -1; lat = lon = -1; + has_gps = false; + has_other_adc = false; + has_rssi = false; for (AltosRecord record : iterable) { if (serial < 0) serial = record.serial; if ((record.seen & AltosRecord.seen_flight) != 0 && flight < 0) flight = record.flight; + if ((record.seen & AltosRecord.seen_temp_volt) != 0) + has_other_adc = true; + if (record.rssi != 0) + has_rssi = true; new_state = new AltosState(record, state); end_time = new_state.time; state = new_state; @@ -147,6 +157,7 @@ public class AltosFlightStats { } lat = state.gps.lat; lon = state.gps.lon; + has_gps = true; } } for (int s = Altos.ao_flight_startup; s <= Altos.ao_flight_landed; s++) { diff --git a/altosui/AltosFlightStatsTable.java b/altosui/AltosFlightStatsTable.java index 5ed53c1a..a35b5f63 100644 --- a/altosui/AltosFlightStatsTable.java +++ b/altosui/AltosFlightStatsTable.java @@ -126,7 +126,7 @@ public class AltosFlightStatsTable extends JComponent { new FlightStat(layout, y++, "Flight time", String.format("%6.1f s", stats.state_end[Altos.ao_flight_main] - stats.state_start[Altos.ao_flight_boost])); - if (stats.lat != -1 && stats.lon != -1) { + if (stats.has_gps) { new FlightStat(layout, y++, "Pad location", pos(stats.pad_lat,"N","S"), pos(stats.pad_lon,"E","W")); diff --git a/altosui/AltosGraph.java b/altosui/AltosGraph.java index 5bd756ec..defe69a0 100644 --- a/altosui/AltosGraph.java +++ b/altosui/AltosGraph.java @@ -118,7 +118,7 @@ public class AltosGraph extends AltosUIGraph { AltosUIAxis height_axis, speed_axis, accel_axis, voltage_axis, temperature_axis, nsat_axis, dbm_axis; AltosUIAxis distance_axis; - public AltosGraph(AltosUIEnable enable) { + public AltosGraph(AltosUIEnable enable, AltosFlightStats stats, AltosGraphDataSet dataSet) { super(enable); height_axis = newAxis("Height", AltosConvert.height, height_color); @@ -150,65 +150,72 @@ public class AltosGraph extends AltosUIGraph { accel_color, true, accel_axis); - addSeries("Range", - AltosGraphDataPoint.data_range, - AltosConvert.distance, - range_color, - false, - distance_axis); - addSeries("Distance", - AltosGraphDataPoint.data_distance, - AltosConvert.distance, - distance_color, - false, - distance_axis); - addSeries("GPS Height", - AltosGraphDataPoint.data_gps_height, - AltosConvert.height, - gps_height_color, - false, - height_axis); - addSeries("GPS Satellites in Solution", - AltosGraphDataPoint.data_gps_nsat_solution, - nsat_units, - gps_nsat_solution_color, - false, - nsat_axis); - addSeries("GPS Satellites in View", - AltosGraphDataPoint.data_gps_nsat_view, - nsat_units, - gps_nsat_view_color, - false, + if (stats.has_gps) { + addSeries("Range", + AltosGraphDataPoint.data_range, + AltosConvert.distance, + range_color, + false, + distance_axis); + addSeries("Distance", + AltosGraphDataPoint.data_distance, + AltosConvert.distance, + distance_color, + false, + distance_axis); + addSeries("GPS Height", + AltosGraphDataPoint.data_gps_height, + AltosConvert.height, + gps_height_color, + false, + height_axis); + addSeries("GPS Satellites in Solution", + AltosGraphDataPoint.data_gps_nsat_solution, + nsat_units, + gps_nsat_solution_color, + false, + nsat_axis); + addSeries("GPS Satellites in View", + AltosGraphDataPoint.data_gps_nsat_view, + nsat_units, + gps_nsat_view_color, + false, nsat_axis); - addSeries("Received Signal Strength", - AltosGraphDataPoint.data_rssi, - dbm_units, - dbm_color, - false, - dbm_axis); - addSeries("Temperature", - AltosGraphDataPoint.data_temperature, - AltosConvert.temperature, - temperature_color, - false, - temperature_axis); - addSeries("Battery Voltage", - AltosGraphDataPoint.data_battery_voltage, - voltage_units, - battery_voltage_color, - false, - voltage_axis); - addSeries("Drogue Voltage", - AltosGraphDataPoint.data_drogue_voltage, - voltage_units, - drogue_voltage_color, - false, - voltage_axis); - addSeries("Main Voltage", - AltosGraphDataPoint.data_main_voltage, - voltage_units, - main_voltage_color, - false, - voltage_axis); + } + if (stats.has_rssi) + addSeries("Received Signal Strength", + AltosGraphDataPoint.data_rssi, + dbm_units, + dbm_color, + false, + dbm_axis); + if (stats.has_other_adc) { + addSeries("Temperature", + AltosGraphDataPoint.data_temperature, + AltosConvert.temperature, + temperature_color, + false, + temperature_axis); + addSeries("Battery Voltage", + AltosGraphDataPoint.data_battery_voltage, + voltage_units, + battery_voltage_color, + false, + voltage_axis); + addSeries("Drogue Voltage", + AltosGraphDataPoint.data_drogue_voltage, + voltage_units, + drogue_voltage_color, + false, + voltage_axis); + addSeries("Main Voltage", + AltosGraphDataPoint.data_main_voltage, + voltage_units, + main_voltage_color, + false, + voltage_axis); + } + + setDataSet(dataSet); } } \ No newline at end of file diff --git a/altosui/AltosGraphUI.java b/altosui/AltosGraphUI.java index 2dded9a2..2f3575a4 100644 --- a/altosui/AltosGraphUI.java +++ b/altosui/AltosGraphUI.java @@ -23,12 +23,15 @@ public class AltosGraphUI extends AltosUIFrame AltosUIEnable enable; AltosSiteMap map; AltosState state; + AltosGraphDataSet graphDataSet; + AltosFlightStats stats; + AltosFlightStatsTable statsTable; boolean fill_map(AltosRecordIterable records) { boolean any_gps = false; for (AltosRecord record : records) { state = new AltosState(record, state); - if (state.data.gps != null) { + if (state.gps.locked && state.gps.nsat >= 4) { map.show(state, 0); any_gps = true; } @@ -44,17 +47,18 @@ public class AltosGraphUI extends AltosUIFrame enable = new AltosUIEnable(); - AltosGraph graph = new AltosGraph(enable); + stats = new AltosFlightStats(records); + graphDataSet = new AltosGraphDataSet(records); - graph.setDataSet(new AltosGraphDataSet(records)); + graph = new AltosGraph(enable, stats, graphDataSet); + + statsTable = new AltosFlightStatsTable(stats); map = new AltosSiteMap(); pane.add("Flight Graph", graph.panel); pane.add("Configure Graph", enable); - - AltosFlightStatsTable stats = new AltosFlightStatsTable(new AltosFlightStats(records)); - pane.add("Flight Statistics", stats); + pane.add("Flight Statistics", statsTable); if (fill_map(records)) pane.add("Map", map); -- 2.30.2