diff options
| -rw-r--r-- | altoslib/AltosCalData.java | 7 | ||||
| -rw-r--r-- | altoslib/AltosDataListener.java | 31 | ||||
| -rw-r--r-- | altoslib/AltosEepromRecord.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosEepromRecordSet.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosFlightSeries.java | 16 | ||||
| -rw-r--r-- | altoslib/AltosState.java | 34 | ||||
| -rw-r--r-- | altoslib/AltosTelemetry.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosTelemetryConfiguration.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosTelemetryFile.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosTelemetryReader.java | 8 | 
10 files changed, 62 insertions, 44 deletions
| diff --git a/altoslib/AltosCalData.java b/altoslib/AltosCalData.java index 6258c1a8..7415d5ad 100644 --- a/altoslib/AltosCalData.java +++ b/altoslib/AltosCalData.java @@ -72,6 +72,13 @@ public class AltosCalData {  		}  	} +	public int		log_format = AltosLib.MISSING; + +	public void set_log_format(int log_format) { +		if (log_format != AltosLib.MISSING) +			this.log_format = log_format; +	} +  	public int		config_major = AltosLib.MISSING;  	public int		config_minor = AltosLib.MISSING;  	public int		flight_log_max = AltosLib.MISSING; diff --git a/altoslib/AltosDataListener.java b/altoslib/AltosDataListener.java index be6d840f..fb37fe3d 100644 --- a/altoslib/AltosDataListener.java +++ b/altoslib/AltosDataListener.java @@ -19,7 +19,6 @@ public abstract class AltosDataListener {  	private AltosCalData	cal_data = null;  	public double		time = AltosLib.MISSING; -	public int		state = AltosLib.MISSING;  	public double		frequency = AltosLib.MISSING;  	public void set_tick(int tick) { @@ -42,14 +41,34 @@ public abstract class AltosDataListener {  		cal_data().set_serial(serial);  	} +	public void set_device_type(int device_type) { +		cal_data().set_device_type(device_type); +		switch (device_type) { +		case AltosLib.product_telegps: +			set_state(AltosLib.ao_flight_stateless); +			break; +		} +	} + +	public void set_log_format(int log_format) { +		cal_data().set_log_format(log_format); +		switch (log_format) { +		case AltosLib.AO_LOG_FORMAT_TELEGPS: +			set_state(AltosLib.ao_flight_stateless); +			break; +		} +	} +  	public double time() {  		return time;  	}  	public void set_state(int state) {  		cal_data().set_state(state); -		if (state != AltosLib.MISSING) -			this.state = state; +	} + +	public int state() { +		return cal_data().state;  	}  	public void set_flight(int flight) { @@ -64,6 +83,12 @@ public abstract class AltosDataListener {  	public void finish() {  	} +	public void init() { +		set_state(AltosLib.ao_flight_invalid); +		time = AltosLib.MISSING; +		frequency = AltosLib.MISSING; +	} +  	public abstract void set_rssi(int rssi, int status);  	public abstract void set_received_time(long received_time); diff --git a/altoslib/AltosEepromRecord.java b/altoslib/AltosEepromRecord.java index 094584fe..e937c3d0 100644 --- a/altoslib/AltosEepromRecord.java +++ b/altoslib/AltosEepromRecord.java @@ -83,7 +83,7 @@ public abstract class AltosEepromRecord implements Comparable<AltosEepromRecord>  	/* AltosDataProvider */  	public void provide_data(AltosDataListener listener, AltosCalData cal_data) { -		cal_data.set_tick(tick()); +		listener.set_tick(tick());  		if (cmd() == AltosLib.AO_LOG_FLIGHT)  			cal_data.set_boost_tick();  		listener.set_time(cal_data.time()); diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java index 48e90c05..d91ae3ac 100644 --- a/altoslib/AltosEepromRecordSet.java +++ b/altoslib/AltosEepromRecordSet.java @@ -44,6 +44,8 @@ public class AltosEepromRecordSet implements AltosRecordSet {  		AltosCalData	cal_data = cal_data();  		cal_data.reset(); +		listener.set_log_format(config_data().log_format); +  		for (AltosEepromRecord record : ordered) {  			record.provide_data(listener, cal_data);  		} diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index df575189..f7ea0d15 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -150,15 +150,13 @@ public class AltosFlightSeries extends AltosDataListener {  	public void set_state(int state) { -		if (state == AltosLib.ao_flight_pad) -			return; - -		if (state_series == null) -			state_series = add_series(state_name, AltosConvert.state_name); -		else if (this.state == state) -			return; -		this.state = state; -		state_series.add(time(), state); +		if (state != AltosLib.ao_flight_pad && state != AltosLib.MISSING && state != AltosLib.ao_flight_stateless) { +			if (state_series == null) +				state_series = add_series(state_name, AltosConvert.state_name); +			if (this.state() != state) +				state_series.add(time(), state); +		} +		super.set_state(state);  	}  	public AltosTimeSeries	accel_series; diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 39ab10da..54c70094 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -480,7 +480,7 @@ public class AltosState extends AltosDataListener {  	class AltosPressure extends AltosValue {  		void set(double p, double time) {  			super.set(p, time); -			if (state == AltosLib.ao_flight_pad) +			if (state() == AltosLib.ao_flight_pad)  				ground_pressure.set_filtered(p, time);  			double a = pressure_to_altitude(p);  			altitude.set_computed(a, time); @@ -557,7 +557,7 @@ public class AltosState extends AltosDataListener {  	class AltosSpeed extends AltosCValue {  		boolean can_max() { -			return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; +			return state() < AltosLib.ao_flight_fast || state() == AltosLib.ao_flight_stateless;  		}  		void set_accel() { @@ -615,7 +615,7 @@ public class AltosState extends AltosDataListener {  	class AltosAccel extends AltosCValue {  		boolean can_max() { -			return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless; +			return state() < AltosLib.ao_flight_fast || state() == AltosLib.ao_flight_stateless;  		}  		void set_measured(double a, double time) { @@ -712,11 +712,11 @@ public class AltosState extends AltosDataListener {  	}  	public void init() { +		super.init(); +  		set = 0;  		received_time = System.currentTimeMillis(); -		time = AltosLib.MISSING; -		state = AltosLib.ao_flight_invalid;  		landed = false;  		boost = false;  		rssi = AltosLib.MISSING; @@ -819,9 +819,9 @@ public class AltosState extends AltosDataListener {  		if (gps.locked && gps.nsat >= 4) {  			/* Track consecutive 'good' gps reports, waiting for 10 of them */ -			if (state == AltosLib.ao_flight_pad || state == AltosLib.ao_flight_stateless) { +			if (state() == AltosLib.ao_flight_pad || state() == AltosLib.ao_flight_stateless) {  				set_npad(npad+1); -				if (pad_lat != AltosLib.MISSING && (npad < 10 || state == AltosLib.ao_flight_pad)) { +				if (pad_lat != AltosLib.MISSING && (npad < 10 || state() == AltosLib.ao_flight_pad)) {  					pad_lat = (pad_lat * 31 + gps.lat) / 32;  					pad_lon = (pad_lon * 31 + gps.lon) / 32;  					gps_ground_altitude.set_filtered(gps.alt, time); @@ -859,24 +859,14 @@ public class AltosState extends AltosDataListener {  	}  	public String state_name() { -		return AltosLib.state_name(state); +		return AltosLib.state_name(state());  	}  	public void set_state(int state) { -		if (state != AltosLib.ao_flight_invalid) { -			this.state = state; -			ascent = (AltosLib.ao_flight_boost <= state && -				  state <= AltosLib.ao_flight_coast); -			boost = (AltosLib.ao_flight_boost == state); -		} -	} - -	public int state() { -		return state; -	} - -	private void re_init() { -		init(); +		super.set_state(state); +		ascent = (AltosLib.ao_flight_boost <= state() && +			  state() <= AltosLib.ao_flight_coast); +		boost = (AltosLib.ao_flight_boost == state());  	}  	public int rssi() { diff --git a/altoslib/AltosTelemetry.java b/altoslib/AltosTelemetry.java index f17e1171..fe536c6a 100644 --- a/altoslib/AltosTelemetry.java +++ b/altoslib/AltosTelemetry.java @@ -51,7 +51,7 @@ public abstract class AltosTelemetry implements AltosDataProvider {  	public void provide_data(AltosDataListener listener) {  		listener.set_serial(serial()); -		if (listener.state == AltosLib.ao_flight_invalid) +		if (listener.state() == AltosLib.ao_flight_invalid)  			listener.set_state(AltosLib.ao_flight_startup);  		if (frequency != AltosLib.MISSING)  			listener.set_frequency(frequency); diff --git a/altoslib/AltosTelemetryConfiguration.java b/altoslib/AltosTelemetryConfiguration.java index ea307442..c8026a83 100644 --- a/altoslib/AltosTelemetryConfiguration.java +++ b/altoslib/AltosTelemetryConfiguration.java @@ -40,7 +40,7 @@ public class AltosTelemetryConfiguration extends AltosTelemetryStandard {  		AltosCalData cal_data = listener.cal_data(); -		cal_data.set_device_type(device_type()); +		listener.set_device_type(device_type());  		cal_data.set_flight(flight());  		cal_data.set_config(config_major(), config_minor(), flight_log_max());  		if (device_type() == AltosLib.product_telegps) diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 135b0284..e51455f8 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -128,7 +128,7 @@ public class AltosTelemetryFile implements AltosRecordSet {  			/* Try to pick up at least one pre-boost value */  			if (cal_data.time() >= -2)  				telem.provide_data(listener); -			if (listener.state == AltosLib.ao_flight_landed) +			if (listener.state() == AltosLib.ao_flight_landed)  				break;  		}  		listener.finish(); diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java index 26fe4f26..8fb61a4f 100644 --- a/altoslib/AltosTelemetryReader.java +++ b/altoslib/AltosTelemetryReader.java @@ -41,19 +41,15 @@ public class AltosTelemetryReader extends AltosFlightReader {  				throw new IOException("IO error");  		} while (!link.get_monitor());  		AltosTelemetry	telem = AltosTelemetry.parse(l.line); -		if (state == null) { -			System.out.printf("Make state\n"); +		if (state == null)  			state = new AltosState(cal_data()); -		}  		telem.provide_data(state);  		return state;  	}  	public AltosCalData cal_data() { -		if (cal_data == null) { -			System.out.printf("Make cal data\n"); +		if (cal_data == null)  			cal_data = new AltosCalData(); -		}  		return cal_data;  	} | 
