Index: denali.pro =================================================================== diff -u -r7077e38c74db9cccb5496ffefcf8936c0916de76 -ra5be04172757fa469d85fb83a6998a4404214f19 --- denali.pro (.../denali.pro) (revision 7077e38c74db9cccb5496ffefcf8936c0916de76) +++ denali.pro (.../denali.pro) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -113,6 +113,7 @@ sources/model/hd/alarm/MAlarmTriggered.h \ sources/model/hd/alarm/MAlarmCleared.h \ sources/model/hd/alarm/MAlarmClearedCondition.h \ + sources/model/hd/alarm/MAlarmActiveList.h \ \ # ---------- Models - States Data sources/model/hd/data/MHDOperationModeData.h \ sources/model/hd/data/pretreatment/MPreTreatmentStatesData.h \ @@ -175,6 +176,10 @@ sources/model/hd/data/treatment/MTreatmentRinsebackData.h \ sources/model/hd/data/treatment/MTreatmentRecirculateData.h \ sources/model/hd/data/treatment/MTreatmentBloodPrimeData.h \ + \ # ---------- Models - HD - Data - Treatment Log + sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.h \ + sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h \ + sources/model/hd/data/treatmentlog/MTreatmentLogEventData.h \ \ # ---------- Models - DG - Adjustment sources/model/dg/adjustment/settings/MAdjustDGRequests.h \ \ # ---------- Models - DG - Adjustment - Settings @@ -328,6 +333,7 @@ sources/model/hd/alarm/MAlarmTriggered.cpp \ sources/model/hd/alarm/MAlarmCleared.cpp \ sources/model/hd/alarm/MAlarmClearedCondition.cpp \ + sources/model/hd/alarm/MAlarmActiveList.cpp \ \ # ---------- Models - Data - States sources/model/hd/data/MHDOperationModeData.cpp \ sources/model/hd/data/pretreatment/MPreTreatmentStatesData.cpp \ @@ -368,11 +374,6 @@ sources/model/hd/adjustment/disinfect/MDisinfectAdjustResponse.cpp \ sources/model/hd/adjustment/disinfect/MDisinfectAdjustChemicalConfirmResponse.cpp \ \ # ---------- Models - HD - Data - \ # ---------- Models - HD - Data - Pre-Treatment - sources/model/hd/data/pretreatment/MPreTreatmentDisposablesPrimeData.cpp \ - sources/model/hd/data/pretreatment/MPreTreatmentSelfTestNoCartridgeData.cpp \ - sources/model/hd/data/pretreatment/MPreTreatmentSelfTestDryData.cpp \ - \ # ---------- Models - HD - Data sources/model/hd/data/MHDDebugText.cpp \ sources/model/hd/data/MHDAccelerometerData.cpp \ sources/model/hd/data/MTreatmentRangesData.cpp \ @@ -385,6 +386,14 @@ sources/model/hd/data/treatment/MTreatmentRinsebackData.cpp \ sources/model/hd/data/treatment/MTreatmentRecirculateData.cpp \ sources/model/hd/data/treatment/MTreatmentBloodPrimeData.cpp \ + \ # ---------- Models - HD - Data - Pre-Treatment + sources/model/hd/data/pretreatment/MPreTreatmentDisposablesPrimeData.cpp \ + sources/model/hd/data/pretreatment/MPreTreatmentSelfTestNoCartridgeData.cpp \ + sources/model/hd/data/pretreatment/MPreTreatmentSelfTestDryData.cpp \ + \ # ---------- Models - HD - Data - Treatment Log + sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.cpp \ + sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp \ + sources/model/hd/data/treatmentlog/MTreatmentLogEventData.cpp \ \ # ---------- Models - DG - Adjustment \ # ---------- Models - DG - Adjustment - Settings sources/model/dg/adjustment/settings/MAdjustDGVersionsResponse.cpp \ Index: denali.pro.user =================================================================== diff -u -r8a5dbf556a66524fbe4b60ac1573182a0bd27617 -ra5be04172757fa469d85fb83a6998a4404214f19 --- denali.pro.user (.../denali.pro.user) (revision 8a5dbf556a66524fbe4b60ac1573182a0bd27617) +++ denali.pro.user (.../denali.pro.user) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -1,6 +1,6 @@ - + EnvironmentId Index: en_US.udic =================================================================== diff -u -r7077e38c74db9cccb5496ffefcf8936c0916de76 -ra5be04172757fa469d85fb83a6998a4404214f19 --- en_US.udic (.../en_US.udic) (revision 7077e38c74db9cccb5496ffefcf8936c0916de76) +++ en_US.udic (.../en_US.udic) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -108,3 +108,7 @@ WPA DNS subnet +MHDOperation +HDAccel +Avrge +Param Index: sources/canbus/MessageDispatcher.h =================================================================== diff -u -re125bd5cf13750eaf241d518b9c846139afaa81c -ra5be04172757fa469d85fb83a6998a4404214f19 --- sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision e125bd5cf13750eaf241d518b9c846139afaa81c) +++ sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -110,6 +110,7 @@ GuiActionType::ID_AlarmUserActionReq , GuiActionType::ID_AlarmSilenceReq , GuiActionType::ID_AlarmClearedConditionReq , + GuiActionType::ID_AlarmActiveListReq , // Pre-Treatment GuiActionType::ID_AdjustInitTreatmentReq , GuiActionType::ID_AdjustWaterSampleReq , Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r7077e38c74db9cccb5496ffefcf8936c0916de76 -ra5be04172757fa469d85fb83a6998a4404214f19 --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 7077e38c74db9cccb5496ffefcf8936c0916de76) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -90,6 +90,8 @@ {Gui::GuiActionType::ID_AlarmClearedConditionRsp , 1 * 4 }, // 1 parameter each 4bytes // the same message 63:0x3F00 {Gui::GuiActionType::ID_AlarmSilenceReq , 1 * 4 }, // 1 parameter each 1bytes {Gui::GuiActionType::ID_AlarmUserActionReq , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AlarmActiveListReq , 0 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AlarmActiveListRsp , 12 * 4 }, // 1 parameter each 4bytes // ---- {Gui::GuiActionType::ID_TreatmentRanges , 6 * 4 }, // 6 parameters each 4bytes Index: sources/gui/GuiGlobals.h =================================================================== diff -u -r7077e38c74db9cccb5496ffefcf8936c0916de76 -ra5be04172757fa469d85fb83a6998a4404214f19 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 7077e38c74db9cccb5496ffefcf8936c0916de76) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -118,6 +118,8 @@ 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 + ID_AlarmActiveListReq = 0x9700, // 151 + ID_AlarmActiveListRsp = 0x9800, // 152 // Pre-Treatment // Pre-Treatment Initiate Treatment Index: sources/gui/qml/main.qml =================================================================== diff -u -r8f83b92860a33498ea7856e63afef0a10ee11923 -ra5be04172757fa469d85fb83a6998a4404214f19 --- sources/gui/qml/main.qml (.../main.qml) (revision 8f83b92860a33498ea7856e63afef0a10ee11923) +++ sources/gui/qml/main.qml (.../main.qml) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -228,6 +228,21 @@ font.pixelSize: 14 } + Text { // TEST : Current Date/Time + color : Colors.textMain + anchors { + top : parent.top + left : parent.left + leftMargin : 1000 + } + horizontalAlignment : Text.Alignleft + verticalAlignment : Text.AlignBottom + + height : 15 + text : vDateTime.current + font.pixelSize: 14 + } + DiagnosticsDialog { id: _diagnosticsDialog } SDItem { onDoubleClicked:{ Index: sources/model/hd/alarm/MAlarmActiveList.cpp =================================================================== diff -u --- sources/model/hd/alarm/MAlarmActiveList.cpp (revision 0) +++ sources/model/hd/alarm/MAlarmActiveList.cpp (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,85 @@ +/*! + * + * 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 MPostTreatmentStatesData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#include "MAlarmActiveList.h" + +using namespace Model; + +QVariantList MAlarmActiveListResponse::parameters() const { + return { + _data.mAccepted .value, + _data.mReason .value, + _data.mAlarmID0 .value, + _data.mAlarmID1 .value, + _data.mAlarmID2 .value, + _data.mAlarmID3 .value, + _data.mAlarmID4 .value, + _data.mAlarmID5 .value, + _data.mAlarmID6 .value, + _data.mAlarmID7 .value, + _data.mAlarmID8 .value, + _data.mAlarmID9 .value, + }; +} + +bool MAlarmActiveListResponse::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if (GetValue(vByteArray, index, _data.mAccepted )) + if (GetValue(vByteArray, index, _data.mReason )) + if (GetValue(vByteArray, index, _data.mAlarmID0 )) + if (GetValue(vByteArray, index, _data.mAlarmID1 )) + if (GetValue(vByteArray, index, _data.mAlarmID2 )) + if (GetValue(vByteArray, index, _data.mAlarmID3 )) + if (GetValue(vByteArray, index, _data.mAlarmID4 )) + if (GetValue(vByteArray, index, _data.mAlarmID5 )) + if (GetValue(vByteArray, index, _data.mAlarmID6 )) + if (GetValue(vByteArray, index, _data.mAlarmID7 )) + if (GetValue(vByteArray, index, _data.mAlarmID8 )) + if (GetValue(vByteArray, index, _data.mAlarmID9 )) + 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; } + 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; } +} + +/*! + * \brief MAlarmActiveListResponse::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +AlarmActiveListResponseData MAlarmActiveListResponse::data() const { + Data data; + data.mAccepted = _data.mAccepted .value; + data.mReason = _data.mReason .value; + data.mAlarmID0 = _data.mAlarmID0 .value; + data.mAlarmID1 = _data.mAlarmID1 .value; + data.mAlarmID2 = _data.mAlarmID2 .value; + data.mAlarmID3 = _data.mAlarmID3 .value; + data.mAlarmID4 = _data.mAlarmID4 .value; + data.mAlarmID5 = _data.mAlarmID5 .value; + data.mAlarmID6 = _data.mAlarmID6 .value; + data.mAlarmID7 = _data.mAlarmID7 .value; + data.mAlarmID8 = _data.mAlarmID8 .value; + data.mAlarmID9 = _data.mAlarmID9 .value; + return data; +} Index: sources/model/hd/alarm/MAlarmActiveList.h =================================================================== diff -u --- sources/model/hd/alarm/MAlarmActiveList.h (revision 0) +++ sources/model/hd/alarm/MAlarmActiveList.h (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,141 @@ +/*! + * + * 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 MActiveList.h + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAdjustRequestsBase.h" +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MAlarmActiveListReq 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 | + * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:-----------:| + * |0x9700| 0x100 | N/A | Req | Y | UI | HD | Alarm Active List Request | + * + * | Payload || + * | || + * | NONE || + * \sa MAlarmActiveListRsp : Alarm Active List Response + * + */ +class MAlarmActiveListReq : public MModel { +public: + // coco begin validated : Has been validated manually. + // This object is used statically for now, kept the logic for later usage. + QString toString() { + return toString({}); + } + // coco end + static QString toString(const QVariantList &vParameters) { + return MModel::toString("AlarmActiveList", vParameters); + } +}; + +/*! + * \brief The MAlarmActiveListResponse class + * \details The TreatmentLog adjustment response model + * + * | MSG | CAN ID | M.Box | Type | Ack | Src | Dest | Description | + * |:----:|:------:|:-----:|:----:|:---:|:---:|:----:|:---------: | + * |0x9800| 0x020 | N/A | Rsp | Y | HD | UI | Alarm Active List Response | + * + * | Payload || + * | || + * | # 1:(U32) | \ref Data::mAccepted | + * | # 2:(U32) | \ref Data::mReason | + * | # 3:(U32) | \ref Data::mAlarmID0 | + * | # 4:(U32) | \ref Data::mAlarmID1 | + * | # 5:(U32) | \ref Data::mAlarmID2 | + * | # 6:(U32) | \ref Data::mAlarmID3 | + * | # 7:(U32) | \ref Data::mAlarmID4 | + * | # 8:(U32) | \ref Data::mAlarmID5 | + * | # 9:(U32) | \ref Data::mAlarmID6 | + * | #10:(U32) | \ref Data::mAlarmID7 | + * | #11:(U32) | \ref Data::mAlarmID8 | + * | #12:(U32) | \ref Data::mAlarmID9 | + * \sa Data + * \sa MAlarmActiveListReq : Alarm Active List Request + * + *

