Index: denali.pro =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- denali.pro (.../denali.pro) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ denali.pro (.../denali.pro) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -67,9 +67,10 @@ sources/model/MDGDebugText.h \ sources/model/MHDDebugText.h \ \ # ---------- Models - Alarm - sources/model/hd/alarm/MAlarmCleared.h \ - sources/model/hd/alarm/MAlarmTriggered.h \ sources/model/hd/alarm/MAlarmStatusData.h \ + sources/model/hd/alarm/MAlarmTriggered.h \ + sources/model/hd/alarm/MAlarmCleared.h \ + sources/model/hd/alarm/MAlarmClearedCondition.h \ \ # ---------- Models - HD - Adjustment - In-Treatment sources/model/hd/adjustment/MTreatmentAdjustRequests.h \ sources/model/hd/adjustment/MTreatmentAdjustDurationResponse.h \ @@ -189,9 +190,10 @@ sources/model/MTreatmentParametersResp.cpp \ sources/model/MDGDebugText.cpp \ \ # ---------- Models - Alarm - sources/model/hd/alarm/MAlarmCleared.cpp \ - sources/model/hd/alarm/MAlarmTriggered.cpp \ sources/model/hd/alarm/MAlarmStatusData.cpp \ + sources/model/hd/alarm/MAlarmTriggered.cpp \ + sources/model/hd/alarm/MAlarmCleared.cpp \ + sources/model/hd/alarm/MAlarmClearedCondition.cpp \ \ # ---------- Models - HD - Adjustment - In-Treatment sources/model/hd/adjustment/MTreatmentAdjustDurationResponse.cpp \ sources/model/hd/adjustment/MTreatmentAdjustBloodDialysateResponse.cpp \ Index: denali.pro.user =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- denali.pro.user (.../denali.pro.user) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ denali.pro.user (.../denali.pro.user) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -100,11 +100,11 @@ qmake QtProjectManager.QMakeBuildStep - false + true false false - false + true true @@ -1182,8 +1182,8 @@ true true false - false - true + true + false /home/denali/Projects/tmp/build/denali-Desktop_Qt_5_12_5_GCC_64bit-Debug Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -321,21 +321,33 @@ void MessageDispatcher::onAdjustment(const AlarmSilenceRequestData &vData) { QVariantList mData; - mData += vData.state; + mData += vData.silence; onActionTransmit(GuiActionType::ID_AlarmSilenceReq, mData); } +/** + * \details This method transmits the User Action Denali message. + * \param vData - Data model contains User Action on the alarm dialog. + * \return void + */ +void MessageDispatcher::onAdjustment(const AlarmUserActionRequestData &vData) +{ + QVariantList mData; + mData += vData.action; + onActionTransmit(GuiActionType::ID_AlarmUserActionReq, mData); +} + /*! * \brief MessageDispatcher::onAdjustment * \details This method transmits the Alarm Acknowledge Request message. * \param vData - Data model contains the user acknowledge request information. * \return void */ -void MessageDispatcher::onAdjustment(const AlarmAcknowledgeRequestData &vData) +void MessageDispatcher::onAdjustment(const AlarmClearedConditionRequestData &vData) { QVariantList mData; mData += vData.alarmID; - onActionTransmit(GuiActionType::ID_AlarmUserAckReq, mData); + onActionTransmit(GuiActionType::ID_AlarmClearedConditionReq, mData); } /*! Index: sources/canbus/MessageDispatcher.h =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -115,7 +115,9 @@ GuiActionType::ID_AdjustSalineReq , GuiActionType::ID_AdjustHeparinReq , GuiActionType::ID_AdjustPressuresLimitsReq , + GuiActionType::ID_AlarmUserActionReq , GuiActionType::ID_AlarmSilenceReq , + GuiActionType::ID_AlarmClearedConditionReq , }; public slots: Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -75,8 +75,10 @@ {Gui::GuiActionType::ID_AlarmStatus , 4 * 4 + 2 }, // 4 parameters each 4bytes + 1 parameter 2bytes {Gui::GuiActionType::ID_AlarmTriggered , 1 * 4 }, // 1 parameter each 4bytes {Gui::GuiActionType::ID_AlarmCleared , 1 * 4 }, // 1 parameter each 4bytes - {Gui::GuiActionType::ID_AlarmSilenceReq , 1 * 4 }, // 1 parameter each 4bytes - {Gui::GuiActionType::ID_AlarmUserAckReq , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AlarmClearedConditionReq , 1 * 4 }, // 1 parameter each 4bytes // the same message 63:0x3F00 + {Gui::GuiActionType::ID_AlarmClearedConditionRsp , 1 * 4 }, // 1 parameter each 4bytes // the same message 63:0x3F00 + {Gui::GuiActionType::ID_AlarmSilenceReq , 1 * 1 }, // 1 parameter each 1bytes + {Gui::GuiActionType::ID_AlarmUserActionReq , 1 * 4 }, // 1 parameter each 4bytes // ---- {Gui::GuiActionType::ID_StartTreatmentReq , 1 * 4 }, // 1 parameters each 4bytes Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -217,21 +217,23 @@ break; case Gui::GuiActionType::ID_PowerOff : INTERPRET_RECEIVED_MESSAGE(AdjustPowerOffRequestData ); break; - case Gui::GuiActionType::ID_AdjustBloodDialysateReq : INTERPRET_RECEIVED_MESSAGE(AdjustBloodDialysateRequestData ); break; + // in-treatment case Gui::GuiActionType::ID_AdjustDurationReq : INTERPRET_RECEIVED_MESSAGE(AdjustDurationRequestData ); break; + case Gui::GuiActionType::ID_AdjustBloodDialysateReq : INTERPRET_RECEIVED_MESSAGE(AdjustBloodDialysateRequestData ); break; case Gui::GuiActionType::ID_AdjustUltrafiltrationInitReq : INTERPRET_RECEIVED_MESSAGE(AdjustUltrafiltrationInitRequestData ); break; case Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq : INTERPRET_RECEIVED_MESSAGE(AdjustUltrafiltrationStateRequestData ); break; case Gui::GuiActionType::ID_AdjustUltrafiltrationEditReq : INTERPRET_RECEIVED_MESSAGE(AdjustUltrafiltrationEditRequestData ); break; case Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmReq : INTERPRET_RECEIVED_MESSAGE(AdjustUltrafiltrationConfirmRequestData); break; - case Gui::GuiActionType::ID_AdjustSalineReq : INTERPRET_RECEIVED_MESSAGE(AdjustSalineRequestData ); break; - case Gui::GuiActionType::ID_AdjustHeparinReq : INTERPRET_RECEIVED_MESSAGE(AdjustHeparinRequestData ); break; - case Gui::GuiActionType::ID_AdjustPressuresLimitsReq : INTERPRET_RECEIVED_MESSAGE(AdjustPressuresLimitsRequestData ); break; - case Gui::GuiActionType::ID_AlarmSilenceReq : INTERPRET_RECEIVED_MESSAGE(AlarmSilenceRequestData ); break; - case Gui::GuiActionType::ID_AlarmUserAckReq : INTERPRET_RECEIVED_MESSAGE(AlarmAcknowledgeRequestData ); break; + // pre-Treatment case Gui::GuiActionType::ID_StartTreatmentReq : INTERPRET_RECEIVED_MESSAGE(StartTreatmentRequestData ); break; case Gui::GuiActionType::ID_ConfirmTreatmentReq : INTERPRET_RECEIVED_MESSAGE(ConfirmTreatmentRequestData ); break; case Gui::GuiActionType::ID_EndTreatmentReq : INTERPRET_RECEIVED_MESSAGE(EndTreatmentRequestData ); break; case Gui::GuiActionType::ID_CreateTreatmentReq : INTERPRET_RECEIVED_MESSAGE(AdjustTreatmentParametersRequestData ); break; + // alarms + case Gui::GuiActionType::ID_AlarmSilenceReq : INTERPRET_RECEIVED_MESSAGE(AlarmSilenceRequestData ); break; + case Gui::GuiActionType::ID_AlarmUserActionReq : INTERPRET_RECEIVED_MESSAGE(AlarmUserActionRequestData ); break; + case Gui::GuiActionType::ID_AlarmClearedConditionReq : INTERPRET_RECEIVED_MESSAGE(AlarmClearedConditionRequestData ); break; + default: QString mActionIdHexString = Format::toHexString(vActionId); LOG_DEBUG(mSenderID + tr("Unknown transmit Message with ID '%1'").arg(mActionIdHexString)); @@ -314,20 +316,15 @@ case Gui::GuiActionType::ID_Acknow : ok = true; break; // TODO : implement notify<>() case Gui::GuiActionType::ID_PowerOff : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PowerOff ); break; case Gui::GuiActionType::ID_ShuttingDown : ok = true; LOG_EVENT("HD,ShuttingDown"); break; // TODO : implement notify<>() - - case Gui::GuiActionType::ID_AlarmTriggered : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmTriggered ); break; - case Gui::GuiActionType::ID_AlarmCleared : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmCleared ); break; - case Gui::GuiActionType::ID_AlarmStatus : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmStatus ); break; - case Gui::GuiActionType::ID_CreateTreatmentRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_CreateTreatmentRsp ); break; // Adjustment Response Messages case Gui::GuiActionType::ID_AdjustDurationRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDurationRsp ); break; case Gui::GuiActionType::ID_AdjustBloodDialysateRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustBloodDialysateRsp ); break; + case Gui::GuiActionType::ID_AdjustPressuresLimitsRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustPressuresLimitsRsp ); break; case Gui::GuiActionType::ID_AdjustSalineRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSalineRsp ); break; case Gui::GuiActionType::ID_AdjustUltrafiltrationInitRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustUltrafiltrationInitRsp ); break; case Gui::GuiActionType::ID_AdjustUltrafiltrationStateRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustUltrafiltrationStateRsp ); break; - case Gui::GuiActionType::ID_AdjustPressuresLimitsRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustPressuresLimitsRsp ); break; case Gui::GuiActionType::ID_AdjustHeparinRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustHeparinRsp ); break; // these need to be standard and use notify as well @@ -337,6 +334,13 @@ case Gui::GuiActionType::ID_StartTreatmentRsp : ok = notify (vMessage, vData, Gui::GuiActionType::ID_StartTreatmentRsp ); break; case Gui::GuiActionType::ID_EndTreatmentRsp : ok = notify (vMessage, vData, Gui::GuiActionType::ID_EndTreatmentRsp ); break; + // Alarms + case Gui::GuiActionType::ID_AlarmStatus : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmStatus ); break; + case Gui::GuiActionType::ID_AlarmTriggered : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmTriggered ); break; + case Gui::GuiActionType::ID_AlarmCleared : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmCleared ); break; + case Gui::GuiActionType::ID_AlarmClearedConditionRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmClearedConditionRsp); break; + + // unhandles messages: these will only be logged as received message // there has nothing been defined for these messages. default : printUnhandled (vMessage ); break; Index: sources/gui/GuiGlobals.h =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -93,8 +93,10 @@ ID_AlarmStatus = 0x0200, ID_AlarmTriggered = 0x0300, ID_AlarmCleared = 0x0400, - ID_AlarmUserAckReq = 0x3F00, // 63 + ID_AlarmClearedConditionReq = 0x3F00, // 63 // the same code is used for every unit to send and receive over the CANBus + ID_AlarmClearedConditionRsp = 0x3F00, // 63 // the same code is used for every unit to send and receive over the CANBus ID_AlarmSilenceReq = 0x3200, // 50 + ID_AlarmUserActionReq = 0x4000, // 64 // there is no response since it is kind of the response to the ID_AlarmStatus from UI to HD // Pre-Treatment Parameters ID_CreateTreatmentReq = 0x3500, // 53 @@ -169,6 +171,8 @@ #include "AlarmDefs.h" Q_ENUM(Alarm_Priorities) Q_ENUM(Alarm_List ) + Q_ENUM(Alarm_State_Flag_Bit_Positions) + Q_ENUM(Alarm_User_Actions) #include "MsgDefs.h" Q_ENUM(Request_Reject_Reasons) @@ -191,25 +195,27 @@ }; // to be able to use the enum as signal/slot parameter - typedef GuiActions::GuiActionsType_Enum GuiActionType; - typedef GuiActions::GuiActionsData_Enum GuiActionData; + typedef GuiActions::GuiActionsType_Enum GuiActionType; + typedef GuiActions::GuiActionsData_Enum GuiActionData; - typedef GuiActions::Alarm_Priorities GuiAlarmPriority; - typedef GuiActions::Alarm_List GuiAlarmID; + typedef GuiActions::Alarm_Priorities GuiAlarmPriority; + typedef GuiActions::Alarm_List GuiAlarmID; + typedef GuiActions::Alarm_State_Flag_Bit_Positions GuiAlarmFlags; + typedef GuiActions::Alarm_User_Actions GuiAlarmUserActions; - typedef GuiActions::Request_Reject_Reasons GuiRequestReasons; + typedef GuiActions::Request_Reject_Reasons GuiRequestReasons; - typedef GuiActions::HD_Op_Modes GuiHDOpModes; - typedef GuiActions::DG_Op_Modes GuiDGOpModes; + typedef GuiActions::HD_Op_Modes GuiHDOpModes; + typedef GuiActions::DG_Op_Modes GuiDGOpModes; - typedef GuiActions::UF_Adjustments GuiUFAdjustment; - typedef GuiActions::Treatment_States GuiTreatmentStates; - typedef GuiActions::UF_Commands GuiUFCommands; - typedef GuiActions::UF_States GuiUFStates; - typedef GuiActions::Saline_Commands GuiSalineCommands; - typedef GuiActions::Saline_Bolus_States GuiSalineStates; - typedef GuiActions::Heparin_Commands GuiHeparinCommands; - typedef GuiActions::Heparin_States GuiHeparinStates; + typedef GuiActions::UF_Adjustments GuiUFAdjustment; + typedef GuiActions::Treatment_States GuiTreatmentStates; + typedef GuiActions::UF_Commands GuiUFCommands; + typedef GuiActions::UF_States GuiUFStates; + typedef GuiActions::Saline_Commands GuiSalineCommands; + typedef GuiActions::Saline_Bolus_States GuiSalineStates; + typedef GuiActions::Heparin_Commands GuiHeparinCommands; + typedef GuiActions::Heparin_States GuiHeparinStates; void registerTypes(); void registerQmlTypes(); Index: sources/gui/qml/main.qml =================================================================== diff -u -rd92f6ff5bc93e7043b1a57bb74bc78a959c63f22 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/gui/qml/main.qml (.../main.qml) (revision d92f6ff5bc93e7043b1a57bb74bc78a959c63f22) +++ sources/gui/qml/main.qml (.../main.qml) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -18,8 +18,8 @@ // Project // C++ imports -import Gui.View 0.1; -import Gui.Actions 0.1; +import Gui.View 0.1 +import Gui.Actions 0.1 // TODO : When Testing data on Setting screen is removed // This needs to be moved into the TreatmentFlows.qml @@ -143,73 +143,105 @@ } } - NotificationBar { id: _alarm_bar - - anchors.bottom: _mainMenu.top - level : vAlarmStatus.alarm_Priority - text : vAlarmStatus.text; - isSilenced: vAlarmStatus.alarm_Flag_alarmsSilenced; - - onClickedNotificationBar: { - updateAlarm(); - vAlarmStatus.onSetMinimize(false); - _alarm_bar.visible = false; - _alarm_dialog.visible = true; - } + // Alarms + function alarmMinimize() { + _alarmDialog .visible = false + _alarmListDialog.visible = false + _alarmBar .visible = true } + function alarmMaximize() { + _alarmDialog .visible = true + _alarmListDialog.visible = false + _alarmBar .visible = false + } + function alarmList() { + _alarmDialog .visible = false + _alarmListDialog.visible = true + _alarmBar .visible = false + } + function alarmHide() { + _alarmDialog .visible = false + _alarmListDialog.visible = false + _alarmBar .visible = false + } - function updateAlarm() { - _alarm_dialog.titleText = "Alarm"; - _alarm_dialog.description = vAlarmStatus.text; - _alarm_dialog.alarmID = vAlarmStatus.alarm_AlarmID; - [_alarm_dialog.backgroundColor, _alarm_dialog.textColor] = getRootTextFromAlarmLevel(vAlarmStatus.alarm_Priority); - [_alarm_dialog.titleBarBackground, _alarm_dialog.titleBarForeground] = getAlarmTopBarColors(vAlarmStatus.alarm_Priority); - _alarm_bar.backgroundColor = _alarm_dialog.titleBarBackground; + NotificationBar { id : _alarmBar + backgroundColor : _alarmDialog.backgroundColor + textColor : _alarmDialog.textColor + anchors.bottom : _mainMenu.top + text : vAlarmStatus.text; + isSilenced : vAlarmStatus.alarm_Flag_alarmsSilenced + timeout : vAlarmStatus.alarm_MuteTimeout - _alarm_dialog.isSilenced = vAlarmStatus.alarm_Flag_alarmsSilenced; - _alarm_bar.toggleSilence(vAlarmStatus.alarm_Flag_alarmsSilenced, vAlarmStatus.alarm_MuteTimeout); - _alarm_dialog.silenceBtn.visible = !vAlarmStatus.alarm_Flag_alarmsSilenced; + onMuteClicked : vAlarmStatus.doSilence() + onListClicked : alarmList() + onMaximizeClicked : alarmMaximize() + onClicked : alarmMaximize() } - NotificationDialog { id: _alarm_dialog - alarmID: -1 + // TODO : Later need to create a base Notification dialog class + // and inherit NotificationDialog and AlarmListDialog from that + // Beter be the NotificationDialog defined as parent + // and two separate dialogs by the names of AlarmDialog , AlarmListDlialog creatd. + // Same for the Notification Bar + NotificationDialog { id : _alarmDialog + // this will change later to the actual message text + // and the instruction would be in the dialog content + titleText : "Alarm" + description : vAlarmStatus.text + alarmID : vAlarmStatus.alarm_AlarmID + isSilenced : vAlarmStatus.alarm_Flag_alarmsSilenced + timeout : vAlarmStatus.alarm_MuteTimeout + okVisible : vAlarmStatus.alarm_Flag_UserMustAck + resumeVisible : ! vAlarmStatus.alarm_Flag_noResume + rinsebackVisible : ! vAlarmStatus.alarm_Flag_noRinseback + endVisible : ! vAlarmStatus.alarm_Flag_noEndTreatment - onClickedOkay: { - _alarm_dialog.visible = false; - _alarm_bar.visible = true; - vAlarmStatus.onRequestOkay(alarmID) + onMuteClicked : vAlarmStatus.doSilence () + onResumeClicked : vAlarmStatus.doUserActionResume () + onRinsebackClicked : vAlarmStatus.doUserActionRinseback() + onEndClicked : vAlarmStatus.doUserActionEnd () + onOkClicked : vAlarmStatus.doUserActionOk () + onMinimizeClicked : { + alarmMinimize() + // when used minimizes the alarm it can stay minimized until otherwize is set + // by the next alarm status received. + // see also the "Connections { target: vAlarmStatus" implementation + vAlarmStatus.alarm_KeepMinimized = true + // DEBUG: vAlarmStatus.doClearCondition() } + } - onClickedSilence: { - _alarm_dialog.visible = false; - _alarm_bar.visible = true; - vAlarmStatus.onRequestSilence(); - } + AlarmListDialog { id : _alarmListDialog + isSilenced : vAlarmStatus.alarm_Flag_alarmsSilenced + timeout : vAlarmStatus.alarm_MuteTimeout + onMuteClicked : vAlarmStatus.doSilence() + onMinimizeClicked : alarmMinimize() } // 9 - Others Text { // TEST : Application version should be moved into the information screen later. - color: Colors.textMain + color : Colors.textMain anchors { - right: parent.right - margins: 5 - bottom: parent.bottom + top : parent.top + left : parent.left + leftMargin : 10 } - horizontalAlignment: Text.AlignRight - verticalAlignment: Text.AlignBottom + horizontalAlignment : Text.AlignRight + verticalAlignment : Text.AlignBottom - height: Variables.mainMenuHeight - text: Qt.application.version + height : 15 + text : Qt.application.version font.pixelSize: 14 } Rectangle { // TEST : SD-Card not present should be handled with better indication(s). color : ! _GuiView.sdIsReady ? "red" : _GuiView.sdIsReadOnly ? "gray" : "green" anchors { - right : parent.right - bottom : parent.bottom - bottomMargin: 35 - rightMargin: 10 + top : parent.top + right : parent.right + topMargin : 5 + rightMargin : 5 } width : 25 height: 25 @@ -221,52 +253,6 @@ visible: true // ! _GuiView.sdIsReady || _GuiView.sdIsReadOnly } - function getRootTextFromAlarmLevel(level) { - let root_color = ""; - let text_color = ""; - switch (level) { - case GuiActions.ALARM_PRIORITY_HIGH: - root_color = Colors.textNotificationHighBg; - text_color = Colors.textNotificationHighFg; - break; - case GuiActions.ALARM_PRIORITY_MEDIUM: - root_color = Colors.textNotificationMedBg; - text_color = Colors.textNotificationMedFg; - break; - case GuiActions.ALARM_PRIORITY_LOW: - root_color = Colors.textNotificationLowBg; - text_color = Colors.textNotificationLowFg; - break; - default : // GuiActions.ALARM_PRIORITY_NONE - root_color = Colors.textNotificationNoneBg; - text_color = Colors.textNotificationNoneFg; - } - return [root_color, text_color]; - } - - function getAlarmTopBarColors(level) { - let background = ""; - let foreground = ""; - switch (level) { - case GuiActions.ALARM_PRIORITY_HIGH: - background = Colors.alarmTopBarHighBg; - foreground = Colors.alarmTopBarHighFg; - break; - case GuiActions.ALARM_PRIORITY_MEDIUM: - background = Colors.alarmTopBarMedBg; - foreground = Colors.alarmTopBarMedFg; - break; - case GuiActions.ALARM_PRIORITY_LOW: - background = Colors.alarmTopBarLowBg; - foreground = Colors.alarmTopBarLowFg; - break; - default : // GuiActions.ALARM_PRIORITY_NONE - background = Colors.alarmTopBarLowBg; - foreground = Colors.alarmTopBarLowFg; - } - return [background, foreground]; - } - Connections { target: vPowerOff onPoweroffTriggered: { switch (vpoweroff) { @@ -289,21 +275,37 @@ } Connections { target: vAlarmStatus - onRaiseAlarm: { - updateAlarm(); + onAlarm_Flag_noResumeChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_noRinsebackChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_noEndTreatmentChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_UserMustAckChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_AlarmIDChanged : vAlarmStatus.alarm_KeepMinimized = false + onAlarm_Flag_alarmsSilencedChanged : vAlarmStatus.alarm_KeepMinimized = vAlarmStatus.alarm_Flag_alarmsSilenced + onAlarm_PriorityChanged: { + [ + _alarmDialog.titleBarBackground, + _alarmDialog.titleBarForeground, + _alarmDialog.backgroundColor , + _alarmDialog.textColor , + ] = Colors.alarmPriorityColors(vAlarmStatus.alarm_Priority) + } - if (vAlarmStatus.minimizeAlarm) { - _alarm_dialog.visible = false; - _alarm_bar.visible = true; - } else { - _alarm_dialog.visible = true; - _alarm_bar.visible = false; + onDidAlarmRaise: { + let silenceMinimize = false + if (vAlarmStatus.alarm_Flag_alarmsSilenced && silenceMinimize) { + // this is the response to the silence request + // so the dialog should be closed when the request accepted + // if not then if can stay minimized nothing happens + // if can't stay minimized then it has to be shown + alarmMinimize() } + else { + if (! vAlarmStatus.alarm_KeepMinimized) { + alarmMaximize() + } + } } - onNoAlarm: { - _alarm_bar.visible = false; - _alarm_dialog.visible = false; - } + onDidAlarmEmpty: alarmHide() } } Index: sources/model/MModel.h =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/model/MModel.h (.../MModel.h) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ sources/model/MModel.h (.../MModel.h) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -21,6 +21,7 @@ #include "MAlarmStatusData.h" #include "MAlarmTriggered.h" #include "MAlarmCleared.h" +#include "MAlarmClearedCondition.h" #include "MTreatmentTimeData.h" #include "MTreatmentFlowsData.h" @@ -186,17 +187,18 @@ REGISTER_METATYPE( OutletFlowData ) \ REGISTER_METATYPE( TreatmentTimeData ) \ REGISTER_METATYPE( PressureOcclusionData ) \ - REGISTER_METATYPE( AlarmStatusData ) \ - REGISTER_METATYPE( AlarmStatusFlag ) \ REGISTER_METATYPE( PowerOffData ) \ REGISTER_METATYPE( TreatmentRangesData ) \ - REGISTER_METATYPE( AlarmTriggeredData ) \ - REGISTER_METATYPE( AlarmClearedData ) \ REGISTER_METATYPE( TreatmentStatesData ) \ REGISTER_METATYPE( TreatmentSalineData ) \ REGISTER_METATYPE( TreatmentHeparinData ) \ REGISTER_METATYPE( HDOperationModeData ) \ \ + REGISTER_METATYPE( AlarmStatusData ) \ + REGISTER_METATYPE( AlarmTriggeredData ) \ + REGISTER_METATYPE( AlarmClearedData ) \ + REGISTER_METATYPE( AlarmClearedConditionData ) \ + \ REGISTER_METATYPE( DGROPumpData ) \ REGISTER_METATYPE( DGPressuresData ) \ REGISTER_METATYPE( DGDrainPumpData ) \ @@ -215,8 +217,10 @@ REGISTER_METATYPE( StartTreatmentRequestData ) \ REGISTER_METATYPE( ConfirmTreatmentRequestData ) \ REGISTER_METATYPE( EndTreatmentRequestData ) \ - REGISTER_METATYPE( AlarmAcknowledgeRequestData ) \ + \ REGISTER_METATYPE( AlarmSilenceRequestData ) \ + REGISTER_METATYPE( AlarmUserActionRequestData ) \ + REGISTER_METATYPE( AlarmClearedConditionRequestData ) \ \ REGISTER_METATYPE( AdjustBloodDialysateRequestData ) \ REGISTER_METATYPE( AdjustDurationRequestData ) \ @@ -264,16 +268,18 @@ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, OutletFlowData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentTimeData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PressureOcclusionData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmStatusData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PowerOffData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRangesData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmTriggeredData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmClearedData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentSalineData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentHeparinData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDOperationModeData ) \ \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmStatusData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmTriggeredData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmClearedData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmClearedConditionData ) \ + \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGROPumpData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGPressuresData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGDrainPumpData ) \ @@ -317,8 +323,10 @@ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustHeparinRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustPressuresLimitsRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustTreatmentParametersRequestData ) \ - ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmAcknowledgeRequestData ) \ + \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmSilenceRequestData ) \ + ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmUserActionRequestData ) \ + ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmClearedConditionRequestData ) \ //===============================================================================// /*! @@ -344,16 +352,18 @@ ACTION_RECEIVE_BRIDGE_DEFINITION( OutletFlowData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentTimeData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( PressureOcclusionData ) \ - ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmStatusData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( PowerOffData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRangesData ) \ - ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmTriggeredData ) \ - ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmClearedData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentSalineData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentHeparinData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( HDOperationModeData ) \ \ + ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmStatusData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmTriggeredData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmClearedData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmClearedConditionData ) \ + \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGROPumpData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGPressuresData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGDrainPumpData ) \ @@ -396,8 +406,10 @@ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustHeparinRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustPressuresLimitsRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustTreatmentParametersRequestData ) \ - ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmAcknowledgeRequestData ) \ + \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmSilenceRequestData ) \ + ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmUserActionRequestData ) \ + ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmClearedConditionRequestData ) \ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_NOEMIT \ /* Request ----------------------- NoEmit -------------------------- */ \ @@ -414,8 +426,10 @@ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustHeparinRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustPressuresLimitsRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustTreatmentParametersRequestData ) \ + \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmSilenceRequestData ) \ - ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmAcknowledgeRequestData ) \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmUserActionRequestData ) \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmClearedConditionRequestData ) \ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_PUBLIC \ /* Request ----------------------- public -------------------------- */ \ @@ -432,27 +446,32 @@ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( ConfirmTreatmentRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( EndTreatmentRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustTreatmentParametersRequestData ) \ - ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmAcknowledgeRequestData ) \ + \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmSilenceRequestData ) \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmUserActionRequestData ) \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmClearedConditionRequestData ) \ //===============================================================================// #define ACTION_RECEIVE_SIGNALS \ - /* Received signals */ \ + /* Received signals */ \ + /* NO RESPONSE message model here */ \ ACTION_RECEIVE_SIGNAL( BloodFlowData ) \ ACTION_RECEIVE_SIGNAL( DialysateFlowData ) \ ACTION_RECEIVE_SIGNAL( OutletFlowData ) \ ACTION_RECEIVE_SIGNAL( TreatmentTimeData ) \ ACTION_RECEIVE_SIGNAL( PressureOcclusionData ) \ - ACTION_RECEIVE_SIGNAL( AlarmStatusData ) \ ACTION_RECEIVE_SIGNAL( PowerOffData ) \ ACTION_RECEIVE_SIGNAL( TreatmentRangesData ) \ - ACTION_RECEIVE_SIGNAL( AlarmTriggeredData ) \ - ACTION_RECEIVE_SIGNAL( AlarmClearedData ) \ ACTION_RECEIVE_SIGNAL( TreatmentStatesData ) \ ACTION_RECEIVE_SIGNAL( TreatmentSalineData ) \ ACTION_RECEIVE_SIGNAL( TreatmentHeparinData ) \ ACTION_RECEIVE_SIGNAL( HDOperationModeData ) \ \ + ACTION_RECEIVE_SIGNAL( AlarmStatusData ) \ + ACTION_RECEIVE_SIGNAL( AlarmTriggeredData ) \ + ACTION_RECEIVE_SIGNAL( AlarmClearedData ) \ + ACTION_RECEIVE_SIGNAL( AlarmClearedConditionData ) \ + \ ACTION_RECEIVE_SIGNAL( DGROPumpData ) \ ACTION_RECEIVE_SIGNAL( DGPressuresData ) \ ACTION_RECEIVE_SIGNAL( DGDrainPumpData ) \ Index: sources/model/hd/adjustment/MTreatmentAdjustRequests.h =================================================================== diff -u -r28f3f8dd18981262995386d29d3c2ab31418bfc4 -r1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3 --- sources/model/hd/adjustment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision 28f3f8dd18981262995386d29d3c2ab31418bfc4) +++ sources/model/hd/adjustment/MTreatmentAdjustRequests.h (.../MTreatmentAdjustRequests.h) (revision 1f36c7f6eb909b9f78b97cc43c4fa24995ae9ef3) @@ -369,22 +369,22 @@ * \brief The MAlarmSilenceReq class * \details The model to request alarm silent * - * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | - * |:---:|:------:|:-----:|:----:|:---:|:---:|:----:|:--------------------:| - * | | | | Req | Y | UI | HD | Alarm Silent Request | + * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | + * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:-----------------------:| + * |0x3200| 0x100 | 9 | Req | Y | UI | HD | Alarm (de)Silent Request | * * | Payload || * | || - * | #1:(U32) | TBD | + * | #1:(U08) | silence | * */ class MAlarmSilenceReq : public MModel { public: - quint8 state; + quint8 silence = 1; // coco begin validated : Has been validated manually. // This object is used statically for now, kept the logic for later usage. QString toString() { - return toString({state}); + return toString({silence}); } // coco end static QString toString(const QVariantList &vParameters) { @@ -393,33 +393,61 @@ }; /*! - * \brief The MAlarmAcknowledgeReq class + * \brief The MAlarmClearedConditionReq class * \details The model to tell HD an alarm has been acknowledged * - * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | - * |:---:|:------:|:-----:|:----:|:---:|:---:|:----:|:-------------------------:| - * | 63 | 0x100 | N/A | Cmd | Y | UI | HD | Alarm Acknolwedge Request | + * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | + * |:----:|:----------:|:-----:|:----:|:---:|:---:|:----:|:------------------------:| + * |0x3F00| 0x001,2,4 | N/A | Cmd | Y | UI | HD | Alarm Condition Cleared | * * | Payload || * | || * | #1:(U32) | \ref alarmID | * */ -class MAlarmAcknowledgeReq : public MModel { +// MAlarmAcknowledgeReq +class MAlarmClearedConditionReq : public MModel { public: - quint32 alarmID; + GuiAlarmID alarmID = GuiAlarmID::ALARM_ID_NO_ALARM; // coco begin validated : Has been validated manually. // This object is used statically for now, kept the logic for later usage. QString toString() { return toString({alarmID}); } // coco end static QString toString(const QVariantList &vParameters) { - return MModel::toString("AlarmAcknowledgeRequest", vParameters); + return MModel::toString("AlarmCondition", vParameters); } }; /*! + * \brief The MAlarmUserActionReq class + * \details The model to tell HD an alarm action has been made by user + * + * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | + * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:------------------:| + * |0x4000| 0x100 | N/A | Cmd | Y | UI | HD | Alarm User Action | + * + * | Payload || + * | || + * | #1:(U32) | \ref action | + * + */ +class MAlarmUserActionReq : public MModel { +public: + GuiAlarmUserActions action; + // coco begin validated : Has been validated manually. + // This object is used statically for now, kept the logic for later usage. + QString toString() { + return toString({action}); + } + // coco end + static QString toString(const QVariantList &vParameters) { + return MModel::toString("AlarmUserAction", vParameters); + } +}; + +/*! * \brief The MStartTreatmentReq class * \details The model to request starting a treatment * @@ -605,4 +633,5 @@ typedef Model:: MEndTreatmentReq EndTreatmentRequestData; typedef Model:: MAdjustTreatmentParametersReq AdjustTreatmentParametersRequestData; typedef Model:: MAlarmSilenceReq AlarmSilenceRequestData; -typedef Model:: MAlarmAcknowledgeReq AlarmAcknowledgeRequestData; +typedef Model:: MAlarmClearedConditionReq AlarmClearedConditionRequestData; +typedef Model:: MAlarmUserActionReq AlarmUserActionRequestData;