Wed, 15 Mar 2023 12:07:57 +0100
MicroPython
- added a menu entry to set a CircuitPython device into 'bootloader' mode
--- a/src/eric7/Documentation/Help/source.qhp Tue Mar 14 16:58:36 2023 +0100 +++ b/src/eric7/Documentation/Help/source.qhp Wed Mar 15 12:07:57 2023 +0100 @@ -2843,6 +2843,7 @@ <keyword name="CircuitPythonDevice" id="CircuitPythonDevice" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html#CircuitPythonDevice" /> <keyword name="CircuitPythonDevice (Constructor)" id="CircuitPythonDevice (Constructor)" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html#CircuitPythonDevice.__init__" /> <keyword name="CircuitPythonDevice.__aboutToShowLibraryMenu" id="CircuitPythonDevice.__aboutToShowLibraryMenu" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html#CircuitPythonDevice.__aboutToShowLibraryMenu" /> + <keyword name="CircuitPythonDevice.__activateBootloader" id="CircuitPythonDevice.__activateBootloader" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html#CircuitPythonDevice.__activateBootloader" /> <keyword name="CircuitPythonDevice.__cpyVersionResponse" id="CircuitPythonDevice.__cpyVersionResponse" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html#CircuitPythonDevice.__cpyVersionResponse" /> <keyword name="CircuitPythonDevice.__createCPyMenu" id="CircuitPythonDevice.__createCPyMenu" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html#CircuitPythonDevice.__createCPyMenu" /> <keyword name="CircuitPythonDevice.__createFlashMenus" id="CircuitPythonDevice.__createFlashMenus" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html#CircuitPythonDevice.__createFlashMenus" />
--- a/src/eric7/Documentation/Source/eric7.MicroPython.Devices.CircuitPythonDevices.html Tue Mar 14 16:58:36 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.Devices.CircuitPythonDevices.html Wed Mar 15 12:07:57 2023 +0100 @@ -67,6 +67,10 @@ <td>Private slot to populate the 'Library Management' menu.</td> </tr> <tr> +<td><a href="#CircuitPythonDevice.__activateBootloader">__activateBootloader</a></td> +<td>Private slot to switch the board into 'bootloader' mode.</td> +</tr> +<tr> <td><a href="#CircuitPythonDevice.__cpyVersionResponse">__cpyVersionResponse</a></td> <td>Private slot handling the response of the latest version request.</td> </tr> @@ -351,6 +355,13 @@ <p> Private slot to populate the 'Library Management' menu. </p> +<a NAME="CircuitPythonDevice.__activateBootloader" ID="CircuitPythonDevice.__activateBootloader"></a> +<h4>CircuitPythonDevice.__activateBootloader</h4> +<b>__activateBootloader</b>(<i></i>) + +<p> + Private slot to switch the board into 'bootloader' mode. +</p> <a NAME="CircuitPythonDevice.__cpyVersionResponse" ID="CircuitPythonDevice.__cpyVersionResponse"></a> <h4>CircuitPythonDevice.__cpyVersionResponse</h4> <b>__cpyVersionResponse</b>(<i>reply</i>)
--- a/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Tue Mar 14 16:58:36 2023 +0100 +++ b/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Wed Mar 15 12:07:57 2023 +0100 @@ -343,6 +343,9 @@ self.tr("Show CircuitPython Versions"), self.showCircuitPythonVersions ) self.__cpyMenu.addSeparator() + self.__bootloaderAct = self.__cpyMenu.addAction( + self.tr("Activate Bootloader"), self.__activateBootloader + ) self.__flashCpyAct = self.__cpyMenu.addMenu(self.__flashMenu) self.__cpyMenu.addSeparator() self.__cpyMenu.addMenu(self.__libraryMenu) @@ -405,6 +408,7 @@ self.__flashCpyAct.setEnabled(not linkConnected) self.__resetAct.setEnabled(connected) + self.__bootloaderAct.setEnabled(connected) menu.addMenu(self.__cpyMenu) @@ -464,6 +468,19 @@ dlg.exec() @pyqtSlot() + def __activateBootloader(self): + """ + Private slot to switch the board into 'bootloader' mode. + """ + if self.microPython.isConnected(): + self.microPython.deviceInterface().execute( + "import microcontroller as mc\n" + "mc.on_next_reset(mc.RunMode.BOOTLOADER)\n" + "mc.reset()\n", + mode=self._submitMode, + ) + + @pyqtSlot() def __showTeensyFlashInstructions(self): """ Private slot to show a message box because Teensy does not support @@ -1512,7 +1529,6 @@ os.remove(filename) return True, "" - # TODO: not implemented yet ################################################################## ## Methods below implement Bluetooth related methods