src/eric7/MicroPython/Devices/RP2Devices.py

Tue, 19 Nov 2024 16:08:15 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 19 Nov 2024 16:08:15 +0100
branch
eric7
changeset 11051
e8a7be10b76c
parent 11034
7b8a21fd2d58
child 11090
f5f5f5803935
permissions
-rw-r--r--

MicroPython
- Enhanced the WiFi and BLE detection for Pimoroni RP2350 boards because their firmware has modules for these even if the CYW43 chip is not present.

8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10327
diff changeset
3 # Copyright (c) 2021 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
7 Module implementing the device interface class for RP2040/RP2350 based boards
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
8 (e.g. Raspberry Pi Pico / Pico 2).
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
11 import ast
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
12 import binascii
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
13 import json
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
14 import os
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
15
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
16 from PyQt6.QtCore import QUrl, pyqtSlot
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
17 from PyQt6.QtNetwork import QNetworkReply, QNetworkRequest
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
18 from PyQt6.QtWidgets import QDialog, QMenu
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
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
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
21 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
22 from eric7.EricWidgets import EricMessageBox
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
23 from eric7.EricWidgets.EricApplication import ericApp
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
24
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
25 from ..EthernetDialogs import WiznetUtilities
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
26 from ..MicroPythonWidget import HAS_QTCHART
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
27 from . import FirmwareGithubUrls
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
28 from .DeviceBase import BaseDevice
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
31 class RP2Device(BaseDevice):
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
33 Class implementing the device for RP2040/RP2350 based boards.
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
35
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 def __init__(self, microPythonWidget, deviceType, parent=None):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
39
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @param microPythonWidget reference to the main MicroPython widget
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @type MicroPythonWidget
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @param deviceType device type assigned to this device interface
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @type str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 @param parent reference to the parent object
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 @type QObject
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
47 super().__init__(microPythonWidget, deviceType, parent)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
48
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
49 self.__createRP2Menu()
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
50
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
51 self.__statusTranslations = {
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
52 "picow": {
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
53 -3: self.tr("authentication failed"),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
54 -2: self.tr("no matching access point found"),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
55 -1: self.tr("connection failed"),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
56 0: self.tr("idle"),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
57 1: self.tr("connecting"),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
58 2: self.tr("connected, waiting for IP address"),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
59 3: self.tr("connected"),
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
60 },
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
61 "picowireless": {
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
62 0: self.tr("idle"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
63 1: self.tr("no matching access point found"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
64 2: self.tr("network scan completed"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
65 3: self.tr("connected"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
66 4: self.tr("connection failed"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
67 5: self.tr("connection lost"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
68 6: self.tr("disconnected"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
69 7: self.tr("AP listening"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
70 8: self.tr("AP connected"),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
71 9: self.tr("AP failed"),
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
72 },
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
73 "picowiz": {
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
74 0: self.tr("switched off"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
75 1: self.tr("switched on, inactive"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
76 2: self.tr("switched on, active"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
77 },
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
78 }
9843
72e8270a5940 Removed an obsolete TODO marker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9841
diff changeset
79
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
80 self.__securityTranslations = {
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
81 "picow": {
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
82 0: self.tr("open", "open WiFi network"),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
83 1: "WEP",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
84 2: "WPA",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
85 3: "WPA2",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
86 4: "WPA/WPA2",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
87 5: "WPA2 (CCMP)",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
88 6: "WPA3",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
89 7: "WPA2/WPA3",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
90 },
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
91 "picowireless": {
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
92 2: "WPA",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
93 4: "WPA2 (CCMP)",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
94 5: "WEP",
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
95 7: self.tr("open", "open WiFi network"),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
96 8: self.tr("automatic"),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
97 },
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
98 }
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
99
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 def setButtons(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 Public method to enable the supported action buttons.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8122
diff changeset
104 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
105
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.microPython.setActionButtons(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
107 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
108 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 def forceInterrupt(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 Public method to determine the need for an interrupt when opening the
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 serial connection.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 @return flag indicating an interrupt is needed
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 @rtype bool
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 return False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
119
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 def deviceName(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 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
123
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @return name of the device
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 @rtype str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 """
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
127 return self.tr("RP2040/RP2350")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
128
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 def canStartRepl(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 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
132
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 @return tuple containing a flag indicating it is safe to start a REPL
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
138
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 def canStartPlotter(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 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
142
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 @return tuple containing a flag indicating it is safe to start a
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 Plotter and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
148
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 def canRunScript(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 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
152
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 @return tuple containing a flag indicating it is safe to start a
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 Plotter and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
158
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 def runScript(self, script):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 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
162
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 @param script script to be executed
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 @type str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 pythonScript = script.split("\n")
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.sendCommands(pythonScript)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 def canStartFileManager(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 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
172
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 @return tuple containing a flag indicating it is safe to start a
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 File Manager and a reason why it cannot.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 @rtype tuple of (bool, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 return True, ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
179 def __createRP2Menu(self):
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
180 """
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
181 Private method to create the RP2 submenu.
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
182 """
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
183 self.__rp2Menu = QMenu(self.tr("RP2 Functions"))
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
184
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
185 self.__showMpyAct = self.__rp2Menu.addAction(
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
186 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
187 )
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
188 self.__rp2Menu.addSeparator()
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
189 self.__bootloaderAct = self.__rp2Menu.addAction(
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
190 self.tr("Activate Bootloader"), self.__activateBootloader
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
191 )
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
192 self.__flashMpyAct = self.__rp2Menu.addAction(
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
193 self.tr("Flash MicroPython Firmware"), self.__flashPython
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
194 )
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
195 self.__rp2Menu.addSeparator()
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
196 self.__resetAct = self.__rp2Menu.addAction(
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
197 self.tr("Reset Device"), self.__resetDevice
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
198 )
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
199
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 def addDeviceMenuEntries(self, menu):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 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
203
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 @param menu reference to the context menu
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 @type QMenu
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 connected = self.microPython.isConnected()
9749
5d409223cf3f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9748
diff changeset
208 linkConnected = self.microPython.isLinkConnected()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
210 self.__showMpyAct.setEnabled(connected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
211 self.__bootloaderAct.setEnabled(connected)
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
212 self.__flashMpyAct.setEnabled(not linkConnected)
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
213 self.__resetAct.setEnabled(connected)
9752
2b9546c0cbd9 Moved the MicroPython board specific functions to a separate submenu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9751
diff changeset
214
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
215 menu.addMenu(self.__rp2Menu)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 def hasFlashMenuEntry(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 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
220
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 @return flag indicating a specific flash menu entry
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 @rtype bool
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 return True
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
225
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 @pyqtSlot()
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 def __flashPython(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 Private slot to flash a MicroPython firmware to the device.
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 """
9756
9854647c8c5c Reorganized the MicroPython package.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9755
diff changeset
231 from ..UF2FlashDialog import UF2FlashDialog
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232
11005
b918c6c2736b MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10897
diff changeset
233 dlg = UF2FlashDialog(boardType="rp2", parent=self.microPython)
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 dlg.exec()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
236 @pyqtSlot()
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 def __activateBootloader(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
239 Private slot to switch the board into 'bootloader' mode.
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 if self.microPython.isConnected():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
242 self.executeCommands(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
243 [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244 "import machine",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
245 "machine.bootloader()",
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
246 ],
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
247 mode=self._submitMode,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
248 )
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 # simulate pressing the disconnect button
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 self.microPython.on_connectButton_clicked()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
251
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
252 @pyqtSlot()
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
253 def __showFirmwareVersions(self):
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
254 """
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
255 Private slot to show the firmware version of the connected device and the
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
256 available firmware version.
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
257 """
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
258 if self.microPython.isConnected():
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
259 if self._deviceData["mpy_name"] != "micropython":
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
260 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: 11005
diff changeset
261 self.microPython,
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
262 self.tr("Show MicroPython Versions"),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
263 self.tr(
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
264 """The firmware of the connected device cannot be"""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
265 """ determined or the board does not run MicroPython."""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
266 """ Aborting..."""
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
267 ),
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
268 )
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
269 else:
9772
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
270 if self._deviceData["mpy_variant"] == "Pimoroni Pico":
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
271 # MicroPython with Pimoroni add-on libraries
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
272 url = QUrl(FirmwareGithubUrls["pimoroni_pico"])
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
273 else:
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
274 url = QUrl(FirmwareGithubUrls["micropython"])
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
275 ui = ericApp().getObject("UserInterface")
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
276 request = QNetworkRequest(url)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
277 reply = ui.networkAccessManager().head(request)
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
278 reply.finished.connect(lambda: self.__firmwareVersionResponse(reply))
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
279
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
280 @pyqtSlot(QNetworkReply)
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
281 def __firmwareVersionResponse(self, reply):
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
282 """
9820
67597e003373 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9799
diff changeset
283 Private slot handling the response of the latest version request.
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
284
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
285 @param reply reference to the reply object
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
286 @type QNetworkReply
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
287 """
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
288 latestUrl = reply.url().toString()
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
289 tag = latestUrl.rsplit("/", 1)[-1]
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
290 while tag and not tag[0].isdecimal():
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
291 # get rid of leading non-decimal characters
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
292 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
293 latestVersion = EricUtilities.versionToTuple(tag)
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
294
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
295 if self._deviceData["mpy_version"] == "unknown":
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
296 currentVersionStr = self.tr("unknown")
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
297 currentVersion = (0, 0, 0)
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
298 else:
9772
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
299 currentVersionStr = (
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
300 self._deviceData["mpy_variant_version"]
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
301 if bool(self._deviceData["mpy_variant_version"])
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
302 else self._deviceData["mpy_version"]
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
303 )
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
304 currentVersion = EricUtilities.versionToTuple(currentVersionStr)
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
305
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
306 msg = self.tr(
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
307 "<h4>MicroPython Version Information</h4>"
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
308 "<table>"
9772
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
309 "<tr><td>Installed:</td><td>{0}</td></tr>"
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
310 "<tr><td>Available:</td><td>{1}</td></tr>"
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
311 "{2}"
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
312 "</table>"
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
313 ).format(
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
314 currentVersionStr,
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
315 tag,
10621
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
316 (
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
317 self.tr("<tr><td>Variant:</td><td>{0}</td></tr>").format(
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
318 self._deviceData["mpy_variant"]
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
319 )
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
320 if self._deviceData["mpy_variant"]
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
321 else ""
f5631f40c4d9 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
322 ),
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
323 )
9786
f94b530722af Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
324 if self._deviceData["mpy_variant"] in ["Pimoroni Pico"] and not bool(
f94b530722af Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
325 self._deviceData["mpy_variant_version"]
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
326 ):
9772
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
327 # cannot derive update info
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
328 msg += self.tr("<p>Update may be available.</p>")
06ef28082c4d Changed the RP2040 related code of the MicroPython package to show the version info for a MicroPython variant (like Pimoroni Pico) if such is available (e.g. Pimoroni Pico 1.19.14 or newer).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9765
diff changeset
329 elif currentVersion < latestVersion:
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
330 msg += self.tr("<p><b>Update available!</b></p>")
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
331
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
332 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: 11005
diff changeset
333 self.microPython,
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
334 self.tr("MicroPython Version"),
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
335 msg,
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
336 )
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
337
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
338 @pyqtSlot()
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
339 def __resetDevice(self):
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
340 """
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
341 Private slot to reset the connected device.
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
342 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
343 if self.microPython.isConnected():
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
344 self.executeCommands(
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
345 "import machine\nmachine.reset()\n", mode=self._submitMode
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
346 )
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
347
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 def getDocumentationUrl(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350 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
351
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 @return documentation URL of the device
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 @rtype str
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 return Preferences.getMicroPython("MicroPythonDocuUrl")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
356
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 def getDownloadMenuEntries(self):
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 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
360
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 @return list of tuples with menu text and URL to be opened for each
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 entry
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 @rtype list of tuple of (str, str)
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 """
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 return [
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
366 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367 self.tr("MicroPython Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
368 Preferences.getMicroPython("MicroPythonFirmwareUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
369 ),
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 ("<separator>", ""),
9748
df9520c864f2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9747
diff changeset
371 (self.tr("Pimoroni Pico Firmware"), FirmwareGithubUrls["pimoroni_pico"]),
9747
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
372 ("<separator>", ""),
b7976868d5b0 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9738
diff changeset
373 (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374 self.tr("CircuitPython Firmware"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
375 Preferences.getMicroPython("CircuitPythonFirmwareUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
376 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
377 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
378 self.tr("CircuitPython Libraries"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
379 Preferences.getMicroPython("CircuitPythonLibrariesUrl"),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
380 ),
8122
eb85ced7844c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 ]
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
382
9765
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
383 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
384 ## time related methods below
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
385 ##################################################################
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
386
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
387 def _getSetTimeCode(self):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
388 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
389 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
390
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
391 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
392 subclasses.
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
393
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
394 @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
395 @rtype str
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
396 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
397 # rtc_time[0] - year 4 digit
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
398 # rtc_time[1] - month 1..12
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
399 # rtc_time[2] - day 1..31
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
400 # 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
401 # rtc_time[4] - hour 0..23
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
402 # rtc_time[5] - minute 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
403 # rtc_time[6] - second 0..59
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
404 # rtc_time[7] - yearday 1..366
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
405 # rtc_time[8] - isdst 0, 1, or -1
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
406
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
407 # The machine.rtc.datetime() function takes the arguments in the order:
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
408 # (year, month, day, weekday, hour, minute, second, subseconds)
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
409 # __IGNORE_WARNING_M891__
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
410 # https://docs.micropython.org/en/latest/library/machine.RTC.html#machine-rtc
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
411 return """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
412 def set_time(rtc_time):
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
413 import machine
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
414 rtc = machine.RTC()
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
415 rtc.datetime(rtc_time[:7] + (0,))
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
416 """
6378da868bb0 Reorganized the MicroPython code even more.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9763
diff changeset
417
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
418 ##################################################################
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
419 ## Methods below implement WiFi related methods
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
420 ##################################################################
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
421
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
422 def addDeviceWifiEntries(self, menu):
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
423 """
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
424 Public method to add device specific entries to the given menu.
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
425
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
426 @param menu reference to the context menu
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
427 @type QMenu
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
428 """
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
429 menu.addSeparator()
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
430 menu.addAction(self.tr("Set Country"), self.__setCountry).setEnabled(
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
431 self._deviceData["wifi_type"] == "picow"
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
432 )
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
433 menu.addAction(self.tr("Reset Country"), self.__resetCountry).setEnabled(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
434 self._deviceData["wifi_type"] == "picow"
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
435 )
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
436
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
437 def hasWifi(self):
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
438 """
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
439 Public method to check the availability of WiFi.
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
440
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
441 @return tuple containing a flag indicating the availability of WiFi
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
442 and the WiFi type (picow or picowireless)
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
443 @rtype tuple of (bool, str)
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
444 @exception OSError raised to indicate an issue with the device
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
445 """
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
446 # picowireless:
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
447 # It seems to take up to 20 sec to detect, that no Pico Wireless Pack is
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
448 # attached. Therefore the command will timeout before.
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
449 command = """
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
450 def has_wifi():
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
451 try:
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
452 import network
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
453 if hasattr(network, 'WLAN'):
11051
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
454 wifi = network.WLAN(network.STA_IF)
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
455 if not wifi.active():
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
456 wifi.active(True)
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
457 wifi.active(False)
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
458 return True, 'picow'
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
459 except ImportError:
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
460 try:
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
461 import picowireless as pw
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
462 try:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
463 if pw.get_fw_version() != '':
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
464 return True, 'picowireless'
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
465 except RuntimeError:
10326
d83e1fea5ea6 Fixed an issue in the MicroPython interface related to Pi Pico with Pimoroni 'pico wireless'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10233
diff changeset
466 pw.init()
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
467 return True, 'picowireless'
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
468 except ImportError:
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
469 pass
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
470
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
471 return False, ''
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
472
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
473 print(has_wifi())
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
474 del has_wifi
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
475 """
10327
6b1e6d7b26f0 RP2040Devices
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10326
diff changeset
476 out, err = self.executeCommands(command, mode=self._submitMode, timeout=20000)
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
477 if err:
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
478 if not err.startswith(b"Timeout "):
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
479 raise OSError(self._shortError(err))
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
480 else:
9880
f425c58cf8e9 Fixed a bug in the recently added µPy code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
481 # pimoroni firmware loaded but no pico wireless present
f425c58cf8e9 Fixed a bug in the recently added µPy code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
482 return False, ""
11051
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
483 if b"Failed to start CYW43" in out:
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
484 # network module present but no CYW43 chip
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
485 # (pimoroni firmware has everything)
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
486 return False, ""
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
487 return ast.literal_eval(out.decode("utf-8"))
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
488
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
489 def hasWifiCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
490 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
491 Public method to check, if the device has support to set the WiFi country.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
492
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
493 @return flag indicating the support of WiFi country
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
494 @rtype bool
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
495 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
496 return self._deviceData["wifi_type"] == "picow"
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
497
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
498 def getWifiData(self):
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
499 """
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
500 Public method to get data related to the current WiFi status.
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
501
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
502 @return tuple of three dictionaries containing the WiFi status data
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
503 for the WiFi client, access point and overall data
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
504 @rtype tuple of (dict, dict, dict)
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
505 @exception OSError raised to indicate an issue with the device
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
506 """
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
507 if self._deviceData["wifi_type"] == "picow":
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
508 command = """
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
509 def wifi_status():
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
510 import ubinascii
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
511 import ujson
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
512 import network
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
513 import rp2
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
514
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
515 wifi = network.WLAN(network.STA_IF)
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
516 station = {
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
517 'active': wifi.active(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
518 'connected': wifi.isconnected(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
519 'status': wifi.status(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
520 'ifconfig': wifi.ifconfig(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
521 'mac': ubinascii.hexlify(wifi.config('mac'), ':').decode(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
522 'channel': wifi.config('channel'),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
523 'txpower': wifi.config('txpower'),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
524 }
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
525 print(ujson.dumps(station))
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
526
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
527 wifi = network.WLAN(network.AP_IF)
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
528 ap = {
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
529 'active': wifi.active(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
530 'connected': wifi.isconnected(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
531 'status': wifi.status(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
532 'ifconfig': wifi.ifconfig(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
533 'mac': ubinascii.hexlify(wifi.config('mac'), ':').decode(),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
534 'channel': wifi.config('channel'),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
535 'txpower': wifi.config('txpower'),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
536 'essid': wifi.config('essid'),
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
537 }
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
538 print(ujson.dumps(ap))
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
539
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
540 overall = {
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
541 'active': station['active'] or ap['active']
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
542 }
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
543 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
544 overall['country'] = network.country()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
545 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
546 overall['country'] = rp2.country()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
547 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
548 overall['hostname'] = network.hostname()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
549 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
550 pass
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
551 print(ujson.dumps(overall))
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
552
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
553 wifi_status()
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
554 del wifi_status
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
555 """
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
556 elif self._deviceData["wifi_type"] == "picowireless":
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
557 command = """
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
558 def wifi_status():
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
559 import picowireless as pw
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
560 import ubinascii
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
561 import ujson
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
562
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
563 def ip_str(ip):
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
564 return '.'.join(str(i) for i in ip)
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
565
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
566 station = {
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
567 'active': pw.get_connection_status() not in (0, 7, 8, 9),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
568 'connected': pw.get_connection_status() == 3,
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
569 'status': pw.get_connection_status(),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
570 'ifconfig': (
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
571 ip_str(pw.get_ip_address()),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
572 ip_str(pw.get_subnet_mask()),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
573 ip_str(pw.get_gateway_ip()),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
574 '0.0.0.0'
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
575 ),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
576 'mac': ubinascii.hexlify(pw.get_mac_address(), ':').decode(),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
577 }
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
578 if station['connected']:
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
579 station.update({
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
580 'ap_ssid': pw.get_current_ssid(),
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
581 'ap_bssid': ubinascii.hexlify(pw.get_current_bssid(), ':'),
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
582 'ap_rssi': pw.get_current_rssi(),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
583 'ap_security': pw.get_current_encryption_type(),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
584 })
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
585 print(ujson.dumps(station))
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
586
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
587 ap = {
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
588 'active': pw.get_connection_status() in (7, 8, 9),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
589 'connected': pw.get_connection_status() == 8,
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
590 'status': pw.get_connection_status(),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
591 'mac': ubinascii.hexlify(pw.get_mac_address(), ':').decode(),
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
592 }
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
593 if ap['active']:
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
594 ap['essid'] = pw.get_current_ssid()
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
595 ap['ifconfig'] = (
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
596 ip_str(pw.get_ip_address()),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
597 ip_str(pw.get_subnet_mask()),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
598 ip_str(pw.get_gateway_ip()),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
599 '0.0.0.0'
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
600 )
9835
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
601 print(ujson.dumps(ap))
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
602
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
603 overall = {
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
604 'active': pw.get_connection_status() != 0
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
605 }
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
606 print(ujson.dumps(overall))
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
607
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
608 wifi_status()
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
609 del wifi_status
b4b07de1b695 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9828
diff changeset
610 """
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
611 else:
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
612 return super().getWifiData()
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
613
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
614 out, err = self.executeCommands(command, mode=self._submitMode)
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
615 if err:
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
616 raise OSError(self._shortError(err))
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
617
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
618 stationStr, apStr, overallStr = out.decode("utf-8").splitlines()
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
619 station = json.loads(stationStr)
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
620 ap = json.loads(apStr)
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
621 overall = json.loads(overallStr)
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
622 if "status" in station:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
623 # translate the numerical status to a string
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
624 try:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
625 station["status"] = self.__statusTranslations[
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
626 self._deviceData["wifi_type"]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
627 ][station["status"]]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
628 except KeyError:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
629 station["status"] = str(station["status"])
10138
56614cf9d03c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10089
diff changeset
630 if "status" in ap:
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
631 # translate the numerical status to a string
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
632 try:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
633 ap["status"] = self.__statusTranslations[self._deviceData["wifi_type"]][
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
634 ap["status"]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
635 ]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
636 except KeyError:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
637 ap["status"] = str(ap["status"])
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
638 if "ap_security" in station:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
639 # translate the numerical AP security to a string
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
640 try:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
641 station["ap_security"] = self.__securityTranslations[
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
642 self._deviceData["wifi_type"]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
643 ][station["ap_security"]]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
644 except KeyError:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
645 station["ap_security"] = self.tr("unknown ({0})").format(
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
646 station["ap_security"]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
647 )
9798
4402d76c5fa9 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9797
diff changeset
648 return station, ap, overall
9775
c6806d24468b Created new branch <mpy_network>.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9772
diff changeset
649
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
650 def connectWifi(self, ssid, password, hostname):
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
651 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
652 Public method to connect a device to a WiFi network.
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
653
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
654 @param ssid name (SSID) of the WiFi network
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
655 @type str
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
656 @param password password needed to connect
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
657 @type str
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
658 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
659 @type str
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
660 @return tuple containing the connection status and an error string
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
661 @rtype tuple of (bool, str)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
662 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
663 if self._deviceData["wifi_type"] == "picow":
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
664 country = Preferences.getMicroPython("WifiCountry").upper()
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
665 command = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
666 def connect_wifi(ssid, password, hostname, country):
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
667 import network
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
668 import rp2
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
669 import ujson
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
670 from time import sleep
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
671
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
672 rp2.country(country)
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
673
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
674 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
675 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
676 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
677 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
678 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
679
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
680 wifi = network.WLAN(network.STA_IF)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
681 wifi.active(False)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
682 wifi.active(True)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
683 wifi.connect(ssid, password)
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
684 max_wait = 140
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
685 while max_wait:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
686 if wifi.status() < 0 or wifi.status() >= 3:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
687 break
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
688 max_wait -= 1
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
689 sleep(0.1)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
690 status = wifi.status()
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
691 print(ujson.dumps({{'connected': wifi.isconnected(), 'status': status}}))
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
692
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
693 connect_wifi({0}, {1}, {2}, {3})
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
694 del connect_wifi
9779
8d3c7c991085 Continued implementing WiFi functionality for RP2040 based devices (set country, menu hierarchy).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9776
diff changeset
695 """.format(
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
696 repr(ssid),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
697 repr(password if password else ""),
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
698 repr(hostname),
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
699 repr(country if country else "XX"),
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
700 )
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
701 elif self._deviceData["wifi_type"] == "picowireless":
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
702 command = """
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
703 def connect_wifi(ssid, password):
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
704 import picowireless as pw
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
705 import ujson
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
706 from time import sleep
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
707
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
708 pw.init()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
709 if bool(password):
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
710 pw.wifi_set_passphrase(ssid, password)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
711 else:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
712 pw.wifi_set_network(ssid)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
713
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
714 max_wait = 140
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
715 while max_wait:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
716 if pw.get_connection_status() == 3:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
717 break
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
718 max_wait -= 1
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
719 sleep(0.1)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
720 status = pw.get_connection_status()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
721 if status == 3:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
722 pw.set_led(0, 64, 0)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
723 else:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
724 pw.set_led(64, 0, 0)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
725 print(ujson.dumps({{'connected': status == 3, 'status': status}}))
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
726
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
727 connect_wifi({0}, {1})
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
728 del connect_wifi
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
729 """.format(
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
730 repr(ssid),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
731 repr(password if password else ""),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
732 )
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
733 else:
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
734 return super().connectWifi(ssid, password, hostname)
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
735
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
736 with EricOverrideCursor():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
737 out, err = self.executeCommands(
9827
21803aa6c3e2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9820
diff changeset
738 command, mode=self._submitMode, timeout=15000
9799
a79430a8811d MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9798
diff changeset
739 )
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
740 if err:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
741 return False, err
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
742
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
743 result = json.loads(out.decode("utf-8").strip())
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
744 if result["connected"]:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
745 error = ""
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
746 else:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
747 try:
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
748 error = self.__statusTranslations[self._deviceData["wifi_type"]][
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
749 result["status"]
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
750 ]
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
751 except KeyError:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
752 error = str(result["status"])
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
753
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
754 return result["connected"], error
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
755
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
756 def disconnectWifi(self):
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
757 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
758 Public method to disconnect a device from the WiFi network.
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
759
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
760 @return tuple containing a flag indicating success and an error string
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
761 @rtype tuple of (bool, str)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
762 """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
763 if self._deviceData["wifi_type"] == "picow":
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
764 command = """
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
765 def disconnect_wifi():
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
766 import network
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
767 from time import sleep
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
768
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
769 wifi = network.WLAN(network.STA_IF)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
770 wifi.disconnect()
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
771 wifi.active(False)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
772 sleep(0.1)
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
773 print(not wifi.isconnected())
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
774
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
775 disconnect_wifi()
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
776 del disconnect_wifi
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
777 """
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
778 elif self._deviceData["wifi_type"] == "picowireless":
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
779 command = """
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
780 def disconnect_wifi():
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
781 import picowireless as pw
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
782 from time import sleep
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
783
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
784 pw.disconnect()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
785 sleep(0.1)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
786 print(pw.get_connection_status() != 3)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
787 pw.set_led(0, 0, 0)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
788
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
789 disconnect_wifi()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
790 del disconnect_wifi
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
791 """
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
792 else:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
793 return super().disconnectWifi()
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
794
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
795 out, err = self.executeCommands(command, mode=self._submitMode)
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
796 if err:
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
797 return False, err
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
798
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
799 return out.decode("utf-8").strip() == "True", ""
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
800
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
801 def isWifiClientConnected(self):
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
802 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
803 Public method to check the WiFi connection status as client.
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
804
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
805 @return flag indicating the WiFi connection status
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
806 @rtype bool
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
807 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
808 if self._deviceData["wifi_type"] == "picow":
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
809 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
810 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
811 import network
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
812
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
813 wifi = network.WLAN(network.STA_IF)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
814 print(wifi.isconnected())
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
815
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
816 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
817 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
818 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
819 elif self._deviceData["wifi_type"] == "picowireless":
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
820 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
821 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
822 import picowireless as pw
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
823
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
824 print(pw.get_connection_status() == 3)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
825
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
826 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
827 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
828 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
829 else:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
830 return super().isWifiClientConnected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
831
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
832 out, err = self.executeCommands(command, mode=self._submitMode)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
833 if err:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
834 return False
10138
56614cf9d03c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10089
diff changeset
835
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
836 return out.strip() == b"True"
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
837
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
838 def isWifiApConnected(self):
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
839 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
840 Public method to check the WiFi connection status as access point.
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
841
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
842 @return flag indicating the WiFi connection status
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
843 @rtype bool
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
844 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
845 if self._deviceData["wifi_type"] == "picow":
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
846 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
847 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
848 import network
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
849
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
850 wifi = network.WLAN(network.AP_IF)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
851 print(wifi.isconnected())
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
852
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
853 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
854 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
855 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
856 elif self._deviceData["wifi_type"] == "picowireless":
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
857 command = """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
858 def wifi_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
859 import picowireless as pw
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
860
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
861 print(pw.get_connection_status() == 8)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
862
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
863 wifi_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
864 del wifi_connected
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
865 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
866 else:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
867 return super().isWifiClientConnected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
868
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
869 out, err = self.executeCommands(command, mode=self._submitMode)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
870 if err:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
871 return False
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
872
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
873 return out.strip() == b"True"
9776
210bf87ae5c7 Continued implementing WiFi functionality for RP2040 based devices.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9775
diff changeset
874
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
875 def writeCredentials(self, ssid, password, hostname, country):
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
876 """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
877 Public method to write the given credentials to the connected device and modify
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
878 the start script to connect automatically.
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
879
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
880 @param ssid SSID of the network to connect to
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
881 @type str
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
882 @param password password needed to authenticate
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
883 @type str
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
884 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
885 @type str
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
886 @param country WiFi country code
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
887 @type str
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
888 @return tuple containing a flag indicating success and an error message
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
889 @rtype tuple of (bool, str)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
890 """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
891 command = """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
892 def modify_boot():
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
893 add = True
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
894 try:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
895 with open('/boot.py', 'r') as f:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
896 for ln in f.readlines():
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
897 if 'wifi_connect' in ln:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
898 add = False
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
899 break
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
900 except:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
901 pass
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
902 if add:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
903 with open('/boot.py', 'a') as f:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
904 f.write('\\nimport wifi_connect\\n')
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
905 print(True)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
906
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
907 modify_boot()
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
908 del modify_boot
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
909 """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
910
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
911 if self._deviceData["wifi_type"] == "picow":
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
912 secrets = (
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
913 "WIFI_SSID = {0}\nWIFI_KEY = {1}\nWIFI_COUNTRY={2}\n"
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
914 "WIFI_HOSTNAME = {3}\n"
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
915 ).format(
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
916 repr(ssid),
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
917 repr(password) if password else '""',
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
918 repr(country.upper()) if country else '""',
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
919 repr(hostname) if hostname else '""',
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
920 )
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
921 wifiConnectFile = "picowWiFiConnect.py"
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
922 else:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
923 secrets = "WIFI_SSID = {0}\nWIFI_KEY = {1}\n".format(
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
924 repr(ssid),
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
925 repr(password) if password else '""',
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
926 )
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
927 if self._deviceData["wifi_type"] == "picowireless":
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
928 wifiConnectFile = "pimoroniWiFiConnect.py"
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
929 else:
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
930 secrets += "WIFI_HOSTNAME = {0}\n".format(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
931 repr(hostname if hostname else '""')
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
932 )
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
933 wifiConnectFile = "mpyWiFiConnect.py"
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
934 try:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
935 # write secrets file
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
936 self.putData("/secrets.py", secrets.encode("utf-8"))
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
937 # copy auto-connect file
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
938 self.put(
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
939 os.path.join(os.path.dirname(__file__), "MCUScripts", wifiConnectFile),
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
940 "/wifi_connect.py",
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
941 )
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
942 except OSError as err:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
943 return False, str(err)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
944
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
945 # modify boot.py
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
946 out, err = self.executeCommands(command, mode=self._submitMode)
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
947 if err:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
948 return False, err
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
949
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
950 return out.decode("utf-8").strip() == "True", ""
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
951
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
952 def removeCredentials(self):
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
953 """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
954 Public method to remove the saved credentials from the connected device.
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
955
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
956 @return tuple containing a flag indicating success and an error message
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
957 @rtype tuple of (bool, str)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
958 """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
959 try:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
960 self.rm("/secrets.py")
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
961 except OSError as err:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
962 return False, str(err)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
963
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
964 return True, ""
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
965
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
966 def checkInternet(self):
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
967 """
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
968 Public method to check, if the internet can be reached.
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
969
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
970 @return tuple containing a flag indicating reachability and an error string
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
971 @rtype tuple of (bool, str)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
972 """
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
973 if self._deviceData["wifi_type"] == "picow":
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
974 command = """
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
975 def check_internet():
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
976 import network
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
977 import socket
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
978
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
979 wifi = network.WLAN(network.STA_IF)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
980 if wifi.isconnected():
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
981 s = socket.socket()
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
982 try:
10233
51a6649ba79d MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
983 s.connect(socket.getaddrinfo('quad9.net', 443)[0][-1])
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
984 s.close()
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
985 print(True)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
986 except:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
987 print(False)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
988 else:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
989 print(False)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
990
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
991 check_internet()
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
992 del check_internet
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
993 """
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
994 elif self._deviceData["wifi_type"] == "picowireless":
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
995 command = """
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
996 def check_internet():
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
997 import picowireless as pw
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
998
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
999 if pw.get_connection_status() == 3:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1000 res = pw.ping((9, 9, 9, 9), 300)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1001 print(res >= 0)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1002 else:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1003 print(False)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1004
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1005 check_internet()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1006 del check_internet
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1007 """
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1008 else:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1009 return super().checkInternet()
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1010
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1011 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1012 if err:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1013 return False, err
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1014
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1015 return out.decode("utf-8").strip() == "True", ""
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1016
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1017 def scanNetworks(self):
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1018 """
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1019 Public method to scan for available WiFi networks.
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1020
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1021 @return tuple containing the list of available networks as a tuple of 'Name',
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1022 'MAC-Address', 'channel', 'RSSI' and 'security' and an error string
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1023 @rtype tuple of (list of tuple of (str, str, int, int, str), str)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1024 """
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1025 if self._deviceData["wifi_type"] == "picow":
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1026 country = Preferences.getMicroPython("WifiCountry").upper()
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1027 command = """
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1028 def scan_networks():
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1029 import network
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1030 import rp2
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1031
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1032 rp2.country({0})
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1033
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1034 wifi = network.WLAN(network.STA_IF)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1035 active = wifi.active()
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1036 if not active:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1037 wifi.active(True)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1038 network_list = wifi.scan()
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1039 if not active:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1040 wifi.active(False)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1041 print(network_list)
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1042
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1043 scan_networks()
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1044 del scan_networks
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1045 """.format(
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1046 repr(country if country else "XX")
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1047 )
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1048
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1049 elif self._deviceData["wifi_type"] == "picowireless":
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1050 command = """
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1051 def scan_networks():
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1052 import picowireless as pw
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1053
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1054 network_list = []
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1055 pw.init()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1056 pw.start_scan_networks()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1057 networks = pw.get_scan_networks()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1058 for n in range(networks):
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1059 network_list.append((
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1060 pw.get_ssid_networks(n),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1061 pw.get_bssid_networks(n),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1062 pw.get_channel_networks(n),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1063 pw.get_rssi_networks(n),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1064 pw.get_enc_type_networks(n),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1065 ))
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1066 print(network_list)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1067
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1068 scan_networks()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1069 del scan_networks
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1070 """
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1071 else:
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1072 return super().scanNetworks()
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1073
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1074 out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000)
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1075 if err:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1076 return [], err
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1077
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1078 networksList = ast.literal_eval(out.decode("utf-8"))
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1079 networks = []
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1080 for network in networksList:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1081 if network[0]:
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1082 ssid = (
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1083 network[0].decode("utf-8")
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1084 if isinstance(network[0], bytes)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1085 else network[0]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1086 )
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1087 mac = (
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1088 binascii.hexlify(network[1], ":").decode("utf-8")
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1089 if network[1] is not None
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1090 else ""
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1091 )
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1092 channel = network[2]
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1093 rssi = network[3]
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1094 try:
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1095 security = self.__securityTranslations[
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1096 self._deviceData["wifi_type"]
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1097 ][network[4]]
9781
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1098 except KeyError:
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1099 security = self.tr("unknown ({0})").format(network[4])
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1100 networks.append((ssid, mac, channel, rssi, security))
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1101
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1102 return networks, ""
3112f77f722b Continued implementing WiFi functionality for RP2040 based devices (internet connection, network scan).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9779
diff changeset
1103
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1104 def deactivateInterface(self, interface):
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1105 """
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1106 Public method to deactivate a given WiFi interface of the connected device.
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1107
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1108 @param interface designation of the interface to be deactivated (one of 'AP'
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1109 or 'STA')
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1110 @type str
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1111 @return tuple containg a flag indicating success and an error message
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1112 @rtype tuple of (bool, str)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1113 @exception ValueError raised to indicate a wrong value for the interface type
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1114 """
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1115 if interface not in ("STA", "AP"):
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1116 raise ValueError(
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1117 "interface must be 'AP' or 'STA', got '{0}'".format(interface)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1118 )
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1119
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1120 if self._deviceData["wifi_type"] == "picow":
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1121 command = """
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1122 def deactivate():
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1123 import network
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1124 from time import sleep
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1125
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1126 wifi = network.WLAN(network.{0}_IF)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1127 wifi.active(False)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1128 sleep(0.1)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1129 print(not wifi.active())
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1130
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1131 deactivate()
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1132 del deactivate
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1133 """.format(
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1134 interface
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1135 )
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1136 elif self._deviceData["wifi_type"] == "picowireless":
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1137 command = """
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1138 def deactivate():
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1139 import picowireless as pw
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1140
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1141 pw.init()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1142 print(True)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1143
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1144 deactivate()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1145 del deactivate
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1146 """
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1147 else:
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1148 return super().deactivateInterface(interface)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1149
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1150 out, err = self.executeCommands(command, mode=self._submitMode)
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1151 if err:
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1152 return False, err
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1153 else:
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1154 return out.decode("utf-8").strip() == "True", ""
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1155
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1156 def startAccessPoint(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1157 self,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1158 ssid,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1159 security=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1160 password=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1161 hostname=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1162 ifconfig=None,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1163 ):
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1164 """
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1165 Public method to start the access point interface.
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1166
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1167 @param ssid SSID of the access point
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1168 @type str
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1169 @param security security method (defaults to None)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1170 @type int (optional)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1171 @param password password (defaults to None)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1172 @type str (optional)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1173 @param hostname host name of the device (defaults to None)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1174 @type str (optional)
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1175 @param ifconfig IPv4 configuration for the access point if not default
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1176 (IPv4 address, netmask, gateway address, DNS server address)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1177 @type tuple of (str, str, str, str)
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1178 @return tuple containing a flag indicating success and an error message
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1179 @rtype tuple of (bool, str)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1180 """
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1181 if security is None or password is None:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1182 security = 0
10170
6cf1ee737d8f Corrected some more code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
1183 password = "" # secok
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1184
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1185 if self._deviceData["wifi_type"] == "picow":
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1186 country = Preferences.getMicroPython("WifiCountry").upper()
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1187 if security:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1188 security = 4 # Pico W supports just WPA/WPA2
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1189 command = """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1190 def start_ap(ssid, security, password, hostname, ifconfig, country):
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1191 import network
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1192 import rp2
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1193 from time import sleep
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1194
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1195 rp2.country(country)
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1196
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1197 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1198 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1199 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1200 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1201 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1202
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1203 ap = network.WLAN(network.AP_IF)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1204 ap.active(True)
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1205 if ifconfig:
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1206 ap.ifconfig(ifconfig)
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1207 ap.config(ssid=ssid, security=security, password=password)
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1208 sleep(0.1)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1209 print(ap.isconnected())
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1210
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1211 start_ap({0}, {1}, {2}, {3}, {4}, {5})
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1212 del start_ap
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1213 """.format(
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1214 repr(ssid),
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1215 security,
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1216 repr(password),
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1217 repr(hostname),
9797
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1218 ifconfig,
3be7b2326e2c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9793
diff changeset
1219 repr(country if country else "XX"),
9789
d8e0ab86ddca Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9788
diff changeset
1220 )
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1221 elif self._deviceData["wifi_type"] == "picowireless":
9841
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1222 if ifconfig:
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1223 return (
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1224 False,
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1225 self.tr(
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1226 "Pico Wireless does not support setting the IPv4 parameters of"
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1227 " the WiFi access point."
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1228 ),
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1229 )
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1230
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1231 # AP is fixed at channel 6
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1232 command = """
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1233 def start_ap(ssid, password):
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1234 import picowireless as pw
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1235
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1236 pw.init()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1237 if bool(password):
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1238 res = pw.wifi_set_ap_passphrase(ssid, password, 6)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1239 else:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1240 res = pw.wifi_set_ap_network(ssid, 6)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1241 status = pw.get_connection_status()
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1242 if status in (7, 8):
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1243 pw.set_led(0, 64, 0)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1244 else:
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1245 pw.set_led(64, 0, 0)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1246 print(res >= 0)
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1247
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1248 start_ap({0}, {1})
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1249 del start_ap
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1250 """.format(
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1251 repr(ssid),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1252 repr(password if password else ""),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1253 )
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1254 else:
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1255 return super().startAccessPoint(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1256 ssid,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1257 security=security,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1258 password=password,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1259 hostname=hostname,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1260 ifconfig=ifconfig,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1261 )
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1262
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1263 out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000)
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1264 if err:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1265 return False, err
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1266 else:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1267 return out.decode("utf-8").strip() == "True", ""
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1268
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1269 def stopAccessPoint(self):
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1270 """
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1271 Public method to stop the access point interface.
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1272
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1273 @return tuple containg a flag indicating success and an error message
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1274 @rtype tuple of (bool, str)
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1275 """
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1276 if self._deviceData["wifi_type"] in ("picow", "picowireless"):
9782
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1277 return self.deactivateInterface("AP")
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1278 else:
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1279 return super().stopAccessPoint()
67414f28db68 Continued implementing WiFi functionality for RP2040 based devices (interface deactivation, AP stop, MicroPython config page).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9781
diff changeset
1280
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1281 def getConnectedClients(self):
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1282 """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1283 Public method to get a list of connected clients.
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1284
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1285 @return a tuple containing a list of tuples containing the client MAC-Address
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1286 and the RSSI (if supported and available) and an error message
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1287 @rtype tuple of ([(bytes, int)], str)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1288 """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1289 if self._deviceData["wifi_type"] == "picow":
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1290 command = """
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1291 def get_stations():
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1292 import network
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1293
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1294 ap = network.WLAN(network.AP_IF)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1295 stations = ap.status('stations')
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1296 print(stations)
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1297
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1298 get_stations()
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1299 del get_stations
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1300 """
9838
d6b87ef03c13 MicroPython, RP2040
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9836
diff changeset
1301 elif self._deviceData["wifi_type"] == "picowireless":
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1302 return (
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1303 [],
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1304 self.tr(
9841
3c6118eee33e Updated translations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9838
diff changeset
1305 "Pico Wireless does not support reporting of connected clients."
9836
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1306 ),
902ec9a04ebe MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9835
diff changeset
1307 )
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1308 else:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1309 return super().checkInternet()
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1310
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1311 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9787
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1312 if err:
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1313 return [], err
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1314
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1315 clientsList = ast.literal_eval(out.decode("utf-8"))
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1316 return clientsList, ""
163511257f24 Continued implementing WiFi functionality for RP2040 based devices (show connected stations, save/remove credentials, boot script for Pico W).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9782
diff changeset
1317
10022
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1318 def enableWebrepl(self, password):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1319 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1320 Public method to write the given WebREPL password to the connected device and
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1321 modify the start script to start the WebREPL server.
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1322
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1323 @param password password needed to authenticate
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1324 @type str
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1325 @return tuple containing a flag indicating success and an error message
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1326 @rtype tuple of (bool, str)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1327 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1328 command = """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1329 def modify_boot():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1330 import os
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1331
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1332 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1333 with open('/boot.py', 'r') as old_f, open('/boot.py.tmp', 'w') as new_f:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1334 found = False
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1335 for l in old_f.read().splitlines():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1336 if 'webrepl' in l:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1337 found = True
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1338 if l.startswith('#'):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1339 l = l[1:]
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1340 new_f.write(l + '\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1341 if not found:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1342 new_f.write('\\nimport webrepl\\nwebrepl.start()\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1343
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1344 os.remove('/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1345 os.rename('/boot.py.tmp', '/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1346 except:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1347 pass
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1348
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1349 print(True)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1350
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1351 modify_boot()
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1352 del modify_boot
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1353 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1354
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1355 if self._deviceData["wifi_type"] == "picow":
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1356 config = "PASS = {0}\n".format(repr(password))
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1357 else:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1358 return False, self.tr("WebREPL is not supported on this device.")
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1359
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1360 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1361 # write config file
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1362 self.putData("/webrepl_cfg.py", config.encode("utf-8"))
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1363 except OSError as err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1364 return False, str(err)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1365
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1366 # modify boot.py
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1367 out, err = self.executeCommands(command, mode=self._submitMode)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1368 if err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1369 return False, err
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1370
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1371 return out.decode("utf-8").strip() == "True", ""
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1372
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1373 def disableWebrepl(self):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1374 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1375 Public method to write the given WebREPL password to the connected device and
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1376 modify the start script to start the WebREPL server.
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1377
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1378 @return tuple containing a flag indicating success and an error message
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1379 @rtype tuple of (bool, str)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1380 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1381 command = """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1382 def modify_boot():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1383 import os
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1384
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1385 try:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1386 with open('/boot.py', 'r') as old_f, open('/boot.py.tmp', 'w') as new_f:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1387 for l in old_f.read().splitlines():
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1388 if 'webrepl' in l:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1389 if not l.startswith('#'):
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1390 l = '#' + l
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1391 new_f.write(l + '\\n')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1392
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1393 os.remove('/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1394 os.rename('/boot.py.tmp', '/boot.py')
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1395 except:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1396 pass
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1397
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1398 print(True)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1399
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1400 modify_boot()
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1401 del modify_boot
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1402 """
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1403
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1404 # modify boot.py
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1405 out, err = self.executeCommands(command, mode=self._submitMode)
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1406 if err:
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1407 return False, err
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1408
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1409 return out.decode("utf-8").strip() == "True", ""
a95800b414b7 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9989
diff changeset
1410
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1411 @pyqtSlot()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1412 def __setCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1413 """
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
1414 Private slot to configure the country of the connected device.
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1415
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1416 The country is the two-letter ISO 3166-1 Alpha-2 country code.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1417 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1418 from ..WifiDialogs.WifiCountryDialog import WifiCountryDialog
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1419
11005
b918c6c2736b MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10897
diff changeset
1420 dlg = WifiCountryDialog(parent=self.microPython)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1421 if dlg.exec() == QDialog.DialogCode.Accepted:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1422 country, remember = dlg.getCountry()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1423 if remember:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1424 Preferences.setMicroPython("WifiCountry", country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1425
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1426 command = """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1427 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1428 import network
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1429 network.country({0})
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1430 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1431 import rp2
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1432 rp2.country({0})
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1433 """.format(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1434 repr(country)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1435 )
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1436
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1437 out, err = self.executeCommands(command, mode=self._submitMode)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1438 if err:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1439 self.microPython.showError("country()", err)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1440
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1441 @pyqtSlot()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1442 def __resetCountry(self):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1443 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1444 Private slot to reset the country of the connected ESP32 device.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1445
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1446 The country is the two-letter ISO 3166-1 Alpha-2 country code. This method
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1447 resets it to the default code 'XX' representing the "worldwide" region.
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1448 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1449 command = """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1450 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1451 import network
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1452 network.country('XX')
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1453 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1454 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1455 """
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1456
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1457 out, err = self.executeCommands(command, mode=self._submitMode)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1458 if err:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1459 self.microPython.showError("country()", err)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1460
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
1461 ##################################################################
10089
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1462 ## Methods below implement Bluetooth related methods
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1463 ##################################################################
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1464
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1465 def hasBluetooth(self):
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1466 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1467 Public method to check the availability of Bluetooth.
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1468
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1469 @return flag indicating the availability of Bluetooth
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1470 @rtype bool
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1471 @exception OSError raised to indicate an issue with the device
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1472 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1473 command = """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1474 def has_bt():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1475 try:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1476 import bluetooth
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1477 if hasattr(bluetooth, 'BLE'):
11051
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
1478 ble = bluetooth.BLE()
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
1479 if not ble.active():
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
1480 ble.active(True)
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
1481 ble.active(False)
10089
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1482 return True
11051
e8a7be10b76c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11034
diff changeset
1483 except (ImportError, OSError):
10089
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1484 pass
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1485
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1486 return False
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1487
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1488 print(has_bt())
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1489 del has_bt
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1490 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1491 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1492 if err:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1493 raise OSError(self._shortError(err))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1494 return out.strip() == b"True"
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1495
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1496 def getBluetoothStatus(self):
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1497 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1498 Public method to get Bluetooth status data of the connected board.
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1499
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1500 @return list of tuples containing the translated status data label and
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1501 the associated value
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1502 @rtype list of tuples of (str, str)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1503 @exception OSError raised to indicate an issue with the device
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1504 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1505 command = """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1506 def ble_status():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1507 import bluetooth
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1508 import ubinascii
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1509 import ujson
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1510
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1511 ble = bluetooth.BLE()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1512
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1513 ble_active = ble.active()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1514 if not ble_active:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1515 ble.active(True)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1516
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1517 res = {
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1518 'active': ble_active,
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1519 'mac': ubinascii.hexlify(ble.config('mac')[1], ':').decode(),
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1520 'addr_type': ble.config('mac')[0],
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1521 'name': ble.config('gap_name'),
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1522 'mtu': ble.config('mtu'),
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1523 }
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1524
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1525 if not ble_active:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1526 ble.active(False)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1527
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1528 print(ujson.dumps(res))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1529
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1530 ble_status()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1531 del ble_status
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1532 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1533 out, err = self.executeCommands(command, mode=self._submitMode)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1534 if err:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1535 raise OSError(self._shortError(err))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1536
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1537 status = []
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1538 bleStatus = json.loads(out.decode("utf-8"))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1539 status.append((self.tr("Active"), self.bool2str(bleStatus["active"])))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1540 status.append((self.tr("Name"), bleStatus["name"]))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1541 status.append((self.tr("MAC-Address"), bleStatus["mac"]))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1542 status.append(
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1543 (
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1544 self.tr("Address Type"),
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1545 self.tr("Public") if bleStatus == 0 else self.tr("Random"),
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1546 )
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1547 )
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1548 status.append((self.tr("MTU"), self.tr("{0} Bytes").format(bleStatus["mtu"])))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1549
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1550 return status
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1551
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1552 def activateBluetoothInterface(self):
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1553 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1554 Public method to activate the Bluetooth interface.
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1555
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1556 @return flag indicating the new state of the Bluetooth interface
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1557 @rtype bool
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1558 @exception OSError raised to indicate an issue with the device
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1559 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1560 command = """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1561 def activate_ble():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1562 import bluetooth
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1563
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1564 ble = bluetooth.BLE()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1565 if not ble.active():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1566 ble.active(True)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1567 print(ble.active())
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1568
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1569 activate_ble()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1570 del activate_ble
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1571 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1572 out, err = self.executeCommands(command, mode=self._submitMode)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1573 if err:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1574 raise OSError(self._shortError(err))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1575
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1576 return out.strip() == b"True"
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1577
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1578 def deactivateBluetoothInterface(self):
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1579 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1580 Public method to deactivate the Bluetooth interface.
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1581
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1582 @return flag indicating the new state of the Bluetooth interface
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1583 @rtype bool
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1584 @exception OSError raised to indicate an issue with the device
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1585 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1586 command = """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1587 def deactivate_ble():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1588 import bluetooth
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1589
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1590 ble = bluetooth.BLE()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1591 if ble.active():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1592 ble.active(False)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1593 print(ble.active())
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1594
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1595 deactivate_ble()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1596 del deactivate_ble
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1597 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1598 out, err = self.executeCommands(command, mode=self._submitMode)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1599 if err:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1600 raise OSError(self._shortError(err))
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1601
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1602 return out.strip() == b"True"
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1603
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1604 def getDeviceScan(self, timeout=10):
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1605 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1606 Public method to perform a Bluetooth device scan.
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1607
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1608 @param timeout duration of the device scan in seconds (defaults
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1609 to 10)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1610 @type int (optional)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1611 @return tuple containing a dictionary with the scan results and
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1612 an error string
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1613 @rtype tuple of (dict, str)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1614 """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1615 from ..BluetoothDialogs.BluetoothAdvertisement import BluetoothAdvertisement
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1616
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1617 command = """
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1618 _scan_done = False
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1619
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1620 def ble_scan():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1621 import bluetooth
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1622 import time
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1623 import ubinascii
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1624
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1625 IRQ_SCAN_RESULT = 5
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1626 IRQ_SCAN_DONE = 6
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1627
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1628 def _bleIrq(event, data):
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1629 global _scan_done
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1630 if event == IRQ_SCAN_RESULT:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1631 addr_type, addr, adv_type, rssi, adv_data = data
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1632 if addr:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1633 print({{
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1634 'address': ubinascii.hexlify(addr,':').decode('utf-8'),
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1635 'rssi': rssi,
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1636 'adv_type': adv_type,
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1637 'advertisement': bytes(adv_data),
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1638 }})
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1639 elif event == IRQ_SCAN_DONE:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1640 _scan_done = True
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1641
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1642 ble = bluetooth.BLE()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1643
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1644 ble_active = ble.active()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1645 if not ble_active:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1646 ble.active(True)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1647
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1648 ble.irq(_bleIrq)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1649 ble.gap_scan({0} * 1000, 1000000, 50000, True)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1650 while not _scan_done:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1651 time.sleep(0.2)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1652
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1653 if not ble_active:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1654 ble.active(False)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1655
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1656 ble_scan()
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1657 del ble_scan, _scan_done
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1658 """.format(
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1659 timeout
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1660 )
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1661 out, err = self.executeCommands(
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1662 command, mode=self._submitMode, timeout=(timeout + 5) * 1000
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1663 )
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1664 if err:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1665 return {}, err
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1666
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1667 scanResults = {}
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1668 for line in out.decode("utf-8").splitlines():
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1669 res = ast.literal_eval(line)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1670 address = res["address"]
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1671 if address not in scanResults:
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1672 scanResults[address] = BluetoothAdvertisement(address)
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1673 scanResults[address].update(
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1674 res["adv_type"], res["rssi"], res["advertisement"]
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1675 )
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1676
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1677 return scanResults, ""
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1678
5fe9bfafbc7c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
1679 ##################################################################
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1680 ## Methods below implement Ethernet related methods
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1681 ##################################################################
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1682
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1683 def hasEthernet(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1684 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1685 Public method to check the availability of Ethernet.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1686
9880
f425c58cf8e9 Fixed a bug in the recently added µPy code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
1687 @return tuple containing a flag indicating the availability of Ethernet
f425c58cf8e9 Fixed a bug in the recently added µPy code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
1688 and the Ethernet type (picowiz)
f425c58cf8e9 Fixed a bug in the recently added µPy code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
1689 @rtype tuple of (bool, str)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1690 @exception OSError raised to indicate an issue with the device
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1691 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1692 command = """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1693 def has_eth():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1694 try:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1695 import network
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1696 if hasattr(network, 'WIZNET5K'):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1697 return True, 'picowiz'
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1698 except ImportError:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1699 pass
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1700
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1701 return False, ''
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1702
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1703 print(has_eth())
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1704 del has_eth
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1705 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1706
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1707 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1708 if err:
9880
f425c58cf8e9 Fixed a bug in the recently added µPy code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
1709 raise OSError(self._shortError(err))
f425c58cf8e9 Fixed a bug in the recently added µPy code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
1710
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1711 return ast.literal_eval(out.decode("utf-8"))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1712
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1713 def getEthernetStatus(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1714 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1715 Public method to get Ethernet status data of the connected board.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1716
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1717 @return list of tuples containing the translated status data label and
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1718 the associated value
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1719 @rtype list of tuples of (str, str)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1720 @exception OSError raised to indicate an issue with the device
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1721 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1722 command = """{0}
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1723 def ethernet_status():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1724 import network
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1725 import ubinascii
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1726 import ujson
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1727
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1728 w5x00_init()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1729
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1730 res = {{
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1731 'active': nic.active(),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1732 'connected': nic.isconnected(),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1733 'status': nic.status(),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1734 'ifconfig': nic.ifconfig(),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1735 'mac': ubinascii.hexlify(nic.config('mac'), ':').decode(),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1736 }}
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1737 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1738 res['hostname'] = network.hostname()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1739 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1740 res['hostname'] = ''
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1741 print(ujson.dumps(res))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1742
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1743 ethernet_status()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1744 del ethernet_status, w5x00_init
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1745 """.format(
9888
f76eeb80907b Adapted RP2040Device to the renamed method of WiznetUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9880
diff changeset
1746 WiznetUtilities.mpyWiznetInit()
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1747 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1748
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1749 out, err = self.executeCommands(command, mode=self._submitMode)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1750 if err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1751 raise OSError(self._shortError(err))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1752
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1753 status = []
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1754 ethStatus = json.loads(out.decode("utf-8"))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1755 status.append((self.tr("Active"), self.bool2str(ethStatus["active"])))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1756 status.append((self.tr("Connected"), self.bool2str(ethStatus["connected"])))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1757 status.append(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1758 (
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1759 self.tr("Status"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1760 self.__statusTranslations["picowiz"][ethStatus["status"]],
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1761 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1762 )
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1763 status.append(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1764 (
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1765 self.tr("Hostname"),
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1766 ethStatus["hostname"] if ethStatus["hostname"] else self.tr("unknown"),
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1767 )
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1768 )
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1769 status.append((self.tr("IPv4 Address"), ethStatus["ifconfig"][0]))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1770 status.append((self.tr("Netmask"), ethStatus["ifconfig"][1]))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1771 status.append((self.tr("Gateway"), ethStatus["ifconfig"][2]))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1772 status.append((self.tr("DNS"), ethStatus["ifconfig"][3]))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1773 status.append((self.tr("MAC-Address"), ethStatus["mac"]))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1774
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1775 return status
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1776
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1777 def connectToLan(self, config, hostname):
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1778 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1779 Public method to connect the connected device to the LAN.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1780
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1781 @param config configuration for the connection (either the string 'dhcp'
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1782 for a dynamic address or a tuple of four strings with the IPv4 parameters.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1783 @type str or tuple of (str, str, str, str)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1784 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1785 @type str
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1786 @return tuple containing a flag indicating success and an error message
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1787 @rtype tuple of (bool, str)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1788 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1789 command = """{0}
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1790 def connect_lan(config, hostname):
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1791 import network
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1792 import time
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1793
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1794 if hostname:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1795 try:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1796 network.hostname(hostname)
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1797 except AttributeError:
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1798 pass
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1799
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1800 w5x00_init()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1801
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1802 nic.active(False)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1803 nic.active(True)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1804 nic.ifconfig(config)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1805 max_wait = 140
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1806 while max_wait:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1807 if nic.isconnected():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1808 break
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1809 max_wait -= 1
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1810 time.sleep(0.1)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1811 print(nic.isconnected())
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1812
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1813 connect_lan({1}, {2})
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1814 del connect_lan, w5x00_init
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1815 """.format(
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1816 WiznetUtilities.mpyWiznetInit(),
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1817 "'dhcp'" if config == "dhcp" else config,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1818 repr(hostname) if hostname else "''",
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1819 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1820
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1821 with EricOverrideCursor():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1822 out, err = self.executeCommands(
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1823 command, mode=self._submitMode, timeout=15000
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1824 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1825 if err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1826 return False, err
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1827
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1828 return out.strip() == b"True", ""
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1829
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1830 def disconnectFromLan(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1831 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1832 Public method to disconnect from the LAN.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1833
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1834 @return tuple containing a flag indicating success and an error message
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1835 @rtype tuple of (bool, str)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1836 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1837 command = """{0}
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1838 def disconnect_lan():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1839 import time
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1840
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1841 w5x00_init()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1842
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1843 nic.active(False)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1844 time.sleep(0.1)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1845 print(not nic.isconnected())
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1846
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1847 disconnect_lan()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1848 del disconnect_lan, w5x00_init
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1849 """.format(
9888
f76eeb80907b Adapted RP2040Device to the renamed method of WiznetUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9880
diff changeset
1850 WiznetUtilities.mpyWiznetInit(),
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1851 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1852
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1853 with EricOverrideCursor():
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1854 out, err = self.executeCommands(
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1855 command, mode=self._submitMode, timeout=15000
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1856 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1857 if err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1858 return False, err
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1859
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1860 return out.strip() == b"True", ""
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1861
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1862 def isLanConnected(self):
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1863 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1864 Public method to check the LAN connection status.
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1865
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1866 @return flag indicating that the device is connected to the LAN
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1867 @rtype bool
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1868 """
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1869 command = """{0}
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1870 def is_connected():
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1871 import network
10138
56614cf9d03c MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10089
diff changeset
1872
10144
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1873 w5x00_init()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1874
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1875 print(nic.isconnected())
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1876
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1877 is_connected()
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1878 del is_connected, w5x00_init
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1879 """.format(
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1880 WiznetUtilities.mpyWiznetInit(),
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1881 )
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1882
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1883 out, err = self.executeCommands(command, mode=self._submitMode)
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1884 if err:
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1885 return False
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1886
45a9177c8e77 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10138
diff changeset
1887 return out.strip() == b"True"
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1888
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1889 def checkInternetViaLan(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1890 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1891 Public method to check, if the internet can be reached (LAN variant).
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1892
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1893 @return tuple containing a flag indicating reachability and an error string
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1894 @rtype tuple of (bool, str)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1895 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1896 command = """{0}
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1897 def check_internet():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1898 import network
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1899 import socket
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1900
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1901 w5x00_init()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1902
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1903 if nic.isconnected():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1904 s = socket.socket()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1905 try:
10233
51a6649ba79d MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10170
diff changeset
1906 s.connect(socket.getaddrinfo('quad9.net', 443)[0][-1])
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1907 s.close()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1908 print(True)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1909 except:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1910 print(False)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1911 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1912 print(False)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1913
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1914 check_internet()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1915 del check_internet, w5x00_init
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1916 """.format(
9888
f76eeb80907b Adapted RP2040Device to the renamed method of WiznetUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9880
diff changeset
1917 WiznetUtilities.mpyWiznetInit(),
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1918 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1919
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1920 out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1921 if err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1922 return False, err
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1923
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1924 return out.strip() == b"True", ""
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1925
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1926 def deactivateEthernet(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1927 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1928 Public method to deactivate the Ethernet interface of the connected device.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1929
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1930 @return tuple containg a flag indicating success and an error message
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1931 @rtype tuple of (bool, str)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1932 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1933 # The WIZnet 5x00 interface cannot be switched off explicitly. That means,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1934 # disconnect from the LAN is all we can do.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1935
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1936 return self.disconnectFromLan()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1937
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1938 def writeLanAutoConnect(self, config, hostname):
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1939 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1940 Public method to generate a script and associated configuration to connect the
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1941 device to the LAN during boot time.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1942
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1943 @param config configuration for the connection (either the string 'dhcp'
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1944 for a dynamic address or a tuple of four strings with the IPv4 parameters.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1945 @type str or tuple of (str, str, str, str)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1946 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1947 @type str
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1948 @return tuple containing a flag indicating success and an error message
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1949 @rtype tuple of (bool, str)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1950 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1951 command = """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1952 def modify_boot():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1953 add = True
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1954 try:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1955 with open('/boot.py', 'r') as f:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1956 for ln in f.readlines():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1957 if 'wiznet_connect' in ln:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1958 add = False
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1959 break
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1960 except:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1961 pass
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1962 if add:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1963 with open('/boot.py', 'a') as f:
9888
f76eeb80907b Adapted RP2040Device to the renamed method of WiznetUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9880
diff changeset
1964 f.write('\\n')
f76eeb80907b Adapted RP2040Device to the renamed method of WiznetUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9880
diff changeset
1965 f.write('import wiznet_connect\\n')
f76eeb80907b Adapted RP2040Device to the renamed method of WiznetUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9880
diff changeset
1966 f.write('nic = wiznet_connect.connect_lan()\\n')
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1967 print(True)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1968
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1969 modify_boot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1970 del modify_boot
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1971 """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1972 devconfig = "ifconfig = {0}\nhostname = {1}".format(
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1973 "'dhcp'" if config == "dhcp" else config,
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1974 repr(hostname) if hostname else "''",
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1975 )
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1976 try:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1977 # write secrets file
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10144
diff changeset
1978 self.putData("/wiznet_config.py", devconfig.encode("utf-8"))
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1979 # copy auto-connect file
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1980 self.put(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1981 os.path.join(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1982 os.path.dirname(__file__), "MCUScripts", "picoWiznetConnect.py"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1983 ),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1984 "/wiznet_connect.py",
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1985 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1986 except OSError as err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1987 return False, str(err)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1988
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1989 # modify boot.py
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
1990 out, err = self.executeCommands(command, mode=self._submitMode)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1991 if err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1992 return False, err
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1993
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1994 return out.decode("utf-8").strip() == "True", ""
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1995
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1996 def removeLanAutoConnect(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1997 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1998 Public method to remove the saved IPv4 parameters from the connected device.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
1999
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2000 Note: This disables the LAN auto-connect feature.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2001
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2002 @return tuple containing a flag indicating success and an error message
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2003 @rtype tuple of (bool, str)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2004 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2005 try:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2006 self.rm("/wiznet_config.py")
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2007 except OSError as err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2008 return False, str(err)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2009
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2010 return True, ""
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2011
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2012 ##################################################################
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2013 ## Methods below implement NTP related methods
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2014 ##################################################################
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2015
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2016 def hasNetworkTime(self):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2017 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2018 Public method to check the availability of network time functions.
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2019
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2020 @return flag indicating the availability of network time functions
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2021 @rtype bool
9870
0399d3607829 Fixed a few code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9868
diff changeset
2022 @exception OSError raised to indicate an issue with the device
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2023 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2024 command = """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2025 def has_ntp():
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2026 try:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2027 import ntptime
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2028 return True
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2029 except ImportError:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2030 return False
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2031
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2032 print(has_ntp())
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2033 del has_ntp
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2034 """
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
2035 out, err = self.executeCommands(command, mode=self._submitMode)
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2036 if err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2037 raise OSError(self._shortError(err))
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2038 return out.strip() == b"True"
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2039
9888
f76eeb80907b Adapted RP2040Device to the renamed method of WiznetUtilities.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9880
diff changeset
2040 def setNetworkTime(self, server="pool.ntp.org", tzOffset=0, timeout=10):
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2041 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2042 Public method to set the time to the network time retrieved from an
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2043 NTP server.
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2044
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2045 @param server name of the NTP server to get the network time from
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2046 (defaults to "0.pool.ntp.org")
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2047 @type str (optional)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2048 @param tzOffset offset with respect to UTC (defaults to 0)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2049 @type int (optional)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2050 @param timeout maximum time to wait for a server response in seconds
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2051 (defaults to 10)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2052 @type int
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2053 @return tuple containing a flag indicating success and an error string
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2054 @rtype tuple of (bool, str)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2055 """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2056 command = """
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2057 def set_ntp_time(server, tz_offset, timeout):
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2058 import network
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2059 import ntptime
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2060 import machine
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2061
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2062 if hasattr(network, 'WLAN') and not network.WLAN(network.STA_IF).isconnected():
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2063 return False
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2064 elif hasattr(network, 'WIZNET5K'):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2065 try:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2066 if not nic.isconnected():
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2067 return False
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2068 except NameError:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9870
diff changeset
2069 return False
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2070
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2071 ntptime.host = server
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2072 ntptime.timeout = timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2073 ntptime.settime()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2074
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2075 rtc = machine.RTC()
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2076 t = list(rtc.datetime())
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2077 t[4] += tz_offset
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2078 rtc.datetime(t)
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2079
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2080 return True
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2081
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2082 try:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2083 print({{
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2084 'result': set_ntp_time({0}, {1}, {2}),
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2085 'error': '',
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2086 }})
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2087 except Exception as err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2088 print({{
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2089 'result': False,
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2090 'error': str(err),
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2091 }})
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2092 del set_ntp_time
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2093 """.format(
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2094 repr(server), tzOffset, timeout
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2095 )
9989
286c2a21f36f MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9908
diff changeset
2096 out, err = self.executeCommands(
9868
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2097 command, mode=self._submitMode, timeout=(timeout + 2) * 1000
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2098 )
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2099 if err:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2100 return False, err
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2101 else:
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2102 res = ast.literal_eval(out.decode("utf-8"))
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2103 return res["result"], res["error"]
467288cffee2 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9843
diff changeset
2104
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
2105
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: 10621
diff changeset
2106 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
2107 """
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
2108 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
2109
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
2110 @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
2111 @type MicroPythonWidget
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
2112 @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
2113 @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: 10621
diff changeset
2114 @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
2115 @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: 10621
diff changeset
2116 @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
2117 @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: 10621
diff changeset
2118 @param _boardName name of the board (unused)
9738
4ae976ee5339 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
2119 @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: 10621
diff changeset
2120 @param _serialNumber serial number of the board (unused)
9751
606ac0e26533 Various enhancements and improvements to the MicroPython/CircuitPython related modules.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9749
diff changeset
2121 @type str
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
2122 @return reference to the instantiated device object
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
2123 @rtype RP2Device
9496
05017f795c24 Changed MicroPython device imports to use importlib.import_module().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
2124 """
10897
caba0e2456b6 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10806
diff changeset
2125 return RP2Device(microPythonWidget, deviceType)

eric ide

mercurial