altosui: Must flush serial line after configuring for telemetry
[fw/altos] / ao-tools / altosui / AltosSerial.java
index 99ba3324e623fbd3d3fe3c82c0323b6b3587c9f3..bc35d6b8b2bdb9bd61fb8a07bb24876d0d9d0b79 100644 (file)
@@ -71,7 +71,7 @@ public class AltosSerial implements Runnable {
                                                                for (int i = 0; i < line_count; i++)
                                                                        line = line + line_bytes[i];
                                                        }
-                                                       if (line.startsWith("VERSION")) {
+                                                       if (line.startsWith("VERSION") || line.startsWith("CRC")) {
                                                                for (int e = 0; e < monitors.size(); e++) {
                                                                        LinkedBlockingQueue<String> q = monitors.get(e);
                                                                        q.put(line);
@@ -101,7 +101,8 @@ public class AltosSerial implements Runnable {
        }
 
        public void flush_output() {
-               libaltos.altos_flush(altos);
+               if (altos != null)
+                       libaltos.altos_flush(altos);
        }
 
        public void flush_input() {
@@ -180,8 +181,8 @@ public class AltosSerial implements Runnable {
                input_thread = new Thread(this);
                input_thread.start();
                print("~\nE 0\n");
+               flush_output();
                set_monitor(monitor_mode);
-               flush_input();
        }
 
        public void set_channel(int channel) {
@@ -190,6 +191,7 @@ public class AltosSerial implements Runnable {
                                printf("m 0\nc r %d\nm 1\n", channel);
                        else
                                printf("c r %d\n", channel);
+                       flush_output();
                }
        }
 
@@ -200,12 +202,15 @@ public class AltosSerial implements Runnable {
                                printf("m 1\n");
                        else
                                printf("m 0\n");
+                       flush_output();
                }
        }
 
        public void set_callsign(String callsign) {
-               if (altos != null)
+               if (altos != null) {
                        printf ("c c %s\n", callsign);
+                       flush_output();
+               }
        }
 
        public AltosSerial() {