/************************************************************************** * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * * 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 HDDefs.h * * @author (last) Sean Nash * @date (last) 14-Oct-2020 * * @author (original) Sean Nash * @date (original) 29-May-2020 * ***************************************************************************/ #ifndef __HD_DEFS_H__ #define __HD_DEFS_H__ // ********** public definitions ********** /** * @addtogroup HDOperationModes * @{ */ /// Enumeration of operation modes. These are in order of priority (highest to lowest). enum HD_Op_Modes { MODE_FAUL = 0, ///< Fault mode MODE_SERV, ///< Service mode MODE_INIT, ///< Initialization & POST mode MODE_STAN, ///< Standby mode MODE_TPAR, ///< Treatment Parameters mode MODE_PRET, ///< Pre-Treatment mode MODE_TREA, ///< Treatment mode MODE_POST, ///< Post-Treatment mode MODE_NLEG, ///< Not legal - an illegale mode transition occurred NUM_OF_MODES ///< Number of HD operation modes }; typedef enum HD_Op_Modes HD_OP_MODE_T; ///< Type for HD operation modes enumeration /**@}*/ /** * @addtogroup HDInitAndPOSTMode * @{ */ /// Enumeration of init & POST mode states. enum HD_POST_States { POST_STATE_START = 0, ///< Start initialize & POST mode state POST_STATE_WATCHDOG, ///< Run watchdog test mode state POST_STATE_FPGA, ///< Run FPGA test mode state POST_STATE_RTC, ///< Run RTC test mode state POST_STATE_NVDATAMGMT, ///< Run NV Data Mgmt. test mode state POST_STATE_BLOOD_FLOW, ///< Run Blood Flow test mode state POST_STATE_DIALYSATE_FLOW, ///< Run Dialysate Flow test mode state POST_STATE_ACCELEROMETER, ///< Run Accelerometer test mode state POST_STATE_VALVES, ///< Run Valves test mode state POST_STATE_ALARM_LAMP, ///< Run alarm lamp test mode state POST_STATE_STUCK_BUTTON, ///< Run stuck button test mode state POST_STATE_COMPLETED, ///< POST self-tests completed mode state POST_STATE_FAILED, ///< POST self-tests failed mode state NUM_OF_POST_STATES ///< Number of initialize & POST mode states }; typedef enum HD_POST_States HD_POST_STATE_T; ///< Type for HD POST states enumeration /**@}*/ /** * @addtogroup HDFaultMode * @{ */ /// Enumeration of fault mode states. enum HD_Fault_States { HD_FAULT_STATE_START = 0, ///< Start fault state NUM_OF_HD_FAULT_STATES ///< Number of fault mode states }; typedef enum HD_Fault_States HD_FAULT_STATE_T; ///< Type for HD fault states enumeration /**@}*/ /** * @addtogroup HDStandbyMode * @{ */ /// Sub-mode states while in standby mode enum HD_Standby_States { STANDBY_START_STATE = 0, ///< Start standby STANDBY_WAIT_FOR_TREATMENT_STATE, ///< Wait for treatment NUM_OF_STANDBY_STATES ///< Number of standby states (sub-modes) }; typedef enum HD_Standby_States HD_STANDBY_STATE_T; ///< Type for HD standby states enumeration /**@}*/ /** * @addtogroup HDTreatmentParamsMode * @{ */ /// Enumeration of treatment parameters mode states. enum HD_Treatment_Parameters_Mode_States { HD_TREATMENT_PARAMS_MODE_STATE_START = 0, ///< Start treatment params mode state HD_TREATMENT_PARAMS_MODE_STATE_WAIT_4_UI_2_SEND, ///< Wait for UI to send treatment params mode state HD_TREATMENT_PARAMS_MODE_STATE_WAIT_4_UI_2_CONFIRM, ///< Wait for UI to confirm treatment params mode state NUM_OF_HD_TREATMENT_PARAMS_MODE_STATES ///< Number of treatment params mode states }; typedef enum HD_Treatment_Parameters_Mode_States HD_TREATMENT_PARAMS_MODE_STATE_T; ///< Type for HD treatment parameters mode states enumeration /**@}*/ /** * @addtogroup HDPreTreatmentMode * @{ */ /// Enumeration of pre-treatment mode states (sub-mode). enum HD_Pre_Treatment_Mode_States { HD_PRE_TREATMENT_START_STATE = 0, ///< Start pre-treatment mode state HD_PRE_TREATMENT_WATER_SAMPLE_STATE, ///< Water sample state HD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE, ///< Self tests with no cartridge state HD_PRE_TREATMENT_CART_INSTALL_STATE, ///< Consumable and cartridge installation state HD_PRE_TREATMENT_SELF_TEST_DRY_STATE, ///< Self tests dry-run state HD_PRE_TREATMENT_PRIME_STATE, ///< Prime both blood and dialysate circuits state HD_PRE_TREATMENT_RECIRCULATE_START_STATE, ///< Re-circulate starting state, change valves and heater settings HD_PRE_TREATMENT_RECIRCULATE_STATE, ///< Re-circulate blood and dialysate circuits state HD_PRE_TREATMENT_PATIENT_CONNECTION_STATE, ///< Patient connection state HD_PRE_TREATMENT_PAUSE_STATE, ///< Pre-treatment pause state NUM_OF_HD_PRE_TREATMENT_STATES ///< Number of pre-treatment mode states }; typedef enum HD_Pre_Treatment_Mode_States HD_PRE_TREATMENT_MODE_STATE_T; ///< Type for HD pre-treatment mode states enumeration /**@}*/ /** * @addtogroup Prime * @{ */ /// Enumeration of prime sub-mode states. enum HD_Pre_Treatment_Prime_States { HD_PRIME_START_STATE = 0, ///< Prime start state HD_PRIME_SALINE_SETUP_STATE, ///< Saline setup state HD_PRIME_SALINE_PURGE_AIR_STATE, ///< Saline purge air state HD_PRIME_SALINE_CIRC_BLOOD_CIRCUIT_STATE, ///< Circulate blood circuit state HD_PRIME_RESERVOIR_ONE_FILL_COMPLETE_STATE, ///< Wait for reservoir 1 fill complete HD_PRIME_DIALYSATE_DIALYZER_STATE, ///< Dialysate dialyzer fluid path state HD_PRIME_RESERVOIR_TWO_FILL_COMPLETE_STATE, ///< Wait for reservoir 2 fill complete HD_PRIME_DIALYSATE_BYPASS_STATE, ///< Dialysate bypass fluid path state HD_PRIME_WET_SELF_TESTS_STATE, ///< Perform wet self-tests after priming complete HD_PRIME_PAUSE, ///< Prime pause state, waits to be resumed NUM_OF_HD_PRIME_STATES ///< Number of prime sub-mode states }; typedef enum HD_Pre_Treatment_Prime_States HD_PRE_TREATMENT_PRIME_STATE_T; ///< Type for HD pre-treatment prime sub-mode states enumeration /**@}*/ /** * @addtogroup HDTreatmentMode * @{ */ /// Sub-mode states while in treatment mode enum Treatment_States { TREATMENT_START_STATE = 0, ///< Start treatment, prime blood side with gradual ramp for 1 min. while dialyzer is bypassed. No dialysis or UF taking place TREATMENT_DIALYSIS_STATE, ///< Perform dialysis. Deliver Heparin as prescribed. Deliver UF as prescribed. Handle saline boluses as requested TREATMENT_STOP_STATE, ///< Treatment stopped. All pumps off. Dializer bypassed TREATMENT_RINSEBACK_STATE, ///< Perform rinseback with saline. Dialyzer bypassed. Dialysate recirculating TREATMENT_RECIRC_STATE, ///< Recirculate saline and dialysate while patient disconnected. Blood lines open and shunted. Dialyzer is bypassed TREATMENT_DIALYSIS_END_STATE, ///< Dialysis has ended. Blood pump slowed. Dialyzer is bypassed. Dialysate is recirculated. User can rinseback TREATMENT_END_STATE, ///< Treatment has ended. All pumps off. Dialyzer is bypassed. Blood lines are closed. User to disconnect NUM_OF_TREATMENT_STATES ///< Number of treatment states (sub-modes) }; typedef enum Treatment_States TREATMENT_STATE_T; ///< Type for treatment states enumeration /**@}*/ /** * @addtogroup HDPostTreatmentMode * @{ */ /// Enumeration of post-treatment mode states. enum HD_Post_Treatment_Mode_States { HD_POST_TREATMENT_STATE_START = 0, ///< Start post-treatment mode state NUM_OF_HD_POST_TREATMENT_STATES ///< Number of post-treatment mode states }; typedef enum HD_Post_Treatment_Mode_States HD_POST_TREATMENT_STATE_T; ///< Type for HD post treatment mode states enumeration /**@}*/ /** * @addtogroup HDServiceMode * @{ */ /// Enumeration of service mode states. enum HD_Service_States { HD_SERVICE_STATE_START = 0, ///< Start service mode state NUM_OF_HD_SERVICE_STATES ///< Number of service mode states }; typedef enum HD_Service_States HD_SERVICE_STATE_T; ///< Type for HD services states enumeration /**@}*/ /** * @addtogroup Dialysis * @{ */ /// Enumeration of dialysis sub-mode states. enum Dialysis_States { DIALYSIS_START_STATE = 0, ///< Start state of the dialysis sub-mode state machine DIALYSIS_UF_STATE, ///< Ultrafiltration state of the dialysis sub-mode state machine DIALYSIS_SALINE_BOLUS_STATE, ///< Saline bolus state of the dialysis sub-mode state machine NUM_OF_DIALYSIS_STATES ///< Number of dialysis sub-mode states }; typedef enum Dialysis_States DIALYSIS_STATE_T; ///< Type for dialysis states enumeration /// Enumeration of ultrafiltration states. enum UF_States { UF_START_STATE = 0, ///< Start state of the ultrafiltration state machine UF_PAUSED_STATE, ///< Paused state of the ultrafiltration state machine UF_RUNNING_STATE, ///< Running state of the ultrafiltration state machine UF_OFF_STATE, ///< Completed/off state of the ultrafiltration state machine UF_COMPLETED_STATE, ///< Completed state of ultrafiltration state machine NUM_OF_UF_STATES ///< Number of ultrafiltration states }; typedef enum UF_States UF_STATE_T; ///< Type for ultrafiltration states enumeration /// Enumeration of saline bolus states. enum Saline_Bolus_States { SALINE_BOLUS_STATE_IDLE = 0, ///< No saline bolus delivery is in progress SALINE_BOLUS_STATE_WAIT_FOR_PUMPS_STOP, ///< Wait for pumps to stop before starting bolus SALINE_BOLUS_STATE_IN_PROGRESS, ///< A saline bolus delivery is in progress SALINE_BOLUS_STATE_MAX_DELIVERED, ///< Maximum saline bolus volume reached - no more saline bolus deliveries allowed NUM_OF_SALINE_BOLUS_STATES ///< Number of saline bolus states }; typedef enum Saline_Bolus_States SALINE_BOLUS_STATE_T; ///< Type for saline bolus state enumeration /// Enumeration of ultrafiltration command IDs. enum UF_Commands { UF_CMD_PAUSE = 0, ///< Pause UF command UF_CMD_RESUME, ///< Resume UF command NUM_OF_UF_CMDS ///< Number of UF commands }; typedef enum UF_Commands UF_CMD_T; ///< Type for UF command IDs enumeration /// Enumeration of ultrafiltration adjustment option IDs. enum UF_Adjustments { UF_ADJ_TREATMENT_TIME = 0, ///< Adjust treatment time to achieve new ultrafiltration volume UF_ADJ_UF_RATE, ///< Adjust UF rate to achieve new ultrafiltration volume NUM_OF_UF_ADJS ///< Number of UF adjustments }; typedef enum UF_Adjustments UF_ADJ_T; ///< Type for UF adjustments IDs enumeration /**@}*/ /** * @addtogroup Rinseback * @{ */ /// Enumeration of rinseback sub-mode states. enum Rinseback_States { RINSEBACK_STOP_INIT_STATE = 0, ///< Start state (stopped) of the rinseback sub-mode state machine RINSEBACK_RUN_STATE, ///< Rinseback running state of the rinseback sub-mode state machine RINSEBACK_PAUSED_STATE, ///< Rinseback paused state of the rinseback sub-mode state machine RINSEBACK_STOP_STATE, ///< Rinseback stopped (done) state of the rinseback sub-mode state machine RINSEBACK_RUN_ADDITIONAL_STATE, ///< Additional rinseback volume (10 mL) state of the rinseback sub-mode state machine NUM_OF_RINSEBACK_STATES ///< Number of rinseback sub-mode states }; typedef enum Rinseback_States RINSEBACK_STATE_T; ///< Type for rinseback states enumeration. /**@}*/ /** * @addtogroup TreatmentRecirc * @{ */ /// Enumeration of treatment re-circulation sub-mode states. enum Treatment_Recirc_States { TREATMENT_RECIRC_RECIRC_STATE = 0, ///< Re-circulate state of the treatment re-circulate sub-mode state machine TREATMENT_RECIRC_UF_STATE, ///< Stopped state of the treatment re-circulate sub-mode state machine NUM_OF_TREATMENT_RECIRC_STATES ///< Number of treatment re-circulate sub-mode states }; /// Type for treatment re-circulation states enumeration. typedef enum Treatment_Recirc_States TREATMENT_RECIRC_STATE_T; /**@}*/ /** * @addtogroup HDTreatmentParamsMode * @{ */ /// Enumeration of treatment parameters. enum Treatment_Params { TREATMENT_PARAM_BLOOD_FLOW = 0, ///< Blood flow rate (in mL/min) TREATMENT_PARAM_FIRST_UINT = TREATMENT_PARAM_BLOOD_FLOW, ///< First unsigned integer treatment parameter TREATMENT_PARAM_DIALYSATE_FLOW, ///< Dialysate flow rate (in mL/min) TREATMENT_PARAM_TREATMENT_DURATION, ///< Treatment duration (in minutes) TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME, ///< Heparin pre-stop time (in minutes) TREATMENT_PARAM_SALINE_BOLUS_VOLUME, ///< Saline bolus volume (in mL) TREATMENT_PARAM_ACID_CONCENTRATE, ///< Acid concentrate type (enum) TREATMENT_PARAM_BICARB_CONCENTRATE, ///< Bicarbonate concentrate type (enum) TREATMENT_PARAM_DIALYZER_TYPE, ///< Dialysate type (enum) TREATMENT_PARAM_BP_MEAS_INTERVAL, ///< Blood pressure measurement interval (in minutes) TREATMENT_PARAM_RINSEBACK_FLOW_RATE, ///< Rinseback flow rate (in mL/min) TREATMENT_PARAM_LAST_UINT = TREATMENT_PARAM_RINSEBACK_FLOW_RATE, ///< Last unsigned integer treatment parameter TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT, ///< Arterial pressure low alarm limit (in mmHg) TREATMENT_PARAM_FIRST_INT = TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT, ///< First integer treatment parameter TREATMENT_PARAM_ART_PRESSURE_HIGH_LIMIT, ///< Arterial pressure high alarm limit (in mmHg) TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT, ///< Venous pressure low alarm limit (in mmHg) TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT, ///< Venous pressure high alarm limit (in mmHg) TREATMENT_PARAM_LAST_INT = TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT, ///< Last integer treatment parameter TREATMENT_PARAM_HEPARIN_DISPENSE_RATE, ///< Heparin dispense rate (in mL/hr) TREATMENT_PARAM_FIRST_F32 = TREATMENT_PARAM_HEPARIN_DISPENSE_RATE, ///< First floating point treatment parameter TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME, ///< Heparin bolus volume (in mL) TREATMENT_PARAM_DIALYSATE_TEMPERATURE, ///< Dialysate temperature (in degC) TREATMENT_PARAM_UF_VOLUME, ///< Ultrafiltration volume (in liters) - provided separately by UI NUM_OF_TREATMENT_PARAMS ///< Total number of treatment parameters }; typedef enum Treatment_Params TREATMENT_PARAM_T; ///< Type for treatment parameters enumeration /// Enumeration of dialyzer types. enum Dialyzer_Types { DIALYZER_TYPE_NIPRO_ELISIO_H_17 = 0, ///< Nipro Elisio H17 dialyzer DIALYZER_TYPE_NIPRO_ELISIO_H_19, ///< Nipro Elisio H19 dialyzer DIALYZER_TYPE_FRESENIUS_OPTIFLUX_F160NRE, ///< Fresenius Optiflux F160NRe DIALYZER_TYPE_FRESENIUS_OPTIFLUX_F180NRE, ///< Fresenius Optiflux F180NRe NUM_OF_DIALYZER_TYPES ///< Number of dialyzer types }; typedef enum Dialyzer_Types DIALYZER_TYPE_T; ///< Type for dialyzer types enumeration /// Enumeration of acid concentrates. enum Acid_Concentrates { ACID_CONC_TYPE_FRESENIUS_08_1251_1 = 0, ///< Fresensius Naturalyte Acid Concentrate 08-1251-1 ACID_CONC_TYPE_FRESENIUS_08_2251_0, ///< Fresensius Naturalyte Acid Concentrate 08-1251-1 ACID_CONC_TYPE_FRESENIUS_08_3251_9, ///< Fresensius Naturalyte Acid Concentrate 08-1251-1 NUM_OF_ACID_CONC_TYPES ///< Number of acid concentrates }; typedef enum Acid_Concentrates ACID_CONCENTRATE_TYPE_T; ///< Type for acid concentrates enumeration /// Enumeration of bicarbonate concentrates. enum Bicarb_Concentrates { BICARB_CONC_TYPE_FRESENIUS_CENTRISOL = 0, ///< Fresenius Centrisol Liquid Bicarbonate NUM_OF_BICARB_CONC_TYPES ///< Number of bicarbonate concentrates }; typedef enum Bicarb_Concentrates BICARB_CONCENTRATE_TYPE_T; ///< Type for bicarbonate concentrates enumeration /// Enumeration of heparin states. enum Heparin_States { HEPARIN_STATE_OFF = 0, ///< No heparin delivery is in progress HEPARIN_STATE_PAUSED, ///< Heparin delivery paused HEPARIN_STATE_INITIAL_BOLUS, ///< Initial heparin bolus delivery in progress HEPARIN_STATE_DISPENSING, ///< Gradual heparin dispensing in progress HEPARIN_STATE_COMPLETED, ///< Heparin delivery stopped due to the set stop time before treatment end HEPARIN_STATE_EMPTY, ///< Heparin Syringe empty NUM_OF_HEPARIN_STATES ///< Number of saline bolus states }; typedef enum Heparin_States HEPARIN_STATE_T; ///< Type for heparin state enumeration /// Enumeration of heparin command IDs. enum Heparin_Commands { HEPARIN_CMD_PAUSE = 0, ///< Pause Heparin command HEPARIN_CMD_RESUME, ///< Resume Heparin command NUM_OF_HEPARIN_CMDS ///< Number of Heparin commands }; typedef enum Heparin_Commands HEPARIN_CMD_T; ///< Type for HEPARIN command IDs enumeration /// Enumeration of start/stop command parameters. enum Saline_Commands { SALINE_CMD_STOP = 0, ///< Start command SALINE_CMD_START, ///< Stop command NUM_OF_SALINE_CMDS ///< Number of start/stop command parameters }; typedef enum Saline_Commands SALINE_CMD_T; ///< Type for saline command enum. /**@}*/ #endif