Index: denali.pro =================================================================== diff -u -rf68b226e67eb500758ee94fe015df48931240013 -r70986eda0c1b55e62935f500014d0aa72f7262fe --- denali.pro (.../denali.pro) (revision f68b226e67eb500758ee94fe015df48931240013) +++ denali.pro (.../denali.pro) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -146,6 +146,7 @@ sources/model/hd/adjustment/settings/MAdjustHDSerialNumberResponse.h \ sources/model/dg/adjustment/settings/MAdjustDGServiceDatesResponse.h \ sources/model/hd/adjustment/settings/MAdjustHDServiceDatesResponse.h \ + sources/model/dg/adjustment/settings/MDuetRoWaterDG.h \ \ # ---------- Models - Alarm sources/model/hd/alarm/MAlarmStatusData.h \ sources/model/hd/alarm/MAlarmTriggered.h \ @@ -409,6 +410,7 @@ sources/model/hd/adjustment/settings/MAdjustHDSerialNumberResponse.cpp \ sources/model/dg/adjustment/settings/MAdjustDGServiceDatesResponse.cpp \ sources/model/hd/adjustment/settings/MAdjustHDServiceDatesResponse.cpp \ + sources/model/dg/adjustment/settings/MDuetRoWaterDG.cpp \ \ # ---------- Models - Alarm sources/model/hd/alarm/MAlarmStatusData.cpp \ sources/model/hd/alarm/MAlarmMapping.cpp \ Index: en_US.udic =================================================================== diff -u -re454ad00d5e1528b8c49f1d5f33a91f7231f1056 -r70986eda0c1b55e62935f500014d0aa72f7262fe --- en_US.udic (.../en_US.udic) (revision e454ad00d5e1528b8c49f1d5f33a91f7231f1056) +++ en_US.udic (.../en_US.udic) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -215,3 +215,4 @@ vcan Gui param +qry Index: sources/canbus/MessageDispatcher.cpp =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r70986eda0c1b55e62935f500014d0aa72f7262fe --- sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/canbus/MessageDispatcher.cpp (.../MessageDispatcher.cpp) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -784,6 +784,19 @@ onActionTransmit(GuiActionType::ID_DuetConfirmUIr, mData); } +/*! + * \brief MessageDispatcher::onAdjustment + * \details This method transmits the UI RO Water Mode adjustment request. + * \param vData - Data model contains the UI RO Water Mode adjustment request data. + * \return void + */ +void MessageDispatcher::onAdjustment(const DuetRoWaterModeUIiData &vData) +{ + QVariantList mData; + mData += vData.mStatus; + onActionTransmit(GuiActionType::ID_DuetRoWaterModeUIi, mData); +} + // ---------------------------------------------------------------------------------------------------- /*! Index: sources/canbus/MessageGlobals.h =================================================================== diff -u -r53b262fea2d4b5bd78ff878fda0848f3737e7b74 -r70986eda0c1b55e62935f500014d0aa72f7262fe --- sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 53b262fea2d4b5bd78ff878fda0848f3737e7b74) +++ sources/canbus/MessageGlobals.h (.../MessageGlobals.h) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -247,6 +247,10 @@ {Gui::GuiActionType::ID_AdjustDisinfectModeRsp , 2 * 4 }, // 2 parameters each 4bytes {Gui::GuiActionType::ID_AdjustDisinfectStartReq , 1 * 4 }, // 1 parameter 4bytes {Gui::GuiActionType::ID_AdjustDisinfectStartRsp , 2 * 4 }, // 2 parameters each 4bytes + // ---- RO Water + {Gui::GuiActionType::ID_DuetRoWaterStatDGq , 0 * 4 }, // 0 parameter each 4bytes + {Gui::GuiActionType::ID_DuetRoWaterModeUIi , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_DuetRoWaterModeDGr , 2 * 4 }, // 2 parameters each 4bytes // ---- {Gui::GuiActionType::ID_CANBusFaultCount , 1 }, {Gui::GuiActionType::ID_RawData , 255 }, Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -ra6586ea871f21a08e7d50552983360fb5e344b3a -r70986eda0c1b55e62935f500014d0aa72f7262fe --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision a6586ea871f21a08e7d50552983360fb5e344b3a) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -224,6 +224,9 @@ break; // Generic Confirm case Gui::GuiActionType::ID_DuetConfirmUIr : INTERPRET_TRANSMIT_MESSAGE(DuetConfirmUIrData ); break; + // RO Water + case Gui::GuiActionType::ID_DuetRoWaterModeUIi : INTERPRET_TRANSMIT_MESSAGE(DuetRoWaterModeUIiData ); break; + // Power Off case Gui::GuiActionType::ID_PowerOff : INTERPRET_TRANSMIT_MESSAGE(AdjustPowerOffRequestData ); break; // POST case Gui::GuiActionType::ID_UIPostFinalResultData : INTERPRET_TRANSMIT_MESSAGE(AdjustUIPostFinalResultRequestData ); break; @@ -567,7 +570,9 @@ case Gui::GuiActionType::ID_AdjustSerialDGRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSerialDGRsp ); break; case Gui::GuiActionType::ID_AdjustServiceDatesDGRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceDatesDGRsp ); break; case Gui::GuiActionType::ID_AdjustDGDateTimeRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDGDateTimeRsp ); break; - + // RO Water + case Gui::GuiActionType::ID_DuetRoWaterStatDGq : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DuetRoWaterStatDGq ); break; + case Gui::GuiActionType::ID_DuetRoWaterModeDGr : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DuetRoWaterModeDGr ); break; // unhandled 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 -r53b262fea2d4b5bd78ff878fda0848f3737e7b74 -r70986eda0c1b55e62935f500014d0aa72f7262fe --- sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 53b262fea2d4b5bd78ff878fda0848f3737e7b74) +++ sources/gui/GuiGlobals.h (.../GuiGlobals.h) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -270,6 +270,12 @@ ID_AdjustDisinfectModeRsp = 0x9B00, // 155 ID_AdjustDisinfectStartReq = 0x7F00, // 127 ID_AdjustDisinfectStartRsp = 0x8000, // 128 + + // RO Water Input Mode + ID_DuetRoWaterStatDGq = 0xC300, // 195 DG -> UI // DG initiates Status query + ID_DuetRoWaterModeUIi = 0xBC00, // 188 UI -> DG // UI initiates Mode Set || responses to status query + ID_DuetRoWaterModeDGr = 0xC400, // 196 UI <- DG // DG responses Mode Set + }; enum class GuiActionsData_Enum /*: quint8 QML does not support*/ { Index: sources/gui/qml/pages/UserConfirmation.qml =================================================================== diff -u -r4eecbe25c905517c495c69ad9524ffdc7ffe181a -r70986eda0c1b55e62935f500014d0aa72f7262fe --- sources/gui/qml/pages/UserConfirmation.qml (.../UserConfirmation.qml) (revision 4eecbe25c905517c495c69ad9524ffdc7ffe181a) +++ sources/gui/qml/pages/UserConfirmation.qml (.../UserConfirmation.qml) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -48,6 +48,7 @@ clip : true visible : _root.isPassword textInput .width : 450 + nextInput : _passwordReEntry anchors { top : parent.top topMargin : { Index: sources/model/MModel.h =================================================================== diff -u -rc9f8f8cf3c6c37fc6460d8675c62c9442c4d4263 -r70986eda0c1b55e62935f500014d0aa72f7262fe --- sources/model/MModel.h (.../MModel.h) (revision c9f8f8cf3c6c37fc6460d8675c62c9442c4d4263) +++ sources/model/MModel.h (.../MModel.h) (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -83,6 +83,7 @@ #include "MAdjustDGServiceDatesResponse.h" #include "MAdjustHDDateTimeResponse.h" #include "MAdjustDGDateTimeResponse.h" +#include "MDuetRoWaterDG.h" // DG Data Messages #include "MDGDrainPumpData.h" @@ -264,6 +265,10 @@ /* CONFIRM */ \ REGISTER_METATYPE( DuetConfirmHDiData ) \ REGISTER_METATYPE( DuetConfirmUIrData ) \ + /* RO Water Mode */ \ + REGISTER_METATYPE( DuetRoWaterStatDGqData ) \ + REGISTER_METATYPE( DuetRoWaterModeUIiData ) \ + REGISTER_METATYPE( DuetRoWaterModeDGrData ) \ /* POST */ \ REGISTER_METATYPE( HDPostSingleResultData ) \ REGISTER_METATYPE( HDPostFinalResultData ) \ @@ -450,6 +455,9 @@ \ /* CONFIRM */ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DuetConfirmHDiData ) \ + /* RO Water Mode */ \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DuetRoWaterStatDGqData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DuetRoWaterModeDGrData ) \ /* POST */ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDPostSingleResultData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDPostFinalResultData ) \ @@ -490,7 +498,7 @@ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmClearedData ) \ /* disabled coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmClearedConditionData ) \ - disabled coco end */ \ + disabled coco end */ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGROPumpData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGPressuresData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGDrainPumpData ) \ @@ -560,6 +568,8 @@ #define ADJUST_TRANSMT_MODEL_BRIDGE_CONNECTIONS(vSOURCE) \ /* CONFIRM */ \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, DuetConfirmUIrData ) \ + /* RO Water Mode */ \ + ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, DuetRoWaterModeUIiData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustUIPostFinalResultRequestData ) \ \ @@ -629,6 +639,9 @@ #define ACTION_RECEIVE_MODEL_BRIDGE_DEFINITIONS \ /* CONFIRM */ \ ACTION_RECEIVE_BRIDGE_DEFINITION( DuetConfirmHDiData ) \ + /* RO Water Mode */ \ + ACTION_RECEIVE_BRIDGE_DEFINITION( DuetRoWaterStatDGqData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( DuetRoWaterModeDGrData ) \ /* POST */ \ ACTION_RECEIVE_BRIDGE_DEFINITION( HDPostSingleResultData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( HDPostFinalResultData ) \ @@ -670,7 +683,7 @@ ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmClearedData ) \ /* disabled coco begin validated: Manually tested. This model class is a placeholder and there is no use case for this now. ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmClearedConditionData ) \ - disabled coco end */ \ + disabled coco end */ \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGROPumpData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGPressuresData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGDrainPumpData ) \ @@ -740,6 +753,8 @@ /* Request --------------------------------------------------------- */ \ /* CONFIRM */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION( DuetConfirmUIrData ) \ + /* RO Water Mode */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION( DuetRoWaterModeUIiData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustUIPostFinalResultRequestData ) \ /* Post-Treatment */ \ @@ -793,6 +808,8 @@ /* Request ----------------------- NoEmit -------------------------- */ \ /* CONFIRM */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( DuetConfirmUIrData ) \ + /* RO Water Mode */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( DuetRoWaterModeUIiData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustUIPostFinalResultRequestData ) \ /* Post-Treatment */ \ @@ -846,6 +863,8 @@ /* Request ----------------------- public -------------------------- */ \ /* CONFIRM */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( DuetConfirmUIrData ) \ + /* RO Water Mode */ \ + ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( DuetRoWaterModeUIiData ) \ /* POST */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustUIPostFinalResultRequestData ) \ /* Post-Treatment */ \ @@ -899,6 +918,9 @@ #define ACTION_RECEIVE_SIGNALS \ /* CONFIRM */ \ ACTION_RECEIVE_SIGNAL( DuetConfirmHDiData ) \ + /* RO Water Mode */ \ + ACTION_RECEIVE_SIGNAL( DuetRoWaterStatDGqData ) \ + ACTION_RECEIVE_SIGNAL( DuetRoWaterModeDGrData ) \ /* POST */ \ ACTION_RECEIVE_SIGNAL( HDPostSingleResultData ) \ ACTION_RECEIVE_SIGNAL( HDPostFinalResultData ) \ Index: sources/model/dg/adjustment/settings/MDuetRoWaterDG.cpp =================================================================== diff -u --- sources/model/dg/adjustment/settings/MDuetRoWaterDG.cpp (revision 0) +++ sources/model/dg/adjustment/settings/MDuetRoWaterDG.cpp (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -0,0 +1,64 @@ +/*! + * + * 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 MDuetRoWaterDG.cpp + * \author (last) Behrouz NematiPour + * \date (last) 22-Sep-2022 + * \author (original) Behrouz NematiPour + * \date (original) 22-Sep-2022 + * + */ +#include "MDuetRoWaterDG.h" + +using namespace Model; + + +QVariantList Model::MDuetRoWaterStatDGq::parameters() const { + return {}; +} + +bool Model::MDuetRoWaterStatDGq::fromByteArray(const QByteArray &, int *) { + return true ; +} + +/*! + * \brief MDuetRoWaterStatDGq::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +DuetRoWaterStatDGqData Model::MDuetRoWaterStatDGq::data() const { + Data data; + return data; +} + +QVariantList Model::MDuetRoWaterModeDGr::parameters() const { + return { + _data.mAccepted.value, + _data.mReason .value, + }; +} + +bool Model::MDuetRoWaterModeDGr::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 )) + return true ; + else { if(vIndex) *vIndex = index; return false; } + else { if(vIndex) *vIndex = index; return false; } +} + +/*! + * \brief MDuetRoWaterModeDGr::data + * \details Provides model's Data from the received messages data values + * \return Data + */ +DuetRoWaterModeDGrData Model::MDuetRoWaterModeDGr::data() const { + Data data; + data.mAccepted = _data.mAccepted.value; + data.mReason = _data.mReason .value; + return data; +} Index: sources/model/dg/adjustment/settings/MDuetRoWaterDG.h =================================================================== diff -u --- sources/model/dg/adjustment/settings/MDuetRoWaterDG.h (revision 0) +++ sources/model/dg/adjustment/settings/MDuetRoWaterDG.h (revision 70986eda0c1b55e62935f500014d0aa72f7262fe) @@ -0,0 +1,165 @@ +/*! + * + * 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 MDuetRoWaterDDG.h + * \author (last) Behrouz NematiPour + * \date (last) 22-Sep-2022 + * \author (original) Behrouz NematiPour + * \date (original) 22-Sep-2022 + * + */ +#pragma once + +// Qt +#include + +// Project +#include "MAdjustRequestsBase.h" +#include "MAbstract.h" +#include "types.h" + +// forward declarations +class tst_models; + +namespace Model { + +/*! + * \brief The MDuetRoWaterStatDGq class + * \details The DG RO Water Mode Status Query model + * + * | MSG | CAN ID | Type | Ack | Src | Dest | Description | + * |:----:|:------:|:----:|:---:|:---:|:----:|:-----------:| + * |0xC300| 0x070 | Qry | Y | DG | UI | RO Water Mode | + * + * | Payload || + * | || + * + * \sa Data + * + *

