Index: denali.pro =================================================================== diff -u -r70a2269a0c3dfe1829ea1450bd4e1509bc1bdd0b -r6be40239ce52d641692de158a044af0a54cde1e8 --- denali.pro (.../denali.pro) (revision 70a2269a0c3dfe1829ea1450bd4e1509bc1bdd0b) +++ denali.pro (.../denali.pro) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -227,6 +227,7 @@ sources/model/hd/data/treatment/MTreatmentBloodPrimeData.h \ sources/model/hd/data/treatment/MTreatmentStopData.h \ sources/model/hd/data/post/MHDRTCEpochData.h \ + sources/model/hd/data/MHDUsageInfoResponse.h \ \ # ---------- Models - HD - Data - Treatment Log sources/model/hd/data/treatmentlog/MTreatmentLogAlarmData.h \ sources/model/hd/data/treatmentlog/MTreatmentLogAvrgeData.h \ @@ -289,6 +290,7 @@ sources/view/settings/VAdjustmentDGCleaningUsage.h \ sources/view/settings/VDuetRoWaterDG.h \ sources/view/settings/VCloudSync.h \ + sources/view/settings/VHDUsageInfo.h \ \ # ---------- Views - Alarm sources/view/hd/alarm/VAlarmStatus.h \ sources/view/hd/alarm/VAlarmActiveList.h \ @@ -489,6 +491,7 @@ sources/model/hd/data/treatment/MTreatmentBloodPrimeData.cpp \ sources/model/hd/data/treatment/MTreatmentStopData.cpp \ sources/model/hd/data/post/MHDRTCEpochData.cpp \ + sources/model/hd/data/MHDUsageInfoResponse.cpp \ \ # ---------- Models - HD - Data - Pre-Treatment sources/model/hd/data/pretreatment/MPreTreatmentDisposablesPrimeData.cpp \ sources/model/hd/data/pretreatment/MPreTreatmentSelfTestNoCartridgeData.cpp \ @@ -555,6 +558,7 @@ sources/view/settings/VDuetRoWaterDG.cpp \ sources/view/settings/VCloudSync.cpp \ sources/view/settings/VAdjustmentDGCleaningUsage.cpp \ + sources/view/settings/VHDUsageInfo.cpp \ \ # ---------- Views - HD - Adjustment sources/view/VAdjustmentResponseBase.cpp \ \ # ---------- Views - HD - Adjustment - common Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -r4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -818,6 +818,17 @@ onActionTransmit(GuiActionType::ID_DuetRoWaterModeUIi, mData); } +/*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the HD Usage Info Denali message. + * \param vData - + * \return void + */ +void MessageDispatcher::onAdjustment(const HDUsageInfoRequestData &) +{ + QVariantList mData; + onActionTransmit(GuiActionType::ID_HDUsageInfoReq, mData); +} // ---------------------------------------------------------------------------------------------------- /*! Index: sources/canbus/MessageDispatcher.h =================================================================== diff -u -r4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision 4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac) +++ sources/canbus/MessageDispatcher.h (.../MessageDispatcher.h) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -159,6 +159,7 @@ GuiActionType::ID_AdjustServiceDatesReq , GuiActionType::ID_AdjustHDDateTimeReq , GuiActionType::ID_AdjustDGDateTimeReq , + GuiActionType::ID_HDUsageInfoReq , // Treatment Log GuiActionType::ID_AdjustTreatmentLogReq , GuiActionType::ID_TreatmentLogAvrgeData , Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -106,6 +106,8 @@ // HD Data Messages {Gui::GuiActionType::ID_HDAccelerometerData , 9 * 4 }, // 9 parameters each 4bytes {Gui::GuiActionType::ID_HDSyringePumpData , 9 * 4 }, // 9 parameters each 4bytes + {Gui::GuiActionType::ID_HDUsageInfoReq , 0 * 4 }, // 0 parameters each 4bytes + {Gui::GuiActionType::ID_HDUsageInfoRsp , 4 * 4 + 2 }, // 4 parameters each 4bytes + 1 parameter 2 bytes // ---- TODO : AFTER GIVING IT SOME THOUGHT, IT SEEMS WE CAN GET THESE LEN FROM THE MODEL AND DO NOT NEED TO HAVE THIS BUT NEED TO INVESTIGATE MORE. {Gui::GuiActionType::ID_AlarmStatus , 4 * 4 + 2 }, // 4 parameters each 4bytes + 1 parameter 2bytes Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -237,6 +237,7 @@ case Gui::GuiActionType::ID_AdjustHDDateTimeReq : INTERPRET_TRANSMIT_MESSAGE(AdjustHDDateTimeRequestData ); break; case Gui::GuiActionType::ID_AdjustDGDateTimeReq : INTERPRET_TRANSMIT_MESSAGE(AdjustDGDateTimeRequestData ); break; case Gui::GuiActionType::ID_AdjustServiceDatesReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustServiceDatesRequestData ); break; + case Gui::GuiActionType::ID_HDUsageInfoReq : INTERPRET_TRANSMIT_MESSAGE(HDUsageInfoRequestData ); break; // Pre-Treatment case Gui::GuiActionType::ID_AdjustInitTreatmentReq : INTERPRET_TRANSMIT_MESSAGE(AdjustInitTreatmentRequestData ); break; case Gui::GuiActionType::ID_AdjustParametersValidationReq : INTERPRET_TRANSMIT_MESSAGE(AdjustParametersValidationRequestData ); break; @@ -441,6 +442,7 @@ case Gui::GuiActionType::ID_AdjustSerialHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSerialHDRsp ); break; case Gui::GuiActionType::ID_AdjustServiceDatesHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceDatesHDRsp ); break; case Gui::GuiActionType::ID_AdjustHDDateTimeRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustHDDateTimeRsp ); break; + case Gui::GuiActionType::ID_HDUsageInfoRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDUsageInfoRsp ); break; // ----- States case Gui::GuiActionType::ID_HDOperationModeData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDOperationModeData ); break; Index: sources/gui/GuiGlobals.cpp =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/gui/GuiGlobals.cpp (.../GuiGlobals.cpp) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/gui/GuiGlobals.cpp (.../GuiGlobals.cpp) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -49,6 +49,7 @@ #include "VBluetooth.h" #include "VDuetRoWaterDG.h" #include "VCloudSync.h" +#include "VHDUsageInfo.h" // states data #include "VHDOperationModeData.h" #include "VPreTreatmentStatesData.h" Index: sources/gui/GuiGlobals.h =================================================================== diff -u -r4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -110,6 +110,10 @@ ID_AdjustServiceDatesHDRsp = 0x8A00, // 138 ID_AdjustServiceDatesDGRsp = 0x8C00, // 140 + // HD/DG Usage Counter + ID_HDUsageInfoReq = 0xA000, // 160 + ID_HDUsageInfoRsp = 0x8B00, // 139 + // RTC ID_AdjustHDDateTimeReq = 0x6D00, // 109 ID_AdjustHDDateTimeRsp = 0x6E00, // 110 Index: sources/gui/qml/compounds/TouchGrid.qml =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/gui/qml/compounds/TouchGrid.qml (.../TouchGrid.qml) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/gui/qml/compounds/TouchGrid.qml (.../TouchGrid.qml) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -34,6 +34,7 @@ property var itemsVisible : [] property var itemsHasImage : [] property var itemsHasLine : [] + property var itemsHasIndent : [] property var itemsTouchable : [] property bool touchable : true @@ -93,10 +94,11 @@ Repeater { model : _root.itemsText TouchRect { id: _touchItem + readonly property int indentMargin : (undef( _root.itemsHasIndent[index], false ) ? 20 : 0) clip : true touchable : undef( _root.itemsTouchable[index], _root.touchable ) text.anchors.horizontalCenter: undefined - text.leftPadding : Variables.minVGap + text.leftPadding : Variables.minVGap + indentMargin text.text : modelData border.width : 0 height : _root.itemHeight Index: sources/gui/qml/main.qml =================================================================== diff -u -rb9d5efd980be633f5d0bd92cc76295f3a0669db4 -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/gui/qml/main.qml (.../main.qml) (revision b9d5efd980be633f5d0bd92cc76295f3a0669db4) +++ sources/gui/qml/main.qml (.../main.qml) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -46,7 +46,7 @@ import VBluetooth 0.1 import VDuetRoWaterDG 0.1 import VCloudSync 0.1 - +import VHDUsageInfo 0.1 // States views import VHDOperationMode 0.1 import VPreTreatmentStates 0.1 @@ -147,7 +147,7 @@ VBluetooth { id: vBluetooth } VDuetRoWaterDG { id: vDuetRoWaterDG } VCloudSync { id: vCloudSync } - + VHDUsageInfo { id: vHDUsageInfo } // ---- States VHDOperationMode { id: vHDOperationMode onStandbyChanged: { Index: sources/gui/qml/pages/settings/SettingsInformation.qml =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/gui/qml/pages/settings/SettingsInformation.qml (.../SettingsInformation.qml) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/gui/qml/pages/settings/SettingsInformation.qml (.../SettingsInformation.qml) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -42,18 +42,29 @@ anchors.centerIn: parent colCount : 2 colSpacing : 50 - rowCount : 8 + rowCount : 11 rowSpacing : 0 - itemHeight : 50 + itemHeight : 45 itemWidth : 550 touchable : false itemsHasLine: [ 0, // title C1 - 1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,0,0,0, 0, // title C2 1,1,1,1, + 0, 0, // title C2B + 1,1,1,1 ] - itemsValueLeftMargin: 300 + itemsHasIndent: [ + 0, // title C1 + 0,0,0,0,0,0,0,0,0, + 0, // title C2 + 0,0,0,0,0, + 0, 0, // title C2B + 1,1,1,1 + ] + itemsValueLeftMargin: itemWidth / 2 + 50 + itemsUnitLeftMargin : itemWidth / 4 + 50 itemsValue : [ "" , Qt .application.version, @@ -63,11 +74,16 @@ vAdjustmentVersions .dgVerDevice , vAdjustmentVersions .dgVerFPGA , vAdjustmentVersions .dgSerial , - "", + "", "", "", "", // Space and title vAdjustmentServiceDates .hdLastServiceDate , vAdjustmentServiceDates .hdNextServiceDate , vAdjustmentServiceDates .dgLastServiceDate , vAdjustmentServiceDates .dgNextServiceDate , + "", "", // Space and title + vHDUsageInfo.totalTxHours , + vHDUsageInfo.totalTxHoursSinceLastService , + vHDUsageInfo.epochOfStartOfLastTx , + vHDUsageInfo.epochOfLastRecordReset , ] itemsText : [ qsTr("Versions" ), // col1 title @@ -78,13 +94,19 @@ qsTr("DG Version" ), qsTr("DG FPGA Version" ), qsTr("DG Serial Number" ), + "", "", "", // Holders for last elements qsTr("Service" ), // col2 title qsTr("HD Last Service Date" ), qsTr("HD Next Service Date" ), qsTr("DG Last Service Date" ), qsTr("DG Next Service Date" ), - + "", // spacer + qsTr("Treatment" ), + qsTr("Total Hours" ), + qsTr("Hours Since Last Service" ), + qsTr("Last Start" ), + qsTr("Last Reset" ), ] } } Index: sources/model/MModel.h =================================================================== diff -u -r4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/model/MModel.h (.../MModel.h) (revision 4b7b6f9506d7c7ad4f611b8c417ed37d5f9a48ac) +++ sources/model/MModel.h (.../MModel.h) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -64,6 +64,7 @@ #include "MHDBloodLeakData.h" #include "MHDAirBubbleData.h" #include "MHDRTCEpochData.h" +#include "MHDUsageInfoResponse.h" // Debugging Messages #include "MHDDebugText.h" @@ -326,6 +327,8 @@ REGISTER_METATYPE( HDBloodLeakData ) \ REGISTER_METATYPE( HDAirTrapData ) \ REGISTER_METATYPE( HDAirBubbleData ) \ + REGISTER_METATYPE( HDUsageInfoResponseData ) \ + REGISTER_METATYPE( HDUsageInfoRequestData ) \ /* Treatment Log */ \ REGISTER_METATYPE( TreatmentLogAvrgeData ) \ REGISTER_METATYPE( TreatmentLogAlarmData ) \ @@ -584,8 +587,9 @@ /* Alarms - Active List Response */ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmActiveListResponseData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustHDAlarmVolumeResponseData ) \ + /* Settings - HD Data Response */ \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDUsageInfoResponseData ) \ - // /* Request */ ---------------------------------------------------------// #define ADJUST_TRANSMT_MODEL_BRIDGE_CONNECTIONS(vSOURCE) \ /* CONFIRM */ \ @@ -640,6 +644,9 @@ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmSilenceRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmUserActionRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmActiveListRequestData ) \ + /* Settings - HD Info */ \ + ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, HDUsageInfoRequestData ) \ + /* disabled coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AlarmClearedConditionRequestData ) \ disabled coco end */ \ @@ -775,6 +782,8 @@ /* Alarms - Active List Response */ \ ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmActiveListResponseData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustHDAlarmVolumeResponseData ) \ + /* Settings - HD Data Response */ \ + ACTION_RECEIVE_BRIDGE_DEFINITION( HDUsageInfoResponseData ) \ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS \ @@ -831,6 +840,8 @@ ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmSilenceRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmUserActionRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmActiveListRequestData ) \ + /* Settings - HD Info */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION( HDUsageInfoRequestData ) \ /* disabled coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. ADJUST_TRANSMT_BRIDGE_DEFINITION( AlarmClearedConditionRequestData ) \ disabled coco end */ \ @@ -889,6 +900,8 @@ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmSilenceRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmUserActionRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmActiveListRequestData ) \ + /* Settings - HD Info */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( HDUsageInfoRequestData ) \ /* disabled coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AlarmClearedConditionRequestData ) \ disabled coco end */ \ @@ -947,6 +960,8 @@ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmSilenceRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmUserActionRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmActiveListRequestData ) \ + /* Settings - HD Info */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( HDUsageInfoRequestData ) \ /* disabled coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AlarmClearedConditionRequestData ) \ disabled coco end */ \ @@ -1065,7 +1080,10 @@ /* Alarms */ \ ACTION_RECEIVE_SIGNAL( AlarmActiveListResponseData ) \ ACTION_RECEIVE_SIGNAL( AdjustHDAlarmVolumeResponseData ) \ + /* Settings - HD data response */ \ + ACTION_RECEIVE_SIGNAL( HDUsageInfoResponseData ) \ + //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------// Index: sources/model/hd/adjustment/settings/MAdjustHDRequests.h =================================================================== diff -u -r7c86f3854db9ad02d95681203198d75a0d65c9fa -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/model/hd/adjustment/settings/MAdjustHDRequests.h (.../MAdjustHDRequests.h) (revision 7c86f3854db9ad02d95681203198d75a0d65c9fa) +++ sources/model/hd/adjustment/settings/MAdjustHDRequests.h (.../MAdjustHDRequests.h) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -261,6 +261,35 @@ return MModel::toString("UIPOSTDone", vParameters); } }; + +/*! + * \brief The MHDUsageInfoRequest class + * \details The HD usage info request model + * + * | MSG | CAN ID | Type | Ack | Src | Dest | Description | + * |:------:|:------:|:----:|:---:|:---:|:----:|:---------------------------:| + * | 0xA000 | 0x040 | Req | Y | HD | UI | HD Request for Usage Info | + * + * | Payload || + * | || + * | (N/A) || + * + */ +class MHDUsageInfoReq : public MModel { +public: + + // disabled coco begin validated : Has been validated manually. + // This object is used statically for now, kept the logic for later usage. + QString toString() { + return toString({}); + } + // disabled coco end + static QString toString(const QVariantList &vParameters) { + return MModel::toString("HDUsageInfoReq", vParameters); + } + + static Can::Can_Id canid () { return Can::eChlid_UI_Sync; } +}; } typedef Model:: MAdjustServiceModeReq AdjustServiceModeRequestData; @@ -270,3 +299,4 @@ typedef Model:: MAdjustHDDateTimeReq AdjustHDDateTimeRequestData; typedef Model:: MAdjustHDAlarmVolumeReq AdjustHDAlarmVolumeRequestData; typedef Model::MAdjustUIPostFinalResultReq AdjustUIPostFinalResultRequestData; +typedef Model:: MHDUsageInfoReq HDUsageInfoRequestData; Index: sources/model/hd/data/MHDUsageInfoResponse.cpp =================================================================== diff -u --- sources/model/hd/data/MHDUsageInfoResponse.cpp (revision 0) +++ sources/model/hd/data/MHDUsageInfoResponse.cpp (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -0,0 +1,57 @@ +/*! + * + * Copyright (c) 2020-2023 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 MHDUsageInfoResponse.cpp + * \author (last) Vy Duong + * \date (last) 08-Sep-2021 + * \author (original) Vy Duong + * \date (original) 08-Sep-2021 + * + */ +#include "MHDUsageInfoResponse.h" + +using namespace Model; + +QVariantList MHDUsageInfoResponse::parameters() const { + return { + _data.mTotalTxHours .value, + _data.mTotalTxHoursSinceLastService .value, + _data.mEpochOfStartOfLastTx .value, + _data.mEpochOfLastRecordReset .value, + _data.mCrc .value, + }; +} + +bool MHDUsageInfoResponse::fromByteArray(const QByteArray &vByteArray, int *vIndex) { + int index = 0; // message data start position + if (GetValue(vByteArray, index, _data.mTotalTxHours )) + if (GetValue(vByteArray, index, _data.mTotalTxHoursSinceLastService )) + if (GetValue(vByteArray, index, _data.mEpochOfStartOfLastTx )) + if (GetValue(vByteArray, index, _data.mEpochOfLastRecordReset )) + if (GetValue(vByteArray, index, _data.mCrc )) + 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; } +} + +/*! + * \brief MHDUsageInfoResponse::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +MHDUsageInfoResponse::Data MHDUsageInfoResponse::data() const { + Data data; + data.mTotalTxHours = _data.mTotalTxHours .value; + data.mTotalTxHoursSinceLastService = _data.mTotalTxHoursSinceLastService.value; + data.mEpochOfStartOfLastTx = _data.mEpochOfStartOfLastTx .value; + data.mEpochOfLastRecordReset = _data.mEpochOfLastRecordReset .value; + data.mCrc = _data.mCrc .value; + return data; +} Index: sources/model/hd/data/MHDUsageInfoResponse.h =================================================================== diff -u --- sources/model/hd/data/MHDUsageInfoResponse.h (revision 0) +++ sources/model/hd/data/MHDUsageInfoResponse.h (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -0,0 +1,91 @@ +/*! + * + * Copyright (c) 2020-2023 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 MHDUsageInfoResponse.h + * \author (last) Vy Duong + * \date (last) 08-Sep-2021 + * \author (original) Vy Duong + * \date (original) 08-Sep-2021 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MHDUsageInfoResponse class + * \details The HD Usage information data model + * + * | MSG | CAN ID | Type | Ack | Src | Dst | Description | + * |:----:|:------:|:------:|:---:|:---:|:---:|:-----------: | + * |0xA000| 0x040 | 1 Hz | N | HD | UI | HD Usage information data | + * + * | Payload || + * | || + * | #1:(F32) | \ref Data::mTotalTxHours | + * | #2:(F32) | \ref Data::mTotalTxHoursSinceLastService | + * | #3:(U32) | \ref Data::mEpochOfStartOfLastTx | + * | #4:(U32) | \ref Data::mEpochOfLastRecordReset | + * | #5:(U16) | \ref Data::mCrc | + * + * \sa Data + * + *

