altosui: Add support for downloading TeleMini/TeleNano flight logs
[fw/altos] / altosui / AltosEepromBlock.java
index 11438df8bf536d40ccc7061a002bf6852b3353c7..650920d1b353629c7cdf3d18ae6846997054832c 100644 (file)
@@ -44,8 +44,9 @@ public class AltosEepromBlock extends ArrayList<AltosEepromRecord> {
        double  lon;
        boolean has_time;
        int     hour, minute, second;
+       ParseException  parse_exception = null;
 
-       public AltosEepromBlock (AltosSerial serial_line, int block) throws TimeoutException, InterruptedException {
+       public AltosEepromBlock (AltosEepromChunk chunk) {
                int     addr;
                boolean done = false;
 
@@ -55,10 +56,9 @@ public class AltosEepromBlock extends ArrayList<AltosEepromRecord> {
                has_lat = false;
                has_lon = false;
                has_time = false;
-               serial_line.printf("e %x\n", block);
-               for (addr = 0; addr < 0x100;) {
+               for (addr = 0; addr < chunk.chunk_size;) {
                        try {
-                               AltosEepromRecord r = new AltosEepromRecord(serial_line, block * 256 + addr);
+                               AltosEepromRecord r = new AltosEepromRecord(chunk, addr);
 
                                if (r.cmd == Altos.AO_LOG_FLIGHT) {
                                        flight = r.b;
@@ -100,6 +100,8 @@ public class AltosEepromBlock extends ArrayList<AltosEepromRecord> {
                        } 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);
                        }