summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-09-03 17:40:04 -0600
committerKeith Packard <keithp@keithp.com>2013-09-03 17:40:04 -0600
commitcfd8e4ebb3cb63937a71537095adb911d6211817 (patch)
tree9cea15cbd5042267d64fe2a5982769242a60eabf
parent6ee99c1861ef1898a77aead41d80383e697bd248 (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.java24
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);
}
}