summaryrefslogtreecommitdiff
path: root/altosui/AltosSerial.java
diff options
context:
space:
mode:
Diffstat (limited to 'altosui/AltosSerial.java')
-rw-r--r--altosui/AltosSerial.java16
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) {