altosui: Must flush serial line after configuring for telemetry
[fw/altos] / ao-tools / altosui / AltosSerial.java
index c4a7ad76a9437117f25091caf9038ced7df1abd0..bc35d6b8b2bdb9bd61fb8a07bb24876d0d9d0b79 100644 (file)
@@ -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,20 +181,17 @@ 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) {
                if (altos != null) {
-                       if (monitor_mode) {
-                               printf("m 0\n");
-                               flush_input();
-                       }
-                       printf("c r %d\n", channel);
                        if (monitor_mode)
-                               printf("m 1\n");
-                       flush_input();
+                               printf("m 0\nc r %d\nm 1\n", channel);
+                       else
+                               printf("c r %d\n", channel);
+                       flush_output();
                }
        }
 
@@ -202,16 +200,17 @@ public class AltosSerial implements Runnable {
                if (altos != null) {
                        if (monitor)
                                printf("m 1\n");
-                       else {
+                       else
                                printf("m 0\n");
-                               flush_input();
-                       }
+                       flush_output();
                }
        }
 
        public void set_callsign(String callsign) {
-               if (altos != null)
+               if (altos != null) {
                        printf ("c c %s\n", callsign);
+                       flush_output();
+               }
        }
 
        public AltosSerial() {