From 97f4874d19ec05c81a04a3ecd06abffcf7fbfafc Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Thu, 22 Apr 2010 16:25:35 -0700 Subject: More ALtosUI changes --- ao-tools/altosui/AltosSerial.java | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'ao-tools/altosui/AltosSerial.java') diff --git a/ao-tools/altosui/AltosSerial.java b/ao-tools/altosui/AltosSerial.java index e4cedde2..03ab28c5 100644 --- a/ao-tools/altosui/AltosSerial.java +++ b/ao-tools/altosui/AltosSerial.java @@ -36,7 +36,7 @@ import altosui.AltosSerialMonitor; */ class AltosSerialReader implements Runnable { InputStream serial_in; - LinkedBlockingQueue monitor_queue; + LinkedList> monitors; LinkedBlockingQueue reply_queue; Thread input_thread; String line; @@ -56,9 +56,12 @@ class AltosSerialReader implements Runnable { synchronized(this) { if (c == '\n') { if (line != "") { - if (line.startsWith("VERSION")) - monitor_queue.put(line); - else + if (line.startsWith("VERSION")) { + for (int e = 0; e < monitors.size(); e++) { + LinkedBlockingQueue q = monitors.get(e); + q.put(line); + } + } else reply_queue.put(line); line = ""; } @@ -72,16 +75,18 @@ class AltosSerialReader implements Runnable { } } - public String get_telem() throws InterruptedException { - String s = monitor_queue.take(); - System.out.println(s); - return s; - } - public String get_reply() throws InterruptedException { return reply_queue.take(); } + public void add_monitor(LinkedBlockingQueue q) { + monitors.add(q); + } + + public void remove_monitor(LinkedBlockingQueue q) { + monitors.remove(q); + } + public void flush () { synchronized(this) { if (!"VERSION".startsWith(line) && !line.startsWith("VERSION")) @@ -132,7 +137,7 @@ class AltosSerialReader implements Runnable { serial_in = null; input_thread = null; line = ""; - monitor_queue = new LinkedBlockingQueue (); + monitors = new LinkedList> (); reply_queue = new LinkedBlockingQueue (); } @@ -142,10 +147,6 @@ public class AltosSerial { OutputStream serial_out = null; AltosSerialReader reader = null; - public String get_telem() throws InterruptedException { - return reader.get_telem(); - } - CommPort comm_port = null; public void close() { @@ -178,6 +179,14 @@ public class AltosSerial { reader = new AltosSerialReader(); } + public void add_monitor(LinkedBlockingQueue q) { + reader.add_monitor(q); + } + + public void remove_monitor(LinkedBlockingQueue q) { + reader.remove_monitor(q); + } + public AltosSerial() { init(); } -- cgit v1.2.3