*
* 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
*/
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);
}
}
- 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));
}
}