Index: sources/device/DeviceController.cpp =================================================================== diff -u -r97d593e2e7adb36f2f9f97f9bb9958dcef740bc1 -rf38edd22f7b63694c21b83d6f4b69ea618390126 --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 97d593e2e7adb36f2f9f97f9bb9958dcef740bc1) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision f38edd22f7b63694c21b83d6f4b69ea618390126) @@ -352,7 +352,7 @@ // has been tested manually bool ok; _usbDrive = vDevice.toLatin1().constData(); - ok = ::mount(_usbDrive, USB_Mount_Point, USB_File_System,MS_SYNCHRONOUS , "") == 0; + ok = ::mount(_usbDrive, USB_Mount_Point, USB_File_System, MS_SYNCHRONOUS, "") == 0; if (ok) { _mounted = true; _removed = false; @@ -420,8 +420,7 @@ bool DeviceController::checkError(DeviceError::Scripts_Error_Enum vError, TModel &vModel, QString vExtraLogInfo) { if ( vError ) { - QString src = vError > DeviceError::eScripts_Error_Start ? MAbstract::unitText(MAbstract::Unit_Enum::eUI) : MAbstract::unitText(MAbstract::Unit_Enum::eDV) + ","; - + QString src = (vError > DeviceError::eScripts_Error_Start ? MAbstract::unitText(MAbstract::Unit_Enum::eUI) : MAbstract::unitText(MAbstract::Unit_Enum::eDV)) + ","; vModel._data.mAccepted = false ; vModel._data.mReason = vError ; vModel._data.mMessage = DeviceError::scriptErrorText(vError) + QString(" [%1]").arg(vError); @@ -439,43 +438,45 @@ */ void DeviceController::onAttributeRequest(const DeviceBrightnessRequestData &vData) { + // ----- initializing the member variable models + _deviceBrightnessRequest ._data = vData; + _deviceBrightnessResponse._data.mBrightnessPercent = _deviceBrightnessRequest._data.mBrightness_old * 10; // set to old value in case of error - Model::MDeviceBrightnessRequest mRequest (vData); - Model::MDeviceBrightnessResponse mResponse ; - mResponse._data.mBrightnessPercent = _brightness_old * 10; // set to old value in case of error - // ----- extract the required data - _brightness_val = vData.mBrightnessPercent / 10; // convert the GUI value(percent) to device value - LOG_EVENT(mRequest.toString()); + _deviceBrightnessRequest._data.mBrightness_val = vData.mBrightnessPercent / 10; // convert the GUI value(percent) to device value + LOG_EVENT(_deviceBrightnessRequest.toString()); // ----- check that script exists. QString script; - if ( checkError( DeviceError::checkScript(script, Brightness_Set ), mResponse, script) ) + if ( checkError( DeviceError::checkScript(script, vData.mRead ? Brightness_Get : Brightness_Set), _deviceBrightnessResponse, script) ) return; // ----- check if the process is not running if ( _processBrightness.state() != QProcess::NotRunning ) { - checkError(DeviceError::eScripts_Error_IsRunning, mResponse); + checkError(DeviceError::eScripts_Error_IsRunning, _deviceBrightnessResponse); return; } // ----- check the data is valid - if ( _brightness_min > _brightness_val || _brightness_val > _brightness_max ) { - checkError(DeviceError::eScripts_Error_OutOfRange, mResponse); + // TODO : this should be in the model + if ( _deviceBrightnessRequest.mBrightness_min > _deviceBrightnessRequest._data.mBrightness_val || _deviceBrightnessRequest._data.mBrightness_val > _deviceBrightnessRequest.mBrightness_max ) { + checkError(DeviceError::eScripts_Error_OutOfRange, _deviceBrightnessResponse); return; } + // ----- check the value is in the list of correct resolution - // create the list of correct values + // create the list of correct values + // TODO : this should be in the model QList _allowableValues; - for ( quint8 i = _brightness_min; i <= _brightness_max; i += _brightness_res ) _allowableValues += i; - // check the value is in the list - if ( ! _allowableValues.contains(_brightness_val) ) { - checkError(DeviceError::eScripts_Error_Incorrect, mResponse); + for ( quint8 i = _deviceBrightnessRequest.mBrightness_min; i <= _deviceBrightnessRequest.mBrightness_max; i += _deviceBrightnessRequest.mBrightness_res ) _allowableValues += i; + // check the value is in the list + if ( ! _allowableValues.contains(_deviceBrightnessRequest._data.mBrightness_val) ) { + checkError(DeviceError::eScripts_Error_Incorrect_Req, _deviceBrightnessResponse); return; } // ----- run the process - _processBrightness.start(script, QStringList() << QString::number(_brightness_val)); + _processBrightness.start(script, QStringList() << QString::number(_deviceBrightnessRequest._data.mBrightness_val)); } /*! @@ -491,12 +492,24 @@ */ void DeviceController::onProcessBrightnessExitCode(int vExitCode) { - Model::MDeviceBrightnessResponse mResponse; - mResponse._data.mBrightnessPercent = _brightness_old * 10; // set to old value in case of error - if ( ! checkError(static_cast(vExitCode), mResponse, Brightness_Set) ) { // has no error - mResponse._data.mBrightnessPercent = _brightness_val * 10; - mResponse._data.mMessage = mResponse.toString(); - LOG_EVENT(mResponse._data.mMessage); - emit didAttributeResponse(mResponse._data); + _deviceBrightnessResponse._data.mBrightnessPercent = _deviceBrightnessRequest._data.mBrightness_old * 10; // set to old value in case of error + if ( ! checkError(static_cast(vExitCode), _deviceBrightnessResponse, _deviceBrightnessResponse.toString()) ) { // has no error + if (_deviceBrightnessRequest._data.mRead) { + bool ok = false; + int brightness = _processBrightness.readLine().toInt(&ok); + if (ok) { + _deviceBrightnessResponse._data.mBrightnessPercent = brightness * 10; + } + else { + checkError(DeviceError::eScripts_Error_Incorrect_Rsp,_deviceBrightnessResponse, _deviceBrightnessResponse.toString()); + return; + } + } + else { + _deviceBrightnessResponse._data.mBrightnessPercent = _deviceBrightnessRequest._data.mBrightness_val * 10; + _deviceBrightnessResponse._data.mMessage = _deviceBrightnessResponse.toString(); + } + LOG_EVENT(_deviceBrightnessResponse._data.mMessage); + emit didAttributeResponse(_deviceBrightnessResponse._data); } }