altosuilib: Split battery graph enable out from other adc enables
[fw/altos] / altoslib / AltosFlightStats.java
index b3305a05e7aea5ce57a72523af01da49d3999564..56feb848c3bf62d1613f0a94944b1f2dbc3c1041 100644 (file)
@@ -37,7 +37,8 @@ public class AltosFlightStats {
        public double           pad_lat, pad_lon;
        public boolean          has_flight_data;
        public boolean          has_gps;
-       public boolean          has_other_adc;
+       public boolean          has_flight_adc;
+       public boolean          has_battery;
        public boolean          has_rssi;
        public boolean          has_imu;
        public boolean          has_mag;
@@ -112,7 +113,8 @@ public class AltosFlightStats {
                lat = lon = AltosLib.MISSING;
                has_flight_data = false;
                has_gps = false;
-               has_other_adc = false;
+               has_flight_adc = false;
+               has_battery = false;
                has_rssi = false;
                has_imu = false;
                has_mag = false;
@@ -123,7 +125,9 @@ 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;
@@ -144,6 +148,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();
@@ -156,16 +165,12 @@ 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;
@@ -183,6 +188,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;