X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=ao-tools%2Faltosui%2FAltosSerial.java;h=03ab28c55376ff635c4c7b964304f0ab7cd1b269;hp=e4cedde22b6d6b9c0deedc6c2a506a94f32d0516;hb=97f4874d19ec05c81a04a3ecd06abffcf7fbfafc;hpb=e7dc7fab787df63a4de72c8450e94092eb04d7db 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(); }