diff options
| author | Keith Packard <keithp@keithp.com> | 2014-05-05 23:41:43 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-05-08 20:44:10 -0700 | 
| commit | c9d6a1fbb3148f03864df6d1ed5f6b6dccd7b383 (patch) | |
| tree | ba924fd78d835d26c3ee7f1aa1e508d1e528c309 | |
| parent | 39fbc4cb1d4c92522c90aa5e36fd62a4827d8306 (diff) | |
altosui: Add GPS course, ground speed and climb rate to graphs
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | altosui/AltosGraph.java | 25 | ||||
| -rw-r--r-- | 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) {  | 
