altos: Complain about sensor self-test errors only in idle mode
[fw/altos] / altoslib / AltosState.java
index a01cddb774d1a5a567d10869a80ee669fe783938..6a5b2a46761b34aa00551d375ce177a1e508ccc3 100644 (file)
@@ -19,7 +19,7 @@
  * Track flight state from telemetry or eeprom data stream
  */
 
-package org.altusmetrum.altoslib_2;
+package org.altusmetrum.altoslib_3;
 
 public class AltosState implements Cloneable {
 
@@ -464,6 +464,16 @@ public class AltosState implements Cloneable {
                return acceleration.max();
        }
 
+       public AltosValue       orient;
+
+       public void set_orient(double new_orient) {
+               orient.set(new_orient, time);
+       }
+
+       public double orient() {
+               return orient.value();
+       }
+
        public AltosValue       kalman_height, kalman_speed, kalman_acceleration;
 
        public void set_kalman(double height, double speed, double acceleration) {
@@ -560,6 +570,7 @@ public class AltosState implements Cloneable {
                pressure = new AltosPressure();
                speed = new AltosSpeed();
                acceleration = new AltosAccel();
+               orient = new AltosValue();
 
                temperature = AltosLib.MISSING;
                battery_voltage = AltosLib.MISSING;
@@ -621,6 +632,7 @@ public class AltosState implements Cloneable {
                pressure.finish_update();
                speed.finish_update();
                acceleration.finish_update();
+               orient.finish_update();
 
                kalman_height.finish_update();
                kalman_speed.finish_update();
@@ -665,6 +677,7 @@ public class AltosState implements Cloneable {
                pressure.copy(old.pressure);
                speed.copy(old.speed);
                acceleration.copy(old.acceleration);
+               orient.copy(old.orient);
 
                battery_voltage = old.battery_voltage;
                pyro_voltage = old.pyro_voltage;
@@ -836,7 +849,9 @@ public class AltosState implements Cloneable {
                if (flight != AltosLib.MISSING && flight != 0) {
                        if (this.flight != AltosLib.MISSING &&
                            this.flight != flight) {
+                               int bt = boost_tick;
                                init();
+                               boost_tick = bt;
                        }
                        this.flight = flight;
                }
@@ -847,7 +862,9 @@ public class AltosState implements Cloneable {
                if (serial != AltosLib.MISSING) {
                        if (this.serial != AltosLib.MISSING &&
                            this.serial != serial) {
+                               int bt = boost_tick;
                                init();
+                               boost_tick = bt;
                        }
                        this.serial = serial;
                }
@@ -1017,10 +1034,9 @@ public class AltosState implements Cloneable {
                if (tick == AltosLib.MISSING)
                        return 0.0;
 
-               if (boost_tick != AltosLib.MISSING) {
-                       return (tick - boost_tick) / 100.0;
-               }
-               return tick / 100.0;
+               if (boost_tick == AltosLib.MISSING)
+                       return tick / 100.0;
+               return (tick - boost_tick) / 100.0;
        }
 
        public boolean valid() {