########################################################################### # # Copyright (c) 2019-2021 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 msg_defs.py # # @author (last) Quang Nguyen # @date (last) 05-Aug-2021 # @author (original) Peter Lucia # @date (original) 07-Aug-2020 # ############################################################################ from enum import unique from ..utils.base import DialinEnum from .msg_ids import MsgIds # Define msg ids that are not yet added to common but are needed in dialin @unique class MsgIdsDialin(DialinEnum): MSG_DIALIN_ID_HD_SERIAL_NUMBER_RESPONSE = 0X87 MSG_DIALIN_ID_DG_SERIAL_NUMBER_RESPONSE = 0X88 MSG_DIALIN_ID_UI_SYSTEM_USAGE_REQUEST = 0x89 MSG_DIALIN_ID_HD_SYSTEM_USAGE_RESPONSE = 0x8A MSG_DIALIN_ID_DG_SYSTEM_USAGE_RESPONSE = 0x8C MSG_DIALIN_ID_HD_FLUID_LEAK_STATE_DETECTOR_OVERRIDE = 0x8047 MSG_DIALIN_ID_HD_VALVES_POSITION_COUNT_OVERRIDE = 0x8058 MSG_DIALIN_ID_HD_DISINFECT_STATE = 0x7E MSG_DIALIN_ID_HD_VERSION_REQUEST = 0x9E MSG_DIALIN_ID_UI_POST_REPORT_VERSION = 0x9F ACK_NOT_REQUIRED = [ MsgIds.MSG_ID_ALARM_CONDITION_CLEARED.value ] @unique class RequestRejectReasons(DialinEnum): REQUEST_REJECT_REASON_NONE = 0 REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE = 1 REQUEST_REJECT_REASON_TIMEOUT_WAITING_FOR_USER_CONFIRM = 2 REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE = 3 REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE = 4 REQUEST_REJECT_REASON_TREATMENT_TOO_CLOSE_TO_FINISHED = 5 REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE = 6 EQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT = 7 REQUEST_REJECT_REASON_BLOOD_FLOW_OUT_OF_RANGE = 8 REQUEST_REJECT_REASON_DIAL_FLOW_OUT_OF_RANGE = 9 REQUEST_REJECT_REASON_DIAL_VOLUME_OUT_OF_RANGE = 10 REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE = 11 REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE = 12 REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_MINIMUM = 13 REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS = 14 REQUEST_REJECT_REASON_UF_NOT_PAUSED = 15 REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS = 16 REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE = 17 REQUEST_REJECT_REASON_HEPARIN_PRESTOP_EXCEEDS_DURATION = 18 REQUEST_REJECT_REASON_ARTERIAL_PRESSURE_LOW_VS_HIGH = 19 REQUEST_REJECT_REASON_VENOUS_PRESSURE_LOW_VS_HIGH = 20 REQUEST_REJECT_REASON_SALINE_MAX_VOLUME_REACHED = 21 REQUEST_REJECT_REASON_SALINE_BOLUS_NOT_IN_PROGRESS = 22 REQUEST_REJECT_REASON_ACTION_DISABLED_IN_CURRENT_STATE = 23 REQUEST_REJECT_REASON_ALARM_IS_ACTIVE = 24 REQUEST_REJECT_REASON_INVALID_COMMAND = 25 REQUEST_REJECT_REASON_TREATMENT_IS_COMPLETED = 26 REQUEST_REJECT_REASON_RINSEBACK_MAX_VOLUME_REACHED = 27 REQUEST_REJECT_REASON_UF_VOLUME_NOT_SET = 28 REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM = 29 REQUEST_REJECT_REASON_HEPARIN_PAUSE_INVALID_IN_THIS_STATE = 30 REQUEST_REJECT_REASON_HEPARIN_NOT_PAUSED = 31 REQUEST_REJECT_REASON_DG_COMM_LOST = 32 REQUEST_REJECT_REASON_DRAIN_NOT_COMPLETE = 33 NUM_OF_REQUEST_REJECT_REASONS = 34 class MsgFieldPositions: # Generic response msg field byte positions (where 32-bit data fields are used) START_POS_FIELD_1 = 6 # Hardcoded for now to avoid cyclic import issue. See protocols.CAN.DenaliMessage class END_POS_FIELD_1 = START_POS_FIELD_1 + 4 START_POS_FIELD_2 = END_POS_FIELD_1 END_POS_FIELD_2 = START_POS_FIELD_2 + 4 START_POS_FIELD_3 = END_POS_FIELD_2 END_POS_FIELD_3 = START_POS_FIELD_3 + 4 START_POS_FIELD_4 = END_POS_FIELD_3 END_POS_FIELD_4 = START_POS_FIELD_4 + 4 START_POS_FIELD_5 = END_POS_FIELD_4 END_POS_FIELD_5 = START_POS_FIELD_5 + 4 START_POS_FIELD_6 = END_POS_FIELD_5 END_POS_FIELD_6 = START_POS_FIELD_6 + 4 START_POS_FIELD_7 = END_POS_FIELD_6 END_POS_FIELD_7 = START_POS_FIELD_7 + 4 START_POS_FIELD_8 = END_POS_FIELD_7 END_POS_FIELD_8 = START_POS_FIELD_8 + 4 START_POS_FIELD_9 = END_POS_FIELD_8 END_POS_FIELD_9 = START_POS_FIELD_9 + 4 START_POS_FIELD_10 = END_POS_FIELD_9 END_POS_FIELD_10 = START_POS_FIELD_10 + 4 START_POS_FIELD_11 = END_POS_FIELD_10 END_POS_FIELD_11 = START_POS_FIELD_11 + 4 START_POS_FIELD_12 = END_POS_FIELD_11 END_POS_FIELD_12 = START_POS_FIELD_12 + 4 START_POS_FIELD_13 = END_POS_FIELD_12 END_POS_FIELD_13 = START_POS_FIELD_13 + 4 START_POS_FIELD_14 = END_POS_FIELD_13 END_POS_FIELD_14 = START_POS_FIELD_14 + 4 START_POS_FIELD_15 = END_POS_FIELD_14 END_POS_FIELD_15 = START_POS_FIELD_15 + 4 START_POS_FIELD_16 = END_POS_FIELD_15 END_POS_FIELD_16 = START_POS_FIELD_16 + 4 START_POS_FIELD_17 = END_POS_FIELD_16 END_POS_FIELD_17 = START_POS_FIELD_17 + 4 START_POS_FIELD_18 = END_POS_FIELD_17 END_POS_FIELD_18 = START_POS_FIELD_18 + 4 START_POS_FIELD_19 = END_POS_FIELD_18 END_POS_FIELD_19 = START_POS_FIELD_19 + 4 START_POS_FIELD_20 = END_POS_FIELD_19 END_POS_FIELD_20 = START_POS_FIELD_20 + 4 START_POS_FIELD_21 = END_POS_FIELD_20 END_POS_FIELD_21 = START_POS_FIELD_21 + 4 START_POS_FIELD_22 = END_POS_FIELD_21 END_POS_FIELD_22 = START_POS_FIELD_22 + 4 START_POS_FIELD_23 = END_POS_FIELD_22 END_POS_FIELD_23 = START_POS_FIELD_23 + 4 START_POS_FIELD_24 = END_POS_FIELD_23 END_POS_FIELD_24 = START_POS_FIELD_24 + 4 START_POS_FIELD_25 = END_POS_FIELD_24 END_POS_FIELD_25 = START_POS_FIELD_25 + 4