altoslib: Don't use MISSING values in max computations
authorKeith Packard <keithp@keithp.com>
Wed, 18 Jul 2012 03:43:31 +0000 (20:43 -0700)
committerKeith Packard <keithp@keithp.com>
Wed, 18 Jul 2012 03:43:31 +0000 (20:43 -0700)
Early telemetry state may be missing critical data, don't use MISSING
values in computing max ranges.

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosState.java

index 68c7611f2adab67777f93eb07b18bff56b6e13cb..e20ec9a7109dbcd493deac0b544f692f2e78cd38 100644 (file)
@@ -160,7 +160,8 @@ public class AltosState {
                                }
                                ngps++;
                        }
-               }
+               } else
+                       pad_alt = ground_altitude;
 
                gps_waiting = MIN_PAD_SAMPLES - npad;
                if (gps_waiting < 0)
@@ -173,14 +174,14 @@ public class AltosState {
                boost = (AltosLib.ao_flight_boost == state);
 
                /* Only look at accelerometer data under boost */
-               if (boost && acceleration > max_acceleration)
+               if (boost && acceleration > max_acceleration && acceleration != AltosRecord.MISSING)
                        max_acceleration = acceleration;
-               if (boost && speed > max_speed)
+               if (boost && speed > max_speed && speed != AltosRecord.MISSING)
                        max_speed = speed;
-               if (boost && baro_speed > max_baro_speed)
+               if (boost && baro_speed > max_baro_speed && baro_speed != AltosRecord.MISSING)
                        max_baro_speed = baro_speed;
 
-               if (height > max_height)
+               if (height > max_height && height != AltosRecord.MISSING)
                        max_height = height;
                if (data.gps != null) {
                        if (gps == null || !gps.locked || data.gps.locked)