/*! * * Copyright (c) 2021-2024 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 MAdjustHDRequests.h * \author (last) Dara Navaei * \date (last) 06-May-2024 * \author (original) Behrouz NematiPour * \date (original) 16-Apr-2021 * */ #pragma once // Qt // FW #include "Compatible.h" // project #include "MAdjustRequestsBase.h" using namespace Gui; namespace Model { /*! * 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 MAdjustHDDateTime class * \details The model to request starting a treatment * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x6d00 | 0x100 | Req | Y | UI | HD | Set RTC Date and Time | * * | Payload || * | || * | #1:(U32) mEpoch | \ref mEpoch | * */ class MAdjustHDDateTimeReq : public MModel { public: quint32 mEpoch; QString toString() { return toString({mEpoch}); } static QString toString(const QVariantList &vParameters) { return MModel::toString("AdjustHDDateTime", vParameters); } }; /*! * \brief The MAdjustAlarmVolumeReq class * \details The HD alarm volume request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x0B00 | 0x041 | Req | Y | UI | TD | TD Set Alarm Volume Request | * * | Payload || * | || * | #1:(U32) volume | \ref MAdjustHDAlarmVolumeResponse | * */ class MAdjustHDAlarmVolumeReq : public MModel { const int hw2ui = 1; // HD vol range is [1-5]; set to 20 if we show [20%-100%] to user (100 / 5). quint32 _volume = 5; // HD vol range is [1-5]; set to 100 if we show [20%-100%] since values in range of [20, 40, 60, 80, 100] or [1..5]*20 public: quint32 volume2HD() const { return _volume / hw2ui; } quint32 volume() { return _volume; } void volume(quint32 vVolume) { _volume = vVolume; } QString toString() { return toString( { _volume } ); } static QString toString(const QVariantList &vParameters) { return MModel::toString("AdjustHDAlarmVolume", vParameters); } }; /*! * \brief The MAdjustVersionsReq class * \details The DG/HD versions request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x1C00 | 0x200 | Req | Y | UI | All | DG/HD Versions/SN Request | * * | Payload || * | || * | #1:(U08) | major | * | #2:(U08) | minor | * | #3:(U08) | micro | * | #4:(U16) | revision(build) | * | #5:(U32) | compatibility | * */ class MAdjustVersionsReq : public MModel { public: quint8 ver_major = QString("%1").arg(VER_MAJOR ).toUInt(); quint8 ver_minor = QString("%1").arg(VER_MINOR ).toUInt(); quint8 ver_micro = QString("%1").arg(VER_MICRO ).toUInt(); quint16 ver_revis = QString("%1").arg(VER_REVIS ).toUInt(); quint32 ver_comp = QString("%1").arg(SW_COMPATIBILITY_REV).toUInt(); QString toString() { return toString({ ver_major , ver_minor , ver_micro , ver_revis , ver_comp , }); } static QString toString(const QVariantList &vParameters) { return MModel::toString("POSTInfReq", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_Sync; } }; /*! * \brief The MAdjustVersionsRsp class * \details The UI versions response model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x1600 | 0x041 | Rsp | Y | UI | TD | UI Versions/SN Response | * * | Payload || * | || * | #1:(U08) | major | * | #2:(U08) | minor | * | #3:(U08) | micro | * | #4:(U16) | revision(build) | * | #5:(U32) | compatibility | * */ class MAdjustVersionsRsp : public MAdjustVersionsReq { public: static QString toString(const QVariantList &vParameters) { return MModel::toString("VersionRsp", vParameters); } static Can::Can_Id canid () { return Can::Can_Id::eChlid_UI_TD; } }; /*! * \brief The MAdjustServiceDatesReq class * \details The DG/HD versions request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:---------------------------:| * | 0x8900 | 0x200 | Req | Y | UI | All | DG/HD Service Dates Request | * * | Payload || * | || * | (N/A) || * */ class MAdjustServiceDatesReq : public MModel { public: QString toString() { return toString({}); } static QString toString(const QVariantList &vParameters) { return MModel::toString("ServiceDates", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_Sync; } }; /*! * \brief The MAdjustServiceModeReq class * \details The HD Service Mode request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0xB000 | 0x100 | Req | Y | UI | HD | Service Mode Request | * * | Payload || * | || * | (N/A) || * */ class MAdjustServiceModeReq : public MModel { public: QString toString() { return toString({}); } static QString toString(const QVariantList &vParameters) { return MModel::toString("ServiceMode", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_TD; } }; /*! * \brief The MAdjustUIPostFinalResultReq class * \details The UI power on self test result model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x9200 | 0x100 | Req | Y | UI | HD | Report UI POST result | * * | Payload || * | || * | #1:(U32) mResult | \ref mResult | * */ class MAdjustUIPostFinalResultReq : public MModel { public: quint32 mResult; QString toString() { return toString( { mResult } ); } static QString toString(const QVariantList &vParameters) { 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: QString toString() { return toString({}); } static QString toString(const QVariantList &vParameters) { return MModel::toString("HDUsageInfoReq", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_Sync; } }; /*! * \brief The MInstitutionalRecordReq * \details The TD Institutional request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x8900 | 0x100 | Req | Y | UI | HD | Institutional Record Request | * * | Payload || * | || * | (N/A) || * */ class MInstitutionalRecordReq : public MModel { public: QString toString() { return toString({}); } static QString toString(const QVariantList &vParameters) { return MModel::toString("InstitutionalRecord", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_TD; } }; /*! * \brief The MAdjustInstitutionalReq * \details The TD Institutional request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x8900 | 0x100 | Req | Y | UI | HD | Institutional Record Set Request | * * | Payload || * | || * | #1: (U32) | \ref Data::mBloodFlowMin | * | #2: (U32) | \ref Data::mBloodFlowMax | * | #3: (U32) | \ref Data::mBloodFlowDef | * | #4: (U32) | \ref Data::mDialysateFlowMin | * | #5: (U32) | \ref Data::mDialysateFlowMax | * | #6: (U32) | \ref Data::mDialysateFlowDef | * | #7: (U32) | \ref Data::mTreatmentDurationMin | * | #8: (U32) | \ref Data::mTreatmentDurationMax | * | #9: (U32) | \ref Data::mTreatmentDurationDef | * | #10:(F32) | \ref Data::mHepBolusVolumeMin | * | #11:(F32) | \ref Data::mHepBolusVolumeMax | * | #12:(F32) | \ref Data::mHepBolusVolumeDef | * | #13:(F32) | \ref Data::mHepDispRateMin | * | #14:(F32) | \ref Data::mHepDispRateMax | * | #15:(F32) | \ref Data::mHepDispRateDef | * | #16:(U32) | \ref Data::mHepStopTimeMin | * | #17:(U32) | \ref Data::mHepStopTimeMax | * | #18:(F32) | \ref Data::mDialysateTempMin | * | #19:(F32) | \ref Data::mDialysateTempMax | * | #20:(F32) | \ref Data::mDialysateTempDef | * | #21:(F32) | \ref Data::mPotassiumMin | * | #22:(F32) | \ref Data::mPotassiumMax | * | #23:(F32) | \ref Data::mCalciumMin | * | #24:(F32) | \ref Data::mCalciumMax | * | #25:(U32) | \ref Data::mDialysateBicarbonateMin | * | #26:(U32) | \ref Data::mDialysateBicarbonateMax | * | #27:(U32) | \ref Data::mDialysateBicarbonateDef | * | #28:(U32) | \ref Data::mDialysateSodiumMin | * | #29:(U32) | \ref Data::mDialysateSodiumMax | * | #30:(U32) | \ref Data::mDialysateSodiumDef | * | #31:(U32) | \ref Data::mFluidBolusVolumeMin | * | #32:(U32) | \ref Data::mFluidBolusVolumeMax | * | #33:(U32) | \ref Data::mFluidBolusVolumeDef | * | #34:(U32) | \ref Data::mArterialWindowMin | * | #35:(U32) | \ref Data::mArterialWindowMax | * | #36:(U32) | \ref Data::mArterialWindowDef | * | #37:(U32) | \ref Data::mVenousWindowMin | * | #38:(U32) | \ref Data::mVenousWindowMax | * | #39:(U32) | \ref Data::mVenousWindowDef | * | #40:(U32) | \ref Data::mVenousAsymmetricMin | * | #41:(U32) | \ref Data::mVenousAsymmetricMax | * | #42:(U32) | \ref Data::mVenousAsymmetricDef | * | #43:(U32) | \ref Data::mTMPWindowMin | * | #44:(U32) | \ref Data::mTMPWindowMax | * | #45:(U32) | \ref Data::mTMPWindowDef | * | #46:(F32) | \ref Data::mUltrafiltrationVolumeMin | * | #47:(F32) | \ref Data::mUltrafiltrationVolumeMax | * | #48:(F32) | \ref Data::mUltrafiltrationVolumeDef | * | #49:(U32) | \ref Data::mVitalsIntervalDef | * | #50:(U32) | \ref Data::mRinsebackVolumeMin | * | #51:(U32) | \ref Data::mRinsebackVolumeMax | * | #52:(U32) | \ref Data::mRinsebackVolumeDef | * | #53:(U32) | \ref Data::mRinsebackFlowRateMin | * | #54:(U32) | \ref Data::mRinsebackFlowRateMax | * | #55:(U32) | \ref Data::mRinsebackFlowRateDef | * | #56:(F32) | \ref Data::mSubstitutionVolumeMin | * | #57:(F32) | \ref Data::mSubstitutionVolumeMax | * | #58:(F32) | \ref Data::mSubstitutionVolumeDef | * */ class MAdjustInstitutionalRecordReq : public MModel { public: quint32 mBloodFlowMin = 0 ; quint32 mBloodFlowMax = 0 ; quint32 mBloodFlowDef = 0 ; quint32 mDialysateFlowMin = 0 ; quint32 mDialysateFlowMax = 0 ; quint32 mDialysateFlowDef = 0 ; quint32 mTreatmentDurationMin = 0 ; quint32 mTreatmentDurationMax = 0 ; quint32 mTreatmentDurationDef = 0 ; float mHepBolusVolumeMin = 0 ; float mHepBolusVolumeMax = 0 ; float mHepBolusVolumeDef = 0 ; float mHepDispRateMin = 0 ; float mHepDispRateMax = 0 ; float mHepDispRateDef = 0 ; quint32 mHepStopTimeMin = 0 ; quint32 mHepStopTimeMax = 0 ; float mDialysateTempMin = 0 ; float mDialysateTempMax = 0 ; float mDialysateTempDef = 0 ; float mPotassiumMin = 0 ; float mPotassiumMax = 0 ; float mCalciumMin = 0 ; float mCalciumMax = 0 ; quint32 mDialysateBicarbonateMin = 0 ; quint32 mDialysateBicarbonateMax = 0 ; quint32 mDialysateBicarbonateDef = 0 ; quint32 mDialysateSodiumMin = 0 ; quint32 mDialysateSodiumMax = 0 ; quint32 mDialysateSodiumDef = 0 ; quint32 mFluidBolusVolumeMin = 0 ; quint32 mFluidBolusVolumeMax = 0 ; quint32 mFluidBolusVolumeDef = 0 ; quint32 mArterialWindowMin = 0 ; quint32 mArterialWindowMax = 0 ; quint32 mArterialWindowDef = 0 ; quint32 mVenousWindowMin = 0 ; quint32 mVenousWindowMax = 0 ; quint32 mVenousWindowDef = 0 ; quint32 mVenousAsymmetricMin = 0 ; quint32 mVenousAsymmetricMax = 0 ; quint32 mVenousAsymmetricDef = 0 ; quint32 mTMPWindowMin = 0 ; quint32 mTMPWindowMax = 0 ; quint32 mTMPWindowDef = 0 ; float mUltrafiltrationVolumeMin = 0 ; float mUltrafiltrationVolumeMax = 0 ; float mUltrafiltrationVolumeDef = 0 ; quint32 mVitalsIntervalDef = 0 ; quint32 mRinsebackVolumeMin = 0 ; quint32 mRinsebackVolumeMax = 0 ; quint32 mRinsebackVolumeDef = 0 ; quint32 mRinsebackFlowRateMin = 0 ; quint32 mRinsebackFlowRateMax = 0 ; quint32 mRinsebackFlowRateDef = 0 ; float mSubstitutionVolumeMin = 0 ; float mSubstitutionVolumeMax = 0 ; float mSubstitutionVolumeDef = 0 ; QString toString() { return toString({ mBloodFlowMin , mBloodFlowMax , mBloodFlowDef , mDialysateFlowMin , mDialysateFlowMax , mDialysateFlowDef , mTreatmentDurationMin , mTreatmentDurationMax , mTreatmentDurationDef , mHepBolusVolumeMin , mHepBolusVolumeMax , mHepBolusVolumeDef , mHepDispRateMin , mHepDispRateMax , mHepDispRateDef , mHepStopTimeMin , mHepStopTimeMax , mDialysateTempMin , mDialysateTempMax , mDialysateTempDef , mPotassiumMin , mPotassiumMax , mCalciumMin , mCalciumMax , mDialysateBicarbonateMin , mDialysateBicarbonateMax , mDialysateBicarbonateDef , mDialysateSodiumMin , mDialysateSodiumMax , mDialysateSodiumDef , mFluidBolusVolumeMin , mFluidBolusVolumeMax , mFluidBolusVolumeDef , mArterialWindowMin , mArterialWindowMax , mArterialWindowDef , mVenousWindowMin , mVenousWindowMax , mVenousWindowDef , mVenousAsymmetricMin , mVenousAsymmetricMax , mVenousAsymmetricDef , mTMPWindowMin , mTMPWindowMax , mTMPWindowDef , mUltrafiltrationVolumeMin , mUltrafiltrationVolumeMax , mUltrafiltrationVolumeDef , mVitalsIntervalDef , mRinsebackVolumeMin , mRinsebackVolumeMax , mRinsebackVolumeDef , mRinsebackFlowRateMin , mRinsebackFlowRateMax , mRinsebackFlowRateDef , mSubstitutionVolumeMin , mSubstitutionVolumeMax , mSubstitutionVolumeDef , }); } static QString toString(const QVariantList &vParameters) { return MModel::toString("AdjustInstitutionalRecord", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_TD; } }; /*! * \brief The MAdvancedInstitutionalRecordReq * \details The TD Advanced Institutional request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x8900 | 0x100 | Req | Y | UI | HD | Advanced Institutional Record Request | * * | Payload || * | || * | (N/A) || * */ class MAdvancedInstitutionalRecordReq : public MModel { public: QString toString() { return toString({}); } static QString toString(const QVariantList &vParameters) { return MModel::toString("AdvancedInstitutionalRecord", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_TD; } }; /*! * \brief The MAdjustAdvancedInstitutionalRecordReq * \details The TD Advanced Institutionalrequest model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:-----------:| * | 0x8900 | 0x100 | Req | Y | UI | HD | Advanced Institutional Record Set Request | * * | Payload || * | || * | #1: (U32) | \ref Data::mMinRORejectionRatioAlarmMin | * | #2: (U32) | \ref Data::mMinRORejectionRatioAlarmMax | * | #3: (U32) | \ref Data::mMinRORejectionRatioAlarmDef | * | #4: (U32) | \ref Data::mDisinfectionFrequencyMin | * | #5: (U32) | \ref Data::mDisinfectionFrequencyMax | * | #6: (U32) | \ref Data::mDisinfectionFrequencyDef | * | #7: (U32) | \ref Data::mDisinfectionParametersCycleTimeMin | * | #8: (U32) | \ref Data::mDisinfectionParametersCycleTimeMax | * | #9: (U32) | \ref Data::mDisinfectionParametersCycleTimeDef | * | #10:(U32) | \ref Data::mMaxBloodPumpStopTimeMin | * | #11:(U32) | \ref Data::mMaxBloodPumpStopTimeMax | * | #12:(U32) | \ref Data::mMaxBloodPumpStopTimeDef | * | #13:(U32) | \ref Data::mInletWaterCondLowThresholdMin | * | #14:(U32) | \ref Data::mInletWaterCondLowThresholdMax | * | #15:(U32) | \ref Data::mInletWaterCondLowThresholdDef | * | #16:(U32) | \ref Data::mInletWaterCondHighThresholdMin | * | #17:(U32) | \ref Data::mInletWaterCondHighThresholdMax | * | #18:(U32) | \ref Data::mInletWaterCondHighThresholdDef | * | #19:(U32) | \ref Data::mChlorineWaterSampleCheckMin | * | #20:(U32) | \ref Data::mChlorineWaterSampleCheckMax | * | #21:(U32) | \ref Data::mChlorineWaterSampleCheckDef | * | #22:(U32) | \ref Data::mWaterSampleTestResultRequiredDef | * */ class MAdjustAdvancedInstitutionalRecordReq : public MModel { public: quint32 mMinRORejectionRatioAlarmMin = 0; quint32 mMinRORejectionRatioAlarmMax = 0; quint32 mMinRORejectionRatioAlarmDef = 0; quint32 mDisinfectionFrequencyMin = 0; quint32 mDisinfectionFrequencyMax = 0; quint32 mDisinfectionFrequencyDef = 0; quint32 mDisinfectionParametersCycleTimeMin = 0; quint32 mDisinfectionParametersCycleTimeMax = 0; quint32 mDisinfectionParametersCycleTimeDef = 0; quint32 mMaxBloodPumpStopTimeMin = 0; quint32 mMaxBloodPumpStopTimeMax = 0; quint32 mMaxBloodPumpStopTimeDef = 0; quint32 mInletWaterCondLowThresholdMin = 0; quint32 mInletWaterCondLowThresholdMax = 0; quint32 mInletWaterCondLowThresholdDef = 0; quint32 mInletWaterCondHighThresholdMin = 0; quint32 mInletWaterCondHighThresholdMax = 0; quint32 mInletWaterCondHighThresholdDef = 0; quint32 mChlorineWaterSampleCheckMin = 0; quint32 mChlorineWaterSampleCheckMax = 0; quint32 mChlorineWaterSampleCheckDef = 0; quint32 mWaterSampleTestResultRequiredDef = 0; QString toString() { return toString({ mMinRORejectionRatioAlarmMin , mMinRORejectionRatioAlarmMax , mMinRORejectionRatioAlarmDef , mDisinfectionFrequencyMin , mDisinfectionFrequencyMax , mDisinfectionFrequencyDef , mDisinfectionParametersCycleTimeMin, mDisinfectionParametersCycleTimeMax, mDisinfectionParametersCycleTimeDef, mMaxBloodPumpStopTimeMin , mMaxBloodPumpStopTimeMax , mMaxBloodPumpStopTimeDef , mInletWaterCondLowThresholdMin , mInletWaterCondLowThresholdMax , mInletWaterCondLowThresholdDef , mInletWaterCondHighThresholdMin , mInletWaterCondHighThresholdMax , mInletWaterCondHighThresholdDef , mChlorineWaterSampleCheckMin , mChlorineWaterSampleCheckMax , mChlorineWaterSampleCheckDef , mWaterSampleTestResultRequiredDef , }); } static QString toString(const QVariantList &vParameters) { return MModel::toString("AdjustAdvancedInstitutionalRecord", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_TD; } }; /*! * \brief The MAdjustHDResetReq class * \details The DG/HD versions request model * * | MSG | CAN ID | Type | Ack | Src | Dest | Description | * |:------:|:------:|:----:|:---:|:---:|:----:|:---------------------------:| * | 0xB900 | 0x200 | Req | Y | UI | All | HD reset request | * * | Payload || * | || * | (N/A) || * */ class MAdjustHDResetInSrvceModeReq : public MModel { public: QString toString() { return toString({}); } static QString toString(const QVariantList &vParameters) { return MModel::toString("HDResetInServiceMode", vParameters); } static Can::Can_Id canid () { return Can::eChlid_UI_TD; } }; } typedef Model:: MAdjustServiceModeReq AdjustServiceModeRequestData; typedef Model:: MAdjustVersionsReq AdjustVersionsRequestData; typedef Model:: MAdjustVersionsRsp AdjustVersionsResponseData; typedef Model:: MAdjustServiceDatesReq AdjustServiceDatesRequestData; typedef Model:: MAdjustTDDateTimeReq AdjustTDDateTimeRequestData; typedef Model:: MAdjustHDAlarmVolumeReq AdjustHDAlarmVolumeRequestData; typedef Model:: MAdjustUIPostFinalResultReq AdjustUIPostFinalResultRequestData; typedef Model:: MHDUsageInfoReq HDUsageInfoRequestData; typedef Model:: MInstitutionalRecordReq InstitutionalRequestData; typedef Model:: MAdjustInstitutionalRecordReq AdjustInstitutionalRequestData; typedef Model:: MAdvancedInstitutionalRecordReq AdvancedInstitutionalRequestData; typedef Model::MAdjustAdvancedInstitutionalRecordReq AdjustAdvancedInstitutionalRequestData; typedef Model:: MAdjustHDResetInSrvceModeReq AdjustHDResetInSrvcRequestData;