diff options
Diffstat (limited to 'altosui/AltosSerial.java')
| -rw-r--r-- | altosui/AltosSerial.java | 16 | 
1 files changed, 13 insertions, 3 deletions
diff --git a/altosui/AltosSerial.java b/altosui/AltosSerial.java index c4e9c697..6cee1609 100644 --- a/altosui/AltosSerial.java +++ b/altosui/AltosSerial.java @@ -41,7 +41,7 @@ import libaltosJNI.*;   * threads.   */ -public class AltosSerial extends AltosLink implements Runnable { +public class AltosSerial extends AltosLink  {  	static java.util.List<String> devices_opened = Collections.synchronizedList(new LinkedList<String>()); @@ -54,13 +54,19 @@ public class AltosSerial extends AltosLink implements Runnable {  	Frame frame;  	public int getchar() { +		if (altos == null) +			return ERROR;  		return libaltos.altos_getchar(altos, 0);  	}  	public void flush_output() {  		super.flush_output();  		if (altos != null) { -			libaltos.altos_flush(altos); +			if (libaltos.altos_flush(altos) != 0) { +				libaltos.altos_close(altos); +				altos = null; +				abort_reply(); +			}  		}  	} @@ -155,7 +161,11 @@ public class AltosSerial extends AltosLink implements Runnable {  	private void putc(char c) {  		if (altos != null) -			libaltos.altos_putchar(altos, c); +			if (libaltos.altos_putchar(altos, c) != 0) { +				libaltos.altos_close(altos); +				altos = null; +				abort_reply(); +			}  	}  	public void print(String data) {  | 
