Skip to content

Commit bc54dd8

Browse files
committed
SerialDiscovery: reorder a bit the discovery phases to make it clearer
1 parent 8208376 commit bc54dd8

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

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

+21-23
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,23 @@ public synchronized void forceRefresh() {
128128
// add information for newly added ports
129129
for (String newPort : ports) {
130130

131-
String[] parts = newPort.split("_");
131+
// if port has been already discovered bring it back online
132+
BoardPort oldBoardPort = boardPorts.stream() //
133+
.filter(bp -> bp.toCompleteString().equalsIgnoreCase(newPort)) //
134+
.findAny().orElse(null);
135+
if (oldBoardPort != null) {
136+
oldBoardPort.setOnlineStatus(true);
137+
continue;
138+
}
132139

140+
// Otherwise build a BoardPort object out of it and add it to
141+
// to the known boardPorts
142+
143+
String[] parts = newPort.split("_");
133144
if (parts.length < 3) {
134145
// something went horribly wrong
135146
continue;
136147
}
137-
138148
if (parts.length > 3) {
139149
// port name with _ in it (like CP2102 on OSX)
140150
for (int i = 1; i < (parts.length-2); i++) {
@@ -146,24 +156,14 @@ public synchronized void forceRefresh() {
146156

147157
String port = parts[0];
148158

149-
Map<String, Object> boardData = platform.resolveDeviceByVendorIdProductId(port, BaseNoGui.packages);
150-
151-
// if port has been already discovered bring it back online
152-
BoardPort oldBoardPort = boardPorts.stream() //
153-
.filter(bp -> bp.toCompleteString().equalsIgnoreCase(newPort)) //
154-
.findAny().orElse(null);
155-
if (oldBoardPort != null) {
156-
oldBoardPort.setOnlineStatus(true);
157-
continue;
158-
}
159-
160159
BoardPort boardPort = new BoardPort();
161160
boardPorts.add(boardPort);
162161
boardPort.setAddress(port);
163162
boardPort.setProtocol("serial");
164163
boardPort.setOnlineStatus(true);
165164
boardPort.setLabel(port);
166165

166+
Map<String, Object> boardData = platform.resolveDeviceByVendorIdProductId(port, BaseNoGui.packages);
167167
if (boardData != null) {
168168
boardPort.getPrefs().put("vid", boardData.get("vid").toString());
169169
boardPort.getPrefs().put("pid", boardData.get("pid").toString());
@@ -176,17 +176,15 @@ public synchronized void forceRefresh() {
176176
String boardName = board.getName();
177177
boardPort.setBoardName(boardName);
178178
}
179+
} else if (!parts[1].equals("0000")) {
180+
boardPort.getPrefs().put("vid", parts[1]);
181+
boardPort.getPrefs().put("pid", parts[2]);
182+
// ask Cloud API to match the board with known VID/PID pair
183+
boardCloudResolver.getBoardBy(parts[1], parts[2]);
179184
} else {
180-
if (!parts[1].equals("0000")) {
181-
boardPort.getPrefs().put("vid", parts[1]);
182-
boardPort.getPrefs().put("pid", parts[2]);
183-
// ask Cloud API to match the board with known VID/PID pair
184-
boardCloudResolver.getBoardBy(parts[1], parts[2]);
185-
} else {
186-
boardPort.getPrefs().put("vid", "0000");
187-
boardPort.getPrefs().put("pid", "0000");
188-
boardPort.getPrefs().put("iserial", "");
189-
}
185+
boardPort.getPrefs().put("vid", "0000");
186+
boardPort.getPrefs().put("pid", "0000");
187+
boardPort.getPrefs().put("iserial", "");
190188
}
191189
}
192190
setSerialBoardPorts(boardPorts);

0 commit comments

Comments
 (0)