summaryrefslogtreecommitdiff
path: root/micropeak/MicroData.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2014-02-07 22:32:17 -0800
committerKeith Packard <keithp@keithp.com>2014-02-07 22:32:17 -0800
commit8d0d59c51138dc1b1bbf6933354fe9faf4d67986 (patch)
tree61bbd29b0003c2de8d46e14dabe41fe61565eda7 /micropeak/MicroData.java
parent4a5b3837b460d1b6fcea99312728114c4734495a (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.java22
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");
}
}