diff options
Diffstat (limited to 'altoslib/AltosTelemetryMegaData.java')
| -rw-r--r-- | altoslib/AltosTelemetryMegaData.java | 78 | 
1 files changed, 29 insertions, 49 deletions
| diff --git a/altoslib/AltosTelemetryMegaData.java b/altoslib/AltosTelemetryMegaData.java index 6ea5ec89..7ef9c637 100644 --- a/altoslib/AltosTelemetryMegaData.java +++ b/altoslib/AltosTelemetryMegaData.java @@ -16,78 +16,58 @@   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.   */ -package org.altusmetrum.altoslib_11; +package org.altusmetrum.altoslib_12;  public class AltosTelemetryMegaData extends AltosTelemetryStandard { -	int	state; -	int	v_batt; -	int	v_pyro; -	int	sense[]; +	int	state() { return uint8(5); } -	int	ground_pres; -	int	ground_accel; -	int	accel_plus_g; -	int	accel_minus_g; +	int	v_batt() { return int16(6); } +	int	v_pyro() { return int16(8); } +	int	sense(int i) { int v = uint8(10+i); return v << 4 | v >> 8; } -	int	acceleration; -	int	speed; -	int	height_16; +	int	ground_pres() { return int32(16); } +	int	ground_accel() { return int16(20); } +	int	accel_plus_g() { return int16(22); } +	int	accel_minus_g() { return int16(24);} -	public AltosTelemetryMegaData(int[] bytes) { -		super(bytes); - -		state = uint8(5); - -		v_batt = int16(6); -		v_pyro = int16(8); - -		sense = new int[6]; - -		for (int i = 0; i < 6; i++) { -			sense[i] = uint8(10 + i) << 4; -			sense[i] |= sense[i] >> 8; -		} +	int	acceleration() { return int16(26); } +	int	speed() { return int16(28); } +	int	height_16() { return int16(30); } -		ground_pres = int32(16); -		ground_accel = int16(20); -		accel_plus_g = int16(22); -		accel_minus_g = int16(24); - -		acceleration = int16(26); -		speed = int16(28); - -		height_16 = int16(30); +	public AltosTelemetryMegaData(int[] bytes) throws AltosCRCException { +		super(bytes);  	} -	public void update_state(AltosState state) { -		super.update_state(state); +	public void provide_data(AltosDataListener listener) { +		super.provide_data(listener); -		state.set_state(this.state); +		listener.set_state(state()); -		state.set_battery_voltage(AltosConvert.mega_battery_voltage(v_batt)); -		state.set_pyro_voltage(AltosConvert.mega_pyro_voltage(v_pyro)); +		listener.set_battery_voltage(AltosConvert.mega_battery_voltage(v_batt())); +		listener.set_pyro_voltage(AltosConvert.mega_pyro_voltage(v_pyro())); -		state.set_apogee_voltage(AltosConvert.mega_pyro_voltage(sense[4])); -		state.set_main_voltage(AltosConvert.mega_pyro_voltage(sense[5])); +		listener.set_apogee_voltage(AltosConvert.mega_pyro_voltage(sense(4))); +		listener.set_main_voltage(AltosConvert.mega_pyro_voltage(sense(5)));  		double voltages[] = new double[4];  		for (int i = 0; i < 4; i++) -			voltages[i] = AltosConvert.mega_pyro_voltage(sense[i]); +			voltages[i] = AltosConvert.mega_pyro_voltage(sense(i)); + +		listener.set_igniter_voltage(voltages); -		state.set_ignitor_voltage(voltages); +		AltosCalData cal_data = listener.cal_data(); -		state.set_ground_accel(ground_accel); -		state.set_ground_pressure(ground_pres); -		state.set_accel_g(accel_plus_g, accel_minus_g); +		cal_data.set_ground_accel(ground_accel()); +		cal_data.set_ground_pressure(ground_pres()); +		cal_data.set_accel_plus_minus(accel_plus_g(), accel_minus_g());  		/* Fill in the high bits of height from recent GPS  		 * data if available, otherwise guess using the  		 * previous kalman height  		 */ -		state.set_kalman(extend_height(state, height_16), -				 speed/16.0, acceleration / 16.0); +		listener.set_kalman(height_16(), speed()/16.0, acceleration() / 16.0);  	}  } | 
