diff options
Diffstat (limited to 'altoslib/AltosRecord.java')
| -rw-r--r-- | altoslib/AltosRecord.java | 123 | 
1 files changed, 46 insertions, 77 deletions
diff --git a/altoslib/AltosRecord.java b/altoslib/AltosRecord.java index 8bab1d0c..5e4ed927 100644 --- a/altoslib/AltosRecord.java +++ b/altoslib/AltosRecord.java @@ -15,7 +15,7 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.AltosLib; +package org.altusmetrum.altoslib_1;  public class AltosRecord implements Comparable <AltosRecord>, Cloneable { @@ -43,13 +43,8 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {  	public int	state;  	public int	tick; -	/* Current flight dynamic state */ -	public double	acceleration;	/* m/s² */ -	public double	speed;		/* m/s */ -	public double	height;		/* m */ -  	public AltosGPS	gps; -	public boolean	new_gps; +	public int	gps_sequence;  	public double	time;	/* seconds since boost */ @@ -63,6 +58,11 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {  	public AltosRecordCompanion companion; +	/* Telemetry sources have these values recorded from the flight computer */ +	public double	kalman_height; +	public double	kalman_speed; +	public double	kalman_acceleration; +  	/*  	 * Abstract methods that convert record data  	 * to standard units: @@ -75,76 +75,48 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {  	 *	temperature:	°C  	 */ -	public double raw_pressure() { return MISSING; } - -	public double filtered_pressure() { return MISSING; } - +	public double pressure() { return MISSING; }  	public double ground_pressure() { return MISSING; } - -	public double battery_voltage() { return MISSING; } - -	public double main_voltage() { return MISSING; } - -	public double drogue_voltage() { return MISSING; } - -	public double temperature() { return MISSING; } -	  	public double acceleration() { return MISSING; } -	public double accel_speed() { return MISSING; } - -	public AltosIMU imu() { return null; } - -	public AltosMag mag() { return null; } +	public double altitude() { +		double	p = pressure(); -	/* -	 * Convert various pressure values to altitude -	 */ - -	public double raw_altitude() { -		double p = raw_pressure();  		if (p == MISSING)  			return MISSING;  		return AltosConvert.pressure_to_altitude(p);  	}  	public double ground_altitude() { -		double p = ground_pressure(); +		double	p = ground_pressure(); +  		if (p == MISSING)  			return MISSING;  		return AltosConvert.pressure_to_altitude(p);  	} -	public double filtered_altitude() { -		double	ga = ground_altitude(); -		if (height != MISSING && ga != MISSING) -			return height + ga; +	public double height() { +		double	g = ground_altitude(); +		double	a = altitude(); -		double	p = filtered_pressure(); -		if (p == MISSING) -			return raw_altitude(); -		return AltosConvert.pressure_to_altitude(p); +		if (g == MISSING) +			return MISSING; +		if (a == MISSING) +			return MISSING; +		return a - g;  	} -	public double filtered_height() { -		if (height != MISSING) -			return height; +	public double battery_voltage() { return MISSING; } -		double f = filtered_altitude(); -		double g = ground_altitude(); -		if (f == MISSING || g == MISSING) -			return MISSING; -		return f - g; -	} +	public double main_voltage() { return MISSING; } -	public double raw_height() { -		double r = raw_altitude(); -		double g = ground_altitude(); +	public double drogue_voltage() { return MISSING; } -		if (r == MISSING || g == MISSING) -			return height; -		return r - g; -	} +	public double temperature() { return MISSING; } +	 +	public AltosIMU imu() { return null; } + +	public AltosMag mag() { return null; }  	public String state() {  		return AltosLib.state_name(state); @@ -154,6 +126,12 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {  		return tick - o.tick;  	} +	public AltosRecord clone() { +		AltosRecord n = new AltosRecord(); +		n.copy(this); +		return n; +	} +  	public void copy(AltosRecord old) {  		seen = old.seen;  		version = old.version; @@ -164,39 +142,30 @@ public class AltosRecord implements Comparable <AltosRecord>, Cloneable {  		status = old.status;  		state = old.state;  		tick = old.tick; -		acceleration = old.acceleration; -		speed = old.speed; -		height = old.height;  		gps = new AltosGPS(old.gps); -		new_gps = old.new_gps; +		gps_sequence = old.gps_sequence;  		companion = old.companion; -	} - -	public AltosRecord clone() { -		try { -			AltosRecord n = (AltosRecord) super.clone(); -			n.copy(this); -			return n; -		} catch (CloneNotSupportedException e) { -			return null; -		} +		kalman_acceleration = old.kalman_acceleration; +		kalman_speed = old.kalman_speed; +		kalman_height = old.kalman_height;  	}  	public AltosRecord() {  		seen = 0;  		version = 0;  		callsign = "N0CALL"; -		serial = 0; -		flight = 0; +		serial = MISSING; +		flight = MISSING;  		rssi = 0;  		status = 0;  		state = AltosLib.ao_flight_startup;  		tick = 0; -		acceleration = MISSING; -		speed = MISSING; -		height = MISSING; -		gps = new AltosGPS(); -		new_gps = false; +		gps = null; +		gps_sequence = 0;  		companion = null; + +		kalman_acceleration = MISSING; +		kalman_speed = MISSING; +		kalman_height = MISSING;  	}  }  | 
