altosui: Deal with altos bug setting radio channel while monitoring
authorKeith Packard <keithp@keithp.com>
Fri, 3 Sep 2010 08:21:57 +0000 (01:21 -0700)
committerKeith Packard <keithp@keithp.com>
Fri, 3 Sep 2010 14:04:28 +0000 (07:04 -0700)
If the monitoring thread is active, then setting the radio channel can
sometimes cause the monitoring thread to get stuck. I'm not entirely
sure why though. For now, work around the issue by making sure
monitoring is off, and the monitoring thread has stopped, before
changing the radio channel.

Signed-off-by: Keith Packard <keithp@keithp.com>
ao-tools/altosui/AltosSerial.java

index c3daf3b..c4a7ad7 100644 (file)
@@ -186,10 +186,14 @@ public class AltosSerial implements Runnable {
 
        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 0\nc r %d\nm 1\n", channel);
-                       else
-                               printf("c r %d\n", channel);
+                               printf("m 1\n");
+                       flush_input();
                }
        }
 
@@ -198,8 +202,10 @@ public class AltosSerial implements Runnable {
                if (altos != null) {
                        if (monitor)
                                printf("m 1\n");
-                       else
+                       else {
                                printf("m 0\n");
+                               flush_input();
+                       }
                }
        }