libaltos: Delay after opening bluetooth device on linux
[fw/altos] / altosui / AltosFlightStats.java
index 967f094f3516322f3660416d0d09b9f636324ca5..dee31a8d3bcf6f8d3005803b110ead9cb6595236 100644 (file)
@@ -18,7 +18,7 @@
 package altosui;
 
 import java.io.*;
-import org.altusmetrum.altoslib.*;
+import org.altusmetrum.altoslib_1.*;
 
 public class AltosFlightStats {
        double          max_height;
@@ -34,6 +34,11 @@ public class AltosFlightStats {
        int             flight;
        int             year, month, day;
        int             hour, minute, second;
+       double          lat, lon;
+       double          pad_lat, pad_lon;
+       boolean         has_gps;
+       boolean         has_other_adc;
+       boolean         has_rssi;
 
        double landed_time(AltosRecordIterable iterable) {
                AltosState      state = null;
@@ -98,11 +103,19 @@ public class AltosFlightStats {
                year = month = day = -1;
                hour = minute = second = -1;
                serial = flight = -1;
+               lat = lon = -1;
+               has_gps = false;
+               has_other_adc = false;
+               has_rssi = false;
                for (AltosRecord record : iterable) {
                        if (serial < 0)
                                serial = record.serial;
                        if ((record.seen & AltosRecord.seen_flight) != 0 && flight < 0)
                                flight = record.flight;
+                       if ((record.seen & AltosRecord.seen_temp_volt) != 0)
+                               has_other_adc = true;
+                       if (record.rssi != 0)
+                               has_rssi = true;
                        new_state = new AltosState(record, state);
                        end_time = new_state.time;
                        state = new_state;
@@ -137,6 +150,15 @@ public class AltosFlightStats {
                                        max_speed = state.max_baro_speed;
                                max_acceleration = state.max_acceleration;
                        }
+                       if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) {
+                               if (state.state <= Altos.ao_flight_pad) {
+                                       pad_lat = state.gps.lat;
+                                       pad_lon = state.gps.lon;
+                               }
+                               lat = state.gps.lat;
+                               lon = state.gps.lon;
+                               has_gps = true;
+                       }
                }
                for (int s = Altos.ao_flight_startup; s <= Altos.ao_flight_landed; s++) {
                        if (state_count[s] > 0) {