X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosDebug.java;h=e93c2d2de74720a8d81783f1249545714fc4164c;hp=8faab03bdc19a406d0362fd90a731162ac9466fd;hb=21d176f161b90f18f236ef887cef9676d712eee3;hpb=4e1b134e29313a1bdac18de57fe547299e5ded2a diff --git a/altoslib/AltosDebug.java b/altoslib/AltosDebug.java index 8faab03b..e93c2d2d 100644 --- a/altoslib/AltosDebug.java +++ b/altoslib/AltosDebug.java @@ -15,7 +15,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_2; +package org.altusmetrum.altoslib_10; import java.io.*; @@ -52,17 +52,14 @@ public class AltosDebug { public static final byte GET_CHIP_ID = 0x68; - AltosLink link; + private AltosLink link; 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); } @@ -112,7 +112,11 @@ public class AltosDebug { int i = 0; int start = 0; while (i < length) { - String line = link.get_reply().trim(); + String line = link.get_reply(); + if (line == null) + throw new IOException("No reply"); + + line = line.trim(); if (!AltosLib.ishex(line) || line.length() % 2 != 0) throw new IOException( String.format @@ -132,7 +136,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 +151,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 +261,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(); } @@ -278,4 +281,4 @@ public class AltosDebug { public AltosDebug (AltosLink link) { this.link = link; } -} \ No newline at end of file +}