X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosState.java;h=7b41e98dcbe50daea61776a6cc8265ea1545edab;hb=f078235803a80403014b3e54039fd2d0e0704367;hp=a120e0c7e1965b1caa14a8b289997d3aa69ddb48;hpb=76532162d63239b00a51dd0ff6b1356b07b62d2d;p=fw%2Faltos diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index a120e0c7..7b41e98d 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_7; +package org.altusmetrum.altoslib_10; 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); } @@ -281,7 +284,7 @@ public class AltosState implements Cloneable, Serializable { } } - public int state; + private int state; public int flight; public int serial; public int altitude_32; @@ -1053,6 +1056,10 @@ public class AltosState implements Cloneable, Serializable { } } + public int state() { + return state; + } + public void set_device_type(int device_type) { this.device_type = device_type; switch (device_type) { @@ -1355,11 +1362,6 @@ public class AltosState implements Cloneable, Serializable { } } - public void make_companion (int nchannels) { - if (companion == null) - companion = new AltosCompanion(nchannels); - } - public void set_companion(AltosCompanion companion) { this.companion = companion; }