/*! * * 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 VPreTreatmentStatesData.cpp * \author (last) Behrouz NematiPour * \date (last) 01-Aug-2023 * \author (original) Behrouz NematiPour * \date (original) 11-Apr-2021 * */ #include "VPreTreatmentStatesData.h" // Project #include "GuiController.h" VIEW_DEF(VPreTreatmentStates, PreTreatmentStatesData) /*! * \brief VHDTreatmentStates::onActionReceive * \details sets the properties for the received data of Treatment States * \param vData - Treatment States data */ void VPreTreatmentStates::onActionReceive(const PreTreatmentStatesData &vData) { subMode ( vData.mSubMode ); waterSampleState ( vData.mWaterSampleState ); selfTestConsumablesState( vData.mSelfTestConsumablesState ); selfTestNoCartridgeState( vData.mSelfTestNoCartridgeState ); installationState ( vData.mInstallationState ); selfTestDryState ( vData.mSelfTestDryState ); primeState ( vData.mPrimeState ); recirculateState ( vData.mRecirculateState ); patientConnectionState ( vData.mPatientConnectionState ); wetSelfTestsState ( vData.mWetSelfTestsState ); preTreatmentRsrvrState ( vData.mPreTreatmentRsrvrState ); // water sample state bool mWaterSample = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_WATER_SAMPLE_STATE ; if ( mWaterSample ) { waterSample_setup ( vData.mWaterSampleState == GuiPreTreatmentWaterSampleStates ::SAMPLE_WATER_SETUP_STATE ); waterSample_running ( vData.mWaterSampleState == GuiPreTreatmentWaterSampleStates ::SAMPLE_WATER_STATE ); } waterSample( mWaterSample ); // it's the main even so moved last to have all the sub-states updated prior to. // Self tests consumables state bool mSelfTestConsumables = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE ; if ( mSelfTestConsumables ) { selfTestConsumables_install ( vData.mSelfTestConsumablesState == GuiPreTreatmentSelfTestConsumablesStates ::CONSUMABLE_SELF_TESTS_INSTALL_STATE ); selfTestConsumables_prime ( vData.mSelfTestConsumablesState == GuiPreTreatmentSelfTestConsumablesStates ::CONSUMABLE_SELF_TESTS_PRIME_STATE ); selfTestConsumables_biCarbPump ( vData.mSelfTestConsumablesState == GuiPreTreatmentSelfTestConsumablesStates ::CONSUMABLE_SELF_TESTS_BICARB_PUMP_CHECK_STATE ); selfTestConsumables_acidPump ( vData.mSelfTestConsumablesState == GuiPreTreatmentSelfTestConsumablesStates ::CONSUMABLE_SELF_TESTS_ACID_PUMP_CHECK_STATE ); selfTestConsumables_complete ( vData.mSelfTestConsumablesState == GuiPreTreatmentSelfTestConsumablesStates ::CONSUMABLE_SELF_TESTS_COMPLETE_STATE ); } selfTestConsumables(mSelfTestConsumables); // it's the main even so moved last to have all the sub-states updated prior to. // Self tests with no cartridge state bool mSelfTestNoCartridge = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE ; if ( mSelfTestNoCartridge ) { selfTestNoCartridge_waitDoorClose ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE ); selfTestNoCartridge_pressureCheck ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_PRESSURE_CHECKS_STATE ); selfTestNoCartridge_homeValves ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_HOME_VALVES_STATE ); selfTestNoCartridge_homeSyringePump ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_HOME_SYRINGE_PUMP_STATE ); selfTestNoCartridge_pumps ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_PUMPS_STATE ); selfTestNoCartridge_homeIdle ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_HOME_IDLE_STATE ); selfTestNoCartridge_stopped ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_STOPPED_STATE ); selfTestNoCartridge_complete ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_COMPLETE_STATE ); } selfTestNoCartridge(mSelfTestNoCartridge); // it's the main even so moved last to have all the sub-states updated prior to. // Consumable and cartridge installation state bool mInstallation = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_CART_INSTALL_STATE ; if ( mInstallation ) { // There is not state(enum) for this and it is always 0 for now. but will be used to notify UI about being in this state. installation_start ( vData.mInstallationState == 0 /* There is no other state and it is always 0 for now */ ); } installation(mInstallation); // it's the main even so moved last to have all the sub-states updated prior to. // Self tests dry state bool mSelfTestDry = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_SELF_TEST_DRY_STATE ; if ( mSelfTestDry ) { selfTestDry_start ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_START_STATE ); selfTestDry_waitDoorClose ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE ); selfTestDry_usedCartridge ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_USED_CARTRIDGE_CHECK_STATE ); selfTestDry_cartridgeLoaded ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_CARTRIDGE_LOADED_CHECK_STATE ); selfTestDry_pressureSensorsNormalSetup ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_SETUP_STATE ); selfTestDry_pressureSensorsVenousSetup ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_VENOUS_SETUP_STATE ); selfTestDry_pressureSensorsVenous ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_VENOUS ); selfTestDry_pressureSensorsArterialSetup ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_ARTERIAL_SETUP_STATE ); selfTestDry_pressureSensorsArterial ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_ARTERIAL ); selfTestDry_pressureSensorsDecay ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_DECAY_STATE ); selfTestDry_pressureSensorsStability ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_STABILITY_STATE ); selfTestDry_pressureSensorsNormal ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_NORMAL_STATE ); selfTestDry_syringePump ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_SYRINGE_PUMP_PRIME_STATE ); selfTestDry_syringePumpOcclusionDetection ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_SYRINGE_PUMP_OCCLUSION_DETECTION_STATE ); selfTestDry_stopped ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_STOPPED_STATE ); selfTestDry_complete ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_COMPLETE_STATE ); } selfTestDry(mSelfTestDry); // it's the main even so moved last to have all the sub-states updated prior to. // Prime blood and dialysate circuits and run wet self-tests state bool mPrime = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_PRIME_STATE ; if ( mPrime ) { prime_waitUserStart ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_WAIT_FOR_USER_START_STATE ); prime_salineSetup ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_SALINE_SETUP_STATE ); prime_salinePurgeAir ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_SALINE_PURGE_AIR_STATE ); prime_salineCirculateBloodCircuit ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE ); prime_reservoirOneFillComplete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE ); prime_dialysateDialyzer ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_DIALYSATE_DIALYZER_STATE ); prime_salineDialyzerSetup ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_SALINE_DIALYZER_SETUP_STATE ); prime_salineDialyzer ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_SALINE_DIALYZER_STATE ); prime_reservoirTwoFillComplete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE ); prime_dialysateBypass ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_DIALYSATE_BYPASS_STATE ); prime_wetSelfTests ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_WET_SELF_TESTS_STATE ); prime_pause ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_PAUSE ); prime_complete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::TD_PRIME_COMPLETE ); prime__BloodCircuit ( _prime_salineSetup || _prime_salinePurgeAir || _prime_salineCirculateBloodCircuit); prime__DialysateCircuit ( _prime_reservoirOneFillComplete || _prime_dialysateDialyzer || _prime_salineDialyzerSetup || _prime_salineDialyzer || _prime_reservoirTwoFillComplete || _prime_dialysateBypass ); prime__WetSelfTests ( _prime_wetSelfTests ); } prime(mPrime); // it's the main even so moved last to have all the sub-states updated prior to. // Re-circulate blood and dialysate circuits state bool mRecirculate = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_RECIRCULATE_STATE ; if ( mRecirculate ) { recirculate_start ( vData.mRecirculateState == GuiPreTreatmentRecirculateStates ::PRE_TREATMENT_RECIRC_STATE ); recirculate_stopped ( vData.mRecirculateState == GuiPreTreatmentRecirculateStates ::PRE_TREATMENT_RECIRC_STOPPED_STATE ); } recirculate(mRecirculate); // it's the main even so moved last to have all the sub-states updated prior to. // Patient connection state bool mPatientConnection = vData.mSubMode == GuiPreTreatmentStates ::TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE ; if ( mPatientConnection ) { // There is not state(enum) for this and it is always 0 for now. but will be used to notify UI about being in this state. patientConnection_start ( vData.mPatientConnectionState == 0 /* There is no other state and it is always 0 for now */ ); } patientConnection(mPatientConnection); // *** Only for test *** // Be careful it is always triggered on each message. state(true); }