/*! * * 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 MTreatmentFlowsData.h * \date 3/9/2020 * \author Behrouz NematiPour * */ #pragma once // Qt #include // Project #include "MAbstract.h" #include "types.h" // forward declarations class tst_models; namespace Model { /*! * \brief The MFlow class * \details The parent class of the flow data models */ class MFlow : public MAbstract { QVariantList parameters() const override; protected: struct Data { Types::S32 mFlowSetPoint ; ///< Flow Set Point Types::F32 mMeasuredFlow ; ///< Measured Flow Types::F32 mRotorSpeed ; ///< Rotor Speed Types::F32 mMotorSpeed ; ///< Motor Speed Types::F32 mMotorCtlSpeed ; ///< Motor Controller Speed Types::F32 mMotorCtlCurrent ; ///< Motor Controller Current Types::F32 mPWMDutyCycle ; ///< PWM Duty Cycle in % } _data; public: Type_Enum typeText () const override { return Type_Enum::eDatum; } Unit_Enum unitText () const override { return Unit_Enum::eHD ; } MFlow () { } bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; }; /*! * \brief The MBloodFlow class * \details The blood flow data model * * | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(S32) | #2:(F32) | #3:(F32) | #4:(F32) | #5:(F32) | #6:(F32) | #7:(F32) | * |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: |:--: |:--: | * |0x0500| 0x040 | 7 | 1 Hz | N | HD | All | Blood Flow Data | mFlowSetPoint | mMeasuredFlow | mRotorSpeed | mMotorSpeed | mMotorCtlSpeed | mMotorCtlCurrent | mPWMDutyCycle | * * \sa Data * */ class MBloodFlow : public MFlow { // friends friend class ::tst_models; public: QString infoText () const override { return QString("BloodFlow"); } struct Data { qint32 mFlowSetPoint = 0; ///< Flow Set Point float mMeasuredFlow = 0; ///< Measured Flow float mRotorSpeed = 0; ///< Rotor Speed float mMotorSpeed = 0; ///< Motor Speed float mMotorCtlSpeed = 0; ///< Motor Controller Speed float mMotorCtlCurrent = 0; ///< Motor Controller Current float mPWMDutyCycle = 0; ///< PWM Duty Cycle in % }; MBloodFlow() { } Data data() const; }; /*! * \brief The MDialysateFlow class * \details The dialysate flow data model * * | MSG | CAN ID | Box | Type | Ack | Src | Dst | Description | #1:(S32) | #2:(F32) | #3:(F32) | #4:(F32) | #5:(F32) | #6:(F32) | #7:(F32) | * |:----:|:------:|:---:|:------:|:---:|:---:|:---:|:-----------: |:--: |:--: |:--: |:--: |:--: |:--: |:--: | * |0x0800| 0x040 | 7 | 1 Hz | N | HD | All | Dialysate Flow Data | mFlowSetPoint | mMeasuredFlow | mRotorSpeed | mMotorSpeed | mMotorCtlSpeed | mMotorCtlCurrent | mPWMDutyCycle | * * \sa Data * */ class MDialysateFlow : public MFlow { // friends friend class ::tst_models; public: QString infoText () const override { return QString("DialysateFlow"); } struct Data { qint32 mFlowSetPoint = 0; ///< Flow Set Point float mMeasuredFlow = 0; ///< Measured Flow float mRotorSpeed = 0; ///< Rotor Speed float mMotorSpeed = 0; ///< Motor Speed float mMotorCtlSpeed = 0; ///< Motor Controller Speed float mMotorCtlCurrent = 0; ///< Motor Controller Current float mPWMDutyCycle = 0; ///< PWM Duty Cycle in % }; MDialysateFlow() { } Data data() const; }; } typedef Model:: MBloodFlow::Data BloodFlowData; typedef Model::MDialysateFlow::Data DialysateFlowData;