From: Keith Packard Date: Fri, 6 Dec 2019 00:59:40 +0000 (-0800) Subject: altosuilib: Wait for Windows to get ready with new device X-Git-Tag: 1.9.1~1^2~3 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=695dba4e37ccca9a2dc06e1656699a13406002c1 altosuilib: Wait for Windows to get ready with new device Windows appears to report the new device path long before the path is actually usable. Stick some long delays trying to open the device before giving up. Signed-off-by: Keith Packard --- diff --git a/altosuilib/AltosFlashUI.java b/altosuilib/AltosFlashUI.java index 37ab9661..7186e91b 100644 --- a/altosuilib/AltosFlashUI.java +++ b/altosuilib/AltosFlashUI.java @@ -481,12 +481,24 @@ public class AltosFlashUI public void run () { try { AltosLink link = null; + boolean new_device = false; for (;;) { System.out.printf("Attempting to open %s\n", device.toShortString()); - link = new AltosSerial(device); + for (int i = 0; i < 20; i++) { + link = new AltosSerial(device); + if (link != null) + break; + + if (!new_device) + break; + + System.out.printf("Waiting for device to become ready\n"); + + Thread.sleep(1000); + } if (link == null) throw new IOException(String.format("%s: open failed", device.toShortString())); @@ -536,6 +548,7 @@ public class AltosFlashUI if (!matched) { System.out.printf("Identified new device %s\n", d.toShortString()); device = (AltosUSBDevice) d; + new_device = true; break; } }