Index: leahi_dialin/td/proxies/ui_proxy.py =================================================================== diff -u -rf03c9a32180573f2430105ad69eb91d9f597a96b -r34b64ff2d8a64f4b7b60b80bb7cf4c36845e5943 --- leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision f03c9a32180573f2430105ad69eb91d9f597a96b) +++ leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision 34b64ff2d8a64f4b7b60b80bb7cf4c36845e5943) @@ -8,17 +8,19 @@ # @file ui_proxy.py # # @author (last) Zoltan Miskolci -# @date (last) 08-Jan-2026 +# @date (last) 05-May-2026 # @author (original) Peter Lucia # @date (original) 02-Apr-2020 # ############################################################################ -import struct +# Module imports from logging import Logger +# Project imports from leahi_dialin.common.constants import ACCEPTED -from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions, RequestRejectReasons +from leahi_dialin.common.generic_defs import DataTypes +from leahi_dialin.common.msg_defs import MsgIds, RequestRejectReasons from leahi_dialin.common.override_templates import cmd_generic_override from leahi_dialin.protocols.CAN import DenaliCanMessenger, DenaliChannels from leahi_dialin.utils.abstract_classes import AbstractSubSystem @@ -44,25 +46,21 @@ self.logger = logger if self.can_interface is not None: - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_RESP_TREATMENT_PARAMS_TO_VALIDATE.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_tx_parameters_val_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = DenaliChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_RESP_TREATMENT_PARAMS_TO_VALIDATE.value, + function = self._handler_tx_parameters_val_resp_sync) - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_RESP_ULTRAFILTRATION_VOLUME_TO_VALIDATE.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_uf_val_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = DenaliChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_RESP_ULTRAFILTRATION_VOLUME_TO_VALIDATE.value, + function = self._handler_uf_val_resp_sync) - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_RESP_INITIATE_TREATMENT_WORKFLOW.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_initiate_treatment_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = DenaliChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_RESP_INITIATE_TREATMENT_WORKFLOW.value, + function = self._handler_initiate_treatment_resp_sync) - channel_id = DenaliChannels.td_to_ui_ch_id - msg_id = MsgIds.MSG_ID_TD_UF_PAUSE_RESUME_RESPONSE.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_uf_pause_resp_sync) + self.can_interface.register_receiving_publication_function(channel_id = DenaliChannels.td_to_ui_ch_id, + message_id = MsgIds.MSG_ID_TD_UF_PAUSE_RESUME_RESPONSE.value, + function = self._handler_uf_pause_resp_sync) # MSG_ID_TD_RESP_TREATMENT_PARAMS_TO_VALIDATE self.tx_params_acceptance = 0 @@ -109,38 +107,26 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.tx_params_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.tx_params_blood_flow_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.tx_params_dialysate_flow_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.tx_params_tx_duration_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.tx_params_saline_bolus_vol_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.tx_params_acid_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.tx_params_bicarb_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.tx_params_dialyzer_type_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.tx_params_bp_meas_interval_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] - self.tx_params_rinseback_flow_rate_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] - self.tx_params_art_pres_limit_window_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] - self.tx_params_ven_pres_limit_window_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] - self.tx_params_ven_pres_limit_asymmetric_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13]))[0] - self.tx_params_tmp_pres_limit_window_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14]))[0] - self.tx_params_dialysate_temperature_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15]))[0] - self.tx_params_uf_volume_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16]))[0] + msg_list = [] + msg_list.append(('self.tx_params_acceptance', DataTypes.U32)) + msg_list.append(('self.tx_params_blood_flow_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_dialysate_flow_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_tx_duration_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_saline_bolus_vol_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_acid_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_bicarb_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_dialyzer_type_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_bp_meas_interval_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_rinseback_flow_rate_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_art_pres_limit_window_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_ven_pres_limit_window_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_ven_pres_limit_asymmetric_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_tmp_pres_limit_window_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_dialysate_temperature_rr', DataTypes.U32)) + msg_list.append(('self.tx_params_uf_volume_rr', DataTypes.U32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.tx_params_validate_timestamp = timestamp @@ -153,12 +139,13 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.uf_volume_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.uf_volume_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.uf_volume_ml = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] + msg_list = [] + msg_list.append(('self.uf_volume_acceptance', DataTypes.U32)) + msg_list.append(('self.uf_volume_rr', DataTypes.U32)) + msg_list.append(('self.uf_volume_ml', DataTypes.F32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.uf_volume_timestamp = timestamp @@ -171,10 +158,12 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.initiate_tx_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.initiate_tx_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + msg_list = [] + msg_list.append(('self.initiate_tx_acceptance', DataTypes.U32)) + msg_list.append(('self.initiate_tx_rr', DataTypes.U32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.initiate_tx_timestamp = timestamp @@ -187,10 +176,12 @@ :param timestamp: timestamp in epoch time of the received message :return: none """ - self.uf_pause_resume_acceptance = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.uf_pause_resume_rr = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + msg_list = [] + msg_list.append(('self.uf_pause_resume_acceptance', DataTypes.U32)) + msg_list.append(('self.uf_pause_resume_rr', DataTypes.U32)) + + self.process_into_vars(decoder_list = msg_list, + message = message) self.uf_pause_resume_timestamp = timestamp