ao-tools: complain if st-flash is not available
[fw/altos] / altosui / AltosFlightStats.java
index 50deb6c8bbcf69d431af5543f3c4059fb7267133..552210c36adac61f13cc1c4c617903a208b9d8ba 100644 (file)
@@ -18,7 +18,7 @@
 package altosui;
 
 import java.io.*;
-import org.altusmetrum.altoslib_1.*;
+import org.altusmetrum.altoslib_2.*;
 
 public class AltosFlightStats {
        double          max_height;
@@ -51,7 +51,7 @@ public class AltosFlightStats {
                if (state == null)
                        return 0;
 
-               double  landed_height = state.height;
+               double  landed_height = state.height();
 
                state = null;
 
@@ -62,10 +62,10 @@ public class AltosFlightStats {
                for (AltosState s : states) {
                        state = s;
 
-                       if (state.height > landed_height + 10) {
+                       if (state.height() > landed_height + 10) {
                                above = true;
                        } else {
-                               if (above && state.height < landed_height + 2) {
+                               if (above && state.height() < landed_height + 2) {
                                        above = false;
                                        landed_time = state.time;
                                }
@@ -77,20 +77,20 @@ public class AltosFlightStats {
        }
 
        double boost_time(AltosStateIterable states) {
-               double boost_time = AltosRecord.MISSING;
+               double boost_time = AltosLib.MISSING;
                AltosState      state = null;
 
                for (AltosState s : states) {
                        state = s;
-                       if (state.acceleration < 1)
+                       if (state.acceleration() < 1)
                                boost_time = state.time;
-                       if (state.state >= Altos.ao_flight_boost)
+                       if (state.state >= AltosLib.ao_flight_boost && state.state <= AltosLib.ao_flight_landed)
                                break;
                }
                if (state == null)
                        return 0;
 
-               if (boost_time == AltosRecord.MISSING)
+               if (boost_time == AltosLib.MISSING)
                        boost_time = state.time;
                return boost_time;
        }
@@ -101,27 +101,29 @@ public class AltosFlightStats {
                double          end_time = 0;
                double          landed_time = landed_time(states);
 
-               year = month = day = AltosRecord.MISSING;
-               hour = minute = second = AltosRecord.MISSING;
-               serial = flight = AltosRecord.MISSING;
-               lat = lon = AltosRecord.MISSING;
+               year = month = day = AltosLib.MISSING;
+               hour = minute = second = AltosLib.MISSING;
+               serial = flight = AltosLib.MISSING;
+               lat = lon = AltosLib.MISSING;
                has_gps = false;
                has_other_adc = false;
                has_rssi = false;
                for (AltosState state : states) {
-                       if (serial == AltosRecord.MISSING && state.serial != AltosRecord.MISSING)
+                       if (serial == AltosLib.MISSING && state.serial != AltosLib.MISSING)
                                serial = state.serial;
-                       if (flight == AltosRecord.MISSING && state.flight != AltosRecord.MISSING)
+                       if (flight == AltosLib.MISSING && state.flight != AltosLib.MISSING)
                                flight = state.flight;
-                       if (state.battery_voltage != AltosRecord.MISSING)
+                       if (state.battery_voltage != AltosLib.MISSING)
                                has_other_adc = true;
-                       if (state.rssi != AltosRecord.MISSING)
+                       if (state.rssi != AltosLib.MISSING)
                                has_rssi = true;
                        end_time = state.time;
-                       if (state.time >= boost_time && state.state < Altos.ao_flight_boost)
-                               state.state = Altos.ao_flight_boost;
-                       if (state.time >= landed_time && state.state < Altos.ao_flight_landed)
-                               state.state = Altos.ao_flight_landed;
+
+                       int state_id = state.state;
+                       if (state.time >= boost_time && state_id < Altos.ao_flight_boost)
+                               state_id = Altos.ao_flight_boost;
+                       if (state.time >= landed_time && state_id < Altos.ao_flight_landed)
+                               state_id = Altos.ao_flight_landed;
                        if (state.gps != null && state.gps.locked) {
                                year = state.gps.year;
                                month = state.gps.month;
@@ -130,20 +132,24 @@ public class AltosFlightStats {
                                minute = state.gps.minute;
                                second = state.gps.second;
                        }
-                       if (0 <= state.state && state.state < Altos.ao_flight_invalid) {
-                               state_accel[state.state] += state.acceleration;
-                               state_speed[state.state] += state.speed;
-                               state_count[state.state]++;
-                               if (state_start[state.state] == 0.0)
-                                       state_start[state.state] = state.time;
-                               if (state_end[state.state] < state.time)
-                                       state_end[state.state] = state.time;
-                               max_height = state.max_height;
-                               max_speed = state.max_speed;
-                               max_acceleration = state.max_acceleration;
+                       if (0 <= state_id && state_id < Altos.ao_flight_invalid) {
+                               double acceleration = state.acceleration();
+                               double speed = state.speed();
+                               if (acceleration != AltosLib.MISSING && speed != AltosLib.MISSING) {
+                                       state_accel[state_id] += acceleration;
+                                       state_speed[state_id] += speed;
+                                       state_count[state_id]++;
+                               }
+                               if (state_start[state_id] == 0.0)
+                                       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();
                        }
                        if (state.gps != null && state.gps.locked && state.gps.nsat >= 4) {
-                               if (state.state <= Altos.ao_flight_pad) {
+                               if (state_id <= Altos.ao_flight_pad) {
                                        pad_lat = state.gps.lat;
                                        pad_lon = state.gps.lon;
                                }