/*! * * 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 VPreTreatmentStatesData.cpp * \author (last) Behrouz NematiPour * \date (last) 01-Mar-2021 * \author (original) Behrouz NematiPour * \date (original) 13-Aug-2020 * */ #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 ); // start state start ( vData.mSubMode == GuiPreTreatmentStates ::HD_PRE_TREATMENT_START_STATE ); // water sample state bool mWaterSample = vData.mSubMode == GuiPreTreatmentStates ::HD_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 ::HD_PRE_TREATMENT_SELF_TEST_CONSUMABLE_STATE ; if ( mSelfTestConsumables ) { selfTestConsumables_install ( vData.mSelfTestConsumablesState == GuiPreTreatmentSelfTestConsumablesStates ::CONSUMABLE_SELF_TESTS_INSTALL_STATE ); selfTestConsumables_waterQuality ( vData.mSelfTestConsumablesState == GuiPreTreatmentSelfTestConsumablesStates ::CONSUMABLE_SELF_TESTS_WATER_QUALITY_CHECK_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 ::HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE ; if ( mSelfTestNoCartridge ) { selfTestNoCartridge_start ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_START_STATE ); selfTestNoCartridge_waitDoorClose ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_WAIT_FOR_DOOR_CLOSE_STATE ); selfTestNoCartridge_occlusionSensors ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_OCCLUSION_SENSORS_STATE ); selfTestNoCartridge_bloodFlowMeters ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_BLOOD_FLOW_METERS_STATE ); selfTestNoCartridge_dialysateFlowMeters ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_DIALYSATE_FLOW_METERS_STATE ); // FIXME: It has been removed : selfTestNoCartridge_leakDetectors ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_LEAK_DETECTORS_STATE ); selfTestNoCartridge_boardTemperature ( vData.mSelfTestNoCartridgeState == GuiPreTreatmentSelfTestNoCartridgeStates ::NO_CART_SELF_TESTS_BOARD_TEMPERATURE_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 ::HD_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 ::HD_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_occlusionSensors ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_OCCLUSION_SENSORS_STATE ); selfTestDry_pressureSensorsSetup ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_SETUP_STATE ); selfTestDry_pressureSensors ( vData.mSelfTestDryState == GuiPreTreatmentSelfTestDryStates ::DRY_SELF_TESTS_PRESSURE_SENSORS_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_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 ::HD_PRE_TREATMENT_PRIME_STATE ; if ( mPrime ) { prime_start ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_START_STATE ); prime_waitUserStart ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_WAIT_FOR_USER_START_STATE ); prime_salineSetup ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_SALINE_SETUP_STATE ); prime_salinePurgeAir ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_SALINE_PURGE_AIR_STATE ); prime_salineCirculateBloodCircuit ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE ); prime_reservoiOneFillComplete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE ); prime_dialysateDialyzer ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_DIALYSATE_DIALYZER_STATE ); prime_reservoirTwoFillComplete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE ); prime_dialysateBypass ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_DIALYSATE_BYPASS_STATE ); prime_wetSelfTests ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_WET_SELF_TESTS_STATE ); prime_pause ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_PAUSE ); prime_complete ( vData.mPrimeState == GuiPreTreatmentPrimeStates ::HD_PRIME_COMPLETE ); } 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 ::HD_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 ::HD_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); }