diff options
Diffstat (limited to 'altoslib')
| -rw-r--r-- | altoslib/AltosDataListener.java | 11 | ||||
| -rw-r--r-- | altoslib/AltosFlightSeries.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosFlightStats.java | 69 | ||||
| -rw-r--r-- | altoslib/AltosMapStore.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosState.java | 38 | ||||
| -rw-r--r-- | altoslib/AltosTelemetryFile.java | 2 | 
6 files changed, 57 insertions, 67 deletions
| diff --git a/altoslib/AltosDataListener.java b/altoslib/AltosDataListener.java index 14c29d85..f8d38731 100644 --- a/altoslib/AltosDataListener.java +++ b/altoslib/AltosDataListener.java @@ -16,9 +16,9 @@ package org.altusmetrum.altoslib_11;  public abstract class AltosDataListener { -	public AltosCalData	cal_data; - -	public double	time = AltosLib.MISSING; +	public AltosCalData	cal_data = null; +	public double		time = AltosLib.MISSING; +	public int		state = AltosLib.MISSING;  	public void set_time(double time) {  		if (time != AltosLib.MISSING) @@ -29,8 +29,6 @@ public abstract class AltosDataListener {  		return time;  	} -	public int	state = AltosLib.MISSING; -  	public void set_state(int state) {  		if (state != AltosLib.MISSING)  			this.state = state; @@ -67,6 +65,9 @@ public abstract class AltosDataListener {  	public abstract void set_pyro_fired(int pyro_mask);  	public abstract void set_companion(AltosCompanion companion); +	public AltosDataListener() { +	} +  	public AltosDataListener(AltosCalData cal_data) {  		this.cal_data = cal_data;  	} diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index 944cff31..5cf552fc 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -216,7 +216,7 @@ public class AltosFlightSeries extends AltosDataListener {  	private void compute_height() {  		double ground_altitude = cal_data.ground_altitude; -		if (height_series == null && ground_altitude != AltosLib.MISSING) { +		if (height_series == null && ground_altitude != AltosLib.MISSING && altitude_series != null) {  			height_series = add_series(height_name, AltosConvert.height);  			for (AltosTimeValue alt : altitude_series)  				height_series.add(alt.time, alt.value - ground_altitude); diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index 9ebdb9e6..f48e6be6 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -51,21 +51,26 @@ public class AltosFlightStats {  	double landed_time(AltosFlightSeries series) {  		double	landed_state_time = AltosLib.MISSING; -		for (AltosTimeValue state : series.state_series) { -			if (state.value == AltosLib.ao_flight_landed) { -				landed_state_time = state.time; -				break; +		if (series.state_series != null) { +			for (AltosTimeValue state : series.state_series) { +				if (state.value == AltosLib.ao_flight_landed) { +					landed_state_time = state.time; +					break; +				}  			}  		} -		if (landed_state_time == AltosLib.MISSING) +		if (landed_state_time == AltosLib.MISSING && series.height_series != null)  			landed_state_time = series.height_series.get(series.height_series.size()-1).time;  		double landed_height = AltosLib.MISSING; -		for (AltosTimeValue height : series.height_series) { -			if (height.time >= landed_state_time) { -				landed_height = height.value; -				break; + +		if (series.height_series != null) { +			for (AltosTimeValue height : series.height_series) { +				if (height.time >= landed_state_time) { +					landed_height = height.value; +					break; +				}  			}  		} @@ -76,13 +81,15 @@ public class AltosFlightStats {  		double	landed_time = AltosLib.MISSING; -		for (AltosTimeValue height : series.height_series) { -			if (height.value > landed_height + 10) { -				above = true; -			} else { -				if (above && Math.abs(height.value - landed_height) < 2) { -					above = false; -					landed_time = height.time; +		if (series.height_series != null) { +			for (AltosTimeValue height : series.height_series) { +				if (height.value > landed_height + 10) { +					above = true; +				} else { +					if (above && Math.abs(height.value - landed_height) < 2) { +						above = false; +						landed_time = height.time; +					}  				}  			}  		} @@ -93,17 +100,21 @@ public class AltosFlightStats {  		double 		boost_time = AltosLib.MISSING;  		double		boost_state_time = AltosLib.MISSING; -		for (AltosTimeValue state : series.state_series) { -			if (state.value >= AltosLib.ao_flight_boost && state.value <= AltosLib.ao_flight_landed) { -				boost_state_time = state.time; -				break; +		if (series.state_series != null) { +			for (AltosTimeValue state : series.state_series) { +				if (state.value >= AltosLib.ao_flight_boost && state.value <= AltosLib.ao_flight_landed) { +					boost_state_time = state.time; +					break; +				}  			}  		} -		for (AltosTimeValue accel : series.accel_series) { -			if (accel.value < 1) -				boost_time = accel.time; -			if (boost_state_time != AltosLib.MISSING && accel.time >= boost_state_time) -				break; +		if (series.accel_series != null) { +			for (AltosTimeValue accel : series.accel_series) { +				if (accel.value < 1) +					boost_time = accel.time; +				if (boost_state_time != AltosLib.MISSING && accel.time >= boost_state_time) +					break; +			}  		}  		return boost_time;  	} @@ -136,12 +147,16 @@ public class AltosFlightStats {  			if (s == AltosLib.ao_flight_boost)  				state_start[s] = boost_time; -			else +			else if (series.state_series != null)  				state_start[s] = series.state_series.time_of(s); +			else +				state_start[s] = AltosLib.MISSING;  			if (s == AltosLib.ao_flight_main)  				state_end[s] = landed_time; -			else +			else if (series.state_series != null)  				state_end[s] = series.state_series.time_of(s+1); +			else +				state_end[s] = AltosLib.MISSING;  			if (series.speed_series != null)  				state_speed[s] = series.speed_series.average(state_start[s], state_end[s]); diff --git a/altoslib/AltosMapStore.java b/altoslib/AltosMapStore.java index 7cce05a5..460c52b6 100644 --- a/altoslib/AltosMapStore.java +++ b/altoslib/AltosMapStore.java @@ -91,6 +91,7 @@ public class AltosMapStore {  	static Object	forbidden_lock = new Object();  	static long	forbidden_time;  	static boolean	forbidden_set; +	public static int forbidden_response;  	private int fetch_url() {  		URL u; @@ -116,6 +117,7 @@ public class AltosMapStore {  					synchronized (forbidden_lock) {  						forbidden_time = System.nanoTime();  						forbidden_set = true; +						forbidden_response = response;  						return AltosMapTile.forbidden;  					}  				} diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index d3929b8f..e5a0541e 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -43,8 +43,6 @@ public class AltosState extends AltosDataListener {  	public int	rssi;  	public int	status; -	public double	time; -  	class AltosValue {  		double	value;  		double	prev_value; @@ -288,7 +286,6 @@ public class AltosState extends AltosDataListener {  		}  	} -	private int	state;  	public boolean	landed;  	public boolean	ascent;	/* going up? */  	public boolean	boost;	/* under power */ @@ -506,23 +503,7 @@ public class AltosState extends AltosDataListener {  		pressure.set(p, time);  	} -	class AltosForce extends AltosValue { -		void set(double p, double time) { -			super.set(p, time); -		} - -		AltosForce() { -			super(); -		} -	} -	private AltosForce	thrust; - -	public double thrust() { -		return thrust.value(); -	} -  	public void set_thrust(double N) { -		thrust.set(N, time);  	}  	public double baro_height() { @@ -720,15 +701,8 @@ public class AltosState extends AltosDataListener {  	public int	speak_tick;  	public double	speak_altitude; -	public String	callsign; -	public String	firmware_version; -  	public double	ground_accel; -	public int	log_format; -	public int	log_space; -	public String	product; -  	public AltosCompanion	companion;  	public int	pyro_fired; @@ -756,7 +730,6 @@ public class AltosState extends AltosDataListener {  		ground_pressure = new AltosGroundPressure();  		altitude = new AltosAltitude();  		pressure = new AltosPressure(); -		thrust = new AltosForce();  		speed = new AltosSpeed();  		acceleration = new AltosAccel();  		orient = new AltosCValue(); @@ -810,15 +783,8 @@ public class AltosState extends AltosDataListener {  		speak_tick = AltosLib.MISSING;  		speak_altitude = AltosLib.MISSING; -		callsign = null; -		firmware_version = null; -  		ground_accel = AltosLib.MISSING; -		log_format = AltosLib.MISSING; -		log_space = AltosLib.MISSING; -		product = null; -  		companion = null;  		pyro_fired = 0; @@ -1108,6 +1074,10 @@ public class AltosState extends AltosDataListener {  		this.pyro_fired = fired;  	} +	public AltosState() { +		init(); +	} +  	public AltosState (AltosCalData cal_data) {  		super(cal_data);  		init(); diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 46a5d060..40b9c9bf 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -123,6 +123,8 @@ public class AltosTelemetryFile implements AltosRecordSet {  			cal_data.set_tick(tick);  			if (cal_data.time() >= -1)  				telem.provide_data(listener, cal_data); +			if (listener.state == AltosLib.ao_flight_landed) +				break;  		}  		listener.finish();  	} | 
