altosui: discard invalid lines while reading Eeprom flight data
[fw/altos] / ao-tools / altosui / AltosEepromDownload.java
index f2fcd09e687c3d3fb9e85b4eabb7e920b021b87c..6dbbd3ebb8c3477e8b41250cb39ab529a501272e 100644 (file)
@@ -84,7 +84,7 @@ public class AltosEepromDownload implements Runnable {
        }
 
        JFrame                  frame;
-       altos_device            device;
+       AltosDevice             device;
        AltosSerial             serial_line;
        boolean                 remote;
        Thread                  eeprom_thread;
@@ -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,12 +248,13 @@ public class AltosEepromDownload implements Runnable {
                if (remote)
                        serial_line.printf("~");
                monitor.done();
+               serial_line.flush_output();
                serial_line.close();
        }
 
        public AltosEepromDownload(JFrame given_frame) {
                frame = given_frame;
-               device = AltosDeviceDialog.show(frame, null);
+               device = AltosDeviceDialog.show(frame, AltosDevice.Any);
 
                serial_line = new AltosSerial();
                remote = false;
@@ -259,7 +262,7 @@ public class AltosEepromDownload implements Runnable {
                if (device != null) {
                        try {
                                serial_line.open(device);
-                               if (!device.getProduct().startsWith("TeleMetrum"))
+                               if (!device.matchProduct(AltosDevice.TeleMetrum))
                                        remote = true;
                                eeprom_thread = new Thread(this);
                                eeprom_thread.start();