src/eric7/MicroPython/Devices/STLinkDevices.py

Fri, 21 Mar 2025 18:01:35 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 21 Mar 2025 18:01:35 +0100
branch
eric7
changeset 11183
553b50b72f5b
parent 11167
a3f5af773bc7
child 11184
33a600dd86f4
permissions
-rw-r--r--

Fixed an issue in the MicroPython device base class determining the existence of a directory or file.

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