diff options
author | Keith Packard <keithp@keithp.com> | 2014-02-07 22:32:17 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-02-07 22:32:17 -0800 |
commit | 8d0d59c51138dc1b1bbf6933354fe9faf4d67986 (patch) | |
tree | 61bbd29b0003c2de8d46e14dabe41fe61565eda7 /micropeak/MicroData.java | |
parent | 4a5b3837b460d1b6fcea99312728114c4734495a (diff) |
micropeak: Keep reading until we get valid data
Don't stop just because we saw something invalid on the serial line;
let the user try again, or cancel when they get bored.
However, if the serial line disappears or some other fatal error
occurs, then do stop and put up an error dialog.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'micropeak/MicroData.java')
-rw-r--r-- | micropeak/MicroData.java | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/micropeak/MicroData.java b/micropeak/MicroData.java index 04e9ad32..e786ff1e 100644 --- a/micropeak/MicroData.java +++ b/micropeak/MicroData.java @@ -100,13 +100,13 @@ public class MicroData implements AltosUIDataSet { String name; MicroStats stats; - class FileEndedException extends Exception { + public class FileEndedException extends Exception { } - class NonHexcharException extends Exception { + public class NonHexcharException extends Exception { } - class InvalidCrcException extends Exception { + public class InvalidCrcException extends Exception { } private int getc(InputStream f) throws IOException, FileEndedException { @@ -167,14 +167,10 @@ public class MicroData implements AltosUIDataSet { return h; } - private boolean find_header(InputStream f) throws IOException { - try { - for (;;) { - if (get_nonwhite(f) == 'M' && get_nonwhite(f) == 'P') - return true; - } - } catch (FileEndedException fe) { - return false; + private boolean find_header(InputStream f) throws IOException, FileEndedException { + for (;;) { + if (get_nonwhite(f) == 'M' && get_nonwhite(f) == 'P') + return true; } } @@ -339,7 +335,7 @@ public class MicroData implements AltosUIDataSet { this.name = name; } - public MicroData (InputStream f, String name) throws IOException, InterruptedException { + public MicroData (InputStream f, String name) throws IOException, InterruptedException, NonHexcharException, FileEndedException { this.name = name; bytes = new ArrayList<Integer>(); if (!find_header(f)) @@ -384,8 +380,6 @@ public class MicroData implements AltosUIDataSet { stats = new MicroStats(this); } catch (FileEndedException fe) { throw new IOException("File Ended Unexpectedly"); - } catch (NonHexcharException ne) { - throw new IOException("Non hexadecimal character found"); } } |