From: Michael McMaster Date: Mon, 5 Apr 2021 10:09:11 +0000 (+1000) Subject: Add progress bar while writing an image X-Git-Url: http://git.codesrc.com/gitweb.cgi?a=commitdiff_plain;h=7609cba9f66d27290bedc2421aecf8e1deaf255d;p=scsi2sd-util.git Add progress bar while writing an image --- diff --git a/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/IProgress.java b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/IProgress.java new file mode 100644 index 0000000..bbc0f81 --- /dev/null +++ b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/IProgress.java @@ -0,0 +1,5 @@ +package com.codesrc.scsi2sd.io; + +public interface IProgress { + void ReportProgress(double progress); +} diff --git a/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/UsbDevice.java b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/UsbDevice.java index 5590f11..36c6c8a 100644 --- a/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/UsbDevice.java +++ b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/UsbDevice.java @@ -41,7 +41,7 @@ public interface UsbDevice { void saveDiskConfig(int index, byte[] data); void saveCommit(); - void writeImage(int deviceId, File file, int sectorStart) throws IOException; + void writeImage(int deviceId, File file, int sectorStart, IProgress progress) throws IOException; boolean supportsTerminator(); boolean supportsSynchronous(); diff --git a/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V3FirmwareUsbDevice.java b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V3FirmwareUsbDevice.java index 6959673..75d4871 100644 --- a/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V3FirmwareUsbDevice.java +++ b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V3FirmwareUsbDevice.java @@ -276,7 +276,7 @@ public class V3FirmwareUsbDevice implements UsbDevice { } @Override - public void writeImage(int deviceId, File file, int sectorStart) throws IOException + public void writeImage(int deviceId, File file, int sectorStart, IProgress progress) throws IOException { // Only supported on the flash device // Erase the flash device @@ -303,10 +303,11 @@ public class V3FirmwareUsbDevice implements UsbDevice { var is = new BufferedInputStream(new FileInputStream(file)); for (int sector = 0; sector < sectors; ++sector) { + var percentComplete = ((double) sector) / sectors; + progress.ReportProgress(percentComplete); if (sector % 100 == 0) { - var percentComplete = 100.0 * sector / sectors; - System.out.print(percentComplete); + System.out.print(100 * percentComplete); System.out.println("% complete"); } byte[] writeCmd = new byte[519]; diff --git a/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V6FirmwareUsbDevice.java b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V6FirmwareUsbDevice.java index 62fb84e..622df6c 100644 --- a/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V6FirmwareUsbDevice.java +++ b/scsi2sd.io/src/main/java/com/codesrc/scsi2sd/io/V6FirmwareUsbDevice.java @@ -174,7 +174,7 @@ public class V6FirmwareUsbDevice implements UsbDevice { } @Override - public void writeImage(int deviceId, File file, int sectorStart) throws IOException + public void writeImage(int deviceId, File file, int sectorStart, IProgress progress) throws IOException { throw new UnsupportedOperationException("Not implemented yet"); } diff --git a/scsi2sd.ui/src/main/java/com/codesrc/scsi2sd/model/DiskConfig.java b/scsi2sd.ui/src/main/java/com/codesrc/scsi2sd/model/DiskConfig.java index cb0a587..8d03c33 100644 --- a/scsi2sd.ui/src/main/java/com/codesrc/scsi2sd/model/DiskConfig.java +++ b/scsi2sd.ui/src/main/java/com/codesrc/scsi2sd/model/DiskConfig.java @@ -450,6 +450,15 @@ public class DiskConfig { } catch (NumberFormatException e) { } + this.storageDevice = 0; + var storageDeviceText = children.getOrDefault("storageDevice", "0"); + try { + var intValue = Integer.valueOf(storageDeviceText); + if (intValue >= 0 && intValue < 256) { + this.storageDevice = intValue; + } + } catch (NumberFormatException e) { + } this.sdSectorStart = 0; var sdSectorStartText = children.getOrDefault("sdSectorStart", "0"); @@ -562,6 +571,14 @@ public class DiskConfig { .append(Integer.toString(this.deviceTypeModifier, 16)) .append("\n") + .append("\n\n") + .append(" \n") + .append(" ").append(this.storageDevice).append("\n") + .append("\n\n") + .append("\n\n") .append("