summaryrefslogtreecommitdiff
path: root/altoslib/AltosEepromRecordSet.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-05-25 17:24:14 -0700
committerKeith Packard <keithp@keithp.com>2017-05-25 17:24:14 -0700
commitf26cfe417c6977cf1e7e75a4f050e25f64d41859 (patch)
tree2f19ca9c93c3246b3eeadafee250f9dd3ee222d6 /altoslib/AltosEepromRecordSet.java
parent7600116a191b3ac252a0f716d200d0e0b3500987 (diff)
altoslib: Do data analysis on raw values rather than AltosState
Use AltosFlightSeries instead of a sequence of AltosState records when processing saved data. This provides a better way of doing filtering and plotting. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosEepromRecordSet.java')
-rw-r--r--altoslib/AltosEepromRecordSet.java50
1 files changed, 17 insertions, 33 deletions
diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java
index 653a1305..69159cdf 100644
--- a/altoslib/AltosEepromRecordSet.java
+++ b/altoslib/AltosEepromRecordSet.java
@@ -17,45 +17,32 @@ package org.altusmetrum.altoslib_11;
import java.io.*;
import java.util.*;
-public class AltosEepromRecordSet implements Iterable<AltosState>, AltosRecordSet {
+public class AltosEepromRecordSet implements AltosRecordSet {
AltosEepromNew eeprom;
TreeSet<AltosEepromRecord> ordered;
- AltosState start_state;
+ AltosCalData cal_data;
- class RecordIterator implements Iterator<AltosState> {
- Iterator<AltosEepromRecord> riterator;
- AltosState state;
- boolean started;
-
- public boolean hasNext() {
- return state == null || riterator.hasNext();
- }
+ public AltosConfigData config_data() {
+ return eeprom.config_data();
+ }
- public AltosState next() {
- if (state == null)
- state = start_state.clone();
- else {
- state = state.clone();
- AltosEepromRecord r = riterator.next();
- r.update_state(state);
+ public AltosCalData cal_data() {
+ if (cal_data == null) {
+ cal_data = new AltosCalData(config_data());
+ for (AltosEepromRecord record : ordered) {
+ if (record.cmd() == AltosLib.AO_LOG_FLIGHT) {
+ cal_data.set_tick(record.tick());
+ cal_data.set_boost_tick();
+ }
}
- return state;
- }
-
- public RecordIterator() {
- riterator = ordered.iterator();
- state = null;
}
+ return cal_data;
}
- public Iterator<AltosState> iterator() {
- return new RecordIterator();
- }
-
- public void capture_series(AltosFlightSeries series) {
- series.set_config_data(eeprom.config_data());
+ public void capture_series(AltosDataListener listener) {
+ AltosCalData cal_data = cal_data();
for (AltosEepromRecord record : ordered) {
- record.update_state(series);
+ record.provide_data(listener, cal_data);
}
}
@@ -103,9 +90,6 @@ public class AltosEepromRecordSet implements Iterable<AltosState>, AltosRecordSe
int tick = 0;
boolean first = true;
- start_state = new AltosState();
- start_state.set_config_data(record.eeprom.config_data());
-
for (;;) {
int t = record.tick();