X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosEepromFile.java;h=463948b11b20e769510b296994a2e0dbd3afc58f;hp=082c23ca5149dee65e111d12b3c61308284d1249;hb=da914cd72411af8c36af05b13c11b9093c8a378c;hpb=7d3af3d74f70a0933829be91ad3e3be04b1f1023 diff --git a/altoslib/AltosEepromFile.java b/altoslib/AltosEepromFile.java index 082c23ca..463948b1 100644 --- a/altoslib/AltosEepromFile.java +++ b/altoslib/AltosEepromFile.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,104 +16,36 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_11; import java.io.*; import java.util.*; import java.text.*; -class AltosEepromIterator implements Iterator { - AltosState state; - Iterator body; - AltosEeprom next; - boolean seen; +public class AltosEepromFile implements AltosRecordSet { - public boolean hasNext() { - return !seen || body.hasNext(); - } - - public AltosState next() { - if (seen) { - AltosState n = state.clone(); - AltosEeprom e = body.next(); - - e.update_state(n); - state = n; - } - seen = true; - return state; - } - - public void remove () { - } - - public AltosEepromIterator(AltosState start, Iterator body) { - this.state = start; - this.body = body; - this.seen = false; - } -} - -public class AltosEepromFile extends AltosStateIterable { - - AltosEepromIterable headers; - AltosEepromIterable body; - AltosState start; + AltosEepromRecordSet set; public void write_comments(PrintStream out) { - headers.write(out); } public void write(PrintStream out) { - headers.write(out); - body.write(out); + out.printf("%s\n", set.eeprom.toString()); } - public AltosEepromFile(FileInputStream input) { - headers = new AltosEepromIterable(AltosEepromHeader.read(input)); - - start = headers.state(); - start.set_state(AltosLib.ao_flight_pad); - - switch (start.log_format) { - case AltosLib.AO_LOG_FORMAT_FULL: - body = new AltosEepromIterable(AltosEepromTM.read(input)); - break; - case AltosLib.AO_LOG_FORMAT_TINY: - case AltosLib.AO_LOG_FORMAT_TELEMETRY: - case AltosLib.AO_LOG_FORMAT_TELESCIENCE: - case AltosLib.AO_LOG_FORMAT_TELEMEGA: - body = new AltosEepromIterable(AltosEepromMega.read(input)); - break; - case AltosLib.AO_LOG_FORMAT_TELEMETRUM: - body = new AltosEepromIterable(AltosEepromMetrum2.read(input)); - break; - case AltosLib.AO_LOG_FORMAT_TELEMINI: - case AltosLib.AO_LOG_FORMAT_EASYMINI: - body = new AltosEepromIterable(AltosEepromMini.read(input)); - break; - default: - body = new AltosEepromIterable(new LinkedList()); - break; - } + public AltosEepromFile(InputStream input) throws IOException { + set = new AltosEepromRecordSet(input); + } - /* Find boost tick */ - AltosState state = start.clone(); - for (AltosEeprom eeprom : body) { - eeprom.update_state(state); - if (state.state >= AltosLib.ao_flight_boost) { - start.set_boost_tick(state.tick); - break; - } - } + public AltosConfigData config_data() { + return set.config_data(); } - public Iterator iterator() { - AltosState state = start.clone(); - Iterator i = body.iterator(); + public AltosCalData cal_data() { + return set.cal_data(); + } - while (i.hasNext() && !state.valid()) - i.next().update_state(state); - return new AltosEepromIterator(state, i); + public void capture_series(AltosDataListener series) { + set.capture_series(series); } -} \ No newline at end of file +}