summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2011-01-16 14:26:18 -0800
committerKeith Packard <keithp@keithp.com>2011-01-16 14:26:18 -0800
commitd4add23186b3586c99579d83efdc003f79e9bf7a (patch)
tree274b217dc7e91be585273a6e2e99854da9417f89
parentdeb3c7b9206be0c9c46f75d35c8f766c26d9838f (diff)
altosui: Make serial debug more complete and accurate
Display all serial input, including telemetry. Wait to display serial output until flush time, to debug missing flushing. Show when devices are opened and closed. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--altosui/AltosSerial.java17
1 files changed, 13 insertions, 4 deletions
diff --git a/altosui/AltosSerial.java b/altosui/AltosSerial.java
index 3ad16b2b..e609c6b5 100644
--- a/altosui/AltosSerial.java
+++ b/altosui/AltosSerial.java
@@ -48,6 +48,7 @@ public class AltosSerial implements Runnable {
int line_count;
boolean monitor_mode;
static boolean debug;
+ LinkedList<String> pending_output = new LinkedList<String>();
static void set_debug(boolean new_debug) {
debug = new_debug;
@@ -83,14 +84,14 @@ public class AltosSerial implements Runnable {
for (int i = 0; i < line_count; i++)
line = line + line_bytes[i];
}
+ if (debug)
+ System.out.printf("\t\t\t\t\t%s\n", line);
if (line.startsWith("VERSION") || line.startsWith("CRC")) {
for (int e = 0; e < monitors.size(); e++) {
LinkedBlockingQueue<AltosLine> q = monitors.get(e);
q.put(new AltosLine (line));
}
} else {
- if (debug)
- System.out.printf("\t\t\t\t\t%s\n", line);
reply_queue.put(new AltosLine (line));
}
line_count = 0;
@@ -114,8 +115,12 @@ public class AltosSerial implements Runnable {
}
public void flush_output() {
- if (altos != null)
+ if (altos != null) {
+ for (String s : pending_output)
+ System.out.print(s);
+ pending_output.clear();
libaltos.altos_flush(altos);
+ }
}
public void flush_input() {
@@ -180,6 +185,8 @@ public class AltosSerial implements Runnable {
synchronized (devices_opened) {
devices_opened.remove(device.getPath());
}
+ if (debug)
+ System.out.printf("Closing %s\n", device.getPath());
}
private void putc(char c) {
@@ -189,7 +196,7 @@ public class AltosSerial implements Runnable {
public void print(String data) {
if (debug)
- System.out.printf("%s", data);
+ pending_output.add(data);
for (int i = 0; i < data.length(); i++)
putc(data.charAt(i));
}
@@ -209,6 +216,8 @@ public class AltosSerial implements Runnable {
close();
throw new FileNotFoundException(device.toShortString());
}
+ if (debug)
+ System.out.printf("Open %s\n", device.getPath());
input_thread = new Thread(this);
input_thread.start();
print("~\nE 0\n");