diff options
author | Bdale Garbee <bdale@gag.com> | 2017-07-21 17:44:03 -0600 |
---|---|---|
committer | Bdale Garbee <bdale@gag.com> | 2017-07-21 17:44:03 -0600 |
commit | c8dbcaf69cd538a31ab6e2b568237ae7c8656a9a (patch) | |
tree | 213ec02db2e80f2e8c39772c0bde95d802900e53 /altoslib/AltosEepromRecordSet.java | |
parent | 0cbfa444a9f9159cb509bb47ca5590fc1d709f64 (diff) | |
parent | ea3b5815b27005b2f4c3034715f656d28ea8534e (diff) |
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
Diffstat (limited to 'altoslib/AltosEepromRecordSet.java')
-rw-r--r-- | altoslib/AltosEepromRecordSet.java | 64 |
1 files changed, 30 insertions, 34 deletions
diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java index 911b90b9..48e90c05 100644 --- a/altoslib/AltosEepromRecordSet.java +++ b/altoslib/AltosEepromRecordSet.java @@ -12,47 +12,45 @@ * General Public License for more details. */ -package org.altusmetrum.altoslib_11; +package org.altusmetrum.altoslib_12; import java.io.*; import java.util.*; -public class AltosEepromRecordSet implements Iterable<AltosState> { - AltosEepromNew eeprom; +public class AltosEepromRecordSet implements AltosRecordSet { + AltosEeprom 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(); + break; + } } - return state; - } - - public RecordIterator() { - riterator = ordered.iterator(); - state = null; } + return cal_data; } - public Iterator<AltosState> iterator() { - return new RecordIterator(); + public void capture_series(AltosDataListener listener) { + AltosCalData cal_data = cal_data(); + + cal_data.reset(); + for (AltosEepromRecord record : ordered) { + record.provide_data(listener, cal_data); + } + listener.finish(); } - public AltosEepromRecordSet(AltosEepromNew eeprom) { + public AltosEepromRecordSet(AltosEeprom eeprom) { this.eeprom = eeprom; AltosConfigData config_data = eeprom.config_data(); @@ -77,7 +75,8 @@ public class AltosEepromRecordSet implements Iterable<AltosState> { break; case AltosLib.AO_LOG_FORMAT_TELEMINI2: case AltosLib.AO_LOG_FORMAT_TELEMINI3: - case AltosLib.AO_LOG_FORMAT_EASYMINI: + case AltosLib.AO_LOG_FORMAT_EASYMINI1: + case AltosLib.AO_LOG_FORMAT_EASYMINI2: record = new AltosEepromRecordMini(eeprom); break; case AltosLib.AO_LOG_FORMAT_TELEGPS: @@ -96,9 +95,6 @@ public class AltosEepromRecordSet implements Iterable<AltosState> { int tick = 0; boolean first = true; - start_state = new AltosState(); - start_state.set_config_data(record.eeprom.config_data()); - for (;;) { int t = record.tick(); @@ -118,7 +114,7 @@ public class AltosEepromRecordSet implements Iterable<AltosState> { } } - public AltosEepromRecordSet(Reader input) throws IOException { - this(new AltosEepromNew(input)); + public AltosEepromRecordSet(InputStream input) throws IOException { + this(new AltosEeprom(input)); } } |