diff options
Diffstat (limited to 'ao-tools/altosui/AltosSerial.java')
| -rw-r--r-- | ao-tools/altosui/AltosSerial.java | 67 | 
1 files changed, 32 insertions, 35 deletions
diff --git a/ao-tools/altosui/AltosSerial.java b/ao-tools/altosui/AltosSerial.java index 073bfb78..f12b31b3 100644 --- a/ao-tools/altosui/AltosSerial.java +++ b/ao-tools/altosui/AltosSerial.java @@ -37,7 +37,9 @@ import libaltosJNI.SWIGTYPE_p_altos_list;   * line in a queue. Dealing with that queue is left up to other   * threads.   */ -class AltosSerialReader implements Runnable { + +public class AltosSerial implements Runnable { +  	SWIGTYPE_p_altos_file altos;  	LinkedList<LinkedBlockingQueue<String>> monitors;  	LinkedBlockingQueue<String> reply_queue; @@ -116,50 +118,45 @@ class AltosSerialReader implements Runnable {  		}  	} -	public void open(altos_device device) throws FileNotFoundException { -		close(); -		altos = libaltos.altos_open(device); -		input_thread = new Thread(this); -		input_thread.start(); -	} -	public AltosSerialReader () { -		altos = null; -		input_thread = null; -		line = ""; -		monitors = new LinkedList<LinkedBlockingQueue<String>> (); -		reply_queue = new LinkedBlockingQueue<String> (); -	} -} - -public class AltosSerial { -	AltosSerialReader reader = null; - -	public void close() { -		reader.close(); +	public void putc(char c) { +		if (altos != null) +			libaltos.altos_putchar(altos, c);  	} -	public void open(altos_device device) throws FileNotFoundException { -		reader.open(device); +	public void print(String data) { +		for (int i = 0; i < data.length(); i++) +			putc(data.charAt(i));  	} -	void init() { -		reader = new AltosSerialReader(); +	public void printf(String format, Object ... arguments) { +		print(String.format(format, arguments));  	} -	public void add_monitor(LinkedBlockingQueue<String> q) { -		reader.add_monitor(q); +	public void open(altos_device device) throws FileNotFoundException { +		close(); +		altos = libaltos.altos_open(device); +		if (altos == null) +			throw new FileNotFoundException(device.getPath()); +		input_thread = new Thread(this); +		input_thread.start(); +		print("\nE 0\nm 1\n"); +		try { +			Thread.sleep(200); +		} catch (InterruptedException e) { +		} +		flush();  	} -	public void remove_monitor(LinkedBlockingQueue<String> q) { -		reader.remove_monitor(q); +	public void set_channel(int channel) { +		if (altos != null) +			printf("m 0\nc r %d\nm 1\n", channel);  	}  	public AltosSerial() { -		init(); -	} - -	public AltosSerial(altos_device device) throws FileNotFoundException { -		init(); -		open(device); +		altos = null; +		input_thread = null; +		line = ""; +		monitors = new LinkedList<LinkedBlockingQueue<String>> (); +		reply_queue = new LinkedBlockingQueue<String> ();  	}  }  | 
