diff options
author | Keith Packard <keithp@keithp.com> | 2011-01-16 14:26:18 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2011-01-16 14:26:18 -0800 |
commit | d4add23186b3586c99579d83efdc003f79e9bf7a (patch) | |
tree | 274b217dc7e91be585273a6e2e99854da9417f89 | |
parent | deb3c7b9206be0c9c46f75d35c8f766c26d9838f (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.java | 17 |
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"); |