@@ -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