src/eric7/MicroPython/Devices/MicrobitDevices.py

Sun, 23 Mar 2025 14:55:14 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 23 Mar 2025 14:55:14 +0100
branch
eric7
changeset 11186
c2d18aefef6b
parent 11177
f511038a0061
child 11189
289c7150ec4b
permissions
-rw-r--r--

Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.

7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a8fad276cbd5 Continued implementing the MicroPython support.
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) 2019 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
7549
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
7 Module implementing the device interface class for BBC micro:bit and
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
8 Calliope mini boards.
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
11 import ast
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
12 import contextlib
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
13 import os
7299
a22b87b46128 MicrobitDevices: modified the MicroPython flashing routine and the saving of scripts to the device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
14 import shutil
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
15
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
16 from PyQt6.QtCore import QStandardPaths, QUrl, pyqtSlot
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9803
diff changeset
17 from PyQt6.QtNetwork import QNetworkReply, QNetworkRequest
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
18 from PyQt6.QtWidgets import QMenu
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
19
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
20 from eric7 import EricUtilities, Preferences
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
21 from eric7.EricWidgets import EricFileDialog, EricMessageBox
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
22 from eric7.EricWidgets.EricApplication import ericApp
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
23 from eric7.SystemUtilities import FileSystemUtilities
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
24
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
25 from ..MicroPythonWidget import HAS_QTCHART
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
26 from . import FirmwareGithubUrls
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
27 from .DeviceBase import BaseDevice
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9752
diff changeset
30 class MicrobitDevice(BaseDevice):
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 """
7549
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
32 Class implementing the device for BBC micro:bit and Calliope mini boards.
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
35 def __init__(self, microPythonWidget, deviceType, serialNumber, parent=None):
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
38
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param microPythonWidget reference to the main MicroPython widget
7134
21d23ca51680 Renamed "MicroPythonReplWidget" to "MicroPythonWidget".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7126
diff changeset
40 @type MicroPythonWidget
7549
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
41 @param deviceType type of the device
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
42 @type str
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
43 @param serialNumber serial number of the board
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
44 @type str
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @param parent reference to the parent object
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 @type QObject
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48 super().__init__(microPythonWidget, deviceType, parent)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
49
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
50 self.__boardId = 0 # illegal ID
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
51 if serialNumber:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
52 with contextlib.suppress(ValueError):
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
53 self.__boardId = int(serialNumber[:4], 16)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
54
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
55 self.__createMicrobitMenu()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
56
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
57 self.__bleAddressType = {
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
58 0: self.tr("Public"),
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
59 1: self.tr("Random Static"),
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
60 2: self.tr("Random Private Resolvable"),
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
61 3: self.tr("Random Private Non-Resolvable"),
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
62 }
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
63
9803
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
64 def setConnected(self, connected):
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
65 """
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
66 Public method to set the connection state.
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
67
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
68 Note: This method can be overwritten to perform actions upon connect
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
69 or disconnect of the device.
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
70
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
71 @param connected connection state
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
72 @type bool
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
73 """
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
74 super().setConnected(connected)
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
75
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
76 if self._deviceData:
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
77 self._deviceData["local_mip"] = False
9979
dbafba79461d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
78
9803
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
79 if self.hasCircuitPython():
9827
21803aa6c3e2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
80 self._submitMode = "paste"
9803
2ab3de60b51c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
81
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 def setButtons(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 Public method to enable the supported action buttons.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
86 super().setButtons()
9763
52f982c08301 Removed the 'Open' and 'Save' buttons from the MicroPython widget and made the repl and file manager start automatically upon connecting to the selected device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9756
diff changeset
87
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.microPython.setActionButtons(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89 run=True, repl=True, files=True, chart=HAS_QTCHART
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
90 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def forceInterrupt(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 Public method to determine the need for an interrupt when opening the
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 serial connection.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
96
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 @return flag indicating an interrupt is needed
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 @rtype bool
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
101
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
102 def deviceName(self):
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
103 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
104 Public method to get the name of the device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
105
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
106 @return name of the device
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
107 @rtype str
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
108 """
8117
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
109 if self.getDeviceType() == "bbc_microbit":
7551
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
110 # BBC micro:bit
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
111 return self.tr("BBC micro:bit")
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
112 else:
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
113 # Calliope mini
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
114 return self.tr("Calliope mini")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 def canStartRepl(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 Public method to determine, if a REPL can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @return tuple containing a flag indicating it is safe to start a REPL
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 and a reason why it cannot.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 @rtype tuple of (bool, str)
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
7100
c4d9c28ebcd8 Devices.py files: removed some methods no longer needed after the recent improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
124 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
125
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 def canStartPlotter(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 Public method to determine, if a Plotter can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
129
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 @return tuple containing a flag indicating it is safe to start a
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 Plotter and a reason why it cannot.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 @rtype tuple of (bool, str)
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 """
7100
c4d9c28ebcd8 Devices.py files: removed some methods no longer needed after the recent improvements.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7082
diff changeset
134 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
135
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
136 def canRunScript(self):
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
137 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
138 Public method to determine, if a script can be executed.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
139
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
140 @return tuple containing a flag indicating it is safe to start a
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
141 Plotter and a reason why it cannot.
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
142 @rtype tuple of (bool, str)
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
143 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
144 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
146 def runScript(self, script):
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
147 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
148 Public method to run the given Python script.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
149
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
150 @param script script to be executed
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
151 @type str
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
152 """
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
153 pythonScript = script.split("\n")
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
154 self.sendCommands(pythonScript)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
155
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 def canStartFileManager(self):
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 """
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 Public method to determine, if a File Manager can be started.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
159
7059
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 @return tuple containing a flag indicating it is safe to start a
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 File Manager and a reason why it cannot.
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 @rtype tuple of (bool, str)
a8fad276cbd5 Continued implementing the MicroPython support.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 """
7126
376deb7fefe7 microbit: added the minimal filesystem commands which are supported by the BBC micro:bit.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7123
diff changeset
164 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
165
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
166 def hasTimeCommands(self):
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
167 """
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
168 Public method to check, if the device supports time commands.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
170 The default returns True.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
172 @return flag indicating support for time commands
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
173 @rtype bool
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
174 """
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
175 if self.microPython.isConnected() and self.hasCircuitPython():
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
176 return True
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
177
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
178 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
180 def __isMicroBitV1(self):
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
181 """
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
182 Private method to check, if the device is a BBC micro:bit v1.
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
183
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
184 @return falg indicating a BBC micro:bit v1
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
185 @rtype bool
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
186 """
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
187 return self.__boardId in (0x9900, 0x9901)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
188
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
189 def __isMicroBitV2(self):
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
190 """
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
191 Private method to check, if the device is a BBC micro:bit v2.
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
192
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
193 @return falg indicating a BBC micro:bit v2
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
194 @rtype bool
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
195 """
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
196 return self.__boardId in (0x9903, 0x9904, 0x9905, 0x9906)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
197
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
198 def __isCalliope(self):
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
199 """
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
200 Private method to check, if the device is a Calliope mini.
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
201
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
202 @return flag indicating a Calliope mini
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
203 @rtype bool
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
204 """
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
205 return self.__boardId in (0x12A0,)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
206
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
207 def __createMicrobitMenu(self):
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
208 """
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
209 Private method to create the microbit submenu.
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
210 """
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
211 self.__microbitMenu = QMenu(self.tr("BBC micro:bit/Calliope Functions"))
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
212
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
213 self.__showMpyAct = self.__microbitMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
214 self.tr("Show MicroPython Versions"), self.__showFirmwareVersions
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
215 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
216 self.__microbitMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
217 self.__flashMpyAct = self.__microbitMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
218 self.tr("Flash MicroPython"), self.__flashMicroPython
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
219 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
220 self.__flashDAPLinkAct = self.__microbitMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
221 self.tr("Flash Firmware"), lambda: self.__flashMicroPython(firmware=True)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
222 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
223 self.__microbitMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
224 self.__saveMainScriptAct = self.__microbitMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
225 self.tr("Save Script as 'main.py'"), self.__saveMain
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
226 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
227 self.__saveMainScriptAct.setToolTip(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
228 self.tr("Save the current script as 'main.py' on the connected device")
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
229 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
230 self.__microbitMenu.addSeparator()
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
231 self.__resetAct = self.__microbitMenu.addAction(
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
232 self.tr("Reset {0}").format(self.deviceName()), self.__resetDevice
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
233 )
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
234
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
235 def addDeviceMenuEntries(self, menu):
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
236 """
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
237 Public method to add device specific entries to the given menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
238
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
239 @param menu reference to the context menu
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
240 @type QMenu
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
241 """
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
242 connected = self.microPython.isConnected()
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
243 linkConnected = self.microPython.isLinkConnected()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
245 aw = ericApp().getObject("ViewManager").activeWindow()
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
246 canSaveMain = (
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
247 aw is not None
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
248 and (aw.isPyFile() or aw.isMicroPythonFile())
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
249 and bool(aw.text().strip())
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
250 )
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
251
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
252 self.__showMpyAct.setEnabled(connected and self.getDeviceType() != "calliope")
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
253 self.__flashMpyAct.setEnabled(not linkConnected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
254 self.__flashDAPLinkAct.setEnabled(not linkConnected)
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
255 self.__saveMainScriptAct.setEnabled(connected and canSaveMain)
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
256 self.__resetAct.setEnabled(connected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
257
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
258 menu.addMenu(self.__microbitMenu)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
259
8096
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8091
diff changeset
260 def hasFlashMenuEntry(self):
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8091
diff changeset
261 """
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8091
diff changeset
262 Public method to check, if the device has its own flash menu entry.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
263
8096
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8091
diff changeset
264 @return flag indicating a specific flash menu entry
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8091
diff changeset
265 @rtype bool
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8091
diff changeset
266 """
5425a9072300 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8091
diff changeset
267 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
268
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
269 @pyqtSlot()
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
270 def __flashMicroPython(self, firmware=False):
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
271 """
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
272 Private slot to flash MicroPython or the DAPLink firmware to the
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
273 device.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
274
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
275 @param firmware flag indicating to flash the DAPLink firmware
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
276 @type bool
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
277 """
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
278 # Attempts to find the path on the file system that represents the
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
279 # plugged in micro:bit board. To flash the DAPLink firmware, it must be
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
280 # in maintenance mode, for MicroPython in standard mode.
8117
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
281 if self.getDeviceType() == "bbc_microbit":
7552
b62e73df71dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7551
diff changeset
282 # BBC micro:bit
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
283 if firmware:
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
284 deviceDirectories = FileSystemUtilities.findVolume(
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
285 "MAINTENANCE", findAll=True, markerFile="DETAILS.TXT"
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
286 )
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
287 else:
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
288 deviceDirectories = FileSystemUtilities.findVolume(
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
289 "MICROBIT", findAll=True, markerFile="DETAILS.TXT"
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
290 )
7552
b62e73df71dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7551
diff changeset
291 else:
b62e73df71dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7551
diff changeset
292 # Calliope mini
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
293 if firmware:
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
294 deviceDirectories = FileSystemUtilities.findVolume(
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
295 "MAINTENANCE", findAll=True, markerFile="DETAILS.TXT"
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9576
diff changeset
296 )
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
297 else:
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
298 deviceDirectories = FileSystemUtilities.findVolume(
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
299 "MINI", findAll=True, markerFile="DETAILS.TXT"
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
300 )
8062
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8051
diff changeset
301 if len(deviceDirectories) == 0:
8117
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
302 if self.getDeviceType() == "bbc_microbit":
7551
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
303 # BBC micro:bit is not ready or not mounted
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
304 if firmware:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
305 EricMessageBox.critical(
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
306 self.microPython,
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
307 self.tr("Flash MicroPython/Firmware"),
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
308 self.tr(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
309 "<p>The BBC micro:bit is not ready for flashing"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
310 " the DAPLink firmware. Follow these"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
311 " instructions. </p>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
312 "<ul>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
313 "<li>unplug USB cable and any batteries</li>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
314 "<li>keep RESET button pressed and plug USB cable"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
315 " back in</li>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
316 "<li>a drive called MAINTENANCE should be"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
317 " available</li>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
318 "</ul>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
319 "<p>See the "
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
320 '<a href="https://microbit.org/guide/firmware/">'
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
321 "micro:bit web site</a> for details.</p>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
322 ),
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
323 )
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
324 else:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
325 EricMessageBox.critical(
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
326 self.microPython,
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
327 self.tr("Flash MicroPython/Firmware"),
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
328 self.tr(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
329 "<p>The BBC micro:bit is not ready for flashing"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
330 " the MicroPython firmware. Please make sure,"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
331 " that a drive called MICROBIT is available."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
332 "</p>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
333 ),
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
334 )
7551
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
335 else:
b159c55ea6dd MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7549
diff changeset
336 # Calliope mini is not ready or not mounted
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
337 if firmware:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
338 EricMessageBox.critical(
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
339 self.microPython,
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
340 self.tr("Flash MicroPython/Firmware"),
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
341 self.tr(
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
342 '<p>The "Calliope mini" is not ready for flashing'
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
343 " the DAPLink firmware. Follow these"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
344 " instructions. </p>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
345 "<ul>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346 "<li>unplug USB cable and any batteries</li>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347 "<li>keep RESET button pressed an plug USB cable"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348 " back in</li>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349 "<li>a drive called MAINTENANCE should be"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350 " available</li>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 "</ul>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 ),
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
353 )
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
354 else:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
355 EricMessageBox.critical(
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
356 self.microPython,
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
357 self.tr("Flash MicroPython/Firmware"),
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
358 self.tr(
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
359 '<p>The "Calliope mini" is not ready for flashing'
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
360 " the MicroPython firmware. Please make sure,"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361 " that a drive called MINI is available."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 "</p>"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363 ),
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
364 )
8062
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8051
diff changeset
365 elif len(deviceDirectories) == 1:
7299
a22b87b46128 MicrobitDevices: modified the MicroPython flashing routine and the saving of scripts to the device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
366 downloadsPath = QStandardPaths.standardLocations(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367 QStandardPaths.StandardLocation.DownloadLocation
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368 )[0]
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
369 firmware = EricFileDialog.getOpenFileName(
7173
f611c3b7313f EspDevices, MicrobitDevices: fixed a few omissions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7161
diff changeset
370 self.microPython,
8032
76375aa6bc04 Corrected the support code for the "BBC micro:bit" MicroPython device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
371 self.tr("Flash MicroPython/Firmware"),
7299
a22b87b46128 MicrobitDevices: modified the MicroPython flashing routine and the saving of scripts to the device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
372 downloadsPath,
9576
be9f8e7e42e0 Corrected some 'wrong' string quotes caused by the Black line merging.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9496
diff changeset
373 self.tr("MicroPython/Firmware Files (*.hex *.bin);;All Files (*)"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374 )
7299
a22b87b46128 MicrobitDevices: modified the MicroPython flashing routine and the saving of scripts to the device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
375 if firmware and os.path.exists(firmware):
8062
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8051
diff changeset
376 shutil.copy2(firmware, deviceDirectories[0])
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8051
diff changeset
377 else:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
378 EricMessageBox.warning(
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: 10806
diff changeset
379 self.microPython,
8062
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8051
diff changeset
380 self.tr("Flash MicroPython/Firmware"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
382 "There are multiple devices ready for flashing."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
383 " Please make sure, that only one device is prepared."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384 ),
8062
8dc5acb30a8b MicroPython: implemented code to deal with multiple devices attached to the computer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8051
diff changeset
385 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
386
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
387 @pyqtSlot()
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
388 def __showFirmwareVersions(self):
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
389 """
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
390 Private slot to show the firmware version of the connected device and the
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
391 available firmware version.
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
392 """
9804
b7e200d35be9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9766
diff changeset
393 if self.microPython.isConnected() and self.checkDeviceData(quiet=False):
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
394 if self._deviceData["mpy_name"] not in ("micropython", "circuitpython"):
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
395 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: 10806
diff changeset
396 self.microPython,
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
397 self.tr("Show MicroPython Versions"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
398 self.tr(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
399 """The firmware of the connected device cannot be"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
400 """ determined or the board does not run MicroPython"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
401 """ or CircuitPython. Aborting..."""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
402 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
403 )
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
404 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
405 if self.getDeviceType() == "bbc_microbit":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
406 if self._deviceData["mpy_name"] == "micropython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
407 if self.__isMicroBitV1():
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
408 url = QUrl(FirmwareGithubUrls["microbit_v1"])
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
409 elif self.__isMicroBitV2():
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
410 url = QUrl(FirmwareGithubUrls["microbit_v2"])
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
411 else:
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
412 EricMessageBox.critical(
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
413 None,
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
414 self.tr("Show MicroPython Versions"),
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
415 self.tr(
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
416 """<p>The BBC micro:bit generation cannot be"""
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
417 """ determined. Aborting...</p>"""
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
418 ),
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
419 )
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
420 return
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
421 elif self._deviceData["mpy_name"] == "circuitpython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
422 url = QUrl(FirmwareGithubUrls["circuitpython"])
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
423 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
424 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: 10806
diff changeset
425 self.microPython,
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
426 self.tr("Show MicroPython Versions"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
427 self.tr(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
428 """<p>The firmware URL for the device type <b>{0}</b>"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
429 """ is not known. Aborting...</p>"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
430 ).format(self.getDeviceType()),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
431 )
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
432 return
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
433
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
434 ui = ericApp().getObject("UserInterface")
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
435 request = QNetworkRequest(url)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
436 reply = ui.networkAccessManager().head(request)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
437 reply.finished.connect(lambda: self.__firmwareVersionResponse(reply))
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
438
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9803
diff changeset
439 @pyqtSlot(QNetworkReply)
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
440 def __firmwareVersionResponse(self, reply):
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
441 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9803
diff changeset
442 Private slot handling the response of the latest version request.
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
443
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
444 @param reply reference to the reply object
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
445 @type QNetworkReply
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
446 """
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
447 latestUrl = reply.url().toString()
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
448 tag = latestUrl.rsplit("/", 1)[-1]
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
449 while tag and not tag[0].isdecimal():
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
450 # get rid of leading non-decimal characters
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
451 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
452 latestVersion = EricUtilities.versionToTuple(tag)
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
453
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
454 if self._deviceData["release"] == "unknown":
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
455 currentVersionStr = self.tr("unknown")
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
456 currentVersion = (0, 0, 0)
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
457 else:
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
458 currentVersionStr = self._deviceData["release"]
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
459 currentVersion = EricUtilities.versionToTuple(currentVersionStr)
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
460
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
461 if self._deviceData["mpy_name"] == "circuitpython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
462 kind = "CircuitPython"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
463 microbitVersion = "2" # only v2 device can run CircuitPython
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
464 elif self._deviceData["mpy_name"] == "micropython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
465 kind = "MicroPython"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
466 if self.__isMicroBitV1():
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
467 microbitVersion = "1"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
468 elif self.__isMicroBitV2():
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
469 microbitVersion = "2"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
470 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
471 kind = self.tr("Firmware")
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
472 microbitVersion = "?"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
473
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
474 msg = self.tr(
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
475 "<h4>{0} Version Information<br/>"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
476 "(BBC micro:bit v{1})</h4>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
477 "<table>"
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
478 "<tr><td>Installed:</td><td>{2}</td></tr>"
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
479 "<tr><td>Available:</td><td>{3}</td></tr>"
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
480 "</table>"
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
481 ).format(kind, microbitVersion, currentVersionStr, tag)
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
482 if currentVersion < latestVersion:
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
483 msg += self.tr("<p><b>Update available!</b></p>")
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
484
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
485 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: 10806
diff changeset
486 self.microPython,
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
487 self.tr("{0} Version").format(kind),
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
488 msg,
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
489 )
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
490
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
491 @pyqtSlot()
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
492 def __saveMain(self):
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
493 """
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
494 Private slot to copy the current script as 'main.py' onto the
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
495 connected device.
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
496 """
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
497 aw = ericApp().getObject("ViewManager").activeWindow()
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
498 if aw:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
499 title = self.tr("Save Script as 'main.py'")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
500
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
501 if not (aw.isPyFile() or aw.isMicroPythonFile()):
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
502 yes = EricMessageBox.yesNo(
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
503 self.microPython,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
504 title,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
505 self.tr(
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
506 """The current editor does not contain a Python"""
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
507 """ script. Write it anyway?"""
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
508 ),
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
509 )
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
510 if not yes:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
511 return
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
513 script = aw.text().strip()
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
514 if not script:
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
515 EricMessageBox.warning(
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
516 self.microPython,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
517 title,
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
518 self.tr("""The script is empty. Aborting."""),
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
519 )
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
520 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
521
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
522 self.putData("main.py", script.encode("utf-8"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
523
10512
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
524 # reset the device
b7292f2691f9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
525 self.__resetDevice()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
526
7123
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
527 @pyqtSlot()
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
528 def __resetDevice(self):
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
529 """
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
530 Private slot to reset the connected device.
94948e2aa0a5 Implemented the support for the 'BBC micro:bit' device.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7114
diff changeset
531 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
532 if self.microPython.isConnected():
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
533 if self.getDeviceType() == "bbc_microbit":
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
534 # BBC micro:bit
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
535 self.executeCommands(
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
536 "import microbit\nmicrobit.reset()\n", mode=self._submitMode
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
537 )
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
538 else:
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
539 # Calliope mini
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
540 self.executeCommands(
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
541 "import calliope_mini\ncalliope_mini.reset()\n",
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
542 mode=self._submitMode,
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
543 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
544
7161
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
545 def getDocumentationUrl(self):
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
546 """
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
547 Public method to get the device documentation URL.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
548
7161
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
549 @return documentation URL of the device
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
550 @rtype str
728018c32b09 MicroPythonWidget: added actions to show the device documentation and to open the configuration page to the hamburger menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7134
diff changeset
551 """
8117
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
552 if self.getDeviceType() == "bbc_microbit":
7549
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
553 # BBC micro:bit
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
554 if self._deviceData and self._deviceData["mpy_name"] == "circuitpython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
555 return Preferences.getMicroPython("CircuitPythonDocuUrl")
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
556 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
557 return Preferences.getMicroPython("MicrobitDocuUrl")
7549
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
558 else:
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
559 # Calliope mini
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
560 return Preferences.getMicroPython("CalliopeDocuUrl")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
561
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
562 def getDownloadMenuEntries(self):
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7299
diff changeset
563 """
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
564 Public method to retrieve the entries for the downloads menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
565
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
566 @return list of tuples with menu text and URL to be opened for each
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
567 entry
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
568 @rtype list of tuple of (str, str)
7328
e2d85ef3fadb MicroPython:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7299
diff changeset
569 """
8117
aaa5e0eacd4e MicroPython: changed the logic to synchronize the time because some devices don't implement long integer and failed defining the 'set_time()' function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8096
diff changeset
570 if self.getDeviceType() == "bbc_microbit":
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
571 if self.__isMicroBitV1():
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
572 return [
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
573 (
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
574 self.tr("MicroPython Firmware for BBC micro:bit V1"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
575 Preferences.getMicroPython("MicrobitMicroPythonUrl"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
576 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
577 (
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
578 self.tr("DAPLink Firmware"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
579 Preferences.getMicroPython("MicrobitFirmwareUrl"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
580 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
581 ]
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
582 elif self.__isMicroBitV2():
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
583 return [
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
584 (
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
585 self.tr("MicroPython Firmware for BBC micro:bit V2"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
586 Preferences.getMicroPython("MicrobitV2MicroPythonUrl"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
587 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
588 (
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
589 self.tr("CircuitPython Firmware for BBC micro:bit V2"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
590 "https://circuitpython.org/board/microbit_v2/",
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
591 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
592 (
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
593 self.tr("DAPLink Firmware"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
594 Preferences.getMicroPython("MicrobitFirmwareUrl"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
595 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
596 ]
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
597 else:
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
598 return []
7549
fcfbb9e94471 MicroPython: continued implementing support for the "Calliope mini".
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7548
diff changeset
599 else:
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
600 return [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
601 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
602 self.tr("MicroPython Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
603 Preferences.getMicroPython("CalliopeMicroPythonUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
604 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
605 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
606 self.tr("DAPLink Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
607 Preferences.getMicroPython("CalliopeDAPLinkUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
608 ),
8051
b78279548993 MicroPython: changed the handling of the download stuff and corrected/extended the Calliope mini path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8038
diff changeset
609 ]
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
610
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
611 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
612 ## Methods below implement the file system commands
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
613 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
614
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
615 def ls(self, dirname=""):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
616 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
617 Public method to get a directory listing of the connected device.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
618
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
619 @param dirname name of the directory to be listed
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
620 @type str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
621 @return tuple containg the directory listing
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
622 @rtype tuple of str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
623 @exception OSError raised to indicate an issue with the device
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
624 """
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
625 if self.hasCircuitPython():
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
626 return super().ls(dirname=dirname)
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
627 else:
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
628 # BBC micro:bit with MicroPython does not support directories
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
629 command = """
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
630 import os as __os_
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
631 print(__os_.listdir())
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
632 del __os_
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
633 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
634 out, err = self.executeCommands(command, mode=self._submitMode)
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
635 if err:
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
636 raise OSError(self._shortError(err))
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
637 return ast.literal_eval(out.decode("utf-8"))
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
638
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
639 def lls(self, dirname="", fullstat=False, showHidden=False):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
640 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
641 Public method to get a long directory listing of the connected device
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
642 including meta data.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
643
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
644 @param dirname name of the directory to be listed
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
645 @type str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
646 @param fullstat flag indicating to return the full stat() tuple
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
647 @type bool
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
648 @param showHidden flag indicating to show hidden files as well
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
649 @type bool
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
650 @return list containing the directory listing with tuple entries of
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
651 the name and and a tuple of mode, size and time (if fullstat is
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
652 false) or the complete stat() tuple. 'None' is returned in case the
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
653 directory doesn't exist.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
654 @rtype tuple of (str, tuple)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
655 @exception OSError raised to indicate an issue with the device
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
656 """
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
657 if self.hasCircuitPython() or self.supportsDirectories():
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
658 return super().lls(
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
659 dirname=dirname, fullstat=fullstat, showHidden=showHidden
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
660 )
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
661 else:
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
662 # BBC micro:bit with old MicroPython does not support directories
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
663 command = """
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
664 import os as __os_
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
665
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
666 def is_visible(filename, showHidden):
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
667 return showHidden or (filename[0] != '.' and filename[-1] != '~')
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
668
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
669 def stat(filename):
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
670 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
671 return __os_.stat(filename)
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
672 except AttributeError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
673 size = __os_.size(filename)
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
674 return (0, 0, 0, 0, 0, 0, size, 0, 0, 0)
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
675
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
676 def listdir_stat(showHidden):
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
677 files = __os_.listdir()
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
678 return list((f, stat(f)) for f in files if is_visible(f,showHidden))
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
679
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
680 print(listdir_stat({0}))
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
681 del __os_, stat, listdir_stat, is_visible
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
682 """.format(
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
683 showHidden
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
684 )
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
685 out, err = self.executeCommands(command, mode=self._submitMode)
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
686 if err:
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
687 raise OSError(self._shortError(err))
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
688 fileslist = ast.literal_eval(out.decode("utf-8"))
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
689 if fileslist is None:
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
690 return None
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
691 else:
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
692 if fullstat:
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
693 return fileslist
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
694 else:
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
695 return [(f, (s[0], s[6], s[8])) for f, s in fileslist]
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
696
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
697 def pwd(self):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
698 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
699 Public method to get the current directory of the connected device.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
700
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
701 @return current directory
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
702 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
703 """
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
704 if self.hasCircuitPython():
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
705 return super().pwd()
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
706 else:
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
707 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
708 return super().pwd()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
709 except OSError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
710 # BBC micro:bit with old MicroPython does not support directories
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
711 return ""
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
712
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
713 def rm(self, filename):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
714 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
715 Public method to remove a file from the connected device.
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
716
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
717 @param filename name of the file to be removed
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
718 @type str
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
719 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
720 if filename.startswith("/") and not self.supportsDirectories():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
721 filename = filename[1:]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
722 super().rm(filename)
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
723
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
724 def putData(self, deviceFileName, content):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
725 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
726 Public method to write the given data to the connected device.
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
727
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
728 @param deviceFileName name of the file to write to
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
729 @type str
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
730 @param content data to write
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
731 @type bytes
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
732 @return flag indicating success
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
733 @rtype bool
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
734 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
735 if deviceFileName.startswith("/") and not self.supportsDirectories():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
736 deviceFileName = deviceFileName[1:]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
737 return super().putData(deviceFileName, content)
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
738
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
739 def getData(self, deviceFileName):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
740 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
741 Public method to read data from the connected device.
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
742
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
743 @param deviceFileName name of the file to read from
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
744 @type str
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
745 @return data read from the device
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
746 @rtype bytes
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
747 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
748 if deviceFileName.startswith("/") and not self.supportsDirectories():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
749 deviceFileName = deviceFileName[1:]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
750 return super().getData(deviceFileName)
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
751
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
752 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
753 ## time related methods below
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
754 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
755
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
756 def _getSetTimeCode(self):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
757 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
758 Protected method to get the device code to set the time.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
759
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
760 Note: This method must be implemented in the various device specific
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
761 subclasses.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
762
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
763 @return code to be executed on the connected device to set the time
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
764 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
765 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
766 # rtc_time[0] - year 4 digit
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
767 # rtc_time[1] - month 1..12
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
768 # rtc_time[2] - day 1..31
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
769 # rtc_time[3] - weekday 1..7 1=Monday
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
770 # rtc_time[4] - hour 0..23
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
771 # rtc_time[5] - minute 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
772 # rtc_time[6] - second 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
773 # rtc_time[7] - yearday 1..366
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
774 # rtc_time[8] - isdst 0, 1, or -1
9766
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
775 if self.hasCircuitPython():
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
776 return super()._getSetTimeCode()
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
777 else:
f0e22f3a5878 Fixed a few issue introduced during the recent changes to the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
778 return ""
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
779
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
780 ##################################################################
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
781 ## Methods below implement Bluetooth related methods
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9864
diff changeset
782 ##
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
783 ## Note: These functions are only available on BBC micro:bit v2
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
784 ## with CircuitPython firmware loaded. This is handled
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
785 ## through the 'hasBluetooth()' method.
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
786 ##
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
787 ## The Bluetooth related code below is a copy of the one found in
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
788 ## the CircuitPythonDevices.py module with modifications to cope
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
789 ## with the limited set of available modules (e.g. no binascii
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
790 ## or json).
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
791 ##################################################################
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
792
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
793 def hasBluetooth(self):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
794 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
795 Public method to check the availability of Bluetooth.
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
796
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
797 @return flag indicating the availability of Bluetooth
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
798 @rtype bool
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
799 @exception OSError raised to indicate an issue with the device
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
800 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
801 if not self.hasCircuitPython():
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
802 return False
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
803
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
804 command = """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
805 def has_bt():
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
806 try:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
807 import _bleio
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
808 if hasattr(_bleio, 'adapter'):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
809 return True
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
810 except ImportError:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
811 pass
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
812
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
813 return False
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
814
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
815 print(has_bt())
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
816 del has_bt
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
817 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
818 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
819 if err:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
820 raise OSError(self._shortError(err))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
821 return out.strip() == b"True"
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
822
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
823 def getBluetoothStatus(self):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
824 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
825 Public method to get Bluetooth status data of the connected board.
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
826
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
827 @return list of tuples containing the translated status data label and
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
828 the associated value
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
829 @rtype list of tuples of (str, str)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
830 @exception OSError raised to indicate an issue with the device
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
831 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
832 command = """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
833 def ble_status():
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
834 import _bleio
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
835
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
836 def address2str(address):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
837 return ':'.join('{0:02x}'.format(x) for x in address)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
838
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
839 a = _bleio.adapter
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
840
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
841 ble_enabled = a.enabled
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
842 if not ble_enabled:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
843 a.enabled = True
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
844
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
845 res = {
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
846 'active': ble_enabled,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
847 'mac': address2str(bytes(reversed(a.address.address_bytes))),
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
848 'addr_type': a.address.type,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
849 'name': a.name,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
850 'advertising': a.advertising,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
851 'connected': a.connected,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
852 }
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
853
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
854 if not ble_enabled:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
855 a.enabled = False
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
856
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
857 print(res)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
858
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
859 ble_status()
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
860 del ble_status
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
861 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
862 out, err = self.executeCommands(command, mode=self._submitMode)
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
863 if err:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
864 raise OSError(self._shortError(err))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
865
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
866 status = []
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
867 bleStatus = ast.literal_eval(out.decode("utf-8"))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
868 status.append((self.tr("Active"), self.bool2str(bleStatus["active"])))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
869 status.append((self.tr("Name"), bleStatus["name"]))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
870 status.append((self.tr("MAC-Address"), bleStatus["mac"]))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
871 status.append(
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
872 (self.tr("Address Type"), self.__bleAddressType[bleStatus["addr_type"]])
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
873 )
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
874 status.append((self.tr("Connected"), self.bool2str(bleStatus["connected"])))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
875 status.append((self.tr("Advertising"), self.bool2str(bleStatus["advertising"])))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
876
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
877 return status
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
878
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
879 def activateBluetoothInterface(self):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
880 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
881 Public method to activate the Bluetooth interface.
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
882
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
883 @return flag indicating the new state of the Bluetooth interface
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
884 @rtype bool
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
885 @exception OSError raised to indicate an issue with the device
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
886 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
887 command = """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
888 def activate_ble():
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
889 import _bleio
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
890
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
891 a = _bleio.adapter
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
892 if not a.enabled:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
893 a.enabled = True
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
894 print(a.enabled)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
895
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
896 activate_ble()
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
897 del activate_ble
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
898 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
899 out, err = self.executeCommands(command, mode=self._submitMode)
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
900 if err:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
901 raise OSError(self._shortError(err))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
902
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
903 return out.strip() == b"True"
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
904
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
905 def deactivateBluetoothInterface(self):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
906 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
907 Public method to deactivate the Bluetooth interface.
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
908
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
909 @return flag indicating the new state of the Bluetooth interface
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
910 @rtype bool
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
911 @exception OSError raised to indicate an issue with the device
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
912 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
913 command = """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
914 def deactivate_ble():
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
915 import _bleio
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
916
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
917 a = _bleio.adapter
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
918 if a.enabled:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
919 a.enabled = False
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
920 print(a.enabled)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
921
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
922 deactivate_ble()
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
923 del deactivate_ble
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
924 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
925 out, err = self.executeCommands(command, mode=self._submitMode)
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
926 if err:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
927 raise OSError(self._shortError(err))
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
928
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
929 return out.strip() == b"True"
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
930
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
931 def getDeviceScan(self, timeout=10):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
932 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
933 Public method to perform a Bluetooth device scan.
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
934
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
935 @param timeout duration of the device scan in seconds (defaults
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
936 to 10)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
937 @type int (optional)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
938 @return tuple containing a dictionary with the scan results and
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
939 an error string
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
940 @rtype tuple of (dict, str)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
941 """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
942 from ..BluetoothDialogs.BluetoothAdvertisement import (
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
943 ADV_IND,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
944 ADV_SCAN_IND,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
945 SCAN_RSP,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
946 BluetoothAdvertisement,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
947 )
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
948
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
949 command = """
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
950 def ble_scan():
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
951 import _bleio
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
952 import time
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
953
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
954 def address2str(address):
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
955 return ':'.join('{{0:02x}}'.format(x) for x in address)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
956
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
957 a = _bleio.adapter
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
958
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
959 ble_enabled = a.enabled
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
960 if not ble_enabled:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
961 a.enabled = True
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
962
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
963 scanResults = a.start_scan(
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
964 buffer_size=1024, extended=True, timeout={0}, minimum_rssi=-120, active=True
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
965 )
10032
102b79b2a8cd Finetuned the bluetooth scan function for various MicroPython boards.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
966 time.sleep({0} + 0.2)
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
967 a.stop_scan()
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
968
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
969 for res in scanResults:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
970 print({{
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
971 'address': address2str(bytes(reversed(res.address.address_bytes))),
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
972 'advertisement': res.advertisement_bytes,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
973 'connectable': res.connectable,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
974 'rssi': res.rssi,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
975 'scan_response': res.scan_response,
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
976 }})
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
977
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
978 if not ble_enabled:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
979 a.enabled = False
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
980
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
981 ble_scan()
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
982 del ble_scan
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
983 """.format(
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
984 timeout
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
985 )
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9979
diff changeset
986 out, err = self.executeCommands(
9864
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
987 command, mode=self._submitMode, timeout=(timeout + 5) * 1000
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
988 )
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
989 if err:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
990 return {}, err
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
991
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
992 scanResults = {}
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
993 for line in out.decode("utf-8").splitlines():
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
994 res = ast.literal_eval(line)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
995 address = res["address"]
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
996 if address not in scanResults:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
997 scanResults[address] = BluetoothAdvertisement(address)
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
998 if res["scan_response"]:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
999 advType = SCAN_RSP
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1000 elif res["connectable"]:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1001 advType = ADV_IND
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1002 else:
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1003 advType = ADV_SCAN_IND
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1004 scanResults[address].update(advType, res["rssi"], res["advertisement"])
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1005
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1006 return scanResults, ""
f848aacf3447 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9834
diff changeset
1007
11167
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1008 def supportsDeviceScan(self):
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1009 """
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1010 Public method to indicate, that the Bluetooth implementation supports
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1011 scanning for devices.
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1012
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1013 @return flag indicating that the scanning function is supported
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1014 @rtype bool
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1015 """
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1016 return True
a3f5af773bc7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
1017
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1018 def _boardInformationCommands(self):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1019 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1020 Protected method defining the list of commands to be execute on the board
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1021 for determining information about the board.
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1022
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1023 @return list of command strings to be executed
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1024 @rtype list of str
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1025 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1026 # These are a subset of the generic ones.
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1027 return [ # needs to be splitted for boards with low memory
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1028 """def get_board_info():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1029 res = {}
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1030
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1031 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1032 import os
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1033 uname = os.uname()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1034 res['sysname'] = uname.sysname
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1035 res['nodename'] = uname.nodename
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1036 res['release'] = uname.release
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1037 res['version'] = uname.version
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1038 res['machine'] = uname.machine
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1039 except AttributeError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1040 import sys
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1041 res['sysname'] = sys.platform
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1042 res['nodename'] = sys.platform
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1043 res['release'] = '.'.join(str(v) for v in sys.implementation.version)
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1044 res['version'] = sys.version.split(';', 1)[-1].strip()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1045 res['machine'] = sys.implementation._machine
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1046
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1047 return res
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1048
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1049 print(get_board_info())
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1050 del get_board_info
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1051 """,
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1052 """def get_board_info():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1053 res = {}
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1054
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1055 import sys
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1056 res['py_platform'] = sys.platform
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1057 res['py_version'] = sys.version
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1058
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1059 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1060 res['mpy_name'] = sys.implementation.name
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1061 except AttributeError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1062 res['mpy_name'] = 'unknown'
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1063 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1064 res['mpy_version'] = '.'.join((str(i) for i in sys.implementation.version))
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1065 except AttributeError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1066 res['mpy_version'] = 'unknown'
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1067 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1068 import pimoroni
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1069 res['mpy_variant'] = 'Pimoroni Pico'
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1070 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1071 import version
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1072 res['mpy_variant_info'] = version.BUILD
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1073 res['mpy_variant_version'] = version.BUILD.split('-')[2][1:]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1074 except ImportError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1075 res['mpy_variant_info'] = ''
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1076 res['mpy_variant_version'] = ''
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1077 except ImportError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1078 res['mpy_variant'] = ''
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1079 res['mpy_variant_info'] = ''
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1080 res['mpy_variant_version'] = ''
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1081
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1082 return res
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1083
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1084 print(get_board_info())
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1085 del get_board_info
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1086 """,
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1087 """def get_board_info():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1088 res = {}
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1089
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1090 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1091 import ulab
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1092 res['ulab'] = ulab.__version__
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1093 except ImportError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1094 res['ulab'] = None
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1095
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1096 return res
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1097
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1098 print(get_board_info())
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1099 del get_board_info
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1100 """,
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1101 # micro:bit specific variants due to missing float support
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1102 """def get_board_info():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1103 res = {}
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1104
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1105 import gc
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1106 gc.enable()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1107 gc.collect()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1108 mem_alloc = gc.mem_alloc()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1109 mem_free = gc.mem_free()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1110 mem_total = mem_alloc + mem_free
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1111 res['mem_total'] = mem_total
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1112 res['mem_used'] = mem_alloc
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1113 res['mem_free'] = mem_free
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1114 del gc, mem_alloc, mem_free, mem_total
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1115
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1116 return res
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1117
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1118 print(get_board_info())
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1119 del get_board_info
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1120 """,
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1121 """def get_board_info():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1122 res = {}
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1123
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1124 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1125 import os
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1126 stat_ = os.statvfs('/flash')
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1127 res['flash_info_available'] = True
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1128 res['flash_total'] = stat_[2] * stat_[0]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1129 res['flash_free'] = stat_[3] * stat_[0]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1130 except (AttributeError, OSError):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1131 res['flash_info_available'] = False
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1132
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1133 return res
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1134
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1135 print(get_board_info())
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1136 del get_board_info
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1137 """,
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1138 """def get_board_info():
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1139 res = {}
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1140
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1141 import machine as mc
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1142 import microbit as mb
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1143 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1144 if isinstance(mc.freq(), tuple):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1145 res['mc_frequency'] = mc.freq()[0]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1146 else:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1147 res['mc_frequency'] = mc.freq()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1148 except NotImplementedError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1149 res['mc_frequency'] = None
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1150 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1151 res['mc_temp_c'] = mc.Temp().read()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1152 except AttributeError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1153 try:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1154 res['mc_temp_c'] = mb.temperature() * 100
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1155 except AttributeError:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1156 res['mc_temp_c'] = None
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1157 res['mc_id'] = mc.unique_id()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1158 if 'mc_id' in res:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1159 res['mc_id'] = ':'.join('{0:02X}'.format(x) for x in res['mc_id'])
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1160 else:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1161 res['mc_id'] = None
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1162
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1163 return res
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1164
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1165 print(get_board_info())
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1166 del get_board_info
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1167 """,
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1168 ]
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1169
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1170 def getBoardInformation(self):
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1171 """
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1172 Public method to get some information data of the connected board.
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1173
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1174 @return dictionary containing the determined data
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1175 @rtype dict
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1176 """
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1177 res = super().getBoardInformation()
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1178
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1179 # post-process the results to determine the right float entries
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1180
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1181 # 1. memory
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1182 res["mem_total_kb"] = res["mem_total"] / 1024.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1183 res["mem_used_kb"] = res["mem_used"] / 1024.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1184 res["mem_used_pc"] = res["mem_used"] / res["mem_total"] * 100.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1185 res["mem_free_kb"] = res["mem_free"] / 1024.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1186 res["mem_free_pc"] = res["mem_free"] / res["mem_total"] * 100.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1187
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1188 # 2. flash
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1189 if res["flash_info_available"]:
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1190 res["flash_total_kb"] = res["flash_total"] / 1024.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1191 res["flash_free_kb"] = res["flash_free"] / 1024.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1192 res["flash_used_kb"] = res["flash_total_kb"] - res["flash_free_kb"]
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1193 res["flash_free_pc"] = res["flash_free_kb"] / res["flash_total_kb"] * 100.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1194 res["flash_used_pc"] = res["flash_used_kb"] / res["flash_total_kb"] * 100.0
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1195
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1196 # 3. machine
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1197 res["mc_frequency_mhz"] = (
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1198 res["mc_frequency"] / 1000000.0 if res["mc_frequency"] is not None else None
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1199 )
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1200 with contextlib.suppress(KeyError):
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1201 if res["mc_temp_c"] is not None:
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1202 res["mc_temp_c"] = res["mc_temp_c"] / 100 # due to integer support only
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1203
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1204 return res
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1205
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1206 def isMicrobit(self):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1207 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1208 Public method to check, if the device is a BBC micro:bit or Calliope mini.
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1209
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1210 @return flag indicating a micro:bit device
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1211 @rtype bool
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1212 """
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1213 if (
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1214 ("micro:bit" in self.deviceName() or "Calliope" in self.deviceName())
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1215 and not self.hasCircuitPython()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1216 and not self.supportsDirectories()
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1217 ):
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1218 return True
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1219
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1220 return False
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1221
11177
f511038a0061 Corrected some issues related to controllers with small RAM and limited numbers support (i.e. BBC micro:bit and Calliope mini).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11167
diff changeset
1222
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: 10512
diff changeset
1223 def createDevice(microPythonWidget, deviceType, _vid, _pid, _boardName, serialNumber):
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1224 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1225 Function to instantiate a MicroPython device object.
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1226
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1227 @param microPythonWidget reference to the main MicroPython widget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1228 @type MicroPythonWidget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1229 @param deviceType device type assigned to this device interface
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1230 @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: 10512
diff changeset
1231 @param _vid vendor ID (unused)
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1232 @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: 10512
diff changeset
1233 @param _pid product ID (unused)
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1234 @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: 10512
diff changeset
1235 @param _boardName name of the board (unused)
9738
4ae976ee5339 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
1236 @type str
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
1237 @param serialNumber serial number of the board
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
1238 @type str
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1239 @return reference to the instantiated device object
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1240 @rtype MicrobitDevice
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
1241 """
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9750
diff changeset
1242 return MicrobitDevice(microPythonWidget, deviceType, serialNumber)
11186
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1243
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1244
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1245 #
c2d18aefef6b Corrected some issues in the 'micro:bit' device class and enhanced the MPy file manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11177
diff changeset
1246 # eflag: noqa = M-613

eric ide

mercurial