Index: sources/device/DeviceController.cpp =================================================================== diff -u -r94c7a571dc12f24aa072ac2b14199432ce9f3821 -r6e18f1d24b8cc3d84d26f46f36f73deb34e54371 --- sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 94c7a571dc12f24aa072ac2b14199432ce9f3821) +++ sources/device/DeviceController.cpp (.../DeviceController.cpp) (revision 6e18f1d24b8cc3d84d26f46f36f73deb34e54371) @@ -1390,3 +1390,70 @@ model._data.clear(); } } + +////////////////////////////////////////////////////////////////////////////////////////////////// DeviceDateTime +void DeviceController::onAttributeRequest(const DeviceDateTimeRequestData &vData) +{ + dateTimeRequest(vData); +} + +void DeviceController::dateTimeRequest(const DeviceDateTimeRequestData &vData) +{ + DeviceError::Scripts_Error_Enum error = DeviceError::eDevice_OK; + + // ----- initializing the member variable models + _deviceDateTimeRequest._data = vData; + + // ----- check that script exists. + QString script; + if ( checkError( DeviceError::checkScript(script, Date_Time_Set_Sh), _deviceDateTimeResponse, script) ) + return; + + // ----- check if the process is not running + if ( _processDateTime.state() != QProcess::NotRunning ) { + checkError(DeviceError::eDevice_Scripts_Error_IsRunning, _deviceDateTimeResponse); + return; + } + + QStringList params; + params << vData.mDateTime << (vData.mNTP ? "true" : "false"); + + if ( error ) { + checkError(error, _deviceDateTimeResponse); + return; + } + + // ----- run the process + int timeout_ms = 10000; + TimedProcess *timedProcess = new TimedProcess(&_processDateTime, script, timeout_ms, params); + timedProcess->start(); + + MDeviceDateTimeResponse model; + model._data.mCompleted = false; + model._data.mAccepted = false; + model._data.mMessage = tr("Date Time started."); + emit didAttributeResponse(model.data()); +} + +/*! + * \brief DeviceController::processDateTimeResponse + * \param vExitCode + * \param vStatus + */ +void DeviceController::processDateTimeResponse(int vExitCode, QProcess::ExitStatus vStatus, QProcess::ProcessChannel vChannel) +{ + static MDeviceDateTimeResponse model; + if ( vExitCode < 0 ) { + emit didAttributeResponse(model.data()); + switch (vChannel) { + case QProcess::StandardOutput : processDateTimeReadyOut(model); break; + case QProcess::StandardError : processDateTimeReadyErr(model); break; + } + } + else { + processDateTimeComplete(model, vExitCode, vStatus); + emit didAttributeResponse(model.data()); + model._data.clear(); + } +} +