Index: sources/device/DeviceController.cpp =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -1076,3 +1076,74 @@ model._data.clear(); } } + + +////////////////////////////////////////////////////////////////////////////////////////////////// DeviceConnectWifi +/*! + * \brief DeviceController::onAttributeRequest + * \details Calls the Wifi connect/ disconnect script + */ +void DeviceController::onAttributeRequest(const DeviceConnectWifiRequestData &vData) +{ + DeviceError::Scripts_Error_Enum error = DeviceError::eDevice_OK; + + // ----- initializing the member variable models + _deviceConnectWifiRequest._data = vData; + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, (vData.mConnect ? Scripts_Wifi_Connect : Scripts_Wifi_Disconnect )), _deviceConnectWifiResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processConnectWifi.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceConnectWifiResponse); + return; + } + + QStringList params; + params << vData.mSsid; + if (vData.mConnect ) { + params << vData.mPassword; + } + + if ( error ) { + checkError(error, _deviceConnectWifiResponse); + return; + } + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processConnectWifi, script, timeout_ms, params); + timedProcess->start(); + + MDeviceConnectWifiResponse model; + model._data.mAccepted = false; + model._data.mMessage = vData.mConnect ? tr("Connecting to Wifi.") : tr("Disconnecting to Wifi"); + emit didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::processConnectWifiResponse + * \param vExitCode + * \param vStatus + */ +void DeviceController::processConnectWifiResponse(int vExitCode, QProcess::ExitStatus vStatus, QProcess::ProcessChannel vChannel) +{ + Q_UNUSED(vStatus ) + Q_UNUSED(vChannel ) + static MDeviceConnectWifiResponse model; + + if ( vExitCode < 0 ) { + emit didAttributeResponse(model.data()); + switch (vChannel) { + case QProcess::StandardOutput : processConnectWifiReadyOut(model); break; + case QProcess::StandardError : processConnectWifiReadyErr(model); break; + } + } + else { + processConnectWifiComplete(model, vExitCode, vStatus); + emit didAttributeResponse(model.data()); + model._data.clear(); + } +} Index: sources/device/DeviceError.cpp =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceError.cpp (.../DeviceError.cpp) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceError.cpp (.../DeviceError.cpp) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -56,6 +56,7 @@ QT_TR_NOOP("The Brightness failed." ), // eDevice_Brightness_Error QT_TR_NOOP("The WiFi scan failed." ), // eDevice_WifiList_Error QT_TR_NOOP("The WiFi info failed." ), // eDevice_WifiInfo_Error + QT_TR_NOOP("The Connect WiFi failed." ), // ConnectWifi QT_TR_NOOP("The USB Mount failed." ), // eDevice_USBMount_Error }; Index: sources/device/DeviceError.h =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceError.h (.../DeviceError.h) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceError.h (.../DeviceError.h) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -74,6 +74,7 @@ eDevice_Brightness_Error , eDevice_WifiList_Error , eDevice_WifiInfo_Error , + eDevice_ConnectWifi_Error , eDevice_USBMount_Error , eDevice_Error_End Index: sources/device/DeviceGlobals.h =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceGlobals.h (.../DeviceGlobals.h) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceGlobals.h (.../DeviceGlobals.h) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -205,6 +205,8 @@ DEVICE_DEV_PARENT ( USBMount ) \ DEVICE_DEV_PARENT ( WifiList ) \ DEVICE_DEV_PARENT ( WifiInfo ) \ + DEVICE_DEV_PARENT ( ConnectWifi ) \ + /* DEVICE_DEV_PARENT ( BluetoothPairedReset ) \ DEVICE_DEV_PARENT ( BluetoothPairedQuery ) \ @@ -220,6 +222,7 @@ DEVICE_DEV_INIT_CONNECTIONS ( USBMount ) \ DEVICE_DEV_INIT_CONNECTIONS ( WifiList ) \ DEVICE_DEV_INIT_CONNECTIONS ( WifiInfo ) \ + DEVICE_DEV_INIT_CONNECTIONS ( ConnectWifi ) \ /* DEVICE_DEV_INIT_CONNECTIONS ( BluetoothPairedReset ) \ DEVICE_DEV_INIT_CONNECTIONS ( BluetoothPairedQuery ) \ @@ -235,6 +238,7 @@ DEVICE_DEV_DEFINITION ( USBMount ) \ DEVICE_DEV_DEFINITION ( WifiList ) \ DEVICE_DEV_DEFINITION ( WifiInfo ) \ + DEVICE_DEV_DEFINITION ( ConnectWifi ) \ /* DEVICE_DEV_DEFINITION ( BluetoothPairedReset ) \ DEVICE_DEV_DEFINITION ( BluetoothPairedQuery ) \ @@ -250,6 +254,7 @@ DEVICE_DEV_DECLARATION ( USBMount ) \ DEVICE_DEV_DECLARATION ( WifiList ) \ DEVICE_DEV_DECLARATION ( WifiInfo ) \ + DEVICE_DEV_DECLARATION ( ConnectWifi ) \ /* DEVICE_DEV_DECLARATION ( BluetoothPairedReset ) \ DEVICE_DEV_DECLARATION ( BluetoothPairedQuery ) \ @@ -266,6 +271,7 @@ DEVICE_APP_INIT_CONNECTIONS ( Brightness ) \ DEVICE_APP_INIT_CONNECTIONS ( WifiList ) \ DEVICE_APP_INIT_CONNECTIONS ( WifiInfo ) \ + DEVICE_APP_INIT_CONNECTIONS ( ConnectWifi ) \ /* DEVICE_APP_INIT_CONNECTIONS ( BluetoothPairedReset ) \ DEVICE_APP_INIT_CONNECTIONS ( BluetoothPairedQuery ) \ @@ -280,6 +286,7 @@ DEVICE_APP_BRIDGE_DEFINITION( USBMount ) \ DEVICE_APP_BRIDGE_DEFINITION( WifiList ) \ DEVICE_APP_BRIDGE_DEFINITION( WifiInfo ) \ + DEVICE_APP_BRIDGE_DEFINITION( ConnectWifi ) \ /* DEVICE_APP_BRIDGE_DEFINITION( BluetoothPairedReset ) \ DEVICE_APP_BRIDGE_DEFINITION( BluetoothPairedQuery ) \ @@ -296,6 +303,7 @@ DEVICE_GUI_INIT_CONNECTIONS ( Brightness ) \ DEVICE_GUI_INIT_CONNECTIONS ( WifiList ) \ DEVICE_GUI_INIT_CONNECTIONS ( WifiInfo ) \ + DEVICE_GUI_INIT_CONNECTIONS ( ConnectWifi ) \ /* DEVICE_GUI_INIT_CONNECTIONS ( BluetoothPairedReset ) \ DEVICE_GUI_INIT_CONNECTIONS ( BluetoothPairedQuery ) \ @@ -309,6 +317,7 @@ DEVICE_GUI_BRIDGE_DEFINITION( Brightness ) \ DEVICE_GUI_BRIDGE_DEFINITION( WifiList ) \ DEVICE_GUI_BRIDGE_DEFINITION( WifiInfo ) \ + DEVICE_GUI_BRIDGE_DEFINITION( ConnectWifi ) \ /* DEVICE_GUI_BRIDGE_DEFINITION( BluetoothPairedReset ) \ DEVICE_GUI_BRIDGE_DEFINITION( BluetoothPairedQuery ) \ @@ -325,6 +334,7 @@ DEVICE_VIEW_INIT_CONNECTIONS( Brightness ) \ DEVICE_VIEW_INIT_CONNECTIONS( WifiList ) \ DEVICE_VIEW_INIT_CONNECTIONS( WifiInfo ) \ + DEVICE_VIEW_INIT_CONNECTIONS( ConnectWifi ) \ /* DEVICE_VIEW_INIT_CONNECTIONS( BluetoothPairedReset ) \ DEVICE_VIEW_INIT_CONNECTIONS( BluetoothPairedQuery ) \ Index: sources/device/DeviceModels.cpp =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceModels.cpp (.../DeviceModels.cpp) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceModels.cpp (.../DeviceModels.cpp) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -265,8 +265,6 @@ */ bool MDeviceWifiInfoResponse::fromByteArray(const QByteArray &vByteArray, int *vExitCode) { - //DEBUG qDebug() << __FUNCTION__ << vByteArray; - // initialize data bool ok = false; int error = 0; @@ -305,6 +303,43 @@ } /*! + * \brief MDeviceConnectWifiResponse::fromByteArray + * \details Checks the response and sets up the model data. + * \param vExitCode - Passed script exit code + * \return true if passed. + */ +bool MDeviceConnectWifiResponse::fromByteArray(const QByteArray &vByteArray, int *vExitCode) +{ + // initialize data + bool ok = false; + int error = 0; + _data.mCompleted = true; + _data.mAccepted = false; + _data.mReason = Device::DeviceError::eDevice_OK; + + // check if the vExitCode passed and it has a value other than zero + if ( ! ok ){ _data.mReason = Device::DeviceError::eDevice_Scripts_Error_Incorrect_Rsp_Type ; goto lError; } // there is not a valid value + if ( vExitCode && *vExitCode ){ _data.mReason = Device::DeviceError::eDevice_ConnectWifi_Error ; goto lApply; } // there still a valid value + + // Now everything is good to extract the data + _data.mAccepted = true; + _data.mMessage = QObject::tr("The WiFi (Dis)Connection is complete.") ; goto lOut ; // normal return + + // apply returned value in case the passed value is valid (type, range) + // regardless of the exit code (success, fail) +lApply: + goto lOut; + + // immediate exit on fail exitcode and invalid returned value. +lError: + if ( vExitCode ) error = *vExitCode; + _data.mMessage = Device::DeviceError::deviceErrorText(static_cast(_data.mReason), error) + "\n" + vByteArray; + +lOut: + return _data.mAccepted; +} + +/*! * \brief MDeviceUSBMountResponse::fromByteArray * \details Checks the response and sets up the model data. * \param vExitCode - Passed script exit code Index: sources/device/DeviceModels.h =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceModels.h (.../DeviceModels.h) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceModels.h (.../DeviceModels.h) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -434,6 +434,40 @@ bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; }; +// ================================================= MDeviceConnectWifi +/*! + * \brief The MDeviceConnectWifiRequest class + * \details The model for the Wifi connnect/disconnect script call. + */ +class MDeviceConnectWifiRequest : public MDeviceRequestBase { +public: + struct Data { + bool mConnect = true; // set true = connect/ false = disconnect + QString mSsid = "" ; + QString mPassword = "" ; + } _data; + + QString toString() { + return MDeviceRequestBase::toString("ConnectWifi", { _data.mConnect, _data.mSsid, _data.mPassword }); + } + + QByteArray toByteArray(Device::DeviceError::Scripts_Error_Enum * = nullptr) override { return ""; } +}; + +/*! + * \brief The MDeviceConnectWifiResponse class + * \details The model for the Wifi connect/disconnect script call returned value / response. + */ +class MDeviceConnectWifiResponse : public MDeviceResponseBase { +public: + struct Data : MDeviceResponseBase::Data { + } _data; + QVariantList parameters ( ) const override { return { }; } + QString infoText ( ) const override { return QString("ConnectWifi"); } + Data data ( ) const { return _data; } + bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; +}; + } typedef Model::MDeviceResponseBase ::Data DeviceResponseBaseData; @@ -468,3 +502,5 @@ typedef Model::MDeviceWifiInfoRequest ::Data DeviceWifiInfoRequestData ; typedef Model::MDeviceWifiInfoResponse ::Data DeviceWifiInfoResponseData; +typedef Model::MDeviceConnectWifiRequest ::Data DeviceConnectWifiRequestData ; +typedef Model::MDeviceConnectWifiResponse ::Data DeviceConnectWifiResponseData; Index: sources/device/DeviceView.cpp =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceView.cpp (.../DeviceView.cpp) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceView.cpp (.../DeviceView.cpp) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -548,7 +548,46 @@ subnetMask(fields[eSUBNETMASK].trimmed()); gateway(fields[eGATEWAY].trimmed()); dns(fields[eDNS2].isEmpty() ? fields[eDNS1].trimmed() : - QStringLiteral("%1,\n%2").arg(fields[eDNS1].trimmed()) + QStringLiteral("%1,%2").arg(fields[eDNS1].trimmed()) .arg(fields[eDNS2].trimmed())); } + +// ================================================= ConnectWifi +void VDevice::doInitConnectWifi() { + // Nothing for now. + connectWifi(""); +} + +void VDevice::connectWifiRequest(const QString &) { + // Nothing for now. +} + +void VDevice::doConnectWifi(const bool &vConnect, const QString &vSsid, const QString &vPassword) { + DeviceConnectWifiRequestData data; + data.mConnect = vConnect; + data.mSsid = vSsid; + data.mPassword = vPassword; + + emit didAttributeRequest(data); +} + +void VDevice::onAttributeResponse(const DeviceConnectWifiResponseData &vData) { + LOG_DEBUG(QStringLiteral("*********** onAttributeResponse : %1 %2").arg(vData.mCompleted ) + .arg(vData.mCompleted )); + + // this has to be called to let Gui to set to old value that device controller provided. + status(vData.mMessage); + accepted(vData.mAccepted); + reason (vData.mReason ); + + if ( vData.mCompleted ) { + if ( vData.mAccepted ) { + // rescan once connect/disconnect has completed + wifiListRequest({}); + } + } + + // has to be the last one + response(true); +} Index: sources/device/DeviceView.h =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/device/DeviceView.h (.../DeviceView.h) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/device/DeviceView.h (.../DeviceView.h) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -131,9 +131,13 @@ READONLY ( QString , gateway , "" ) READONLY ( QString , subnetMask , "" ) READONLY ( QString , dns , "" ) + ATTRIBUTE ( QString , connectWifi , "", ConnectWifi ) VIEW_DEC_CLASS_EX(VDevice, QAbstractListModel) +public slots: + void doConnectWifi(const bool &vConnect, const QString &vSsid, const QString &vPassword); + private slots: void onPOSTOSVersionData (const QString &vOSVersion); Index: sources/gui/qml/components/StackItem.qml =================================================================== diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/gui/qml/components/StackItem.qml (.../StackItem.qml) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1) +++ sources/gui/qml/components/StackItem.qml (.../StackItem.qml) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -30,7 +30,7 @@ visible: false width : Variables.applicationWidth - height: Variables.applicationHeight + height: Variables.applicationHeight - 100 // fix later /*! * \brief prints out the list of the items in the stack by their index position in the stack. Index: sources/gui/qml/main.qml =================================================================== diff -u -r712f4c8a1b2382919300895b4422b831471044a3 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/gui/qml/main.qml (.../main.qml) (revision 712f4c8a1b2382919300895b4422b831471044a3) +++ sources/gui/qml/main.qml (.../main.qml) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -263,7 +263,9 @@ // ----- Follow the below Z order ----- // 1 - Screens // 1 - 1 - SettingsStack { id: _settingsStack } + SettingsStack { id: _settingsStack + anchors.top : _headerBar.bottom + } // 1 - 2 ManagerStack { id: _managerStack } // 1 - 3 @@ -299,6 +301,7 @@ // 9 - Others Rectangle { //TODO:@LEAHI: make this the statusbar/headerbar component. + id: _headerBar anchors.top: parent.top width : Variables.applicationWidth height : Variables.notificationHeight Index: sources/gui/qml/pages/settings/SettingsBase.qml =================================================================== diff -u -ra5760947d3ed0d2748ba023a1c25e3c6aa0b1de1 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/gui/qml/pages/settings/SettingsBase.qml (.../SettingsBase.qml) (revision a5760947d3ed0d2748ba023a1c25e3c6aa0b1de1) +++ sources/gui/qml/pages/settings/SettingsBase.qml (.../SettingsBase.qml) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -65,8 +65,8 @@ visible: true enabled: true anchors { - top : _root.top - left : _root.left + top : _root.top + left : _root.left } onClicked: { _root.backClicked() @@ -87,7 +87,6 @@ Text { id: _titleText anchors { top : _root.top - topMargin : topMarginTitle horizontalCenter: parent.horizontalCenter } horizontalAlignment : Text.AlignHCenter Index: sources/gui/qml/pages/settings/SettingsWiFi.qml =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/gui/qml/pages/settings/SettingsWiFi.qml (.../SettingsWiFi.qml) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/gui/qml/pages/settings/SettingsWiFi.qml (.../SettingsWiFi.qml) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -54,13 +54,6 @@ confirmVisible : false // since the static setting is done one by one seems confirm is not needed for now. firstFocusInput : _ipAddress notificationText: vDevice.status - onConfirmClicked: { - vDevice.doConfirm( - _ipAddress .textInput.text , - _gateway .textInput.text , - _subnetmask .textInput.text , - _dns .textInput.text ) - } Column { id : _ipColumn spacing : _root.spacing @@ -74,11 +67,8 @@ label.text : qsTr("IP Address") textInput.width : entryWidth label.width : labelWidth - // hasCursor : false // set false for now to disable the static IP entry for phase 1 + hasCursor : false // set false for now to disable the static IP entry for phase 1 validator : ipValidator - onEnterPressed : { - // vDevice.doSetIPAddress(textInput.text) - } } TextEntry { id : _gateway @@ -87,11 +77,8 @@ textInput.width : entryWidth label.width : labelWidth label.text : qsTr("Gateway") - // hasCursor : false // set false for now to disable the static IP entry for phase 1 + hasCursor : false // set false for now to disable the static IP entry for phase 1 validator : ipValidator - onEnterPressed : { - // vDevice.doSetGateway(textInput.text) - } } TextEntry { id : _subnetmask @@ -100,23 +87,17 @@ textInput.width : entryWidth label.width : labelWidth label.text : qsTr("Subnet Mask") - // hasCursor : false // set false for now to disable the static IP entry for phase 1 + hasCursor : false // set false for now to disable the static IP entry for phase 1 validator : ipValidator - onEnterPressed : { - // vDevice.doSetSubnetMask(textInput.text) - } } TextEntry { id : _dns textInput.text : vDevice.dns textInput.width : entryWidth label.width : labelWidth label.text : qsTr("DNS") - // hasCursor : false // set false for now to disable the static IP entry for phase 1 + hasCursor : false // set false for now to disable the static IP entry for phase 1 validator : ipValidator - onEnterPressed : { - // vDevice.doSetDNS(textInput.text) - } } } @@ -238,11 +219,11 @@ onConfirmClicked : { if ( isPassword ) { if( passwordCurrent.length > 0 ) { - // vNetwork.doJoinNetwork ( macAddress, passwordCurrent ) + vDevice.doConnectWifi( true, ssid, passwordCurrent ) pop() } } else { - // vNetwork.doDisconnectNetwork( macAddress ) + vDevice.doConnectWifi( false, ssid, "" ) pop() } } Index: sources/model/MModel.h =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/model/MModel.h (.../MModel.h) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/model/MModel.h (.../MModel.h) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -311,6 +311,8 @@ REGISTER_METATYPE( DeviceWifiListResponseData ) \ REGISTER_METATYPE( DeviceWifiInfoRequestData ) \ REGISTER_METATYPE( DeviceWifiInfoResponseData ) \ + REGISTER_METATYPE( DeviceConnectWifiRequestData ) \ + REGISTER_METATYPE( DeviceConnectWifiResponseData ) \ /* Settings */ \ REGISTER_METATYPE( SettingsData ) \ REGISTER_METATYPE( BluetoothData ) \ Index: sources/storage/StorageGlobals.cpp =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/storage/StorageGlobals.cpp (.../StorageGlobals.cpp) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -182,6 +182,7 @@ // WiFi Settings const char *Scripts_Wifi_Scan = "wifi_scan.sh"; const char *Scripts_Wifi_Info = "wifi_info.sh"; + const char *Scripts_Wifi_Connect = "wifi_connect.sh"; const char *Scripts_Wifi_Disconnect = "wifi_disconnect.sh"; const char *Scripts_Wifi_Active_Info = "wifi_active_info.sh"; const char *Scripts_Wifi_Connect_Dhcp = "wifi_connect_dhcp.sh"; Index: sources/storage/StorageGlobals.h =================================================================== diff -u -rf0a80523d37c862fd24064522216b0bd53a2cc33 -rbf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634 --- sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision f0a80523d37c862fd24064522216b0bd53a2cc33) +++ sources/storage/StorageGlobals.h (.../StorageGlobals.h) (revision bf5b9b7cb86aaf3c4ec85e4ef0b92cba0e836634) @@ -98,6 +98,7 @@ // WiFi extern const char *Wifi_Scripts_Dir; extern const char *Scripts_Wifi_Disconnect; + extern const char *Scripts_Wifi_Connect; extern const char *Wifi_Generate_WPA_Supplicant; extern const char *Wifi_Read_DNS; extern const char *Wifi_Read_Gateway;