@@ -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' ) ) ;
@@ -876,24 +885,22 @@ firmware_flasher.initialize = function (callback) {
876885 if ( isClickable ) {
877886 isClickable = false ;
878887 verifyBoard ( ) ;
879- setTimeout ( ( ) => isClickable = true , 1000 ) ;
888+ setTimeout ( ( ) => {
889+ detectBoardElement . removeClass ( 'disabled' ) ;
890+ isClickable = true ;
891+ } , 1000 ) ;
880892 }
881893 } ) ;
882894
883895 function updateDetectBoardButton ( ) {
884- const isDfu = portPickerElement . val ( ) . includes ( 'DFU' ) ;
896+ const isDfu = PortHandler . dfu_available ;
885897 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 ;
898+ const isAvailable = PortHandler . port_available ;
899+ const isButtonDisabled = isDfu || isBusy || ! isAvailable ;
889900
890901 detectBoardElement . toggleClass ( 'disabled' , isButtonDisabled ) ;
891902 }
892903
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-
897904 ConfigStorage . get ( 'erase_chip' , function ( result ) {
898905 if ( result . erase_chip ) {
899906 $ ( 'input.erase_chip' ) . prop ( 'checked' , true ) ;
@@ -1125,11 +1132,14 @@ firmware_flasher.initialize = function (callback) {
11251132 } ) ;
11261133
11271134 const exitDfuElement = $ ( 'a.exit_dfu' ) ;
1135+
11281136 exitDfuElement . click ( function ( ) {
1129- if ( ! $ ( this ) . hasClass ( 'disabled' ) ) {
1137+ if ( ! exitDfuElement . hasClass ( 'disabled' ) ) {
1138+ exitDfuElement . addClass ( "disabled" ) ;
11301139 if ( ! GUI . connect_lock ) { // button disabled while flashing is in progress
11311140 analytics . sendEvent ( analytics . EVENT_CATEGORIES . FLASHING , 'ExitDfu' , null ) ;
11321141 try {
1142+ console . log ( 'Closing DFU' ) ;
11331143 STM32DFU . connect ( usbDevices , self . parsed_hex , { exitDfu : true } ) ;
11341144 } catch ( e ) {
11351145 console . log ( `Exiting DFU failed: ${ e . message } ` ) ;
@@ -1138,25 +1148,27 @@ firmware_flasher.initialize = function (callback) {
11381148 }
11391149 } ) ;
11401150
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- }
1151+ portPickerElement . on ( 'change' , function ( ) {
1152+ if ( GUI . active_tab === 'firmware_flasher' ) {
1153+ if ( ! GUI . connect_lock ) {
1154+ if ( $ ( 'option:selected' , this ) . data ( ) . isDFU ) {
1155+ exitDfuElement . removeClass ( 'disabled' ) ;
1156+ } else {
1157+ // Porthandler resets board on port detect
1158+ if ( self . boardNeedsVerification ) {
1159+ // reset to prevent multiple calls
1160+ self . boardNeedsVerification = false ;
1161+ verifyBoard ( ) ;
1162+ }
11521163
1153- $ ( "a.load_remote_file" ) . removeClass ( 'disabled' ) ;
1154- $ ( "a.load_file" ) . removeClass ( 'disabled' ) ;
1155- exitDfuElement . addClass ( 'disabled' ) ;
1164+ $ ( "a.load_remote_file" ) . removeClass ( 'disabled' ) ;
1165+ $ ( "a.load_file" ) . removeClass ( 'disabled' ) ;
1166+ exitDfuElement . addClass ( 'disabled' ) ;
1167+ }
11561168 }
1169+ updateDetectBoardButton ( ) ;
11571170 }
1158- updateDetectBoardButton ( ) ;
1159- } ) . change ( ) ;
1171+ } ) . trigger ( 'change' ) ;
11601172
11611173 $ ( 'a.flash_firmware' ) . click ( function ( ) {
11621174 if ( ! $ ( this ) . hasClass ( 'disabled' ) ) {
@@ -1226,6 +1238,7 @@ firmware_flasher.initialize = function (callback) {
12261238
12271239 function startFlashing ( ) {
12281240 exitDfuElement . addClass ( 'disabled' ) ;
1241+ $ ( 'a.flash_firmware' ) . addClass ( 'disabled' ) ;
12291242 $ ( "a.load_remote_file" ) . addClass ( 'disabled' ) ;
12301243 $ ( "a.load_file" ) . addClass ( 'disabled' ) ;
12311244 if ( ! GUI . connect_lock ) { // button disabled while flashing is in progress
0 commit comments