summaryrefslogtreecommitdiff
path: root/ao-tools/altosui/AltosSerial.java
diff options
context:
space:
mode:
authorAnthony Towns <aj@erisian.com.au>2010-11-25 08:47:36 +1000
committerAnthony Towns <aj@erisian.com.au>2010-11-25 08:47:36 +1000
commit7811e6dfa6caf10251da7df7c24b98cdc3787892 (patch)
tree43e9447faf4d5a7e73f71ae4f516f8e830f86758 /ao-tools/altosui/AltosSerial.java
parent71b1949e50f4533bcf44537da65b19bc67863c8e (diff)
parent7a50837ea0d92db3f469f197ec8210aee22aa143 (diff)
Merge branch 'buttonbox' of git://git.gag.com/fw/altos into buttonbox
Diffstat (limited to 'ao-tools/altosui/AltosSerial.java')
-rw-r--r--ao-tools/altosui/AltosSerial.java33
1 files changed, 21 insertions, 12 deletions
diff --git a/ao-tools/altosui/AltosSerial.java b/ao-tools/altosui/AltosSerial.java
index ab74486b..b19143e5 100644
--- a/ao-tools/altosui/AltosSerial.java
+++ b/ao-tools/altosui/AltosSerial.java
@@ -114,16 +114,20 @@ public class AltosSerial implements Runnable {
public void flush_input() {
flush_output();
- try {
- Thread.sleep(200);
- } catch (InterruptedException ie) {
- }
- synchronized(this) {
- if (!"VERSION".startsWith(line) &&
- !line.startsWith("VERSION"))
- line = "";
- reply_queue.clear();
- }
+ boolean got_some;
+ do {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException ie) {
+ }
+ got_some = !reply_queue.isEmpty();
+ synchronized(this) {
+ if (!"VERSION".startsWith(line) &&
+ !line.startsWith("VERSION"))
+ line = "";
+ reply_queue.clear();
+ }
+ } while (got_some);
}
public String get_reply() throws InterruptedException {
@@ -194,13 +198,18 @@ public class AltosSerial implements Runnable {
devices_opened.add(device.getPath());
}
altos = libaltos.altos_open(device);
- if (altos == null)
+ if (altos == null) {
+ close();
throw new FileNotFoundException(device.toShortString());
+ }
input_thread = new Thread(this);
input_thread.start();
print("~\nE 0\n");
+ set_monitor(false);
flush_output();
- set_monitor(monitor_mode);
+ }
+
+ public void set_radio() {
set_channel(AltosPreferences.channel(device.getSerial()));
set_callsign(AltosPreferences.callsign());
}