@@ -185,17 +185,22 @@ def wait(self) -> dai.DeviceInfo:
185185 return deviceSelected
186186
187187def flashBootloader (bl : dai .DeviceBootloader , device : dai .DeviceInfo , type : dai .DeviceBootloader .Type ):
188+ userBlWarningMessage = """Updating bootloader can soft-brick a device.
189+ Proceed with caution"""
188190 factoryBlWarningMessage = """Factory Bootloader type or version doesn't support User Bootloader flashing.
189191Factory bootloader will be updated instead.
190192Proceed with caution
191193 """
192194
193195 try :
194196 if bl .isUserBootloaderSupported ():
195- pr = Progress ('Flashing...' )
196- progress = lambda p : pr .update (p )
197- bl .flashUserBootloader (progress )
198- pr .finish ("Flashed newest User Bootloader version." )
197+ if AreYouSure (text = userBlWarningMessage ).wait ():
198+ pr = Progress ('Flashing...' )
199+ progress = lambda p : pr .update (p )
200+ bl .flashUserBootloader (progress )
201+ pr .finish ("Flashed newest User Bootloader version." )
202+ else :
203+ return False
199204 elif AreYouSure (text = factoryBlWarningMessage ).wait ():
200205 bl .close ()
201206 pr = Progress ('Connecting...' )
@@ -400,12 +405,6 @@ def deviceStateTxt(state: dai.XLinkDeviceState) -> str:
400405 sg .Text ("-version-" , key = "version" , size = (30 , 1 )),
401406 sg .VSeparator (),
402407 sg .Text ("-version-" , key = "commit" , size = (31 , 1 ))
403- ],
404- [sg .HSeparator ()],
405- [
406- sg .Text ("" , size = (7 , 2 )),
407- sg .Button ("Update Bootloader" , size = (20 , 2 ), font = ('Arial' , 10 , 'bold' ), disabled = True ,
408- button_color = '#FFA500' ),
409408 ]
410409]
411410
@@ -510,12 +509,17 @@ def deviceStateTxt(state: dai.XLinkDeviceState) -> str:
510509 ],
511510 [sg .HSeparator ()],
512511 [
512+ sg .Button ("Update Bootloader" , size = (20 , 2 ), font = ('Arial' , 10 , 'bold' ), disabled = True ,
513+ button_color = '#FFA500' ),
513514 sg .Button ("Flash Factory Bootloader" , size = (20 , 2 ), font = ('Arial' , 10 , 'bold' ), disabled = True ,
514515 button_color = '#FFA500' , key = 'flashFactoryBootloader' ),
516+ ],
517+ [sg .HSeparator ()],
518+ [
515519 sg .Button ("Factory reset" , size = (17 , 2 ), font = ('Arial' , 10 , 'bold' ), disabled = True , button_color = '#FFA500' ),
516520 sg .Button ("Boot into USB\n Recovery mode" , size = (20 , 2 ), font = ('Arial' , 10 , 'bold' ), disabled = True ,
517521 key = 'recoveryMode' , button_color = '#FFA500' )
518- ],
522+ ]
519523]
520524
521525
@@ -611,6 +615,8 @@ def run(self) -> None:
611615 if self .bl is None : continue
612616 self .getConfigs ()
613617 self .unlockConfig ()
618+
619+ # Danger
614620 elif event == "Update Bootloader" :
615621 # Use current type
616622 if flashBootloader (self .bl , self .device , self .bl .getType ()):
@@ -620,8 +626,6 @@ def run(self) -> None:
620626 self .getDevices ()
621627 else :
622628 print ("Flashing bootloader canceled." )
623-
624- # Danger
625629 elif event == "flashFactoryBootloader" :
626630 sel = SelectBootloader (['AUTO' , 'USB' , 'NETWORK' ], "Select bootloader type to flash." )
627631 ok , type = sel .wait ()
0 commit comments