Index: sources/ApplicationController.cpp =================================================================== diff -u -r611bbf4dcba67768db87cf30f21fd2db788f677d -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/ApplicationController.cpp (.../ApplicationController.cpp) (revision 611bbf4dcba67768db87cf30f21fd2db788f677d) +++ sources/ApplicationController.cpp (.../ApplicationController.cpp) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -531,7 +531,8 @@ QFuture mFuture = QtConcurrent::run([=](){ // made the call a lambda to make sure there is no function to accidentally being called, out of thread [developer safety]. //TODO The Settings shall be the Singleton SettingsController and modify the MSettings like the others. Storage::Settings settings; - settings.read(); + int settingReadErr = settings.read(); + _settingsReadComplete = (settingReadErr == Storage::Settings::Settings_Error::eError_None); }); _settingsWatcher.setFuture(mFuture); } @@ -547,13 +548,14 @@ /// POST /// // call initialization functions when setting's ready. + bool isPOSTComplete = _post.isDone() && _settingsReadComplete; _Settings.datetimeFormat(); emit didSettingsDone( ); // MessageDispatcher -> MessageInterpreter : updateUnhandledMessages - emit didPOSTPass (_post.isDone( )); // GuiController -> GuiView : didPOSTPass(bool) + emit didPOSTPass (isPOSTComplete); // GuiController -> GuiView : didPOSTPass(bool) // HD POST request postDoneRequest ( ); - versionsRequest (_post.isDone( )); + versionsRequest (isPOSTComplete); // UI is done, let's keep in touch emit didKeepAliveBegin(); } @@ -686,3 +688,14 @@ //DEBUG: qDebug()< _settingsWatcher; @@ -122,6 +123,8 @@ void onLogIOFail(); + void onTreatmentRangesIncorrect(); + signals: void didPOSTEthernet (bool vPass); void didPOSTWireless (bool vPass); Index: sources/ApplicationPost.cpp =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/ApplicationPost.cpp (.../ApplicationPost.cpp) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/ApplicationPost.cpp (.../ApplicationPost.cpp) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -50,6 +50,7 @@ _isEthernet = checkEthernet (); // this is not a Fault and not required the application to stop. No Alarm will be triggered. _isSound = checkSound (); // this is not a Fault and not required the application to stop. No Alarm will be triggered. _isYearCheck = checkYear (); + _isSettingsCRC = checkSettingsCRC (); // WARNING: // all of the checks have to be done, // although some are not failing the final result, @@ -66,7 +67,8 @@ isCloudSync () && // isEthernet () && // it is being executed to get the information but is not part of the POST failure. // isSound () && - isYearCheck () + isYearCheck () && + isSettingsCRCCheck() ; } else { @@ -268,3 +270,16 @@ emit didYearCheck(ok); return ok; } + +/*! + * \brief ApplicationPost::checkSettingsCRC + * \details Checks the Settings CRC + * \return true if check passed, otherwise false + */ +bool ApplicationPost::checkSettingsCRC() +{ + bool ok = _content.contains(_postmsg_settingscrc + _postmsg_postfix_passed); + if (! ok) emit didFail(Gui::GuiAlarmID::ALARM_ID_HD_UI_POST_FAILURE_SETTINGS_BAD); + emit didSettingsCRCCheck(ok); + return ok; +} Index: sources/ApplicationPost.h =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/ApplicationPost.h (.../ApplicationPost.h) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/ApplicationPost.h (.../ApplicationPost.h) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -69,6 +69,7 @@ const QString _postmsg_bluetooth = "Bluetooth" ; // POSTMSG_BLUETOOTH="Bluetooth" const QString _postmsg_shasum = "App shasum" ; // POSTMSG_SHASUM="App shasum" const QString _postmsg_cloudsync = "CloudSync" ; // POSTMSG_CLOUDSYNC="CloudSync" + const QString _postmsg_settingscrc = "SettingsCRC" ; // POSTMSG_SETTINGSCRC="SettingsCRC" const quint8 _macAddrssLen = 17 ; // ff:ff:ff:ff:ff:ff const quint8 _macAppearLen = 200 ; // the mac address shall be found within the next 200 characters. @@ -97,6 +98,8 @@ bool _isEthernet = false ; // HIGH: : ALARM_ID_UI_POST_FAILURE_ETHERNET : this is not a Fault and not required the application to stop. bool _isSound = false ; // HIGH: : ALARM_ID_UI_POST_FAILURE_SOUND : this is not a Fault and not required the application to stop. bool _isYearCheck = false ; // HIGH: : ALARM_ID_HD_UI_POST_FAILURE_INVALID_YEAR + bool _isSettingsCRC = false ; // HIGH: fault: ALARM_ID_HD_UI_POST_FAILURE_SETTINGS_BAD + bool _isDone = false ; bool checkShaSum (); @@ -111,6 +114,7 @@ bool checkEthernet (); bool checkSound (); bool checkYear (); + bool checkSettingsCRC (); public: bool isShaSum () const { return _isShaSum ; } @@ -126,6 +130,7 @@ bool isSound () const { return _isSound ; } bool isYearCheck () const { return _isYearCheck ; } bool isDone () const { return _isDone ; } + bool isSettingsCRCCheck () const { return _isSettingsCRC; } QString macEthernet () const { return _macEthernet ; } QString macWireless () const { return _macWireless ; } @@ -148,6 +153,7 @@ void didEthernet (bool vPass); void didSound (bool vPass); void didYearCheck (bool vPass); + void didSettingsCRCCheck (bool vPass); void didFail(Gui::GuiAlarmID vAlarmID); void didDone(bool vPass); Index: sources/main.h =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/main.h (.../main.h) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/main.h (.../main.h) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -125,6 +125,14 @@ if ( !ok ) LOG_DEBUG("incorrect configuration value for " #vVARIABLE); \ } //--------------------------------------------------------------------------------// +#define FROMVARIANT_WITHRETURN(vVARIABLE, vGROUP, vKEY, vCONVERSION, vOVERALL_OK) \ +{ \ + bool ok = false; \ + vVARIABLE( _Settings.value(mCategory, vGROUP, vKEY).to##vCONVERSION(&ok) ); \ + if ( !ok ) LOG_DEBUG("incorrect configuration value for " #vVARIABLE); \ + vOVERALL_OK &= ok; \ +} +//--------------------------------------------------------------------------------// #define PROPERTY_SLOT( vTYPE , vVARIABLE ) \ protected : \ /*! \brief Property setter Index: sources/storage/Settings.cpp =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/storage/Settings.cpp (.../Settings.cpp) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/storage/Settings.cpp (.../Settings.cpp) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -94,6 +94,10 @@ detail.location = settingFile.absolutePath() + "/"; detail.category = QString(detail.location + settingFile.baseName()).remove(Storage::Settings_Path()); details += detail; + } else { + err = Settings::Settings_Error::eError_ConfigFileReadFail; + LOG_DEBUG(errorMessage(err).arg(Storage::Settings_Path())); + return err; } } Index: sources/storage/Settings.h =================================================================== diff -u -r611bbf4dcba67768db87cf30f21fd2db788f677d -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/storage/Settings.h (.../Settings.h) (revision 611bbf4dcba67768db87cf30f21fd2db788f677d) +++ sources/storage/Settings.h (.../Settings.h) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -65,6 +65,8 @@ eError_No_SettingsFolder , eError_No_SettingsFile , eError_SettingNotExists , + eError_ConfigFileReadFail , + eError_ConfigFileEmpty }; private: const QHash settingsError_Message { // no translation for the error. My experience shows the error messages if translated is not useful for serviceability and debugging. Index: sources/view/hd/data/VTreatmentRanges.cpp =================================================================== diff -u -rfe8135c784a6c5ad2f35957d39af96f31d7c5618 -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/view/hd/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision fe8135c784a6c5ad2f35957d39af96f31d7c5618) +++ sources/view/hd/data/VTreatmentRanges.cpp (.../VTreatmentRanges.cpp) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -25,6 +25,9 @@ void VTreatmentRanges::initConnections() { ACTION_VIEW_CONNECTION(TreatmentRangesData); ACTION_VIEW_CONNECTION(SettingsData); + + connect(this , SIGNAL(didTreatmentRangesIncorrect()), + &_ApplicationController , SLOT(onTreatmentRangesIncorrect())); } void View::VTreatmentRanges::onActionReceive(const TreatmentRangesData &vData) @@ -49,82 +52,86 @@ void View::VTreatmentRanges::onActionReceive(const SettingsData &) { QString mCategory = Storage::Settings_Category_ConfigurationsDataList; + bool isConfigsOk = true; // assume configurations are valid + FROMVARIANT_WITHRETURN ( bloodFlowRateMin , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodFlowRateMax , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodFlowRateRes , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodFlowRateDef , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Def" , UInt , isConfigsOk ); - FROMVARIANT ( bloodFlowRateMin , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Min" , UInt ); - FROMVARIANT ( bloodFlowRateMax , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Max" , UInt ); - FROMVARIANT ( bloodFlowRateRes , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Res" , UInt ); - FROMVARIANT ( bloodFlowRateDef , "Blood Flow Rate Ranges" , "Blood_Flow_Rate_Def" , UInt ); + FROMVARIANT_WITHRETURN ( dialysateFlowRateMin , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateFlowRateMax , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateFlowRateRes , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateFlowRateDef , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Def" , UInt , isConfigsOk ); - FROMVARIANT ( dialysateFlowRateMin , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Min" , UInt ); - FROMVARIANT ( dialysateFlowRateMax , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Max" , UInt ); - FROMVARIANT ( dialysateFlowRateRes , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Res" , UInt ); - FROMVARIANT ( dialysateFlowRateDef , "Dialysate Flow Rate Ranges" , "Dialysate_Flow_Rate_Def" , UInt ); + FROMVARIANT_WITHRETURN ( treatmentDurationMin , "Treatment Duration Ranges" , "Treatment_Duration_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( treatmentDurationMax , "Treatment Duration Ranges" , "Treatment_Duration_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( treatmentDurationRes , "Treatment Duration Ranges" , "Treatment_Duration_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( treatmentDurationDef , "Treatment Duration Ranges" , "Treatment_Duration_Def" , UInt , isConfigsOk ); - FROMVARIANT ( treatmentDurationMin , "Treatment Duration Ranges" , "Treatment_Duration_Min" , UInt ); - FROMVARIANT ( treatmentDurationMax , "Treatment Duration Ranges" , "Treatment_Duration_Max" , UInt ); - FROMVARIANT ( treatmentDurationRes , "Treatment Duration Ranges" , "Treatment_Duration_Res" , UInt ); - FROMVARIANT ( treatmentDurationDef , "Treatment Duration Ranges" , "Treatment_Duration_Def" , UInt ); + FROMVARIANT_WITHRETURN ( heparinDispensingRateMin , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinDispensingRateMax , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinDispensingRateRes , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Res" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinDispensingRateDef , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Def" , Float , isConfigsOk ); - FROMVARIANT ( heparinDispensingRateMin , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Min" , Float ); - FROMVARIANT ( heparinDispensingRateMax , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Max" , Float ); - FROMVARIANT ( heparinDispensingRateRes , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Res" , Float ); - FROMVARIANT ( heparinDispensingRateDef , "Heparin Dispensing Rate Ranges" , "Heparin_Dispensing_Rate_Def" , Float ); + FROMVARIANT_WITHRETURN ( heparinBolusVolumeMin , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinBolusVolumeMax , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinBolusVolumeRes , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Res" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinBolusVolumeDef , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Def" , Float , isConfigsOk ); - FROMVARIANT ( heparinBolusVolumeMin , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Min" , Float ); - FROMVARIANT ( heparinBolusVolumeMax , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Max" , Float ); - FROMVARIANT ( heparinBolusVolumeRes , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Res" , Float ); - FROMVARIANT ( heparinBolusVolumeDef , "Heparin Bolus Volume Ranges" , "Heparin_Bolus_Volume_Def" , Float ); + FROMVARIANT_WITHRETURN ( heparinStopTimeMin , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinStopTimeMax , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinStopTimeRes , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( heparinStopTimeDef , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Def" , UInt , isConfigsOk ); - FROMVARIANT ( heparinStopTimeMin , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Min" , UInt ); - FROMVARIANT ( heparinStopTimeMax , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Max" , UInt ); - FROMVARIANT ( heparinStopTimeRes , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Res" , UInt ); - FROMVARIANT ( heparinStopTimeDef , "Heparin Stop Time Ranges" , "Heparin_Stop_Time_Def" , UInt ); + FROMVARIANT_WITHRETURN ( salineBolusVolumeMin , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( salineBolusVolumeMax , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( salineBolusVolumeRes , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( salineBolusVolumeDef , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Def" , UInt , isConfigsOk ); - FROMVARIANT ( salineBolusVolumeMin , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Min" , UInt ); - FROMVARIANT ( salineBolusVolumeMax , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Max" , UInt ); - FROMVARIANT ( salineBolusVolumeRes , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Res" , UInt ); - FROMVARIANT ( salineBolusVolumeDef , "Saline Bolus Volume Ranges" , "Saline_Bolus_Volume_Def" , UInt ); - heparinTypeOptions ( _Settings.keys(mCategory , "Heparin Type Options" )); acidConcentrateOptions ( _Settings.keys(mCategory , "Acid Concentrate Options" )); bicarbonateConcentrateOptions ( _Settings.keys(mCategory , "Bicarbonate Concentrate Options" )); dialyzerTypeOptions ( _Settings.keys(mCategory , "Dialyzer Type Options" )); - FROMVARIANT ( dialysateTempMin , "Dialysate Temperature" , "Dialysate_Temperature_Min" , Float ); - FROMVARIANT ( dialysateTempMax , "Dialysate Temperature" , "Dialysate_Temperature_Max" , Float ); - FROMVARIANT ( dialysateTempRes , "Dialysate Temperature" , "Dialysate_Temperature_Res" , Float ); - FROMVARIANT ( dialysateTempDef , "Dialysate Temperature" , "Dialysate_Temperature_Def" , Float ); + FROMVARIANT_WITHRETURN ( dialysateTempMin , "Dialysate Temperature" , "Dialysate_Temperature_Min" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateTempMax , "Dialysate Temperature" , "Dialysate_Temperature_Max" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateTempRes , "Dialysate Temperature" , "Dialysate_Temperature_Res" , Float , isConfigsOk ); + FROMVARIANT_WITHRETURN ( dialysateTempDef , "Dialysate Temperature" , "Dialysate_Temperature_Def" , Float , isConfigsOk ); - FROMVARIANT ( arterialPressureLimitWindowMin , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Min" , Int ); - FROMVARIANT ( arterialPressureLimitWindowMax , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Max" , Int ); - FROMVARIANT ( arterialPressureLimitWindowRes , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Res" , Int ); - FROMVARIANT ( arterialPressureLimitWindowDef , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Def" , Int ); + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowMin , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowMax , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowRes , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Res" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureLimitWindowDef , "Arterial Blood Pressure Ranges" , "Arterial_Adjust_Window_Def" , Int , isConfigsOk ); - FROMVARIANT ( arterialPressureMonitorMin , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Min" , Int ); - FROMVARIANT ( arterialPressureMonitorMax , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Max" , Int ); - FROMVARIANT ( arterialPressureMonitorRes , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Res" , Int ); + FROMVARIANT_WITHRETURN ( arterialPressureMonitorMin , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureMonitorMax , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( arterialPressureMonitorRes , "Arterial Blood Pressure Ranges" , "Arterial_Monitor_Res" , Int , isConfigsOk ); - FROMVARIANT ( venousPressureLimitWindowMin , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Min" , Int ); - FROMVARIANT ( venousPressureLimitWindowMax , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Max" , Int ); - FROMVARIANT ( venousPressureLimitWindowRes , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Res" , Int ); - FROMVARIANT ( venousPressureLimitWindowDef , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Def" , Int ); + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowMin , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowMax , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowRes , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Res" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitWindowDef , "Venous Blood Pressure Ranges" , "Venous_Adjust_Window_Def" , Int , isConfigsOk ); - FROMVARIANT ( venousPressureLimitAsymtrcMin , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Min" , Int ); - FROMVARIANT ( venousPressureLimitAsymtrcMax , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Max" , Int ); - FROMVARIANT ( venousPressureLimitAsymtrcRes , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Res" , Int ); - FROMVARIANT ( venousPressureLimitAsymtrcDef , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Def" , Int ); + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcMin , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcMax , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcRes , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Res" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureLimitAsymtrcDef , "Venous Blood Pressure Ranges" , "Venous_Adjust_Asymmetric_Def" , Int , isConfigsOk ); - FROMVARIANT ( venousPressureMonitorMin , "Venous Blood Pressure Ranges" , "Venous_Monitor_Min" , Int ); - FROMVARIANT ( venousPressureMonitorMax , "Venous Blood Pressure Ranges" , "Venous_Monitor_Max" , Int ); - FROMVARIANT ( venousPressureMonitorRes , "Venous Blood Pressure Ranges" , "Venous_Monitor_Res" , Int ); + FROMVARIANT_WITHRETURN ( venousPressureMonitorMin , "Venous Blood Pressure Ranges" , "Venous_Monitor_Min" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureMonitorMax , "Venous Blood Pressure Ranges" , "Venous_Monitor_Max" , Int , isConfigsOk ); + FROMVARIANT_WITHRETURN ( venousPressureMonitorRes , "Venous Blood Pressure Ranges" , "Venous_Monitor_Res" , Int , isConfigsOk ); - FROMVARIANT ( bloodPressureMeasureIntervalMin , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Min" , UInt ); - FROMVARIANT ( bloodPressureMeasureIntervalMax , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Max" , UInt ); - FROMVARIANT ( bloodPressureMeasureIntervalRes , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Res" , UInt ); - FROMVARIANT ( bloodPressureMeasureIntervalDef , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Def" , UInt ); + FROMVARIANT_WITHRETURN ( bloodPressureMeasureIntervalMin , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodPressureMeasureIntervalMax , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Max" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodPressureMeasureIntervalRes , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( bloodPressureMeasureIntervalDef , "Blood Pressure Measure Interval Ranges" , "Blood_Pressure_Measure_Interval_Def" , UInt , isConfigsOk ); - FROMVARIANT ( rinsebackFlowRateMin , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Min" , UInt ); - FROMVARIANT ( rinsebackFlowRateMax , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Max" , UInt ); -// FROMVARIANT ( rinsebackFlowRateRes , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Res" , UInt ); - FROMVARIANT ( rinsebackFlowRateDef , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Def" , UInt ); + FROMVARIANT_WITHRETURN ( rinsebackFlowRateMin , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Min" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackFlowRateMax , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Max" , UInt , isConfigsOk ); +// FROMVARIANT_WITHRETURN ( rinsebackFlowRateRes , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Res" , UInt , isConfigsOk ); + FROMVARIANT_WITHRETURN ( rinsebackFlowRateDef , "Rinseback Flow Rate Ranges" , "Rinseback_Flow_Rate_Def" , UInt , isConfigsOk ); + + if(!isConfigsOk) { + emit didTreatmentRangesIncorrect(); + } } Index: sources/view/hd/data/VTreatmentRanges.h =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -rf1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04 --- sources/view/hd/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/view/hd/data/VTreatmentRanges.h (.../VTreatmentRanges.h) (revision f1c4d7f7c9cd4422f6190a5b31c8f1e74e520c04) @@ -73,5 +73,7 @@ VIEW_DEC_SLOT(TreatmentRangesData ) VIEW_DEC_SLOT(SettingsData ) +signals: + void didTreatmentRangesIncorrect(); }; }