Index: MainTreatmentData/loader.py =================================================================== diff -u -r76ebec60ce80e9a637fadc3d93dd9c21bad5d61f -r45e91bf76f061c2f9cffd9c96ca338437a27b8e5 --- MainTreatmentData/loader.py (.../loader.py) (revision 76ebec60ce80e9a637fadc3d93dd9c21bad5d61f) +++ MainTreatmentData/loader.py (.../loader.py) (revision 45e91bf76f061c2f9cffd9c96ca338437a27b8e5) @@ -3,6 +3,8 @@ """ # Python import os +import can +import struct # Qt from PySide2 import QtCore, QtWidgets @@ -12,22 +14,31 @@ from engine.dynamicloader import DynamicLoader # plugin specific +from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions +from leahi_dialin.protocols import CAN + from leahi_dialin.common.td_defs import TDOpModes from leahi_dialin.common.td_defs import TDStandbyStates # hd Simulator from leahi_dialin.ui.td_messaging import TD_Messaging - class Loader(DynamicLoader): """ The TD Air Trap ui loader """ def __init__(self): self.td_interface = TD_Messaging() + self.can_interface = self.td_interface.can_interface super().__init__(os.path.dirname(__file__)) + if self.can_interface is not None: + channel_id = CAN.DenaliChannels.ui_to_td_ch_id + message_id = MsgIds.MSG_ID_UI_SALINE_BOLUS_REQUEST.value + self.can_interface.register_receiving_publication_function(channel_id, + message_id, + self.handle_solution_infusion_request) def _init_loader(self): """ @@ -60,7 +71,9 @@ self.UF_tgt_rate_label = self.find_widget(QtWidgets.QLabel , 'targetufLabel' ) self.UF_vol_del_label = self.find_widget(QtWidgets.QLabel , 'ufvolumeDeliveredlabel' ) self.UF_set_vol_label = self.find_widget(QtWidgets.QLabel , 'setufvolumeLabel' ) + self.lbBolusStart = self.find_widget(QtWidgets.QLabel , 'lbBolusStart' ) + def _init_connections(self): """ initializes the widgets connections @@ -88,6 +101,16 @@ self.dial_flow_st_pt .valueChanged.connect(self.do_tx_set_point_data) self.dial_temp_st_pt .valueChanged.connect(self.do_tx_set_point_data) + + def handle_solution_infusion_request(self, message, timestamp = 0.0): + """ + Called when the user requests to firmware from UI + @return: None + """ + response = struct.unpack('i', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + self.lbBolusStart .setText( str(response ) ) + @Slot() def _init_widgets(self): """ @@ -204,4 +227,4 @@ self.do_saline_data() self.do_uf_data() self.do_tx_time_data() - self.do_tx_set_point_data() \ No newline at end of file + self.do_tx_set_point_data()