diff options
author | Keith Packard <keithp@keithp.com> | 2013-09-03 17:40:04 -0600 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2013-09-03 17:40:04 -0600 |
commit | cfd8e4ebb3cb63937a71537095adb911d6211817 (patch) | |
tree | 9cea15cbd5042267d64fe2a5982769242a60eabf | |
parent | 6ee99c1861ef1898a77aead41d80383e697bd248 (diff) |
altoslib: Use first few baro samples for ground pressure on TM
TM didn't record the ground baro reading in the log file, so pull out
the first few measured baro samples and use those instead.
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | altoslib/AltosState.java | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index a920d425..726c3041 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -62,6 +62,12 @@ public class AltosState implements Cloneable { } } + void set_filtered(double new_value, double time) { + if (prev_value != AltosRecord.MISSING) + new_value = (prev_value * 15.0 + new_value) / 16.0; + set(new_value, time); + } + double value() { return value; } @@ -278,9 +284,14 @@ public class AltosState implements Cloneable { ground_altitude.set_measured(a, time); } - class AltosGroundPressure extends AltosValue { - void set(double p, double time) { - super.set(p, time); + class AltosGroundPressure extends AltosCValue { + void set_filtered(double p, double time) { + computed.set_filtered(p, time); + ground_altitude.set_computed(pressure_to_altitude(computed.value()), time); + } + + void set_measured(double p, double time) { + super.set_measured(p, time); ground_altitude.set_computed(pressure_to_altitude(p), time); } } @@ -292,7 +303,7 @@ public class AltosState implements Cloneable { } public void set_ground_pressure (double pressure) { - ground_pressure.set(pressure, time); + ground_pressure.set_measured(pressure, time); } class AltosAltitude extends AltosCValue { @@ -340,7 +351,10 @@ public class AltosState implements Cloneable { class AltosPressure extends AltosValue { void set(double p, double time) { super.set(p, time); - altitude.set_computed(pressure_to_altitude(p), time); + if (state == AltosLib.ao_flight_pad) + ground_pressure.set_filtered(p, time); + double a = pressure_to_altitude(p); + altitude.set_computed(a, time); } } |