altosui: provide separate flush_input/flush_output for serial. deal with monitor...
[fw/altos] / ao-tools / altosui / AltosEepromDownload.java
index 1f4a278f33bde2a959ae845f9e8fcbb9b262f3f0..5e43345b6197b845262deb994cc435ffd6812d23 100644 (file)
@@ -31,6 +31,7 @@ import java.util.concurrent.LinkedBlockingQueue;
 import altosui.Altos;
 import altosui.AltosSerial;
 import altosui.AltosSerialMonitor;
+import altosui.AltosRecord;
 import altosui.AltosTelemetry;
 import altosui.AltosState;
 import altosui.AltosDeviceDialog;
@@ -83,7 +84,7 @@ public class AltosEepromDownload implements Runnable {
        }
 
        JFrame                  frame;
-       altos_device            device;
+       AltosDevice             device;
        AltosSerial             serial_line;
        boolean                 remote;
        Thread                  eeprom_thread;
@@ -222,9 +223,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);
@@ -245,12 +247,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;
@@ -258,7 +261,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();