/*! * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VAlarmStatus.cpp * \author (last) Behrouz NematiPour * \date (last) 31-Aug-2020 * \author (original) Behrouz NematiPour * \date (original) 26-Aug-2020 * */ #include "VAlarmStatus.h" // Project #include "GuiController.h" VIEW_DEF_CLASS_ADJUSTMENT(VAlarmStatus) void VAlarmStatus::initConnections() { ACTION_VIEW_CONNECTION(AlarmStatusData ); ADJUST_VIEW_CONNECTION(AlarmSilenceRequestData ); ADJUST_VIEW_CONNECTION(AlarmUserActionRequestData ); /* // coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. ADJUST_VIEW_CONNECTION(AlarmClearedConditionRequestData ); // coco end */ } /*! * \brief View::VAlarmStatus::doUserActionResume * \details send the message to notify that user chose the Resume Treatment button */ void View::VAlarmStatus::doUserActionResume() { AlarmUserActionRequestData data; data.action = Gui::GuiAlarmUserActions::ALARM_USER_ACTION_RESUME; emit didAdjustment(data); } /*! * \brief View::VAlarmStatus::doUserActionRinseback * \details send the message to notify that user chose the Rinse back button */ void View::VAlarmStatus::doUserActionRinseback() { AlarmUserActionRequestData data; data.action = Gui::GuiAlarmUserActions::ALARM_USER_ACTION_RINSEBACK; emit didAdjustment(data); } /*! * \brief View::VAlarmStatus::doUserActionEnd * \details send the message to notify that user chose the End Treatment button */ void View::VAlarmStatus::doUserActionEnd() { AlarmUserActionRequestData data; data.action = Gui::GuiAlarmUserActions::ALARM_USER_ACTION_END_TREATMENT; emit didAdjustment(data); } /*! * \brief View::VAlarmStatus::doUserActionOk * \details send the message to notify that user chose the OK button */ void View::VAlarmStatus::doUserActionOk() { AlarmUserActionRequestData data; data.action = Gui::GuiAlarmUserActions::ALARM_USER_ACTION_ACK; emit didAdjustment(data); } /*! * \brief VAlarmStatus::doSilence * Send out a request to silence alarms */ void View::VAlarmStatus::doSilence() { AlarmSilenceRequestData data; if (_alarm_Flag_alarmsSilenced) data.silence = 0; // de-silence else data.silence = 1; // silence emit didAdjustment(data); } /*! * \brief VAlarmStatus::doClearCondition * \details Send out a request to notify alarm condition is cleared * \note this is an example of how to do the clear condition * later it may require to have a parameter or it needs to be different slots * currently there is no use case for this */ void View::VAlarmStatus::doClearCondition() { // coco begin validated: Manually tested. This model class is a placeholder for the message 63(0x3F00) and there is no use case for this now. AlarmClearedConditionRequestData data; data.alarmID = GuiAlarmID::ALARM_ID_HD_COMM_TIMEOUT; emit didAdjustment(data); } // coco end /*! * \brief VAlarmStatus::onActionReceive * \details the message received handler * \param vData - Data of the received message */ void VAlarmStatus::onActionReceive(const AlarmStatusData &vData) { GuiAlarmID alarmID = static_cast(vData.mTop); // coco begin validated: the gDisableTimeout has meant to only being used for debugging purposes. // has been manually tested during debugging which works fine as expected. if (alarmID == GuiAlarmID::ALARM_ID_HD_COMM_TIMEOUT && gDisableTimeout) { LOG_DEBUG(tr("Suppressing HD communication timeout.")); return; } // coco end // Look for this tag: #First_Time_Message_Sent_With_Silenced // this has to be first to make sure in the Notification dialog when we decided to show the dialog, // we should also consider checking the alarms Silenced and if it is already silenced, // even though there should be a text but should not show the dialog // otherwise it bounces alarm_Flag_alarmsSilenced (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_ALARMS_SILENCED )); alarm_Priority (vData.mState ); alarm_AlarmID (vData.mTop ); alarm_EscalateIn (vData.mEscalatesIn ); alarm_MuteTimeout (vData.mMuteTimeout ); alarm_Flag_systemFault (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_SYSTEM_FAULT )); alarm_Flag_stop (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_STOP )); alarm_Flag_noClear (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_CLEAR )); alarm_Flag_noResume (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_RESUME )); alarm_Flag_noRinseback (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_RINSEBACK )); alarm_Flag_noEndTreatment (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_END_TREATMENT )); alarm_Flag_noNewTreatment (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_NEW_TREATMENT )); alarm_Flag_UserMustAck (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_USER_MUST_ACK )); alarm_Flag_alarmsToEscalate (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_ALARMS_TO_ESCALATE )); alarm_Flag_alarmsLampOn (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_LAMP_ON )); // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_1 )); // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_2 )); // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_3 )); if ( gDisableAlarmNoMinimize ) { alarm_Flag_noMinimize (false); } else { alarm_Flag_noMinimize (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_MINIMIZE )); } alarm_Flag_alarmsCondition (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_TOP_CONDITION )); if (vData.mTop == GuiAlarmID::ALARM_ID_NO_ALARM) { emit didAlarmEmpty(); } else { hasAlarm(true); if ( // alarm id properties _alarm_AlarmIDChanged || _alarm_PriorityChanged // alarm buttons || _alarm_Flag_noResumeChanged || _alarm_Flag_noRinsebackChanged || _alarm_Flag_noEndTreatmentChanged || _alarm_Flag_UserMustAckChanged // alarm cannot be minimized || ( _alarm_Flag_noMinimizeChanged && _alarm_Flag_noMinimize ) // alarm is out of silence || ( _alarm_Flag_alarmsSilencedChanged && ! _alarm_Flag_alarmsSilenced ) ){ emit didAlarmRaise(); } } } /*! * \brief VAlarmStatus::alarmIDText * \details Looks up the alarm text from the alarm ID * \param vEnum - The Alarm ID * \return The alarm text (QString) */ QString VAlarmStatus::alarmIDText(GuiAlarmID vEnum) { return Model::MAlarmStatus::toText(vEnum); } /*! * \brief VAlarmStatus::text * \return Gets the alarm text from the alarm ID and returns it as a QString */ QString VAlarmStatus::text() { return alarmIDText(static_cast(alarm_AlarmID())); }