diff options
| -rw-r--r-- | altoslib/AltosEepromFile.java | 3 | ||||
| -rw-r--r-- | altoslib/AltosEepromHeader.java | 2 | ||||
| -rw-r--r-- | altoslib/AltosLib.java | 4 | ||||
| -rw-r--r-- | altoslib/AltosState.java | 23 | 
4 files changed, 25 insertions, 7 deletions
diff --git a/altoslib/AltosEepromFile.java b/altoslib/AltosEepromFile.java index f59585f8..b7e446ce 100644 --- a/altoslib/AltosEepromFile.java +++ b/altoslib/AltosEepromFile.java @@ -72,7 +72,8 @@ public class AltosEepromFile extends AltosStateIterable {  		headers = new AltosEepromIterable(AltosEepromHeader.read(input));  		start = headers.state(); -		start.set_state(AltosLib.ao_flight_pad); +		if (start.state != AltosLib.ao_flight_stateless) +			start.set_state(AltosLib.ao_flight_pad);  		if (start.log_format == AltosLib.MISSING) {  			if (start.product != null) { diff --git a/altoslib/AltosEepromHeader.java b/altoslib/AltosEepromHeader.java index ea6f5e28..839aa06e 100644 --- a/altoslib/AltosEepromHeader.java +++ b/altoslib/AltosEepromHeader.java @@ -56,7 +56,7 @@ public class AltosEepromHeader extends AltosEeprom {  			state.product = data;  			break;  		case AltosLib.AO_LOG_LOG_FORMAT: -			state.log_format = config_a; +			state.set_log_format(config_a);  			break;  		case AltosLib.AO_LOG_SERIAL_NUMBER:  			state.set_serial(config_a); diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index 7080ebfe..69c6d604 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -79,6 +79,7 @@ public class AltosLib {  	public static final int ao_flight_main = 7;  	public static final int ao_flight_landed = 8;  	public static final int ao_flight_invalid = 9; +	public static final int ao_flight_stateless = 10;  	/* USB product IDs */  	public final static int vendor_altusmetrum = 0xfffe; @@ -187,6 +188,7 @@ public class AltosLib {  		string_to_state.put("main", ao_flight_main);  		string_to_state.put("landed", ao_flight_landed);  		string_to_state.put("invalid", ao_flight_invalid); +		string_to_state.put("stateless", ao_flight_stateless);  		map_initialized = true;  	} @@ -215,6 +217,7 @@ public class AltosLib {  		"main",  		"landed",  		"invalid", +		"stateless",  	};  	private static String[] state_to_string_capital = { @@ -228,6 +231,7 @@ public class AltosLib {  		"Main",  		"Landed",  		"Invalid", +		"Stateless",  	};  	public static int state(String state) { diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 1d6ee3c8..2d75f72e 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -500,7 +500,7 @@ public class AltosState implements Cloneable {  	class AltosSpeed extends AltosCValue {  		boolean can_max() { -			return state < AltosLib.ao_flight_fast; +			return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless;  		}  		void set_accel() { @@ -542,7 +542,7 @@ public class AltosState implements Cloneable {  	class AltosAccel extends AltosCValue {  		boolean can_max() { -			return state < AltosLib.ao_flight_fast; +			return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless;  		}  		void set_measured(double a, double time) { @@ -885,9 +885,9 @@ public class AltosState implements Cloneable {  		if (gps.locked && gps.nsat >= 4) {  			/* Track consecutive 'good' gps reports, waiting for 10 of them */ -			if (state == AltosLib.ao_flight_pad) { +			if (state == AltosLib.ao_flight_pad || state == AltosLib.ao_flight_stateless) {  				set_npad(npad+1); -				if (pad_lat != AltosLib.MISSING) { +				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); @@ -949,11 +949,24 @@ public class AltosState implements Cloneable {  				  state <= AltosLib.ao_flight_coast);  			boost = (AltosLib.ao_flight_boost == state);  		} -  	}  	public void set_device_type(int device_type) {  		this.device_type = device_type; +		switch (device_type) { +		case AltosLib.product_telegps: +			this.state = AltosLib.ao_flight_stateless; +			break; +		} +	} + +	public void set_log_format(int log_format) { +		this.log_format = log_format; +		switch (log_format) { +		case AltosLib.AO_LOG_FORMAT_TELEGPS: +			this.state = AltosLib.ao_flight_stateless; +			break; +		}  	}  	public void set_flight_params(int apogee_delay, int main_deploy) {  | 