Logging info

+ * | || + * | || + * | typeText | Event | + * | unitText | DG | + * | infoText | QueryRoWater | + * + */ +class MDuetRoWaterStatDGq : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + } _data; + +public: + Type_Enum typeText () const override { return Type_Enum::eEvent ; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("QueryRoWater") ; } + + struct Data { + }; + + MDuetRoWaterStatDGq () { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; + +/*! + * \brief The MDuetRoWaterModeDGr class + * \details The DG RO Water Mode Response model + * + * | MSG | CAN ID | Type | Ack | Src | Dest | Description | + * |:----:|:------:|:----:|:---:|:---:|:----:|:-----------:| + * |0xC400| 0x070 | Res | Y | DG | UI | RO Water Mode | + * + * | Payload || + * | || + * | #1:(U32) | \ref Data::mAccepted | + * | #2:(U32) | \ref Data::mReason | + * + * \sa Data + * + *

Logging info

+ * | || + * | || + * | typeText | Event | + * | unitText | DG | + * | infoText | AdjustRoWater | + * + */ +class MDuetRoWaterModeDGr : public MAbstract { + + // friends + friend class ::tst_models; + + QVariantList parameters() const override; + + struct { + Types::U32 mAccepted; + Types::U32 mReason ; + } _data; + +public: + Type_Enum typeText () const override { return Type_Enum::eEvent ; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("AdjustRoWater") ; } + + struct Data { + bool mAccepted = 0; /*!< Accepted value of type quint32 extracted out */ + quint32 mReason = 0; /*!< Reason value of type quint32 extracted out */ + }; + + MDuetRoWaterModeDGr () { } + + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; +}; + +/*! + * Simple request models + * These are models to send the request for the doAdjustment + * The the only reason thy have been defined to help overloading the adjustment methods + * Otherwise the parameters are so tiny models. + */ + +/*! + * \brief The MAdjustDGDateTime class + * \details The model to request starting a treatment + * + * | MSG | CAN ID | Type | Ack | Src | Dest | Description | + * |:----:|:------:|:----:|:---:|:---:|:----:|:-----------:| + * | 0xBC | 0x110 | Init | Y | UI | DG | Set RO Water Mode | + * + * | Payload || + * | || + * | #1:(U32) | \ref mStatus | + * + */ +class MDuetRoWaterModeUIi : public MModel { +public: + quint32 mStatus; + + QString toString() { + return toString({mStatus}); + } + + static QString toString(const QVariantList &vParameters) { + return MModel::toString("AdjustRoWater", vParameters); + } + + static Can::Can_Id canid () { return Can::Can_Id::eChlid_UI_DG; } +}; + +} + +typedef Model::MDuetRoWaterModeUIi DuetRoWaterModeUIiData; +typedef Model::MDuetRoWaterStatDGq::Data DuetRoWaterStatDGqData; +typedef Model::MDuetRoWaterModeDGr::Data DuetRoWaterModeDGrData;