X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosFlightStats.java;h=8bdd43cff94bb9c0dc5e559cbbf9e61d6e8871ee;hp=87e04293c4fa91a8684aaa38908a78cc27531207;hb=f822b84d8c25159ff113fef6a419b6e18e87a87a;hpb=0a6c76fc0525d6588a1d88127f0085f13a02f1af diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index 87e04293..8bdd43cf 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_4; +package org.altusmetrum.altoslib_7; import java.io.*; @@ -35,8 +35,12 @@ public class AltosFlightStats { public int hour, minute, second; public double lat, lon; public double pad_lat, pad_lon; + public boolean has_flight_data; public boolean has_gps; - public boolean has_other_adc; + public boolean has_gps_sats; + public boolean has_gps_detail; + public boolean has_flight_adc; + public boolean has_battery; public boolean has_rssi; public boolean has_imu; public boolean has_mag; @@ -109,8 +113,11 @@ public class AltosFlightStats { hour = minute = second = AltosLib.MISSING; serial = flight = AltosLib.MISSING; lat = lon = AltosLib.MISSING; + has_flight_data = false; has_gps = false; - has_other_adc = false; + has_gps_sats = false; + has_flight_adc = false; + has_battery = false; has_rssi = false; has_imu = false; has_mag = false; @@ -121,11 +128,16 @@ public class AltosFlightStats { if (flight == AltosLib.MISSING && state.flight != AltosLib.MISSING) flight = state.flight; if (state.battery_voltage != AltosLib.MISSING) - has_other_adc = true; + has_battery = true; + if (state.main_voltage != AltosLib.MISSING) + has_flight_adc = true; if (state.rssi != AltosLib.MISSING) has_rssi = true; end_time = state.time; + if (state.pressure() != AltosLib.MISSING) + has_flight_data = true; + int state_id = state.state; if (state.time >= boost_time && state_id < AltosLib.ao_flight_boost) state_id = AltosLib.ao_flight_boost; @@ -139,6 +151,11 @@ public class AltosFlightStats { minute = state.gps.minute; second = state.gps.second; } + max_height = state.max_height(); + max_speed = state.max_speed(); + max_acceleration = state.max_acceleration(); + max_gps_height = state.max_gps_height(); + if (0 <= state_id && state_id < AltosLib.ao_flight_invalid) { double acceleration = state.acceleration(); double speed = state.speed(); @@ -151,19 +168,19 @@ public class AltosFlightStats { state_start[state_id] = state.time; if (state_end[state_id] < state.time) state_end[state_id] = state.time; - max_height = state.max_height(); - max_speed = state.max_speed(); - max_acceleration = state.max_acceleration(); - max_gps_height = state.max_gps_height(); + } + if (state.pad_lat != AltosLib.MISSING) { + pad_lat = state.pad_lat; + pad_lon = state.pad_lon; } if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) { - if (state_id <= AltosLib.ao_flight_pad) { - pad_lat = state.gps.lat; - pad_lon = state.gps.lon; - } lat = state.gps.lat; lon = state.gps.lon; has_gps = true; + if (state.gps.cc_gps_sat != null) + has_gps_sats = true; + if (state.gps.course != AltosLib.MISSING) + has_gps_detail = true; } if (state.imu != null) has_imu = true; @@ -178,6 +195,9 @@ public class AltosFlightStats { if (state_count[s] > 0) { state_speed[s] /= state_count[s]; state_accel[s] /= state_count[s]; + } else { + state_speed[s] = AltosLib.MISSING; + state_accel[s] = AltosLib.MISSING; } if (state_start[s] == 0) state_start[s] = end_time;