altoslib: Make sure AltosFlightSeries is filled in before use
[fw/altos] / altoslib / AltosFlightSeries.java
index 0eea34b7e72ac996ac5a5d78beb308c35c2774c5..6f4f7bb1e89c5960a5744df84ca1ba49cc7c273e 100644 (file)
@@ -18,7 +18,7 @@ import java.util.*;
 
 public class AltosFlightSeries extends AltosDataListener {
 
-       public ArrayList<AltosTimeSeries> series;
+       public ArrayList<AltosTimeSeries> series = new ArrayList<AltosTimeSeries>();
 
        public int[] indices() {
                int[] indices = new int[series.size()];
@@ -136,7 +136,6 @@ public class AltosFlightSeries extends AltosDataListener {
                        state_series = add_series(state_name, AltosConvert.state_name);
                else if (this.state == state)
                        return;
-               System.out.printf("state %s\n", AltosLib.state_name(state));
                this.state = state;
                state_series.add(time(), state);
        }
@@ -147,7 +146,6 @@ public class AltosFlightSeries extends AltosDataListener {
 
        public void set_acceleration(double acceleration) {
                if (accel_series == null) {
-                       System.out.printf("set acceleration %g\n", acceleration);
                        accel_series = add_series(accel_name, AltosConvert.accel);
                }
                accel_series.add(time(), acceleration);
@@ -208,8 +206,9 @@ public class AltosFlightSeries extends AltosDataListener {
                altitude_series.add(time(), altitude);
        }
 
-       private void compute_height(double ground_altitude) {
-               if (height_series == null) {
+       private void compute_height() {
+               double ground_altitude = cal_data.ground_altitude;
+               if (height_series == null && ground_altitude != AltosLib.MISSING) {
                        height_series = add_series(height_name, AltosConvert.height);
                        for (AltosTimeValue alt : altitude_series)
                                height_series.add(alt.time, alt.value - ground_altitude);
@@ -221,10 +220,8 @@ public class AltosFlightSeries extends AltosDataListener {
        public static final String speed_name = "Speed";
 
        private void compute_speed() {
-               if (speed_series != null) {
-                       System.out.printf("speed series already made\n");
+               if (speed_series != null)
                        return;
-               }
 
                AltosTimeSeries alt_speed_series = null;
                AltosTimeSeries accel_speed_series = null;
@@ -235,8 +232,6 @@ public class AltosFlightSeries extends AltosDataListener {
 
                        alt_speed_series = make_series(speed_name, AltosConvert.speed);
                        temp_series.filter(alt_speed_series, 10.0);
-               } else {
-                       System.out.printf("no altitude series\n");
                }
                if (accel_series != null) {
                        AltosTimeSeries temp_series = make_series(speed_name, AltosConvert.speed);
@@ -244,8 +239,6 @@ public class AltosFlightSeries extends AltosDataListener {
 
                        accel_speed_series = make_series(speed_name, AltosConvert.speed);
                        temp_series.filter(accel_speed_series, 0.1);
-               } else {
-                       System.out.printf("no accel series\n");
                }
 
                if (alt_speed_series != null && accel_speed_series != null) {
@@ -277,11 +270,8 @@ public class AltosFlightSeries extends AltosDataListener {
                } else if (accel_speed_series != null) {
                        speed_series = accel_speed_series;
                }
-               if (speed_series != null) {
+               if (speed_series != null)
                        add_series(speed_series);
-                       System.out.printf("speed series for %s set to %s\n", this.toString(), speed_series.toString());
-               } else
-                       System.out.printf("didn't manage to make speed series\n");
        }
 
        AltosTimeSeries kalman_height_series, kalman_speed_series, kalman_accel_series;
@@ -574,27 +564,18 @@ public class AltosFlightSeries extends AltosDataListener {
        public void set_companion(AltosCompanion companion) {
        }
 
-       public void fill_in() {
-               System.out.printf("fill in %s\n", this.toString());
+       public void finish() {
                compute_speed();
                compute_accel();
-               if (cal_data.ground_altitude != AltosLib.MISSING)
-                       compute_height(cal_data.ground_altitude);
-       }
-
-       public void init() {
-               time = AltosLib.MISSING;
-               series = new ArrayList<AltosTimeSeries>();
+               compute_height();
        }
 
        public AltosTimeSeries[] series() {
-               fill_in();
+               finish();
                return series.toArray(new AltosTimeSeries[0]);
        }
 
        public AltosFlightSeries(AltosCalData cal_data) {
                super(cal_data);
-               System.out.printf("new flight series %s\n", this.toString());
-               init();
        }
 }