altos/telefireone-v2.0: Remove build of ao_product.h from Makefile
[fw/altos] / altoslib / AltosFlightSeries.java
index 02bf64ff9772520b8e37d1aec713bce6c87734e5..32bd6c5ef63f6aae98d0fef1fb0141f45efc7fcd 100644 (file)
@@ -12,7 +12,7 @@
  * General Public License for more details.
  */
 
-package org.altusmetrum.altoslib_12;
+package org.altusmetrum.altoslib_13;
 
 import java.util.*;
 
@@ -257,6 +257,15 @@ public class AltosFlightSeries extends AltosDataListener {
 
        public AltosTimeSeries height_series;
 
+       public double max_height = AltosLib.MISSING;
+
+       public  void set_min_pressure(double pa) {
+               double ground_altitude = cal_data().ground_altitude;
+               if (ground_altitude != AltosLib.MISSING)
+                       max_height = AltosConvert.pressure_to_altitude(pa) -
+                               ground_altitude;
+       }
+
        public static final String height_name = "Height";
 
        public  void set_pressure(double pa) {
@@ -489,13 +498,24 @@ public class AltosFlightSeries extends AltosDataListener {
        public ArrayList<AltosGPSTimeValue> gps_series;
 
        public AltosGPS gps_before(double time) {
-               AltosGPS gps = null;
-               for (AltosGPSTimeValue gtv : gps_series)
-                       if (gtv.time <= time)
-                               gps = gtv.gps;
-                       else
-                               break;
-               return gps;
+               AltosGPSTimeValue nearest = null;
+               for (AltosGPSTimeValue gtv : gps_series) {
+                       if (nearest == null)
+                               nearest = gtv;
+                       else {
+                               if (gtv.time <= time) {
+                                       if (nearest.time <= time && gtv.time > nearest.time)
+                                               nearest = gtv;
+                               } else {
+                                       if (nearest.time > time && gtv.time < nearest.time)
+                                               nearest = gtv;
+                               }
+                       }
+               }
+               if (nearest != null)
+                       return nearest.gps;
+               else
+                       return null;
        }
 
        public AltosTimeSeries  sats_in_view;
@@ -521,6 +541,7 @@ public class AltosFlightSeries extends AltosDataListener {
        public static final String gps_hdop_name = "GPS Horizontal Dilution of Precision";
 
        public void set_gps(AltosGPS gps) {
+               super.set_gps(gps);
                if (gps_series == null)
                        gps_series = new ArrayList<AltosGPSTimeValue>();
                gps_series.add(new AltosGPSTimeValue(time(), gps));