summaryrefslogtreecommitdiff
path: root/altoslib/AltosDebug.java
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-12-18 01:14:11 -0800
committerKeith Packard <keithp@keithp.com>2013-12-18 01:14:11 -0800
commite26306c9350ef1d107d4257ef1c09d15165c9154 (patch)
treed7983c6a04c54b3307d6fc2699dad4fa21d8bde0 /altoslib/AltosDebug.java
parent18852efa108ba6e6e69dfd5076d4f4c01f62b4ef (diff)
altoslib: Pass InterruptedException up the stack instead of hiding it
When interrupting a thread that is talking to a serial device, it's important not to have that thread discard the InterruptedException so that it will actually terminate. This patch removes a bunch of places that were discarding InterruptedExceptions and lets higher level code see them so that they can exit cleanly. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altoslib/AltosDebug.java')
-rw-r--r--altoslib/AltosDebug.java23
1 files changed, 11 insertions, 12 deletions
diff --git a/altoslib/AltosDebug.java b/altoslib/AltosDebug.java
index 8faab03b..fb11d39a 100644
--- a/altoslib/AltosDebug.java
+++ b/altoslib/AltosDebug.java
@@ -56,13 +56,10 @@ public class AltosDebug {
boolean debug_mode;
- void ensure_debug_mode() {
+ void ensure_debug_mode() throws InterruptedException {
if (!debug_mode) {
link.printf("D\n");
- try {
- link.flush_input();
- } catch (InterruptedException ie) {
- }
+ link.flush_input();
debug_mode = true;
}
}
@@ -81,13 +78,16 @@ public class AltosDebug {
}
public void close() {
- link.close();
+ try {
+ link.close();
+ } catch (InterruptedException ie) {
+ }
}
/*
* Write target memory
*/
- public void write_memory(int address, byte[] bytes, int start, int len) {
+ public void write_memory(int address, byte[] bytes, int start, int len) throws InterruptedException {
ensure_debug_mode();
// dump_memory("write_memory", address, bytes, start, len);
link.printf("O %x %x\n", len, address);
@@ -95,7 +95,7 @@ public class AltosDebug {
link.printf("%02x", bytes[start + i]);
}
- public void write_memory(int address, byte[] bytes) {
+ public void write_memory(int address, byte[] bytes) throws InterruptedException {
write_memory(address, bytes, 0, bytes.length);
}
@@ -132,7 +132,7 @@ public class AltosDebug {
/*
* Write raw bytes to the debug link using the 'P' command
*/
- public void write_bytes(byte[] bytes) throws IOException {
+ public void write_bytes(byte[] bytes) throws IOException, InterruptedException {
int i = 0;
ensure_debug_mode();
while (i < bytes.length) {
@@ -147,7 +147,7 @@ public class AltosDebug {
}
}
- public void write_byte(byte b) throws IOException {
+ public void write_byte(byte b) throws IOException, InterruptedException {
byte[] bytes = { b };
write_bytes(bytes);
}
@@ -257,13 +257,12 @@ public class AltosDebug {
return true;
}
- public AltosRomconfig romconfig() {
+ public AltosRomconfig romconfig() throws InterruptedException {
try {
byte[] bytes = read_memory(0xa0, 10);
AltosHexfile hexfile = new AltosHexfile (bytes, 0xa0);
return new AltosRomconfig(hexfile);
} catch (IOException ie) {
- } catch (InterruptedException ie) {
}
return new AltosRomconfig();
}