7
7
import java .io .File ;
8
8
import java .io .IOException ;
9
9
import java .net .URL ;
10
+ import java .util .List ;
10
11
11
12
import org .eclipse .cdt .core .CCorePlugin ;
12
13
import org .eclipse .cdt .core .envvar .EnvironmentVariable ;
43
44
import io .sloeber .core .Messages ;
44
45
import io .sloeber .core .api .BoardDescription ;
45
46
import io .sloeber .core .api .PasswordManager ;
47
+ import io .sloeber .core .api .Serial ;
46
48
import io .sloeber .core .api .SerialManager ;
47
49
import io .sloeber .core .api .SloeberProject ;
48
50
import io .sloeber .core .common .IndexHelper ;
@@ -132,7 +134,7 @@ public UploadJobWrapper(String name, SloeberProject project, ICConfigurationDesc
132
134
@ Override
133
135
protected IStatus run (IProgressMonitor monitor ) {
134
136
IStatus ret = Status .OK_STATUS ;
135
- boolean WeStoppedTheComPort = false ;
137
+ boolean theComPortIsPauzed = false ;
136
138
137
139
String projectName = myProject .getName ();
138
140
BoardDescription boardDescriptor = mySProject .getBoardDescription (myConfDes .getName (), true );
@@ -166,7 +168,7 @@ public void run() {
166
168
highLevelStream .println (message );
167
169
monitor .beginTask (message , 2 );
168
170
try {
169
- WeStoppedTheComPort = SerialManager .StopSerialMonitor (myProvidedUploadPort );
171
+ theComPortIsPauzed = SerialManager .pauzeSerialMonitor (myProvidedUploadPort );
170
172
} catch (Exception e ) {
171
173
ret = new Status (IStatus .WARNING , CORE_PLUGIN_ID , Upload_Error_com_port , e );
172
174
log (ret );
@@ -183,8 +185,22 @@ public void run() {
183
185
log (new Status (IStatus .ERROR , CORE_PLUGIN_ID , error , e ));
184
186
} finally {
185
187
try {
186
- if (WeStoppedTheComPort ) {
187
- SerialManager .StartSerialMonitor (myProvidedUploadPort );
188
+ if (theComPortIsPauzed ) {
189
+ // wait for the port to reappear
190
+ boolean portFound = false ;
191
+ int counter = 0 ;
192
+ while (!portFound & counter ++ < 100 ) {
193
+ List <String > currentPorts = Serial .list ();
194
+ portFound = currentPorts .contains (myProvidedUploadPort );
195
+ if (!portFound ) {
196
+ Thread .sleep (100 );
197
+ }
198
+ }
199
+ if (portFound ) {
200
+ SerialManager .resumeSerialMonitor (myProvidedUploadPort );
201
+ } else {
202
+ SerialManager .pauzeSerialMonitor (myProvidedUploadPort );
203
+ }
188
204
}
189
205
} catch (Exception e ) {
190
206
ret = new Status (IStatus .WARNING , CORE_PLUGIN_ID , Messages .Upload_Error_serial_monitor_restart , e );
0 commit comments