@@ -407,9 +407,98 @@ private void createAndUpload(){
407
407
}
408
408
}
409
409
410
+
411
+ private void eraseFlash (){
412
+
413
+ if (!PreferencesData .get ("target_platform" ).contentEquals ("esp32" )){
414
+ System .err .println ();
415
+ editor .statusError (typefs + " Not Supported on " +PreferencesData .get ("target_platform" ));
416
+ return ;
417
+ }
418
+
419
+ TargetPlatform platform = BaseNoGui .getTargetPlatform ();
420
+
421
+ String toolExtension = ".py" ;
422
+ if (PreferencesData .get ("runtime.os" ).contentEquals ("windows" )) {
423
+ toolExtension = ".exe" ;
424
+ } else if (PreferencesData .get ("runtime.os" ).contentEquals ("macosx" )) {
425
+ toolExtension = "" ;
426
+ }
427
+
428
+ String pythonCmd ;
429
+ if (PreferencesData .get ("runtime.os" ).contentEquals ("windows" ))
430
+ pythonCmd = "python.exe" ;
431
+ else
432
+ pythonCmd = "python" ;
433
+
434
+ Boolean isNetwork = false ;
435
+
436
+ File esptool = new File (platform .getFolder ()+"/tools" );
437
+ String serialPort = PreferencesData .get ("serial.port" );
438
+
439
+ //make sure the serial port or IP is defined
440
+ if (serialPort == null || serialPort .isEmpty ()) {
441
+ System .err .println ();
442
+ editor .statusError (typefs + " Error: serial port not defined!" );
443
+ return ;
444
+ }
445
+
446
+ //find port
447
+ if (serialPort .split ("\\ ." ).length == 4 ){
448
+ isNetwork = true ;
449
+ } else {
450
+ String esptoolCmd = "esptool" +toolExtension ;
451
+ esptool = new File (platform .getFolder ()+"/tools" , esptoolCmd );
452
+ if (!esptool .exists () || !esptool .isFile ()){
453
+ esptool = new File (platform .getFolder ()+"/tools/esptool_py" , esptoolCmd );
454
+ if (!esptool .exists () || !esptool .isFile ()){
455
+ esptool = new File (platform .getFolder ()+"/tools/esptool" , esptoolCmd );
456
+ if (!esptool .exists () || !esptool .isFile ()){
457
+ esptool = new File (PreferencesData .get ("runtime.tools.esptool_py.path" ), esptoolCmd );
458
+ if (!esptool .exists () || !esptool .isFile ()){
459
+ esptool = new File (PreferencesData .get ("runtime.tools.esptool.path" ), esptoolCmd );
460
+ if (!esptool .exists () || !esptool .isFile ()){
461
+ System .err .println ();
462
+ editor .statusError ("Error: esptool not found!" );
463
+ return ;
464
+ }
465
+ }
466
+ }
467
+ }
468
+ }
469
+ }
470
+ System .out .println ("esptool : " +esptool .getAbsolutePath ());
471
+ System .out .println ();
472
+
473
+ Object [] options = { "Yes" , "No" };
474
+ String title = "Erase All Flash" ;
475
+ String message = "Are you sure?" ;
476
+
477
+ if (JOptionPane .showOptionDialog (editor , message , title , JOptionPane .YES_NO_OPTION , JOptionPane .QUESTION_MESSAGE , null , options , options [1 ]) != JOptionPane .YES_OPTION ){
478
+ System .err .println ();
479
+ editor .statusError ("Warning: Erase All Flash canceled!" );
480
+ return ;
481
+ }
482
+
483
+ editor .statusNotice ("Erasing all Flash started..." );
484
+ System .out .println ("Erasing all Flash started..." );
485
+
486
+ if (isNetwork ){
487
+ System .out .println ("Cannot be done through OTA, IP : " +serialPort );
488
+ System .out .println ();
489
+ } else {
490
+ System .out .println ("Port: " +serialPort );
491
+ System .out .println ();
492
+ if (esptool .getAbsolutePath ().endsWith (".py" ))
493
+ sysExec (new String []{pythonCmd , esptool .getAbsolutePath (), "--chip" , "esp32" , "--port" , serialPort , "--before" , "default_reset" , "--after" , "hard_reset" , "erase_flash" });
494
+ else
495
+ sysExec (new String []{esptool .getAbsolutePath (), "--chip" , "esp32" , "--port" , serialPort , "--before" , "default_reset" , "--after" , "hard_reset" , "erase_flash" });
496
+ }
497
+ }
498
+
410
499
public void run () {
411
500
String sketchName = editor .getSketch ().getName ();
412
- Object [] options = { "LittleFS" , "SPIFFS" , "FatFS" };
501
+ Object [] options = { "LittleFS" , "SPIFFS" , "FatFS" , "!Erase Flash!" };
413
502
typefs = (String )JOptionPane .showInputDialog (editor ,
414
503
"Select FS for " + sketchName +
415
504
" /data folder" ,
@@ -419,7 +508,11 @@ public void run() {
419
508
options ,
420
509
"LittleFS" );
421
510
if ((typefs != null ) && (typefs .length () > 0 )) {
422
- createAndUpload ();
511
+ if (typefs == "!Erase Flash!" ) {
512
+ eraseFlash ();
513
+ } else {
514
+ createAndUpload ();
515
+ }
423
516
} else {
424
517
System .out .println ("Tool Exit." );
425
518
return ;
0 commit comments