From c9d6a1fbb3148f03864df6d1ed5f6b6dccd7b383 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Mon, 5 May 2014 23:41:43 -0700 Subject: [PATCH] altosui: Add GPS course, ground speed and climb rate to graphs Signed-off-by: Keith Packard --- altosui/AltosGraph.java | 25 ++++++++++++++++++++++++- altosui/AltosGraphDataPoint.java | 30 +++++++++++++++++++++++++----- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/altosui/AltosGraph.java b/altosui/AltosGraph.java index 564bed86..d5c00247 100644 --- a/altosui/AltosGraph.java +++ b/altosui/AltosGraph.java @@ -189,6 +189,9 @@ public class AltosGraph extends AltosUIGraph { static final private Color gps_nsat_color = new Color (194, 31, 194); static final private Color gps_nsat_solution_color = new Color (194, 31, 194); static final private Color gps_nsat_view_color = new Color (150, 31, 150); + static final private Color gps_course_color = new Color (100, 31, 112); + static final private Color gps_ground_speed_color = new Color (31, 112, 100); + static final private Color gps_climb_rate_color = new Color (31, 31, 112); static final private Color temperature_color = new Color (31, 194, 194); static final private Color dbm_color = new Color(31, 100, 100); static final private Color state_color = new Color(0,0,0); @@ -214,6 +217,7 @@ public class AltosGraph extends AltosUIGraph { AltosUIAxis height_axis, speed_axis, accel_axis, voltage_axis, temperature_axis, nsat_axis, dbm_axis; AltosUIAxis distance_axis, pressure_axis; AltosUIAxis gyro_axis, orient_axis, mag_axis; + AltosUIAxis course_axis; public AltosGraph(AltosUIEnable enable, AltosFlightStats stats, AltosGraphDataSet dataSet) { super(enable); @@ -232,6 +236,7 @@ public class AltosGraph extends AltosUIGraph { gyro_axis = newAxis("Rotation Rate", gyro_units, gyro_z_color, 0); orient_axis = newAxis("Tilt Angle", orient_units, orient_color, 0); mag_axis = newAxis("Magnetic Field", mag_units, mag_x_color, 0); + course_axis = newAxis("Course", orient_units, gps_course_color, 0); addMarker("State", AltosGraphDataPoint.data_state, state_color); addSeries("Height", @@ -288,7 +293,25 @@ public class AltosGraph extends AltosUIGraph { nsat_units, gps_nsat_view_color, false, - nsat_axis); + nsat_axis); + addSeries("GPS Course", + AltosGraphDataPoint.data_gps_course, + orient_units, + gps_course_color, + false, + course_axis); + addSeries("GPS Ground Speed", + AltosGraphDataPoint.data_gps_ground_speed, + AltosConvert.speed, + gps_ground_speed_color, + false, + speed_axis); + addSeries("GPS Climb Rate", + AltosGraphDataPoint.data_gps_climb_rate, + AltosConvert.speed, + gps_climb_rate_color, + false, + speed_axis); } if (stats.has_rssi) addSeries("Received Signal Strength", diff --git a/altosui/AltosGraphDataPoint.java b/altosui/AltosGraphDataPoint.java index a771db53..a0b0925c 100644 --- a/altosui/AltosGraphDataPoint.java +++ b/altosui/AltosGraphDataPoint.java @@ -50,7 +50,10 @@ public class AltosGraphDataPoint implements AltosUIDataPoint { public static final int data_mag_y = 23; public static final int data_mag_z = 24; public static final int data_orient = 25; - public static final int data_ignitor_0 = 26; + public static final int data_gps_course = 26; + public static final int data_gps_ground_speed = 27; + public static final int data_gps_climb_rate = 28; + public static final int data_ignitor_0 = 29; public static final int data_ignitor_num = 32; public static final int data_ignitor_max = data_ignitor_0 + data_ignitor_num - 1; public static final int data_ignitor_fired_0 = data_ignitor_0 + data_ignitor_num; @@ -166,6 +169,24 @@ public class AltosGraphDataPoint implements AltosUIDataPoint { case data_orient: y = state.orient(); break; + case data_gps_course: + if (state.gps != null) + y = state.gps.course; + else + y = AltosLib.MISSING; + break; + case data_gps_ground_speed: + if (state.gps != null) + y = state.gps.ground_speed; + else + y = AltosLib.MISSING; + break; + case data_gps_climb_rate: + if (state.gps != null) + y = state.gps.climb_rate; + else + y = AltosLib.MISSING; + break; default: if (data_ignitor_0 <= index && index <= data_ignitor_max) { int ignitor = index - data_ignitor_0; @@ -190,9 +211,8 @@ public class AltosGraphDataPoint implements AltosUIDataPoint { public int id(int index) { if (index == data_state) { int s = state.state; - if (s < Altos.ao_flight_boost || s > Altos.ao_flight_landed) - return -1; - return s; + if (Altos.ao_flight_boost <= s && s <= Altos.ao_flight_landed) + return s; } else if (data_ignitor_fired_0 <= index && index <= data_ignitor_fired_max) { int ignitor = index - data_ignitor_fired_0; if (state.ignitor_voltage != null && ignitor < state.ignitor_voltage.length) { @@ -202,7 +222,7 @@ public class AltosGraphDataPoint implements AltosUIDataPoint { } } } - return 0; + return -1; } public String id_name(int index) { -- 2.30.2