altoslib: Hook up idle monitoring data again
[fw/altos] / altoslib / AltosFlightSeries.java
index dad066d7ba7853ed36c1d91b7d4049ca6ae7952d..5223a5b406da20dbd4e2b5bfee3a733c640e0424 100644 (file)
@@ -118,6 +118,12 @@ public class AltosFlightSeries extends AltosDataListener {
        }
 
        public void add_series(AltosTimeSeries s) {
+               for (int e = 0; e < series.size(); e++) {
+                       if (s.compareTo(series.get(e)) < 0){
+                               series.add(e, s);
+                               return;
+                       }
+               }
                series.add(s);
        }
 
@@ -159,6 +165,10 @@ public class AltosFlightSeries extends AltosDataListener {
 
        public static final String accel_name = "Accel";
 
+       public AltosTimeSeries  vert_accel_series;
+
+       public static final String vert_accel_name = "Vertical Accel";
+
        public void set_acceleration(double acceleration) {
                if (acceleration == AltosLib.MISSING)
                        return;
@@ -264,8 +274,25 @@ public class AltosFlightSeries extends AltosDataListener {
                        temp_series.differentiate(alt_speed_series);
                }
                if (accel_series != null) {
+
+                       if (orient_series != null) {
+                               vert_accel_series = add_series(vert_accel_name, AltosConvert.accel);
+
+                               for (AltosTimeValue a : accel_series) {
+                                       double  orient = orient_series.value(a.time);
+                                       double  a_abs = a.value + AltosConvert.gravity;
+                                       double  v_a = a_abs * Math.cos(AltosConvert.degrees_to_radians(orient)) - AltosConvert.gravity;
+
+                                       vert_accel_series.add(a.time, v_a);
+                               }
+                       }
+
                        AltosTimeSeries temp_series = make_series(speed_name, AltosConvert.speed);
-                       accel_series.integrate(temp_series);
+
+                       if (vert_accel_series != null)
+                               vert_accel_series.integrate(temp_series);
+                       else
+                               accel_series.integrate(temp_series);
 
                        accel_speed_series = make_series(speed_name, AltosConvert.speed);
                        temp_series.filter(accel_speed_series, 0.1);