51
51
52
52
public class SerialUploader extends Uploader {
53
53
54
+ private BoardPort boardPort ;
55
+
54
56
public SerialUploader ()
55
57
{
56
58
super ();
59
+ this .boardPort = BaseNoGui .getDiscoveryManager ().find (PreferencesData .get ("serial.port" ));
57
60
}
58
61
59
- public SerialUploader (boolean noUploadPort )
62
+ public SerialUploader (BoardPort port )
63
+ {
64
+ super ();
65
+ this .boardPort = port ;
66
+ }
67
+
68
+ public SerialUploader (BoardPort port , boolean noUploadPort )
60
69
{
61
70
super (noUploadPort );
71
+ this .boardPort = port ;
62
72
}
63
73
64
74
@ Override
@@ -108,6 +118,7 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
108
118
boolean uploadResult ;
109
119
try {
110
120
String pattern = prefs .getOrExcept ("upload.pattern" );
121
+ validatePattern (pattern , prefs );
111
122
String [] cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
112
123
uploadResult = executeUploadCommand (cmd );
113
124
} catch (Exception e ) {
@@ -178,9 +189,9 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
178
189
Thread .sleep (100 );
179
190
BaseNoGui .getDiscoveryManager ().getSerialDiscoverer ().forceRefresh ();
180
191
Thread .sleep (100 );
192
+ boardPort = BaseNoGui .getDiscoveryManager ().find (PreferencesData .get ("serial.port" ));
181
193
}
182
194
183
- BoardPort boardPort = BaseNoGui .getDiscoveryManager ().find (PreferencesData .get ("serial.port" ));
184
195
try {
185
196
prefs .put ("serial.port.iserial" , boardPort .getPrefs ().getOrExcept ("iserial" ));
186
197
} catch (Exception e ) {
@@ -203,6 +214,7 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
203
214
boolean uploadResult ;
204
215
try {
205
216
String pattern = prefs .getOrExcept ("upload.pattern" );
217
+ validatePattern (pattern , prefs );
206
218
String [] cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
207
219
uploadResult = executeUploadCommand (cmd );
208
220
} catch (RunnerException e ) {
@@ -251,7 +263,13 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
251
263
return uploadResult ;
252
264
}
253
265
254
- private String waitForUploadPort (String uploadPort , List <String > before ) throws InterruptedException , RunnerException {
266
+ private void validatePattern (String pattern , PreferencesMap prefs ) throws MissingSerialPortException {
267
+ if (pattern .contains ("serial.port" ) && boardPort == null ) {
268
+ throw new MissingSerialPortException ();
269
+ }
270
+ }
271
+
272
+ private String waitForUploadPort (String uploadPort , List <String > before ) throws InterruptedException , RunnerException {
255
273
// Wait for a port to appear on the list
256
274
int elapsed = 0 ;
257
275
while (elapsed < 10000 ) {
@@ -339,6 +357,7 @@ private boolean uploadUsingProgrammer(String buildPath, String className) throws
339
357
// }
340
358
341
359
String pattern = prefs .getOrExcept ("program.pattern" );
360
+ validatePattern (pattern , prefs );
342
361
String [] cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
343
362
return executeUploadCommand (cmd );
344
363
} catch (RunnerException e ) {
@@ -403,11 +422,13 @@ public boolean burnBootloader() throws Exception {
403
422
new LoadVIDPIDSpecificPreferences ().load (prefs );
404
423
405
424
String pattern = prefs .getOrExcept ("erase.pattern" );
425
+ validatePattern (pattern , prefs );
406
426
String [] cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
407
427
if (!executeUploadCommand (cmd ))
408
428
return false ;
409
429
410
430
pattern = prefs .getOrExcept ("bootloader.pattern" );
431
+ validatePattern (pattern , prefs );
411
432
cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
412
433
return executeUploadCommand (cmd );
413
434
}
0 commit comments