Skip to content

Commit eacddd6

Browse files
author
Federico Fissore
committed
Block discovery threads until packages is not null, otherwise boards discovered during startup will miss model name
1 parent 350adb9 commit eacddd6

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545

4646
public class NetworkDiscovery implements Discovery, ServiceListener, cc.arduino.packages.discoverers.network.NetworkTopologyListener {
4747

48+
private static final int MAX_TIME_AWAITING_FOR_PACKAGES = 5000;
49+
4850
private final List<BoardPort> boardPortsDiscoveredWithJmDNS;
4951
private final Map<InetAddress, JmDNS> mappedJmDNSs;
5052
private Timer networkCheckerTimer;
@@ -121,6 +123,16 @@ public void serviceRemoved(ServiceEvent serviceEvent) {
121123

122124
@Override
123125
public void serviceResolved(ServiceEvent serviceEvent) {
126+
int sleptFor = 0;
127+
while (BaseNoGui.packages == null && sleptFor <= MAX_TIME_AWAITING_FOR_PACKAGES) {
128+
try {
129+
Thread.sleep(1000);
130+
sleptFor += 1000;
131+
} catch (InterruptedException e) {
132+
e.printStackTrace();
133+
}
134+
}
135+
124136
ServiceInfo info = serviceEvent.getInfo();
125137
for (InetAddress inetAddress : info.getInet4Addresses()) {
126138
String address = inetAddress.getHostAddress();

arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343

4444
public class SerialBoardsLister extends TimerTask {
4545

46+
private static final int MAX_TIME_AWAITING_FOR_PACKAGES = 5000;
47+
4648
private final SerialDiscovery serialDiscovery;
4749

4850
public SerialBoardsLister(SerialDiscovery serialDiscovery) {
@@ -55,8 +57,14 @@ public void start(Timer timer) {
5557

5658
@Override
5759
public void run() {
58-
if (BaseNoGui.packages == null) {
59-
return;
60+
int sleptFor = 0;
61+
while (BaseNoGui.packages == null && sleptFor <= MAX_TIME_AWAITING_FOR_PACKAGES) {
62+
try {
63+
Thread.sleep(1000);
64+
sleptFor += 1000;
65+
} catch (InterruptedException e) {
66+
e.printStackTrace();
67+
}
6068
}
6169

6270
Platform platform = BaseNoGui.getPlatform();

0 commit comments

Comments
 (0)