Merge remote-tracking branch 'origin/master'
[fw/altos] / altoslib / AltosState.java
index a3b9a8c07efafdb54f889094c09e1b7ba6a505f9..e0d9bb1fc394dc1cb42b495bc03e755d135968bb 100644 (file)
@@ -40,6 +40,7 @@ public class AltosState {
        public double   ground_altitude;
        public double   altitude;
        public double   height;
+       public double   pressure;
        public double   acceleration;
        public double   battery;
        public double   temperature;
@@ -54,6 +55,7 @@ public class AltosState {
        public double   max_baro_speed;
 
        public AltosGPS gps;
+       public int gps_sequence;
 
        public AltosIMU imu;
        public AltosMag mag;
@@ -124,6 +126,7 @@ public class AltosState {
                drogue_sense = data.drogue_voltage();
                main_sense = data.main_voltage();
                battery = data.battery_voltage();
+               pressure = data.pressure();
                tick = data.tick;
                state = data.state;
 
@@ -133,6 +136,7 @@ public class AltosState {
                        npad = prev_state.npad;
                        ngps = prev_state.ngps;
                        gps = prev_state.gps;
+                       gps_sequence = prev_state.gps_sequence;
                        pad_lat = prev_state.pad_lat;
                        pad_lon = prev_state.pad_lon;
                        pad_alt = prev_state.pad_alt;
@@ -187,6 +191,7 @@ public class AltosState {
                        npad = 0;
                        ngps = 0;
                        gps = null;
+                       gps_sequence = 0;
                        baro_speed = AltosRecord.MISSING;
                        accel_speed = AltosRecord.MISSING;
                        pad_alt = AltosRecord.MISSING;
@@ -199,7 +204,7 @@ public class AltosState {
 
                time = tick / 100.0;
 
-               if (cur.new_gps && (state < AltosLib.ao_flight_boost)) {
+               if (data.gps != null && data.gps_sequence != gps_sequence && (state < AltosLib.ao_flight_boost)) {
 
                        /* Track consecutive 'good' gps reports, waiting for 10 of them */
                        if (data.gps != null && data.gps.locked && data.gps.nsat >= 4)
@@ -226,7 +231,7 @@ public class AltosState {
                                pad_alt = ground_altitude;
                }
 
-               data.new_gps = false;
+               gps_sequence = data.gps_sequence;
 
                gps_waiting = MIN_PAD_SAMPLES - npad;
                if (gps_waiting < 0)
@@ -252,8 +257,7 @@ public class AltosState {
                range = -1;
                gps_height = 0;
                if (data.gps != null) {
-                       if (gps == null || !gps.locked || data.gps.locked)
-                               gps = data.gps;
+                       gps = data.gps;
                        if (ngps > 0 && gps.locked) {
                                double h = height;