Index: sources/device/DeviceController.cpp =================================================================== diff -u -r86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f -r0836610a587b1e4986c08afe0711ef336e5b07ff --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 0836610a587b1e4986c08afe0711ef336e5b07ff) @@ -1325,6 +1325,11 @@ */ void DeviceController::rootSSHAccessRequest(const DeviceRootSSHAccessRequestData &vData) { + DeviceError::Scripts_Error_Enum error = DeviceError::eDevice_OK; + + // ----- initializing the member variable models + _deviceRootSSHAccessRequest._data = vData; + // ----- check that script exists. QString script; if ( checkError( DeviceError::checkScript(script, Scripts_Ssh_Access), _deviceRootSSHAccessResponse, script) ) @@ -1337,8 +1342,15 @@ } QStringList params; - params << QString::number(static_cast(vData.mRootSSHAccess)); + if ( ! vData.mIsGet ) { + params << QString::number(static_cast(vData.mRootSSHAccess)); + } + if ( error ) { + checkError(error, _deviceWifiConnectResponse); + return; + } + // ----- run the process int timeout_ms = 10000; TimedProcess *timedProcess = new TimedProcess(&_processRootSSHAccess, script, timeout_ms, params); Index: sources/device/DeviceModels.cpp =================================================================== diff -u -r86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f -r0836610a587b1e4986c08afe0711ef336e5b07ff --- sources/device/DeviceModels.cpp (.../DeviceModels.cpp) (revision 86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f) +++ sources/device/DeviceModels.cpp (.../DeviceModels.cpp) (revision 0836610a587b1e4986c08afe0711ef336e5b07ff) @@ -219,10 +219,11 @@ bool MDeviceRootSSHAccessResponse::fromByteArray(const QByteArray &vByteArray, int *vExitCode) { // initialize data - bool ok = false; - int error = 0; - _data.mAccepted = false; - _data.mReason = Device::DeviceError::eDevice_OK; + bool ok = false; + int error = 0; + _data.mCompleted = true; + _data.mAccepted = false; + _data.mReason = Device::DeviceError::eDevice_OK; // set as default if the val is invalid. _data.mRootSSHAccess = Qt::Unchecked; Index: sources/device/DeviceModels.h =================================================================== diff -u -re7adb742d7dd362b2deb795259694b223eea3bc0 -r0836610a587b1e4986c08afe0711ef336e5b07ff --- sources/device/DeviceModels.h (.../DeviceModels.h) (revision e7adb742d7dd362b2deb795259694b223eea3bc0) +++ sources/device/DeviceModels.h (.../DeviceModels.h) (revision 0836610a587b1e4986c08afe0711ef336e5b07ff) @@ -253,7 +253,7 @@ } _data; QString toString() { - return MDeviceRequestBase::toString("RootSSHAccess", { _data.mIsGet?"q":"r", _data.mRootSSHAccess } ); + return MDeviceRequestBase::toString("RootSSHAccess", { _data.mRootSSHAccess, _data.mIsGet } ); } QByteArray toByteArray(Device::DeviceError::Scripts_Error_Enum * = nullptr) override { return ""; } @@ -269,10 +269,10 @@ Qt::CheckState mRootSSHAccess = Qt::Unchecked; } _data; - QVariantList parameters () const override { return { _data.mRootSSHAccess }; } - QString infoText () const override { return QString("RootSSHAccess"); } - Data data () const { return _data; } - bool fromByteArray(const QByteArray &vByteArray, int *vExitCode = nullptr) override; + QVariantList parameters ( ) const override { return { }; } + QString infoText ( ) const override { return QString("RootSSHAccess"); } + Data data ( ) const { return _data; } + bool fromByteArray (const QByteArray &vByteArray, int *vExitCode = nullptr ) override; }; // ================================================= MDeviceFactoryReset Index: sources/device/DeviceView.cpp =================================================================== diff -u -r86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f -r0836610a587b1e4986c08afe0711ef336e5b07ff --- sources/device/DeviceView.cpp (.../DeviceView.cpp) (revision 86df7ff03ea32f9cd8a18bbbc7b2e01de64c783f) +++ sources/device/DeviceView.cpp (.../DeviceView.cpp) (revision 0836610a587b1e4986c08afe0711ef336e5b07ff) @@ -180,15 +180,16 @@ } void VDevice::onAttributeResponse(const DeviceRootSSHAccessResponseData &vData) { - if ( vData.mAccepted ) { - rootSSHAccess(vData.mRootSSHAccess); - status(""); + + if ( vData.mCompleted ) { + if ( vData.mAccepted ) { + emit rootSSHAccessChanged(vData.mRootSSHAccess); + status(""); + } + else { + status(vData.mMessage); + } } - else { - // this has to be called to let Gui to set to old value that device controller provided. - emit rootSSHAccessChanged(vData.mRootSSHAccess); - status(vData.mMessage); - } accepted(vData.mAccepted); reason (vData.mReason );