libaltos: Delay after opening bluetooth device on linux
[fw/altos] / altosui / AltosFlightStats.java
index 7f0c9adba49e0c4f6b44dde0a2741b7280925d36..dee31a8d3bcf6f8d3005803b110ead9cb6595236 100644 (file)
@@ -36,6 +36,9 @@ public class AltosFlightStats {
        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;
@@ -101,11 +104,18 @@ public class AltosFlightStats {
                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;
@@ -140,13 +150,14 @@ public class AltosFlightStats {
                                        max_speed = state.max_baro_speed;
                                max_acceleration = state.max_acceleration;
                        }
-                       if (state.gps.locked && state.gps.nsat >= 4) {
+                       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++) {