summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-05-28 15:52:17 -0700
committerKeith Packard <keithp@keithp.com>2017-05-28 15:52:17 -0700
commit78b4bf77fca96bef2cce443ad4c9544ae83f0acc (patch)
tree8521eac7af38082305d8c075320067596b09b178
parentdcf533d5befffa4c9c872f3c3d21d11ffeb61307 (diff)
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 <keithp@keithp.com>
-rw-r--r--altoslib/AltosCalData.java17
-rw-r--r--altoslib/AltosEepromRecordSet.java2
-rw-r--r--altoslib/AltosTelemetryFile.java5
-rw-r--r--altoslib/AltosTelemetryRecordSet.java1
4 files changed, 23 insertions, 2 deletions
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<AltosTelemetryRecord> ordered;
public void capture_series(AltosDataListener listener) {
+ listener.cal_data.reset();
for (AltosTelemetryRecord record : ordered) {
record.update_state(listener);
}