altoslib: Start moving eeprom download logic to altoslib
[fw/altos] / altoslib / AltosState.java
index a9bb1e70833392321b01097da560eb6819304f42..6d55b833b83a5bf1a8878d10d6e45b539a71b088 100644 (file)
@@ -29,8 +29,8 @@ public class AltosState implements Cloneable {
 
        public int set;
 
-       static final double ascent_filter_len = 0.1;
-       static final double descent_filter_len = 2.0;
+       static final double ascent_filter_len = 0.5;
+       static final double descent_filter_len = 0.5;
 
        /* derived data */
 
@@ -49,7 +49,6 @@ public class AltosState implements Cloneable {
                private double  max_value;
                private double  set_time;
                private double  prev_set_time;
-               private double  max_rate = 1000.0;
 
                void set(double new_value, double time) {
                        if (new_value != AltosLib.MISSING) {
@@ -125,12 +124,14 @@ public class AltosState implements Cloneable {
                        double  ddt = in.time() - pt;
                        double  ddv = (n - p) / ddt;
                                
+                       final double max = 100000;
+
                        /* 100gs */
-                       if (Math.abs(ddv) > 1000) {
+                       if (Math.abs(ddv) > max) {
                                if (n > p)
-                                       n = p + ddt * 1000;
+                                       n = p + ddt * max;
                                else
-                                       n = p - ddt * 1000;
+                                       n = p - ddt * max;
                        }
 
                        double filter_len;
@@ -835,7 +836,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;
                }
@@ -846,7 +849,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;
                }
@@ -1016,10 +1021,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() {