From: Keith Packard Date: Sun, 28 May 2017 22:52:17 +0000 (-0700) Subject: altoslib: Reset transient AltosCalData values before processing data X-Git-Tag: 1.8~57 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=78b4bf77fca96bef2cce443ad4c9544ae83f0acc;hp=dcf533d5befffa4c9c872f3c3d21d11ffeb61307 altoslib: Reset transient AltosCalData values before processing data Values in cal_data which are used to hold intermediate results need to get reset back to their initial values before processing a series of flight data again. Signed-off-by: Keith Packard --- diff --git a/altoslib/AltosCalData.java b/altoslib/AltosCalData.java index 408d8d7e..cb58e492 100644 --- a/altoslib/AltosCalData.java +++ b/altoslib/AltosCalData.java @@ -65,8 +65,11 @@ public class AltosCalData { public int device_type = AltosLib.MISSING; public void set_device_type(int device_type) { - if (device_type != AltosLib.MISSING) + if (device_type != AltosLib.MISSING) { this.device_type = device_type; + if (product == null) + set_product(AltosLib.product_name(device_type)); + } } public int config_major = AltosLib.MISSING; @@ -179,6 +182,18 @@ public class AltosCalData { } } + /* Reset all values which change during flight + */ + public void reset() { + state = AltosLib.MISSING; + tick = AltosLib.MISSING; + prev_tick = AltosLib.MISSING; + temp_gps = null; + prev_gps = null; + temp_gps_sat_tick = AltosLib.MISSING; + accel = AltosLib.MISSING; + } + public int boost_tick = AltosLib.MISSING; public void set_boost_tick() { diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java index c019a092..7b111ed3 100644 --- a/altoslib/AltosEepromRecordSet.java +++ b/altoslib/AltosEepromRecordSet.java @@ -42,6 +42,8 @@ public class AltosEepromRecordSet implements AltosRecordSet { public void capture_series(AltosDataListener listener) { AltosCalData cal_data = cal_data(); + + cal_data.reset(); for (AltosEepromRecord record : ordered) { record.provide_data(listener, cal_data); } diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 077ef9c6..a4792f11 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -118,10 +118,13 @@ public class AltosTelemetryFile implements AltosRecordSet { public void capture_series(AltosDataListener listener) { AltosCalData cal_data = cal_data(); + cal_data.reset(); for (AltosTelemetry telem : telems) { int tick = telem.tick(); cal_data.set_tick(tick); - if (cal_data.time() >= -1) + + /* Try to pick up at least one pre-boost value */ + if (cal_data.time() >= -2) telem.provide_data(listener, cal_data); if (listener.state == AltosLib.ao_flight_landed) break; diff --git a/altoslib/AltosTelemetryRecordSet.java b/altoslib/AltosTelemetryRecordSet.java index 0323c25e..a3191100 100644 --- a/altoslib/AltosTelemetryRecordSet.java +++ b/altoslib/AltosTelemetryRecordSet.java @@ -22,6 +22,7 @@ public class AltosTelemetryRecordSet implements AltosRecordSet { TreeSet ordered; public void capture_series(AltosDataListener listener) { + listener.cal_data.reset(); for (AltosTelemetryRecord record : ordered) { record.update_state(listener); }