X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosState.java;h=a01cddb774d1a5a567d10869a80ee669fe783938;hp=dba9bff8084d5db712ea733e537cac6d9005bbe8;hb=71666409624bf544e8a55fa5ee91d2f8514a03ca;hpb=5b976a6651f4eb05d30afc08b9e1f27c7e52ae00 diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index dba9bff8..a01cddb7 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -29,8 +29,8 @@ public class AltosState implements Cloneable { public int set; - static final double ascent_filter_len = 0.1; - static final double descent_filter_len = 2.0; + static final double ascent_filter_len = 0.5; + static final double descent_filter_len = 0.5; /* derived data */ @@ -49,7 +49,6 @@ public class AltosState implements Cloneable { private double max_value; private double set_time; private double prev_set_time; - private double max_rate = 1000.0; void set(double new_value, double time) { if (new_value != AltosLib.MISSING) { @@ -125,12 +124,14 @@ public class AltosState implements Cloneable { double ddt = in.time() - pt; double ddv = (n - p) / ddt; + final double max = 100000; + /* 100gs */ - if (Math.abs(ddv) > 1000) { + if (Math.abs(ddv) > max) { if (n > p) - n = p + ddt * 1000; + n = p + ddt * max; else - n = p - ddt * 1000; + n = p - ddt * max; } double filter_len; @@ -269,6 +270,7 @@ public class AltosState implements Cloneable { public int state; public int flight; public int serial; + public int receiver_serial; public boolean landed; public boolean ascent; /* going up? */ public boolean boost; /* under power */ @@ -300,7 +302,8 @@ public class AltosState implements Cloneable { 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); + if (!is_measured()) + ground_altitude.set_computed(pressure_to_altitude(computed.value()), time); } void set_measured(double p, double time) { @@ -604,6 +607,7 @@ public class AltosState implements Cloneable { log_format = AltosLib.MISSING; serial = AltosLib.MISSING; + receiver_serial = AltosLib.MISSING; baro = null; companion = null; @@ -632,7 +636,9 @@ public class AltosState implements Cloneable { received_time = old.received_time; time = old.time; - time_change = 0; + time_change = old.time_change; + prev_time = old.time; + tick = old.tick; prev_tick = old.tick; boost_tick = old.boost_tick; @@ -653,6 +659,7 @@ public class AltosState implements Cloneable { set = 0; + ground_pressure.copy(old.ground_pressure); ground_altitude.copy(old.ground_altitude); altitude.copy(old.altitude); pressure.copy(old.pressure); @@ -723,6 +730,7 @@ public class AltosState implements Cloneable { log_format = old.log_format; serial = old.serial; + receiver_serial = old.receiver_serial; baro = old.baro; companion = old.companion; @@ -779,6 +787,7 @@ public class AltosState implements Cloneable { } tick = new_tick; time = tick / 100.0; + time_change = time - prev_time; } } @@ -844,6 +853,11 @@ public class AltosState implements Cloneable { } } + public void set_receiver_serial(int serial) { + if (serial != AltosLib.MISSING) + receiver_serial = serial; + } + public int rssi() { if (rssi == AltosLib.MISSING) return 0;