From ba65e4aeb952a1cf49a77f1e24e235508fcea71f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 3 Sep 2010 01:21:57 -0700 Subject: [PATCH] altosui: Deal with altos bug setting radio channel while monitoring 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 --- ao-tools/altosui/AltosSerial.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/ao-tools/altosui/AltosSerial.java b/ao-tools/altosui/AltosSerial.java index c3daf3b9..c4a7ad76 100644 --- a/ao-tools/altosui/AltosSerial.java +++ b/ao-tools/altosui/AltosSerial.java @@ -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(); + } } } -- 2.30.2