/************************************************************************** * * 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) 03-Aug-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; /**@}*/ /** * @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_ALARM_LAMP, ///< Run alarm lamp 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_STUCK_BUTTON, ///< Run stuck button test mode state POST_STATE_VALVES, ///< Run Valves 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; /**@}*/ /** * @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; /**@}*/ /** * @addtogroup HDStandbyMode * @{ */ /// Sub-mode states while in standby mode enum HD_Standby_States { STANDBY_START_STATE = 0, ///< Start standby STANDBY_FLUSH_DG_LINES_STATE, ///< STANDBY_DRAIN_RESERVOIR_STATE, ///< STANDBY_WAIT_FOR_PRIME_STATE, ///< STANDBY_FILL_RESERVOIR_STATE, ///< STANDBY_WAIT_FOR_TREATMENT_STATE, ///< NUM_OF_STANDBY_STATES ///< Number of standby states (sub-modes) }; typedef enum HD_Standby_States HD_STANDBY_STATE_T; /**@}*/ /** * @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; /**@}*/ /** * @addtogroup HDPreTreatmentMode * @{ */ /// Enumeration of pre-treatment mode states. enum HD_Pre_Treatment_Mode_States { HD_PRE_TREATMENT_STATE_START = 0, ///< Start pre-treatment mode 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; /**@}*/ /** * @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_RINSEBACK_PAUSE_STATE, ///< Rinseback paused. Blood pump off. Dialyzer bypassed. Dialysate recirculating. TREATMENT_RECIRC_SETUP_STATE, ///< Rinseback complete. Blood pump off. Blood lines closed. User to disconnect and shunt blood lines. TREATMENT_RECIRC_STATE, ///< Recirculate saline and dialysate while patient disconnected. Blood lines open and shunted. Dialyzer is bypassed. TREATMENT_RECIRC_PAUSE_STATE, ///< Recirculate paused. Blood pump off. Blood lines closed and shunted. Dialyzer is bypassed. TREATMENT_RECIRC_STOP_STATE, ///< Recirculate stopped. Blood pump off. Blood lines open. Waiting for patient to unshunt and connect and resume treatment. 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; /**@}*/ /** * @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; /**@}*/ /** * @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; /**@}*/ /** * @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_SOLUTION_INFUSION_STATE, ///< Solution infusion 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; /// 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; /// Enumeration of system message 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; /// Enumeration of system message 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; /**@}*/ #endif