summaryrefslogtreecommitdiff
path: root/ao-tools/altosui/AltosSerial.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2010-04-22 16:25:35 -0700
committerKeith Packard <keithp@keithp.com>2010-04-22 16:25:38 -0700
commit97f4874d19ec05c81a04a3ecd06abffcf7fbfafc (patch)
tree1b3247f5675685813d7f07a6101395e1a5659653 /ao-tools/altosui/AltosSerial.java
parente7dc7fab787df63a4de72c8450e94092eb04d7db (diff)
More ALtosUI changes
Diffstat (limited to 'ao-tools/altosui/AltosSerial.java')
-rw-r--r--ao-tools/altosui/AltosSerial.java39
1 files changed, 24 insertions, 15 deletions
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<String> monitor_queue;
+ LinkedList<LinkedBlockingQueue<String>> monitors;
LinkedBlockingQueue<String> 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<String> 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<String> q) {
+ monitors.add(q);
+ }
+
+ public void remove_monitor(LinkedBlockingQueue<String> 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<String> ();
+ monitors = new LinkedList<LinkedBlockingQueue<String>> ();
reply_queue = new LinkedBlockingQueue<String> ();
}
@@ -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<String> q) {
+ reader.add_monitor(q);
+ }
+
+ public void remove_monitor(LinkedBlockingQueue<String> q) {
+ reader.remove_monitor(q);
+ }
+
public AltosSerial() {
init();
}