@@ -840,7 +840,7 @@ bool doGetBusAndSetBaudRate()
840840 }
841841 Thread . Sleep ( 50 ) ;
842842 int attempt = 0 ;
843- int maxAttempts = 0 ;
843+ int maxAttempts = 10 ;
844844 while ( true )
845845 {
846846 addSuccess ( "Going to set baud rate setting (" + baudrate + ")!" + Environment . NewLine ) ;
@@ -943,14 +943,30 @@ bool doEraseInternal(int startSector, int sectors)
943943 for ( int sec = 0 ; sec < sectors ; sec ++ )
944944 {
945945 int secAddr = startSector + SECTOR_SIZE * sec ;
946- // 4K erase
947- bool bOk = eraseSector ( secAddr , 0x20 ) ;
948- addLog ( "Erasing sector " + secAddr + "..." ) ;
949- if ( bOk == false )
946+ int tries = 0 ;
947+ while ( true )
950948 {
951- logger . setState ( "Erase failed." , Color . Red ) ;
952- addError ( " Erasing sector " + secAddr + " failed!" + Environment . NewLine ) ;
953- return false ;
949+ tries ++ ;
950+ // 4K erase
951+ bool bOk = eraseSector ( secAddr , 0x20 ) ;
952+ addLog ( "Erasing sector " + secAddr + "..." ) ;
953+ if ( bOk == false )
954+ {
955+ if ( tries > 5 )
956+ {
957+ logger . setState ( "Erase failed." , Color . Red ) ;
958+ addError ( " Erasing sector " + secAddr + " failed!" + Environment . NewLine ) ;
959+ return false ;
960+ }
961+ else
962+ {
963+ addWarning ( " failed, will retry! " ) ;
964+ }
965+ }
966+ else
967+ {
968+ break ;
969+ }
954970 }
955971 addLog ( " ok! " ) ;
956972 logger . setProgress ( sec + 1 , sectors ) ;
@@ -1828,6 +1844,7 @@ bool setBaudrate(int baudrate, int delay_ms)
18281844
18291845 }
18301846 Thread . Sleep ( delay_ms / 2 ) ;
1847+ int prev = serial . BaudRate ;
18311848 serial . BaudRate = baudrate ;
18321849 byte [ ] rxbuf = Start_Cmd ( null , CalcRxLength_SetBaudRate ( ) , 0.5f ) ;
18331850 if ( rxbuf != null )
@@ -1837,6 +1854,7 @@ bool setBaudrate(int baudrate, int delay_ms)
18371854 return true ;
18381855 }
18391856 }
1857+ serial . BaudRate = prev ;
18401858 return false ;
18411859 }
18421860 }
0 commit comments