Changed package name from altosui to AltosUI
[fw/altos] / altosui / AltosDebug.java
index 8d435b667d5ecb584b118bed27a5d9945b4abb92..4e39401137c7e137c499462348e830e69d48e016 100644 (file)
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package altosui;
+package AltosUI;
 
 import java.lang.*;
 import java.io.*;
 import java.util.concurrent.*;
 import java.util.*;
+import org.altusmetrum.AltosLib.*;
 
 import libaltosJNI.*;
 
@@ -62,7 +63,10 @@ public class AltosDebug extends AltosSerial {
        void ensure_debug_mode() {
                if (!debug_mode) {
                        printf("D\n");
-                       flush_input();
+                       try {
+                               flush_input();
+                       } catch (InterruptedException ie) {
+                       }
                        debug_mode = true;
                }
        }
@@ -160,7 +164,11 @@ public class AltosDebug extends AltosSerial {
                int i = 0;
                byte[] data = new byte[length];
                while (i < length) {
-                       String line = get_reply().trim();
+                       String line = get_reply();
+
+                       if (line == null)
+                               throw new IOException("Timeout in read_bytes");
+                       line = line.trim();
                        String tokens[] = line.split("\\s+");
                        for (int j = 0; j < tokens.length; j++) {
                                if (!Altos.ishex(tokens[j]) ||
@@ -169,7 +177,12 @@ public class AltosDebug extends AltosSerial {
                                                String.format
                                                ("Invalid read_bytes reply \"%s\"", line));
                                try {
-                                       data[i + j] = (byte) Integer.parseInt(tokens[j], 16);
+                                       if (i + j >= length)
+                                               throw new IOException(
+                                                       String.format
+                                                       ("Invalid read_bytes reply \"%s\"", line));
+                                       else
+                                               data[i + j] = (byte) Integer.parseInt(tokens[j], 16);
                                } catch (NumberFormatException ne) {
                                        throw new IOException(
                                                String.format