Index: denali.pro =================================================================== diff -u -r3e5cdca5de3ac46619325bf1e37c572d729d5fa9 -r19092150c9343b729ad87be76805300417bfd68c --- denali.pro (.../denali.pro) (revision 3e5cdca5de3ac46619325bf1e37c572d729d5fa9) +++ denali.pro (.../denali.pro) (revision 19092150c9343b729ad87be76805300417bfd68c) @@ -54,6 +54,7 @@ sources/main.h \ sources/Threads.h \ sources/MainTimer.h \ + sources/AlarmGenerator.h \ sources/ApplicationPost.h \ \ # Controllers sources/ApplicationController.h \ @@ -176,6 +177,7 @@ main.cpp \ sources/Threads.cpp \ sources/MainTimer.cpp \ + sources/AlarmGenerator.cpp \ sources/ApplicationPost.cpp \ \ # Controllers sources/ApplicationController.cpp \ Index: sources/AlarmGenerator.cpp =================================================================== diff -u --- sources/AlarmGenerator.cpp (revision 0) +++ sources/AlarmGenerator.cpp (revision 19092150c9343b729ad87be76805300417bfd68c) @@ -0,0 +1,75 @@ +/*! + * + * 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 AlarmGenerator.cpp + * \author (last) Behrouz NematiPour + * \date (last) 21-Dec-2020 + * \author (original) Behrouz NematiPour + * \date (original) 21-Dec-2020 + * + */ + +// Qt + +// Project +#include "AlarmGenerator.h" + +// defines +#define NO_BUTTON { \ + GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_RESUME , \ + GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_RINSEBACK , \ + GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_END_TREATMENT, \ + GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_NO_NEW_TREATMENT, \ + } + +// namespace +using namespace Gui; + +/*! + * \brief AlarmGenerator::setBits + * \details sets bits of the _len(Alarm_State_Flag_Bit_Positions::NUM_OF_ALARM_STATE_FLAG_BIT_POS) bit length bit array by vBits list. + * \param vBits - list of the bit indexes to be set. + * \return A 16 bit length QBitArray with only the bits mentioned in the vBits as true + * \note vBits list template(quint16) depends on the Alarm_State_Flag_Bit_Positions length. + * quint16 is currently used to cover 256 Alarm ID ( but I guess it should be S32 regarding ti RM46 arch unless has been defined otherwise) + */ +QBitArray AlarmGenerator::setBits(QList vBits) +{ + QBitArray mFlags = QBitArray(_len,false); // Initialize the QBitArray of false + for (auto i: vBits) { + if (i < _len) { + mFlags.setBit(i, true); + } + } + return mFlags; +} + + +/*! + * \brief AlarmGenerator::ALARM_ID_HD_COMM_TIMEOUT + * \details generates the ALARM_ID_HD_COMM_TIMEOUT alarm. + * \return The AlarmStatusData filled with appropriate data for the alarm. + */ +const AlarmStatusData AlarmGenerator::ALARM_ID_HD_COMM_TIMEOUT() +{ + AlarmStatusData data; + data.mState = GuiAlarmPriority::ALARM_PRIORITY_HIGH; // Alarm priority + data.mTop = GuiAlarmID::ALARM_ID_HD_COMM_TIMEOUT; // Alarm ID + data.mMuteTimeout = 0; // Alarm timeout + data.mEscalatesIn = 0; // Alarm Escalate Time Period + data.mFlags = setBits(NO_BUTTON); // No button since there is no HD to communicate. + return data; +} + +const AlarmStatusData AlarmGenerator::ALARM_ID_BLE_CUFF() +{ + // not implemented (PRS 395) + //DENALI_production-PRS 395;Alarm Details, No Blood Pressure Cuff + AlarmStatusData data; + data.mFlags.clear(); + return data; +} Index: sources/AlarmGenerator.h =================================================================== diff -u --- sources/AlarmGenerator.h (revision 0) +++ sources/AlarmGenerator.h (revision 19092150c9343b729ad87be76805300417bfd68c) @@ -0,0 +1,55 @@ +/*! + * + * 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 AlarmGenerator.h + * \author (last) Behrouz NematiPour + * \date (last) 21-Dec-2020 + * \author (original) Behrouz NematiPour + * \date (original) 21-Dec-2020 + * + */ + +#pragma once + +// Qt +#include + +// Project +#include "MAlarmStatusData.h" + +/*! + * \brief The AlarmGenerator class + * \details This class is a helper class for the UI generated Alarms + */ +class AlarmGenerator +{ + // typedef + /*! \brief quint16 depends on the Alarm_State_Flag_Bit_Positions length. + * quint16 is currently used to cover 256 Alarm ID + * ( but I guess it should be S32 regarding ti RM46 arch + * unless has been defined otherwise and since we started from 0 (signed not used) + * then quint16 would be enough) + */ + typedef quint16 TAlarms; + + // member variables + static const quint8 _len = Gui::GuiAlarmFlags::NUM_OF_ALARM_STATE_FLAG_BIT_POS; + + // member functions + static QBitArray setBits(QList vBits); + +public: + AlarmGenerator() {} + + // Generators section : + // please follow the format: + // static const AlarmStatusData (); + // is the enum from GuiAlarmID like ALARM_ID_HD_COMM_TIMEOUT + static const AlarmStatusData ALARM_ID_HD_COMM_TIMEOUT(); + static const AlarmStatusData ALARM_ID_BLE_CUFF (); // not implemented (PRS 395) +}; + Index: sources/gui/GuiController.cpp =================================================================== diff -u -r67371c6a2861c5e8a2328984ae999bf8df4b0bb7 -r19092150c9343b729ad87be76805300417bfd68c --- sources/gui/GuiController.cpp (.../GuiController.cpp) (revision 67371c6a2861c5e8a2328984ae999bf8df4b0bb7) +++ sources/gui/GuiController.cpp (.../GuiController.cpp) (revision 19092150c9343b729ad87be76805300417bfd68c) @@ -21,6 +21,7 @@ // Project #include "Logger.h" #include "ApplicationController.h" +#include "AlarmGenerator.h" // namespace using namespace Gui; @@ -312,11 +313,6 @@ void GuiController::onFailedTransmit(Sequence seq) { Q_UNUSED(seq); - AlarmStatusData data; - data.mState = GuiAlarmPriority::ALARM_PRIORITY_HIGH; // Alarm priority - data.mTop = GuiAlarmID::ALARM_ID_HD_COMM_TIMEOUT; // Alarm ID - data.mMuteTimeout = 0; // Alarm timeout - data.mEscalatesIn = 0; // Alarm Escalate Time Period - data.mFlags = QBitArray(16, false); // 16 QBitArray of flags, if needed + AlarmStatusData data = AlarmGenerator::ALARM_ID_HD_COMM_TIMEOUT(); emit didActionReceive(data); } Index: sources/view/hd/alarm/VAlarmStatus.cpp =================================================================== diff -u -r9aedfea5361fddae22a8546f33a857b934a36303 -r19092150c9343b729ad87be76805300417bfd68c --- sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 9aedfea5361fddae22a8546f33a857b934a36303) +++ sources/view/hd/alarm/VAlarmStatus.cpp (.../VAlarmStatus.cpp) (revision 19092150c9343b729ad87be76805300417bfd68c) @@ -104,11 +104,6 @@ { GuiAlarmID alarmID = static_cast(vData.mTop); - if (gDisableTimeout && alarmID == GuiAlarmID::ALARM_ID_HD_COMM_TIMEOUT) { - LOG_EVENT(tr("Suppressing HD communication timeout.")); - return; - } - // 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, @@ -137,11 +132,17 @@ // (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_UNUSED_4 )); alarm_Flag_alarmsCondition (vData.mFlags.at(GuiAlarmFlags::ALARM_STATE_FLAG_BIT_POS_TOP_CONDITION )); - if (vData.mTop == GuiAlarmID::ALARM_ID_NO_ALARM) { - emit didAlarmEmpty(); + if (alarmID == GuiAlarmID::ALARM_ID_HD_COMM_TIMEOUT && gDisableTimeout) { + LOG_EVENT(tr("Suppressing HD communication timeout.")); + emit didAlarmRaise(); } else { - emit didAlarmRaise(); + if (vData.mTop == GuiAlarmID::ALARM_ID_NO_ALARM) { + emit didAlarmEmpty(); + } + else { + emit didAlarmRaise(); + } } }