X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altosui%2FAltosEepromBlock.java;h=d59fd39e2bdf9b67951dd67e2a3e3a924966a861;hb=ad6bb342d237988404fa32540b38c61d6ddc1f0d;hp=0c1a4a9287b6ecd9beb373fc785b08fb6b36cc41;hpb=bd2480fd757b67557d9c7de42e402034002c3e37;p=fw%2Faltos diff --git a/altosui/AltosEepromBlock.java b/altosui/AltosEepromBlock.java index 0c1a4a92..d59fd39e 100644 --- a/altosui/AltosEepromBlock.java +++ b/altosui/AltosEepromBlock.java @@ -38,6 +38,13 @@ public class AltosEepromBlock extends ArrayList { int state; boolean has_date; int year, month, day; + boolean has_lat; + double lat; + boolean has_lon; + 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; @@ -46,8 +53,11 @@ public class AltosEepromBlock extends ArrayList { has_flight = false; has_state = false; has_date = false; + has_lat = false; + 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); @@ -70,11 +80,31 @@ public class AltosEepromBlock extends ArrayList { day = (r.b & 0xff); has_date = true; } - + if (r.cmd == Altos.AO_LOG_GPS_TIME) { + hour = (r.a & 0xff); + minute = (r.a >> 8); + second = (r.b & 0xff); + has_time = true; + } + if (r.cmd == Altos.AO_LOG_GPS_LAT) { + lat = (double) (r.a | (r.b << 16)) / 1e7; + has_lat = true; + } + if (r.cmd == Altos.AO_LOG_GPS_LON) { + 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; }