X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=micropeak%2FMicroSerial.java;h=04b58a87dab060e40ae4eaa02f691e5204d1499e;hb=refs%2Fheads%2Fmaster;hp=8546276ed9dcc7c79e66cc2241f53d6ab5b46237;hpb=daf8776f8646ba187f1a17f7aae797503bed3f2a;p=fw%2Faltos diff --git a/micropeak/MicroSerial.java b/micropeak/MicroSerial.java index 8546276e..c6882428 100644 --- a/micropeak/MicroSerial.java +++ b/micropeak/MicroSerial.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -16,20 +17,39 @@ */ package org.altusmetrum.micropeak; + import java.util.*; import java.io.*; import libaltosJNI.*; +import org.altusmetrum.altosuilib_14.*; public class MicroSerial extends InputStream { SWIGTYPE_p_altos_file file; + private MicroSerialLog log; public int read() { + if (file == null) + return -1; int c = libaltos.altos_getchar(file, 0); - if (MicroPreferences.serial_debug) + if (Thread.interrupted()) + return -1; + if (c == -1) + return -1; + if (AltosUIPreferences.serial_debug) System.out.printf("%c", c); + if (log != null) + log.log_char(c); return c; } + public void write(char c) { + libaltos.altos_putchar(file, c); + } + + public void flush() { + libaltos.altos_flush(file); + } + public void close() { if (file != null) { libaltos.altos_close(file); @@ -37,12 +57,17 @@ public class MicroSerial extends InputStream { } } - public MicroSerial(MicroUSB usb) throws FileNotFoundException { - file = usb.open(); + public void set_log(MicroSerialLog log) { + this.log = log; + } + + public MicroSerial(AltosDevice device) throws FileNotFoundException { + file = device.open(); + log = null; if (file == null) { - final String message = usb.getErrorString(); + final String message = device.getErrorString(); throw new FileNotFoundException(String.format("%s (%s)", - usb.toShortString(), + device.toShortString(), message)); } }