src/eric7/MicroPython/EthernetDialogs/EthernetController.py

Mon, 05 May 2025 17:40:08 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Mon, 05 May 2025 17:40:08 +0200
branch
eric7
changeset 11263
28f0ead11a82
parent 11090
f5f5f5803935
permissions
-rw-r--r--

MicroPython
- Added support for IPv6 for WiFi and Ethernet enabled devices (MPy ≥ 1.24.0).

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

eric ide

mercurial