summaryrefslogtreecommitdiff
path: root/altoslib/AltosState.java
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2015-07-16 13:31:42 -0600
committerBdale Garbee <bdale@gag.com>2015-07-16 13:31:42 -0600
commit6e9bb9178356620bd47d9f2e31abf42b7f1a8f11 (patch)
tree6f04b5500462d1f6e26ebcba58c5e9cd56afd442 /altoslib/AltosState.java
parente2cefd8593d269ce603aaf33f4a53a5c2dcb3350 (diff)
parent87c8bb3956897830da1f7aaca2990a9571767b73 (diff)
Merge branch 'master' into branch-1.6
Diffstat (limited to 'altoslib/AltosState.java')
-rw-r--r--altoslib/AltosState.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java
index d363027c..4edae54a 100644
--- a/altoslib/AltosState.java
+++ b/altoslib/AltosState.java
@@ -19,7 +19,7 @@
* Track flight state from telemetry or eeprom data stream
*/
-package org.altusmetrum.altoslib_6;
+package org.altusmetrum.altoslib_8;
import java.io.*;
@@ -31,8 +31,9 @@ public class AltosState implements Cloneable, Serializable {
public int set;
+ static final double filter_len = 2.0;
static final double ascent_filter_len = 0.5;
- static final double descent_filter_len = 0.5;
+ static final double descent_filter_len = 5.0;
/* derived data */
@@ -64,8 +65,10 @@ public class AltosState implements Cloneable, Serializable {
}
void set_filtered(double new_value, double time) {
- if (prev_value != AltosLib.MISSING)
- new_value = (prev_value * 15.0 + new_value) / 16.0;
+ if (prev_value != AltosLib.MISSING) {
+ double f = 1/Math.exp((time - prev_set_time) / filter_len);
+ new_value = f * new_value + (1-f) * prev_value;
+ }
set(new_value, time);
}
@@ -1040,6 +1043,10 @@ public class AltosState implements Cloneable, Serializable {
return AltosLib.state_name(state);
}
+ public void set_product(String product) {
+ this.product = product;
+ }
+
public void set_state(int state) {
if (state != AltosLib.ao_flight_invalid) {
this.state = state;