Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4 -r4509b968b7280dc7e5b21490f9b5ec99f60e878f --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 4509b968b7280dc7e5b21490f9b5ec99f60e878f) @@ -54,7 +54,7 @@ {Gui::GuiActionType::ID_KeepAlive , 255 }, // 0 => 255 to be able to run a multi-frame test. // Generic Confirm - {Gui::GuiActionType::ID_DuetConfirmHDi , 3 * 4 }, // 3 parameters each 4bytes + {Gui::GuiActionType::ID_DuetConfirmHDi , 7 * 4 }, // 7 parameters each 4bytes {Gui::GuiActionType::ID_DuetConfirmUIr , 2 * 4 }, // 2 parameters each 4bytes // POST Index: sources/main.h =================================================================== diff -u -r124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4 -r4509b968b7280dc7e5b21490f9b5ec99f60e878f --- sources/main.h (.../main.h) (revision 124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4) +++ sources/main.h (.../main.h) (revision 4509b968b7280dc7e5b21490f9b5ec99f60e878f) @@ -290,10 +290,14 @@ \details The property getter which reads the private variable \return current value */\ - vTYPE vVARIABLE () const { \ - if ( ! _##vVARIABLE##ByID ) return _##vVARIABLE; \ + vTYPE vVARIABLE () const { \ + if ( ! _##vVARIABLE##ByID ) return _##vVARIABLE; \ + if ( ! _##vLIST.contains ( _##vID ) ) return _##vVARIABLE; \ QString value = _##vLIST [ _##vID ].vVARIABLE; \ - if ( ! value.isEmpty() ) return value; \ + if ( ! value.isEmpty() ) { \ + vVARIABLE##Modifier( value ); \ + return value; \ + } \ return vDEFVALUE; \ } //--------------------------------------------------------------------------------// Index: sources/model/confirm/MDuetConfirmHDi.cpp =================================================================== diff -u -r124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4 -r4509b968b7280dc7e5b21490f9b5ec99f60e878f --- sources/model/confirm/MDuetConfirmHDi.cpp (.../MDuetConfirmHDi.cpp) (revision 124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4) +++ sources/model/confirm/MDuetConfirmHDi.cpp (.../MDuetConfirmHDi.cpp) (revision 4509b968b7280dc7e5b21490f9b5ec99f60e878f) @@ -18,21 +18,33 @@ QVariantList MDuetConfirmHDi::parameters() const { return { - _data.mId .value, - _data.mCommand .value, - _data.mReason .value, + _data.mId .value, + _data.mCommand .value, + _data.mReason .value, + _data.mExtraParam1 .value, + _data.mExtraParam2 .value, + _data.mExtraParam3 .value, + _data.mExtraParam4 .value, }; } bool MDuetConfirmHDi::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position - if (GetValue(vByteArray, index, _data.mId )) - if (GetValue(vByteArray, index, _data.mCommand )) - if (GetValue(vByteArray, index, _data.mReason )) + if (GetValue(vByteArray, index, _data.mId )) + if (GetValue(vByteArray, index, _data.mCommand )) + if (GetValue(vByteArray, index, _data.mReason )) + if (GetValue(vByteArray, index, _data.mExtraParam1 )) + if (GetValue(vByteArray, index, _data.mExtraParam2 )) + if (GetValue(vByteArray, index, _data.mExtraParam3 )) + if (GetValue(vByteArray, index, _data.mExtraParam4 )) return true ; else { if(vIndex) *vIndex = index; return false; } else { if(vIndex) *vIndex = index; return false; } else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } } /*! @@ -42,8 +54,12 @@ */ DuetConfirmHDiData MDuetConfirmHDi::data() const { Data data; - data.mId = _data.mId .value; - data.mCommand = _data.mCommand .value; - data.mReason = _data.mReason .value; + data.mId = _data.mId .value; + data.mCommand = _data.mCommand .value; + data.mReason = _data.mReason .value; + data.mExtraParam1 = _data.mExtraParam1 .value; + data.mExtraParam2 = _data.mExtraParam2 .value; + data.mExtraParam3 = _data.mExtraParam3 .value; + data.mExtraParam4 = _data.mExtraParam4 .value; return data; } Index: sources/model/confirm/MDuetConfirmHDi.h =================================================================== diff -u -r124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4 -r4509b968b7280dc7e5b21490f9b5ec99f60e878f --- sources/model/confirm/MDuetConfirmHDi.h (.../MDuetConfirmHDi.h) (revision 124c2e38e72a1a655d9d479c9c7a1cd8c5d5e6c4) +++ sources/model/confirm/MDuetConfirmHDi.h (.../MDuetConfirmHDi.h) (revision 4509b968b7280dc7e5b21490f9b5ec99f60e878f) @@ -36,9 +36,13 @@ * * | Payload || * | || - * | #1:(U32) | \ref Data::mId | - * | #2:(U32) | \ref Data::mCommand | - * | #3:(U32) | \ref Data::mReason | + * | #1:(U32) | \ref Data::mId | + * | #2:(U32) | \ref Data::mCommand | + * | #3:(U32) | \ref Data::mReason | + * | #4:(F32) | \ref Data::mExtraParam1 | + * | #5:(F32) | \ref Data::mExtraParam2 | + * | #6:(F32) | \ref Data::mExtraParam3 | + * | #7:(F32) | \ref Data::mExtraParam4 | * * \sa Data * @@ -58,10 +62,13 @@ QVariantList parameters() const override; struct { - Types::U32 mId ; /*!< Request ID */ - Types::U32 mCommand ; /*!< Request Command */ - Types::U32 mReason ; /*!< Request Rejection Reason */ - + Types::U32 mId ; /*!< Request ID */ + Types::U32 mCommand ; /*!< Request Command */ + Types::U32 mReason ; /*!< Request Rejection Reason */ + Types::F32 mExtraParam1; /*!< Extra Param 1 */ + Types::F32 mExtraParam2; /*!< Extra Param 2 */ + Types::F32 mExtraParam3; /*!< Extra Param 3 */ + Types::F32 mExtraParam4; /*!< Extra Param 4 */ } _data; public: @@ -70,9 +77,13 @@ QString infoText () const override { return QString("Confirm" ) ; } struct Data { - quint32 mId = 0; /*!< Request ID */ - quint32 mCommand = 0; /*!< Request Command */ - quint32 mReason = 0; /*!< Request Rejection Reason */ + quint32 mId = 0; /*!< Request ID */ + quint32 mCommand = 0; /*!< Request Command */ + quint32 mReason = 0; /*!< Request Rejection Reason */ + float mExtraParam1 = 0.0; /*!< Extra Param 1 */ + float mExtraParam2 = 0.0; /*!< Extra Param 2 */ + float mExtraParam3 = 0.0; /*!< Extra Param 3 */ + float mExtraParam4 = 0.0; /*!< Extra Param 4 */ }; MDuetConfirmHDi () { } Index: sources/model/hd/alarm/MAlarmMapping.cpp =================================================================== diff -u -re060f72ebcdbc7b5dbd6df26283f054677a5e029 -r4509b968b7280dc7e5b21490f9b5ec99f60e878f --- sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision e060f72ebcdbc7b5dbd6df26283f054677a5e029) +++ sources/model/hd/alarm/MAlarmMapping.cpp (.../MAlarmMapping.cpp) (revision 4509b968b7280dc7e5b21490f9b5ec99f60e878f) @@ -7,7 +7,7 @@ * * \file MAlarmMapping.cpp * \author (last) Behrouz NematiPour - * \date (last) 01-Jan-2024 + * \date (last) 26-Mar-2025 * \author (original) Behrouz NematiPour * \date (original) 03-May-2021 * @@ -306,7 +306,7 @@ /*0270*/case GuiAlarmID::ALARM_ID_HD_SAFETY_SHUTDOWN_POST_TEST_FAILED : { result = QObject::tr("HD POST Safety Shutdown failure." ); break; } /* 270*/ /*0271*/case GuiAlarmID::ALARM_ID_DG_SAFETY_SHUTDOWN_POST_TEST_FAILED : { result = QObject::tr("DG POST Safety Shutdown failure." ); break; } /* 271*/ /*0272*/case GuiAlarmID::ALARM_ID_HD_FAN_RPM_OUT_OF_RANGE : { result = QObject::tr("HD Fan RPM out of range." ); break; } /* 272*/ -/*0273*/case GuiAlarmID::ALARM_ID_AVAILABLE_10 : { result = QObject::tr("Available for use." ); break; } /* 273*/ +/*0273*/case GuiAlarmID::ALARM_ID_AVAILABLE_30 : { result = QObject::tr("Alarm available." ); break; } /* 273*/ /*0274*/case GuiAlarmID::ALARM_ID_DG_INACTIVE_RESERVOIR_WEIGHT_OUT_OF_RANGE : { result = QObject::tr("DG inactive reservoir weight out of range." ); break; } /* 274*/ /*0275*/case GuiAlarmID::ALARM_ID_HD_ARTERIAL_PRESSURE_OUT_OF_RANGE : { result = QObject::tr("HD arterial pressure sensor is reading out of range." ); break; } /* 275*/ /*0276*/case GuiAlarmID::ALARM_ID_HD_VENOUS_PRESSURE_OUT_OF_RANGE : { result = QObject::tr("HD venous pressure sensor is reading out of range." ); break; } /* 276*/ Index: sources/view/confirm/VConfirm.cpp =================================================================== diff -u -rbcb92b3c14c59f0761c366501a0e3262e9a061f9 -r4509b968b7280dc7e5b21490f9b5ec99f60e878f --- sources/view/confirm/VConfirm.cpp (.../VConfirm.cpp) (revision bcb92b3c14c59f0761c366501a0e3262e9a061f9) +++ sources/view/confirm/VConfirm.cpp (.../VConfirm.cpp) (revision 4509b968b7280dc7e5b21490f9b5ec99f60e878f) @@ -89,6 +89,12 @@ cancelByID ( /*! isReject()*/ ); // cancel ( tr("CLOSE" ) ); + // These need to be set to be used in the messageModifier + extraParam1 ( vData.mExtraParam1 ); + extraParam2 ( vData.mExtraParam2 ); + extraParam3 ( vData.mExtraParam3 ); + extraParam4 ( vData.mExtraParam4 ); + id ( vData.mId ); } @@ -155,11 +161,16 @@ */ void View::VConfirm::onActionReceive(const DuetConfirmHDiData &vData) { - isPowerOff(false ); + isPowerOff( false ); setConfirmCommand ( vData ); setConfirmId ( vData ); setDryDemoStatus ( vData ); + extraParam1 ( vData.mExtraParam1 ); + extraParam2 ( vData.mExtraParam2 ); + extraParam3 ( vData.mExtraParam3 ); + extraParam4 ( vData.mExtraParam4 ); + // *** has to be the last to let the information to be set and then emit the signal *** // *** otherwise will use the Previous values before being set. *** adjustment ( true ); @@ -169,7 +180,7 @@ void View::VConfirm::onActionReceive(const PowerOffData &vData) { - isPowerOff(true ); + isPowerOff( true ); setPowerOffCommand ( ); setPowerOffId ( ); Index: sources/view/confirm/VConfirm.h =================================================================== diff -u -rbcb92b3c14c59f0761c366501a0e3262e9a061f9 -r4509b968b7280dc7e5b21490f9b5ec99f60e878f --- sources/view/confirm/VConfirm.h (.../VConfirm.h) (revision bcb92b3c14c59f0761c366501a0e3262e9a061f9) +++ sources/view/confirm/VConfirm.h (.../VConfirm.h) (revision 4509b968b7280dc7e5b21490f9b5ec99f60e878f) @@ -72,8 +72,44 @@ PROPERTY(bool , isUltrafilt , 0) PROPERTY(bool , isConnection , 0) + PROPERTY(float , extraParam1 , 0) + PROPERTY(float , extraParam2 , 0) + PROPERTY(float , extraParam3 , 0) + PROPERTY(float , extraParam4 , 0) + + TRIGGER (bool , visible , 0) + void titleModifier ( QString & ) const {} + void messageModifier ( QString &vValue ) const { + // this code can be improved more. + // ".\s*[{1-4]\s*\:\s*[1-3}]\s*." + QString regstr = ".\\s*[{1-4]\\s*\\:\\s*[1-3}]\\s*."; + QRegExp reg(regstr); + int pos = 0; + while ( (pos = reg.indexIn(vValue)) != -1 ) { + int len = reg.matchedLength(); + QString placeholder = vValue.mid(pos, len) ; + QString tmp = placeholder; + QStringList params = tmp.remove("{").remove("}").split(":"); + // no checking required since the regex has chaecked and found the placeholder. + float param = 0.0; + int index = params[0].toInt(); + switch (index) { + case 1: param = _extraParam1; break; + case 2: param = _extraParam2; break; + case 3: param = _extraParam3; break; + case 4: param = _extraParam4; break; + } + int precision = params[1].toInt(); + QString replacement = QString("%1").arg(param,0,'f', precision); + //DEBUG qDebug() << "@" << vValue << tmp << replacement; + vValue.replace(placeholder, replacement); + } + } + void confirmModifier ( QString & ) const {} + void cancelModifier ( QString & ) const {} + IDBASED (QString , title ,tr("Confirm" ), confirms, id) IDBASED (QString , message ,tr("Are you sure?" ), confirms, id) IDBASED (QString , confirm ,tr("CONFIRM" ), confirms, id)