X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosFlash.java;h=434a02653a2eec993b55e794222f416e6a554404;hp=010274b944884ecf1e3339aad5f72a3e3221d18d;hb=48e221cca00c9f925ff57588dd782842705f7a23;hpb=9df4e874b2785aec4aecce2f767543ee9f638b4f diff --git a/altoslib/AltosFlash.java b/altoslib/AltosFlash.java index 010274b9..434a0265 100644 --- a/altoslib/AltosFlash.java +++ b/altoslib/AltosFlash.java @@ -3,7 +3,8 @@ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,11 +16,11 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_1; +package org.altusmetrum.altoslib_13; import java.io.*; -public class AltosFlash { +public class AltosFlash extends AltosProgrammer { File file; FileInputStream input; AltosHexfile image; @@ -253,10 +254,10 @@ public class AltosFlash { clock_init(); int remain = image.data.length; - int flash_addr = image.address; + int flash_addr = (int) image.address; int image_start = 0; - action("start", 0); + action(AltosFlashListener.flash_start, 0); action(0, image.data.length); while (remain > 0 && !aborted) { int this_time = remain; @@ -292,9 +293,9 @@ public class AltosFlash { action(image.data.length - remain, image.data.length); } if (!aborted) { - action("done", 100); + action(AltosFlashListener.flash_done, 100); if (debug != null) { - debug.set_pc(image.address); + debug.set_pc((int) image.address); debug.resume(); } } @@ -318,7 +319,7 @@ public class AltosFlash { close(); } - public boolean check_rom_config() { + public boolean check_rom_config() throws InterruptedException { if (debug == null) return true; if (rom_config == null) @@ -330,12 +331,20 @@ public class AltosFlash { rom_config = romconfig; } - public AltosRomconfig romconfig() { + public AltosRomconfig target_romconfig(AltosUsbId usb_id, String usb_product) throws InterruptedException { if (!check_rom_config()) return null; + if (rom_config.usb_id == null) + rom_config.usb_id = usb_id; + if (rom_config.usb_product == null) + rom_config.usb_product = usb_product; return rom_config; } + public AltosRomconfig image_romconfig() { + return new AltosRomconfig(image); + } + public AltosFlash(File file, AltosLink link, AltosFlashListener listener) throws IOException, FileNotFoundException, InterruptedException { this.file = file; @@ -345,9 +354,23 @@ public class AltosFlash { debug = new AltosDebug(link); input = new FileInputStream(file); image = new AltosHexfile(input); - if (debug != null && !debug.check_connection()) { + + boolean connection_ok = true; + + if (debug != null) { + try { + connection_ok = debug.check_connection(); + } catch (IOException ie) { + debug.close(); + throw ie; + } catch (InterruptedException ie) { + debug.close(); + throw ie; + } + } + if (!connection_ok) { debug.close(); throw new IOException("Debug port not connected"); } } -} \ No newline at end of file +}