X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosFlightSeries.java;h=ab7943b399c1a340c3257b35dbdda9721c5e56e7;hb=d75e8b9046295051c91696461e8d5f59c8260ccc;hp=5223a5b406da20dbd4e2b5bfee3a733c640e0424;hpb=43f8470dc66392dae4770882bfc6ad25b1d75436;p=fw%2Faltos diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index 5223a5b4..ab7943b3 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -12,7 +12,7 @@ * General Public License for more details. */ -package org.altusmetrum.altoslib_11; +package org.altusmetrum.altoslib_12; import java.util.*; @@ -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; @@ -193,6 +191,17 @@ public class AltosFlightSeries extends AltosDataListener { public void set_received_time(long received_time) { } + public AltosTimeSeries tick_series; + + public static final String tick_name = "Tick"; + + public void set_tick(int tick) { + super.set_tick(tick); + if (tick_series == null) + tick_series = add_series(tick_name, null); + tick_series.add(time(), tick); + } + public AltosTimeSeries rssi_series; public static final String rssi_name = "RSSI"; @@ -232,23 +241,23 @@ public class AltosFlightSeries extends AltosDataListener { if (altitude_series == null) altitude_series = add_series(altitude_name, AltosConvert.height); - if (cal_data.ground_pressure == AltosLib.MISSING) - cal_data.set_ground_pressure(pa); + if (cal_data().ground_pressure == AltosLib.MISSING) + cal_data().set_ground_pressure(pa); double altitude = AltosConvert.pressure_to_altitude(pa); altitude_series.add(time(), altitude); } private void compute_height() { - double ground_altitude = cal_data.ground_altitude; + double ground_altitude = cal_data().ground_altitude; 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); } - if (gps_height == null && cal_data.gps_pad != null && cal_data.gps_pad.alt != AltosLib.MISSING && gps_altitude != null) { - double gps_ground_altitude = cal_data.gps_pad.alt; + if (gps_height == null && cal_data().gps_pad != null && cal_data().gps_pad.alt != AltosLib.MISSING && gps_altitude != null) { + double gps_ground_altitude = cal_data().gps_pad.alt; gps_height = add_series(gps_height_name, AltosConvert.height); for (AltosTimeValue gps_alt : gps_altitude) gps_height.add(gps_alt.time, gps_alt.value - gps_ground_altitude); @@ -343,16 +352,16 @@ public class AltosFlightSeries extends AltosDataListener { if (accel_ground_across == AltosLib.MISSING) return; - if (cal_data.pad_orientation == AltosLib.MISSING) + if (cal_data().pad_orientation == AltosLib.MISSING) return; - if (cal_data.accel_zero_across == AltosLib.MISSING) + if (cal_data().accel_zero_across == AltosLib.MISSING) return; - AltosRotation rotation = new AltosRotation(AltosIMU.convert_accel(accel_ground_across - cal_data.accel_zero_across), - AltosIMU.convert_accel(accel_ground_through - cal_data.accel_zero_through), - AltosIMU.convert_accel(accel_ground_along - cal_data.accel_zero_along), - cal_data.pad_orientation); + AltosRotation rotation = new AltosRotation(AltosIMU.convert_accel(accel_ground_across - cal_data().accel_zero_across), + AltosIMU.convert_accel(accel_ground_through - cal_data().accel_zero_through), + AltosIMU.convert_accel(accel_ground_along - cal_data().accel_zero_along), + cal_data().pad_orientation); double prev_time = ground_time; orient_series = add_series(orient_name, AltosConvert.orient); @@ -363,11 +372,11 @@ public class AltosFlightSeries extends AltosDataListener { double dt = time - prev_time; if (dt > 0) { - double roll = AltosConvert.degrees_to_radians(roll_v.value); - double pitch = AltosConvert.degrees_to_radians(gyro_pitch.value(time)); - double yaw = AltosConvert.degrees_to_radians(gyro_yaw.value(time)); + double roll = AltosConvert.degrees_to_radians(roll_v.value) * dt; + double pitch = AltosConvert.degrees_to_radians(gyro_pitch.value(time)) * dt; + double yaw = AltosConvert.degrees_to_radians(gyro_yaw.value(time)) * dt; - rotation.rotate(dt, pitch, yaw, roll); + rotation.rotate(pitch, yaw, roll); orient_series.add(time, rotation.tilt()); } prev_time = time; @@ -643,7 +652,7 @@ public class AltosFlightSeries extends AltosDataListener { public void set_igniter_voltage(double[] voltage) { int channels = voltage.length; if (igniter_voltage == null || igniter_voltage.length <= channels) { - AltosTimeSeries[] new_igniter_voltage = new AltosTimeSeries[channels + 1]; + AltosTimeSeries[] new_igniter_voltage = new AltosTimeSeries[channels]; int i = 0; if (igniter_voltage != null) {