Logging info

+ * | || + * | || + * | typeText | Event | + * | unitText | HD | + * | infoText | AdjustTreatmentLog | + * + */ +class MAlarmActiveListResponse : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::U32 mAccepted; + Types::U32 mReason ; + Types::U32 mAlarmID0; + Types::U32 mAlarmID1; + Types::U32 mAlarmID2; + Types::U32 mAlarmID3; + Types::U32 mAlarmID4; + Types::U32 mAlarmID5; + Types::U32 mAlarmID6; + Types::U32 mAlarmID7; + Types::U32 mAlarmID8; + Types::U32 mAlarmID9; + } _data; + +public: + + Type_Enum typeText () const override { return Type_Enum::eEvent ; } + Unit_Enum unitText () const override { return Unit_Enum::eHD ; } + QString infoText () const override { return QString("AlarmActiveList"); } + + struct Data { + bool mAccepted = 0; /*!< Accepted value of type quint32 extracted out */ + quint32 mReason = 0; /*!< Reason value of type quint32 extracted out */ + quint32 mAlarmID0 = 0; /*!< Active Alarm ID 0 */ + quint32 mAlarmID1 = 0; /*!< Active Alarm ID 1 */ + quint32 mAlarmID2 = 0; /*!< Active Alarm ID 2 */ + quint32 mAlarmID3 = 0; /*!< Active Alarm ID 3 */ + quint32 mAlarmID4 = 0; /*!< Active Alarm ID 4 */ + quint32 mAlarmID5 = 0; /*!< Active Alarm ID 5 */ + quint32 mAlarmID6 = 0; /*!< Active Alarm ID 6 */ + quint32 mAlarmID7 = 0; /*!< Active Alarm ID 7 */ + quint32 mAlarmID8 = 0; /*!< Active Alarm ID 8 */ + quint32 mAlarmID9 = 0; /*!< Active Alarm ID 9 */ + }; + + MAlarmActiveListResponse () { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MAlarmActiveListReq AdjustPowerOffRequestData; +typedef Model::MAlarmActiveListResponse::Data AlarmActiveListResponseData; Index: sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.cpp =================================================================== diff -u --- sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.cpp (revision 0) +++ sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.cpp (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,49 @@ +/*! + * + * 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 MTreatmentLogAlarmData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#include "MTreatmentLogAlarmData.h" + +using namespace Model; + +QVariantList MTreatmentLogAlarmData::parameters() const { + return { + _data.mTimeStamp.value, + _data.mAlarmID .value, + _data.mParam1 .value, + }; +} + +bool MTreatmentLogAlarmData::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if (GetValue(vByteArray, index, _data.mTimeStamp)) + if (GetValue(vByteArray, index, _data.mAlarmID )) + if (GetValue(vByteArray, index, _data.mParam1 )) + return true ; + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } +} + +/*! + * \brief MTreatmentLogAlarmData::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +TreatmentLogAlarmData MTreatmentLogAlarmData::data() const { + Data data; + data.mTimeStamp = _data.mTimeStamp .value; + data.mAlarmID = _data.mAlarmID .value; + data.mParam1 = _data.mParam1 .value; + return data; +} Index: sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.h =================================================================== diff -u --- sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.h (revision 0) +++ sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.h (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,87 @@ +/*! + * + * 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 MTreatmentLogAlarmDataData.h + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MTreatmentLogAlarmData class + * \details The post treatment states data model + * These are states of the post treatment. + * + * | MSG | CAN ID | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------:| + * |0x9400| 0x020 | Event | Y | HD | UI | Treatment Log Alarm Data | + * + * | Payload || + * | || + * | #1:(U32) | \ref Data::mTimeStamp | + * | #2:(U32) | \ref Data::mAlarmID | + * | #3:(U32) | \ref Data::mParam1 | + * + * \sa Data + * \sa HD_Post_Treatment_Mode_States + * + *

Logging info

+ * | || + * | || + * | typeText | Datum | + * | unitText | HD | + * | infoText | TreatmentLogAlarm | + * + */ +class MTreatmentLogAlarmData : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::U32 mTimeStamp ; ///< TimeStamp in epoch + Types::U32 mAlarmID ; ///< Alarm ID + Types::U32 mParam1 ; ///< Alarm Parameter 1 // may need more than 1 parameter but defined one so it would be easier to add more later. + } _data; + +public: + + Type_Enum typeText () const override { return Type_Enum::eDatum ; } + Unit_Enum unitText () const override { return Unit_Enum::eHD ; } + QString infoText () const override { return QString("TreatmentLogAlarm") ; } + + struct Data { + quint32 mTimeStamp ; ///< TimeStamp in epoch + quint32 mAlarmID ; ///< Alarm ID + quint32 mParam1 ; ///< Alarm Parameter 1 + }; + + MTreatmentLogAlarmData() { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MTreatmentLogAlarmData::Data TreatmentLogAlarmData; Index: sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp =================================================================== diff -u --- sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp (revision 0) +++ sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.cpp (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,61 @@ +/*! + * + * 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 MTreatmentLogAvrgeData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#include "MTreatmentLogAvrgeData.h" + +using namespace Model; + +QVariantList MTreatmentLogAvrgeData::parameters() const { + return { + _data.mTimeStamp .value, + _data.mBloodFlowRate .value, + _data.mDialysateFlowRate .value, + _data.mUFRate .value, + _data.mArterialPressure .value, + _data.mVenousPressure .value, + }; +} + +bool MTreatmentLogAvrgeData::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if (GetValue(vByteArray, index, _data.mTimeStamp )) + if (GetValue(vByteArray, index, _data.mBloodFlowRate )) + if (GetValue(vByteArray, index, _data.mDialysateFlowRate)) + if (GetValue(vByteArray, index, _data.mUFRate )) + if (GetValue(vByteArray, index, _data.mArterialPressure )) + if (GetValue(vByteArray, index, _data.mVenousPressure )) + 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; } +} + +/*! + * \brief MTreatmentLogAvrgeData::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +TreatmentLogAvrgeData MTreatmentLogAvrgeData::data() const { + Data data; + data.mTimeStamp = _data.mTimeStamp .value; + data.mBloodFlowRate = _data.mBloodFlowRate .value; + data.mDialysateFlowRate = _data.mDialysateFlowRate .value; + data.mUFRate = _data.mUFRate .value; + data.mArterialPressure = _data.mArterialPressure .value; + data.mVenousPressure = _data.mVenousPressure .value; + return data; +} Index: sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h =================================================================== diff -u --- sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h (revision 0) +++ sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,96 @@ +/*! + * + * 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 MTreatmentLogAvrgeDataData.h + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MTreatmentLogAvrgeData class + * \details The post treatment states data model + * These are states of the post treatment. + * + * | MSG | CAN ID | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------:| + * |0x9400| 0x020 | 30 min | Y | HD | UI | Treatment Log Average Periodic Data | + * + * | Payload || + * | || + * | #1:(U32) | \ref Data::mTimeStamp | + * | #2:(U32) | \ref Data::mBloodFlowRate | + * | #3:(U32) | \ref Data::mDialysateFlowRate | + * | #4:(F32) | \ref Data::mUFRate | + * | #5:(F32) | \ref Data::mArterialPressure | + * | #6:(F32) | \ref Data::mVenousPressure | + * + * \sa Data + * \sa HD_Post_Treatment_Mode_States + * + *

Logging info

+ * | || + * | || + * | typeText | Datum | + * | unitText | HD | + * | infoText | TreatmentLogAvrge | + * + */ +class MTreatmentLogAvrgeData : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::U32 mTimeStamp ; ///< TimeStamp in epoch + Types::U32 mBloodFlowRate ; ///< 2 - (U32) Blood Flow Rate (mL/min) + Types::U32 mDialysateFlowRate ; ///< 3 - (U32) Dialysate Flow Rate (mL/min) + Types::F32 mUFRate ; ///< 4 - (F32) Ultrafiltration Rate (mmHg) + Types::F32 mArterialPressure ; ///< 5 - (F32) Arterial Pressure (mmHg) + Types::F32 mVenousPressure ; ///< 6 - (F32) Venous Pressure (mmHg) + } _data; + +public: + + Type_Enum typeText () const override { return Type_Enum::eDatum ; } + Unit_Enum unitText () const override { return Unit_Enum::eHD ; } + QString infoText () const override { return QString("TreatmentLogAvrge") ; } + + struct Data { + quint32 mTimeStamp ; ///< TimeStamp in epoch + quint32 mBloodFlowRate ; ///< 2 - (U32) Blood Flow Rate (mL/min) + quint32 mDialysateFlowRate ; ///< 3 - (U32) Dialysate Flow Rate (mL/min) + float mUFRate ; ///< 4 - (F32) Ultrafiltration Rate (mmHg) + float mArterialPressure ; ///< 5 - (F32) Arterial Pressure (mmHg) + float mVenousPressure ; ///< 6 - (F32) Venous Pressure (mmHg) + }; + + MTreatmentLogAvrgeData() { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MTreatmentLogAvrgeData::Data TreatmentLogAvrgeData; Index: sources/model/hd/data/treatmentlog/MTreatmentLogEventData.cpp =================================================================== diff -u --- sources/model/hd/data/treatmentlog/MTreatmentLogEventData.cpp (revision 0) +++ sources/model/hd/data/treatmentlog/MTreatmentLogEventData.cpp (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,53 @@ +/*! + * + * 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 MTreatmentLogEventData.cpp + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#include "MTreatmentLogEventData.h" + +using namespace Model; + +QVariantList MTreatmentLogEventData::parameters() const { + return { + _data.mTimeStamp.value, + _data.mEventID .value, + _data.mOldValue .value, + _data.mNewValue .value, + }; +} + +bool MTreatmentLogEventData::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if (GetValue(vByteArray, index, _data.mTimeStamp)) + if (GetValue(vByteArray, index, _data.mEventID )) + if (GetValue(vByteArray, index, _data.mOldValue )) + if (GetValue(vByteArray, index, _data.mNewValue )) + 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; } +} + +/*! + * \brief MTreatmentLogEventData::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +TreatmentLogEventData MTreatmentLogEventData::data() const { + Data data; + data.mTimeStamp = _data.mTimeStamp .value; + data.mEventID = _data.mEventID .value; + data.mOldValue = _data.mOldValue .value; + data.mNewValue = _data.mNewValue .value; + return data; +} Index: sources/model/hd/data/treatmentlog/MTreatmentLogEventData.h =================================================================== diff -u --- sources/model/hd/data/treatmentlog/MTreatmentLogEventData.h (revision 0) +++ sources/model/hd/data/treatmentlog/MTreatmentLogEventData.h (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -0,0 +1,90 @@ +/*! + * + * 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 MTreatmentLogEventDataData.h + * \author (last) Behrouz NematiPour + * \date (last) 15-May-2021 + * \author (original) Behrouz NematiPour + * \date (original) 15-May-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MTreatmentLogEventData class + * \details The post treatment states data model + * These are states of the post treatment. + * + * | MSG | CAN ID | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------:| + * |0x9400| 0x020 | Event | Y | HD | UI | Treatment Log Event Data | + * + * | Payload || + * | || + * | #1:(U32) | \ref Data::mTimeStamp | + * | #2:(U32) | \ref Data::mEventID | + * | #3:(F32) | \ref Data::mOldValue | + * | #4:(F32) | \ref Data::mNewValue | + * + * \sa Data + * \sa HD_Post_Treatment_Mode_States + * + *

Logging info

+ * | || + * | || + * | typeText | Datum | + * | unitText | HD | + * | infoText | TreatmentLogEvent | + * + */ +class MTreatmentLogEventData : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::U32 mTimeStamp ; ///< TimeStamp in epoch + Types::U32 mEventID ; ///< Event ID + Types::F32 mOldValue ; ///< Event Old Value + Types::F32 mNewValue ; ///< Event New Value + } _data; + +public: + + Type_Enum typeText () const override { return Type_Enum::eDatum ; } + Unit_Enum unitText () const override { return Unit_Enum::eHD ; } + QString infoText () const override { return QString("TreatmentLogEvent") ; } + + struct Data { + quint32 mTimeStamp ; ///< TimeStamp in epoch + quint32 mEventID ; ///< Event ID + float mOldValue ; ///< Event Old Value + float mNewValue ; ///< Event New Value + }; + + MTreatmentLogEventData() { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MTreatmentLogEventData::Data TreatmentLogEventData; Index: sources/view/settings/VDateTime.cpp =================================================================== diff -u -r577ab4647b2584d4e32b26797281ec1543d2e1aa -ra5be04172757fa469d85fb83a6998a4404214f19 --- sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision 577ab4647b2584d4e32b26797281ec1543d2e1aa) +++ sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -26,6 +26,8 @@ VIEW_DEF_CLASS(VDateTime) void VDateTime::initConnections() { + startTimer(_timerInterval); + ACTION_VIEW_CONNECTION(AdjustHDDateTimeResponseData); ACTION_VIEW_CONNECTION(AdjustDGDateTimeResponseData); ADJUST_VIEW_CONNECTION( AdjustHDDateTimeRequestData); @@ -216,3 +218,8 @@ .arg(status(_acceptUI, _reasonUI)) ); } + +void VDateTime::timerEvent(QTimerEvent *) +{ + current(QDateTime::currentDateTime().toString("MM/dd/yyyy HH:mm:ss")); +} Index: sources/view/settings/VDateTime.h =================================================================== diff -u -r577ab4647b2584d4e32b26797281ec1543d2e1aa -ra5be04172757fa469d85fb83a6998a4404214f19 --- sources/view/settings/VDateTime.h (.../VDateTime.h) (revision 577ab4647b2584d4e32b26797281ec1543d2e1aa) +++ sources/view/settings/VDateTime.h (.../VDateTime.h) (revision a5be04172757fa469d85fb83a6998a4404214f19) @@ -50,6 +50,9 @@ }; Q_ENUM(DateTimeSetStatus) +protected: + void timerEvent(QTimerEvent *event); + private: int _timerInterval = 1000; // ms QProcess _process ; @@ -76,6 +79,8 @@ TRIGGER (QString, second , "00" ) PROPERTY(QString, status , "" ) + PROPERTY(QString, current , "" ) + VIEW_DEC_CLASS(VDateTime) VIEW_DEC_SLOT (AdjustHDDateTimeResponseData) VIEW_DEC_SLOT (AdjustDGDateTimeResponseData)