diff -r ef415e4efd70 -r aaa5e0eacd4e eric6/MicroPython/PyBoardDevices.py --- a/eric6/MicroPython/PyBoardDevices.py Fri Feb 19 17:34:33 2021 +0100 +++ b/eric6/MicroPython/PyBoardDevices.py Sat Feb 20 11:52:49 2021 +0100 @@ -33,16 +33,19 @@ "Pyboard-Firmware-Update" ) - def __init__(self, microPythonWidget, parent=None): + def __init__(self, microPythonWidget, deviceType, parent=None): """ Constructor @param microPythonWidget reference to the main MicroPython widget @type MicroPythonWidget + @param deviceType device type assigned to this device interface + @type str @param parent reference to the parent object @type QObject """ - super(PyBoardDevice, self).__init__(microPythonWidget, parent) + super(PyBoardDevice, self).__init__(microPythonWidget, deviceType, + parent) self.__workspace = self.__findWorkspace() @@ -225,6 +228,9 @@ """ connected = self.microPython.isConnected() + act = menu.addAction(self.tr("Activate Bootloader"), + self.__activateBootloader) + act.setEnabled(connected) act = menu.addAction(self.tr("List DFU-capable Devices"), self.__listDfuCapableDevices) act.setEnabled(not connected) @@ -396,3 +402,16 @@ if res: dlg.exec() self.__showDfuDisableInstructions() + + @pyqtSlot() + def __activateBootloader(self): + """ + Private slot to activate the bootloader and disconnect. + """ + if self.microPython.isConnected(): + self.microPython.commandsInterface().execute([ + "import pyb", + "pyb.bootloader()", + ]) + # simulate pressing the disconnect button + self.microPython.on_connectButton_clicked()