X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosFlightStats.java;h=2b6530c8d0c04458d0751dd181b24c7fc85dcca7;hp=8a50f4b5512662585e28dd2cf5739f4b151508ab;hb=0da4e201041a4420f273c2e0cda77eea78099518;hpb=bd7dd6f5adbe25708ba0276444196964f66b3c4a diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index 8a50f4b5..2b6530c8 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_11; +package org.altusmetrum.altoslib_12; import java.io.*; @@ -25,11 +25,10 @@ public class AltosFlightStats { public double max_gps_height; public double max_speed; public double max_acceleration; - public double[] state_speed = new double[AltosLib.ao_flight_invalid + 1]; - public double[] state_accel = new double[AltosLib.ao_flight_invalid + 1]; - public int[] state_count = new int[AltosLib.ao_flight_invalid + 1]; - public double[] state_start = new double[AltosLib.ao_flight_invalid + 1]; - public double[] state_end = new double[AltosLib.ao_flight_invalid + 1]; + public double[] state_speed = new double[AltosLib.ao_flight_invalid + 1]; + public double[] state_accel = new double[AltosLib.ao_flight_invalid + 1]; + public double[] state_start = new double[AltosLib.ao_flight_invalid + 1]; + public double[] state_end = new double[AltosLib.ao_flight_invalid + 1]; public String product; public String firmware_version; public int serial; @@ -129,7 +128,7 @@ public class AltosFlightStats { public AltosFlightStats(AltosFlightSeries series) { - AltosCalData cal_data = series.cal_data; + AltosCalData cal_data = series.cal_data(); series.finish(); @@ -151,14 +150,8 @@ public class AltosFlightStats { fixed_landed = true; } } - if (!fixed_boost && boost_time != AltosLib.MISSING) - series.state_series.add(boost_time, AltosLib.ao_flight_boost); - if (!fixed_landed && landed_time != AltosLib.MISSING) - series.state_series.add(landed_time, AltosLib.ao_flight_landed); } - System.out.printf("boost time %g landed %g\n", boost_time, landed_time); - year = month = day = AltosLib.MISSING; hour = minute = second = AltosLib.MISSING; serial = flight = AltosLib.MISSING; @@ -173,33 +166,32 @@ public class AltosFlightStats { has_mag = false; has_orient = false; - for (int s = AltosLib.ao_flight_startup; s <= AltosLib.ao_flight_landed; s++) { - state_count[s] = 0; + for (int s = 0; s < AltosLib.ao_flight_invalid + 1; s++) + state_speed[s] = state_accel[s] = state_start[s] = state_end[s] = AltosLib.MISSING; - if (s == AltosLib.ao_flight_boost) - state_start[s] = boost_time; - else if (series.state_series != null) - state_start[s] = series.state_series.time_of(s); - else - state_start[s] = AltosLib.MISSING; + if (series.state_series != null) { + for (AltosTimeValue state : series.state_series) { + int s = (int) state.value; - if (s == AltosLib.ao_flight_main) - state_end[s] = landed_time; - else if (series.state_series != null) - state_end[s] = series.state_series.time_of(s+1); - else - state_end[s] = AltosLib.MISSING; + if (s < AltosLib.ao_flight_startup && AltosLib.ao_flight_landed < s) + continue; - System.out.printf("state %s start %g end %g\n", AltosLib.state_name(s), state_start[s], state_end[s]); + if (s == AltosLib.ao_flight_boost) + state_start[s] = boost_time; + else + state_start[s] = series.state_series.time_of(s); - if (state_end[s] > landed_time) - state_end[s] = landed_time; + if (s == AltosLib.ao_flight_main) + state_end[s] = landed_time; + else + state_end[s] = series.state_series.time_of(s+1); - if (series.speed_series != null) - state_speed[s] = series.speed_series.average(state_start[s], state_end[s]); + if (series.speed_series != null) + state_speed[s] = series.speed_series.average(state_start[s], state_end[s]); - if (series.accel_series != null) - state_accel[s] = series.accel_series.average(state_start[s], state_end[s]); + if (series.accel_series != null) + state_accel[s] = series.accel_series.average(state_start[s], state_end[s]); + } } product = cal_data.product; @@ -212,7 +204,7 @@ public class AltosFlightStats { has_rssi = series.rssi_series != null; has_flight_data = series.pressure_series != null; - AltosGPS gps = series.cal_data.gps_pad; + AltosGPS gps = series.cal_data().gps_pad; if (gps != null) { year = gps.year;