/*! * * 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 MModel.h * \date 3/4/2020 * \author Behrouz NematiPour * */ #pragma once #include "main.h" // models #include "MPowerOff.h" #include "MAlarmStatusData.h" #include "MAlarmTriggered.h" #include "MAlarmCleared.h" #include "MTreatmentTimeData.h" #include "MTreatmentFlowsData.h" #include "MTreatmentOutletFlowData.h" #include "MTreatmentPressureOcclusionData.h" #include "MTreatmentRangesData.h" #include "MTreatmentStatesData.h" #include "MTreatmentSalineData.h" #include "MDGDrainPumpData.h" #include "MDGHeatersData.h" #include "MDGLoadCellReadingsData.h" #include "MDGOperationModeData.h" #include "MDGPressuresData.h" #include "MDGReservoirData.h" #include "MDGROPumpData.h" #include "MDGTemperaturesData.h" #include "MDGValvesStatesData.h" #include "MHDDebugText.h" #include "MDGDebugText.h" #include "MHDOperationModeData.h" #include "MTreatmentAdjustRequests.h" #include "MTreatmentAdjustDurationResponse.h" #include "MTreatmentAdjustBloodDialysateResponse.h" #include "MTreatmentAdjustUltrafiltrationStateResponse.h" #include "MTreatmentAdjustUltrafiltrationEditResponse.h" #include "MTreatmentAdjustUltrafiltrationConfirmResponse.h" #include "MTreatmentAdjustSalineResponse.h" /*! * \page MessageFlow Message interpretation Flow * \dot * digraph callgraph { * node [shape=ellipse, fontname=Arial, fontsize=11]; * user [shape=box ]; * QML [URL="\ref application/sources/gui" ]; * GuiView [URL="\ref Gui::GuiView" ]; * View [URL="\ref application/sources/view" ]; * GuiController [URL="\ref Gui::GuiController" ]; * ApplicationController [URL="\ref ApplicationController" ]; * FrameInterface [URL="\ref Can::FrameInterface" ]; * CanInterface [URL="\ref Can::CanInterface" ]; * CANBus [shape=box ]; * subgraph MessageDispatcher { * node [shape=ellipse, fontname=Arial, fontsize=11, URL="\ref Can::MessageDispatcher"]; * label = "Message_Dispatcher"; * MessageAcknow [URL="\ref Can::MessageAcknowModel" ]; * MessageInterpreter [URL="\ref Can::MessageInterpreter" ]; * MessageBuilder [URL="\ref Can::MessageBuilder" ]; * MessageDispatcher -> MessageInterpreter [dir="both" ]; * MessageDispatcher -> MessageAcknow [dir="both" ]; * MessageInterpreter -> MessageBuilder [dir="both" ]; * } * user -> QML [dir="both" ]; * QML -> { GuiView, } [dir="both" ]; * { GuiView, } -> GuiController [dir="both" ]; * GuiController -> ApplicationController [dir="both" ]; * ApplicationController -> MessageDispatcher [dir="both" ]; * MessageDispatcher -> FrameInterface [dir="both" ]; * FrameInterface -> CanInterface [dir="both" ]; * CanInterface -> CANBus [dir="both" ]; * } * * * \enddot * * \note * 00 - sort .pro file after all new files added. * * \details * This comment explains how to add a Denali Message in Denali UI Application * * Model : * * 01 - Look at the message structure in the "message list.xlsx" and in GuiGlobals.h define enum ID_ * Add an enum for the message in the guiglobals.h : GuiActionsType_Enum * and assign a correct message value to it. * Note that it needs to be in little endian so if you have a message Id of 37 your enum should have a value of 0x2500 in hex. * \code{.cpp} * ID_HDOperationModeData = 0x2500, // 37 // little endian * \endcode * * 02 - MessageGlobals.h : add len * \code{.cpp} * {Gui::GuiActionType::ID_HDOperationModeData , 1 * 4 }, // 1 parameter each 4bytes * \endcode * * 03 - Implement the model by copy/paste of the closest model, fit to your need. * \sa MHDOperationMode * \sa MHDOperationModeData.h * \sa MHDOperationModeData.cpp * * 04 - Added #include in MModel.h for the implemented model * \code{.cpp} * #include "MHDOperationModeData.h" * \endcode * * 05 - Register the model in MModel.h by adding it to the macro lists : * - \ref REGISTER_MODEL_METATYPES * - \ref ACTION_RECEIVE_MODEL_BRIDGE_CONNECTIONS * - \ref ACTION_RECEIVE_MODEL_BRIDGE_DEFINITIONS * - \ref ACTION_RECEIVE_SIGNALS * * 06 - In the MessageInterpreter add a line of handler in interpretMessage_ method * and put the enum and model. * \sa MessageInterpreter::interpretMessage_HD * \sa MessageInterpreter::interpretMessage_DG * \sa MessageInterpreter.cpp * * View : * 07 - Implement the view by copy/paste of the closest view, fit to your need. * \sa VHDOperationMode * \sa VHDOperationModeData.h * \sa VHDOperationModeData.cpp * * 08 - Register the view in VView.h in macro list * \sa REGISTER_VIEW_TYPES * \sa VView.h * * 09 - Include the view header in the GuiGlobals.cpp * \code{.cpp} * #include "VHDOperationModeData.h" * \endcode * \sa GuiGlobals.cpp * * QML : * 10 - Import the registered view * \code{.js} * import VHDOperationMode 0.1; * \endcode * \sa main.qml * * 11 - Create an object * \code{.js} * VHDOperationMode { id: vHDOperationMode } * \endcode * \sa main.qml * * 12 - Use it. */ //--------------------------------------------------------------------------------// //-------- Please add the model type to the lists below to register them ---------// //--------------------------------------------------------------------------------// /*! \def REGISTER_MODEL_METATYPES \details Registers the models in the Qt MetaType so it can be used in signal/slots between threads. */ #define REGISTER_MODEL_METATYPES \ \ REGISTER_METATYPE( BloodFlowData ) \ REGISTER_METATYPE( DialysateFlowData ) \ REGISTER_METATYPE( OutletFlowData ) \ REGISTER_METATYPE( TreatmentTimeData ) \ REGISTER_METATYPE( PressureOcclusionData ) \ REGISTER_METATYPE( AlarmStatusData ) \ REGISTER_METATYPE( AlarmStatusFlag ) \ REGISTER_METATYPE( PowerOffData ) \ REGISTER_METATYPE( TreatmentRangesData ) \ REGISTER_METATYPE( AlarmTriggeredData ) \ REGISTER_METATYPE( AlarmClearedData ) \ REGISTER_METATYPE( TreatmentStatesData ) \ REGISTER_METATYPE( TreatmentSalineData ) \ REGISTER_METATYPE( HDOperationModeData ) \ \ REGISTER_METATYPE( DGROPumpData ) \ REGISTER_METATYPE( DGPressuresData ) \ REGISTER_METATYPE( DGDrainPumpData ) \ REGISTER_METATYPE( DGOperationModeData ) \ REGISTER_METATYPE( DGReservoirData ) \ REGISTER_METATYPE( DGValvesStatesData ) \ REGISTER_METATYPE( DGHeatersData ) \ REGISTER_METATYPE( DGLoadCellReadingsData ) \ REGISTER_METATYPE( DGTemperaturesData ) \ \ REGISTER_METATYPE( HDDebugTextData ) \ REGISTER_METATYPE( DGDebugTextData ) \ /* Request */ \ REGISTER_METATYPE( AdjustBloodDialysateRequestData ) \ REGISTER_METATYPE( AdjustDurationRequestData ) \ REGISTER_METATYPE( AdjustUltrafiltrationStateRequestData ) \ REGISTER_METATYPE( AdjustUltrafiltrationEditRequestData ) \ REGISTER_METATYPE( AdjustUltrafiltrationConfirmRequestData ) \ REGISTER_METATYPE( AdjustSalineRequestData ) \ /* Response */ \ REGISTER_METATYPE( AdjustBloodDialysateResponseData ) \ REGISTER_METATYPE( AdjustDurationResponseData ) \ REGISTER_METATYPE( AdjustUltrafiltrationStateResponseData ) \ REGISTER_METATYPE( AdjustUltrafiltrationEditResponseData ) \ REGISTER_METATYPE( AdjustUltrafiltrationConfirmResponseData ) \ REGISTER_METATYPE( AdjustSalineResponseData ) \ //===============================================================================// #define ACTION_RECEIVE_MODEL_BRIDGE_CONNECTIONS(vSOURCE) \ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, BloodFlowData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DialysateFlowData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, OutletFlowData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentTimeData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PressureOcclusionData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmStatusData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PowerOffData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentRangesData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmTriggeredData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AlarmClearedData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TreatmentSalineData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDOperationModeData ) \ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGROPumpData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGPressuresData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGDrainPumpData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGOperationModeData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGReservoirData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGValvesStatesData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGHeatersData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGLoadCellReadingsData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGTemperaturesData ) \ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, HDDebugTextData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, DGDebugTextData ) \ /* Response */ \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationStateResponseData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustBloodDialysateResponseData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustDurationResponseData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationEditResponseData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationConfirmResponseData ) \ ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, AdjustSalineResponseData ) \ // /* Request */ ---------------------------------------------------------// #define ADJUST_TRANSMT_MODEL_BRIDGE_CONNECTIONS(vSOURCE) \ \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustBloodDialysateRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustDurationRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationStateRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationEditRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustUltrafiltrationConfirmRequestData ) \ ADJUST_TRANSMT_BRIDGE_CONNECTION(vSOURCE, AdjustSalineRequestData ) \ //===============================================================================// #define ACTION_RECEIVE_MODEL_BRIDGE_DEFINITIONS \ \ ACTION_RECEIVE_BRIDGE_DEFINITION( BloodFlowData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DialysateFlowData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( OutletFlowData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentTimeData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( PressureOcclusionData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmStatusData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( PowerOffData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentRangesData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmTriggeredData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AlarmClearedData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentStatesData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( TreatmentSalineData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( HDOperationModeData ) \ \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGROPumpData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGPressuresData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGDrainPumpData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGOperationModeData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGReservoirData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGValvesStatesData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGHeatersData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGLoadCellReadingsData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGTemperaturesData ) \ \ ACTION_RECEIVE_BRIDGE_DEFINITION( HDDebugTextData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( DGDebugTextData ) \ /* Response */ \ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustUltrafiltrationStateResponseData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustBloodDialysateResponseData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustDurationResponseData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustUltrafiltrationEditResponseData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustUltrafiltrationConfirmResponseData ) \ ACTION_RECEIVE_BRIDGE_DEFINITION( AdjustSalineResponseData ) \ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS \ /* Request --------------------------------------------------------- */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustBloodDialysateRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustDurationRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustUltrafiltrationStateRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustUltrafiltrationEditRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustUltrafiltrationConfirmRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION( AdjustSalineRequestData ) \ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_NOEMIT \ /* Request ----------------------- NoEmit -------------------------- */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustBloodDialysateRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustDurationRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustUltrafiltrationStateRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustUltrafiltrationEditRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustUltrafiltrationConfirmRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_NOEMIT( AdjustSalineRequestData ) \ #define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_PUBLIC \ /* Request ----------------------- public -------------------------- */ \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustBloodDialysateRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustDurationRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustUltrafiltrationStateRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustUltrafiltrationEditRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustUltrafiltrationConfirmRequestData ) \ ADJUST_TRANSMT_BRIDGE_DEFINITION_PUBLIC( AdjustSalineRequestData ) //===============================================================================// #define ACTION_RECEIVE_SIGNALS \ /* Received signals */ \ ACTION_RECEIVE_SIGNAL( BloodFlowData ) \ ACTION_RECEIVE_SIGNAL( DialysateFlowData ) \ ACTION_RECEIVE_SIGNAL( OutletFlowData ) \ ACTION_RECEIVE_SIGNAL( TreatmentTimeData ) \ ACTION_RECEIVE_SIGNAL( PressureOcclusionData ) \ ACTION_RECEIVE_SIGNAL( AlarmStatusData ) \ ACTION_RECEIVE_SIGNAL( PowerOffData ) \ ACTION_RECEIVE_SIGNAL( TreatmentRangesData ) \ ACTION_RECEIVE_SIGNAL( AlarmTriggeredData ) \ ACTION_RECEIVE_SIGNAL( AlarmClearedData ) \ ACTION_RECEIVE_SIGNAL( TreatmentStatesData ) \ ACTION_RECEIVE_SIGNAL( TreatmentSalineData ) \ ACTION_RECEIVE_SIGNAL( HDOperationModeData ) \ \ ACTION_RECEIVE_SIGNAL( DGROPumpData ) \ ACTION_RECEIVE_SIGNAL( DGPressuresData ) \ ACTION_RECEIVE_SIGNAL( DGDrainPumpData ) \ ACTION_RECEIVE_SIGNAL( DGOperationModeData ) \ ACTION_RECEIVE_SIGNAL( DGReservoirData ) \ ACTION_RECEIVE_SIGNAL( DGValvesStatesData ) \ ACTION_RECEIVE_SIGNAL( DGHeatersData ) \ ACTION_RECEIVE_SIGNAL( DGLoadCellReadingsData ) \ ACTION_RECEIVE_SIGNAL( DGTemperaturesData ) \ \ ACTION_RECEIVE_SIGNAL( HDDebugTextData ) \ ACTION_RECEIVE_SIGNAL( DGDebugTextData ) \ /* Response */ \ ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationStateResponseData ) \ ACTION_RECEIVE_SIGNAL( AdjustBloodDialysateResponseData ) \ ACTION_RECEIVE_SIGNAL( AdjustDurationResponseData ) \ ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationEditResponseData ) \ ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationConfirmResponseData ) \ ACTION_RECEIVE_SIGNAL( AdjustSalineResponseData ) //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------//