@@ -847,15 +847,24 @@ firmware_flasher.initialize = function (callback) {
847847 if ( String ( portPickerElement . val ( ) ) !== '0' ) {
848848 const port = String ( portPickerElement . val ( ) ) ;
849849 let baud = 115200 ;
850+
850851 if ( $ ( 'input.flash_manual_baud' ) . is ( ':checked' ) ) {
851852 baud = parseInt ( $ ( '#flash_manual_baud_rate' ) . val ( ) ) ;
852853 }
854+
853855 GUI . log ( i18n . getMessage ( 'firmwareFlasherDetectBoardQuery' ) ) ;
854- if ( ! ( serial . connected || serial . connectionId ) ) {
855- serial . connect ( port , { bitrate : baud } , onConnect ) ;
856+
857+ const isLoaded = self . releases ? Object . keys ( self . releases ) . length > 0 : false ;
858+
859+ if ( isLoaded ) {
860+ if ( ! ( serial . connected || serial . connectionId ) ) {
861+ serial . connect ( port , { bitrate : baud } , onConnect ) ;
862+ } else {
863+ console . warn ( 'Attempting to connect while there still is a connection' , serial . connected , serial . connectionId ) ;
864+ serial . disconnect ( ) ;
865+ }
856866 } else {
857- console . warn ( 'Attempting to connect while there still is a connection' , serial . connected , serial . connectionId ) ;
858- serial . disconnect ( ) ;
867+ console . log ( 'Releases not loaded yet' ) ;
859868 }
860869 } else {
861870 GUI . log ( i18n . getMessage ( 'firmwareFlasherNoValidPort' ) ) ;
@@ -864,32 +873,24 @@ firmware_flasher.initialize = function (callback) {
864873 }
865874
866875 const detectBoardElement = $ ( 'a.detect-board' ) ;
867- let isClickable = true ;
868876
869877 detectBoardElement . on ( 'click' , ( ) => {
870878 detectBoardElement . addClass ( 'disabled' ) ;
871879
872- if ( isClickable ) {
873- isClickable = false ;
874- verifyBoard ( ) ;
875- setTimeout ( ( ) => isClickable = true , 1000 ) ;
876- }
880+ verifyBoard ( ) ;
881+
882+ setTimeout ( ( ) => detectBoardElement . removeClass ( 'disabled' ) , 1000 ) ;
877883 } ) ;
878884
879885 function updateDetectBoardButton ( ) {
880- const isDfu = portPickerElement . val ( ) . includes ( 'DFU' ) ;
886+ const isDfu = PortHandler . dfu_available ;
881887 const isBusy = GUI . connect_lock ;
882- const isLoaded = self . releases ? Object . keys ( self . releases ) . length > 0 : false ;
883- const isAvailable = PortHandler . port_available || false ;
884- const isButtonDisabled = isDfu || isBusy || ! isLoaded || ! isAvailable ;
888+ const isAvailable = PortHandler . port_available ;
889+ const isButtonDisabled = isDfu || isBusy || ! isAvailable ;
885890
886891 detectBoardElement . toggleClass ( 'disabled' , isButtonDisabled ) ;
887892 }
888893
889- document . querySelector ( 'select[name="build_type"]' ) . addEventListener ( 'change' , updateDetectBoardButton ) ;
890- document . querySelector ( 'select[name="board"]' ) . addEventListener ( 'change' , updateDetectBoardButton ) ;
891- document . querySelector ( 'select[name="firmware_version"]' ) . addEventListener ( 'change' , updateDetectBoardButton ) ;
892-
893894 let result = ConfigStorage . get ( 'erase_chip' ) ;
894895 if ( result . erase_chip ) {
895896 $ ( 'input.erase_chip' ) . prop ( 'checked' , true ) ;
@@ -1114,11 +1115,14 @@ firmware_flasher.initialize = function (callback) {
11141115 } ) ;
11151116
11161117 const exitDfuElement = $ ( 'a.exit_dfu' ) ;
1118+
11171119 exitDfuElement . click ( function ( ) {
1118- if ( ! $ ( this ) . hasClass ( 'disabled' ) ) {
1120+ if ( ! exitDfuElement . hasClass ( 'disabled' ) ) {
1121+ exitDfuElement . addClass ( "disabled" ) ;
11191122 if ( ! GUI . connect_lock ) { // button disabled while flashing is in progress
11201123 analytics . sendEvent ( analytics . EVENT_CATEGORIES . FLASHING , 'ExitDfu' , null ) ;
11211124 try {
1125+ console . log ( 'Closing DFU' ) ;
11221126 STM32DFU . connect ( usbDevices , self . parsed_hex , { exitDfu : true } ) ;
11231127 } catch ( e ) {
11241128 console . log ( `Exiting DFU failed: ${ e . message } ` ) ;
@@ -1127,25 +1131,27 @@ firmware_flasher.initialize = function (callback) {
11271131 }
11281132 } ) ;
11291133
1130- portPickerElement . change ( function ( ) {
1131- if ( ! GUI . connect_lock ) {
1132- if ( $ ( 'option:selected' , this ) . data ( ) . isDFU ) {
1133- exitDfuElement . removeClass ( 'disabled' ) ;
1134- } else {
1135- // Porthandler resets board on port detect
1136- if ( self . boardNeedsVerification ) {
1137- // reset to prevent multiple calls
1138- self . boardNeedsVerification = false ;
1139- verifyBoard ( ) ;
1140- }
1134+ portPickerElement . on ( 'change' , function ( ) {
1135+ if ( GUI . active_tab === 'firmware_flasher' ) {
1136+ if ( ! GUI . connect_lock ) {
1137+ if ( $ ( 'option:selected' , this ) . data ( ) . isDFU ) {
1138+ exitDfuElement . removeClass ( 'disabled' ) ;
1139+ } else {
1140+ // Porthandler resets board on port detect
1141+ if ( self . boardNeedsVerification ) {
1142+ // reset to prevent multiple calls
1143+ self . boardNeedsVerification = false ;
1144+ verifyBoard ( ) ;
1145+ }
11411146
1142- $ ( "a.load_remote_file" ) . removeClass ( 'disabled' ) ;
1143- $ ( "a.load_file" ) . removeClass ( 'disabled' ) ;
1144- exitDfuElement . addClass ( 'disabled' ) ;
1147+ $ ( "a.load_remote_file" ) . removeClass ( 'disabled' ) ;
1148+ $ ( "a.load_file" ) . removeClass ( 'disabled' ) ;
1149+ exitDfuElement . addClass ( 'disabled' ) ;
1150+ }
11451151 }
1152+ updateDetectBoardButton ( ) ;
11461153 }
1147- updateDetectBoardButton ( ) ;
1148- } ) . change ( ) ;
1154+ } ) . trigger ( 'change' ) ;
11491155
11501156 $ ( 'a.flash_firmware' ) . click ( function ( ) {
11511157 if ( ! $ ( this ) . hasClass ( 'disabled' ) ) {
@@ -1214,6 +1220,7 @@ firmware_flasher.initialize = function (callback) {
12141220
12151221 function startFlashing ( ) {
12161222 exitDfuElement . addClass ( 'disabled' ) ;
1223+ $ ( 'a.flash_firmware' ) . addClass ( 'disabled' ) ;
12171224 $ ( "a.load_remote_file" ) . addClass ( 'disabled' ) ;
12181225 $ ( "a.load_file" ) . addClass ( 'disabled' ) ;
12191226 if ( ! GUI . connect_lock ) { // button disabled while flashing is in progress
0 commit comments