Index: sources/model/mmodel.h =================================================================== diff -u -r595ed1fbe8066960afd4c8fea168208e81b173d9 -rc71deaab48699cffdf9db816dfac2778d79c2238 --- sources/model/mmodel.h (.../mmodel.h) (revision 595ed1fbe8066960afd4c8fea168208e81b173d9) +++ sources/model/mmodel.h (.../mmodel.h) (revision c71deaab48699cffdf9db816dfac2778d79c2238) @@ -1,69 +1,243 @@ /*! - * + * * 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 models.h - * date 3/4/2020 - * author Behrouz NematiPour - * + * \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 + * \author (last) Behrouz NemaiPour + * \date (last) 12-Jun-2020 + * \author (original) Behrouz NematiPour + * \date (original) 10-Mar-2020 + * */ #pragma once #include "main.h" // models #include "malarmstatus.h" +#include "mpoweroff.h" + #include "mtreatmenttime.h" #include "mtreatmentflows.h" #include "mtreatmentoutletflow.h" -#include "mpoweroff.h" +#include "mtreatmentpressureocclusion.h" +#include "mtreatmentranges.h" +#include "mloadcellreadings.h" +#include "mtemperaturesensors.h" + +#include "mtreatmentadjustblooddialysateresponse.h" +#include "mtreatmentadjustdurationresponse.h" +#include "mtreatmentadjustultrafiltrationstateresponse.h" +#include "mtreatmentadjustultrafiltrationeditresponse.h" +#include "mtreatmentadjustultrafiltrationconfirmresponse.h" +#include "mtreatmentadjustrequests.h" +#include "mtreatmentparameters.h" +#include "mtreatmentparametersresp.h" + +/*! + * \brief Message interpretation instruction + * \details This comment explains how to add a Denali Message in Denali UI Application + * + * 1 - Look at the message structure in the "message list.xlsx" + * + * 2 - MSG ID : + * Add an enum for the message in the guiglobals.h : GuiActionsType_Enum + * and assign a correct message value to it. + * example : MSG ID = 9 => + * \code{.cpp} + * PressureOcclusion = 0x0900, //(little endian) + * \endcode + * + * 3 - MSG Payload Len : + * Add a line in the "messageglobals.h" in paloadLen hash table + * to define the required payload length of the message + * + * 4 - Model Implementation : + * Implement a model like MPressureOcclusion by copy/paste the closest model .h/.cpp file + * and adding it to project and modify to fit the new model. + * + * 5 - Register Model : + * Add the required lines like the other models in the mmodel.h file. + * + * 6 - Populate/Interpret Model Data : + * Copy/Paste one of the other implementations of the Messages setter/getter. + * example : be careful about the type. + * in the header should be like: + * \code{.cpp} + * bool getPressureOcclusionData (const Message &vMessage, Model::MPressureOcclusion &vData) __attribute_warn_unused_result__; + * bool pressureOcclusionData (const Message &vMessage, QVariantList &vData) __attribute_warn_unused_result__; + * \endcode + * in the implementation should be like: + * \code{.cpp} + * bool MessageInterpreter::getPressureOcclusionData(const Message &vMessage, Model::MPressureOcclusion &vData) + * { + * if ( vMessage.actionId != Gui::GuiActionType::PressureOcclusion ) { + * return false; + * } + * + * if ( vMessage.data.length() < payloadLen[Gui::GuiActionType::PressureOcclusion] ) { + * QString mActionIdHexString = Format::toHexString(vMessage.actionId); + * LOG_ERROR(tr("Incorrect data for Message ID (HD) '%1'").arg(mActionIdHexString)); + * return false; + * } + * + * vData.fromByteArray(vMessage.data); + * + * return true; + * } + * + * bool MessageInterpreter::pressureOcclusionData(const Message &vMessage, QVariantList &vData) + * { + * bool ok; + * Model::MPressureOcclusion mData; + * ok = getPressureOcclusionData(vMessage, mData); + * LOG_DATUM(mData.toString()); + * + * if (ok) { + * mData.toVariantList(vData); + * emit didActionReceive(mData.data()); + * } + * return ok; + * } + * \endcode + * + * Add a case in MessageInterpreter::interpretMessage_HD for that message id Enum + * with lines like : + * \code{.cpp} + * case Gui::GuiActionType::PressureOcclusion: + * ok = pressureOcclusionData (vMessage, vData); + * break; + * \endcode + * + */ + +/*! + * Simple request models + * These are models to send the request for the doAdjustmet + * The the only reason thy have been defined to help overloadding the adjusmtent methods + * Otherwise the parameters are so tiny models. + */ + //--------------------------------------------------------------------------------// //-------- Please add the model type to the lists below to register them ---------// //--------------------------------------------------------------------------------// -#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, AlarmStatusData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, PowerOffData ) +#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( LoadCellReadingsData ) \ + REGISTER_METATYPE( TemperatureSensorsData ) \ + \ + REGISTER_METATYPE( AdjustBloodDialysateRequestData ) \ + REGISTER_METATYPE( AdjustDurationRequestData ) \ + REGISTER_METATYPE( AdjustUltrafiltrationStateRequestData ) \ + REGISTER_METATYPE( AdjustUltrafiltrationEditRequestData ) \ + REGISTER_METATYPE( AdjustUltrafiltrationConfirmRequestData ) \ + \ + REGISTER_METATYPE( AdjustBloodDialysateResponseData ) \ + REGISTER_METATYPE( AdjustDurationResponseData ) \ + REGISTER_METATYPE( AdjustUltrafiltrationStateResponseData ) \ + REGISTER_METATYPE( AdjustUltrafiltrationEditResponseData ) \ + REGISTER_METATYPE( AdjustUltrafiltrationConfirmResponseData ) \ + REGISTER_METATYPE( TreatmentData ) + +//===============================================================================// +#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, LoadCellReadingsData ) \ + ACTION_RECEIVE_BRIDGE_CONNECTION(vSOURCE, TemperatureSensorsData ) \ + \ + 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 ) //--------------------------------------------------------------------------------// -#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( AlarmStatusData ) \ - ACTION_RECEIVE_BRIDGE_DEFINITION( PowerOffData ) +#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 ) +//===============================================================================// +#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( LoadCellReadingsData ) \ + ACTION_RECEIVE_BRIDGE_DEFINITION( TemperatureSensorsData ) \ + \ + 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( TreatmentParametersRespData ) //--------------------------------------------------------------------------------// -#define REGISTER_MODEL_METATYPES \ - REGISTER_METATYPE( BloodFlowData ) \ - REGISTER_METATYPE( DialysateFlowData ) \ - REGISTER_METATYPE( OutletFlowData ) \ - REGISTER_METATYPE( TreatmentTimeData ) \ - REGISTER_METATYPE( AlarmStatusData ) \ - REGISTER_METATYPE( AlarmStatusFlag ) \ - REGISTER_METATYPE( PowerOffData ) +#define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS \ + 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 ) //--------------------------------------------------------------------------------// -#define ACTION_RECEIVE_INTERPRETER_CONNECTIONS \ - ACTION_RECEIVE_BRIDGE_CONNECTION(_interpreter, BloodFlowData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(_interpreter, DialysateFlowData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(_interpreter, OutletFlowData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(_interpreter, TreatmentTimeData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(_interpreter, AlarmStatusData ) \ - ACTION_RECEIVE_BRIDGE_CONNECTION(_interpreter, PowerOffData ) +#define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_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 ) //--------------------------------------------------------------------------------// -#define ACTION_RECEIVE_SIGNALS \ - ACTION_RECEIVE_SIGNAL( BloodFlowData ) \ - ACTION_RECEIVE_SIGNAL( DialysateFlowData ) \ - ACTION_RECEIVE_SIGNAL( OutletFlowData ) \ - ACTION_RECEIVE_SIGNAL( TreatmentTimeData ) \ - ACTION_RECEIVE_SIGNAL( AlarmStatusData ) \ - ACTION_RECEIVE_SIGNAL( PowerOffData ) +#define ADJUST_TRANSMT_MODEL_BRIDGE_DEFINITIONS_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 ) +//===============================================================================// +#define ACTION_RECEIVE_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( LoadCellReadingsData ) \ + ACTION_RECEIVE_SIGNAL( TemperatureSensorsData ) \ + \ + ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationStateResponseData ) \ + ACTION_RECEIVE_SIGNAL( AdjustBloodDialysateResponseData ) \ + ACTION_RECEIVE_SIGNAL( AdjustDurationResponseData ) \ + ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationEditResponseData ) \ + ACTION_RECEIVE_SIGNAL( AdjustUltrafiltrationConfirmResponseData ) \ + ACTION_RECEIVE_SIGNAL( TreatmentParametersRespData ) //--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------//