@@ -128,13 +128,23 @@ public synchronized void forceRefresh() {
128
128
// add information for newly added ports
129
129
for (String newPort : ports ) {
130
130
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
+ }
132
139
140
+ // Otherwise build a BoardPort object out of it and add it to
141
+ // to the known boardPorts
142
+
143
+ String [] parts = newPort .split ("_" );
133
144
if (parts .length < 3 ) {
134
145
// something went horribly wrong
135
146
continue ;
136
147
}
137
-
138
148
if (parts .length > 3 ) {
139
149
// port name with _ in it (like CP2102 on OSX)
140
150
for (int i = 1 ; i < (parts .length -2 ); i ++) {
@@ -146,24 +156,14 @@ public synchronized void forceRefresh() {
146
156
147
157
String port = parts [0 ];
148
158
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
-
160
159
BoardPort boardPort = new BoardPort ();
161
160
boardPorts .add (boardPort );
162
161
boardPort .setAddress (port );
163
162
boardPort .setProtocol ("serial" );
164
163
boardPort .setOnlineStatus (true );
165
164
boardPort .setLabel (port );
166
165
166
+ Map <String , Object > boardData = platform .resolveDeviceByVendorIdProductId (port , BaseNoGui .packages );
167
167
if (boardData != null ) {
168
168
boardPort .getPrefs ().put ("vid" , boardData .get ("vid" ).toString ());
169
169
boardPort .getPrefs ().put ("pid" , boardData .get ("pid" ).toString ());
@@ -176,17 +176,15 @@ public synchronized void forceRefresh() {
176
176
String boardName = board .getName ();
177
177
boardPort .setBoardName (boardName );
178
178
}
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 ]);
179
184
} 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" , "" );
190
188
}
191
189
}
192
190
setSerialBoardPorts (boardPorts );
0 commit comments