diff options
Diffstat (limited to 'ao-tools/altosui/AltosSerial.java')
| -rw-r--r-- | ao-tools/altosui/AltosSerial.java | 39 | 
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();  	} | 
