* 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> {
+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;
}
+ return cal_data;
+ }
- public RecordIterator() {
- riterator = ordered.iterator();
- state = null;
+ 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 Iterator<AltosState> iterator() {
- return new RecordIterator();
- }
+ public AltosEepromRecordSet(AltosEeprom eeprom) {
+ this.eeprom = eeprom;
- public AltosEepromRecordSet(AltosEepromNew eeprom) {
AltosConfigData config_data = eeprom.config_data();
AltosEepromRecord record = null;
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:
int tick = 0;
boolean first = true;
- start_state = new AltosState();
- start_state.set_config_data(record.eeprom.config_data());
-
for (;;) {
int t = record.tick();
}
}
- public AltosEepromRecordSet(Reader input) throws IOException {
- this(new AltosEepromNew(input));
+ public AltosEepromRecordSet(InputStream input) throws IOException {
+ this(new AltosEeprom(input));
}
}