X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosEepromBlock.java;h=d59fd39e2bdf9b67951dd67e2a3e3a924966a861;hb=dbe915795c66995805b5f37e6eb698cf2c143e61;hp=f223f3fb99edd3f14c9ae3a71b50c810f3f10c7e;hpb=440d52e34364fdeeddc76a2d744cc6d1c934364f;p=fw%2Faltos diff --git a/altosui/AltosEepromBlock.java b/altosui/AltosEepromBlock.java index f223f3fb..d59fd39e 100644 --- a/altosui/AltosEepromBlock.java +++ b/altosui/AltosEepromBlock.java @@ -44,6 +44,7 @@ public class AltosEepromBlock extends ArrayList { double lon; boolean has_time; int hour, minute, second; + ParseException parse_exception = null; public AltosEepromBlock (AltosSerial serial_line, int block) throws TimeoutException, InterruptedException { int addr; @@ -56,7 +57,7 @@ public class AltosEepromBlock extends ArrayList { has_lon = false; has_time = false; serial_line.printf("e %x\n", block); - for (addr = 0; !done && addr < 0x100;) { + for (addr = 0; addr < 0x100;) { try { AltosEepromRecord r = new AltosEepromRecord(serial_line, block * 256 + addr); @@ -93,10 +94,17 @@ public class AltosEepromBlock extends ArrayList { lon = (double) (r.a | (r.b << 16)) / 1e7; has_lon = true; } + if (!done) + add(addr / 8, r); if (r.cmd == Altos.AO_LOG_STATE && r.a == Altos.ao_flight_landed) done = true; - add(addr / 8, r); } catch (ParseException pe) { + AltosEepromRecord r = new AltosEepromRecord(Altos.AO_LOG_INVALID, + 0, 0, 0); + if (parse_exception == null) + parse_exception = pe; + if (!done) + add(addr/8, r); } addr += 8; }