#pragma once // TODO REMOVE // General defines #define UI_MSG_BB_STATUS_INDEX 4 #define UI_MSG_BB_PAYLOAD_ID 0x63 #define SECONDS_PER_MINUTE 60 #define MINUTES_PER_HOUR 60 #define MILLISECONDS_PER_SECOND 1000 #define MILLILITERS_PER_LITER 1000 #define ACCEPT_VALUE 1 #define REJECT_VALUE 0 #define NEARLY_ZERO 0.00000001 #define CONFIRM_CMD_ACCEPT_CLOSE 3 // TODo remove #define PASS_RESULT 1 // TODO remove #define DEVICE_ID 1234 // Timer event defines #define DEFAULT_TIMEOUT_S 10 #define QOBJECT_TIMER_TIMEOUT_MS 100 #define PROGRESS_TIME_BC_INTERVAL_MS 1000 #define PRORGESS_TIME_BC_QART_INT_MS 250 #define NUM_OF_COUNTS_TIMER_BC_EMIT (PROGRESS_TIME_BC_INTERVAL_MS / QOBJECT_TIMER_TIMEOUT_MS) #define NUN_OF_COUNTS_QART_BC_EMIT (PRORGESS_TIME_BC_QART_INT_MS / QOBJECT_TIMER_TIMEOUT_MS) #define NUM_OF_COUNTS_TIMER_2_CONTROL (PROGRESS_TIME_BC_INTERVAL_MS / QOBJECT_TIMER_TIMEOUT_MS) #define NUM_OF_COUNTS_TO_BC_MSG 3 // TODO remove // Treatment params #define MIN_DIAL_RATE_MLPM 50 #define MAX_DIAL_RATE_MLPM 600 #define MIN_BLOOD_RATE_MLPM 100 #define MAX_BLOOD_RATE_MLPM 500 #define MIN_TX_TIME_MINS (1 * MINUTES_PER_HOUR) #define MAX_TX_TIME_MINS (8 * MINUTES_PER_HOUR) #define MIN_UF_VOL_L 0.0 #define MAX_UF_VOL_L 8.0 #define MAX_UF_VOL_ML (MAX_UF_VOL_L * MILLILITERS_PER_LITER) #define MIN_UF_RATE_MLPM 0.0 #define MAX_UF_RATE_MLPM (2000.0 / MINUTES_PER_HOUR) #define ACID_TYPES_1251_1_K 1.0 // TODO remove? #define ACID_TYPES_CALCIUM 2.5 #define ACID_TYPES_BICARB 33 #define ACID_TYPES_SODIUM 137 #define DEF_TX_ELAPSED_TIME_S (2 * MINUTES_PER_HOUR) * SECONDS_PER_MINUTE #define DEF_TX_PARAM_PRESCRIBED_DUR_MIN (4 * MINUTES_PER_HOUR) //((4 * MINUTES_PER_HOUR) + 30) // TODO why 30 extra minutes #define DEF_TX_PARAM_PRESCRIBED_DUR_S DEF_TX_PARAM_PRESCRIBED_DUR_MIN * SECONDS_PER_MINUTE #define DEF_TX_PARAM_UF_VOLUME_L 2.0 #define DEF_TX_PARAM_BLOOD_FLOW_RATE_MLPM 400 #define DEF_TX_PARAM_DIAL_FLOW_RATE_MLPM 350 #define DEF_TX_PARAM_SALINE_BOLUS_VOL_ML 100 #define DEF_TX_PARAM_RINSEBACK_FLOW_RATE_MLPM 250 #define DEF_TX_PARAM_ART_PRES_LIMIT_WIN_MMHG 120 #define DEF_TX_PARAM_VEN_PRES_LIMIT_WIN_MMHG 100 #define DEF_TX_PARAM_VEN_PRES_LIMIT_ASYM_WIN_MMHG 20 #define DEF_TX_PARAM_DIA_TEMPERATURE_C 37.0 #define DEF_TX_SYSTOLIC_PRESSURE 120 #define DEF_TX_DIASTOLIC_PRESSURE 80 #define DEF_TX_HEART_BEAT 100 // Arterial /Venous limits #define MIN_ART_PRES_LIMIT_MMHG -300.0 #define MAX_ART_PRES_LIMIT_MMHG 100.0 #define MIN_VEN_PRES_LIMIT_MMHG 20.0 #define MAX_VEN_PRES_LIMIT_MMHG 400.0 #define MAX_TMP_PRES_LIMIT_MMHG 100.0 #define MIN_TMP_PRES_LIMIT_MMHG -500.0 #define OCCLUSION_STABLE_TIME_COUNT (10 * MILLISECONDS_PER_SECOND) / QOBJECT_TIMER_TIMEOUT_MS // Initiate treatment #define INITIATE_TREATMENT 1 #define ALLOW_DIALYSATE_DELIVER 1 #define BYPASS_DIALYSATE_DELIVER 0 // Treatment defines #define BLOOD_PRIME_VOLUME_ML (106.6 + 40) #define BLOOD_PRIME_START_FLOW_MLPM 250 #define BLOOD_PRIME_FLOW_INTEGRATOR (1.0 / (SECONDS_PER_MINUTE * (MILLISECONDS_PER_SECOND / QOBJECT_TIMER_TIMEOUT_MS))) #define BLOOD_PRIME_PAUSE_TIMEOUT_S (5 * SECONDS_PER_MINUTE) #define BLOOD_PRIME_RESUME 1 #define BLOOD_PRIME_PAUSE 2 #define BLOOD_PRIME_RAMP_STATE 1 // Heparin substates #define HEPARIN_OFF_SUBSTATE 0 #define HEPARIN_PAUSED_SUBSTATE 2 #define HEPARIN_DISPENSING_SUBSTATE 4 #define HEPARIN_COMPLETED_SUBSTATE 5 // Ultrafiltration substates #define UF_PAUSESD_STATE 0 #define UF_RUNNING_STATE 1 // Rinseback defines #define RINSEBACK_MIN_FLOW_RATE_MLPM 100 #define RINSEBACK_MAX_RLOW_RATE_MLPM 300 #define RINSEBACK_ADJ_FLOW_RATE_MLPM 25 #define RINSEBACK_BACK_MAX_TIME_S (5 * SECONDS_PER_MINUTE) #define RINSEBACK_END_TREATMENT_SIGNAL 999 #define RINSEBACK_STOP_INIT_STATE 0 #define RINSEBACK_RUN_STATE 1 #define RINSEBACK_PAUSE_STATE 2 #define RINSEBACK_STOP_STATE 3 // Fluid Bolus defines #define FLUID_BOLUS_START_CMD 1 #define ENABLE_BOLUS 1 enum User_Command_ID { CMD_NONE = -1, CMD_STAND_BY = 0, CMD_PRE_TX = 1, CMD_BLOOD_PRIME = 2, CMD_MAIN_TX = 3, CMD_END_TX = 11, CMD_DISINFECTION = 12, CMD_HIGH_PRIO_ALARM = 13, CMD_MEDIUM_PRIO_ALARM = 14, CMD_LOW_PRIO_ALARM = 15, NUM_OF_USER_CMDS = 16, }; enum Treatment_States { TREAT_START_STATE = 0, TREAT_BLOOD_PRIME_STATE = 1, TREAT_DIALYSIS_STATE = 2, TREAT_PAUSED_STATE = 3, TREAT_RINSEBACK_STATE = 4, TREAT_RECIRC_STATE = 5, TREAT_END_STATE = 6, TREAT_ISO_UF_STATE = 7, TREAT_SALINE_BOLUS_STATE = 8, TREAT_DIALYSIS_PAUSED_STATE = 9, }; enum Fluid_Bolus_States { FLUID_BOLUS_IDLE_STATE = 0, FLUID_BOLUS_WAIT_FOR_PUMPS_STOP_STATE = 1, FLUID_BOLUS_SALINE_IN_PROGRESS_STATE = 2, FLUID_BOLUS_SUBSITUTE_IN_PROGRESS_STATE = 3, }; enum Dialysis_States { DIALYSIS_UF_STATE = 0, DIALYSIS_UF_PAUSED_STATE = 1, DIALYSIS_UF_FLUID_BOLUS_STATE = 2, }; enum State_Status { STATE_ON_ENTRY = 0, STATE_ON_ACTION, STATE_ON_EXIT, }; enum Broadcast_Type { BC_DELAYED = 0, BC_IMMEDIATELY, }; enum Reject_Reasons { REQUEST_REJECT_REASON_NONE = 0, REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE = 4, REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE = 6, REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT = 7, REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE = 11, REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE = 12, REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS = 14, REQUEST_REJECT_REASON_UF_NOT_PAUSED = 15, REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE = 17, REQUEST_REJECT_REASON_CONFIRMATION_NOT_EXPECTED = 58, REQUEST_REJECT_REASON_CONFIRMATION_MISMATCH = 59, };