Index: leahi_dialin/common/dd_defs.py =================================================================== diff -u -rc1bff8da59cff294d67d90dd1e1f102dd5b65466 -r5994adea1a1022175f9cc4e6dacfa02de3fc45a0 --- leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision c1bff8da59cff294d67d90dd1e1f102dd5b65466) +++ leahi_dialin/common/dd_defs.py (.../dd_defs.py) (revision 5994adea1a1022175f9cc4e6dacfa02de3fc45a0) @@ -329,8 +329,13 @@ DD_EVENT_BLOOD_LEAK_ZEROING_REQUEST = 10 # DD blood leak zeroing request DD_EVENT_BLOOD_LEAK_ZEROING_REQUIRED = 11 # DD blood leak zeroing required DD_EVENT_BLOOD_LEAK_NUM_OF_SET_POINT_CHECK_FAILURES = 12 # DD blood leak number of setpoint check failures - DD_EVENT_BLOOD_LEAK_SELF_TEST_RESULT = 13 # DD blood leak self test result - NUM_OF_DD_EVENT_IDS = 14 # Total number of DD events + DD_EVENT_CPU_RAM_ERROR_STATUS = 13 # DD CPU RAM error + DD_EVENT_BLOOD_LEAK_SELF_TEST_RESULT = 14 # DD blood leak self test result + DD_EVENT_BC_SWITCH_ONLY_MODE_CHANGE = 15 # DD Balancing Chamber Switching Only status event + DD_EVENT_BC_FILL_STATE_CHANGE = 16 # Balancing chamber state switch event + DD_EVENT_HEATER_STATE_CHANGE = 17 # DD heater state change event + DD_EVENT_DRY_BICART_STATE_CHANGE = 18 # DD Dry Bicart State change event + NUM_OF_DD_EVENT_IDS = 19 # Total number of DD events DDEventList._str_list = { # Official Name : Accepted strings @@ -347,6 +352,11 @@ 'DD_EVENT_BLOOD_LEAK_ZEROING_REQUIRED': ['blood leak zeroing required'], 'DD_EVENT_BLOOD_LEAK_NUM_OF_SET_POINT_CHECK_FAILURES': ['blood leak check failed'], 'DD_EVENT_BLOOD_LEAK_SELF_TEST_RESULT': ['blood leak self test'], + 'DD_EVENT_CPU_RAM_ERROR_STATUS': ['cpu ram error status', 'cpu error status', 'ram error status', 'memory error status'], + 'DD_EVENT_BC_SWITCH_ONLY_MODE_CHANGE': ['bc switch only change'], + 'DD_EVENT_BC_FILL_STATE_CHANGE': ['bc state change'], + 'DD_EVENT_HEATER_STATE_CHANGE': ['heater state change'], + 'DD_EVENT_DRY_BICART_STATE_CHANGE': ['dry bicart state change'], 'NUM_OF_DD_EVENT_IDS': [], } @@ -999,6 +1009,7 @@ 'NUM_OF_CANCELLATION_MODES': [], } + @unique class DDSubstitutionPumpAttributes(DialinEnum): TARGET_SPEED = 0 # Target RPM Substitution Pump Attribute @@ -1015,3 +1026,17 @@ 'MEASURED_SPEED': ['measured speed'], 'NUM_OF_DIALYSATE_PUMP_ATTRIBUTES': [], } + + +@unique +class DDConductivityResistanceAttributes(DialinEnum): + RAW_RESISTANCE = 0 # Raw Conductivity resistance Attribute + RTD_RESISTANCE = 1 # raw RTD resistance Attribute + NUM_OF_RESISTANCE_ATTRIBUTES = 2 # Number of conductivity sensor Attributes + +DDConductivityResistanceAttributes._str_list = { + # Official Name : Accepted strings + 'RAW_RESISTANCE': ['cond resistance,'], + 'RTD_RESISTANCE': ['rtd resistance'], + 'NUM_OF_RESISTANCE_ATTRIBUTES': [], +} \ No newline at end of file Index: leahi_dialin/common/dd_defs_proxy.py =================================================================== diff -u -re9a32dcd15e9112f38ad3de850db56e029aae861 -r5994adea1a1022175f9cc4e6dacfa02de3fc45a0 --- leahi_dialin/common/dd_defs_proxy.py (.../dd_defs_proxy.py) (revision e9a32dcd15e9112f38ad3de850db56e029aae861) +++ leahi_dialin/common/dd_defs_proxy.py (.../dd_defs_proxy.py) (revision 5994adea1a1022175f9cc4e6dacfa02de3fc45a0) @@ -77,4 +77,19 @@ DDSubstitutionPumpAttributes = dd_defs.DDSubstitutionPumpAttributes DDConductivityResistanceAttributes = dd_defs.DDConductivityResistanceAttributes + # Records + RecordTypes = generic_defs.RecordTypes + SystemRecordFields = generic_defs.SystemRecordFields + ServiceRecordFields = generic_defs.ServiceRecordFields + CalibrationRecordFields = generic_defs.get_calibration_record_fields() + InstitutionalRecordFields = generic_defs.InstitutionalRecordFields + UsageInformationRecordFields = generic_defs.UsageInformationRecordFields + + # Record support + CalibRecordAccelerometerFields = generic_defs.CalibRecordAccelerometerFields + CalibRecordBloodLeakFields = generic_defs.CalibRecordBloodLeakFields + CalibRecordConcentrateFields = generic_defs.CalibRecordConcentrateFields + CalibRecordSensorFields = generic_defs.CalibRecordSensorFields + + dd_enum_repository = DD_Defs() Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -r1ce41b0e543f91b5e620c0d91758564cefaad9a8 -r5994adea1a1022175f9cc4e6dacfa02de3fc45a0 --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 1ce41b0e543f91b5e620c0d91758564cefaad9a8) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 5994adea1a1022175f9cc4e6dacfa02de3fc45a0) @@ -197,6 +197,10 @@ MSG_ID_TD_DRY_SELF_TEST_PROGRESS_DATA = 0xAE MSG_ID_TD_TUBE_SET_AUTHENTICATION_REQUEST = 0xAF MSG_ID_UI_TUBE_SET_AUTHENTICATION_ACK_RESPONSE = 0xB0 + MSG_ID_TD_TREATMENT_LOG_AVERAGE_DATA = 0xAD + MSG_ID_TD_DRY_SELF_TEST_PROGRESS_DATA = 0xAE + MSG_ID_TD_TUBE_SET_AUTHENTICATION_REQUEST = 0xAF + MSG_ID_UI_TUBE_SET_AUTHENTICATION_ACK_RESPONSE = 0xB0 MSG_ID_TD_SYRINGE_PUMP_DATA = 0xB1 MSG_ID_TD_HEPARIN_PAUSE_RESUME_RESPONSE= 0xB2 MSG_ID_FFU_SIGNAL_TD_UPDATE_AVAILABLE = 0xB3 @@ -360,6 +364,8 @@ 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_GET_ALARM_PROPERTIES_REQUEST = 0x8061 + MSG_ID_TD_ALARM_PROPERTIES_RESPONSE = 0x8062 MSG_ID_TD_TRAINING_TEST_OVERRIDE_REQUEST = 0x8999 @@ -454,14 +460,32 @@ MSG_ID_DD_BICARB_CHAMBER_FILL_REQUEST_OVERRIDE_REQUEST = 0xA059 MSG_ID_DD_BICART_DRAIN_REQUEST_OVERRIDE_REQUEST = 0xA05A MSG_ID_DD_BICART_CARTRIDGE_SELECT_OVERRIDE_REQUEST = 0xA05B + MSG_ID_DD_SET_CONDUCTIVITY_MODEL_REQUEST = 0xA05C + MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST = 0xA05D + MSG_ID_DD_CONDUCTIVITY_SENSOR_VERSION_REQUEST = 0xA05E + MSG_ID_DD_CONDUCTIVITY_SENSOR_VERSION_RESPONSE = 0xA05F + MSG_ID_DD_BICARB_MIX_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST = 0xA060 + MSG_ID_DD_BICARB_MIX_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST = 0xA061 + MSG_ID_DD_ACID_MIX_VOL_CONTROL_KP_GAIN_COEFF_OVERRIDE_REQUEST = 0xA062 + MSG_ID_DD_ACID_MIX_VOL_CONTROL_KI_GAIN_COEFF_OVERRIDE_REQUEST = 0xA063 + MSG_ID_DD_ACID_MIX_VOL_OVERRIDE_REQUEST = 0xA064 + MSG_ID_DD_BICARB_MIX_VOL_OVERRIDE_REQUEST = 0xA065 + MSG_ID_DD_BICARB_TARGET_CONDUCTIVITY_OVERRIDE_REQUEST = 0xA066 + MSG_ID_DD_BICARB_DELTA_CONDUCTIVITY_OVERRIDE_REQUEST = 0xA067 + MSG_ID_DD_DIALYSATE_TARGET_CONDUCTIVITY_OVERRIDE_REQUEST = 0xA068 + MSG_ID_DD_DIALYSATE_DELTA_CONDUCTIVITY_OVERRIDE_REQUEST = 0xA069 + MSG_ID_DD_BICART_UPPER_PRESSURE_OVERRIDE_REQUEST = 0xA06A + MSG_ID_DD_BICART_LOWER_PRESSURE_OVERRIDE_REQUEST = 0xA06B + MSG_ID_DD_FLOATER_LEVEL_OVERRIDE_REQUEST = 0xA06C MSG_ID_DD_SUBSTITUTION_PUMP_START_STOP_OVERRIDE_REQUEST = 0xA06D MSG_ID_DD_SUBSTITUTION_PUMP_BROADCAST_OVERRIDE_REQUEST = 0xA06E MSG_ID_DD_SUBSTITUTION_PUMP_TARGET_SPEED_OVERRIDE_REQUEST = 0xA06F + MSG_ID_DD_CONDUCTIVITY_SENSOR_CAL_REQUEST = 0xA070 + MSG_ID_DD_CONDUCTIVITY_SENSOR_CAL_RESPONSE = 0xA071 + MSG_ID_DD_MIXING_CONTROL_DATA = 0xA072 + MSG_ID_DD_MIXING_CONTROL_DATA_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xA073 + MSG_ID_DD_BICART_DEPRESSURISE_REQUEST_OVERRIDE_REQUEST = 0xA074 - MSG_ID_DD_SET_CONDUCTIVITY_MODEL_REQUEST = 0xA100 - MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST = 0xA101 - - # Placeholder messages MSG_ID_DD_ALARM_STATE_OVERRIDE_REQUEST = 0xAF03 MSG_ID_DD_STOP_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST = 0xAF04 @@ -536,13 +560,16 @@ MSG_ID_FP_DEF_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB043 MSG_ID_FP_DEF_STATUS_REQUEST = 0xB044 MSG_ID_FP_DEF_STATUS_RESPONSE = 0xB045 - MSG_ID_FP_SET_OP_SUB_MODE_REQUEST = 0xB046 - + MSG_ID_FP_SET_OPERATION_SUB_MODE_REQUEST = 0xB046 + MSG_ID_FP_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST = 0xB047 + MSG_ID_FP_SET_RECOVERY_VALVES_REQUEST = 0xB048 MSG_ID_FP_BOOST_PUMP_INSTALL_STATUS_REQUEST = 0xB049 MSG_ID_FP_BOOST_PUMP_INSTALL_STATUS_RESPONSE = 0xB04A + MSG_ID_FP_CONDUCTIVITY_SENSOR_VERSION_REQUEST = 0xB04B + MSG_ID_FP_CONDUCTIVITY_SENSOR_VERSION_RESPONSE = 0xB04C + MSG_ID_FP_CONDUCTIVITY_SENSOR_CAL_REQUEST = 0xB04D + MSG_ID_FP_CONDUCTIVITY_SENSOR_CAL_RESPONSE = 0xB04E - MSG_ID_FP_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST = 0xB100 - MSG_ID_TD_DEBUG_EVENT = 0xFFF1 MSG_ID_DD_DEBUG_EVENT = 0xFFF2 MSG_ID_FP_DEBUG_EVENT = 0xFFF3 Index: leahi_dialin/dd/dialysate_delivery.py =================================================================== diff -u -re324174eeb74c1630c6e913e7dfb65246924cd1f -r5994adea1a1022175f9cc4e6dacfa02de3fc45a0 --- leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision e324174eeb74c1630c6e913e7dfb65246924cd1f) +++ leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision 5994adea1a1022175f9cc4e6dacfa02de3fc45a0) @@ -223,42 +223,14 @@ result = self.process_into_vars(decoder_list = msg_list, message = message) - if all([len(each) > 0 for each in [result['major'], result['minor'], result['micro'], result['build'], result['compatibility']]]): + if all([each is not None for each in [result['major'], result['minor'], result['micro'], result['build'], result['compatibility']]]): self.dd_version = f"v{result['major']}.{result['minor']}.{result['micro']}-{result['build']}.{result['compatibility']}" self.logger.debug(f'DD VERSION: {self.dd_version}') - if all([len(each) > 0 for each in [result['fpga_id'], result['fpga_major'], result['fpga_minor'], result['fpga_lab']]]): + if all([each is not None for each in [result['fpga_id'], result['fpga_major'], result['fpga_minor'], result['fpga_lab']]]): self.dd_fpga_version = f"v{result['fpga_id']}.{result['fpga_major']}.{result['fpga_minor']}-{result['fpga_lab']}" self.logger.debug(f'DD FPGA VERSION: {self.dd_fpga_version}') - """ - major = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_MAJOR:MsgFieldPositionsFWVersions.END_POS_MAJOR])) - minor = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_MINOR:MsgFieldPositionsFWVersions.END_POS_MINOR])) - micro = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_MICRO:MsgFieldPositionsFWVersions.END_POS_MICRO])) - build = struct.unpack(DataTypes.U16.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_BUILD:MsgFieldPositionsFWVersions.END_POS_BUILD])) - fpga_id = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_FPGA_ID:MsgFieldPositionsFWVersions.END_POS_FPGA_ID])) - fpga_major = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_FPGA_MAJOR:MsgFieldPositionsFWVersions.END_POS_FPGA_MAJOR])) - fpga_minor = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_FPGA_MINOR:MsgFieldPositionsFWVersions.END_POS_FPGA_MINOR])) - fpga_lab = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_FPGA_MICRO:MsgFieldPositionsFWVersions.END_POS_FPGA_MICRO])) - compatibility = struct.unpack(DataTypes.U32.unpack_attrib(), bytearray( - message['message'][MsgFieldPositionsFWVersions.START_POS_COMPATIBILITY_REV:MsgFieldPositionsFWVersions.END_POS_COMPATIBILITY_REV])) - - if all([len(each) > 0 for each in [major, minor, micro, build, compatibility]]): - self.dd_version = f"v{major[0]}.{minor[0]}.{micro[0]}-{build[0]}.{compatibility[0]}" - self.logger.debug(f"DD VERSION: {self.dd_version}") - - if all([len(each) > 0 for each in [fpga_id, fpga_major, fpga_minor, fpga_lab]]): - self.dd_fpga_version = f"v{fpga_id[0]}.{fpga_major[0]}.{fpga_minor[0]}-{fpga_lab[0]}" - self.logger.debug(f"DD FPGA VERSION: {self.dd_fpga_version}") - """ self.dd_version_response_timestamp = timestamp Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -r88eea899fa8d03596f944505285bf3049e64312b -r5994adea1a1022175f9cc4e6dacfa02de3fc45a0 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 88eea899fa8d03596f944505285bf3049e64312b) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 5994adea1a1022175f9cc4e6dacfa02de3fc45a0) @@ -28,6 +28,7 @@ from .modules.ejector import TDEjector from .modules.events import TDEvents from .modules.pressure_sensors import TDPressureSensors +from .modules.records import TDRecords from .modules.switches import TDSwitches from .modules.syringe_pump import TDSyringePump from .modules.temperature_sensors import TDTemperatureSensors @@ -134,6 +135,7 @@ self.ejector = TDEjector(self.can_interface, self.logger) #: The Ejector module 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.records = TDRecords(self.can_interface, self.logger) #: The Records module self.switches = TDSwitches(self.can_interface, self.logger) #: The Switches 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