src/eric7/MicroPython/Devices/STLinkDevices.py

Sun, 16 Mar 2025 12:53:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 16 Mar 2025 12:53:12 +0100
branch
eric7
changeset 11170
6d6199d668fb
parent 11167
a3f5af773bc7
child 11184
33a600dd86f4
permissions
-rw-r--r--

Added the Adafruit Feather nRF52840 to the list of known NRF52 boards and changed the list of known CircuitPython boards to be more explicit with respect to Adafruit boards (i.e. VID 0x239A).

9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
3 # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the device interface class for STM32 STLink boards.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12 from PyQt6.QtCore import QStandardPaths, QUrl, pyqtSlot
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtNetwork import QNetworkReply, QNetworkRequest
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from PyQt6.QtWidgets import QMenu
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
16 from eric7 import EricUtilities, Preferences
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 from eric7.EricWidgets import EricFileDialog, EricMessageBox
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from eric7.EricWidgets.EricApplication import ericApp
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from eric7.EricWidgets.EricProcessDialog import EricProcessDialog
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 from eric7.SystemUtilities import FileSystemUtilities
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 from ..MicroPythonWidget import HAS_QTCHART
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 from . import FirmwareGithubUrls
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 from .DeviceBase import BaseDevice
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 class STLinkDevice(BaseDevice):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
11167
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
29 Class implementing the device for STM32 STLink boards.
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 DeviceVolumeName = "NODE_"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 def __init__(self, microPythonWidget, deviceType, parent=None):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 Constructor
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param microPythonWidget reference to the main MicroPython widget
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type MicroPythonWidget
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param deviceType device type assigned to this device interface
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @param parent reference to the parent object
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @type QObject
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 super().__init__(microPythonWidget, deviceType, parent)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self._submitMode = "paste" # use 'paste' mode
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.__workspace = self.__findWorkspace()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__createSTLinkMenu()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 def setButtons(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 Public method to enable the supported action buttons.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 super().setButtons()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.microPython.setActionButtons(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 run=True, repl=True, files=True, chart=HAS_QTCHART
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 def forceInterrupt(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 Public method to determine the need for an interrupt when opening the
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 serial connection.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 @return flag indicating an interrupt is needed
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 @rtype bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 return False
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 def deviceName(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 Public method to get the name of the device.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @return name of the device
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 @rtype str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 return self.tr("STM32 STLink")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 def canStartRepl(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 Public method to determine, if a REPL can be started.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 @return tuple containing a flag indicating it is safe to start a REPL
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 and a reason why it cannot.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 @rtype tuple of (bool, str)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 return True, ""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def canStartPlotter(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 Public method to determine, if a Plotter can be started.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 @return tuple containing a flag indicating it is safe to start a
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 Plotter and a reason why it cannot.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @rtype tuple of (bool, str)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 return True, ""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 def canRunScript(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 Public method to determine, if a script can be executed.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @return tuple containing a flag indicating it is safe to start a
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 Plotter and a reason why it cannot.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @rtype tuple of (bool, str)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 return True, ""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 def runScript(self, script):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 Public method to run the given Python script.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 @param script script to be executed
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 @type str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 pythonScript = script.split("\n")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.sendCommands(pythonScript)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 def canStartFileManager(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 Public method to determine, if a File Manager can be started.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 @return tuple containing a flag indicating it is safe to start a
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 File Manager and a reason why it cannot.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 @rtype tuple of (bool, str)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 return True, ""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 def supportsLocalFileAccess(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 Public method to indicate file access via a local directory.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 @return flag indicating file access via local directory
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 @rtype bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 return self.__deviceVolumeMounted()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 def __deviceVolumeMounted(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 Private method to check, if the device volume is mounted.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 @return flag indicated a mounted device
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 @rtype bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 if self.__workspace and not os.path.exists(self.__workspace):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 self.__workspace = "" # reset
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 return self.DeviceVolumeName in self.getWorkspace(silent=True)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 def getWorkspace(self, silent=False):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 Public method to get the workspace directory.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 @param silent flag indicating silent operations
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 @type bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 @return workspace directory used for saving files
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 @rtype str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 if self.__workspace:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 # return cached entry
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 return self.__workspace
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 else:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.__workspace = self.__findWorkspace(silent=silent)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 return self.__workspace
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 def __findWorkspace(self, silent=False):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 Private method to find the workspace directory.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 @param silent flag indicating silent operations
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 @type bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 @return workspace directory used for saving files
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 @rtype str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 # Attempts to find the path on the filesystem that represents the
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 # plugged in PyBoard board.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 deviceDirectories = FileSystemUtilities.findVolume(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 self.DeviceVolumeName, findAll=True
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 if deviceDirectories:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 if len(deviceDirectories) == 1:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 return deviceDirectories[0]
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 else:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 return self.selectDeviceDirectory(deviceDirectories)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 else:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 # return the default workspace and give the user a warning (unless
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 # silent mode is selected)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 if not silent:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 EricMessageBox.warning(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 self.microPython,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self.tr("Workspace Directory"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.tr(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 "Python files for STLink boards can be edited in"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 " place, if the device volume is locally"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 " available. Such a volume was not found. In"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 " place editing will not be available."
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 ),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 return super().getWorkspace()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 def getDocumentationUrl(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 Public method to get the device documentation URL.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 @return documentation URL of the device
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 @rtype str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 return Preferences.getMicroPython("MicroPythonDocuUrl")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 def getFirmwareUrl(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 Public method to get the device firmware download URL.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 @return firmware download URL of the device
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 @rtype str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 return Preferences.getMicroPython("MicroPythonFirmwareUrl")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 def __createSTLinkMenu(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 Private method to create the STLink submenu.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 self.__stlinkMenu = QMenu(self.tr("STLink Functions"))
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.__showMpyAct = self.__stlinkMenu.addAction(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 self.tr("Show MicroPython Versions"), self.__showFirmwareVersions
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 self.__stlinkMenu.addSeparator()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 self.__stlinkInfoAct = self.__stlinkMenu.addAction(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 self.tr("Show STLink Device Information"), self.__showDeviceInfo
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 self.__stlinkMenu.addSeparator()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 self.__flashMpyAct = self.__stlinkMenu.addAction(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.tr("Flash MicroPython Firmware"), self.__flashMicroPython
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 self.__stlinkMenu.addSeparator()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.__resetAct = self.__stlinkMenu.addAction(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 self.tr("Reset Device"), self.__resetDevice
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 def addDeviceMenuEntries(self, menu):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 Public method to add device specific entries to the given menu.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 @param menu reference to the context menu
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 @type QMenu
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 connected = self.microPython.isConnected()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 linkConnected = self.microPython.isLinkConnected()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 self.__showMpyAct.setEnabled(connected)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 self.__stlinkInfoAct.setEnabled(not linkConnected)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 self.__flashMpyAct.setEnabled(not linkConnected)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 self.__resetAct.setEnabled(connected)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 menu.addMenu(self.__stlinkMenu)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 def hasFlashMenuEntry(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 Public method to check, if the device has its own flash menu entry.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 @return flag indicating a specific flash menu entry
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 @rtype bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 return True
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 def __stlinkToolAvailable(self, toolname):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 Private method to check the availability of the given STLink tool.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 Note: supported tools are st-info and st-flash
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 @param toolname name of the tool to be checked
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 @type str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 @return flag indicating the availability of the given STLink tool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 @rtype bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 @exception ValueError raised to indicate an illegal tool name
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 if toolname not in ("st-info", "st-flash"):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 raise ValueError("Illegal tool name given.")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 preferencesKey = "StInfoPath" if toolname == "st-info" else "StFlashPath"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289 available = False
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 program = Preferences.getMicroPython(preferencesKey)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 if not program:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 program = toolname
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 if FileSystemUtilities.isinpath(program):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 available = True
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 else:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 if FileSystemUtilities.isExecutable(program):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 available = True
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 if not available:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 msg = (
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 self.tr(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 """The STLink information tool <b>st-info</b> cannot be found or"""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 """ is not executable. Ensure it is in the search path or"""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 """ configure it on the MicroPython configuration page."""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 if toolname == "st-info"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 else self.tr(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 """The STLink firmware flashing tool <b>st-flash</b> cannot be"""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 """ found or is not executable. Ensure it is in the search path"""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 """ or configure it on the MicroPython configuration page."""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 EricMessageBox.critical(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 self.microPython,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 self.tr("{0} not available").format(toolname),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 msg,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 return available
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 def __stflashAvailable(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 Private method to check the availability of the 'st-flash' firmware flashing
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 tool.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 @return flag indicating the availability of the 'st-flash' firmware flashing
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 tool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 @rtype bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 return self.__stlinkToolAvailable("st-flash")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 def __stinfoAvailable(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 Private method to check the availability of the 'st-info' tool.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 @return flag indicating the availability of the 'st-info' tool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 @rtype bool
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 return self.__stlinkToolAvailable("st-flash")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 @pyqtSlot()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 def __flashMicroPython(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344 Private slot to flash a MicroPython firmware.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 if self.__stflashAvailable():
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 ok2continue = EricMessageBox.question(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 None,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 self.tr("Flash MicroPython Firmware"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 self.tr(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 """Ensure that only one STLink device is connected. Press OK"""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 """ to continue."""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 ),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 EricMessageBox.Cancel | EricMessageBox.Ok,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 EricMessageBox.Cancel,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 if ok2continue:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 program = Preferences.getMicroPython("StFlashPath")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 if not program:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 program = "st-flash"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 downloadsPath = QStandardPaths.standardLocations(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 QStandardPaths.StandardLocation.DownloadLocation
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 )[0]
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 firmware = EricFileDialog.getOpenFileName(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 self.microPython,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 self.tr("Flash MicroPython Firmware"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 downloadsPath,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 self.tr("MicroPython Firmware Files (*.hex *.bin);; All Files (*)"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 if firmware and os.path.exists(firmware):
9972
68ac01294544 Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9958
diff changeset
372 args = ["--connect-under-reset"]
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 if os.path.splitext(firmware)[-1].lower() == ".hex":
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 args.extend(["--format", "ihex", "write", firmware])
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 else:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 args.extend(["write", firmware, "0x08000000"])
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 dlg = EricProcessDialog(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 outputTitle=self.tr("'st-flash' Output"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 windowTitle=self.tr("Flash MicroPython Firmware"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
380 showInput=False,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 combinedOutput=True,
10933
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
382 monospacedFont=Preferences.getEditorOtherFonts(
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
383 "MonospacedFont"
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
384 ),
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
385 encoding=Preferences.getSystem("IOEncoding"),
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10933
diff changeset
386 parent=self.microPython,
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 res = dlg.startProcess(program, args)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 if res:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 dlg.exec()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392 @pyqtSlot()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
393 def __showDeviceInfo(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
395 Private slot to show some information about connected STLink devices.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
396 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
397 if self.__stinfoAvailable():
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
398 program = Preferences.getMicroPython("StInfoPath")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
399 if not program:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 program = "st-info"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
402 dlg = EricProcessDialog(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
403 self.tr("'st-info' Output"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 self.tr("STLink Device Information"),
10933
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
405 monospacedFont=Preferences.getEditorOtherFonts("MonospacedFont"),
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
406 encoding=Preferences.getSystem("IOEncoding"),
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10933
diff changeset
407 parent=self.microPython,
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
409 res = dlg.startProcess(program, ["--probe"])
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 if res:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 dlg.exec()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
412
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
413 @pyqtSlot()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 def __showFirmwareVersions(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 Private slot to show the firmware version of the connected device and the
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 available firmware version.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
419 if self.microPython.isConnected():
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
420 if self._deviceData["mpy_name"] != "micropython":
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
421 EricMessageBox.critical(
11034
7b8a21fd2d58 Extended the EricMessageBox module to determine a parent widget if none was given and extended the EricApplication class to store a reference to the main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
422 self.microPython,
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 self.tr("Show MicroPython Versions"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 self.tr(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 """The firmware of the connected device cannot be"""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 """ determined or the board does not run MicroPython."""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 """ Aborting..."""
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 ),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 else:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 ui = ericApp().getObject("UserInterface")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 request = QNetworkRequest(QUrl(FirmwareGithubUrls["micropython"]))
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 reply = ui.networkAccessManager().head(request)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
434 reply.finished.connect(lambda: self.__firmwareVersionResponse(reply))
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
436 @pyqtSlot(QNetworkReply)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
437 def __firmwareVersionResponse(self, reply):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
438 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 Private slot handling the response of the latest version request.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 @param reply reference to the reply object
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
442 @type QNetworkReply
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
444 latestUrl = reply.url().toString()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
445 tag = latestUrl.rsplit("/", 1)[-1]
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
446 while tag and not tag[0].isdecimal():
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
447 # get rid of leading non-decimal characters
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 tag = tag[1:]
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
449 latestVersion = EricUtilities.versionToTuple(tag)
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
450
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
451 if self._deviceData["mpy_version"] == "unknown":
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 currentVersionStr = self.tr("unknown")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 currentVersion = (0, 0, 0)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 else:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 currentVersionStr = self._deviceData["mpy_version"]
10806
2f6df822e3b9 Moved some functions to the EricUtilities package for consistency and adapted the code base accordingly.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
456 currentVersion = EricUtilities.versionToTuple(currentVersionStr)
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
458 msg = self.tr(
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 "<h4>MicroPython Version Information</h4>"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 "<table>"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461 "<tr><td>Installed:</td><td>{0}</td></tr>"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 "<tr><td>Available:</td><td>{1}</td></tr>"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 "</table>"
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 ).format(currentVersionStr, tag)
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
465 if currentVersion < latestVersion:
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 msg += self.tr("<p><b>Update available!</b></p>")
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468 EricMessageBox.information(
11034
7b8a21fd2d58 Extended the EricMessageBox module to determine a parent widget if none was given and extended the EricApplication class to store a reference to the main widget.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
469 self.microPython,
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 self.tr("MicroPython Version"),
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471 msg,
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 )
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
473
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
474 @pyqtSlot()
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
475 def __resetDevice(self):
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 Private slot to reset the connected device.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9972
diff changeset
479 if self.microPython.isConnected():
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9972
diff changeset
480 self.executeCommands(
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9972
diff changeset
481 "import machine\nmachine.reset()\n", mode=self._submitMode
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9972
diff changeset
482 )
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
483
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
485 def createDevice(microPythonWidget, deviceType, _vid, _pid, _boardName, _serialNumber):
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 Function to instantiate a MicroPython device object.
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 @param microPythonWidget reference to the main MicroPython widget
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 @type MicroPythonWidget
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491 @param deviceType device type assigned to this device interface
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
492 @type str
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
493 @param _vid vendor ID (unused)
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 @type int
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
495 @param _pid product ID (unused)
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
496 @type int
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
497 @param _boardName name of the board (unused)
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 @type str
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
499 @param _serialNumber serial number of the board (unused)
9958
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 @type str
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
501 @return reference to the instantiated device object
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
502 @rtype PyBoardDevice
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 """
a78b83d1062a MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 return STLinkDevice(microPythonWidget, deviceType)

eric ide

mercurial