X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosEepromFile.java;h=1664dc95ec5eac1df082b7a57b86e612c1a7839c;hp=2f4c54d7d7fc3c4d61c29c18f0e55f1638aafb95;hb=4a5ef9eaa8b809c56813625133120e7e91fc8e65;hpb=f07f6d55edf5b97020680b3ce1d9e00bb3df64a6 diff --git a/altoslib/AltosEepromFile.java b/altoslib/AltosEepromFile.java index 2f4c54d7..1664dc95 100644 --- a/altoslib/AltosEepromFile.java +++ b/altoslib/AltosEepromFile.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_4; import java.io.*; import java.util.*; @@ -72,26 +72,46 @@ public class AltosEepromFile extends AltosStateIterable { headers = new AltosEepromIterable(AltosEepromHeader.read(input)); start = headers.state(); + start.set_state(AltosLib.ao_flight_pad); + + if (start.log_format == AltosLib.MISSING) { + if (start.product != null) { + if (start.product.startsWith("TeleMetrum")) + start.log_format = AltosLib.AO_LOG_FORMAT_FULL; + else if (start.product.startsWith("TeleMini")) + start.log_format = AltosLib.AO_LOG_FORMAT_TINY; + } + } switch (start.log_format) { case AltosLib.AO_LOG_FORMAT_FULL: body = new AltosEepromIterable(AltosEepromTM.read(input)); break; case AltosLib.AO_LOG_FORMAT_TINY: + body = new AltosEepromIterable(AltosEepromTm.read(input)); + break; 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; } /* Find boost tick */ AltosState state = start.clone(); for (AltosEeprom eeprom : body) { eeprom.update_state(state); + state.finish_update(); if (state.state >= AltosLib.ao_flight_boost) { start.set_boost_tick(state.tick); break; @@ -103,8 +123,10 @@ public class AltosEepromFile extends AltosStateIterable { AltosState state = start.clone(); Iterator i = body.iterator(); - while (i.hasNext() && !state.valid()) + while (i.hasNext() && !state.valid()) { i.next().update_state(state); + state.finish_update(); + } return new AltosEepromIterator(state, i); } -} \ No newline at end of file +}