/**********************************************************************//** * * 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 MsgDefs.h * * @date 27-Feb-2020 * @author S. Nash * * @brief header file for Message Definitions module. * **************************************************************************/ #ifndef __MESSAGE_DEFINITIONS_H__ #define __MESSAGE_DEFINITIONS_H__ // ********** public definitions ********** /// Enumeration of system message IDs. enum Msg_IDs { // normal CAN messages MSG_ID_UNUSED = 0, ///< Zero is an undefined (un-used) message ID). MSG_ID_OFF_BUTTON_PRESS = 1, ///< HD/UI off button interactions. MSG_ID_ALARM_STATUS = 2, ///< HD broadcast of system alarm state information. MSG_ID_ALARM_TRIGGERED = 3, ///< HD broadcast of a triggered alarm. MSG_ID_ALARM_CLEARED = 4, ///< HD broadcast of a cleared alarm. MSG_ID_BLOOD_FLOW_DATA = 5, ///< HD broadcast of blood flow/pump data. MSG_ID_DG_CHECK_IN = 6, ///< DG check-in with HD. MSG_ID_UI_CHECK_IN = 7, ///< UI check-in with HD. MSG_ID_DIALYSATE_FLOW_DATA = 8, ///< HD broadcast of dialysate inlet flow/pump data. MSG_ID_PRESSURE_OCCLUSION_DATA = 9, ///< HD broadcast of pressure/occlusion data. MSG_ID_RTC_EPOCH = 0xA, ///< HD broadcast of current date and time from clock. MSG_ID_DIALYSATE_OUT_FLOW_DATA = 0xB, ///< HD broadcast of dialysate outlet flow/pump/load cell data. MSG_ID_LOAD_CELL_READINGS = 0xC, ///< DG broadcast of load cell weights. MSG_ID_TREATMENT_TIME = 0xD, ///< HD broadcast of treatment time. MSG_ID_POWER_OFF_WARNING = 0xE, ///< HD broadcast power off warning - system power down is imminent. MSG_ID_TREATMENT_STATE = 0xF, ///< HD broadcast of treatment state. MSG_ID_USER_UF_PAUSE_RESUME_REQUEST = 0x10, ///< User request to pause or resume ultrafiltration. MSG_ID_USER_UF_SETTINGS_CHANGE_REQUEST = 0x11, ///< User request to change ultrafiltration settings. MSG_ID_USER_SALINE_BOLUS_REQUEST = 0x12, ///< User request for a saline bolus. MSG_ID_USER_UF_SETTINGS_CHANGE_RESPONSE = 0x13, ///< HD response to user request to change ultrafiltration settings. MSG_ID_USER_SALINE_BOLUS_RESPONSE = 0x14, ///< HD response to user saline bolus request. MSG_ID_USER_CONFIRM_UF_SETTINGS_CHANGE = 0x15, ///< User confirmation of ultrafiltration settings change. MSG_ID_USER_TREATMENT_TIME_CHANGE_REQUEST = 0x16, ///< User request to change treatment duration. MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_REQUEST = 0x17, ///< User request to change blood and dialysate rates. MSG_ID_USER_BLOOD_DIAL_RATE_CHANGE_RESPONSE = 0x18, ///< HD response to user request to change blood and dialysate rates. MSG_ID_SET_DG_DIALYSATE_TEMP_TARGETS = 0x19, ///< HD provides DG with dialysate temperature set points. MSG_ID_TREATMENT_PARAM_CHANGE_RANGES = 0x1A, ///< HD provides several parameter change ranges as they evolve over treatment duration MSG_ID_USER_TREATMENT_TIME_CHANGE_RESPONSE = 0x1B, ///< HD response to user request to change treatment duration. MSG_ID_REQUEST_FW_VERSIONS = 0x1C, ///< UI request for f/w versions. MSG_ID_HD_VERSION = 0x1D, ///< HD f/w version. MSG_ID_DG_VERSION = 0x1E, ///< DG f/w version. MSG_ID_RO_PUMP_DATA = 0x1F, ///< DG broadcast of RO pump data. MSG_ID_DG_PRESSURES_DATA = 0x20, ///< DG broadcast of pressure sensors data. MSG_ID_DG_SWITCH_RESERVOIR_CMD = 0x21, ///< HD request to DG to switch reservoirs (A->B or B->A). MSG_ID_DG_FILL_CMD = 0x22, ///< HD request to DG to fill inactive reservoir. MSG_ID_DG_DRAIN_CMD = 0x23, ///< HD request to DG to drain inactive reservoir. MSG_ID_DRAIN_PUMP_DATA = 0x24, ///< DG broadcast of drain pump data. MSG_ID_HD_OP_MODE = 0x25, ///< HD broadcast current operating mode. MSG_ID_STARTING_STOPPING_TREATMENT_CMD = 0x26, ///< HD request to DG to move in/out of standby mode due to treatment start/stop. MSG_ID_DG_OP_MODE = 0x27, ///< DG broadcast current operating mode. MSG_ID_DG_RESERVOIR_DATA = 0x28, ///< DG broadcast reservoir data. MSG_ID_DG_SAMPLE_WATER_CMD = 0x29, ///< HD request to DG to allow user to get a water sample. MSG_ID_DG_VALVES_STATES = 0x2A, ///< DG broadcast valve states. MSG_ID_DG_START_STOP_TRIMMER_HEATER_CMD = 0x2B, ///< HD request to DG to start/stop trimmer heater. MSG_ID_DG_HEATERS_DATA = 0x2C, ///< DG broadcast of the heaters data MSG_ID_DG_TEMPERATURE_DATA = 0x2D, ///< DG broadcast of the temperature sensors data MSG_ID_USER_UF_SETTINGS_CHANGE_CONFIRMATION_RESPONSE = 0x2E, ///< HD response to user selection of ultrafiltration settings change option selection. // service/test CAN messages MSG_ID_FIRST_TESTER_MESSAGE = 0x8000, ///< First HD test message ID. MSG_ID_TESTER_LOGIN_REQUEST = MSG_ID_FIRST_TESTER_MESSAGE, ///< HD tester log-in. MSG_ID_HD_MESSAGE = 0x8001, ///< HD message. TODO - needed? MSG_ID_OFF_BUTTON_STATE_OVERRIDE = 0x8002, ///< Off button override request. MSG_ID_STOP_BUTTON_STATE_OVERRIDE = 0x8003, ///< Stop button override request. MSG_ID_ALARM_LAMP_PATTERN_OVERRIDE = 0x8004, ///< Alarm lamp pattern override request. MSG_ID_WATCHDOG_TASK_CHECKIN_OVERRIDE = 0x8005, ///< Watchdog task check-in override request. MSG_ID_ALARM_STATE_OVERRIDE = 0x8006, ///< Alarm state override request. MSG_ID_ALARM_TIME_OVERRIDE = 0x8007, ///< Alarm time override request. MSG_ID_BLOOD_FLOW_SET_PT_OVERRIDE = 0x8008, ///< Blood flow set point override request. MSG_ID_BLOOD_FLOW_MEAS_OVERRIDE = 0x8009, ///< Blood flow measured override request. MSG_ID_BLOOD_PUMP_MC_MEAS_SPEED_OVERRIDE = 0x800A, ///< Blood pump motor controller speed override request. MSG_ID_BLOOD_PUMP_MC_MEAS_CURR_OVERRIDE = 0x800B, ///< Blood pump motor controller current override request. MSG_ID_BLOOD_FLOW_SEND_INTERVAL_OVERRIDE = 0x800C, ///< Blood flow broadcast interval override request. MSG_ID_ALARM_STATUS_SEND_INTERVAL_OVERRIDE = 0x800D, ///< Alarm status broadcast interval override request. MSG_ID_BLOOD_PUMP_MEAS_SPEED_OVERRIDE = 0x800E, ///< Blood pump measured motor speed override request. MSG_ID_BLOOD_PUMP_MEAS_ROTOR_SPEED_OVERRIDE = 0x800F, ///< Blood pump measured rotor speed override request. MSG_ID_DIAL_IN_FLOW_SET_PT_OVERRIDE = 0x8010, ///< Dialysate inlet flow set point override request. MSG_ID_DIAL_IN_FLOW_MEAS_OVERRIDE = 0x8011, ///< Dialysate inlet flow measured override request. MSG_ID_DIAL_IN_PUMP_MC_MEAS_SPEED_OVERRIDE = 0x8012, ///< Dialysate inlet pump motor controller speed override request. MSG_ID_DIAL_IN_PUMP_MC_MEAS_CURR_OVERRIDE = 0x8013, ///< Dialysate inlet pump motor controller current override request. MSG_ID_DIAL_IN_FLOW_SEND_INTERVAL_OVERRIDE = 0x8014, ///< Dialysate inlet flow broadcast interval override request. MSG_ID_DIAL_IN_PUMP_MEAS_SPEED_OVERRIDE = 0x8015, ///< Dialysate inlet pump measured motor speed override request. MSG_ID_DIAL_IN_PUMP_MEAS_ROTOR_SPEED_OVERRIDE = 0x8016, ///< Dialysate inlet pump measured rotor speed override request. MSG_ID_PRESSURE_ARTERIAL_OVERRIDE = 0x8017, ///< Arterial pressure measured override request. MSG_ID_PRESSURE_VENOUS_OVERRIDE = 0x8018, ///< Venous pressure measured override request. MSG_ID_OCCLUSION_BLOOD_PUMP_OVERRIDE = 0x8019, ///< Blood pump occlusion pressure measured override request. MSG_ID_OCCLUSION_DIAL_IN_PUMP_OVERRIDE = 0x801A, ///< Dialysate inlet pump occlusion pressure measured override request. MSG_ID_OCCLUSION_DIAL_OUT_PUMP_OVERRIDE = 0x801B, ///< Dialysate outlet pump occlusion pressure measured override request. MSG_ID_PRES_OCCL_SEND_INTERVAL_OVERRIDE = 0x801C, ///< Pressure and occlusion broadcast interval override request. MSG_ID_SET_RTC_DATE_TIME = 0x801D, ///< RTC set date/time request. MSG_ID_DIAL_OUT_FLOW_SEND_INTERVAL_OVERRIDE = 0x801E, ///< Dialysate outlet flow broadcast interval override request. MSG_ID_DIAL_OUT_UF_REF_VOLUME_OVERRIDE = 0x801F, ///< Dialysate outlet - ultrafiltration reference volume override request. MSG_ID_DIAL_OUT_UF_MEAS_VOLUME_OVERRIDE = 0x8020, ///< Dialysate outlet - ultrafiltration measured volume override request. MSG_ID_DIAL_OUT_PUMP_MC_MEAS_SPEED_OVERRIDE = 0x8021, ///< Dialysate outlet pump motor controller speed override request. MSG_ID_DIAL_OUT_PUMP_MC_MEAS_CURR_OVERRIDE = 0x8022, ///< Dialysate outlet pump motor controller current override request. MSG_ID_DIAL_OUT_PUMP_MEAS_SPEED_OVERRIDE = 0x8023, ///< Dialysate outlet pump measured motor speed override request. MSG_ID_DIAL_OUT_PUMP_MEAS_ROTOR_SPEED_OVERRIDE = 0x8024, ///< Dialysate outlet pump measured rotor speed override request. MSG_ID_DIAL_OUT_LOAD_CELL_WEIGHT_OVERRIDE = 0x8025, ///< Load cell measured weight override request. MSG_ID_HD_SAFETY_SHUTDOWN_OVERRIDE = 0x8026, ///< HD safety shutdown override request. MSG_ID_FIRST_DG_TESTER_MESSAGE = 0xA000, ///< First DG test message ID. MSG_ID_DG_TESTER_LOGIN_REQUEST = MSG_ID_FIRST_DG_TESTER_MESSAGE, ///< DG tester log-in. MSG_ID_DG_ALARM_STATE_OVERRIDE = 0xA001, ///< DG alarm state override message ID. MSG_ID_DG_WATCHDOG_TASK_CHECKIN_OVERRIDE = 0xA002, ///< Watchdog check-in override request. MSG_ID_DG_SET_RTC_DATE_TIME = 0xA004, ///< DG RTC set date/time. MSG_ID_LOAD_CELL_OVERRIDE = 0xA005, ///< Load cell sensor override request. MSG_ID_PRESSURE_OVERRIDE = 0xA006, ///< Pressure sensor override request. MSG_ID_PRESSURE_SEND_INTERVAL_OVERRIDE = 0xA007, ///< Pressure data broadcast interval override request. MSG_ID_RO_PUMP_SET_PT_OVERRIDE = 0xA008, ///< RO pump set pt. override request. MSG_ID_RO_MEASURED_FLOW_OVERRIDE = 0xA009, ///< RO measured flow rate override request. MSG_ID_RO_PUMP_SEND_INTERVAL_OVERRIDE = 0xA00A, ///< RO pump data broadcast interval override request. MSG_ID_DRAIN_PUMP_SET_PT_OVERRIDE = 0xA00B, ///< Drain pump set pt. override request. MSG_ID_DRAIN_PUMP_SEND_INTERVAL_OVERRIDE = 0xA00C, ///< Drain pump data broadcast interval override request. MSG_ID_LOAD_CELLL_SEND_INTERVAL_OVERRIDE = 0xA00D, ///< Load cell data broadcast interval override request. MSG_ID_VALVE_STATE_OVERRIDE = 0xA00E, ///< Valve state override request. MSG_ID_VALVES_STATES_PUBLISH_INTERVAL_OVERRIDE = 0xA00F, ///< Valve data broadcast interval override request. MSG_ID_TEMPERATURE_SENSORS_VALUE_OVERRIDE = 0xA010, ///< Temperature sensor override request. MSG_ID_START_STOP_PRIMARY_HEATER = 0xA011, ///< Start/stop primary heaters MSG_ID_TEMPERATURE_SENSORS_PUBLISH_INTERVAL_OVERRIDE = 0xA012, ///< Temperature sensors data publish override MSG_ID_HEATERS_PUBLISH_INTERVAL_ORVERRIDE = 0xA013, ///< Heaters data publish override MSG_ID_DG_SAFETY_SHUTDOWN_OVERRIDE = 0xA014, ///< DG safety shutdown override request. END_OF_MSG_IDS ///< # of system message IDs. }; /// Type for message IDs enumeration. typedef enum Msg_IDs MSG_ID_T; /// Enumeration of settings change rejection reason codes. enum Request_Reject_Reasons { REQUEST_REJECT_REASON_NONE = 0, ///< Used when there is no rejection. REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE, ///< Request is not allowed in the current operating mode. REQUEST_REJECT_REASON_TIMEOUT_WAITING_FOR_USER_CONFIRM, ///< Validated request was not confirmed by user in reasonable time. REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE, ///< Request is not allowed if not in treatment mode. REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE, ///< Request is not allowed in current treatment state. REQUEST_REJECT_REASON_TREATMENT_TOO_CLOSE_TO_FINISHED, ///< Request is not allowed so near end of treatment. REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE, ///< Treatment duration is out of range. REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT, ///< Treatment time change is less than currently elapsed treatment time. REQUEST_REJECT_REASON_BLOOD_FLOW_OUT_OF_RANGE, ///< Blood flow is out of range. REQUEST_REJECT_REASON_DIAL_FLOW_OUT_OF_RANGE, ///< Dialysate flow is out of range. REQUEST_REJECT_REASON_DIAL_VOLUME_OUT_OF_RANGE, ///< Dialysate flow rate or treatment duration causes dialysate volume to exceed limit. REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE, ///< Ultrafiltration volume is out of range. REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE, ///< Ultrafiltration rate is out of range. REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_MINIMUM, ///< Treatment time change is less than minimum treatment time. REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS, ///< Ultrafiltration is not currently in progress. REQUEST_REJECT_REASON_UF_NOT_PAUSED, ///< Ultrafiltration is not currently paused. REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS, ///< A saline bolus is in progress. NUM_OF_REQUEST_REJECT_REASONS ///< Number of settings change reject codes. }; /// Type for settings change rejection reason codes enumeration. typedef enum Request_Reject_Reasons REQUEST_REJECT_REASON_CODE_T; #endif