Index: sources/device/DeviceController.cpp =================================================================== diff -u -rf2e4eba6e85c5d36537be782926f23cc9dc01037 -rbabe585dd9603621275742b07135c0fd4181802f --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision f2e4eba6e85c5d36537be782926f23cc9dc01037) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision babe585dd9603621275742b07135c0fd4181802f) @@ -997,7 +997,7 @@ } /*! - * \brief DeviceController::processUSBMountResponse + * \brief DeviceController::processWifiListResponse * \param vExitCode * \param vStatus */ @@ -1019,3 +1019,138 @@ } } +////////////////////////////////////////////////////////////////////////////////////////////////// DeviceWifiInfo +void DeviceController::onAttributeRequest(const DeviceWifiInfoRequestData &) +{ + wifiInfoRequest(); +} + +/*! + * \brief DeviceController::wifiInfoRequest + * \details Calls the Wifi Info script + * \note This function is created to be able to call independently if needed in this class. + */ +void DeviceController::wifiInfoRequest() +{ + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, Scripts_Wifi_Info), _deviceWifiInfoResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processWifiInfo.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceWifiInfoResponse); + return; + } + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processWifiInfo, script, timeout_ms, {}); + timedProcess->start(); + + MDeviceWifiInfoResponse model; + model._data.mCompleted = false; + model._data.mAccepted = false; + model._data.mMessage = tr("WiFi info started."); + emit didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::processWifiInfoResponse + * \param vExitCode + * \param vStatus + */ +void DeviceController::processWifiInfoResponse(int vExitCode, QProcess::ExitStatus vStatus, QProcess::ProcessChannel vChannel) +{ + static MDeviceWifiInfoResponse model; + if ( vExitCode < 0 ) { + emit didAttributeResponse(model.data()); + switch (vChannel) { + case QProcess::StandardOutput : processWifiInfoReadyOut(model); break; + case QProcess::StandardError : processWifiInfoReadyErr(model); break; + } + } + else { + processWifiInfoComplete(model, vExitCode, vStatus); + emit didAttributeResponse(model.data()); + model._data.clear(); + } +} + + +////////////////////////////////////////////////////////////////////////////////////////////////// DeviceWifiConnect +void DeviceController::onAttributeRequest(const DeviceWifiConnectRequestData &vData) +{ + wifiConnectRequest(vData); +} + +/*! + * \brief DeviceController::wifiConnectRequest + * \details Calls the Wifi connect/ disconnect script + * \note This function is created to be able to call independently if needed in this class. + */ +void DeviceController::wifiConnectRequest(const DeviceWifiConnectRequestData &vData) +{ + DeviceError::Scripts_Error_Enum error = DeviceError::eDevice_OK; + + // ----- initializing the member variable models + _deviceWifiConnectRequest._data = vData; + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, (vData.mConnect ? Scripts_Wifi_Connect : Scripts_Wifi_Disconnect )), _deviceWifiConnectResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processWifiConnect.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceWifiConnectResponse); + return; + } + + QStringList params; + params << vData.mSsid; + if (vData.mConnect ) { + params << vData.mPassword; + } + + if ( error ) { + checkError(error, _deviceWifiConnectResponse); + return; + } + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processWifiConnect, script, timeout_ms, params); + timedProcess->start(); + + MDeviceWifiConnectResponse model; + model._data.mConnect = vData.mConnect; + model._data.mAccepted = false; + model._data.mMessage = vData.mConnect ? tr("Connecting to WiFi.") : tr("Disconnecting from WiFi."); + emit didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::processWifiConnectResponse + * \param vExitCode + * \param vStatus + */ +void DeviceController::processWifiConnectResponse(int vExitCode, QProcess::ExitStatus vStatus, QProcess::ProcessChannel vChannel) +{ + Q_UNUSED(vStatus ) + Q_UNUSED(vChannel ) + static MDeviceWifiConnectResponse model; + + if ( vExitCode < 0 ) { + emit didAttributeResponse(model.data()); + switch (vChannel) { + case QProcess::StandardOutput : processWifiConnectReadyOut(model); break; + case QProcess::StandardError : processWifiConnectReadyErr(model); break; + } + } + else { + processWifiConnectComplete(model, vExitCode, vStatus); + emit didAttributeResponse(model.data()); + model._data.clear(); + } +}