Sat, 25 Feb 2023 19:18:07 +0100
MicroPython
- added support for 'paste' mode to circumvent the reset of CircuitPython when executing some commands through the device interface
--- a/src/eric7/APIs/Python3/eric7.api Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/APIs/Python3/eric7.api Sat Feb 25 19:18:07 2023 +0100 @@ -1124,6 +1124,15 @@ eric7.EricNetwork.EricGoogleMailHelpers.TOKEN_FILE?7 eric7.EricNetwork.EricGoogleMailHelpers.installGoogleAPIPackages?4() eric7.EricNetwork.EricGoogleMailHelpers.isClientSecretFileAvailable?4() +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.address?4() +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.addressChanged?7 +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.clear?4() +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.eventFilter?4(obj, evt) +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.hasAcceptableInput?4() +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.setAddress?4(address) +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.setText?4(address) +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget.text?4() +eric7.EricNetwork.EricIPv4InputWidget.EricIPv4InputWidget?1(parent=None) eric7.EricNetwork.EricJsonClient.EricJsonClient.handleCall?4(method, params) eric7.EricNetwork.EricJsonClient.EricJsonClient.poll?4(waitMethod="") eric7.EricNetwork.EricJsonClient.EricJsonClient.run?4() @@ -2590,43 +2599,55 @@ eric7.MicroPython.Devices.DeviceBase.BaseDevice._getSetTimeCode?5() eric7.MicroPython.Devices.DeviceBase.BaseDevice._shortError?5(error) eric7.MicroPython.Devices.DeviceBase.BaseDevice.addDeviceMenuEntries?4(menu) +eric7.MicroPython.Devices.DeviceBase.BaseDevice.addDeviceWifiEntries?4(menu) eric7.MicroPython.Devices.DeviceBase.BaseDevice.canRunScript?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.canStartFileManager?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.canStartPlotter?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.canStartRepl?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.cd?4(dirname) eric7.MicroPython.Devices.DeviceBase.BaseDevice.checkDeviceData?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.checkInternet?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.connectWifi?4(ssid, password) +eric7.MicroPython.Devices.DeviceBase.BaseDevice.deactivateInterface?4(interface) eric7.MicroPython.Devices.DeviceBase.BaseDevice.deviceName?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.disconnectWifi?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.downloadFirmware?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.fileSystemInfo?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.forceInterrupt?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.get?4(deviceFileName, hostFileName=None) eric7.MicroPython.Devices.DeviceBase.BaseDevice.getBoardInformation?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.getConnectedClients?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.getData?4(deviceFileName) -eric7.MicroPython.Devices.DeviceBase.BaseDevice.getDeviceData?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.getDeviceData?4(key=None) eric7.MicroPython.Devices.DeviceBase.BaseDevice.getDeviceType?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.getDocumentationUrl?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.getDownloadMenuEntries?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.getFirmwareUrl?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.getModules?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.getTime?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.getWifiData?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.getWorkspace?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.handleDataFlood?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasBluetooth?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasCircuitPython?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasDocumentationUrl?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasEthernet?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasFirmwareUrl?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasFlashMenuEntry?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasTimeCommands?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.hasWifi?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.lls?4(dirname="", fullstat=False, showHidden=False) eric7.MicroPython.Devices.DeviceBase.BaseDevice.ls?4(dirname="") eric7.MicroPython.Devices.DeviceBase.BaseDevice.mkdir?4(dirname) eric7.MicroPython.Devices.DeviceBase.BaseDevice.put?4(hostFileName, deviceFileName=None) eric7.MicroPython.Devices.DeviceBase.BaseDevice.putData?4(deviceFileName, content) eric7.MicroPython.Devices.DeviceBase.BaseDevice.pwd?4() +eric7.MicroPython.Devices.DeviceBase.BaseDevice.removeCredentials?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.rm?4(filename) eric7.MicroPython.Devices.DeviceBase.BaseDevice.rmdir?4(dirname) eric7.MicroPython.Devices.DeviceBase.BaseDevice.rmrf?4(name, recursive=False, force=False) eric7.MicroPython.Devices.DeviceBase.BaseDevice.runScript?4(script) +eric7.MicroPython.Devices.DeviceBase.BaseDevice.scanNetworks?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.selectDeviceDirectory?4(deviceDirectories) eric7.MicroPython.Devices.DeviceBase.BaseDevice.sendCommands?4(commandsList) eric7.MicroPython.Devices.DeviceBase.BaseDevice.setButtons?4() @@ -2634,8 +2655,11 @@ eric7.MicroPython.Devices.DeviceBase.BaseDevice.setFileManager?4(on) eric7.MicroPython.Devices.DeviceBase.BaseDevice.setPlotter?4(on) eric7.MicroPython.Devices.DeviceBase.BaseDevice.setRepl?4(on) +eric7.MicroPython.Devices.DeviceBase.BaseDevice.startAccessPoint?4(ssid, security=None, password=None, ifconfig=None) +eric7.MicroPython.Devices.DeviceBase.BaseDevice.stopAccessPoint?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.supportsLocalFileAccess?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.syncTime?4(deviceType, hasCPy=False) +eric7.MicroPython.Devices.DeviceBase.BaseDevice.writeCredentials?4(ssid, password) eric7.MicroPython.Devices.DeviceBase.BaseDevice?1(microPythonWidget, deviceType, parent=None) eric7.MicroPython.Devices.EspDevices.EspDevice._getSetTimeCode?5() eric7.MicroPython.Devices.EspDevices.EspDevice.addDeviceMenuEntries?4(menu) @@ -2643,13 +2667,25 @@ eric7.MicroPython.Devices.EspDevices.EspDevice.canStartFileManager?4() eric7.MicroPython.Devices.EspDevices.EspDevice.canStartPlotter?4() eric7.MicroPython.Devices.EspDevices.EspDevice.canStartRepl?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.checkInternet?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.connectWifi?4(ssid, password) +eric7.MicroPython.Devices.EspDevices.EspDevice.deactivateInterface?4(interface) eric7.MicroPython.Devices.EspDevices.EspDevice.deviceName?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.disconnectWifi?4() eric7.MicroPython.Devices.EspDevices.EspDevice.forceInterrupt?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.getConnectedClients?4() eric7.MicroPython.Devices.EspDevices.EspDevice.getDocumentationUrl?4() eric7.MicroPython.Devices.EspDevices.EspDevice.getFirmwareUrl?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.getWifiData?4() eric7.MicroPython.Devices.EspDevices.EspDevice.hasFlashMenuEntry?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.hasWifi?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.removeCredentials?4() eric7.MicroPython.Devices.EspDevices.EspDevice.runScript?4(script) +eric7.MicroPython.Devices.EspDevices.EspDevice.scanNetworks?4() eric7.MicroPython.Devices.EspDevices.EspDevice.setButtons?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.startAccessPoint?4(ssid, security=None, password=None, ifconfig=None) +eric7.MicroPython.Devices.EspDevices.EspDevice.stopAccessPoint?4() +eric7.MicroPython.Devices.EspDevices.EspDevice.writeCredentials?4(ssid, password) eric7.MicroPython.Devices.EspDevices.EspDevice?1(microPythonWidget, deviceType, parent=None) eric7.MicroPython.Devices.EspDevices.createDevice?4(microPythonWidget, deviceType, vid, pid, boardName, serialNumber) eric7.MicroPython.Devices.EspDialogs.EspBackupRestoreFirmwareDialog.EspBackupRestoreFirmwareDialog.Chips?7 @@ -2681,6 +2717,8 @@ eric7.MicroPython.Devices.GenericMicroPythonDevices.GenericMicroPythonDevice?1(microPythonWidget, deviceType, vid, pid, parent=None) eric7.MicroPython.Devices.GenericMicroPythonDevices.createDevice?4(microPythonWidget, deviceType, vid, pid, boardName, serialNumber) eric7.MicroPython.Devices.IgnoredBoards?7 +eric7.MicroPython.Devices.MCUScripts.esp32WiFiConnect.connectWiFi?4() +eric7.MicroPython.Devices.MCUScripts.picowWiFiConnect.connectWiFi?4() eric7.MicroPython.Devices.MicrobitDevices.MicrobitDevice._getSetTimeCode?5() eric7.MicroPython.Devices.MicrobitDevices.MicrobitDevice.addDeviceMenuEntries?4(menu) eric7.MicroPython.Devices.MicrobitDevices.MicrobitDevice.canRunScript?4() @@ -2721,17 +2759,30 @@ eric7.MicroPython.Devices.PyBoardDevices.createDevice?4(microPythonWidget, deviceType, vid, pid, boardName, serialNumber) eric7.MicroPython.Devices.RP2040Devices.RP2040Device._getSetTimeCode?5() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.addDeviceMenuEntries?4(menu) +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.addDeviceWifiEntries?4(menu) eric7.MicroPython.Devices.RP2040Devices.RP2040Device.canRunScript?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.canStartFileManager?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.canStartPlotter?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.canStartRepl?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.checkInternet?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.connectWifi?4(ssid, password) +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.deactivateInterface?4(interface) eric7.MicroPython.Devices.RP2040Devices.RP2040Device.deviceName?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.disconnectWifi?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.forceInterrupt?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.getConnectedClients?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.getDocumentationUrl?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.getDownloadMenuEntries?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.getWifiData?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.hasFlashMenuEntry?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.hasWifi?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.removeCredentials?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.runScript?4(script) +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.scanNetworks?4() eric7.MicroPython.Devices.RP2040Devices.RP2040Device.setButtons?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.startAccessPoint?4(ssid, security=None, password=None, ifconfig=None) +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.stopAccessPoint?4() +eric7.MicroPython.Devices.RP2040Devices.RP2040Device.writeCredentials?4(ssid, password) eric7.MicroPython.Devices.RP2040Devices.RP2040Device?1(microPythonWidget, deviceType, parent=None) eric7.MicroPython.Devices.RP2040Devices.createDevice?4(microPythonWidget, deviceType, vid, pid, boardName, serialNumber) eric7.MicroPython.Devices.SupportedBoards?7 @@ -2755,12 +2806,15 @@ eric7.MicroPython.Devices.getSupportedDevices?4() eric7.MicroPython.IgnoredDevicesDialog.IgnoredDevicesDialog.getDevices?4() eric7.MicroPython.IgnoredDevicesDialog.IgnoredDevicesDialog?1(deviceList, parent=None) +eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.PasteModePrompt?7 +eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.TracebackMarker?7 eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.connectToDevice?4(port) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.dataReceived?7 eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.disconnectFromDevice?4() -eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.execute?4(commands) +eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.execute?4(commands, *, mode="raw", timeout=0) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.executeAsync?4(commandsList) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.executeAsyncFinished?7 +eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.executeAsyncPaste?4(commandsList) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.handlePreferencesChanged?4() eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.isConnected?4() eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.probeDevice?4() @@ -2836,7 +2890,7 @@ eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.hasTimedOut?4() eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.isConnected?4() eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.openSerialLink?4(port) -eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.readUntil?4(expected=b"\n", size=None) +eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.readUntil?4(expected=b"\n", size=None, timeout=0) eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.setTimeout?4(timeout) eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort?1(timeout=10000, parent=None) eric7.MicroPython.MicroPythonWidget.AnsiColorSchemes?7 @@ -2855,6 +2909,7 @@ eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.eventFilter?4(obj, evt) eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getCurrentBoard?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getCurrentPort?4() +eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getDevice?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getDeviceWorkspace?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.handleDataFlood?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.isConnected?4() @@ -2868,6 +2923,7 @@ eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_replButton_clicked?4(checked) eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_runButton_clicked?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.setActionButtons?4(**kwargs) +eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.showError?4(method, error) eric7.MicroPython.MicroPythonWidget.MicroPythonWidget?1(parent=None) eric7.MicroPython.ShowModulesDialog.ShowModulesDialog.getSelection?4() eric7.MicroPython.ShowModulesDialog.ShowModulesDialog.on_modulesList_itemChanged?4(item) @@ -2894,6 +2950,25 @@ eric7.MicroPython.UnknownDevicesDialog.UnknownDevicesDialog.on_reportButton_clicked?4() eric7.MicroPython.UnknownDevicesDialog.UnknownDevicesDialog.on_restoreButton_clicked?4() eric7.MicroPython.UnknownDevicesDialog.UnknownDevicesDialog?1(parent=None) +eric7.MicroPython.WifiDialogs.WifiApConfigDialog.WifiApConfigDialog.getApConfig?4() +eric7.MicroPython.WifiDialogs.WifiApConfigDialog.WifiApConfigDialog.on_apShowPasswordButton_clicked?4(checked) +eric7.MicroPython.WifiDialogs.WifiApConfigDialog.WifiApConfigDialog?1(withIP, parent=None) +eric7.MicroPython.WifiDialogs.WifiApStationsDialog.WifiApStationsDialog?1(stations, parent=None) +eric7.MicroPython.WifiDialogs.WifiConnectionDialog.WifiConnectionDialog.getConnectionParameters?4() +eric7.MicroPython.WifiDialogs.WifiConnectionDialog.WifiConnectionDialog.on_showPasswordButton_clicked?4(checked) +eric7.MicroPython.WifiDialogs.WifiConnectionDialog.WifiConnectionDialog.on_ssidEdit_textChanged?4(ssid) +eric7.MicroPython.WifiDialogs.WifiConnectionDialog.WifiConnectionDialog?1(parent=None) +eric7.MicroPython.WifiDialogs.WifiController.WifiController.createMenu?4(menu) +eric7.MicroPython.WifiDialogs.WifiController.WifiController?1(microPython, parent=None) +eric7.MicroPython.WifiDialogs.WifiCountryDialog.WifiCountryDialog.getCountry?4() +eric7.MicroPython.WifiDialogs.WifiCountryDialog.WifiCountryDialog.on_countryEdit_textChanged?4(country) +eric7.MicroPython.WifiDialogs.WifiCountryDialog.WifiCountryDialog?1(parent=None) +eric7.MicroPython.WifiDialogs.WifiNetworksWindow.WifiNetworksWindow.closeEvent?4(evt) +eric7.MicroPython.WifiDialogs.WifiNetworksWindow.WifiNetworksWindow.on_intervalSpinBox_valueChanged?4(interval) +eric7.MicroPython.WifiDialogs.WifiNetworksWindow.WifiNetworksWindow.on_periodicCheckBox_toggled?4(checked) +eric7.MicroPython.WifiDialogs.WifiNetworksWindow.WifiNetworksWindow.scanNetworks?4() +eric7.MicroPython.WifiDialogs.WifiNetworksWindow.WifiNetworksWindow?1(device, parent=None) +eric7.MicroPython.WifiDialogs.WifiStatusDialog.WifiStatusDialog?1(clientStatus, apStatus, overallStatus, parent=None) eric7.MultiProject.AddProjectDialog.AddProjectDialog.getData?4() eric7.MultiProject.AddProjectDialog.AddProjectDialog.on_filenamePicker_textChanged?4(txt) eric7.MultiProject.AddProjectDialog.AddProjectDialog.on_nameEdit_textChanged?4(txt) @@ -7295,6 +7370,8 @@ eric7.Preferences.ConfigurationPages.MasterPasswordEntryDialog.MasterPasswordEntryDialog.on_newPasswordAgainEdit_textChanged?4(txt) eric7.Preferences.ConfigurationPages.MasterPasswordEntryDialog.MasterPasswordEntryDialog.on_newPasswordEdit_textChanged?4(txt) eric7.Preferences.ConfigurationPages.MasterPasswordEntryDialog.MasterPasswordEntryDialog?1(oldPasswordHash, parent=None) +eric7.Preferences.ConfigurationPages.MicroPythonPage.MicroPythonPage.on_apShowPasswordButton_clicked?4(checked) +eric7.Preferences.ConfigurationPages.MicroPythonPage.MicroPythonPage.on_showPasswordButton_clicked?4(checked) eric7.Preferences.ConfigurationPages.MicroPythonPage.MicroPythonPage.save?4() eric7.Preferences.ConfigurationPages.MicroPythonPage.MicroPythonPage?1(parent=None) eric7.Preferences.ConfigurationPages.MicroPythonPage.create?4(dlg)
--- a/src/eric7/APIs/Python3/eric7.bas Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/APIs/Python3/eric7.bas Sat Feb 25 19:18:07 2023 +0100 @@ -240,6 +240,7 @@ EricGoogleMail QObject EricGraphicsView QGraphicsView EricHorizontalToolBox EricTabWidget +EricIPv4InputWidget QWidget Ui_EricIPv4InputWidget EricIconBar QWidget EricJsonReader QTcpServer EricJsonServer QTcpServer @@ -1123,6 +1124,13 @@ WebInspector QWebEngineView WidgetArea QMdiArea WidgetView QWidget +WifiApConfigDialog QDialog Ui_WifiApConfigDialog +WifiApStationsDialog QDialog Ui_WifiApStationsDialog +WifiConnectionDialog QDialog Ui_WifiConnectionDialog +WifiController QObject +WifiCountryDialog QDialog Ui_WifiCountryDialog +WifiNetworksWindow QWidget Ui_WifiNetworksWindow +WifiStatusDialog QDialog Ui_WifiStatusDialog WizardEricPluginWizard QObject XMLStreamReaderBase QXmlStreamReader XbelImporter BookmarksImporter
--- a/src/eric7/Documentation/Help/source.qhp Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Help/source.qhp Sat Feb 25 19:18:07 2023 +0100 @@ -126,6 +126,7 @@ <section title="eric7.EricNetwork.EricFtp" ref="eric7.EricNetwork.EricFtp.html" /> <section title="eric7.EricNetwork.EricGoogleMail" ref="eric7.EricNetwork.EricGoogleMail.html" /> <section title="eric7.EricNetwork.EricGoogleMailHelpers" ref="eric7.EricNetwork.EricGoogleMailHelpers.html" /> + <section title="eric7.EricNetwork.EricIPv4InputWidget" ref="eric7.EricNetwork.EricIPv4InputWidget.html" /> <section title="eric7.EricNetwork.EricJsonClient" ref="eric7.EricNetwork.EricJsonClient.html" /> <section title="eric7.EricNetwork.EricJsonServer" ref="eric7.EricNetwork.EricJsonServer.html" /> <section title="eric7.EricNetwork.EricJsonStreamReader" ref="eric7.EricNetwork.EricJsonStreamReader.html" /> @@ -280,6 +281,10 @@ <section title="eric7.MicroPython.Devices.EspDialogs.EspBackupRestoreFirmwareDialog" ref="eric7.MicroPython.Devices.EspDialogs.EspBackupRestoreFirmwareDialog.html" /> <section title="eric7.MicroPython.Devices.EspDialogs.EspFirmwareSelectionDialog" ref="eric7.MicroPython.Devices.EspDialogs.EspFirmwareSelectionDialog.html" /> </section> + <section title="eric7.MicroPython.Devices.MCUScripts" ref="index-eric7.MicroPython.Devices.MCUScripts.html"> + <section title="eric7.MicroPython.Devices.MCUScripts.esp32WiFiConnect" ref="eric7.MicroPython.Devices.MCUScripts.esp32WiFiConnect.html" /> + <section title="eric7.MicroPython.Devices.MCUScripts.picowWiFiConnect" ref="eric7.MicroPython.Devices.MCUScripts.picowWiFiConnect.html" /> + </section> <section title="eric7.MicroPython.Devices.CircuitPythonDevices" ref="eric7.MicroPython.Devices.CircuitPythonDevices.html" /> <section title="eric7.MicroPython.Devices.DeviceBase" ref="eric7.MicroPython.Devices.DeviceBase.html" /> <section title="eric7.MicroPython.Devices.EspDevices" ref="eric7.MicroPython.Devices.EspDevices.html" /> @@ -290,6 +295,15 @@ <section title="eric7.MicroPython.Devices.TeensyDevices" ref="eric7.MicroPython.Devices.TeensyDevices.html" /> <section title="eric7.MicroPython.Devices.__init__" ref="eric7.MicroPython.Devices.__init__.html" /> </section> + <section title="eric7.MicroPython.WifiDialogs" ref="index-eric7.MicroPython.WifiDialogs.html"> + <section title="eric7.MicroPython.WifiDialogs.WifiApConfigDialog" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html" /> + <section title="eric7.MicroPython.WifiDialogs.WifiApStationsDialog" ref="eric7.MicroPython.WifiDialogs.WifiApStationsDialog.html" /> + <section title="eric7.MicroPython.WifiDialogs.WifiConnectionDialog" ref="eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html" /> + <section title="eric7.MicroPython.WifiDialogs.WifiController" ref="eric7.MicroPython.WifiDialogs.WifiController.html" /> + <section title="eric7.MicroPython.WifiDialogs.WifiCountryDialog" ref="eric7.MicroPython.WifiDialogs.WifiCountryDialog.html" /> + <section title="eric7.MicroPython.WifiDialogs.WifiNetworksWindow" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html" /> + <section title="eric7.MicroPython.WifiDialogs.WifiStatusDialog" ref="eric7.MicroPython.WifiDialogs.WifiStatusDialog.html" /> + </section> <section title="eric7.MicroPython.AddEditDevicesDialog" ref="eric7.MicroPython.AddEditDevicesDialog.html" /> <section title="eric7.MicroPython.BoardDataDialog" ref="eric7.MicroPython.BoardDataDialog.html" /> <section title="eric7.MicroPython.ConnectionSelectionDialog" ref="eric7.MicroPython.ConnectionSelectionDialog.html" /> @@ -2048,18 +2062,24 @@ <keyword name="BaseDevice._getSetTimeCode" id="BaseDevice._getSetTimeCode" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice._getSetTimeCode" /> <keyword name="BaseDevice._shortError" id="BaseDevice._shortError" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice._shortError" /> <keyword name="BaseDevice.addDeviceMenuEntries" id="BaseDevice.addDeviceMenuEntries" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.addDeviceMenuEntries" /> + <keyword name="BaseDevice.addDeviceWifiEntries" id="BaseDevice.addDeviceWifiEntries" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.addDeviceWifiEntries" /> <keyword name="BaseDevice.canRunScript" id="BaseDevice.canRunScript" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.canRunScript" /> <keyword name="BaseDevice.canStartFileManager" id="BaseDevice.canStartFileManager" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.canStartFileManager" /> <keyword name="BaseDevice.canStartPlotter" id="BaseDevice.canStartPlotter" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.canStartPlotter" /> <keyword name="BaseDevice.canStartRepl" id="BaseDevice.canStartRepl" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.canStartRepl" /> <keyword name="BaseDevice.cd" id="BaseDevice.cd" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.cd" /> <keyword name="BaseDevice.checkDeviceData" id="BaseDevice.checkDeviceData" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.checkDeviceData" /> + <keyword name="BaseDevice.checkInternet" id="BaseDevice.checkInternet" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.checkInternet" /> + <keyword name="BaseDevice.connectWifi" id="BaseDevice.connectWifi" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.connectWifi" /> + <keyword name="BaseDevice.deactivateInterface" id="BaseDevice.deactivateInterface" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.deactivateInterface" /> <keyword name="BaseDevice.deviceName" id="BaseDevice.deviceName" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.deviceName" /> + <keyword name="BaseDevice.disconnectWifi" id="BaseDevice.disconnectWifi" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.disconnectWifi" /> <keyword name="BaseDevice.downloadFirmware" id="BaseDevice.downloadFirmware" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.downloadFirmware" /> <keyword name="BaseDevice.fileSystemInfo" id="BaseDevice.fileSystemInfo" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.fileSystemInfo" /> <keyword name="BaseDevice.forceInterrupt" id="BaseDevice.forceInterrupt" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.forceInterrupt" /> <keyword name="BaseDevice.get" id="BaseDevice.get" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.get" /> <keyword name="BaseDevice.getBoardInformation" id="BaseDevice.getBoardInformation" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getBoardInformation" /> + <keyword name="BaseDevice.getConnectedClients" id="BaseDevice.getConnectedClients" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getConnectedClients" /> <keyword name="BaseDevice.getData" id="BaseDevice.getData" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getData" /> <keyword name="BaseDevice.getDeviceData" id="BaseDevice.getDeviceData" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getDeviceData" /> <keyword name="BaseDevice.getDeviceType" id="BaseDevice.getDeviceType" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getDeviceType" /> @@ -2068,23 +2088,29 @@ <keyword name="BaseDevice.getFirmwareUrl" id="BaseDevice.getFirmwareUrl" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getFirmwareUrl" /> <keyword name="BaseDevice.getModules" id="BaseDevice.getModules" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getModules" /> <keyword name="BaseDevice.getTime" id="BaseDevice.getTime" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getTime" /> + <keyword name="BaseDevice.getWifiData" id="BaseDevice.getWifiData" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getWifiData" /> <keyword name="BaseDevice.getWorkspace" id="BaseDevice.getWorkspace" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.getWorkspace" /> <keyword name="BaseDevice.handleDataFlood" id="BaseDevice.handleDataFlood" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.handleDataFlood" /> + <keyword name="BaseDevice.hasBluetooth" id="BaseDevice.hasBluetooth" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasBluetooth" /> <keyword name="BaseDevice.hasCircuitPython" id="BaseDevice.hasCircuitPython" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasCircuitPython" /> <keyword name="BaseDevice.hasDocumentationUrl" id="BaseDevice.hasDocumentationUrl" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasDocumentationUrl" /> + <keyword name="BaseDevice.hasEthernet" id="BaseDevice.hasEthernet" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasEthernet" /> <keyword name="BaseDevice.hasFirmwareUrl" id="BaseDevice.hasFirmwareUrl" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasFirmwareUrl" /> <keyword name="BaseDevice.hasFlashMenuEntry" id="BaseDevice.hasFlashMenuEntry" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasFlashMenuEntry" /> <keyword name="BaseDevice.hasTimeCommands" id="BaseDevice.hasTimeCommands" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasTimeCommands" /> + <keyword name="BaseDevice.hasWifi" id="BaseDevice.hasWifi" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.hasWifi" /> <keyword name="BaseDevice.lls" id="BaseDevice.lls" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.lls" /> <keyword name="BaseDevice.ls" id="BaseDevice.ls" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.ls" /> <keyword name="BaseDevice.mkdir" id="BaseDevice.mkdir" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.mkdir" /> <keyword name="BaseDevice.put" id="BaseDevice.put" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.put" /> <keyword name="BaseDevice.putData" id="BaseDevice.putData" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.putData" /> <keyword name="BaseDevice.pwd" id="BaseDevice.pwd" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.pwd" /> + <keyword name="BaseDevice.removeCredentials" id="BaseDevice.removeCredentials" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.removeCredentials" /> <keyword name="BaseDevice.rm" id="BaseDevice.rm" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.rm" /> <keyword name="BaseDevice.rmdir" id="BaseDevice.rmdir" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.rmdir" /> <keyword name="BaseDevice.rmrf" id="BaseDevice.rmrf" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.rmrf" /> <keyword name="BaseDevice.runScript" id="BaseDevice.runScript" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.runScript" /> + <keyword name="BaseDevice.scanNetworks" id="BaseDevice.scanNetworks" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.scanNetworks" /> <keyword name="BaseDevice.selectDeviceDirectory" id="BaseDevice.selectDeviceDirectory" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.selectDeviceDirectory" /> <keyword name="BaseDevice.sendCommands" id="BaseDevice.sendCommands" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.sendCommands" /> <keyword name="BaseDevice.setButtons" id="BaseDevice.setButtons" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.setButtons" /> @@ -2092,8 +2118,11 @@ <keyword name="BaseDevice.setFileManager" id="BaseDevice.setFileManager" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.setFileManager" /> <keyword name="BaseDevice.setPlotter" id="BaseDevice.setPlotter" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.setPlotter" /> <keyword name="BaseDevice.setRepl" id="BaseDevice.setRepl" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.setRepl" /> + <keyword name="BaseDevice.startAccessPoint" id="BaseDevice.startAccessPoint" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.startAccessPoint" /> + <keyword name="BaseDevice.stopAccessPoint" id="BaseDevice.stopAccessPoint" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.stopAccessPoint" /> <keyword name="BaseDevice.supportsLocalFileAccess" id="BaseDevice.supportsLocalFileAccess" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.supportsLocalFileAccess" /> <keyword name="BaseDevice.syncTime" id="BaseDevice.syncTime" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.syncTime" /> + <keyword name="BaseDevice.writeCredentials" id="BaseDevice.writeCredentials" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.writeCredentials" /> <keyword name="BaseDocstringGenerator" id="BaseDocstringGenerator" ref="eric7.QScintilla.DocstringGenerator.BaseDocstringGenerator.html#BaseDocstringGenerator" /> <keyword name="BaseDocstringGenerator (Constructor)" id="BaseDocstringGenerator (Constructor)" ref="eric7.QScintilla.DocstringGenerator.BaseDocstringGenerator.html#BaseDocstringGenerator.__init__" /> <keyword name="BaseDocstringGenerator (Module)" id="BaseDocstringGenerator (Module)" ref="eric7.QScintilla.DocstringGenerator.BaseDocstringGenerator.html" /> @@ -5211,6 +5240,17 @@ <keyword name="EricHorizontalToolBox.removeItem" id="EricHorizontalToolBox.removeItem" ref="eric7.EricWidgets.EricToolBox.html#EricHorizontalToolBox.removeItem" /> <keyword name="EricHorizontalToolBox.setItemEnabled" id="EricHorizontalToolBox.setItemEnabled" ref="eric7.EricWidgets.EricToolBox.html#EricHorizontalToolBox.setItemEnabled" /> <keyword name="EricHorizontalToolBox.setItemToolTip" id="EricHorizontalToolBox.setItemToolTip" ref="eric7.EricWidgets.EricToolBox.html#EricHorizontalToolBox.setItemToolTip" /> + <keyword name="EricIPv4InputWidget" id="EricIPv4InputWidget" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget" /> + <keyword name="EricIPv4InputWidget (Constructor)" id="EricIPv4InputWidget (Constructor)" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.__init__" /> + <keyword name="EricIPv4InputWidget (Module)" id="EricIPv4InputWidget (Module)" ref="eric7.EricNetwork.EricIPv4InputWidget.html" /> + <keyword name="EricIPv4InputWidget.__clear" id="EricIPv4InputWidget.__clear" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.__clear" /> + <keyword name="EricIPv4InputWidget.address" id="EricIPv4InputWidget.address" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.address" /> + <keyword name="EricIPv4InputWidget.clear" id="EricIPv4InputWidget.clear" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.clear" /> + <keyword name="EricIPv4InputWidget.eventFilter" id="EricIPv4InputWidget.eventFilter" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.eventFilter" /> + <keyword name="EricIPv4InputWidget.hasAcceptableInput" id="EricIPv4InputWidget.hasAcceptableInput" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.hasAcceptableInput" /> + <keyword name="EricIPv4InputWidget.setAddress" id="EricIPv4InputWidget.setAddress" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.setAddress" /> + <keyword name="EricIPv4InputWidget.setText" id="EricIPv4InputWidget.setText" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.setText" /> + <keyword name="EricIPv4InputWidget.text" id="EricIPv4InputWidget.text" ref="eric7.EricNetwork.EricIPv4InputWidget.html#EricIPv4InputWidget.text" /> <keyword name="EricIconBar" id="EricIconBar" ref="eric7.EricWidgets.EricIconBar.html#EricIconBar" /> <keyword name="EricIconBar (Constructor)" id="EricIconBar (Constructor)" ref="eric7.EricWidgets.EricIconBar.html#EricIconBar.__init__" /> <keyword name="EricIconBar (Module)" id="EricIconBar (Module)" ref="eric7.EricWidgets.EricIconBar.html" /> @@ -6130,13 +6170,25 @@ <keyword name="EspDevice.canStartFileManager" id="EspDevice.canStartFileManager" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.canStartFileManager" /> <keyword name="EspDevice.canStartPlotter" id="EspDevice.canStartPlotter" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.canStartPlotter" /> <keyword name="EspDevice.canStartRepl" id="EspDevice.canStartRepl" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.canStartRepl" /> + <keyword name="EspDevice.checkInternet" id="EspDevice.checkInternet" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.checkInternet" /> + <keyword name="EspDevice.connectWifi" id="EspDevice.connectWifi" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.connectWifi" /> + <keyword name="EspDevice.deactivateInterface" id="EspDevice.deactivateInterface" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.deactivateInterface" /> <keyword name="EspDevice.deviceName" id="EspDevice.deviceName" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.deviceName" /> + <keyword name="EspDevice.disconnectWifi" id="EspDevice.disconnectWifi" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.disconnectWifi" /> <keyword name="EspDevice.forceInterrupt" id="EspDevice.forceInterrupt" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.forceInterrupt" /> + <keyword name="EspDevice.getConnectedClients" id="EspDevice.getConnectedClients" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.getConnectedClients" /> <keyword name="EspDevice.getDocumentationUrl" id="EspDevice.getDocumentationUrl" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.getDocumentationUrl" /> <keyword name="EspDevice.getFirmwareUrl" id="EspDevice.getFirmwareUrl" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.getFirmwareUrl" /> + <keyword name="EspDevice.getWifiData" id="EspDevice.getWifiData" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.getWifiData" /> <keyword name="EspDevice.hasFlashMenuEntry" id="EspDevice.hasFlashMenuEntry" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.hasFlashMenuEntry" /> + <keyword name="EspDevice.hasWifi" id="EspDevice.hasWifi" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.hasWifi" /> + <keyword name="EspDevice.removeCredentials" id="EspDevice.removeCredentials" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.removeCredentials" /> <keyword name="EspDevice.runScript" id="EspDevice.runScript" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.runScript" /> + <keyword name="EspDevice.scanNetworks" id="EspDevice.scanNetworks" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.scanNetworks" /> <keyword name="EspDevice.setButtons" id="EspDevice.setButtons" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.setButtons" /> + <keyword name="EspDevice.startAccessPoint" id="EspDevice.startAccessPoint" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.startAccessPoint" /> + <keyword name="EspDevice.stopAccessPoint" id="EspDevice.stopAccessPoint" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.stopAccessPoint" /> + <keyword name="EspDevice.writeCredentials" id="EspDevice.writeCredentials" ref="eric7.MicroPython.Devices.EspDevices.html#EspDevice.writeCredentials" /> <keyword name="EspDevices (Module)" id="EspDevices (Module)" ref="eric7.MicroPython.Devices.EspDevices.html" /> <keyword name="EspDialogs (Package)" id="EspDialogs (Package)" ref="index-eric7.MicroPython.Devices.EspDialogs.html" /> <keyword name="EspFirmwareSelectionDialog" id="EspFirmwareSelectionDialog" ref="eric7.MicroPython.Devices.EspDialogs.EspFirmwareSelectionDialog.html#EspFirmwareSelectionDialog" /> @@ -10428,6 +10480,7 @@ <keyword name="M520NameFinder.visit_Lambda" id="M520NameFinder.visit_Lambda" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.MiscellaneousChecker.html#M520NameFinder.visit_Lambda" /> <keyword name="M520NameFinder.visit_ListComp" id="M520NameFinder.visit_ListComp" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.MiscellaneousChecker.html#M520NameFinder.visit_ListComp" /> <keyword name="M520NameFinder.visit_comprehension" id="M520NameFinder.visit_comprehension" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.MiscellaneousChecker.html#M520NameFinder.visit_comprehension" /> + <keyword name="MCUScripts (Package)" id="MCUScripts (Package)" ref="index-eric7.MicroPython.Devices.MCUScripts.html" /> <keyword name="MakePropertiesDialog" id="MakePropertiesDialog" ref="eric7.Project.MakePropertiesDialog.html#MakePropertiesDialog" /> <keyword name="MakePropertiesDialog (Constructor)" id="MakePropertiesDialog (Constructor)" ref="eric7.Project.MakePropertiesDialog.html#MakePropertiesDialog.__init__" /> <keyword name="MakePropertiesDialog (Module)" id="MakePropertiesDialog (Module)" ref="eric7.Project.MakePropertiesDialog.html" /> @@ -10562,6 +10615,10 @@ <keyword name="MicroPythonDeviceInterface" id="MicroPythonDeviceInterface" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface" /> <keyword name="MicroPythonDeviceInterface (Constructor)" id="MicroPythonDeviceInterface (Constructor)" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__init__" /> <keyword name="MicroPythonDeviceInterface (Module)" id="MicroPythonDeviceInterface (Module)" ref="eric7.MicroPython.MicroPythonDeviceInterface.html" /> + <keyword name="MicroPythonDeviceInterface.__execute_paste" id="MicroPythonDeviceInterface.__execute_paste" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__execute_paste" /> + <keyword name="MicroPythonDeviceInterface.__execute_raw" id="MicroPythonDeviceInterface.__execute_raw" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__execute_raw" /> + <keyword name="MicroPythonDeviceInterface.__pasteOff" id="MicroPythonDeviceInterface.__pasteOff" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__pasteOff" /> + <keyword name="MicroPythonDeviceInterface.__pasteOn" id="MicroPythonDeviceInterface.__pasteOn" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__pasteOn" /> <keyword name="MicroPythonDeviceInterface.__rawOff" id="MicroPythonDeviceInterface.__rawOff" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__rawOff" /> <keyword name="MicroPythonDeviceInterface.__rawOn" id="MicroPythonDeviceInterface.__rawOn" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__rawOn" /> <keyword name="MicroPythonDeviceInterface.__readSerial" id="MicroPythonDeviceInterface.__readSerial" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__readSerial" /> @@ -10569,6 +10626,7 @@ <keyword name="MicroPythonDeviceInterface.disconnectFromDevice" id="MicroPythonDeviceInterface.disconnectFromDevice" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.disconnectFromDevice" /> <keyword name="MicroPythonDeviceInterface.execute" id="MicroPythonDeviceInterface.execute" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.execute" /> <keyword name="MicroPythonDeviceInterface.executeAsync" id="MicroPythonDeviceInterface.executeAsync" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.executeAsync" /> + <keyword name="MicroPythonDeviceInterface.executeAsyncPaste" id="MicroPythonDeviceInterface.executeAsyncPaste" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.executeAsyncPaste" /> <keyword name="MicroPythonDeviceInterface.handlePreferencesChanged" id="MicroPythonDeviceInterface.handlePreferencesChanged" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.handlePreferencesChanged" /> <keyword name="MicroPythonDeviceInterface.isConnected" id="MicroPythonDeviceInterface.isConnected" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.isConnected" /> <keyword name="MicroPythonDeviceInterface.probeDevice" id="MicroPythonDeviceInterface.probeDevice" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.probeDevice" /> @@ -10654,6 +10712,8 @@ <keyword name="MicroPythonPage" id="MicroPythonPage" ref="eric7.Preferences.ConfigurationPages.MicroPythonPage.html#MicroPythonPage" /> <keyword name="MicroPythonPage (Constructor)" id="MicroPythonPage (Constructor)" ref="eric7.Preferences.ConfigurationPages.MicroPythonPage.html#MicroPythonPage.__init__" /> <keyword name="MicroPythonPage (Module)" id="MicroPythonPage (Module)" ref="eric7.Preferences.ConfigurationPages.MicroPythonPage.html" /> + <keyword name="MicroPythonPage.on_apShowPasswordButton_clicked" id="MicroPythonPage.on_apShowPasswordButton_clicked" ref="eric7.Preferences.ConfigurationPages.MicroPythonPage.html#MicroPythonPage.on_apShowPasswordButton_clicked" /> + <keyword name="MicroPythonPage.on_showPasswordButton_clicked" id="MicroPythonPage.on_showPasswordButton_clicked" ref="eric7.Preferences.ConfigurationPages.MicroPythonPage.html#MicroPythonPage.on_showPasswordButton_clicked" /> <keyword name="MicroPythonPage.save" id="MicroPythonPage.save" ref="eric7.Preferences.ConfigurationPages.MicroPythonPage.html#MicroPythonPage.save" /> <keyword name="MicroPythonProgressInfoDialog" id="MicroPythonProgressInfoDialog" ref="eric7.MicroPython.MicroPythonProgressInfoDialog.html#MicroPythonProgressInfoDialog" /> <keyword name="MicroPythonProgressInfoDialog (Constructor)" id="MicroPythonProgressInfoDialog (Constructor)" ref="eric7.MicroPython.MicroPythonProgressInfoDialog.html#MicroPythonProgressInfoDialog.__init__" /> @@ -10701,7 +10761,6 @@ <keyword name="MicroPythonWidget.__showDeviceTime" id="MicroPythonWidget.__showDeviceTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showDeviceTime" /> <keyword name="MicroPythonWidget.__showDeviceVersion" id="MicroPythonWidget.__showDeviceVersion" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showDeviceVersion" /> <keyword name="MicroPythonWidget.__showDocumentation" id="MicroPythonWidget.__showDocumentation" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showDocumentation" /> - <keyword name="MicroPythonWidget.__showError" id="MicroPythonWidget.__showError" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showError" /> <keyword name="MicroPythonWidget.__showImplementation" id="MicroPythonWidget.__showImplementation" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showImplementation" /> <keyword name="MicroPythonWidget.__showLocalAndDeviceTime" id="MicroPythonWidget.__showLocalAndDeviceTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showLocalAndDeviceTime" /> <keyword name="MicroPythonWidget.__showLocalTime" id="MicroPythonWidget.__showLocalTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showLocalTime" /> @@ -10712,6 +10771,7 @@ <keyword name="MicroPythonWidget.eventFilter" id="MicroPythonWidget.eventFilter" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.eventFilter" /> <keyword name="MicroPythonWidget.getCurrentBoard" id="MicroPythonWidget.getCurrentBoard" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getCurrentBoard" /> <keyword name="MicroPythonWidget.getCurrentPort" id="MicroPythonWidget.getCurrentPort" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getCurrentPort" /> + <keyword name="MicroPythonWidget.getDevice" id="MicroPythonWidget.getDevice" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getDevice" /> <keyword name="MicroPythonWidget.getDeviceWorkspace" id="MicroPythonWidget.getDeviceWorkspace" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getDeviceWorkspace" /> <keyword name="MicroPythonWidget.handleDataFlood" id="MicroPythonWidget.handleDataFlood" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.handleDataFlood" /> <keyword name="MicroPythonWidget.isConnected" id="MicroPythonWidget.isConnected" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.isConnected" /> @@ -10725,6 +10785,7 @@ <keyword name="MicroPythonWidget.on_replButton_clicked" id="MicroPythonWidget.on_replButton_clicked" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_replButton_clicked" /> <keyword name="MicroPythonWidget.on_runButton_clicked" id="MicroPythonWidget.on_runButton_clicked" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_runButton_clicked" /> <keyword name="MicroPythonWidget.setActionButtons" id="MicroPythonWidget.setActionButtons" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.setActionButtons" /> + <keyword name="MicroPythonWidget.showError" id="MicroPythonWidget.showError" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.showError" /> <keyword name="MicrobitDevice" id="MicrobitDevice" ref="eric7.MicroPython.Devices.MicrobitDevices.html#MicrobitDevice" /> <keyword name="MicrobitDevice (Constructor)" id="MicrobitDevice (Constructor)" ref="eric7.MicroPython.Devices.MicrobitDevices.html#MicrobitDevice.__init__" /> <keyword name="MicrobitDevice.__createMicrobitMenu" id="MicrobitDevice.__createMicrobitMenu" ref="eric7.MicroPython.Devices.MicrobitDevices.html#MicrobitDevice.__createMicrobitMenu" /> @@ -13650,20 +13711,34 @@ <keyword name="RP2040Device.__createRP2040Menu" id="RP2040Device.__createRP2040Menu" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.__createRP2040Menu" /> <keyword name="RP2040Device.__firmwareVersionResponse" id="RP2040Device.__firmwareVersionResponse" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.__firmwareVersionResponse" /> <keyword name="RP2040Device.__flashPython" id="RP2040Device.__flashPython" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.__flashPython" /> + <keyword name="RP2040Device.__setCountry" id="RP2040Device.__setCountry" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.__setCountry" /> <keyword name="RP2040Device.__showFirmwareVersions" id="RP2040Device.__showFirmwareVersions" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.__showFirmwareVersions" /> <keyword name="RP2040Device._getSetTimeCode" id="RP2040Device._getSetTimeCode" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device._getSetTimeCode" /> <keyword name="RP2040Device.addDeviceMenuEntries" id="RP2040Device.addDeviceMenuEntries" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.addDeviceMenuEntries" /> + <keyword name="RP2040Device.addDeviceWifiEntries" id="RP2040Device.addDeviceWifiEntries" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.addDeviceWifiEntries" /> <keyword name="RP2040Device.canRunScript" id="RP2040Device.canRunScript" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.canRunScript" /> <keyword name="RP2040Device.canStartFileManager" id="RP2040Device.canStartFileManager" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.canStartFileManager" /> <keyword name="RP2040Device.canStartPlotter" id="RP2040Device.canStartPlotter" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.canStartPlotter" /> <keyword name="RP2040Device.canStartRepl" id="RP2040Device.canStartRepl" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.canStartRepl" /> + <keyword name="RP2040Device.checkInternet" id="RP2040Device.checkInternet" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.checkInternet" /> + <keyword name="RP2040Device.connectWifi" id="RP2040Device.connectWifi" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.connectWifi" /> + <keyword name="RP2040Device.deactivateInterface" id="RP2040Device.deactivateInterface" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.deactivateInterface" /> <keyword name="RP2040Device.deviceName" id="RP2040Device.deviceName" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.deviceName" /> + <keyword name="RP2040Device.disconnectWifi" id="RP2040Device.disconnectWifi" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.disconnectWifi" /> <keyword name="RP2040Device.forceInterrupt" id="RP2040Device.forceInterrupt" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.forceInterrupt" /> + <keyword name="RP2040Device.getConnectedClients" id="RP2040Device.getConnectedClients" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.getConnectedClients" /> <keyword name="RP2040Device.getDocumentationUrl" id="RP2040Device.getDocumentationUrl" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.getDocumentationUrl" /> <keyword name="RP2040Device.getDownloadMenuEntries" id="RP2040Device.getDownloadMenuEntries" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.getDownloadMenuEntries" /> + <keyword name="RP2040Device.getWifiData" id="RP2040Device.getWifiData" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.getWifiData" /> <keyword name="RP2040Device.hasFlashMenuEntry" id="RP2040Device.hasFlashMenuEntry" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.hasFlashMenuEntry" /> + <keyword name="RP2040Device.hasWifi" id="RP2040Device.hasWifi" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.hasWifi" /> + <keyword name="RP2040Device.removeCredentials" id="RP2040Device.removeCredentials" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.removeCredentials" /> <keyword name="RP2040Device.runScript" id="RP2040Device.runScript" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.runScript" /> + <keyword name="RP2040Device.scanNetworks" id="RP2040Device.scanNetworks" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.scanNetworks" /> <keyword name="RP2040Device.setButtons" id="RP2040Device.setButtons" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.setButtons" /> + <keyword name="RP2040Device.startAccessPoint" id="RP2040Device.startAccessPoint" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.startAccessPoint" /> + <keyword name="RP2040Device.stopAccessPoint" id="RP2040Device.stopAccessPoint" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.stopAccessPoint" /> + <keyword name="RP2040Device.writeCredentials" id="RP2040Device.writeCredentials" ref="eric7.MicroPython.Devices.RP2040Devices.html#RP2040Device.writeCredentials" /> <keyword name="RP2040Devices (Module)" id="RP2040Devices (Module)" ref="eric7.MicroPython.Devices.RP2040Devices.html" /> <keyword name="RbModule" id="RbModule" ref="eric7.Utilities.ModuleParser.html#RbModule" /> <keyword name="RbModule (Constructor)" id="RbModule (Constructor)" ref="eric7.Utilities.ModuleParser.html#RbModule.__init__" /> @@ -18564,6 +18639,56 @@ <keyword name="WidgetView.buildWidget" id="WidgetView.buildWidget" ref="eric7.Tools.TRPreviewer.html#WidgetView.buildWidget" /> <keyword name="WidgetView.isValid" id="WidgetView.isValid" ref="eric7.Tools.TRPreviewer.html#WidgetView.isValid" /> <keyword name="WidgetView.uiFileName" id="WidgetView.uiFileName" ref="eric7.Tools.TRPreviewer.html#WidgetView.uiFileName" /> + <keyword name="WifiApConfigDialog" id="WifiApConfigDialog" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html#WifiApConfigDialog" /> + <keyword name="WifiApConfigDialog (Constructor)" id="WifiApConfigDialog (Constructor)" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html#WifiApConfigDialog.__init__" /> + <keyword name="WifiApConfigDialog (Module)" id="WifiApConfigDialog (Module)" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html" /> + <keyword name="WifiApConfigDialog.__updateOk" id="WifiApConfigDialog.__updateOk" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html#WifiApConfigDialog.__updateOk" /> + <keyword name="WifiApConfigDialog.getApConfig" id="WifiApConfigDialog.getApConfig" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html#WifiApConfigDialog.getApConfig" /> + <keyword name="WifiApConfigDialog.on_apShowPasswordButton_clicked" id="WifiApConfigDialog.on_apShowPasswordButton_clicked" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html#WifiApConfigDialog.on_apShowPasswordButton_clicked" /> + <keyword name="WifiApStationsDialog" id="WifiApStationsDialog" ref="eric7.MicroPython.WifiDialogs.WifiApStationsDialog.html#WifiApStationsDialog" /> + <keyword name="WifiApStationsDialog (Constructor)" id="WifiApStationsDialog (Constructor)" ref="eric7.MicroPython.WifiDialogs.WifiApStationsDialog.html#WifiApStationsDialog.__init__" /> + <keyword name="WifiApStationsDialog (Module)" id="WifiApStationsDialog (Module)" ref="eric7.MicroPython.WifiDialogs.WifiApStationsDialog.html" /> + <keyword name="WifiConnectionDialog" id="WifiConnectionDialog" ref="eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html#WifiConnectionDialog" /> + <keyword name="WifiConnectionDialog (Constructor)" id="WifiConnectionDialog (Constructor)" ref="eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html#WifiConnectionDialog.__init__" /> + <keyword name="WifiConnectionDialog (Module)" id="WifiConnectionDialog (Module)" ref="eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html" /> + <keyword name="WifiConnectionDialog.getConnectionParameters" id="WifiConnectionDialog.getConnectionParameters" ref="eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html#WifiConnectionDialog.getConnectionParameters" /> + <keyword name="WifiConnectionDialog.on_showPasswordButton_clicked" id="WifiConnectionDialog.on_showPasswordButton_clicked" ref="eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html#WifiConnectionDialog.on_showPasswordButton_clicked" /> + <keyword name="WifiConnectionDialog.on_ssidEdit_textChanged" id="WifiConnectionDialog.on_ssidEdit_textChanged" ref="eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html#WifiConnectionDialog.on_ssidEdit_textChanged" /> + <keyword name="WifiController" id="WifiController" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController" /> + <keyword name="WifiController (Constructor)" id="WifiController (Constructor)" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__init__" /> + <keyword name="WifiController (Module)" id="WifiController (Module)" ref="eric7.MicroPython.WifiDialogs.WifiController.html" /> + <keyword name="WifiController.__checkInternet" id="WifiController.__checkInternet" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__checkInternet" /> + <keyword name="WifiController.__connectWifi" id="WifiController.__connectWifi" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__connectWifi" /> + <keyword name="WifiController.__deactivateInterface" id="WifiController.__deactivateInterface" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__deactivateInterface" /> + <keyword name="WifiController.__disconnectWifi" id="WifiController.__disconnectWifi" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__disconnectWifi" /> + <keyword name="WifiController.__removeCredentials" id="WifiController.__removeCredentials" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__removeCredentials" /> + <keyword name="WifiController.__scanNetwork" id="WifiController.__scanNetwork" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__scanNetwork" /> + <keyword name="WifiController.__showConnectedClients" id="WifiController.__showConnectedClients" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__showConnectedClients" /> + <keyword name="WifiController.__showWifiStatus" id="WifiController.__showWifiStatus" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__showWifiStatus" /> + <keyword name="WifiController.__startAccessPoint" id="WifiController.__startAccessPoint" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__startAccessPoint" /> + <keyword name="WifiController.__startAccessPointIP" id="WifiController.__startAccessPointIP" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__startAccessPointIP" /> + <keyword name="WifiController.__stopAccessPoint" id="WifiController.__stopAccessPoint" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__stopAccessPoint" /> + <keyword name="WifiController.__writeCredentials" id="WifiController.__writeCredentials" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.__writeCredentials" /> + <keyword name="WifiController.createMenu" id="WifiController.createMenu" ref="eric7.MicroPython.WifiDialogs.WifiController.html#WifiController.createMenu" /> + <keyword name="WifiCountryDialog" id="WifiCountryDialog" ref="eric7.MicroPython.WifiDialogs.WifiCountryDialog.html#WifiCountryDialog" /> + <keyword name="WifiCountryDialog (Constructor)" id="WifiCountryDialog (Constructor)" ref="eric7.MicroPython.WifiDialogs.WifiCountryDialog.html#WifiCountryDialog.__init__" /> + <keyword name="WifiCountryDialog (Module)" id="WifiCountryDialog (Module)" ref="eric7.MicroPython.WifiDialogs.WifiCountryDialog.html" /> + <keyword name="WifiCountryDialog.getCountry" id="WifiCountryDialog.getCountry" ref="eric7.MicroPython.WifiDialogs.WifiCountryDialog.html#WifiCountryDialog.getCountry" /> + <keyword name="WifiCountryDialog.on_countryEdit_textChanged" id="WifiCountryDialog.on_countryEdit_textChanged" ref="eric7.MicroPython.WifiDialogs.WifiCountryDialog.html#WifiCountryDialog.on_countryEdit_textChanged" /> + <keyword name="WifiDialogs (Package)" id="WifiDialogs (Package)" ref="index-eric7.MicroPython.WifiDialogs.html" /> + <keyword name="WifiNetworksWindow" id="WifiNetworksWindow" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow" /> + <keyword name="WifiNetworksWindow (Constructor)" id="WifiNetworksWindow (Constructor)" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow.__init__" /> + <keyword name="WifiNetworksWindow (Module)" id="WifiNetworksWindow (Module)" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html" /> + <keyword name="WifiNetworksWindow.__resizeColumns" id="WifiNetworksWindow.__resizeColumns" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow.__resizeColumns" /> + <keyword name="WifiNetworksWindow.__resort" id="WifiNetworksWindow.__resort" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow.__resort" /> + <keyword name="WifiNetworksWindow.closeEvent" id="WifiNetworksWindow.closeEvent" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow.closeEvent" /> + <keyword name="WifiNetworksWindow.on_intervalSpinBox_valueChanged" id="WifiNetworksWindow.on_intervalSpinBox_valueChanged" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow.on_intervalSpinBox_valueChanged" /> + <keyword name="WifiNetworksWindow.on_periodicCheckBox_toggled" id="WifiNetworksWindow.on_periodicCheckBox_toggled" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow.on_periodicCheckBox_toggled" /> + <keyword name="WifiNetworksWindow.scanNetworks" id="WifiNetworksWindow.scanNetworks" ref="eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html#WifiNetworksWindow.scanNetworks" /> + <keyword name="WifiStatusDialog" id="WifiStatusDialog" ref="eric7.MicroPython.WifiDialogs.WifiStatusDialog.html#WifiStatusDialog" /> + <keyword name="WifiStatusDialog (Constructor)" id="WifiStatusDialog (Constructor)" ref="eric7.MicroPython.WifiDialogs.WifiStatusDialog.html#WifiStatusDialog.__init__" /> + <keyword name="WifiStatusDialog (Module)" id="WifiStatusDialog (Module)" ref="eric7.MicroPython.WifiDialogs.WifiStatusDialog.html" /> + <keyword name="WifiStatusDialog.__createHeader" id="WifiStatusDialog.__createHeader" ref="eric7.MicroPython.WifiDialogs.WifiStatusDialog.html#WifiStatusDialog.__createHeader" /> <keyword name="WizardEricPluginWizard" id="WizardEricPluginWizard" ref="eric7.Plugins.PluginWizardEricPlugin.html#WizardEricPluginWizard" /> <keyword name="WizardEricPluginWizard (Constructor)" id="WizardEricPluginWizard (Constructor)" ref="eric7.Plugins.PluginWizardEricPlugin.html#WizardEricPluginWizard.__init__" /> <keyword name="WizardEricPluginWizard.__callForm" id="WizardEricPluginWizard.__callForm" ref="eric7.Plugins.PluginWizardEricPlugin.html#WizardEricPluginWizard.__callForm" /> @@ -18910,6 +19035,8 @@ <keyword name="condaVersionStr" id="condaVersionStr" ref="eric7.CondaInterface.__init__.html#condaVersionStr" /> <keyword name="confirmOverwrite" id="confirmOverwrite" ref="eric7.EricWidgets.EricFileSaveConfirmDialog.html#confirmOverwrite" /> <keyword name="conflicting_deps" id="conflicting_deps" ref="eric7.PipInterface.pipdeptree.html#conflicting_deps" /> + <keyword name="connectWiFi" id="connectWiFi" ref="eric7.MicroPython.Devices.MCUScripts.esp32WiFiConnect.html#connectWiFi" /> + <keyword name="connectWiFi" id="connectWiFi" ref="eric7.MicroPython.Devices.MCUScripts.picowWiFiConnect.html#connectWiFi" /> <keyword name="containsSpace" id="containsSpace" ref="eric7.WebBrowser.Tools.WebBrowserTools.html#containsSpace" /> <keyword name="continued_indentation" id="continued_indentation" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#continued_indentation" /> <keyword name="convertLineEnds" id="convertLineEnds" ref="eric7.Utilities.__init__.html#convertLineEnds" /> @@ -19168,6 +19295,7 @@ <keyword name="escape_entities" id="escape_entities" ref="eric7.Utilities.__init__.html#escape_entities" /> <keyword name="escape_uentities" id="escape_uentities" ref="eric7.Utilities.__init__.html#escape_uentities" /> <keyword name="escapedBytesRepresentation" id="escapedBytesRepresentation" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#escapedBytesRepresentation" /> + <keyword name="esp32WiFiConnect (Module)" id="esp32WiFiConnect (Module)" ref="eric7.MicroPython.Devices.MCUScripts.esp32WiFiConnect.html" /> <keyword name="evaluateCall" id="evaluateCall" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#evaluateCall" /> <keyword name="evaluateVar" id="evaluateVar" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.djangoXssVulnerability.html#evaluateVar" /> <keyword name="excepthook" id="excepthook" ref="eric7.eric7_ide.html#excepthook" /> @@ -19639,6 +19767,7 @@ <keyword name="patchSubprocess" id="patchSubprocess" ref="eric7.DebugClients.Python.SubprocessExtension.html#patchSubprocess" /> <keyword name="patch_circup" id="patch_circup" ref="eric7.MicroPython.Devices.CircuitPythonUpdater.CircupFunctions.html#patch_circup" /> <keyword name="pbkdf2" id="pbkdf2" ref="eric7.Utilities.crypto.py3PBKDF2.html#pbkdf2" /> + <keyword name="picowWiFiConnect (Module)" id="picowWiFiConnect (Module)" ref="eric7.MicroPython.Devices.MCUScripts.picowWiFiConnect.html" /> <keyword name="pipdeptree (Module)" id="pipdeptree (Module)" ref="eric7.PipInterface.pipdeptree.html" /> <keyword name="piplicenses (Module)" id="piplicenses (Module)" ref="eric7.PipInterface.piplicenses.html" /> <keyword name="pixmapFileToDataUrl" id="pixmapFileToDataUrl" ref="eric7.WebBrowser.Tools.WebBrowserTools.html#pixmapFileToDataUrl" /> @@ -20011,6 +20140,7 @@ <file>eric7.EricNetwork.EricFtp.html</file> <file>eric7.EricNetwork.EricGoogleMail.html</file> <file>eric7.EricNetwork.EricGoogleMailHelpers.html</file> + <file>eric7.EricNetwork.EricIPv4InputWidget.html</file> <file>eric7.EricNetwork.EricJsonClient.html</file> <file>eric7.EricNetwork.EricJsonServer.html</file> <file>eric7.EricNetwork.EricJsonStreamReader.html</file> @@ -20145,6 +20275,8 @@ <file>eric7.MicroPython.Devices.EspDialogs.EspBackupRestoreFirmwareDialog.html</file> <file>eric7.MicroPython.Devices.EspDialogs.EspFirmwareSelectionDialog.html</file> <file>eric7.MicroPython.Devices.GenericMicroPythonDevices.html</file> + <file>eric7.MicroPython.Devices.MCUScripts.esp32WiFiConnect.html</file> + <file>eric7.MicroPython.Devices.MCUScripts.picowWiFiConnect.html</file> <file>eric7.MicroPython.Devices.MicrobitDevices.html</file> <file>eric7.MicroPython.Devices.PyBoardDevices.html</file> <file>eric7.MicroPython.Devices.RP2040Devices.html</file> @@ -20162,6 +20294,13 @@ <file>eric7.MicroPython.ShowModulesDialog.html</file> <file>eric7.MicroPython.UF2FlashDialog.html</file> <file>eric7.MicroPython.UnknownDevicesDialog.html</file> + <file>eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html</file> + <file>eric7.MicroPython.WifiDialogs.WifiApStationsDialog.html</file> + <file>eric7.MicroPython.WifiDialogs.WifiConnectionDialog.html</file> + <file>eric7.MicroPython.WifiDialogs.WifiController.html</file> + <file>eric7.MicroPython.WifiDialogs.WifiCountryDialog.html</file> + <file>eric7.MicroPython.WifiDialogs.WifiNetworksWindow.html</file> + <file>eric7.MicroPython.WifiDialogs.WifiStatusDialog.html</file> <file>eric7.MultiProject.AddProjectDialog.html</file> <file>eric7.MultiProject.MultiProject.html</file> <file>eric7.MultiProject.MultiProjectBrowser.html</file> @@ -21139,7 +21278,9 @@ <file>index-eric7.JediInterface.html</file> <file>index-eric7.MicroPython.Devices.CircuitPythonUpdater.html</file> <file>index-eric7.MicroPython.Devices.EspDialogs.html</file> + <file>index-eric7.MicroPython.Devices.MCUScripts.html</file> <file>index-eric7.MicroPython.Devices.html</file> + <file>index-eric7.MicroPython.WifiDialogs.html</file> <file>index-eric7.MicroPython.html</file> <file>index-eric7.MultiProject.html</file> <file>index-eric7.Network.IRC.html</file>
--- a/src/eric7/Documentation/Source/eric7.MicroPython.Devices.DeviceBase.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.Devices.DeviceBase.html Sat Feb 25 19:18:07 2023 +0100 @@ -47,19 +47,19 @@ the time on the board and getting board related data. Supported file system commands are: <ul> - <li>ls: directory listing</li> + <li>cd: change directory</li> + <li>fileSystemInfo: get information about the file system + <li>get: get a file from the connected device</li> + <li>getData: read data of a file of the connected device</li> <li>lls: directory listing with meta data</li> - <li>cd: change directory</li> - <li>pwd: get the current directory</li> + <li>ls: directory listing</li> + <li>mkdir: create a new directory</li> <li>put: copy a file to the connected device</li> <li>putData: write data to a file of the connected device</li> - <li>get: get a file from the connected device</li> - <li>getData: read data of a file of the connected device</li> + <li>pwd: get the current directory</li> <li>rm: remove a file from the connected device</li> + <li>rmdir: remove an empty directory</li> <li>rmrf: remove a file/directory recursively (like 'rm -rf' in bash) - <li>mkdir: create a new directory</li> - <li>rmdir: remove an empty directory</li> - <li>fileSystemInfo: get information about the file system </ul> </p> <p> @@ -70,8 +70,26 @@ information</li> <li>getModules: get a list of built-in modules</li> <li>getTime: get the current time</li> + <li>showTime: show the current time of the connected device</li> <li>syncTime: synchronize the time of the connected device</li> - <li>showTime: show the current time of the connected device</li> + </ul> +</p> +<p> + Supported WiFi commands are: + <ul> + <li>hasWifi: check, if the board has WiFi functionality</li> + <li>getWifiData: get WiFi status data</li> + <li>connectWifi: connect to a WiFi network</li> + <li>disconnectWifi: disconnect from a WiFi network</li> + <li>writeCredentials: save the WiFi credentials to the board and create + functionality to auto-connect at boot time</li> + <li>removeCredentials: remove the saved credentials</li> + <li>checkInternet: check, if internet access is possible</li> + <li>scanNetworks: scan for available WiFi networks</li> + <li>deactivateInterface: deactivate a WiFi interface</li> + <li>startAccessPoint: start an access point</li> + <li>stopAccessPoint: stop the access point</li> + <li>getConnectedClients: get a list of connected WiFi clients</li> </ul> </p> <h3>Derived from</h3> @@ -111,6 +129,10 @@ <td>Public method to add device specific entries to the given menu.</td> </tr> <tr> +<td><a href="#BaseDevice.addDeviceWifiEntries">addDeviceWifiEntries</a></td> +<td>Public method to add device specific entries to the given menu.</td> +</tr> +<tr> <td><a href="#BaseDevice.canRunScript">canRunScript</a></td> <td>Public method to determine, if a script can be executed.</td> </tr> @@ -135,10 +157,26 @@ <td>Public method to check the validity of the device data determined during connecting the device.</td> </tr> <tr> +<td><a href="#BaseDevice.checkInternet">checkInternet</a></td> +<td>Public method to check, if the internet can be reached.</td> +</tr> +<tr> +<td><a href="#BaseDevice.connectWifi">connectWifi</a></td> +<td>Public method to connect a device to a WiFi network.</td> +</tr> +<tr> +<td><a href="#BaseDevice.deactivateInterface">deactivateInterface</a></td> +<td>Public method to deactivate a given WiFi interface of the connected device.</td> +</tr> +<tr> <td><a href="#BaseDevice.deviceName">deviceName</a></td> <td>Public method to get the name of the device.</td> </tr> <tr> +<td><a href="#BaseDevice.disconnectWifi">disconnectWifi</a></td> +<td>Public method to disconnect a device from the WiFi network.</td> +</tr> +<tr> <td><a href="#BaseDevice.downloadFirmware">downloadFirmware</a></td> <td>Public method to download the device firmware.</td> </tr> @@ -159,6 +197,10 @@ <td>Public method to get some information data of the connected board.</td> </tr> <tr> +<td><a href="#BaseDevice.getConnectedClients">getConnectedClients</a></td> +<td>Public method to get a list of connected clients.</td> +</tr> +<tr> <td><a href="#BaseDevice.getData">getData</a></td> <td>Public method to read data from the connected device.</td> </tr> @@ -191,6 +233,10 @@ <td>Public method to get the current time of the device.</td> </tr> <tr> +<td><a href="#BaseDevice.getWifiData">getWifiData</a></td> +<td>Public method to get data related to the current WiFi status.</td> +</tr> +<tr> <td><a href="#BaseDevice.getWorkspace">getWorkspace</a></td> <td>Public method to get the workspace directory.</td> </tr> @@ -199,6 +245,10 @@ <td>Public slot handling a data floof from the device.</td> </tr> <tr> +<td><a href="#BaseDevice.hasBluetooth">hasBluetooth</a></td> +<td>Public method to check the availability of Bluetooth.</td> +</tr> +<tr> <td><a href="#BaseDevice.hasCircuitPython">hasCircuitPython</a></td> <td>Public method to check, if the connected device is flashed with CircuitPython.</td> </tr> @@ -207,6 +257,10 @@ <td>Public method to check, if the device has a configured documentation URL.</td> </tr> <tr> +<td><a href="#BaseDevice.hasEthernet">hasEthernet</a></td> +<td>Public method to check the availability of Ethernet.</td> +</tr> +<tr> <td><a href="#BaseDevice.hasFirmwareUrl">hasFirmwareUrl</a></td> <td>Public method to check, if the device has a configured firmware download URL.</td> </tr> @@ -219,6 +273,10 @@ <td>Public method to check, if the device supports time commands.</td> </tr> <tr> +<td><a href="#BaseDevice.hasWifi">hasWifi</a></td> +<td>Public method to check the availability of WiFi.</td> +</tr> +<tr> <td><a href="#BaseDevice.lls">lls</a></td> <td>Public method to get a long directory listing of the connected device including meta data.</td> </tr> @@ -243,6 +301,10 @@ <td>Public method to get the current directory of the connected device.</td> </tr> <tr> +<td><a href="#BaseDevice.removeCredentials">removeCredentials</a></td> +<td>Public method to remove the saved credentials from the connected device.</td> +</tr> +<tr> <td><a href="#BaseDevice.rm">rm</a></td> <td>Public method to remove a file from the connected device.</td> </tr> @@ -259,6 +321,10 @@ <td>Public method to run the given Python script.</td> </tr> <tr> +<td><a href="#BaseDevice.scanNetworks">scanNetworks</a></td> +<td>Public method to scan for available WiFi networks.</td> +</tr> +<tr> <td><a href="#BaseDevice.selectDeviceDirectory">selectDeviceDirectory</a></td> <td>Public method to select the device directory from a list of detected ones.</td> </tr> @@ -287,6 +353,14 @@ <td>Public method to set the REPL status and dependent status.</td> </tr> <tr> +<td><a href="#BaseDevice.startAccessPoint">startAccessPoint</a></td> +<td>Public method to start the access point interface.</td> +</tr> +<tr> +<td><a href="#BaseDevice.stopAccessPoint">stopAccessPoint</a></td> +<td>Public method to stop the access point interface.</td> +</tr> +<tr> <td><a href="#BaseDevice.supportsLocalFileAccess">supportsLocalFileAccess</a></td> <td>Public method to indicate file access via a local directory.</td> </tr> @@ -294,6 +368,10 @@ <td><a href="#BaseDevice.syncTime">syncTime</a></td> <td>Public method to set the time of the connected device to the local computer's time.</td> </tr> +<tr> +<td><a href="#BaseDevice.writeCredentials">writeCredentials</a></td> +<td>Public method to write the given credentials to the connected device and modify the start script to connect automatically.</td> +</tr> </table> <h3>Static Methods</h3> @@ -412,6 +490,20 @@ reference to the context menu </dd> </dl> +<a NAME="BaseDevice.addDeviceWifiEntries" ID="BaseDevice.addDeviceWifiEntries"></a> +<h4>BaseDevice.addDeviceWifiEntries</h4> +<b>addDeviceWifiEntries</b>(<i>menu</i>) + +<p> + Public method to add device specific entries to the given menu. +</p> +<dl> + +<dt><i>menu</i> (QMenu)</dt> +<dd> +reference to the context menu +</dd> +</dl> <a NAME="BaseDevice.canRunScript" ID="BaseDevice.canRunScript"></a> <h4>BaseDevice.canRunScript</h4> <b>canRunScript</b>(<i></i>) @@ -533,6 +625,82 @@ bool </dd> </dl> +<a NAME="BaseDevice.checkInternet" ID="BaseDevice.checkInternet"></a> +<h4>BaseDevice.checkInternet</h4> +<b>checkInternet</b>(<i></i>) + +<p> + Public method to check, if the internet can be reached. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating reachability and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="BaseDevice.connectWifi" ID="BaseDevice.connectWifi"></a> +<h4>BaseDevice.connectWifi</h4> +<b>connectWifi</b>(<i>ssid, password</i>) + +<p> + Public method to connect a device to a WiFi network. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +name (SSID) of the WiFi network +</dd> +<dt><i>password</i> (str)</dt> +<dd> +password needed to connect +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the connection status and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="BaseDevice.deactivateInterface" ID="BaseDevice.deactivateInterface"></a> +<h4>BaseDevice.deactivateInterface</h4> +<b>deactivateInterface</b>(<i>interface</i>) + +<p> + Public method to deactivate a given WiFi interface of the connected device. +</p> +<dl> + +<dt><i>interface</i> (str)</dt> +<dd> +designation of the interface to be deactivated (one of 'AP' + or 'STA') +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containg a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="BaseDevice.deviceName" ID="BaseDevice.deviceName"></a> <h4>BaseDevice.deviceName</h4> <b>deviceName</b>(<i></i>) @@ -552,6 +720,25 @@ str </dd> </dl> +<a NAME="BaseDevice.disconnectWifi" ID="BaseDevice.disconnectWifi"></a> +<h4>BaseDevice.disconnectWifi</h4> +<b>disconnectWifi</b>(<i></i>) + +<p> + Public method to disconnect a device from the WiFi network. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="BaseDevice.downloadFirmware" ID="BaseDevice.downloadFirmware"></a> <h4>BaseDevice.downloadFirmware</h4> <b>downloadFirmware</b>(<i></i>) @@ -670,6 +857,26 @@ raised to indicate an issue with the device </dd> </dl> +<a NAME="BaseDevice.getConnectedClients" ID="BaseDevice.getConnectedClients"></a> +<h4>BaseDevice.getConnectedClients</h4> +<b>getConnectedClients</b>(<i></i>) + +<p> + Public method to get a list of connected clients. +</p> +<dl> +<dt>Return:</dt> +<dd> +a tuple containing a list of tuples containing the client MAC-Address + and the RSSI (if supported and available) and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of ([(bytes, int)], str) +</dd> +</dl> <a NAME="BaseDevice.getData" ID="BaseDevice.getData"></a> <h4>BaseDevice.getData</h4> <b>getData</b>(<i>deviceFileName</i>) @@ -705,12 +912,19 @@ </dl> <a NAME="BaseDevice.getDeviceData" ID="BaseDevice.getDeviceData"></a> <h4>BaseDevice.getDeviceData</h4> -<b>getDeviceData</b>(<i></i>) +<b>getDeviceData</b>(<i>key=None</i>) <p> Public method to get a copy of the determined device data. </p> <dl> + +<dt><i>key</i> (str (optional))</dt> +<dd> +name of the data to get (None to get all data) (defaults to None) +</dd> +</dl> +<dl> <dt>Return:</dt> <dd> dictionary containing the essential device data @@ -851,6 +1065,26 @@ raised to indicate an issue with the device </dd> </dl> +<a NAME="BaseDevice.getWifiData" ID="BaseDevice.getWifiData"></a> +<h4>BaseDevice.getWifiData</h4> +<b>getWifiData</b>(<i></i>) + +<p> + Public method to get data related to the current WiFi status. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple of three dictionaries containing the WiFi status data + for the WiFi client, access point and overall data +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (dict, dict, dict) +</dd> +</dl> <a NAME="BaseDevice.getWorkspace" ID="BaseDevice.getWorkspace"></a> <h4>BaseDevice.getWorkspace</h4> <b>getWorkspace</b>(<i></i>) @@ -877,6 +1111,25 @@ <p> Public slot handling a data floof from the device. </p> +<a NAME="BaseDevice.hasBluetooth" ID="BaseDevice.hasBluetooth"></a> +<h4>BaseDevice.hasBluetooth</h4> +<b>hasBluetooth</b>(<i></i>) + +<p> + Public method to check the availability of Bluetooth. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating the availability of Bluetooth +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> <a NAME="BaseDevice.hasCircuitPython" ID="BaseDevice.hasCircuitPython"></a> <h4>BaseDevice.hasCircuitPython</h4> <b>hasCircuitPython</b>(<i></i>) @@ -916,6 +1169,25 @@ bool </dd> </dl> +<a NAME="BaseDevice.hasEthernet" ID="BaseDevice.hasEthernet"></a> +<h4>BaseDevice.hasEthernet</h4> +<b>hasEthernet</b>(<i></i>) + +<p> + Public method to check the availability of Ethernet. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating the availability of Ethernet +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> <a NAME="BaseDevice.hasFirmwareUrl" ID="BaseDevice.hasFirmwareUrl"></a> <h4>BaseDevice.hasFirmwareUrl</h4> <b>hasFirmwareUrl</b>(<i></i>) @@ -977,6 +1249,26 @@ bool </dd> </dl> +<a NAME="BaseDevice.hasWifi" ID="BaseDevice.hasWifi"></a> +<h4>BaseDevice.hasWifi</h4> +<b>hasWifi</b>(<i></i>) + +<p> + Public method to check the availability of WiFi. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating the availability of WiFi + and the WiFi type (picow or pimoroni) +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="BaseDevice.lls" ID="BaseDevice.lls"></a> <h4>BaseDevice.lls</h4> <b>lls</b>(<i>dirname="", fullstat=False, showHidden=False</i>) @@ -1176,6 +1468,25 @@ raised to indicate an issue with the device </dd> </dl> +<a NAME="BaseDevice.removeCredentials" ID="BaseDevice.removeCredentials"></a> +<h4>BaseDevice.removeCredentials</h4> +<b>removeCredentials</b>(<i></i>) + +<p> + Public method to remove the saved credentials from the connected device. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="BaseDevice.rm" ID="BaseDevice.rm"></a> <h4>BaseDevice.rm</h4> <b>rm</b>(<i>filename</i>) @@ -1273,6 +1584,26 @@ script to be executed </dd> </dl> +<a NAME="BaseDevice.scanNetworks" ID="BaseDevice.scanNetworks"></a> +<h4>BaseDevice.scanNetworks</h4> +<b>scanNetworks</b>(<i></i>) + +<p> + Public method to scan for available WiFi networks. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the list of available networks as a tuple of 'Name', + 'MAC-Address', 'channel', 'RSSI' and 'security' and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (list of tuple of (str, str, int, int, str), str) +</dd> +</dl> <a NAME="BaseDevice.selectDeviceDirectory" ID="BaseDevice.selectDeviceDirectory"></a> <h4>BaseDevice.selectDeviceDirectory</h4> <b>selectDeviceDirectory</b>(<i>deviceDirectories</i>) @@ -1381,6 +1712,64 @@ flag indicating the active status </dd> </dl> +<a NAME="BaseDevice.startAccessPoint" ID="BaseDevice.startAccessPoint"></a> +<h4>BaseDevice.startAccessPoint</h4> +<b>startAccessPoint</b>(<i>ssid, security=None, password=None, ifconfig=None</i>) + +<p> + Public method to start the access point interface. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +SSID of the access point +</dd> +<dt><i>security</i> (int (optional))</dt> +<dd> +security method (defaults to None) +</dd> +<dt><i>password</i> (str (optional))</dt> +<dd> +password (defaults to None) +</dd> +<dt><i>ifconfig</i> (tuple of (str, str, str, str))</dt> +<dd> +IPv4 configuration for the access point if not default + (IPv4 address, netmask, gateway address, DNS server address) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="BaseDevice.stopAccessPoint" ID="BaseDevice.stopAccessPoint"></a> +<h4>BaseDevice.stopAccessPoint</h4> +<b>stopAccessPoint</b>(<i></i>) + +<p> + Public method to stop the access point interface. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containg a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="BaseDevice.supportsLocalFileAccess" ID="BaseDevice.supportsLocalFileAccess"></a> <h4>BaseDevice.supportsLocalFileAccess</h4> <b>supportsLocalFileAccess</b>(<i></i>) @@ -1427,6 +1816,37 @@ raised to indicate an issue with the device </dd> </dl> +<a NAME="BaseDevice.writeCredentials" ID="BaseDevice.writeCredentials"></a> +<h4>BaseDevice.writeCredentials</h4> +<b>writeCredentials</b>(<i>ssid, password</i>) + +<p> + Public method to write the given credentials to the connected device and modify + the start script to connect automatically. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +SSID of the network to connect to +</dd> +<dt><i>password</i> (str)</dt> +<dd> +password needed to authenticate +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- a/src/eric7/Documentation/Source/eric7.MicroPython.Devices.EspDevices.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.Devices.EspDevices.html Sat Feb 25 19:18:07 2023 +0100 @@ -140,14 +140,34 @@ <td>Public method to determine, if a REPL can be started.</td> </tr> <tr> +<td><a href="#EspDevice.checkInternet">checkInternet</a></td> +<td>Public method to check, if the internet can be reached.</td> +</tr> +<tr> +<td><a href="#EspDevice.connectWifi">connectWifi</a></td> +<td>Public method to connect a device to a WiFi network.</td> +</tr> +<tr> +<td><a href="#EspDevice.deactivateInterface">deactivateInterface</a></td> +<td>Public method to deactivate a given WiFi interface of the connected device.</td> +</tr> +<tr> <td><a href="#EspDevice.deviceName">deviceName</a></td> <td>Public method to get the name of the device.</td> </tr> <tr> +<td><a href="#EspDevice.disconnectWifi">disconnectWifi</a></td> +<td>Public method to disconnect a device from the WiFi network.</td> +</tr> +<tr> <td><a href="#EspDevice.forceInterrupt">forceInterrupt</a></td> <td>Public method to determine the need for an interrupt when opening the serial connection.</td> </tr> <tr> +<td><a href="#EspDevice.getConnectedClients">getConnectedClients</a></td> +<td>Public method to get a list of connected clients.</td> +</tr> +<tr> <td><a href="#EspDevice.getDocumentationUrl">getDocumentationUrl</a></td> <td>Public method to get the device documentation URL.</td> </tr> @@ -156,17 +176,45 @@ <td>Public method to get the device firmware download URL.</td> </tr> <tr> +<td><a href="#EspDevice.getWifiData">getWifiData</a></td> +<td>Public method to get data related to the current WiFi status.</td> +</tr> +<tr> <td><a href="#EspDevice.hasFlashMenuEntry">hasFlashMenuEntry</a></td> <td>Public method to check, if the device has its own flash menu entry.</td> </tr> <tr> +<td><a href="#EspDevice.hasWifi">hasWifi</a></td> +<td>Public method to check the availability of WiFi.</td> +</tr> +<tr> +<td><a href="#EspDevice.removeCredentials">removeCredentials</a></td> +<td>Public method to remove the saved credentials from the connected device.</td> +</tr> +<tr> <td><a href="#EspDevice.runScript">runScript</a></td> <td>Public method to run the given Python script.</td> </tr> <tr> +<td><a href="#EspDevice.scanNetworks">scanNetworks</a></td> +<td>Public method to scan for available WiFi networks.</td> +</tr> +<tr> <td><a href="#EspDevice.setButtons">setButtons</a></td> <td>Public method to enable the supported action buttons.</td> </tr> +<tr> +<td><a href="#EspDevice.startAccessPoint">startAccessPoint</a></td> +<td>Public method to start the access point interface.</td> +</tr> +<tr> +<td><a href="#EspDevice.stopAccessPoint">stopAccessPoint</a></td> +<td>Public method to stop the access point interface.</td> +</tr> +<tr> +<td><a href="#EspDevice.writeCredentials">writeCredentials</a></td> +<td>Public method to write the given credentials to the connected device and modify the start script to connect automatically.</td> +</tr> </table> <h3>Static Methods</h3> @@ -412,6 +460,89 @@ tuple of (bool, str) </dd> </dl> +<a NAME="EspDevice.checkInternet" ID="EspDevice.checkInternet"></a> +<h4>EspDevice.checkInternet</h4> +<b>checkInternet</b>(<i></i>) + +<p> + Public method to check, if the internet can be reached. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating reachability and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="EspDevice.connectWifi" ID="EspDevice.connectWifi"></a> +<h4>EspDevice.connectWifi</h4> +<b>connectWifi</b>(<i>ssid, password</i>) + +<p> + Public method to connect a device to a WiFi network. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +name (SSID) of the WiFi network +</dd> +<dt><i>password</i> (str)</dt> +<dd> +password needed to connect +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the connection status and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="EspDevice.deactivateInterface" ID="EspDevice.deactivateInterface"></a> +<h4>EspDevice.deactivateInterface</h4> +<b>deactivateInterface</b>(<i>interface</i>) + +<p> + Public method to deactivate a given WiFi interface of the connected device. +</p> +<dl> + +<dt><i>interface</i> (str)</dt> +<dd> +designation of the interface to be deactivated (one of 'AP' + or 'STA') +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containg a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a wrong value for the interface type +</dd> +</dl> <a NAME="EspDevice.deviceName" ID="EspDevice.deviceName"></a> <h4>EspDevice.deviceName</h4> <b>deviceName</b>(<i></i>) @@ -431,6 +562,25 @@ str </dd> </dl> +<a NAME="EspDevice.disconnectWifi" ID="EspDevice.disconnectWifi"></a> +<h4>EspDevice.disconnectWifi</h4> +<b>disconnectWifi</b>(<i></i>) + +<p> + Public method to disconnect a device from the WiFi network. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="EspDevice.forceInterrupt" ID="EspDevice.forceInterrupt"></a> <h4>EspDevice.forceInterrupt</h4> <b>forceInterrupt</b>(<i></i>) @@ -451,6 +601,26 @@ bool </dd> </dl> +<a NAME="EspDevice.getConnectedClients" ID="EspDevice.getConnectedClients"></a> +<h4>EspDevice.getConnectedClients</h4> +<b>getConnectedClients</b>(<i></i>) + +<p> + Public method to get a list of connected clients. +</p> +<dl> +<dt>Return:</dt> +<dd> +a tuple containing a list of tuples containing the client MAC-Address + and the RSSI (if supported and available) and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of ([(bytes, int)], str) +</dd> +</dl> <a NAME="EspDevice.getDocumentationUrl" ID="EspDevice.getDocumentationUrl"></a> <h4>EspDevice.getDocumentationUrl</h4> <b>getDocumentationUrl</b>(<i></i>) @@ -489,6 +659,33 @@ str </dd> </dl> +<a NAME="EspDevice.getWifiData" ID="EspDevice.getWifiData"></a> +<h4>EspDevice.getWifiData</h4> +<b>getWifiData</b>(<i></i>) + +<p> + Public method to get data related to the current WiFi status. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple of three dictionaries containing the WiFi status data + for the WiFi client, access point and overall data +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (dict, dict, dict) +</dd> +</dl> +<dl> + +<dt>Raises <b>OSError</b>:</dt> +<dd> +raised to indicate an issue with the device +</dd> +</dl> <a NAME="EspDevice.hasFlashMenuEntry" ID="EspDevice.hasFlashMenuEntry"></a> <h4>EspDevice.hasFlashMenuEntry</h4> <b>hasFlashMenuEntry</b>(<i></i>) @@ -508,6 +705,45 @@ bool </dd> </dl> +<a NAME="EspDevice.hasWifi" ID="EspDevice.hasWifi"></a> +<h4>EspDevice.hasWifi</h4> +<b>hasWifi</b>(<i></i>) + +<p> + Public method to check the availability of WiFi. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating the availability of WiFi + and the WiFi type (esp32) +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="EspDevice.removeCredentials" ID="EspDevice.removeCredentials"></a> +<h4>EspDevice.removeCredentials</h4> +<b>removeCredentials</b>(<i></i>) + +<p> + Public method to remove the saved credentials from the connected device. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="EspDevice.runScript" ID="EspDevice.runScript"></a> <h4>EspDevice.runScript</h4> <b>runScript</b>(<i>script</i>) @@ -522,6 +758,26 @@ script to be executed </dd> </dl> +<a NAME="EspDevice.scanNetworks" ID="EspDevice.scanNetworks"></a> +<h4>EspDevice.scanNetworks</h4> +<b>scanNetworks</b>(<i></i>) + +<p> + Public method to scan for available WiFi networks. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the list of available networks as a tuple of 'Name', + 'MAC-Address', 'channel', 'RSSI' and 'security' and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (list of tuple of (str, str, int, int, str), str) +</dd> +</dl> <a NAME="EspDevice.setButtons" ID="EspDevice.setButtons"></a> <h4>EspDevice.setButtons</h4> <b>setButtons</b>(<i></i>) @@ -529,6 +785,95 @@ <p> Public method to enable the supported action buttons. </p> +<a NAME="EspDevice.startAccessPoint" ID="EspDevice.startAccessPoint"></a> +<h4>EspDevice.startAccessPoint</h4> +<b>startAccessPoint</b>(<i>ssid, security=None, password=None, ifconfig=None</i>) + +<p> + Public method to start the access point interface. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +SSID of the access point +</dd> +<dt><i>security</i> (int (optional))</dt> +<dd> +security method (defaults to None) +</dd> +<dt><i>password</i> (str (optional))</dt> +<dd> +password (defaults to None) +</dd> +<dt><i>ifconfig</i> (tuple of (str, str, str, str))</dt> +<dd> +IPv4 configuration for the access point if not default + (IPv4 address, netmask, gateway address, DNS server address) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="EspDevice.stopAccessPoint" ID="EspDevice.stopAccessPoint"></a> +<h4>EspDevice.stopAccessPoint</h4> +<b>stopAccessPoint</b>(<i></i>) + +<p> + Public method to stop the access point interface. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containg a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="EspDevice.writeCredentials" ID="EspDevice.writeCredentials"></a> +<h4>EspDevice.writeCredentials</h4> +<b>writeCredentials</b>(<i>ssid, password</i>) + +<p> + Public method to write the given credentials to the connected device and modify + the start script to connect automatically. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +SSID of the network to connect to +</dd> +<dt><i>password</i> (str)</dt> +<dd> +password needed to authenticate +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> <hr />
--- a/src/eric7/Documentation/Source/eric7.MicroPython.Devices.RP2040Devices.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.Devices.RP2040Devices.html Sat Feb 25 19:18:07 2023 +0100 @@ -80,6 +80,10 @@ <td>Private slot to flash a MicroPython firmware to the device.</td> </tr> <tr> +<td><a href="#RP2040Device.__setCountry">__setCountry</a></td> +<td>Private slot to configure the country of the connected RP2040 device.</td> +</tr> +<tr> <td><a href="#RP2040Device.__showFirmwareVersions">__showFirmwareVersions</a></td> <td>Private slot to show the firmware version of the connected device and the available firmware version.</td> </tr> @@ -92,6 +96,10 @@ <td>Public method to add device specific entries to the given menu.</td> </tr> <tr> +<td><a href="#RP2040Device.addDeviceWifiEntries">addDeviceWifiEntries</a></td> +<td>Public method to add device specific entries to the given menu.</td> +</tr> +<tr> <td><a href="#RP2040Device.canRunScript">canRunScript</a></td> <td>Public method to determine, if a script can be executed.</td> </tr> @@ -108,14 +116,34 @@ <td>Public method to determine, if a REPL can be started.</td> </tr> <tr> +<td><a href="#RP2040Device.checkInternet">checkInternet</a></td> +<td>Public method to check, if the internet can be reached.</td> +</tr> +<tr> +<td><a href="#RP2040Device.connectWifi">connectWifi</a></td> +<td>Public method to connect a device to a WiFi network.</td> +</tr> +<tr> +<td><a href="#RP2040Device.deactivateInterface">deactivateInterface</a></td> +<td>Public method to deactivate a given WiFi interface of the connected device.</td> +</tr> +<tr> <td><a href="#RP2040Device.deviceName">deviceName</a></td> <td>Public method to get the name of the device.</td> </tr> <tr> +<td><a href="#RP2040Device.disconnectWifi">disconnectWifi</a></td> +<td>Public method to disconnect a device from the WiFi network.</td> +</tr> +<tr> <td><a href="#RP2040Device.forceInterrupt">forceInterrupt</a></td> <td>Public method to determine the need for an interrupt when opening the serial connection.</td> </tr> <tr> +<td><a href="#RP2040Device.getConnectedClients">getConnectedClients</a></td> +<td>Public method to get a list of connected clients.</td> +</tr> +<tr> <td><a href="#RP2040Device.getDocumentationUrl">getDocumentationUrl</a></td> <td>Public method to get the device documentation URL.</td> </tr> @@ -124,17 +152,45 @@ <td>Public method to retrieve the entries for the downloads menu.</td> </tr> <tr> +<td><a href="#RP2040Device.getWifiData">getWifiData</a></td> +<td>Public method to get data related to the current WiFi status.</td> +</tr> +<tr> <td><a href="#RP2040Device.hasFlashMenuEntry">hasFlashMenuEntry</a></td> <td>Public method to check, if the device has its own flash menu entry.</td> </tr> <tr> +<td><a href="#RP2040Device.hasWifi">hasWifi</a></td> +<td>Public method to check the availability of WiFi.</td> +</tr> +<tr> +<td><a href="#RP2040Device.removeCredentials">removeCredentials</a></td> +<td>Public method to remove the saved credentials from the connected device.</td> +</tr> +<tr> <td><a href="#RP2040Device.runScript">runScript</a></td> <td>Public method to run the given Python script.</td> </tr> <tr> +<td><a href="#RP2040Device.scanNetworks">scanNetworks</a></td> +<td>Public method to scan for available WiFi networks.</td> +</tr> +<tr> <td><a href="#RP2040Device.setButtons">setButtons</a></td> <td>Public method to enable the supported action buttons.</td> </tr> +<tr> +<td><a href="#RP2040Device.startAccessPoint">startAccessPoint</a></td> +<td>Public method to start the access point interface.</td> +</tr> +<tr> +<td><a href="#RP2040Device.stopAccessPoint">stopAccessPoint</a></td> +<td>Public method to stop the access point interface.</td> +</tr> +<tr> +<td><a href="#RP2040Device.writeCredentials">writeCredentials</a></td> +<td>Public method to write the given credentials to the connected device and modify the start script to connect automatically.</td> +</tr> </table> <h3>Static Methods</h3> @@ -199,6 +255,16 @@ <p> Private slot to flash a MicroPython firmware to the device. </p> +<a NAME="RP2040Device.__setCountry" ID="RP2040Device.__setCountry"></a> +<h4>RP2040Device.__setCountry</h4> +<b>__setCountry</b>(<i></i>) + +<p> + Private slot to configure the country of the connected RP2040 device. +</p> +<p> + The country is the two letter country code. +</p> <a NAME="RP2040Device.__showFirmwareVersions" ID="RP2040Device.__showFirmwareVersions"></a> <h4>RP2040Device.__showFirmwareVersions</h4> <b>__showFirmwareVersions</b>(<i></i>) @@ -244,6 +310,20 @@ reference to the context menu </dd> </dl> +<a NAME="RP2040Device.addDeviceWifiEntries" ID="RP2040Device.addDeviceWifiEntries"></a> +<h4>RP2040Device.addDeviceWifiEntries</h4> +<b>addDeviceWifiEntries</b>(<i>menu</i>) + +<p> + Public method to add device specific entries to the given menu. +</p> +<dl> + +<dt><i>menu</i> (QMenu)</dt> +<dd> +reference to the context menu +</dd> +</dl> <a NAME="RP2040Device.canRunScript" ID="RP2040Device.canRunScript"></a> <h4>RP2040Device.canRunScript</h4> <b>canRunScript</b>(<i></i>) @@ -324,6 +404,89 @@ tuple of (bool, str) </dd> </dl> +<a NAME="RP2040Device.checkInternet" ID="RP2040Device.checkInternet"></a> +<h4>RP2040Device.checkInternet</h4> +<b>checkInternet</b>(<i></i>) + +<p> + Public method to check, if the internet can be reached. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating reachability and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="RP2040Device.connectWifi" ID="RP2040Device.connectWifi"></a> +<h4>RP2040Device.connectWifi</h4> +<b>connectWifi</b>(<i>ssid, password</i>) + +<p> + Public method to connect a device to a WiFi network. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +name (SSID) of the WiFi network +</dd> +<dt><i>password</i> (str)</dt> +<dd> +password needed to connect +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the connection status and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="RP2040Device.deactivateInterface" ID="RP2040Device.deactivateInterface"></a> +<h4>RP2040Device.deactivateInterface</h4> +<b>deactivateInterface</b>(<i>interface</i>) + +<p> + Public method to deactivate a given WiFi interface of the connected device. +</p> +<dl> + +<dt><i>interface</i> (str)</dt> +<dd> +designation of the interface to be deactivated (one of 'AP' + or 'STA') +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containg a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate a wrong value for the interface type +</dd> +</dl> <a NAME="RP2040Device.deviceName" ID="RP2040Device.deviceName"></a> <h4>RP2040Device.deviceName</h4> <b>deviceName</b>(<i></i>) @@ -343,6 +506,25 @@ str </dd> </dl> +<a NAME="RP2040Device.disconnectWifi" ID="RP2040Device.disconnectWifi"></a> +<h4>RP2040Device.disconnectWifi</h4> +<b>disconnectWifi</b>(<i></i>) + +<p> + Public method to disconnect a device from the WiFi network. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="RP2040Device.forceInterrupt" ID="RP2040Device.forceInterrupt"></a> <h4>RP2040Device.forceInterrupt</h4> <b>forceInterrupt</b>(<i></i>) @@ -363,6 +545,26 @@ bool </dd> </dl> +<a NAME="RP2040Device.getConnectedClients" ID="RP2040Device.getConnectedClients"></a> +<h4>RP2040Device.getConnectedClients</h4> +<b>getConnectedClients</b>(<i></i>) + +<p> + Public method to get a list of connected clients. +</p> +<dl> +<dt>Return:</dt> +<dd> +a tuple containing a list of tuples containing the client MAC-Address + and the RSSI (if supported and available) and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of ([(bytes, int)], str) +</dd> +</dl> <a NAME="RP2040Device.getDocumentationUrl" ID="RP2040Device.getDocumentationUrl"></a> <h4>RP2040Device.getDocumentationUrl</h4> <b>getDocumentationUrl</b>(<i></i>) @@ -402,6 +604,33 @@ list of tuple of (str, str) </dd> </dl> +<a NAME="RP2040Device.getWifiData" ID="RP2040Device.getWifiData"></a> +<h4>RP2040Device.getWifiData</h4> +<b>getWifiData</b>(<i></i>) + +<p> + Public method to get data related to the current WiFi status. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple of three dictionaries containing the WiFi status data + for the WiFi client, access point and overall data +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (dict, dict, dict) +</dd> +</dl> +<dl> + +<dt>Raises <b>OSError</b>:</dt> +<dd> +raised to indicate an issue with the device +</dd> +</dl> <a NAME="RP2040Device.hasFlashMenuEntry" ID="RP2040Device.hasFlashMenuEntry"></a> <h4>RP2040Device.hasFlashMenuEntry</h4> <b>hasFlashMenuEntry</b>(<i></i>) @@ -421,6 +650,52 @@ bool </dd> </dl> +<a NAME="RP2040Device.hasWifi" ID="RP2040Device.hasWifi"></a> +<h4>RP2040Device.hasWifi</h4> +<b>hasWifi</b>(<i></i>) + +<p> + Public method to check the availability of WiFi. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating the availability of WiFi + and the WiFi type (picow or pimoroni) +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<dl> + +<dt>Raises <b>OSError</b>:</dt> +<dd> +raised to indicate an issue with the device +</dd> +</dl> +<a NAME="RP2040Device.removeCredentials" ID="RP2040Device.removeCredentials"></a> +<h4>RP2040Device.removeCredentials</h4> +<b>removeCredentials</b>(<i></i>) + +<p> + Public method to remove the saved credentials from the connected device. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <a NAME="RP2040Device.runScript" ID="RP2040Device.runScript"></a> <h4>RP2040Device.runScript</h4> <b>runScript</b>(<i>script</i>) @@ -435,6 +710,26 @@ script to be executed </dd> </dl> +<a NAME="RP2040Device.scanNetworks" ID="RP2040Device.scanNetworks"></a> +<h4>RP2040Device.scanNetworks</h4> +<b>scanNetworks</b>(<i></i>) + +<p> + Public method to scan for available WiFi networks. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the list of available networks as a tuple of 'Name', + 'MAC-Address', 'channel', 'RSSI' and 'security' and an error string +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (list of tuple of (str, str, int, int, str), str) +</dd> +</dl> <a NAME="RP2040Device.setButtons" ID="RP2040Device.setButtons"></a> <h4>RP2040Device.setButtons</h4> <b>setButtons</b>(<i></i>) @@ -442,6 +737,95 @@ <p> Public method to enable the supported action buttons. </p> +<a NAME="RP2040Device.startAccessPoint" ID="RP2040Device.startAccessPoint"></a> +<h4>RP2040Device.startAccessPoint</h4> +<b>startAccessPoint</b>(<i>ssid, security=None, password=None, ifconfig=None</i>) + +<p> + Public method to start the access point interface. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +SSID of the access point +</dd> +<dt><i>security</i> (int (optional))</dt> +<dd> +security method (defaults to None) +</dd> +<dt><i>password</i> (str (optional))</dt> +<dd> +password (defaults to None) +</dd> +<dt><i>ifconfig</i> (tuple of (str, str, str, str))</dt> +<dd> +IPv4 configuration for the access point if not default + (IPv4 address, netmask, gateway address, DNS server address) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="RP2040Device.stopAccessPoint" ID="RP2040Device.stopAccessPoint"></a> +<h4>RP2040Device.stopAccessPoint</h4> +<b>stopAccessPoint</b>(<i></i>) + +<p> + Public method to stop the access point interface. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containg a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<a NAME="RP2040Device.writeCredentials" ID="RP2040Device.writeCredentials"></a> +<h4>RP2040Device.writeCredentials</h4> +<b>writeCredentials</b>(<i>ssid, password</i>) + +<p> + Public method to write the given credentials to the connected device and modify + the start script to connect automatically. +</p> +<dl> + +<dt><i>ssid</i> (str)</dt> +<dd> +SSID of the network to connect to +</dd> +<dt><i>password</i> (str)</dt> +<dd> +password needed to authenticate +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing a flag indicating success and an error message +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> <hr />
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonDeviceInterface.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonDeviceInterface.html Sat Feb 25 19:18:07 2023 +0100 @@ -57,7 +57,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>None</td></tr> +<tr><td>PasteModePrompt</td></tr><tr><td>TracebackMarker</td></tr> </table> <h3>Class Methods</h3> @@ -73,6 +73,22 @@ <td>Constructor</td> </tr> <tr> +<td><a href="#MicroPythonDeviceInterface.__execute_paste">__execute_paste</a></td> +<td>Private method to send commands to the connected device using 'paste' mode and return the result.</td> +</tr> +<tr> +<td><a href="#MicroPythonDeviceInterface.__execute_raw">__execute_raw</a></td> +<td>Private method to send commands to the connected device using 'raw REPL' mode and return the result.</td> +</tr> +<tr> +<td><a href="#MicroPythonDeviceInterface.__pasteOff">__pasteOff</a></td> +<td>Private method to switch 'paste' mode off.</td> +</tr> +<tr> +<td><a href="#MicroPythonDeviceInterface.__pasteOn">__pasteOn</a></td> +<td>Private method to switch the connected device to 'paste' mode.</td> +</tr> +<tr> <td><a href="#MicroPythonDeviceInterface.__rawOff">__rawOff</a></td> <td>Private method to switch 'raw' mode off.</td> </tr> @@ -101,6 +117,10 @@ <td>Public method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> </tr> <tr> +<td><a href="#MicroPythonDeviceInterface.executeAsyncPaste">executeAsyncPaste</a></td> +<td>Public method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> +</tr> +<tr> <td><a href="#MicroPythonDeviceInterface.handlePreferencesChanged">handlePreferencesChanged</a></td> <td>Public slot to handle a change of the preferences.</td> </tr> @@ -137,6 +157,105 @@ reference to the parent object </dd> </dl> +<a NAME="MicroPythonDeviceInterface.__execute_paste" ID="MicroPythonDeviceInterface.__execute_paste"></a> +<h4>MicroPythonDeviceInterface.__execute_paste</h4> +<b>__execute_paste</b>(<i>commands, timeout=0</i>) + +<p> + Private method to send commands to the connected device using 'paste' mode + and return the result. +</p> +<p> + If no serial connection is available, empty results will be returned. +</p> +<dl> + +<dt><i>commands</i> (str or list of str)</dt> +<dd> +list of commands to be executed +</dd> +<dt><i>timeout</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing stdout and stderr output of the device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bytes, bytes) +</dd> +</dl> +<a NAME="MicroPythonDeviceInterface.__execute_raw" ID="MicroPythonDeviceInterface.__execute_raw"></a> +<h4>MicroPythonDeviceInterface.__execute_raw</h4> +<b>__execute_raw</b>(<i>commands, timeout=0</i>) + +<p> + Private method to send commands to the connected device using 'raw REPL' mode + and return the result. +</p> +<p> + If no serial connection is available, empty results will be returned. +</p> +<dl> + +<dt><i>commands</i> (str or list of str)</dt> +<dd> +list of commands to be executed +</dd> +<dt><i>timeout</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing stdout and stderr output of the device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bytes, bytes) +</dd> +</dl> +<a NAME="MicroPythonDeviceInterface.__pasteOff" ID="MicroPythonDeviceInterface.__pasteOff"></a> +<h4>MicroPythonDeviceInterface.__pasteOff</h4> +<b>__pasteOff</b>(<i></i>) + +<p> + Private method to switch 'paste' mode off. +</p> +<a NAME="MicroPythonDeviceInterface.__pasteOn" ID="MicroPythonDeviceInterface.__pasteOn"></a> +<h4>MicroPythonDeviceInterface.__pasteOn</h4> +<b>__pasteOn</b>(<i></i>) + +<p> + Private method to switch the connected device to 'paste' mode. +</p> +<p> + Note: switching to paste mode is done with synchronous writes. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating success +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> <a NAME="MicroPythonDeviceInterface.__rawOff" ID="MicroPythonDeviceInterface.__rawOff"></a> <h4>MicroPythonDeviceInterface.__rawOff</h4> <b>__rawOff</b>(<i></i>) @@ -158,7 +277,12 @@ <dt>Return:</dt> <dd> flag indicating success -@rtype bool +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool </dd> </dl> <a NAME="MicroPythonDeviceInterface.__readSerial" ID="MicroPythonDeviceInterface.__readSerial"></a> @@ -204,7 +328,7 @@ </p> <a NAME="MicroPythonDeviceInterface.execute" ID="MicroPythonDeviceInterface.execute"></a> <h4>MicroPythonDeviceInterface.execute</h4> -<b>execute</b>(<i>commands</i>) +<b>execute</b>(<i>commands, *, mode="raw", timeout=0</i>) <p> Public method to send commands to the connected device and return the @@ -219,6 +343,16 @@ <dd> list of commands to be executed </dd> +<dt><i>mode=</i> (str)</dt> +<dd> +submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw') +</dd> +<dt><i>timeout=</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> </dl> <dl> <dt>Return:</dt> @@ -232,6 +366,13 @@ tuple of (bytes, bytes) </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised in case of an unsupported submit mode +</dd> +</dl> <a NAME="MicroPythonDeviceInterface.executeAsync" ID="MicroPythonDeviceInterface.executeAsync"></a> <h4>MicroPythonDeviceInterface.executeAsync</h4> <b>executeAsync</b>(<i>commandsList</i>) @@ -247,6 +388,21 @@ list of commands to be execute on the device </dd> </dl> +<a NAME="MicroPythonDeviceInterface.executeAsyncPaste" ID="MicroPythonDeviceInterface.executeAsyncPaste"></a> +<h4>MicroPythonDeviceInterface.executeAsyncPaste</h4> +<b>executeAsyncPaste</b>(<i>commandsList</i>) + +<p> + Public method to execute a series of commands over a period of time + without returning any result (asynchronous execution). +</p> +<dl> + +<dt><i>commandsList</i> (list of bytes)</dt> +<dd> +list of commands to be execute on the device +</dd> +</dl> <a NAME="MicroPythonDeviceInterface.handlePreferencesChanged" ID="MicroPythonDeviceInterface.handlePreferencesChanged"></a> <h4>MicroPythonDeviceInterface.handlePreferencesChanged</h4> <b>handlePreferencesChanged</b>(<i></i>)
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonFileManagerWidget.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonFileManagerWidget.html Sat Feb 25 19:18:07 2023 +0100 @@ -160,7 +160,7 @@ </tr> <tr> <td><a href="#MicroPythonFileManagerWidget.on_deviceCwd_textChanged">on_deviceCwd_textChanged</a></td> -<td>Public slot handling a change of the current device working directory.</td> +<td>Private slot handling a change of the current device working directory.</td> </tr> <tr> <td><a href="#MicroPythonFileManagerWidget.on_deviceFileTreeWidget_itemActivated">on_deviceFileTreeWidget_itemActivated</a></td> @@ -192,7 +192,7 @@ </tr> <tr> <td><a href="#MicroPythonFileManagerWidget.on_localCwd_textChanged">on_localCwd_textChanged</a></td> -<td>Public slot handling a change of the current local working directory.</td> +<td>Private slot handling a change of the current local working directory.</td> </tr> <tr> <td><a href="#MicroPythonFileManagerWidget.on_localFileTreeWidget_itemActivated">on_localFileTreeWidget_itemActivated</a></td> @@ -609,7 +609,7 @@ <b>on_deviceCwd_textChanged</b>(<i>cwd</i>) <p> - Public slot handling a change of the current device working directory. + Private slot handling a change of the current device working directory. </p> <dl> @@ -695,7 +695,7 @@ <b>on_localCwd_textChanged</b>(<i>cwd</i>) <p> - Public slot handling a change of the current local working directory. + Private slot handling a change of the current local working directory. </p> <dl>
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonSerialPort.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonSerialPort.html Sat Feb 25 19:18:07 2023 +0100 @@ -177,7 +177,7 @@ </dl> <a NAME="MicroPythonSerialPort.readUntil" ID="MicroPythonSerialPort.readUntil"></a> <h4>MicroPythonSerialPort.readUntil</h4> -<b>readUntil</b>(<i>expected=b"\n", size=None</i>) +<b>readUntil</b>(<i>expected=b"\n", size=None, timeout=0</i>) <p> Public method to read data until an expected sequence is found @@ -189,9 +189,14 @@ <dd> expected bytes sequence </dd> -<dt><i>size</i> (int)</dt> +<dt><i>size</i> (int (optional))</dt> <dd> -maximum data to be read +maximum data to be read (defaults to None) +</dd> +<dt><i>timeout</i> (int (optional))</dt> +<dd> +timeout in milliseconds (0 for configured default) + (defaults to 0) </dd> </dl> <dl>
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html Sat Feb 25 19:18:07 2023 +0100 @@ -188,10 +188,6 @@ <td>Private slot to open the documentation URL for the selected device.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.__showError">__showError</a></td> -<td>Private method to show some error message.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.__showImplementation">__showImplementation</a></td> <td>Private slot to show some implementation related information.</td> </tr> @@ -232,6 +228,10 @@ <td>Public method to determine the port path of the selected device.</td> </tr> <tr> +<td><a href="#MicroPythonWidget.getDevice">getDevice</a></td> +<td>Public method to get a reference to the current device.</td> +</tr> +<tr> <td><a href="#MicroPythonWidget.getDeviceWorkspace">getDeviceWorkspace</a></td> <td>Public method to get the workspace directory of the device.</td> </tr> @@ -283,6 +283,10 @@ <td><a href="#MicroPythonWidget.setActionButtons">setActionButtons</a></td> <td>Public method to set the enabled state of the various action buttons.</td> </tr> +<tr> +<td><a href="#MicroPythonWidget.showError">showError</a></td> +<td>Public method to show some error message.</td> +</tr> </table> <h3>Static Methods</h3> @@ -686,24 +690,6 @@ <p> Private slot to open the documentation URL for the selected device. </p> -<a NAME="MicroPythonWidget.__showError" ID="MicroPythonWidget.__showError"></a> -<h4>MicroPythonWidget.__showError</h4> -<b>__showError</b>(<i>method, error</i>) - -<p> - Private method to show some error message. -</p> -<dl> - -<dt><i>method</i> (str)</dt> -<dd> -name of the method the error occured in -</dd> -<dt><i>error</i> (str)</dt> -<dd> -error message -</dd> -</dl> <a NAME="MicroPythonWidget.__showImplementation" ID="MicroPythonWidget.__showImplementation"></a> <h4>MicroPythonWidget.__showImplementation</h4> <b>__showImplementation</b>(<i></i>) @@ -854,6 +840,25 @@ str </dd> </dl> +<a NAME="MicroPythonWidget.getDevice" ID="MicroPythonWidget.getDevice"></a> +<h4>MicroPythonWidget.getDevice</h4> +<b>getDevice</b>(<i></i>) + +<p> + Public method to get a reference to the current device. +</p> +<dl> +<dt>Return:</dt> +<dd> +reference to the current device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +BaseDevice +</dd> +</dl> <a NAME="MicroPythonWidget.getDeviceWorkspace" ID="MicroPythonWidget.getDeviceWorkspace"></a> <h4>MicroPythonWidget.getDeviceWorkspace</h4> <b>getDeviceWorkspace</b>(<i></i>) @@ -1041,6 +1046,24 @@ are 'run', 'repl', 'files', 'chart', 'open', 'save' </dd> </dl> +<a NAME="MicroPythonWidget.showError" ID="MicroPythonWidget.showError"></a> +<h4>MicroPythonWidget.showError</h4> +<b>showError</b>(<i>method, error</i>) + +<p> + Public method to show some error message. +</p> +<dl> + +<dt><i>method</i> (str)</dt> +<dd> +name of the method the error occured in +</dd> +<dt><i>error</i> (str)</dt> +<dd> +error message +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- a/src/eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.MicroPythonPage.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.Preferences.ConfigurationPages.MicroPythonPage.html Sat Feb 25 19:18:07 2023 +0100 @@ -63,6 +63,14 @@ <td>Constructor</td> </tr> <tr> +<td><a href="#MicroPythonPage.on_apShowPasswordButton_clicked">on_apShowPasswordButton_clicked</a></td> +<td>Private slot to show or hide the WiFi Access Point password.</td> +</tr> +<tr> +<td><a href="#MicroPythonPage.on_showPasswordButton_clicked">on_showPasswordButton_clicked</a></td> +<td>Private slot to show or hide the WiFi client password.</td> +</tr> +<tr> <td><a href="#MicroPythonPage.save">save</a></td> <td>Public slot to save the MicroPython configuration.</td> </tr> @@ -87,6 +95,34 @@ reference to the parent widget </dd> </dl> +<a NAME="MicroPythonPage.on_apShowPasswordButton_clicked" ID="MicroPythonPage.on_apShowPasswordButton_clicked"></a> +<h4>MicroPythonPage.on_apShowPasswordButton_clicked</h4> +<b>on_apShowPasswordButton_clicked</b>(<i>checked</i>) + +<p> + Private slot to show or hide the WiFi Access Point password. +</p> +<dl> + +<dt><i>checked</i> (bool)</dt> +<dd> +state of the button +</dd> +</dl> +<a NAME="MicroPythonPage.on_showPasswordButton_clicked" ID="MicroPythonPage.on_showPasswordButton_clicked"></a> +<h4>MicroPythonPage.on_showPasswordButton_clicked</h4> +<b>on_showPasswordButton_clicked</b>(<i>checked</i>) + +<p> + Private slot to show or hide the WiFi client password. +</p> +<dl> + +<dt><i>checked</i> (bool)</dt> +<dd> +state of the button +</dd> +</dl> <a NAME="MicroPythonPage.save" ID="MicroPythonPage.save"></a> <h4>MicroPythonPage.save</h4> <b>save</b>(<i></i>)
--- a/src/eric7/Documentation/Source/index-eric7.EricNetwork.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/index-eric7.EricNetwork.html Sat Feb 25 19:18:07 2023 +0100 @@ -36,6 +36,10 @@ <td>Module implementing some helpers for Google mail.</td> </tr> <tr> +<td><a href="eric7.EricNetwork.EricIPv4InputWidget.html">EricIPv4InputWidget</a></td> +<td>Module implementing a widget to enter an IPv4 address.</td> +</tr> +<tr> <td><a href="eric7.EricNetwork.EricJsonClient.html">EricJsonClient</a></td> <td>Module implementing the JSON based client base class.</td> </tr>
--- a/src/eric7/Documentation/Source/index-eric7.MicroPython.Devices.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/index-eric7.MicroPython.Devices.html Sat Feb 25 19:18:07 2023 +0100 @@ -22,6 +22,10 @@ <td><a href="index-eric7.MicroPython.Devices.EspDialogs.html">EspDialogs</a></td> <td>Package implementing dialogs used by the EspDevices module.</td> </tr> +<tr> +<td><a href="index-eric7.MicroPython.Devices.MCUScripts.html">MCUScripts</a></td> +<td>Package containing scripts for copying to the micro controller board.</td> +</tr> </table> <h3>Modules</h3>
--- a/src/eric7/Documentation/Source/index-eric7.MicroPython.html Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/Documentation/Source/index-eric7.MicroPython.html Sat Feb 25 19:18:07 2023 +0100 @@ -18,6 +18,10 @@ <td><a href="index-eric7.MicroPython.Devices.html">Devices</a></td> <td>Package containing the device interface modules and device specific dialogs.</td> </tr> +<tr> +<td><a href="index-eric7.MicroPython.WifiDialogs.html">WifiDialogs</a></td> +<td>Package implementing WiFi related dialogs.</td> +</tr> </table> <h3>Modules</h3>
--- a/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Sat Feb 25 19:18:07 2023 +0100 @@ -50,6 +50,8 @@ """ super().__init__(microPythonWidget, deviceType, parent) + self.submitMode = "paste" # use 'paste' mode to avoid loosing state + self.__boardName = boardName self.__workspace = self.__findWorkspace()
--- a/src/eric7/MicroPython/Devices/DeviceBase.py Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/MicroPython/Devices/DeviceBase.py Sat Feb 25 19:18:07 2023 +0100 @@ -95,6 +95,8 @@ self.microPython = microPythonWidget self._deviceData = {} # dictionary with essential device data + self.submitMode = "raw" # default is 'raw' mode to submit commands + def setConnected(self, connected): """ Public method to set the connection state. @@ -319,6 +321,7 @@ # user cancelled return "" + # TODO: add sending in 'paste' mode def sendCommands(self, commandsList): """ Public method to send a list of commands to the device. @@ -326,21 +329,25 @@ @param commandsList list of commands to be sent to the device @type list of str """ - rawOn = [ # sequence of commands to enter raw mode - b"\x02", # Ctrl-B: exit raw repl (just in case) - b"\r\x03\x03\x03", # Ctrl-C three times: interrupt any running - # program - b"\r\x01", # Ctrl-A: enter raw REPL - ] - newLine = [ - b'print("\\n")\r', - ] - commands = [c.encode("utf-8)") + b"\r" for c in commandsList] - commands.append(b"\r") - commands.append(b"\x04") - rawOff = [b"\x02", b"\x02"] - commandSequence = rawOn + newLine + commands + rawOff - self._interface.executeAsync(commandSequence) + if self.submitMode == "raw": + rawOn = [ # sequence of commands to enter raw mode + b"\x02", # Ctrl-B: exit raw repl (just in case) + b"\r\x03\x03\x03", # Ctrl-C three times: interrupt any running program + b"\r\x01", # Ctrl-A: enter raw REPL + ] + newLine = [ + b'print("\\n")\r', + ] + commands = [c.encode("utf-8)") + b"\r" for c in commandsList] + commands.append(b"\r") + commands.append(b"\x04") + rawOff = [b"\x02", b"\x02"] + commandSequence = rawOn + newLine + commands + rawOff + self._interface.executeAsync(commandSequence) + elif self.submitMode == "paste": + commands = b"\n".join([c.encode("utf-8)") for c in commandsList]) + commandSequence = ["@PasteOn@", commands] + self._interface.executeAsyncPaste(commandSequence) @pyqtSlot() def handleDataFlood(self): @@ -473,7 +480,7 @@ """.format( dirname ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -525,7 +532,7 @@ """.format( dirname, showHidden ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) fileslist = ast.literal_eval(out.decode("utf-8")) @@ -553,7 +560,7 @@ """.format( dirname ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -570,7 +577,7 @@ print(__os_.getcwd()) del __os_ """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) return out.decode("utf-8").strip() @@ -595,7 +602,7 @@ """.format( filename ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -642,7 +649,7 @@ """.format( name, recursive, force ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -665,7 +672,7 @@ """.format( dirname ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -692,7 +699,7 @@ """.format( dirname ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -754,7 +761,7 @@ ) command = "\n".join(commands) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) return True @@ -823,7 +830,7 @@ """.format( deviceFileName ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -862,7 +869,7 @@ print(fsinfo()) del __os_, fsinfo """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) infolist = ast.literal_eval(out.decode("utf-8")) @@ -935,7 +942,7 @@ print(res) del res, uname, __os_, __sys_ """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -1042,9 +1049,9 @@ res['ulab'] = None print(res) -del res, __os_, __sys_ +del res, __os_, __sys_, uname """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -1058,7 +1065,7 @@ @exception OSError raised to indicate an issue with the device """ commands = ["help('modules')"] - out, err = self._interface.execute(commands) + out, err = self._interface.execute(commands, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -1100,7 +1107,7 @@ del tm del __time_ """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: if b"NotImplementedError" in err: return "<unsupported> <unsupported>" @@ -1172,7 +1179,7 @@ now.tm_isdst, ), ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err))
--- a/src/eric7/MicroPython/Devices/EspDevices.py Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/MicroPython/Devices/EspDevices.py Sat Feb 25 19:18:07 2023 +0100 @@ -717,7 +717,7 @@ del wifi_status """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -771,7 +771,9 @@ ) with EricOverrideCursor(): - out, err = self._interface.execute(command, timeout=15000) + out, err = self._interface.execute( + command, mode=self.submitMode, timeout=15000 + ) if err: return False, err @@ -808,7 +810,7 @@ del disconnect_wifi """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: return False, err @@ -860,7 +862,7 @@ del modify_boot """ - out, err = self._interface.execute(nvsCommand) + out, err = self._interface.execute(nvsCommand, mode=self.submitMode) if err: return False, self.tr("Error saving credentials: {0}").format(err) @@ -875,7 +877,7 @@ except OSError as err: return False, self.tr("Error saving auto-connect script: {0}").format(err) - out, err = self._interface.execute(bootCommand) + out, err = self._interface.execute(bootCommand, mode=self.submitMode) if err: return False, self.tr("Error modifying 'boot.py': {0}").format(err) @@ -904,7 +906,7 @@ del delete_wifi_creds """ - out, err = self._interface.execute(nvsCommand) + out, err = self._interface.execute(nvsCommand, mode=self.submitMode) if err: return False, self.tr("Error deleting credentials: {0}").format(err) @@ -938,7 +940,7 @@ del check_internet """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: return False, err @@ -969,7 +971,7 @@ del scan_networks """ - out, err = self._interface.execute(command, timeout=15000) + out, err = self._interface.execute(command, mode=self.submitMode, timeout=15000) if err: return [], err @@ -1021,7 +1023,7 @@ interface ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: return False, err else: @@ -1069,7 +1071,7 @@ repr(ssid), security, repr(password), ifconfig ) - out, err = self._interface.execute(command, timeout=15000) + out, err = self._interface.execute(command, mode=self.submitMode, timeout=15000) if err: return False, err else: @@ -1104,7 +1106,7 @@ del get_stations """ - out, err = self._interface.execute(command, timeout=10000) + out, err = self._interface.execute(command, mode=self.submitMode, timeout=10000) if err: return [], err
--- a/src/eric7/MicroPython/Devices/MicrobitDevices.py Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/MicroPython/Devices/MicrobitDevices.py Sat Feb 25 19:18:07 2023 +0100 @@ -601,7 +601,7 @@ print(__os_.listdir()) del __os_ """ - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -649,7 +649,7 @@ """.format( showHidden ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) fileslist = ast.literal_eval(out.decode("utf-8"))
--- a/src/eric7/MicroPython/Devices/RP2040Devices.py Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/MicroPython/Devices/RP2040Devices.py Sat Feb 25 19:18:07 2023 +0100 @@ -414,7 +414,7 @@ print(has_wifi()) del has_wifi """ - out, err = self._interface.execute(command, timeout=10000) + out, err = self._interface.execute(command, mode=self.submitMode, timeout=10000) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -477,7 +477,7 @@ else: return super().getWifiData() - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: raise OSError(self._shortError(err)) @@ -548,7 +548,9 @@ return super().connectWifi(ssid, password) with EricOverrideCursor(): - out, err = self._interface.execute(command, timeout=15000) + out, err = self._interface.execute( + command, mode=self.submitMode, timeout=15000 + ) if err: return False, err @@ -593,7 +595,7 @@ else: return super().disconnectWifi() - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: return False, err @@ -657,7 +659,7 @@ return False, str(err) # modify boot.py - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: return False, err @@ -711,7 +713,7 @@ else: return super().checkInternet() - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: return False, err @@ -755,7 +757,7 @@ else: return super().scanNetworks() - out, err = self._interface.execute(command, timeout=15000) + out, err = self._interface.execute(command, mode=self.submitMode, timeout=15000) if err: return [], err @@ -813,7 +815,7 @@ else: return super().deactivateInterface(interface) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: return False, err else: @@ -874,7 +876,7 @@ else: return super().startAccessPoint(ssid, security=security, password=password) - out, err = self._interface.execute(command, timeout=15000) + out, err = self._interface.execute(command, mode=self.submitMode, timeout=15000) if err: return False, err else: @@ -921,7 +923,7 @@ else: return super().checkInternet() - out, err = self._interface.execute(command, timeout=10000) + out, err = self._interface.execute(command, mode=self.submitMode, timeout=10000) if err: return [], err @@ -954,7 +956,7 @@ repr(country) ) - out, err = self._interface.execute(command) + out, err = self._interface.execute(command, mode=self.submitMode) if err: self.microPython.showError("rp2.country()", err)
--- a/src/eric7/MicroPython/MicroPythonDeviceInterface.py Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/MicroPython/MicroPythonDeviceInterface.py Sat Feb 25 19:18:07 2023 +0100 @@ -35,6 +35,9 @@ executeAsyncFinished = pyqtSignal() dataReceived = pyqtSignal(bytes) + PasteModePrompt = b"=== " + TracebackMarker = b"Traceback (most recent call last):" + def __init__(self, parent=None): """ Constructor @@ -107,6 +110,56 @@ """ self.__serial.isConnected() and self.__serial.write(data) + def __pasteOn(self): + """ + Private method to switch the connected device to 'paste' mode. + + Note: switching to paste mode is done with synchronous writes. + + @return flag indicating success + @rtype bool + """ + if not self.__serial: + return False + + pasteMessage = b"paste mode; Ctrl-C to cancel, Ctrl-D to finish\r\n=== " + self.__serial.write(b"\x02") # end raw mode if required + written = self.__serial.waitForBytesWritten(500) + # time out after 500ms if device is not responding + if not written: + return False + for _i in range(3): + # CTRL-C three times to break out of loops + self.__serial.write(b"\r\x03") + written = self.__serial.waitForBytesWritten(500) + # time out after 500ms if device is not responding + if not written: + return False + QThread.msleep(10) + self.__serial.readAll() # read all data and discard it + self.__serial.write(b"\r\x05") # send CTRL-E to enter paste mode + self.__serial.readUntil(pasteMessage) + + if self.__serial.hasTimedOut(): + # it timed out; try it again and than fail + self.__serial.write(b"\r\x05") # send CTRL-E again + self.__serial.readUntil(pasteMessage) + if self.__serial.hasTimedOut(): + return False + + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + ) + self.__serial.readAll() # read all data and discard it + return True + + def __pasteOff(self): + """ + Private method to switch 'paste' mode off. + """ + if self.__serial: + self.__serial.write(b"\x04") # send CTRL-D to cancel paste mode + def __rawOn(self): """ Private method to switch the connected device to 'raw' mode. @@ -114,7 +167,7 @@ Note: switching to raw mode is done with synchronous writes. @return flag indicating success - @@rtype bool + @rtype bool """ if not self.__serial: return False @@ -189,7 +242,7 @@ return True - def execute(self, commands, timeout=0): + def execute(self, commands, *, mode="raw", timeout=0): """ Public method to send commands to the connected device and return the result. @@ -198,6 +251,36 @@ @param commands list of commands to be executed @type str or list of str + @keyparam mode submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw') + @type str + @keyparam timeout per command timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return tuple containing stdout and stderr output of the device + @rtype tuple of (bytes, bytes) + @exception ValueError raised in case of an unsupported submit mode + """ + if mode not in ("paste", "raw"): + raise ValueError("Unsupported submit mode given ('{0}').".format(mode)) + + if mode == "raw": + return self.__execute_raw(commands, timeout=timeout) + elif mode == "paste": + return self.__execute_paste(commands, timeout=timeout) + else: + # just in case + return b"", b"" + + def __execute_raw(self, commands, timeout=0): + """ + Private method to send commands to the connected device using 'raw REPL' mode + and return the result. + + If no serial connection is available, empty results will be returned. + + @param commands list of commands to be executed + @type str or list of str @param timeout per command timeout in milliseconds (0 for configured default) (defaults to 0) @type int (optional) @@ -234,6 +317,7 @@ ) ok = self.__serial.readUntil(b"OK") if ok != b"OK": + self.__blockReadyRead = False return ( b"", "Expected 'OK', got '{0}', followed by '{1}'".format( @@ -263,6 +347,76 @@ return bytes(result), err + def __execute_paste(self, commands, timeout=0): + """ + Private method to send commands to the connected device using 'paste' mode + and return the result. + + If no serial connection is available, empty results will be returned. + + @param commands list of commands to be executed + @type str or list of str + @param timeout per command timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return tuple containing stdout and stderr output of the device + @rtype tuple of (bytes, bytes) + """ + if not self.__serial: + return b"", b"" + + if not self.__serial.isConnected(): + return b"", b"Device not connected or not switched on." + + if isinstance(commands, list): + commands = "\n".join(commands) + + # switch on raw mode + self.__blockReadyRead = True + ok = self.__pasteOn() + if not ok: + self.__blockReadyRead = False + return (b"", b"Could not switch to raw mode. Is the device switched on?") + + # send commands + QThread.msleep(10) + for command in commands.splitlines(keepends=True): + # send the data as single lines + commandBytes = command.encode("utf-8") + self.__serial.write(commandBytes) + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + ) + QThread.msleep(10) + ok = self.__serial.readUntil(commandBytes) + if ok != commandBytes: + self.__blockReadyRead = False + return ( + b"", + "Expected '{0}', got '{1}', followed by '{2}'".format( + commandBytes, ok, self.__serial.readAll() + ).encode("utf-8"), + ) + + # switch off paste mode causing the commands to be executed + self.__pasteOff() + QThread.msleep(10) + result = self.__serial.readUntil(b">>> ", timeout=timeout).replace(b">>> ", b"") + # read until Python prompt + if self.__serial.hasTimedOut(): + self.__blockReadyRead = False + return b"", b"Timeout while processing commands." + + if self.TracebackMarker in result: + errorIndex = result.find(self.TracebackMarker) + out, err = result[:errorIndex], result[errorIndex:] + else: + out = result.strip() + err = b"" + + self.__blockReadyRead = False + return out, err + def executeAsync(self, commandsList): """ Public method to execute a series of commands over a period of time @@ -277,3 +431,25 @@ QTimer.singleShot(2, lambda: self.executeAsync(commandsList)) else: self.executeAsyncFinished.emit() + + def executeAsyncPaste(self, commandsList): + """ + Public method to execute a series of commands over a period of time + without returning any result (asynchronous execution). + + @param commandsList list of commands to be execute on the device + @type list of bytes + """ + if commandsList: + self.__blockReadyRead = True + command = commandsList.pop(0) + if command == "@PasteOn@": + self.__pasteOn() + else: + self.__serial.write(command) + self.__serial.readUntil(command) + QTimer.singleShot(2, lambda: self.executeAsyncPaste(commandsList)) + else: + self.__blockReadyRead = False + self.__pasteOff() + self.executeAsyncFinished.emit()
--- a/src/eric7/MicroPython/MicroPythonWidget.py Fri Feb 24 18:36:43 2023 +0100 +++ b/src/eric7/MicroPython/MicroPythonWidget.py Sat Feb 25 19:18:07 2023 +0100 @@ -750,9 +750,10 @@ if pasteText: pasteText = pasteText.replace("\n\r", "\r") pasteText = pasteText.replace("\n", "\r") - self.__interface.isConnected() and self.__interface.write( - pasteText.encode("utf-8") - ) + if self.__interface.isConnected(): + self.__interface.write(b"\x05") + self.__interface.write(pasteText.encode("utf-8")) + self.__interface.write(b"\x04") def eventFilter(self, obj, evt): """