diff options
| author | Keith Packard <keithp@keithp.com> | 2013-04-02 16:47:07 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2013-04-02 16:47:07 -0700 | 
| commit | e747156d0ea4b62eea30a8f486ee105ee35dcaf5 (patch) | |
| tree | 76d5d1f9450cc59ed5a43b15eb523a3e161b0045 | |
| parent | 997cdef3fe04acdd566d287e70981f7b7934d0c8 (diff) | |
altosui: Don't display missing sensor data
For devices without sensors, don't display temperature, barometric and
accelerometer-derived values.
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | altoslib/AltosState.java | 38 | ||||
| -rw-r--r-- | altosui/AltosInfoTable.java | 30 | ||||
| -rw-r--r-- | altosui/AltosPad.java | 13 | 
3 files changed, 54 insertions, 27 deletions
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 5598a603..f18bf368 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -99,19 +99,27 @@ public class AltosState {  		altitude = data.altitude(); +		height = AltosRecord.MISSING;  		if (data.kalman_height != AltosRecord.MISSING)  			height = data.kalman_height;  		else { -			if (prev_state != null) -				height = (prev_state.height * 15 + altitude - ground_altitude) / 16.0; +			if (prev_state != null && altitude != AltosRecord.MISSING && ground_altitude != AltosRecord.MISSING) { +				double	cur_height = altitude - ground_altitude; +				if (prev_state.height == AltosRecord.MISSING) +					height = cur_height; +				else +					height = (prev_state.height * 15 + cur_height) / 16.0; +			}  		}  		report_time = System.currentTimeMillis();  		if (data.kalman_acceleration != AltosRecord.MISSING)  			acceleration = data.kalman_acceleration; -		else +		else {  			acceleration = data.acceleration(); +			System.out.printf ("data acceleration %g\n", acceleration); +		}  		temperature = data.temperature();  		drogue_sense = data.drogue_voltage();  		main_sense = data.main_voltage(); @@ -169,16 +177,18 @@ public class AltosState {  			npad = 0;  			ngps = 0;  			gps = null; -			baro_speed = 0; -			accel_speed = 0; +			baro_speed = AltosRecord.MISSING; +			accel_speed = AltosRecord.MISSING; +			max_baro_speed = AltosRecord.MISSING; +			max_accel_speed = AltosRecord.MISSING; +			max_height = AltosRecord.MISSING; +			max_acceleration = AltosRecord.MISSING;  			time_change = 0; -			if (acceleration == AltosRecord.MISSING) -				acceleration = 0;  		}  		time = tick / 100.0; -		if (cur.new_gps && (state == AltosLib.ao_flight_pad || state == AltosLib.ao_flight_idle)) { +		if (cur.new_gps && (state < AltosLib.ao_flight_boost)) {  			/* Track consecutive 'good' gps reports, waiting for 10 of them */  			if (data.gps != null && data.gps.locked && data.gps.nsat >= 4) @@ -188,7 +198,7 @@ public class AltosState {  			/* Average GPS data while on the pad */  			if (data.gps != null && data.gps.locked && data.gps.nsat >= 4) { -				if (ngps > 1) { +				if (ngps > 1 && state == AltosLib.ao_flight_pad) {  					/* filter pad position */  					pad_lat = (pad_lat * 31.0 + data.gps.lat) / 32.0;  					pad_lon = (pad_lon * 31.0 + data.gps.lon) / 32.0; @@ -201,7 +211,7 @@ public class AltosState {  				ngps++;  			}  		} else { -			if (ngps == 0) +			if (ngps == 0 && ground_altitude != AltosRecord.MISSING)  				pad_alt = ground_altitude;  		} @@ -218,14 +228,14 @@ public class AltosState {  		boost = (AltosLib.ao_flight_boost == state);  		/* Only look at accelerometer data under boost */ -		if (boost && acceleration > max_acceleration && acceleration != AltosRecord.MISSING) +		if (boost && acceleration != AltosRecord.MISSING && (max_acceleration == AltosRecord.MISSING || acceleration > max_acceleration))  			max_acceleration = acceleration; -		if (boost && accel_speed > max_accel_speed && accel_speed != AltosRecord.MISSING) +		if (boost && accel_speed != AltosRecord.MISSING && (max_accel_speed == AltosRecord.MISSING || accel_speed > max_accel_speed))  			max_accel_speed = accel_speed; -		if (boost && baro_speed > max_baro_speed && baro_speed != AltosRecord.MISSING) +		if (boost && baro_speed != AltosRecord.MISSING && (max_baro_speed == AltosRecord.MISSING || baro_speed > max_baro_speed))  			max_baro_speed = baro_speed; -		if (height > max_height && height != AltosRecord.MISSING) +		if (height != AltosRecord.MISSING || (max_height == AltosRecord.MISSING || height > max_height))  			max_height = height;  		if (data.gps != null) {  			if (gps == null || !gps.locked || data.gps.locked) diff --git a/altosui/AltosInfoTable.java b/altosui/AltosInfoTable.java index 2facf38a..1dce6daf 100644 --- a/altosui/AltosInfoTable.java +++ b/altosui/AltosInfoTable.java @@ -108,16 +108,26 @@ public class AltosInfoTable extends JTable {  		if (state == null)  			return;  		info_reset(); -		info_add_row(0, "Altitude", "%6.0f    m", state.altitude); -		info_add_row(0, "Pad altitude", "%6.0f    m", state.ground_altitude); -		info_add_row(0, "Height", "%6.0f    m", state.height); -		info_add_row(0, "Max height", "%6.0f    m", state.max_height); -		info_add_row(0, "Acceleration", "%8.1f  m/s²", state.acceleration); -		info_add_row(0, "Max acceleration", "%8.1f  m/s²", state.max_acceleration); -		info_add_row(0, "Speed", "%8.1f  m/s", state.speed()); -		info_add_row(0, "Max Speed", "%8.1f  m/s", state.max_accel_speed); -		info_add_row(0, "Temperature", "%9.2f °C", state.temperature); -		info_add_row(0, "Battery", "%9.2f V", state.battery); +		if (state.altitude != AltosRecord.MISSING) +			info_add_row(0, "Altitude", "%6.0f    m", state.altitude); +		if (state.ground_altitude != AltosRecord.MISSING) +			info_add_row(0, "Pad altitude", "%6.0f    m", state.ground_altitude); +		if (state.height != AltosRecord.MISSING) +			info_add_row(0, "Height", "%6.0f    m", state.height); +		if (state.max_height != AltosRecord.MISSING) +			info_add_row(0, "Max height", "%6.0f    m", state.max_height); +		if (state.acceleration != AltosRecord.MISSING) +			info_add_row(0, "Acceleration", "%8.1f  m/s²", state.acceleration); +		if (state.max_acceleration != AltosRecord.MISSING) +			info_add_row(0, "Max acceleration", "%8.1f  m/s²", state.max_acceleration); +		if (state.speed() != AltosRecord.MISSING) +			info_add_row(0, "Speed", "%8.1f  m/s", state.speed()); +		if (state.max_speed() != AltosRecord.MISSING) +			info_add_row(0, "Max Speed", "%8.1f  m/s", state.max_accel_speed); +		if (state.temperature != AltosRecord.MISSING) +			info_add_row(0, "Temperature", "%9.2f °C", state.temperature); +		if (state.battery != AltosRecord.MISSING) +			info_add_row(0, "Battery", "%9.2f V", state.battery);  		if (state.drogue_sense != AltosRecord.MISSING)  			info_add_row(0, "Drogue", "%9.2f V", state.drogue_sense);  		if (state.main_sense != AltosRecord.MISSING) diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index d13f6945..66cb4cfc 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -168,8 +168,12 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class Battery extends LaunchStatus {  		void show (AltosState state, int crc_errors) { -			show("%4.2f V", state.battery); -			lights.set(state.battery > 3.7); +			if (state.battery == AltosRecord.MISSING) +				hide(); +			else { +				show("%4.2f V", state.battery); +				lights.set(state.battery > 3.7); +			}  		}  		public Battery (GridBagLayout layout, int y) {  			super(layout, y, "Battery Voltage"); @@ -285,7 +289,10 @@ public class AltosPad extends JComponent implements AltosFlightDisplay {  	class PadAlt extends LaunchValue {  		void show (AltosState state, int crc_errors) { -			show("%4.0f m", state.pad_alt); +			if (state.pad_alt == AltosRecord.MISSING) +				hide(); +			else +				show("%4.0f m", state.pad_alt);  		}  		public PadAlt (GridBagLayout layout, int y) {  			super (layout, y, "Pad Altitude");  | 
