@@ -851,15 +851,24 @@ firmware_flasher.initialize = function (callback) {
851851 if ( String ( portPickerElement . val ( ) ) !== '0' ) {
852852 const port = String ( portPickerElement . val ( ) ) ;
853853 let baud = 115200 ;
854+
854855 if ( $ ( 'input.flash_manual_baud' ) . is ( ':checked' ) ) {
855856 baud = parseInt ( $ ( '#flash_manual_baud_rate' ) . val ( ) ) ;
856857 }
858+
857859 GUI . log ( i18n . getMessage ( 'firmwareFlasherDetectBoardQuery' ) ) ;
858- if ( ! ( serial . connected || serial . connectionId ) ) {
859- serial . connect ( port , { bitrate : baud } , onConnect ) ;
860+
861+ const isLoaded = self . releases ? Object . keys ( self . releases ) . length > 0 : false ;
862+
863+ if ( isLoaded ) {
864+ if ( ! ( serial . connected || serial . connectionId ) ) {
865+ serial . connect ( port , { bitrate : baud } , onConnect ) ;
866+ } else {
867+ console . warn ( 'Attempting to connect while there still is a connection' , serial . connected , serial . connectionId ) ;
868+ serial . disconnect ( ) ;
869+ }
860870 } else {
861- console . warn ( 'Attempting to connect while there still is a connection' , serial . connected , serial . connectionId ) ;
862- serial . disconnect ( ) ;
871+ console . log ( 'Releases not loaded yet' ) ;
863872 }
864873 } else {
865874 GUI . log ( i18n . getMessage ( 'firmwareFlasherNoValidPort' ) ) ;
@@ -868,32 +877,24 @@ firmware_flasher.initialize = function (callback) {
868877 }
869878
870879 const detectBoardElement = $ ( 'a.detect-board' ) ;
871- let isClickable = true ;
872880
873881 detectBoardElement . on ( 'click' , ( ) => {
874882 detectBoardElement . addClass ( 'disabled' ) ;
875883
876- if ( isClickable ) {
877- isClickable = false ;
878- verifyBoard ( ) ;
879- setTimeout ( ( ) => isClickable = true , 1000 ) ;
880- }
884+ verifyBoard ( ) ;
885+
886+ setTimeout ( ( ) => detectBoardElement . removeClass ( 'disabled' ) , 1000 ) ;
881887 } ) ;
882888
883889 function updateDetectBoardButton ( ) {
884- const isDfu = portPickerElement . val ( ) . includes ( 'DFU' ) ;
890+ const isDfu = PortHandler . dfu_available ;
885891 const isBusy = GUI . connect_lock ;
886- const isLoaded = self . releases ? Object . keys ( self . releases ) . length > 0 : false ;
887- const isAvailable = PortHandler . port_available || false ;
888- const isButtonDisabled = isDfu || isBusy || ! isLoaded || ! isAvailable ;
892+ const isAvailable = PortHandler . port_available ;
893+ const isButtonDisabled = isDfu || isBusy || ! isAvailable ;
889894
890895 detectBoardElement . toggleClass ( 'disabled' , isButtonDisabled ) ;
891896 }
892897
893- document . querySelector ( 'select[name="build_type"]' ) . addEventListener ( 'change' , updateDetectBoardButton ) ;
894- document . querySelector ( 'select[name="board"]' ) . addEventListener ( 'change' , updateDetectBoardButton ) ;
895- document . querySelector ( 'select[name="firmware_version"]' ) . addEventListener ( 'change' , updateDetectBoardButton ) ;
896-
897898 ConfigStorage . get ( 'erase_chip' , function ( result ) {
898899 if ( result . erase_chip ) {
899900 $ ( 'input.erase_chip' ) . prop ( 'checked' , true ) ;
@@ -1125,11 +1126,14 @@ firmware_flasher.initialize = function (callback) {
11251126 } ) ;
11261127
11271128 const exitDfuElement = $ ( 'a.exit_dfu' ) ;
1129+
11281130 exitDfuElement . click ( function ( ) {
1129- if ( ! $ ( this ) . hasClass ( 'disabled' ) ) {
1131+ if ( ! exitDfuElement . hasClass ( 'disabled' ) ) {
1132+ exitDfuElement . addClass ( "disabled" ) ;
11301133 if ( ! GUI . connect_lock ) { // button disabled while flashing is in progress
11311134 analytics . sendEvent ( analytics . EVENT_CATEGORIES . FLASHING , 'ExitDfu' , null ) ;
11321135 try {
1136+ console . log ( 'Closing DFU' ) ;
11331137 STM32DFU . connect ( usbDevices , self . parsed_hex , { exitDfu : true } ) ;
11341138 } catch ( e ) {
11351139 console . log ( `Exiting DFU failed: ${ e . message } ` ) ;
@@ -1138,25 +1142,27 @@ firmware_flasher.initialize = function (callback) {
11381142 }
11391143 } ) ;
11401144
1141- portPickerElement . change ( function ( ) {
1142- if ( ! GUI . connect_lock ) {
1143- if ( $ ( 'option:selected' , this ) . data ( ) . isDFU ) {
1144- exitDfuElement . removeClass ( 'disabled' ) ;
1145- } else {
1146- // Porthandler resets board on port detect
1147- if ( self . boardNeedsVerification ) {
1148- // reset to prevent multiple calls
1149- self . boardNeedsVerification = false ;
1150- verifyBoard ( ) ;
1151- }
1145+ portPickerElement . on ( 'change' , function ( ) {
1146+ if ( GUI . active_tab === 'firmware_flasher' ) {
1147+ if ( ! GUI . connect_lock ) {
1148+ if ( $ ( 'option:selected' , this ) . data ( ) . isDFU ) {
1149+ exitDfuElement . removeClass ( 'disabled' ) ;
1150+ } else {
1151+ // Porthandler resets board on port detect
1152+ if ( self . boardNeedsVerification ) {
1153+ // reset to prevent multiple calls
1154+ self . boardNeedsVerification = false ;
1155+ verifyBoard ( ) ;
1156+ }
11521157
1153- $ ( "a.load_remote_file" ) . removeClass ( 'disabled' ) ;
1154- $ ( "a.load_file" ) . removeClass ( 'disabled' ) ;
1155- exitDfuElement . addClass ( 'disabled' ) ;
1158+ $ ( "a.load_remote_file" ) . removeClass ( 'disabled' ) ;
1159+ $ ( "a.load_file" ) . removeClass ( 'disabled' ) ;
1160+ exitDfuElement . addClass ( 'disabled' ) ;
1161+ }
11561162 }
1163+ updateDetectBoardButton ( ) ;
11571164 }
1158- updateDetectBoardButton ( ) ;
1159- } ) . change ( ) ;
1165+ } ) . trigger ( 'change' ) ;
11601166
11611167 $ ( 'a.flash_firmware' ) . click ( function ( ) {
11621168 if ( ! $ ( this ) . hasClass ( 'disabled' ) ) {
@@ -1226,6 +1232,7 @@ firmware_flasher.initialize = function (callback) {
12261232
12271233 function startFlashing ( ) {
12281234 exitDfuElement . addClass ( 'disabled' ) ;
1235+ $ ( 'a.flash_firmware' ) . addClass ( 'disabled' ) ;
12291236 $ ( "a.load_remote_file" ) . addClass ( 'disabled' ) ;
12301237 $ ( "a.load_file" ) . addClass ( 'disabled' ) ;
12311238 if ( ! GUI . connect_lock ) { // button disabled while flashing is in progress
0 commit comments