src/eric7/MicroPython/EthernetDialogs/EthernetController.py

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

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

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

9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11005
diff changeset
3 # Copyright (c) 2023 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the Ethernet related functionality.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 from PyQt6.QtCore import QObject, pyqtSlot
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 from PyQt6.QtWidgets import QDialog, QMenu
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
12
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from eric7.EricWidgets import EricMessageBox
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 class EthernetController(QObject):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 Class implementing the Ethernet related functionality.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 def __init__(self, microPython, parent=None):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 Constructor
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 @param microPython reference to the MicroPython widget
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 @type MicroPythonWidgep
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 @param parent reference to the parent object (defaults to None)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 @type QObject (optional)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 super().__init__(parent)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 self.__mpy = microPython
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 def createMenu(self, menu):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 Public method to create the Ethernet submenu.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @param menu reference to the parent menu
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 @type QMenu
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @return reference to the created menu
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @rtype QMenu
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 ethernetMenu = QMenu(self.tr("Ethernet Functions"), menu)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 ethernetMenu.setTearOffEnabled(True)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 ethernetMenu.addAction(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.tr("Show Ethernet Status"), self.__showEthernetStatus
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 ethernetMenu.addSeparator()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 ethernetMenu.addAction(self.tr("Connect to LAN (DHCP)"), self.__connectLanDhcp)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 ethernetMenu.addAction(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.tr("Connect to LAN (fixed IP)"), self.__connectLanIp
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 ethernetMenu.addAction(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.tr("Check Internet Connection"), self.__checkInternet
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 ethernetMenu.addAction(self.tr("Disconnect from LAN"), self.__disconnectLan)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 ethernetMenu.addSeparator()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 ethernetMenu.addAction(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.tr("Write Auto-Connect Script"), self.__writeAutoConnect
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 ethernetMenu.addAction(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.tr("Remove Auto-Connect Script"), self.__removeAutoConnect
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 ethernetMenu.addSeparator()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 ethernetMenu.addAction(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.tr("Deactivate Ethernet Interface"), self.__deactivateEthernet
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 ethernetMenu.addSeparator()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 ethernetMenu.addAction(self.tr("Set Network Time"), self.__setNetworkTime)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 # add device specific entries (if there are any)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 self.__mpy.getDevice().addDeviceEthernetEntries(ethernetMenu)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75 return ethernetMenu
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 def __showEthernetStatus(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Private slot to show a dialog with the WiFi status of the current device.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 from .EthernetStatusDialog import EthernetStatusDialog
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 try:
9885
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
85 with EricOverrideCursor():
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
86 status = self.__mpy.getDevice().getEthernetStatus()
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
87 # status is a list of user labels and associated values
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
11005
b918c6c2736b MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
89 dlg = EthernetStatusDialog(status, parent=self.__mpy)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 dlg.exec()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 except Exception as exc:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.__mpy.showError("getEthernetStatus()", str(exc))
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 def __connectLanDhcp(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 Private slot to connect to the LAN with a dynamic IPv4 address (DHCP mode).
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
99 from .HostnameDialog import HostnameDialog
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
100
11005
b918c6c2736b MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
101 dlg = HostnameDialog(parent=self.__mpy)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
102 hostname = (
10167
0a62a4bf749c Corrected some code style and formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10153
diff changeset
103 dlg.getHostname() if dlg.exec() == QDialog.DialogCode.Accepted else ""
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
104 )
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
105 self.__connectLan("dhcp", hostname)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 def __connectLanIp(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 Private slot to connect to the LAN with a fixed IPv4 address (fixed address
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 mode).
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 from .IPv4AddressDialog import IPv4AddressDialog
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 dlg = IPv4AddressDialog(withDhcp=False, parent=self.__mpy)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 if dlg.exec() == QDialog.DialogCode.Accepted:
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
117 ifconfig, hostname = dlg.getIPv4Address()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
118 self.__connectLan(ifconfig, hostname)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
120 def __connectLan(self, config, hostname):
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 Private method to connect the connected device to the LAN.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 @param config configuration for the connection (either the string 'dhcp'
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 for a dynamic address or a tuple of four strings with the IPv4 parameters.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 @type str of tuple of (str, str, str, str)
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
127 @param hostname host name of the device
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
128 @type str
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
130 success, error = self.__mpy.getDevice().connectToLan(config, hostname)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 if success:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 EricMessageBox.information(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.tr("Connect to LAN"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.tr("<p>The device was connected to the LAN successfully.</p>"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 self.tr("Connect to LAN"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 "<p>The device could not connect to the LAN.</p><p>Reason: {0}</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 ).format(error if error else self.tr("unknown")),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 def __disconnectLan(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 Private slot to disconnect from the LAN.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 success, error = self.__mpy.getDevice().disconnectFromLan()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 if success:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 EricMessageBox.information(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.tr("Disconnect from LAN"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 self.tr("<p>The device was disconnected from the LAN.</p>"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 self.tr("Disconnect from LAN"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 "<p>The device could not be disconnected from the LAN.</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 "<p>Reason: {0}</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 ).format(error if error else self.tr("unknown")),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 def __checkInternet(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 Private slot to check the availability of an internet connection.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
9885
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
173 with EricOverrideCursor():
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
174 success, error = self.__mpy.getDevice().checkInternetViaLan()
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 if not error:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 msg = (
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 self.tr("<p>The internet connection is <b>available</b>.</p>")
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 if success
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 else self.tr("<p>The internet connection is <b>not available</b>.</p>")
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 EricMessageBox.information(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.tr("Check Internet Connection"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 msg,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 self.tr("Check Internet Connection"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 "<p>The internet is not available.</p><p>Reason: {0}</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 ).format(error if error else self.tr("unknown")),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 def __writeAutoConnect(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 Private slot to generate a script and associated configuration to connect the
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 device during boot time.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 This will also modify the boot script to perform the automatic connection.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 from .IPv4AddressDialog import IPv4AddressDialog
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 dlg = IPv4AddressDialog(withDhcp=True, parent=self.__mpy)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 if dlg.exec() == QDialog.DialogCode.Accepted:
10153
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
207 ifconfig, hostname = dlg.getIPv4Address()
ffe7432f716b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9885
diff changeset
208 ok, err = self.__mpy.getDevice().writeLanAutoConnect(ifconfig, hostname)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 if ok:
9885
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
210 if self.__mpy.getDevice().hasCircuitPython():
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
211 # CircuitPython will reset for the REPL, so no auto-connect
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
212 # available.
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
213 EricMessageBox.information(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
214 None,
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
215 self.tr("Write Auto-Connect Script"),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
216 self.tr(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
217 "<p>The auto-connect script and associated configuration"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
218 " was saved on the device. Use the script like this:</p>"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
219 "<p>import wiznet_connect<br/>"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
220 "nic = wiznet_connect.connect_lan()</p>"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
221 ),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
222 )
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
223 else:
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
224 EricMessageBox.information(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
225 None,
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
226 self.tr("Write Auto-Connect Script"),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
227 self.tr(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
228 "<p>The auto-connect script and associated configuration"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
229 " was saved on the device. The device will connect to the"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
230 " LAN at boot time.</p>"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
231 ),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
232 )
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 self.tr("Write Auto-Connect Script"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 "<p>The auto-connect script and associated configuration could"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 " not be saved on the device.</p><p>Reason: {0}</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 ).format(err if err else self.tr("unknown")),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 def __removeAutoConnect(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 Private slot to remove the boot time connect capability.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 This will not remove the auto-connect part of the boot script. This needs to be
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 done manually if desired.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 ok = EricMessageBox.yesNo(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 self.tr("Remove Auto-Connect Script"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 "Shall the saved IPv4 parameters really be removed from the connected"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 " device?"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 ),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 if ok:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 ok, err = self.__mpy.getDevice().removeLanAutoConnect()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 if ok:
9885
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
262 if self.__mpy.getDevice().hasCircuitPython():
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
263 EricMessageBox.information(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
264 None,
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
265 self.tr("Remove Auto-Connect Script"),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
266 self.tr(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
267 "<p>The IPv4 parameters were removed from the device.</p>"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
268 ),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
269 )
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
270 else:
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
271 EricMessageBox.information(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
272 None,
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
273 self.tr("Remove Auto-Connect Script"),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
274 self.tr(
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
275 "<p>The IPv4 parameters were removed from the device. The"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
276 " device will not connect to the LAN at boot time anymore."
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
277 "</p>"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
278 ),
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
279 )
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 self.tr("Remove Auto-Connect Script"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 "<p>The IPv4 parameters could not be removed from the device."
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 "</p><p>Reason: {0}</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 ).format(err if err else self.tr("unknown")),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 def __deactivateEthernet(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 Private slot to deactivate the Ethernet interface.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 ok, err = self.__mpy.getDevice().deactivateEthernet()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 if ok:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 EricMessageBox.information(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 self.tr("Deactivate Ethernet Interface"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 self.tr("The Ethernet interface was deactivated successfully."),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 msg = self.tr("<p>The Ethernet interface could not be deactivated.</p>")
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 if err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 msg += self.tr("<p>Reason: {0}</p>").format(err)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 self.tr("Deactivate Ethernet Interface"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 msg,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312 @pyqtSlot()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 def __setNetworkTime(self):
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 Private slot to synchronize the device clock to network time.
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 """
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 from ..NtpParametersDialog import NtpParametersDialog
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 device = self.__mpy.getDevice()
10230
1311cd5d117e MicroPython interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10167
diff changeset
320 if not device.hasNetworkTime():
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 if device.hasCircuitPython():
9885
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
322 if device.getDeviceData("ethernet"):
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
323 moduleName = "adafruit_wiznet5k"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
324 else:
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
325 moduleName = "adafruit_ntp"
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 EricMessageBox.warning(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 self.tr("Set Network Time"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
329 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 "<p>The device does not support network time synchronization."
9885
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
331 " The module <b>{0}</b> is not installed.</p>"
05cbf70e8f10 MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9878
diff changeset
332 ).format(moduleName),
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
334 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
337 self.tr("Set Network Time"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
338 self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
339 "<p>The device does not support network time synchronization."
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
340 " The module <b>ntptime</b> is not available.</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
341 ),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
342 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 return
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
344
11005
b918c6c2736b MicroPython Interface
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
345 dlg = NtpParametersDialog(parent=self.__mpy)
9878
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 if dlg.exec() == QDialog.DialogCode.Accepted:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 server, tzOffset, isDst, timeout = dlg.getParameters()
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 if isDst:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349 tzOffset += 1
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
350
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
351 ok, err = self.__mpy.getDevice().setNetworkTime(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
352 server=server, tzOffset=tzOffset, timeout=timeout
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
353 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
354 if ok:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
355 EricMessageBox.information(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
356 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
357 self.tr("Set Network Time"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
358 self.tr("The device time was synchronized successfully."),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
359 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
360 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
361 if err:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
362 msg = self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
363 "<p>The device time could not be synchronized.</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
364 "<p>Reason: {0}</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
365 ).format(err)
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
366 else:
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
367 msg = self.tr(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
368 "<p>The device time could not be synchronized. Is the device"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
369 " connected to a LAN?</p>"
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
370 )
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
371 EricMessageBox.critical(
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
372 None,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
373 self.tr("Set Network Time"),
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
374 msg,
a82014a9e57b MicroPython
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 )

eric ide

mercurial