Index: sources/device/DeviceController.cpp =================================================================== diff -u -re7adb742d7dd362b2deb795259694b223eea3bc0 -r86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision e7adb742d7dd362b2deb795259694b223eea3bc0) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f) @@ -1018,7 +1018,6 @@ // ----- run the process int timeout_ms = 10000; TimedProcess *timedProcess = new TimedProcess(&_processWifiList, script, timeout_ms, {}); - //DEBUG qDebug() << script << timeout_ms; timedProcess->start(); MDeviceWifiListResponse model; @@ -1251,3 +1250,125 @@ model._data.clear(); } } + +////////////////////////////////////////////////////////////////////////////////////////////////// DeviceDecommission +void DeviceController::onAttributeRequest(const DeviceDecommissionRequestData &vData) +{ + decommissionRequest(vData); +} + +/*! + * \brief DeviceController::decommissionRequest + * \details Calls the decommission script + * \note This function is created to be able to call independently if needed in this class. + */ +void DeviceController::decommissionRequest(const DeviceDecommissionRequestData &vData) +{ + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, Scripts_Device_Decommission), _deviceDecommissionResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processDecommission.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceDecommissionResponse); + return; + } + + QStringList params; + params << vData.mPassword; + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processDecommission, script, timeout_ms, params); + timedProcess->start(); + + MDeviceDecommissionResponse model; + model._data.mCompleted = false; + model._data.mAccepted = false; + model._data.mMessage = tr("Decommission started."); + emit didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::processDecommissionResponse + * \param vExitCode + * \param vStatus + */ +void DeviceController::processDecommissionResponse(int vExitCode, QProcess::ExitStatus vStatus, QProcess::ProcessChannel vChannel) +{ + static MDeviceDecommissionResponse model; + if ( vExitCode < 0 ) { + emit didAttributeResponse(model.data()); + switch (vChannel) { + case QProcess::StandardOutput : processDecommissionReadyOut(model); break; + case QProcess::StandardError : processDecommissionReadyErr(model); break; + } + } + else { + processDecommissionComplete(model, vExitCode, vStatus); + emit didAttributeResponse(model.data()); + model._data.clear(); + } +} + +////////////////////////////////////////////////////////////////////////////////////////////////// DeviceRootSSHAccess +void DeviceController::onAttributeRequest(const DeviceRootSSHAccessRequestData &vData) +{ + rootSSHAccessRequest(vData); +} + +/*! + * \brief DeviceController::rootSSHAccessRequest + * \details Calls the RootSSHAccess script + * \note This function is created to be able to call independently if needed in this class. + */ +void DeviceController::rootSSHAccessRequest(const DeviceRootSSHAccessRequestData &vData) +{ + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, Scripts_Ssh_Access), _deviceRootSSHAccessResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processRootSSHAccess.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceRootSSHAccessResponse); + return; + } + + QStringList params; + params << QString::number(static_cast(vData.mRootSSHAccess)); + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processRootSSHAccess, script, timeout_ms, params); + timedProcess->start(); + + MDeviceRootSSHAccessResponse model; + model._data.mCompleted = false; + model._data.mAccepted = false; + model._data.mMessage = tr("RootSSHAccess started."); + emit didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::processRootSSHAccessResponse + * \param vExitCode + * \param vStatus + */ +void DeviceController::processRootSSHAccessResponse(int vExitCode, QProcess::ExitStatus vStatus, QProcess::ProcessChannel vChannel) +{ + static MDeviceRootSSHAccessResponse model; + if ( vExitCode < 0 ) { + emit didAttributeResponse(model.data()); + switch (vChannel) { + case QProcess::StandardOutput : processRootSSHAccessReadyOut(model); break; + case QProcess::StandardError : processRootSSHAccessReadyErr(model); break; + } + } + else { + processRootSSHAccessComplete(model, vExitCode, vStatus); + emit didAttributeResponse(model.data()); + model._data.clear(); + } +}