src/eric7/MicroPython/Devices/RP2040Devices.py

Tue, 14 Feb 2023 18:10:30 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 14 Feb 2023 18:10:30 +0100
branch
eric7
changeset 9765
6378da868bb0
parent 9763
52f982c08301
child 9772
06ef28082c4d
permissions
-rw-r--r--

Reorganized the MicroPython code even more.

8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
9653
e67609152c5e Updated copyright for 2023.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9496
diff changeset
3 # Copyright (c) 2021 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the device interface class for RP2040 based boards
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 (e.g. Raspberry Pi Pico).
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
11 from PyQt6.QtCore import QUrl, pyqtSlot
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
12 from PyQt6.QtNetwork import QNetworkRequest
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
13 from PyQt6.QtWidgets import QMenu
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
15 from eric7 import Globals, Preferences
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
16 from eric7.EricWidgets import EricMessageBox
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
17 from eric7.EricWidgets.EricApplication import ericApp
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
18
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
19 from ..MicroPythonWidget import HAS_QTCHART
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
20 from . import FirmwareGithubUrls
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
21 from .DeviceBase import BaseDevice
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
24 class RP2040Device(BaseDevice):
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 Class implementing the device for RP2040 based boards.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 def __init__(self, microPythonWidget, deviceType, parent=None):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @param microPythonWidget reference to the main MicroPython widget
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @type MicroPythonWidget
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 @param deviceType device type assigned to this device interface
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 @type str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param parent reference to the parent object
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @type QObject
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
40 super().__init__(microPythonWidget, deviceType, parent)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
41
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
42 self.__createRP2040Menu()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
43
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 def setButtons(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 Public method to enable the supported action buttons.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8122
diff changeset
48 super().setButtons()
9763
52f982c08301 Removed the 'Open' and 'Save' buttons from the MicroPython widget and made the repl and file manager start automatically upon connecting to the selected device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9756
diff changeset
49
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.microPython.setActionButtons(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
51 run=True, repl=True, files=True, chart=HAS_QTCHART
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
53
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 def forceInterrupt(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 Public method to determine the need for an interrupt when opening the
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 serial connection.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
58
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 @return flag indicating an interrupt is needed
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @rtype bool
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
63
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 def deviceName(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 Public method to get the name of the device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @return name of the device
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @rtype str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 return self.tr("RP2040")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
72
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 def canStartRepl(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 Public method to determine, if a REPL can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
76
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @return tuple containing a flag indicating it is safe to start a REPL
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 def canStartPlotter(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 Public method to determine, if a Plotter can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
86
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 @return tuple containing a flag indicating it is safe to start a
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 Plotter and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
92
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 def canRunScript(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 Public method to determine, if a script can be executed.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 @return tuple containing a flag indicating it is safe to start a
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Plotter and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
102
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 def runScript(self, script):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 Public method to run the given Python script.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
106
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @param script script to be executed
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @type str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 pythonScript = script.split("\n")
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.sendCommands(pythonScript)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 def canStartFileManager(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 Public method to determine, if a File Manager can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
116
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 @return tuple containing a flag indicating it is safe to start a
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 File Manager and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
122
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
123 def __createRP2040Menu(self):
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
124 """
9755
1a09700229e7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
125 Private method to create the RO2040 submenu.
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
126 """
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
127 self.__rp2040Menu = QMenu(self.tr("RP2040 Functions"))
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
128
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
129 self.__showMpyAct = self.__rp2040Menu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
130 self.tr("Show MicroPython Versions"), self.__showFirmwareVersions
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
131 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
132 self.__rp2040Menu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
133 self.__bootloaderAct = self.__rp2040Menu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
134 self.tr("Activate Bootloader"), self.__activateBootloader
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
135 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
136 self.__flashMpyAct = self.__rp2040Menu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
137 self.tr("Flash MicroPython Firmware"), self.__flashPython
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
138 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
139
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 def addDeviceMenuEntries(self, menu):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 Public method to add device specific entries to the given menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 @param menu reference to the context menu
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 @type QMenu
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 connected = self.microPython.isConnected()
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9748
diff changeset
148 linkConnected = self.microPython.isLinkConnected()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
150 self.__showMpyAct.setEnabled(connected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
151 self.__bootloaderAct.setEnabled(connected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
152 self.__flashMpyAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
153
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
154 menu.addMenu(self.__rp2040Menu)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
155
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 def hasFlashMenuEntry(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 Public method to check, if the device has its own flash menu entry.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 @return flag indicating a specific flash menu entry
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 @rtype bool
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 @pyqtSlot()
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 def __flashPython(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 Private slot to flash a MicroPython firmware to the device.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 """
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
170 from ..UF2FlashDialog import UF2FlashDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 dlg = UF2FlashDialog(boardType="rp2040")
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 def __activateBootloader(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 Private method to switch the board into 'bootloader' mode.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 if self.microPython.isConnected():
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
180 self.microPython.deviceInterface().execute(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
181 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
182 "import machine",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
183 "machine.bootloader()",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
184 ]
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
185 )
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 # simulate pressing the disconnect button
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 self.microPython.on_connectButton_clicked()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
188
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
189 @pyqtSlot()
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
190 def __showFirmwareVersions(self):
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
191 """
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
192 Private slot to show the firmware version of the connected device and the
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
193 available firmware version.
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
194 """
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
195 if self.microPython.isConnected():
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
196 if self._deviceData["mpy_name"] != "micropython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
197 EricMessageBox.critical(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
198 None,
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
199 self.tr("Show MicroPython Versions"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
200 self.tr(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
201 """The firmware of the connected device cannot be"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
202 """ determined or the board does not run MicroPython."""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
203 """ Aborting..."""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
204 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
205 )
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
206 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
207 if self._deviceData["mpy_variant"] == "Pimoroni":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
208 # MicroPython with Pimoroni add-on libraries
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
209 url = QUrl(FirmwareGithubUrls["pimoroni_pico"])
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
210 else:
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
211 url = QUrl(FirmwareGithubUrls["micropython"])
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
212 ui = ericApp().getObject("UserInterface")
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
213 request = QNetworkRequest(url)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
214 reply = ui.networkAccessManager().head(request)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
215 reply.finished.connect(lambda: self.__firmwareVersionResponse(reply))
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
216
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
217 def __firmwareVersionResponse(self, reply):
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
218 """
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
219 Private method handling the response of the latest version request.
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
220
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
221 @param reply reference to the reply object
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
222 @type QNetworkReply
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
223 """
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
224 latestUrl = reply.url().toString()
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
225 tag = latestUrl.rsplit("/", 1)[-1]
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
226 while tag and not tag[0].isdecimal():
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
227 # get rid of leading non-decimal characters
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
228 tag = tag[1:]
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
229 latestVersion = Globals.versionToTuple(tag)
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
230
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
231 if self._deviceData["mpy_version"] == "unknown":
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
232 currentVersionStr = self.tr("unknown")
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
233 currentVersion = (0, 0, 0)
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
234 else:
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
235 currentVersionStr = self._deviceData["mpy_version"]
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
236 currentVersion = Globals.versionToTuple(currentVersionStr)
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
237
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
238 msg = self.tr(
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
239 "<h4>MicroPython Version Information</h4>"
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
240 "<table>"
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
241 "<tr><td>Installed:</td><td>{0}</td><td></td></tr>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9748
diff changeset
242 "<tr><td>Available:</td><td>{1}</td><td>{2}</td></tr>"
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
243 "</table>"
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
244 ).format(
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
245 currentVersionStr,
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
246 tag,
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
247 self.tr("({0})").format(self._deviceData["mpy_variant"])
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
248 if self._deviceData["mpy_variant"]
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
249 else "",
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
250 )
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
251 if (
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
252 self._deviceData["mpy_variant"] not in ["Pimoroni"]
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
253 and currentVersion < latestVersion
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
254 ):
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
255 # cannot derive that info for 'Pimoroni' variant
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
256 msg += self.tr("<p><b>Update available!</b></p>")
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
257
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
258 EricMessageBox.information(
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
259 None,
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
260 self.tr("MicroPython Version"),
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
261 msg,
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
262 )
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
263
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 def getDocumentationUrl(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 Public method to get the device documentation URL.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
267
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 @return documentation URL of the device
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 @rtype str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 return Preferences.getMicroPython("MicroPythonDocuUrl")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
272
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 def getDownloadMenuEntries(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 Public method to retrieve the entries for the downloads menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
276
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 @return list of tuples with menu text and URL to be opened for each
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 entry
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 @rtype list of tuple of (str, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 return [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
283 self.tr("MicroPython Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
284 Preferences.getMicroPython("MicroPythonFirmwareUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
285 ),
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 ("<separator>", ""),
9748
df9520c864f2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9747
diff changeset
287 (self.tr("Pimoroni Pico Firmware"), FirmwareGithubUrls["pimoroni_pico"]),
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
288 ("<separator>", ""),
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
289 (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
290 self.tr("CircuitPython Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
291 Preferences.getMicroPython("CircuitPythonFirmwareUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
292 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
293 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
294 self.tr("CircuitPython Libraries"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
295 Preferences.getMicroPython("CircuitPythonLibrariesUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
296 ),
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 ]
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
298
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
299 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
300 ## time related methods below
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
301 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
302
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
303 def _getSetTimeCode(self):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
304 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
305 Protected method to get the device code to set the time.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
306
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
307 Note: This method must be implemented in the various device specific
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
308 subclasses.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
309
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
310 @return code to be executed on the connected device to set the time
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
311 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
312 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
313 # rtc_time[0] - year 4 digit
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
314 # rtc_time[1] - month 1..12
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
315 # rtc_time[2] - day 1..31
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
316 # rtc_time[3] - weekday 1..7 1=Monday
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
317 # rtc_time[4] - hour 0..23
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
318 # rtc_time[5] - minute 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
319 # rtc_time[6] - second 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
320 # rtc_time[7] - yearday 1..366
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
321 # rtc_time[8] - isdst 0, 1, or -1
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
322
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
323 # The machine.rtc.datetime() function takes the arguments in the order:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
324 # (year, month, day, weekday, hour, minute, second, subseconds)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
325 # __IGNORE_WARNING_M891__
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
326 # https://docs.micropython.org/en/latest/library/machine.RTC.html#machine-rtc
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
327 return """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
328 def set_time(rtc_time):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
329 import machine
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
330 rtc = machine.RTC()
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
331 rtc.datetime(rtc_time[:7] + (0,))
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
332 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
333
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
334
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
335 def createDevice(microPythonWidget, deviceType, vid, pid, boardName, serialNumber):
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
336 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
337 Function to instantiate a MicroPython device object.
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
338
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
339 @param microPythonWidget reference to the main MicroPython widget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
340 @type MicroPythonWidget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
341 @param deviceType device type assigned to this device interface
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
342 @type str
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
343 @param vid vendor ID
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
344 @type int
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
345 @param pid product ID
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
346 @type int
9738
4ae976ee5339 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
347 @param boardName name of the board
4ae976ee5339 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
348 @type str
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
349 @param serialNumber serial number of the board
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
350 @type str
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
351 @return reference to the instantiated device object
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
352 @rtype RP2040Device
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
353 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
354 return RP2040Device(microPythonWidget, deviceType)

eric ide

mercurial