altoslib: Report whether GPS data contains new location/sat info
[fw/altos] / altoslib / AltosState.java
index 54c7009451232bd43651b4028d31450622474c27..712f8e19dd4e566c11c0628b8c6175b323b4583b 100644 (file)
@@ -20,7 +20,7 @@
  * Track flight state from telemetry or eeprom data stream
  */
 
-package org.altusmetrum.altoslib_12;
+package org.altusmetrum.altoslib_13;
 
 public class AltosState extends AltosDataListener {
 
@@ -842,6 +842,8 @@ public class AltosState extends AltosDataListener {
                                                        gps.climb_rate * gps.climb_rate), time);
                        if (gps.course != AltosLib.MISSING)
                                gps_course.set(gps.course, time);
+               } else if (state() == AltosLib.ao_flight_pad || state() == AltosLib.ao_flight_stateless) {
+                       set_npad(0);
                }
                if (gps.lat != 0 && gps.lon != 0 &&
                    pad_lat != AltosLib.MISSING &&
@@ -858,10 +860,6 @@ public class AltosState extends AltosDataListener {
                }
        }
 
-       public String state_name() {
-               return AltosLib.state_name(state());
-       }
-
        public void set_state(int state) {
                super.set_state(state);
                ascent = (AltosLib.ao_flight_boost <= state() &&
@@ -886,7 +884,8 @@ public class AltosState extends AltosDataListener {
                received_time = ms;
        }
 
-       public void set_gps(AltosGPS gps) {
+       public void set_gps(AltosGPS gps, boolean set_location, boolean set_sats) {
+               super.set_gps(gps, set_location, set_sats);
                if (gps != null) {
                        this.gps = gps;
                        update_gps();
@@ -900,9 +899,9 @@ public class AltosState extends AltosDataListener {
 
        void update_pad_rotation() {
                if (cal_data().pad_orientation != AltosLib.MISSING && accel_ground_along != AltosLib.MISSING) {
-                       rotation = new AltosRotation(AltosIMU.convert_accel(accel_ground_across - cal_data().accel_zero_across),
-                                                    AltosIMU.convert_accel(accel_ground_through - cal_data().accel_zero_through),
-                                                    AltosIMU.convert_accel(accel_ground_along - cal_data().accel_zero_along),
+                       rotation = new AltosRotation(accel_ground_across,
+                                                    accel_ground_through,
+                                                    accel_ground_along,
                                                     cal_data().pad_orientation);
                        orient.set_computed(rotation.tilt(), time);
                }