Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -re45b20cdc5d4c5dcff8cef530b173ca94cb2e422 -r9c2fab5b413da62b218e6a9a12a5752e974071a0 --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision e45b20cdc5d4c5dcff8cef530b173ca94cb2e422) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 9c2fab5b413da62b218e6a9a12a5752e974071a0) @@ -105,7 +105,8 @@ MSG_ID_DD_SERIAL_RESPONSE = 0x52 MSG_ID_TD_TEMPERATURE_DATA = 0x53 MSG_ID_TD_BATTERY_DATA = 0x54 - MSG_ID_FP_PERMEATE_FLUSH_DATA = 0x56 + MSG_ID_UI_ADJUST_PATIENT_DISCONNECT_CONFIRM_REQUEST = 0x55 + MSG_ID_TD_ADJUST_PATIENT_DISCONNECT_CONFIRM_RESPONSE = 0x56 MSG_ID_FP_CONCENTRATE_FLUSH_DATA = 0x57 MSG_ID_FP_GENP_DEF_DATA = 0x58 MSG_ID_FP_PRE_GEN_DEF_DATA = 0x59 @@ -187,8 +188,17 @@ MSG_ID_UI_RECIRCULATE_REQUEST = 0xA6 MSG_ID_TD_RECIRCULATE_RESPONSE = 0xA7 MSG_ID_TD_RECIRCULATE_DATA = 0xA8 + MSG_ID_UI_ADJUST_TREATMENT_LOGS_REQUEST = 0xA9 + MSG_ID_TD_ADJUST_TREATMENT_LOGS_RESPONSE = 0xAA + MSG_ID_TD_WATER_SAMPLE_RESULT_RESPONSE = 0xAB + MSG_ID_TD_WATER_SAMPLE_DATA = 0xAC + MSG_ID_TD_TREATMENT_LOG_AVERAGE_DATA = 0xAD + MSG_ID_TD_TUBE_SET_AUTHENTICATION_REQUEST = 0xAE + MSG_ID_UI_TUBE_SET_AUTHENTICATION_ACK_RESPONSE = 0xAF + MSG_ID_TD_SYRINGE_PUMP_DATA = 0xB1 + MSG_ID_TD_HEPARIN_PAUSE_RESUME_RESPONSE= 0xB2 MSG_ID_DD_SUBSTITUTION_PUMP_DATA = 0xA9 - + MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_DATA = 0xB6 MSG_ID_DD_PISTON_PUMP_CONTROL_DATA = 0xF0 MSG_ID_TD_TESTER_LOGIN_REQUEST = 0x8000 @@ -261,6 +271,19 @@ MSG_ID_TD_TEMPERATURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0x8043 MSG_ID_TD_EJECTOR_OPT_SENSOR_OVERRIDE_REQUEST = 0x8044 MSG_ID_TD_ENABLE_VENOUS_BUBBLE_ALARM = 0x8047 + MSG_ID_TD_SYRINGE_PUMP_OPERATION_REQUEST = 0x8048 + MSG_ID_TD_SYRINGE_PUMP_PUBLISH_INTERVAL_OVERRIDE = 0x8049 + MSG_ID_TD_SYRINGE_PUMP_RATE_OVERRIDE_REQUEST = 0x8050 + MSG_ID_TD_SYRINGE_PUMP_FORCE_OVERRIDE_REQUEST = 0x8051 + MSG_ID_TD_SYRINGE_PUMP_HOME_OVERRIDE_REQUEST = 0x8052 + MSG_ID_TD_SYRINGE_PUMP_POSITION_OVERRIDE_REQUEST = 0x8053 + MSG_ID_TD_SYRINGE_PUMP_VOLUME_OVERRIDE_REQUEST = 0x8054 + MSG_ID_TD_SYRINGE_PUMP_STATUS_OVERRIDE_REQUEST = 0x8055 + MSG_ID_TD_SYRINGE_PUMP_ENCODER_STATUS_OVERRIDE_REQUEST = 0x8056 + MSG_ID_TD_SYRINGE_PUMP_ADC_DAC_STATUS_OVERRIDE_REQUEST = 0x8057 + MSG_ID_TD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE_REQUEST = 0x8058 + MSG_ID_TD_HEPARIN_BOLUS_TARGET_RATE_OVERRIDE_REQUEST = 0x8059 + MSG_ID_TD_SYRINGE_PUMP_FORCE_SENSOR_CALIBRATION_REQUEST = 0x8060 MSG_ID_TD_TRAINING_TEST_OVERRIDE_REQUEST = 0x8999 @@ -395,7 +418,7 @@ MSG_ID_FP_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST = 0xB00D MSG_ID_FP_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00E MSG_ID_FP_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00F - MSG_ID_FP_FLOATER_LEVEL_OVERRIDE_REQUEST = 0xB010 + MSG_ID_FP_LEVEL_OVERRIDE_REQUEST = 0xB010 MSG_ID_FP_FLOWS_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB011 MSG_ID_FP_FLOW_RATE_OVERRIDE_REQUEST = 0xB012 MSG_ID_FP_FLOW_TEMP_OVERRIDE_REQUEST = 0xB013 Index: leahi_dialin/common/test_config_defs.py =================================================================== diff -u -re45b20cdc5d4c5dcff8cef530b173ca94cb2e422 -r9c2fab5b413da62b218e6a9a12a5752e974071a0 --- leahi_dialin/common/test_config_defs.py (.../test_config_defs.py) (revision e45b20cdc5d4c5dcff8cef530b173ca94cb2e422) +++ leahi_dialin/common/test_config_defs.py (.../test_config_defs.py) (revision 9c2fab5b413da62b218e6a9a12a5752e974071a0) @@ -44,5 +44,6 @@ TEST_CONFIG_ENABLE_BETA_1_HW = 0 # Test configuration using Beta 1 Hardware TEST_CONFIG_SKIP_BLOOD_PRIME = 1 # Test configuration to skip blood priming TEST_CONFIG_TD_NO_CARTRIDGE = 2 # Test configuration to operate without cartridge - NUM_OF_TEST_CONFIGS = 3 # Number of Test Configs + TEST_CONFIG_ENABLE_SYRINGE_PUMP_TESTING = 3 # Test configuration to skip checks in syringe pump during testing + NUM_OF_TEST_CONFIGS = 4 # Number of Test Configs TDTestConfigOptions._str_list = {} Index: leahi_dialin/dd/modules/conductivity_sensors.py =================================================================== diff -u -re45b20cdc5d4c5dcff8cef530b173ca94cb2e422 -r9c2fab5b413da62b218e6a9a12a5752e974071a0 --- leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision e45b20cdc5d4c5dcff8cef530b173ca94cb2e422) +++ leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 9c2fab5b413da62b218e6a9a12a5752e974071a0) @@ -20,6 +20,7 @@ # Project imports from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common import dd_enum_repository +from leahi_dialin.common import fp_enum_repository from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override @@ -50,8 +51,13 @@ message_id = MsgIds.MSG_ID_DD_CONDUCTIVITY_DATA.value, function = self._handler_conductivity_sensors_sync) - self.dd_conductivity_timestamp = 0.0 #: The timestamp of the last message + self.can_interface.register_receiving_publication_function(channel_id = CanChannels.dd_sync_broadcast_ch_id, + message_id = MsgIds.MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_DATA.value, + function = self._handler_conductivity_resistance_sync) + self.dd_conductivity_timestamp = 0.0 #: The timestamp of the last conductivity message + self.dd_conductivity_resistance_timestamp = 0.0 #: The timestamp of the last conductivity resistance message + #: The Conductivity Sensors data in dictionary format self.dd_conductivity = { dd_enum_repository.DDConductivitySensorNames.D17_COND.name: 0.0, @@ -61,7 +67,38 @@ dd_enum_repository.DDConductivitySensorNames.D74_COND.name: 0.0 } + self.dd_conductivity_resistance = { + dd_enum_repository.DDConductivitySensorNames.D17_COND.name: { + dd_enum_repository.DDConductivityResistanceAttributes.RAW_RESISTANCE.name: 0.0, + dd_enum_repository.DDConductivityResistanceAttributes.RTD_RESISTANCE.name: 0.0, + }, + dd_enum_repository.DDConductivitySensorNames.D27_COND.name: { + dd_enum_repository.DDConductivityResistanceAttributes.RAW_RESISTANCE.name: 0.0, + dd_enum_repository.DDConductivityResistanceAttributes.RTD_RESISTANCE.name: 0.0, + }, + dd_enum_repository.DDConductivitySensorNames.D29_COND.name: { + dd_enum_repository.DDConductivityResistanceAttributes.RAW_RESISTANCE.name: 0.0, + dd_enum_repository.DDConductivityResistanceAttributes.RTD_RESISTANCE.name: 0.0, + }, + dd_enum_repository.DDConductivitySensorNames.D43_COND.name: { + dd_enum_repository.DDConductivityResistanceAttributes.RAW_RESISTANCE.name: 0.0, + dd_enum_repository.DDConductivityResistanceAttributes.RTD_RESISTANCE.name: 0.0, + }, + dd_enum_repository.DDConductivitySensorNames.D74_COND.name: { + dd_enum_repository.DDConductivityResistanceAttributes.RAW_RESISTANCE.name: 0.0, + dd_enum_repository.DDConductivityResistanceAttributes.RTD_RESISTANCE.name: 0.0, + }, + fp_enum_repository.FPConductivitySensorNames.P9_COND.name: { + dd_enum_repository.DDConductivityResistanceAttributes.RAW_RESISTANCE.name: 0.0, + dd_enum_repository.DDConductivityResistanceAttributes.RTD_RESISTANCE.name: 0.0, + }, + fp_enum_repository.FPConductivitySensorNames.P18_COND.name: { + dd_enum_repository.DDConductivityResistanceAttributes.RAW_RESISTANCE.name: 0.0, + dd_enum_repository.DDConductivityResistanceAttributes.RTD_RESISTANCE.name: 0.0, + }, + } + @publish(["msg_id_dd_conductivity_data", "dd_conductivity", "dd_conductivity_timestamp"]) def _handler_conductivity_sensors_sync(self, message, timestamp=0.0): """ @@ -83,7 +120,37 @@ message = message) self.dd_conductivity_timestamp = timestamp + @publish(["msg_id_dd_conductivity_resistance_data", "dd_conductivity_resistance", "dd_conductivity_resistance_timestamp"]) + def _handler_conductivity_sensors_sync(self, message, timestamp=0.0): + """ + Handles published DD conductivity sensor resistance data messages. DD Conductivity sensor resistance data are captured + for reference. + @param message: published DD conductivity sensor resistance data message + @return: None + """ + sensor_list =[] + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D17_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RAW_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D27_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RAW_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D29_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RAW_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D43_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RAW_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D74_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RAW_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.P9_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RAW_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.P18_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RAW_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D17_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RTD_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D27_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RTD_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D29_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RTD_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D43_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RTD_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.D74_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RTD_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.P9_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RTD_RESISTANCE.name, DataTypes.F32)) + sensor_list.append((dd_enum_repository.DDConductivitySensorNames.P18_COND.name, dd_enum_repository.DDConcentratePumpAttributes.RTD_RESISTANCE.name, DataTypes.F32)) + + self.process_into_dict(dict_to_update = self.dd_conductivity_resistance, + decoder_list = sensor_list, + message = message) + self.dd_conductivity_resistance_timestamp = timestamp + + def cmd_conductivity_sensor_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the conductivity sensor data broadcast interval override command Index: leahi_dialin/td/modules/valves.py =================================================================== diff -u -re45b20cdc5d4c5dcff8cef530b173ca94cb2e422 -r9c2fab5b413da62b218e6a9a12a5752e974071a0 --- leahi_dialin/td/modules/valves.py (.../valves.py) (revision e45b20cdc5d4c5dcff8cef530b173ca94cb2e422) +++ leahi_dialin/td/modules/valves.py (.../valves.py) (revision 9c2fab5b413da62b218e6a9a12a5752e974071a0) @@ -70,13 +70,13 @@ msg_list.append(('Valve', DataTypes.U32)) msg_list.append(('State', DataTypes.U32)) msg_list.append(('PosID', DataTypes.U32)) - msg_list.append(('PosCnt', DataTypes.U16)) - msg_list.append(('Cmd', DataTypes.U16)) - msg_list.append(('PosA', DataTypes.U16)) - msg_list.append(('PosB', DataTypes.U16)) - msg_list.append(('PosC', DataTypes.U16)) - msg_list.append(('PosD', DataTypes.U16)) - msg_list.append(('Max_homing_enc', DataTypes.U16)) + msg_list.append(('PosCnt', DataTypes.S16)) + msg_list.append(('Cmd', DataTypes.S16)) + msg_list.append(('PosA', DataTypes.S16)) + msg_list.append(('PosB', DataTypes.S16)) + msg_list.append(('PosC', DataTypes.S16)) + msg_list.append(('PosD', DataTypes.S16)) + msg_list.append(('Max_homing_enc', DataTypes.S16)) result = self.process_into_vars(decoder_list = msg_list, message = message) Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -re45b20cdc5d4c5dcff8cef530b173ca94cb2e422 -r9c2fab5b413da62b218e6a9a12a5752e974071a0 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision e45b20cdc5d4c5dcff8cef530b173ca94cb2e422) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 9c2fab5b413da62b218e6a9a12a5752e974071a0) @@ -29,6 +29,7 @@ from .modules.events import TDEvents from .modules.pressure_sensors import TDPressureSensors from .modules.switches import TDSwitches +from .modules.syringe_pump import TDSyringePump from .modules.temperature_sensors import TDTemperatureSensors from .modules.treatment import TDTreatment from .modules.td_test_configs import TDTestConfig @@ -135,7 +136,8 @@ self.events = TDEvents(self.can_interface, self.logger) #: The Events module self.pressure_sensors = TDPressureSensors(self.can_interface, self.logger) #: The Pressure Sensors module self.switches = TDSwitches(self.can_interface, self.logger) #: The Switches module - self.temperature_sensors = TDTemperatureSensors(self.can_interface, self.logger) #: The Temperature Sensprs module + self.syringe_pump = TDSyringePump(self.can_interface, self.logger) #: The Syringe Pump module + self.temperature_sensors = TDTemperatureSensors(self.can_interface, self.logger) #: The Temperature Sensors module self.treatment = TDTreatment(self.can_interface, self.logger) #: The Treatment module self.test_configs = TDTestConfig(self.can_interface, self.logger) #: The Test Configs module self.valves = TDValves(self.can_interface, self.logger) #: The Valves module