Index: leahi_dialin/common/alarm_defs.py =================================================================== diff -u -rfc99e89f17c6c06ee5b783d92eabf405de39abf9 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/common/alarm_defs.py (.../alarm_defs.py) (revision fc99e89f17c6c06ee5b783d92eabf405de39abf9) +++ leahi_dialin/common/alarm_defs.py (.../alarm_defs.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -56,10 +56,10 @@ ALARM_ID_TD_VOLTAGE_OUT_OF_RANGE = 33 ALARM_ID_TD_AC_POWER_LOST = 34 ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT = 35 - ALARM_ID_DD_CD1_SENSOR_FPGA_FAULT = 36 - ALARM_ID_DD_CD2_SENSOR_FPGA_FAULT = 37 - ALARM_ID_DD_CD3_SENSOR_FPGA_FAULT = 38 - ALARM_ID_DD_CD4_SENSOR_FPGA_FAULT = 39 + ALARM_ID_DD_D17_COND_SENSOR_FPGA_FAULT = 36 + ALARM_ID_DD_D27_COND_SENSOR_FPGA_FAULT = 37 + ALARM_ID_DD_D29_COND_SENSOR_FPGA_FAULT = 38 + ALARM_ID_DD_D43_COND_SENSOR_FPGA_FAULT = 39 ALARM_ID_TD_VENOUS_BUBBLE_DETECTED = 40 ALARM_ID_TD_CARTRIDGE_DOOR_OPENED = 41 ALARM_ID_TD_STUCK_BUTTON_TEST_FAILED = 42 @@ -72,26 +72,26 @@ ALARM_ID_TD_VENOUS_PRESSURE_OUT_OF_RANGE = 49 ALARM_ID_TD_VENOUS_PRESSURE_SELF_TEST_FAILURE = 50 ALARM_ID_TD_PRE_TREATMENT_DRY_PRESSURE_TEST_FAILURE = 51 - ALARM_ID_DD_CP1_SPEED_CONTROL_ERROR = 52 - ALARM_ID_DD_CP2_SPEED_CONTROL_ERROR = 53 + ALARM_ID_DD_D11_PUMP_SPEED_CONTROL_ERROR = 52 + ALARM_ID_DD_D10_PUMP_SPEED_CONTROL_ERROR = 53 ALARM_ID_DD_CONC_PUMP_HALL_SENSOR_OUT_OF_RANGE = 54 ALARM_ID_DD_CONCENTRATE_PUMP_FAULT = 55 ALARM_ID_DD_TEMPERATURE_SENSOR_OUT_OF_RANGE = 56 ALARM_ID_DD_RTD_SENSORS_FPGA_FAULT = 57 ALARM_ID_DD_BARO_SENSOR_FPGA_FAULT = 58 ALARM_ID_DD_BAROMETRIC_SENSOR_COEFFS_BAD_CRC = 59 - ALARM_ID_DD_FRESH_DIALYSATE_PUMP_RPM_OUT_OF_RANGE = 60 - ALARM_ID_DD_FRESH_DIALYSATE_PUMP_OFF_FAULT = 61 - ALARM_ID_DD_FRESH_DIALYSATE_PUMP_CURRENT_OUT_OF_RANGE = 62 - ALARM_ID_DD_FRESH_DIALYSATE_PUMP_DIRECTION_INVALID = 63 - ALARM_ID_DD_FRESH_DIALYSATE_PUMP_DIRECTION_FPGA_FAULT = 64 - ALARM_ID_DD_SPENT_DIALYSATE_PUMP_RPM_OUT_OF_RANGE = 65 - ALARM_ID_DD_SPENT_DIALYSATE_PUMP_OFF_FAULT = 66 - ALARM_ID_DD_SPENT_DIALYSATE_PUMP_CURRENT_OUT_OF_RANGE = 67 - ALARM_ID_DD_SPENT_DIALYSATE_PUMP_DIRECTION_INVALID = 68 - ALARM_ID_DD_SPENT_DIALYSATE_PUMP_DIRECTION_FPGA_FAULT = 69 - ALARM_ID_DD_FLUID_TOO_LOW_WHILE_PRIMARY_HEATER_IS_ON = 70 - ALARM_ID_DD_FLUID_TOO_LOW_WHILE_TRIMMER_HEATER_IS_ON = 71 + ALARM_ID_DD_D12_PUMP_RPM_OUT_OF_RANGE = 60 + ALARM_ID_DD_D12_PUMP_OFF_FAULT = 61 + ALARM_ID_DD_D12_PUMP_CURRENT_OUT_OF_RANGE = 62 + ALARM_ID_DD_D12_PUMP_DIRECTION_INVALID = 63 + ALARM_ID_DD_D12_PUMP_DIRECTION_FPGA_FAULT = 64 + ALARM_ID_DD_D48_PUMP_RPM_OUT_OF_RANGE = 65 + ALARM_ID_DD_D48_PUMP_OFF_FAULT = 66 + ALARM_ID_DD_D48_PUMP_CURRENT_OUT_OF_RANGE = 67 + ALARM_ID_DD_D48_PUMP_DIRECTION_INVALID = 68 + ALARM_ID_DD_D48_PUMP_DIRECTION_FPGA_FAULT = 69 + ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D5_HEAT_IS_ON = 70 + ALARM_ID_DD_FLUID_TOO_LOW_WHILE_D45_HEAT_IS_ON = 71 ALARM_ID_DD_WATER_INLET_INPUT_PRES_TIMEOUT_FAULT = 72 ALARM_ID_DD_WATER_INLET_OUTPUT_PRES_TIMEOUT_FAULT = 73 ALARM_ID_DD_INLET_WATER_PRESSURE_IN_LOW_RANGE = 74 @@ -106,5 +106,13 @@ ALARM_ID_RO_CAN_MESSAGE_NOT_ACKED_BY_DD = 83 ALARM_ID_RO_FPGA_COMM_TIMEOUT = 84 ALARM_ID_RO_COMM_TOO_MANY_BAD_CRCS = 85 + ALARM_ID_RO_VALVE_CONTROL_FAILURE = 86 + ALARM_ID_DD_BC_STATE1_FILL_START_PRESSURE_OUT_OF_RANGE = 87 + ALARM_ID_DD_BC_STATE1_FILL_END_PRESSURE_OUT_OF_RANGE = 88 + ALARM_ID_DD_BC_STATE2_FILL_START_PRESSURE_OUT_OF_RANGE = 89 + ALARM_ID_DD_BC_STATE2_FILL_END_PRESSURE_OUT_OF_RANGE = 90 + ALARM_ID_DD_GEND_HYD_CHAMBER_PRESS_OUT_OF_RANGE = 91 + ALARM_ID_DD_GEND_FRESH_DIAL_PRESS_OUT_OF_RANGE = 92 + ALARM_ID_DD_GEND_SPENT_DIAL_PRESS_OUT_OF_RANGE = 93 Index: leahi_dialin/common/dd_defs.py =================================================================== diff -u -rfd7a25d8f068bcba594c01410a02a03f6afbcd59 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision fd7a25d8f068bcba594c01410a02a03f6afbcd59) +++ leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -31,39 +31,30 @@ NUM_OF_DD_MODES = 9 @unique -class DGInitStates(DialinEnum): - DG_POST_STATE_START = 0 - DG_POST_STATE_FW_COMPATIBILITY = 1 - DG_POST_STATE_FW_INTEGRITY = 2 - DG_POST_STATE_FPGA = 3 - DG_POST_STATE_RTC = 4 - DG_POST_STATE_NVDATAMGMT = 5 - DG_POST_STATE_TEMPERATURE_SENSORS = 6 - DG_POST_STATE_ACCELEROMETER = 7 - DG_POST_STATE_PRESSURES = 8 - DG_POST_STATE_RO_PUMP = 9 - DG_POST_STATE_DRAIN_PUMP = 10 - DG_POST_STATE_CONCENTRATE_PUMPS = 11 - DG_POST_STATE_CONDUCTIVITY_SENSORS = 12 - DG_POST_STATE_RESERVOIRS = 13 - DG_POST_STATE_UV_REACTORS = 14 - DG_POST_STATE_THERMISTORS = 15 - DG_POST_STATE_FANS = 16 - DG_POST_STATE_DIALYSATE_FLOW_SENSOR = 17 - DG_POST_STATE_WATCHDOG = 18 - DG_POST_STATE_SAFETY_SHUTDOWN = 19 - DG_POST_STATE_LOAD_CELL = 20 - DG_POST_STATE_COMPLETED = 21 - DG_POST_STATE_FAILED = 22 - NUM_OF_DG_POST_STATES = 23 +class DDPostStates(DialinEnum): + DD_POST_STATE_START = 0 + DD_POST_STATE_FW_COMPATIBILITY = 1 + DD_POST_STATE_FW_INTEGRITY = 2 + DD_POST_STATE_FPGA = 3 + DD_POST_STATE_NVDATAMGMT = 4 + DD_POST_STATE_TEMPERATURE_SENSORS = 5 + DD_POST_STATE_PRESSURES = 6 + DD_POST_STATE_DIALYSATE_PUMPS = 7 + DD_POST_STATE_CONCENTRATE_PUMPS = 8 + DD_POST_STATE_CONDUCTIVITY_SENSORS = 9 + DD_POST_STATE_WATCHDOG = 10 + DD_POST_STATE_SAFETY_SHUTDOWN = 11 + DD_POST_STATE_COMPLETED = 12 + DD_POST_STATE_FAILED = 13 + NUM_OF_DD_POST_STATES = 14 @unique -class DGFaultStates(DialinEnum): - DG_FAULT_STATE_START = 0 # DG fault start state - DG_FAULT_STATE_RUN_NV_POSTS = 1 # DG fault run RTC and NV data management post - DG_FAULT_STATE_COMPLETE = 2 # DG fault complete - NUM_OF_DG_FAULT_STATES = 3 # Number of fault mode states +class DDFaultStates(DialinEnum): + DD_FAULT_STATE_START = 0 # DD fault start state + DD_FAULT_STATE_RUN_NV_POSTS = 1 # DD fault run RTC and NV data management post + DD_FAULT_STATE_COMPLETE = 2 # DD fault complete + NUM_OF_DD_FAULT_STATES = 3 # Number of fault mode states @unique class DGSoloStates(DialinEnum): @@ -74,33 +65,24 @@ @unique class DGStandByModeStates(DialinEnum): - DG_STANDBY_MODE_STATE_IDLE = 0 # Idle standby mode state - DG_STANDBY_MODE_STATE_FLUSH_FILTER = 1 # Sample water flush filter state - DG_STANDBY_MODE_STATE_FLUSH_FILTER_IDLE = 2 # Sample water flush filter idle state - DG_STANDBY_MODE_STATE_SAMPLE_WATER = 3 # Sample water state - DG_STANDBY_MODE_STATE_PAUSE = 4 # Pause state - NUM_OF_DG_STANDBY_MODE_STATES = 5 # Number of standby mode states + DD_STANDBY_MODE_STATE_IDLE = 0 # Idle standby mode state + DD_STANDBY_MODE_STATE_PAUSE = 1 # Pause state + NUM_OF_DD_STANDBY_MODE_STATES = 2 # Number of standby mode states @unique -class DGGenIdleModeStates(DialinEnum): - DG_GEN_IDLE_MODE_STATE_START = 0 - DG_GEN_IDLE_MODE_STATE_FLUSH_WATER = 1 - DG_GEN_IDLE_MODE_STATE_HANDLE_BAD_FILL = 2 - NUM_OF_DG_GEN_IDLE_MODE_STATES = 3 +class DDGenDialysateModeStates(DialinEnum): + DD_GEND_STATE_START = 0 # Gen dialysate start state + DD_GEND_HYD_CHAMBER_WATER_INLET_CHECK_STATE = 1 # Gen dialysate Hydraulic chamber water inlet check state + DD_GEND_HYD_CHAMBER_PRESSURE_CHECK_STATE = 2 # Gen dialysate Hydraulic chamber pressure check state + DD_GEND_FRESH_DIALYSATE_PRESSURE_CHECK_STATE = 3 # Gen dialysate fresh dialysate pressure check state + DD_GEND_SPENT_DIALYSATE_PRESSURE_CHECK_STATE = 4 # Gen dialysate spent dialysate pressure check state + DD_GEND_PRODUCE_DIALYSATE_STATE = 5 # Gen dialysate - produce dialysate state + DD_GEND_DIALYSATE_DELIVERY_STATE = 6 # Gen dialysate - deliver dialysate state + DD_GEND_DIALYSATE_DELIVERY_PAUSE = 7 # Gen dialysate - dialysate delivery pause state + NUM_OF_DD_GEND_MODE_STATES = 8 # Number of gen dialysate states - @unique -class DGGenIdleModeBadFillSubStates(DialinEnum): - DG_HANDLE_BAD_FILL_STATE_START = 0 - DG_HANDLE_BAD_FILL_STATE_FIRST_DRAIN = 1 - DG_HANDLE_BAD_FILL_STATE_FLUSH_FILL = 2 - DG_HANDLE_BAD_FILL_STATE_SECOND_DRAIN = 3 - DG_HANDLE_BAD_FILL_STATE_REFILL = 4 - NUM_OF_DG_HANDLE_BAD_FILL_STATES = 6 - - -@unique class DGFillModeStates(DialinEnum): DG_FILL_MODE_STATE_TEST_INLET_WATER = 0 # Test inlet water quality state DG_FILL_MODE_STATE_PRIME_CONCENTRATE_LINES = 1 # Prime the acid and bicarb concentrate lines @@ -287,32 +269,20 @@ @unique -class DGEventList(DialinEnum): - DG_EVENT_STARTUP = 0 # DG startup event - DG_EVENT_OP_MODE_CHANGE = 1 # DG Op mode change event - DG_EVENT_SUB_MODE_CHANGE = 2 # DG Op sub-mode change event - DG_EVENT_CONCENTRATE_CAP_SWITCH_CHANGE = 3 # DG concentrate cap switch change - DG_EVENT_DIALYSATE_CAP_SWITCH_CHANGE = 4 # DG dialysate cap switch change - DG_EVENT_CPU_RAM_ERROR_STATUS = 5 # DG processor RAM error - DG_EVENT_CAL_RECORD_UPDATE = 6 # DG new calibration record updated - DG_EVENT_SYSTEM_RECORD_UPDATE = 7 # DG new system record has been updated - DG_EVENT_SERVICE_UPDATE = 8 # DG new service record has been updated - DG_EVENT_USAGE_INFO_UPDATE = 9 # DG new usage information has been updated - DG_EVENT_SW_CONFIG_UPDATE = 10 # DG new software configuration has been updated - DG_EVENT_SCHEDULED_RUNS_UPDATE = 11 # DG new scheduled runs information has been updated - DG_EVENT_HEATERS_INFO_UPDATE = 12 # DG new heaters information has been updated - DG_EVENT_AVG_DIALYSATE_FILL_COND_VALUES = 13 # DG average dialysate fill conductivity values - DG_EVENT_RESERVOIR_FILL_VALUES = 14 # DG reservoir fill base reservoir weight and filled volume values - DG_EVENT_OPERATION_STATUS = 15 # DG operation status event - DG_EVENT_TEMPERATURE_DRIFT = 16 # DG temperature drift event - DG_EVENT_BICARB_CHECK_RESULT = 17 # DG bicarb check result - DG_EVENT_ACID_CHECK_RESULT = 18 # DG acid check result - DG_EVENT_COND1_VS_COND2_DIFF_RESULT = 19 # DG CD1 (acid) vs. CD2 (bicarb) different result - NUM_OF_DG_EVENT_IDS = 20 # Total number of DG events +class DDEventList(DialinEnum): + DD_EVENT_STARTUP = 0 # DD startup event + DD_EVENT_OP_MODE_CHANGE = 1 # DD Op mode change event + DD_EVENT_SUB_MODE_CHANGE = 2 # DD Op sub-mode change event + DD_EVENT_OPERATION_STATUS = 3 # DD operation status event + DD_EVENT_D6_LEVL_CHANGE = 4 # DD floater level change event + DD_EVENT_D63_LEVL_CHANGE = 5 # DD bicarb level change event + DD_EVENT_D46_LEVL_CHANGE = 6 # DD spent dialysate air seperation level change event + DD_EVENT_TD_COMMUNICATION_LOSS = 7 # DD TD communication loss + NUM_OF_DD_EVENT_IDS = 8 # Total number of DD events @unique -class DGEventDataType(DialinEnum): +class DDEventDataType(DialinEnum): EVENT_DATA_TYPE_NONE = 0 EVENT_DATA_TYPE_U32 = 1 EVENT_DATA_TYPE_S32 = 2 @@ -322,6 +292,23 @@ @unique -class DGServiceModesStates(DialinEnum): - DG_SERVICE_STATE_START = 0 # Start service mode state - NUM_OF_DG_SERVICE_STATES = 1 # Number of service mode states +class DDServiceModesStates(DialinEnum): + DD_SERVICE_STATE_START = 0 # Start service mode state + NUM_OF_DD_SERVICE_STATES = 1 # Number of service mode states + +@unique +class DDBalancingChamberStates(DialinEnum): + BAL_CHAMBER_STATE_START = 0, # Initial state of balancing chamber + BAL_CHAMBER_STATE1_FILL_START = 1 # Balancing chamber state 1 fill start state + BAL_CHAMBER_STATE1_BICARB_ACID_DOSING_CNTRL = 2 # Balancing Chamber state 1 Bicarb and acid dosing control state + BAL_CHAMBER_STATE1_FILL_END = 3 # Balancing Chamber state 1 fill end state + BAL_CHAMBER_STATE2_FILL_START = 4 # Balancing chamber state 2 fill start state + BAL_CHAMBER_STATE2_BICARB_ACID_DOSING_CNTRL = 5 # Balancing Chamber state 2 Bicarb and acid dosing control state + BAL_CHAMBER_STATE2_FILL_END = 6 # Balancing Chamber state 2 fill end state + NUM_OF_BAL_CHAMBER_EXEC_STATES = 7 # Number of balancing chamber states + +@unique +class DDBalancingChamberSwitchStates(DialinEnum): + BAL_CHAMBER_SW_STATE1 = 0 # Balancing chamber switching state 1 (V2,V5 and V3, V8 open, rest closed) + BAL_CHAMBER_SW_STATE2 = 1 # Balancing chamber switching state 2 ( V1,V6 and V4, V7 open, rest closed) + NUM_OF_BAL_CHAMBER_SW = 2 # Number of balancing chamber states \ No newline at end of file Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -redeb521717fef448fbf0247de283e49df13b07b0 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision edeb521717fef448fbf0247de283e49df13b07b0) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -183,10 +183,11 @@ MSG_ID_DD_BC_VALVE_STATES_OVERRIDE_REQUEST = 0xA036 MSG_ID_DD_BC_SWITCH_ONLY_START_STOP_OVERRIDE_REQUEST = 0xA037 MSG_ID_DD_HYD_CHAMBER_TARGET_TEMP_OVERRIDE_REQUEST = 0xA038 + MSG_ID_DD_BC_SWITCH_ONLY_START_STOP_OVERRIDE_REQUEST = 0xA039 MSG_ID_DD_PISTON_PUMP_DATA_PUBLISH_OVERRIDE_REQUEST = 0xAF00 MSG_ID_DD_PISTON_PUMP_START_STOP_OVERRIDE_REQUEST = 0xAF01 - + MSG_ID_FIRST_RO_TESTER_MESSAGE = 0xB000 MSG_ID_RO_SOFTWARE_RESET_REQUEST = 0xB001 MSG_ID_RO_SEND_TEST_CONFIGURATION = 0xB002 @@ -204,6 +205,17 @@ MSG_ID_RO_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00E MSG_ID_RO_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00F MSG_ID_RO_LEVEL_OVERRIDE_REQUEST = 0xB010 + MSG_ID_RO_FLOWS_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB011 + MSG_ID_RO_FLOW_RATE_OVERRIDE_REQUEST = 0xB012 + MSG_ID_RO_FLOW_TEMP_OVERRIDE_REQUEST = 0xB013 + MSG_ID_RO_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB014 + MSG_ID_RO_CONDUCTIVITY_OVERRIDE_REQUEST = 0xB015 + MSG_ID_RO_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST = 0xB016 + MSG_ID_RO_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST = 0xB017 + MSG_ID_RO_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST = 0xB018 + MSG_ID_RO_TEMPERATURE_OVERRIDE_REQUEST = 0xB019 + MSG_ID_RO_FILTERED_FLOW_RATE_OVERRIDE_REQUEST = 0xB01A + MSG_ID_RO_FILTERED_FLOW_TEMP_OVERRIDE_REQUEST = 0xB01B MSG_ID_TD_DEBUG_EVENT = 0xFFF1 MSG_ID_DD_DEBUG_EVENT = 0xFFF2 Index: leahi_dialin/common/ro_defs.py =================================================================== diff -u --- leahi_dialin/common/ro_defs.py (revision 0) +++ leahi_dialin/common/ro_defs.py (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -0,0 +1,55 @@ +########################################################################### +# +# Copyright (c) 2021-2024 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 ro_defs.py +# +# @author (last) Dara Navaei +# @date (last) 08-Feb-2024 +# @author (original) Peter Lucia +# @date (original) 22-Jun-2021 +# +############################################################################ +from enum import unique +from ..utils.base import DialinEnum + +@unique +class ROOpModes(DialinEnum): + RO_MODE_FAUL = 0 # Fault mode + RO_MODE_SERV = 1 # Service mode + RO_MODE_INIT = 2 # Initialization & POST mode + RO_MODE_STAN = 3 # Standby mode + RO_MODE_NLEG = 4 # Not legal - an illegal mode transition occurred + NUM_OF_RO_MODES = 5 # Number of TD operation modes + +@unique +class ROPostStates(DialinEnum): + RO_POST_STATE_START = 0 # Start initialize & POST mode state + RO_POST_STATE_FW_INTEGRITY = 1 # Run firmware integrity test state + RO_POST_STATE_NVDATAMGMT = 2 # Run NV Data Mgmt. test state + RO_POST_STATE_WATCHDOG = 3 # Run watchdog test state + RO_POST_STATE_SAFETY_SHUTDOWN = 4 # Run safety shutdown test state + RO_POST_STATE_TEMPERATURES = 5 # Run temperatures POST state + RO_POST_STATE_FW_COMPATIBILITY = 6 # Run firmware compatibility test state + RO_POST_STATE_FPGA = 7 # Run FPGA test state + RO_POST_STATE_COMPLETED = 8 # POST self-tests completed state + RO_POST_STATE_FAILED = 9 # POST self-tests failed state + NUM_OF_RO_POST_STATES = 10 # Number of initialize & POST mode states + +@unique +class ROEventList(DialinEnum): + RO_EVENT_STARTUP = 0 # RO startup event + RO_EVENT_OP_MODE_CHANGE = 1 # RO Op mode change event + RO_EVENT_SUB_MODE_CHANGE = 2 # RO Op sub-mode change event + NUM_OF_RO_EVENT_IDS = 3 # Total number of RO events +@unique +class ROEventDataType(DialinEnum): + EVENT_DATA_TYPE_NONE = 0 + EVENT_DATA_TYPE_U32 = 1 + EVENT_DATA_TYPE_S32 = 2 + EVENT_DATA_TYPE_F32 = 3 + EVENT_DATA_TYPE_BOOL = 4 + NUM_OF_EVENT_DATA_TYPES = 5 \ No newline at end of file Index: leahi_dialin/td/modules/air_pump.py =================================================================== diff -u -rafe332fec54d9d0432dfc0d54aef1debaa92b066 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision afe332fec54d9d0432dfc0d54aef1debaa92b066) +++ leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -47,10 +47,11 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_air_pump_sync) - self.air_pump_state = 0 + self.h12_air_pump_state = 0 + self.h12_air_pump_power = 0 self.td_air_pump_timestamp = 0.0 - @publish(["td_air_pump_timestamp", "air_pump_state"]) + @publish(["td_air_pump_timestamp", "h12_air_pump_state","h12_air_pump_power"]) def _handler_air_pump_sync(self, message, timestamp=0.0): """ Handles published air pump data messages. @@ -60,25 +61,32 @@ """ aps = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])) + app = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) - self.air_pump_state = aps[0] + self.h12_air_pump_state = aps[0] + self.h12_air_pump_power = app[0] self.td_air_pump_timestamp = timestamp - def cmd_air_pump_set_state(self, state: int) -> int: + def cmd_air_pump_set_state(self, state: int, power: int) -> int: """ Constructs and sends the air pump set state command. AIR_PUMP_STATE_INIT = 0, ///< Air Pump Initialize state AIR_PUMP_STATE_OFF, ///< Air Pump Off state AIR_PUMP_STATE_ON, ///< Air Pump On state NUM_OF_AIR_PUMP_STATES, ///< Number of air pump states + Constraints: Must be logged into TD. - + @param state: integer - state value to set the air pump + @param power: integer - 0-255 value to set the air pump power + @return: 1 if successful, zero otherwise """ idx = integer_to_bytearray(state) - payload = idx + pwr = integer_to_bytearray(power) + payload = idx + pwr message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, message_id=MsgIds.MSG_ID_TD_AIR_PUMP_SET_STATE_REQUEST.value, Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -rfc99e89f17c6c06ee5b783d92eabf405de39abf9 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision fc99e89f17c6c06ee5b783d92eabf405de39abf9) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -26,7 +26,8 @@ class AirTrapValves(DialinEnum): - VBT = 0 + H13_VALV = 0 # Air trap intake valve + H20_VALV = 1 # Air trap outlet valve @unique class AirTrapState(DialinEnum): @@ -41,8 +42,8 @@ """ # Air trap level sensor IDs - LOWER_LEVEL_SENSOR = 0 - UPPER_LEVEL_SENSOR = 1 + H17_LOWER_LEVEL_SENSOR = 0 + H16_UPPER_LEVEL_SENSOR = 1 # Air trap level sensor levels AIR_DETECTED_AT_LEVEL = 0 @@ -63,17 +64,19 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_air_trap_sync) - self.lower_level = self.AIR_DETECTED_AT_LEVEL - self.upper_level = self.AIR_DETECTED_AT_LEVEL - self.lower_level_raw = self.AIR_DETECTED_AT_LEVEL - self.upper_level_raw = self.AIR_DETECTED_AT_LEVEL - self.valve_state = 0 + self.h17_lower_level = self.AIR_DETECTED_AT_LEVEL + self.h16_upper_level = self.AIR_DETECTED_AT_LEVEL + self.h17_lower_level_raw = self.AIR_DETECTED_AT_LEVEL + self.h16_upper_level_raw = self.AIR_DETECTED_AT_LEVEL + self.h13_valve_state = 0 + self.h20_valve_state = 0 self.air_control = 0 self.td_air_trap_timestamp = 0.0 - @publish(["td_air_trap_timestamp", "lower_level", "upper_level", - "lower_level_raw", "upper_level_raw", - "valve_state","air_control"]) + @publish(["td_air_trap_timestamp", "h17_lower_level", "h16_upper_level", + "h17_lower_level_raw", "h16_upper_level_raw", + "h13_valve_state","h20_valve_state", + "air_control"]) def _handler_air_trap_sync(self, message, timestamp=0.0): """ Handles published air trap data messages. Air trap data are captured @@ -91,16 +94,19 @@ message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])) raw_upper = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])) - vlv_st = struct.unpack('i', bytearray( + h13_vlv_st = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])) - controlling = struct.unpack('i', bytearray( + h20_vlv_st = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6])) + controlling = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])) - self.lower_level = lower[0] - self.upper_level = upper[0] - self.lower_level_raw = raw_lower[0] - self.upper_level_raw = raw_upper[0] - self.valve_state = vlv_st[0] + self.h17_lower_level = lower[0] + self.h16_upper_level = upper[0] + self.h17_lower_level_raw = raw_lower[0] + self.h16_upper_level_raw = raw_upper[0] + self.h13_valve_state = h13_vlv_st[0] + self.h20_valve_state = h20_vlv_st[0] self.air_control = controlling[0] self.td_air_trap_timestamp = timestamp Index: leahi_dialin/td/modules/blood_flow.py =================================================================== diff -u -rcd4a454309e537e52d2e5c064611ebf986cbe359 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/td/modules/blood_flow.py (.../blood_flow.py) (revision cd4a454309e537e52d2e5c064611ebf986cbe359) +++ leahi_dialin/td/modules/blood_flow.py (.../blood_flow.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -44,15 +44,15 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_blood_flow_sync) self.td_blood_flow_timestamp = 0.0 - self.set_blood_flow_rate = 0 - self.measured_blood_flow_rate = 0.0 - self.measured_blood_pump_rotor_speed = 0.0 - self.measured_blood_pump_speed = 0.0 - self.measured_blood_pump_motor_current = 0.0 - self.set_rpm = 0.0 - self.rotor_count = 0 - self.pres_blood_flow_rate = 0 - self.rotor_hall_state = 0 + self.h4_set_blood_flow_rate = 0 + self.h4_measured_blood_flow_rate = 0.0 + self.h4_measured_blood_pump_rotor_speed = 0.0 + self.h4_measured_blood_pump_speed = 0.0 + self.h4_measured_blood_pump_motor_current = 0.0 + self.h4_set_rpm = 0.0 + self.h4_rotor_count = 0 + self.h4_pres_blood_flow_rate = 0 + self.h4_rotor_hall_state = 0 @publish(["td_blood_flow_timestamp", "set_blood_flow_rate", "measured_blood_flow_rate", "measured_blood_pump_rotor_speed", Index: leahi_dialin/td/modules/bubble_detector.py =================================================================== diff -u -rafe332fec54d9d0432dfc0d54aef1debaa92b066 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/td/modules/bubble_detector.py (.../bubble_detector.py) (revision afe332fec54d9d0432dfc0d54aef1debaa92b066) +++ leahi_dialin/td/modules/bubble_detector.py (.../bubble_detector.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -33,7 +33,7 @@ """ # Air bubble detectors - ADV = 0 # Air bubble Detector Venous + H18_ADV = 0 # Air bubble Detector Venous # Air bubble detectors status BUBBLE_DETECTED_STATUS = 0 # Air bubble detected @@ -60,10 +60,10 @@ self.td_air_bubbles_timestamp = 0.0 # Initialize status of ADV air bubble detectors to fluid (no air bubble) detected - self.air_bubbles_status = [self.FLUID_DETECTED_STATUS] + self.h18_air_bubbles_status = [self.FLUID_DETECTED_STATUS] # Initialize state of ADV air bubble detectors state machine to normal - self.air_bubbles_state = [self.AIR_BUBBLE_NORMAL_STATE] + self.h18_air_bubbles_state = [self.AIR_BUBBLE_NORMAL_STATE] @publish(["td_air_bubbles_timestamp", "air_bubbles_status", "air_bubbles_state"]) def _handler_air_bubbles_data_sync(self, message, timestamp=0.0): @@ -80,8 +80,8 @@ adv_state = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) - self.air_bubbles_status = [adv_status[0]] - self.air_bubbles_state = [adv_state[0]] + self.h18_air_bubbles_status = [adv_status[0]] + self.h18_air_bubbles_state = [adv_state[0]] self.td_air_bubbles_timestamp = timestamp def cmd_air_bubble_status_override(self, status: int, index: int, reset: int = NO_RESET) -> int: Index: leahi_dialin/td/modules/pressure_sensors.py =================================================================== diff -u -rafe332fec54d9d0432dfc0d54aef1debaa92b066 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/td/modules/pressure_sensors.py (.../pressure_sensors.py) (revision afe332fec54d9d0432dfc0d54aef1debaa92b066) +++ leahi_dialin/td/modules/pressure_sensors.py (.../pressure_sensors.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -45,10 +45,10 @@ self._handler_pressure_sync) self.td_pressure_timestamp = 0.0 - self.arterial_pressure = 0.0 - self.venous_pressure = 0.0 - self.arterial_long_filtered_pressure = 0.0 - self.venous_long_filtered_pressure = 0.0 + self.h2_arterial_pressure = 0.0 + self.h14_venous_pressure = 0.0 + self.h2_arterial_long_filtered_pressure = 0.0 + self.h14_venous_long_filtered_pressure = 0.0 self.pressure_limits_state = 0 self.arterial_pressure_limit_min = 0 self.arterial_pressure_limit_max = 0 @@ -57,15 +57,15 @@ @publish([ "td_pressure_timestamp", - "arterial_pressure", - "venous_pressure", + "h2_arterial_pressure", + "h14_venous_pressure", "pressure_limits_state", "arterial_pressure_limit_min", "arterial_pressure_limit_max", "venous_pressure_limit_min", "venous_pressure_limit_max", - "arterial_long_filtered_pressure", - "venous_long_filtered_pressure", + "h2_arterial_long_filtered_pressure", + "h14_venous_long_filtered_pressure", ]) def _handler_pressure_sync(self, message, timestamp=0.0): """ @@ -95,15 +95,15 @@ lfv = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9])) - self.arterial_pressure = art[0] - self.venous_pressure = ven[0] + self.h2_arterial_pressure = art[0] + self.h14_venous_pressure = ven[0] self.pressure_limits_state = pls[0] self.arterial_pressure_limit_min = apl[0] self.arterial_pressure_limit_max = apu[0] self.venous_pressure_limit_min = vpl[0] self.venous_pressure_limit_max = vpu[0] - self.arterial_long_filtered_pressure = lfa[0] - self.venous_long_filtered_pressure = lfv[0] + self.h2_arterial_long_filtered_pressure = lfa[0] + self.h14_venous_long_filtered_pressure = lfv[0] self.td_pressure_timestamp = timestamp def cmd_pressure_sensor_override(self, pressure: float, sensor: int, reset: int = NO_RESET) -> int: Index: leahi_dialin/td/modules/switches.py =================================================================== diff -u -rafe332fec54d9d0432dfc0d54aef1debaa92b066 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/td/modules/switches.py (.../switches.py) (revision afe332fec54d9d0432dfc0d54aef1debaa92b066) +++ leahi_dialin/td/modules/switches.py (.../switches.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -35,7 +35,7 @@ @unique class TDSwitchesNames(DialinEnum): - FRONT_DOOR = 0 + H9_FRONT_DOOR = 0 NUM_OF_DOORS_AND_SWITCHES = 1 @@ -60,7 +60,7 @@ self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_switches_sync) - self.td_switches_status = {TDSwitchesNames.FRONT_DOOR.name: TDSwitchStatus.CLOSED.value} + self.td_switches_status = {TDSwitchesNames.H9_FRONT_DOOR.name: TDSwitchStatus.CLOSED.value} self.td_switches_timestamp = 0.0 @publish(["td_switches_timestamp", "td_switches_status"]) @@ -74,7 +74,7 @@ front_door = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.td_switches_status[TDSwitchesNames.FRONT_DOOR.name] = TDSwitchStatus(front_door).value + self.td_switches_status[TDSwitchesNames.H9_FRONT_DOOR.name] = TDSwitchStatus(front_door).value def cmd_switch_status_override(self, switch: int, status: int, reset: int = NO_RESET) -> int: """ Index: leahi_dialin/td/modules/valves.py =================================================================== diff -u -rfc99e89f17c6c06ee5b783d92eabf405de39abf9 -rd0d72ba74208cb43073ec38c7bbfebb2d32dcc66 --- leahi_dialin/td/modules/valves.py (.../valves.py) (revision fc99e89f17c6c06ee5b783d92eabf405de39abf9) +++ leahi_dialin/td/modules/valves.py (.../valves.py) (revision d0d72ba74208cb43073ec38c7bbfebb2d32dcc66) @@ -29,8 +29,8 @@ @unique class ValvesEnum(DialinEnum): - VBA = 0 - VBV = 1 + H1_VBA = 0 + H19_VBV = 1 @unique @@ -92,8 +92,8 @@ self.td_valves_timestamp = 0.0 # A dictionary of the valves with the status - self.valves_status = {ValvesEnum.VBA.name: {}, - ValvesEnum.VBV.name: {}} + self.valves_status = {ValvesEnum.H1_VBA.name: {}, + ValvesEnum.H19_VBV.name: {}} @publish(["td_valves_timestamp","valves_status"]) def _handler_valves_sync(self, message: dict, timestamp=0.0) -> None: