altosui: discard invalid lines while reading Eeprom flight data
[fw/altos] / ao-tools / altosui / AltosEepromDownload.java
index c2a8d25e8b229d7c6d20d4aaac466001d0eaa7fb..6dbbd3ebb8c3477e8b41250cb39ab529a501272e 100644 (file)
@@ -142,6 +142,7 @@ public class AltosEepromDownload implements Runnable {
 
                                if (values == null) {
                                        System.out.printf("invalid line: %s\n", line);
+                                       continue;
                                } else if (values[0] != addr) {
                                        System.out.printf("data address out of sync at 0x%x\n",
                                                          block * 256 + values[0]);
@@ -223,9 +224,10 @@ public class AltosEepromDownload implements Runnable {
 
        public void run () {
                if (remote) {
-                       serial_line.printf("m 0\n");
                        serial_line.set_channel(AltosPreferences.channel());
-                       serial_line.printf("p\n");
+                       serial_line.set_callsign(AltosPreferences.callsign());
+                       serial_line.printf("p\nE 0\n");
+                       serial_line.flush_input();
                }
 
                monitor = new AltosEepromMonitor(frame, Altos.ao_flight_boost, Altos.ao_flight_landed);
@@ -246,6 +248,7 @@ public class AltosEepromDownload implements Runnable {
                if (remote)
                        serial_line.printf("~");
                monitor.done();
+               serial_line.flush_output();
                serial_line.close();
        }
 
@@ -259,7 +262,6 @@ public class AltosEepromDownload implements Runnable {
                if (device != null) {
                        try {
                                serial_line.open(device);
-                               String name = device.getName();
                                if (!device.matchProduct(AltosDevice.TeleMetrum))
                                        remote = true;
                                eeprom_thread = new Thread(this);