Index: sources/device/DeviceController.cpp =================================================================== diff -u -r6f480a8d61165dd24cf8da7e9e637f89147303c3 -re7c552d59935eb2a63f3dcee0a5161d19f5c7ac5 --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 6f480a8d61165dd24cf8da7e9e637f89147303c3) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision e7c552d59935eb2a63f3dcee0a5161d19f5c7ac5) @@ -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(); + } +}