altosui: Mark empty eeprom records 'invalid', don't generate exception
authorKeith Packard <keithp@keithp.com>
Sat, 19 Feb 2011 09:02:00 +0000 (01:02 -0800)
committerKeith Packard <keithp@keithp.com>
Sat, 19 Mar 2011 23:50:34 +0000 (16:50 -0700)
When reading empty eeprom records, mark them as 'invalid', but don't
generate an exception as it's normal to read these at the end of the
flight log.

Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 7ca2cf1b7e03b8453b45b45e313a33ad65da9ad5)

altosui/AltosEepromRecord.java

index 584a04b7c6c053e9a261f1368a603bbb1790c844..e5196c50039a69434d36bd661f612ad50bb3ae08 100644 (file)
@@ -72,15 +72,24 @@ public class AltosEepromRecord {
                if (values[0] != (addr & 0xff))
                        throw new ParseException(String.format("data address out of sync at 0x%x",
                                                               addr), 0);
-               if (checksum(values) != 0)
-                       throw new ParseException(String.format("invalid checksum at 0x%x", addr), 0);
-
+               int i;
+               for (i = 1; i < values.length; i++)
+                       if (values[i] != 0xff)
+                               break;
                cmd = values[1];
+               tick_valid = true;
+               if (i != values.length) {
+                       if (checksum(values) != 0)
+                               throw new ParseException(String.format("invalid checksum at 0x%x in line %s", addr, line), 0);
+               } else {
+                       cmd = Altos.AO_LOG_INVALID;
+                       tick_valid = false;
+               }
+
                tick = values[3] + (values[4] << 8);
                a = values[5] + (values[6] << 8);
                b = values[7] + (values[8] << 8);
                data = null;
-               tick_valid = true;
        }
 
        public AltosEepromRecord (String line) {