X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosEepromRecordSet.java;h=7b111ed3d18d9d0cfa86df3eeb21d1321eba6001;hp=653a1305c934b97262550f60cb49354b1125d13b;hb=78b4bf77fca96bef2cce443ad4c9544ae83f0acc;hpb=258808d296aeadaf150fa9b07e9c99a6bf1ca7c8 diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java index 653a1305..7b111ed3 100644 --- a/altoslib/AltosEepromRecordSet.java +++ b/altoslib/AltosEepromRecordSet.java @@ -17,46 +17,37 @@ package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; -public class AltosEepromRecordSet implements Iterable, AltosRecordSet { +public class AltosEepromRecordSet implements AltosRecordSet { AltosEepromNew eeprom; TreeSet ordered; - AltosState start_state; + AltosCalData cal_data; - class RecordIterator implements Iterator { - Iterator 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 iterator() { - return new RecordIterator(); - } + public void capture_series(AltosDataListener listener) { + AltosCalData cal_data = cal_data(); - public void capture_series(AltosFlightSeries series) { - series.set_config_data(eeprom.config_data()); + cal_data.reset(); for (AltosEepromRecord record : ordered) { - record.update_state(series); + record.provide_data(listener, cal_data); } + listener.finish(); } public AltosEepromRecordSet(AltosEepromNew eeprom) { @@ -103,9 +94,6 @@ public class AltosEepromRecordSet implements Iterable, 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(); @@ -125,7 +113,7 @@ public class AltosEepromRecordSet implements Iterable, AltosRecordSe } } - public AltosEepromRecordSet(Reader input) throws IOException { + public AltosEepromRecordSet(InputStream input) throws IOException { this(new AltosEepromNew(input)); } }