Logging info

+ * | || + * | || + * | typeText | Datum | + * | unitText | HD | + * | infoText | HDUsageInfo | + * + */ +class MHDUsageInfoResponse : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::F32 mTotalTxHours ; + Types::F32 mTotalTxHoursSinceLastService ; + Types::U32 mEpochOfStartOfLastTx ; + Types::U32 mEpochOfLastRecordReset ; + Types::U16 mCrc ; + } _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("HDUsageInfo"); } + + struct Data { + float mTotalTxHours ; + float mTotalTxHoursSinceLastService ; + quint32 mEpochOfStartOfLastTx ; + quint32 mEpochOfLastRecordReset ; + quint16 mCrc ; + }; + + MHDUsageInfoResponse () {} + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; +} + +typedef Model::MHDUsageInfoResponse::Data HDUsageInfoResponseData; Index: sources/view/VView.h =================================================================== diff -u -r159f2bb0317c7c3c0336e4cb80c7fef3f87e329a -r6be40239ce52d641692de158a044af0a54cde1e8 --- sources/view/VView.h (.../VView.h) (revision 159f2bb0317c7c3c0336e4cb80c7fef3f87e329a) +++ sources/view/VView.h (.../VView.h) (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -120,6 +120,7 @@ REGISTER_TYPE( VBluetooth ) \ REGISTER_TYPE( VDuetRoWaterDG ) \ REGISTER_TYPE( VCloudSync ) \ + REGISTER_TYPE( VHDUsageInfo ) \ /* Alarm */ \ REGISTER_TYPE( VAlarmStatus ) \ REGISTER_TYPE( VAlarmActiveList ) \ Index: sources/view/settings/VHDUsageInfo.cpp =================================================================== diff -u --- sources/view/settings/VHDUsageInfo.cpp (revision 0) +++ sources/view/settings/VHDUsageInfo.cpp (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -0,0 +1,46 @@ +/*! + * + * Copyright (c) 2022-2023 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 VHDUsageInfo.cpp + * \author (last) Vy Duong + * \date (last) 08-Sep-2023 + * \author (original) Vy Duong + * \date (original) 08-Sep-2023 + * + */ +#include "VHDUsageInfo.h" + +// Project +#include "GuiController.h" +#include "format.h" + + +VIEW_DEF_CLASS_ADJUSTMENT(VHDUsageInfo) + +void View::VHDUsageInfo::initConnections() { + ADJUST_VIEW_CONNECTION( HDUsageInfoRequestData) + ACTION_VIEW_CONNECTION(HDUsageInfoResponseData) +} + +/*! + * \brief VHDUsageInfo::onActionReceive + * \details received response model data handler + * \param vData - model data + */ +void View::VHDUsageInfo::onActionReceive(const HDUsageInfoResponseData &vData) +{ + qDebug()<<"GOT DATA " << vData.mTotalTxHours; + totalTxHours (vData.mTotalTxHours ); + totalTxHoursSinceLastService(vData.mTotalTxHoursSinceLastService); + epochOfStartOfLastTx (vData.mEpochOfStartOfLastTx ); + epochOfLastRecordReset (vData.mEpochOfLastRecordReset ); + crc (vData.mCrc ); + + // *** 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 ); +} Index: sources/view/settings/VHDUsageInfo.h =================================================================== diff -u --- sources/view/settings/VHDUsageInfo.h (revision 0) +++ sources/view/settings/VHDUsageInfo.h (revision 6be40239ce52d641692de158a044af0a54cde1e8) @@ -0,0 +1,71 @@ +/*! + * + * Copyright (c) 2021-2023 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 VAdjustmentVersions.h + * \author (last) Behrouz NematiPour + * \date (last) 23-May-2022 + * \author (original) Behrouz NematiPour + * \date (original) 16-Apr-2021 + * + */ +#pragma once + +#include + +// Project +#include "main.h" // Doxygen : do not remove +#include "VAdjustmentResponseBase.h" +#include "MAdjustHDRequests.h" +#include "MHDUsageInfoResponse.h" + +namespace View { + +/*! + * \brief The VHDUsageInfo class + * \details View for Model's Data representation. + * + * \sa Model::MHDUsageInfoResponse + * + */ +class VHDUsageInfo : public VAdjustmentResponseBase { + Q_OBJECT + + // friends + friend class ::tst_views; + + HDUsageInfoRequestData _data; + + // disabled coco begin validated: + // The property adjustment_Triggered has to be always true + // and to always trigger the change event to work as a notifier for GUI + // has been manually tested that it works perfectly fine + TRIGGER( bool , adjustment , 0) + // disabled coco end + + //HD Usage Information + PROPERTY(float , totalTxHours , 0) + PROPERTY(float , totalTxHoursSinceLastService , 0) + PROPERTY(quint32 , epochOfStartOfLastTx , 0) + PROPERTY(quint32 , epochOfLastRecordReset , 0) + PROPERTY(quint16 , crc , 0) + + + VIEW_DEC_CLASS(VHDUsageInfo) + VIEW_DEC_SLOT (HDUsageInfoResponseData) + +// ---------- Version +public slots: + void doAdjustment() { + HDUsageInfoRequestData data; + emit didAdjustment(data); + } + +signals: + void didAdjustment(const HDUsageInfoRequestData &vData); + void didAdjustment(const HDUsageInfoResponseData &vData); +}; +}