Index: TD_Pre_Treatment/loader.py =================================================================== diff -u -rf20bc39761ccafd83ad8295d0f43c843e5fd10aa -rc3941c2f98ef15de30ccac6bb2a88d644f24e946 --- TD_Pre_Treatment/loader.py (.../loader.py) (revision f20bc39761ccafd83ad8295d0f43c843e5fd10aa) +++ TD_Pre_Treatment/loader.py (.../loader.py) (revision c3941c2f98ef15de30ccac6bb2a88d644f24e946) @@ -3,7 +3,11 @@ """ # Python import os +import can +import struct + + # Qt from PySide2 import QtWidgets from PySide2.QtCore import Slot @@ -17,9 +21,11 @@ from leahi_dialin.ui.td_messaging import TD_Messaging from leahi_dialin.common.td_defs import TDOpModes from leahi_dialin.common.td_defs import TDStandbyStates -from leahi_dialin.protocols import CAN -from leahi_dialin.common.msg_defs import MsgIds +from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions +from leahi_dialin.protocols import CAN +from leahi_dialin.utils import conversions + class Loader(DynamicLoader): """ The ui loader class @@ -30,7 +36,6 @@ 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 create_tx_request_message_id = MsgIds.MSG_ID_UI_INITIATE_TREATMENT_WORKFLOW.value @@ -45,6 +50,11 @@ self.can_interface.register_receiving_publication_function(channel_id, start_tx_request_message_id, self.handle_start_tx_request) + + validate_request_message_id = MsgIds.MSG_ID_UI_TREATMENT_PARAMS_TO_VALIDATE.value + self.can_interface.register_receiving_publication_function(channel_id, + validate_request_message_id, + self.handle_validate_request) def _init_loader(self): """ @@ -87,6 +97,28 @@ self.spnHeparinDispensingRateRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinDispensingRateRejectReason' ) self.spnHeparinBolusVolumeRejectReason = self.find_widget(QtWidgets.QSpinBox , 'spnHeparinBolusVolumeRejectReason' ) + self.lbBloodFlowRate = self.find_widget(QtWidgets.QLabel , 'lbBloodFlowRateValue' ) + self.lbDialysateFlowRate = self.find_widget(QtWidgets.QLabel , 'lbDialysateFlowRateValue' ) + self.lbTreatmentDuration = self.find_widget(QtWidgets.QLabel , 'lbTreatmentDurationValue' ) + self.lbSalineBolusVolume = self.find_widget(QtWidgets.QLabel , 'lbSalineBolusVolumeValue' ) + self.lbHeparinStopTime = self.find_widget(QtWidgets.QLabel , 'lbHeparinStopTimeValue' ) + self.lbHeparinType = self.find_widget(QtWidgets.QLabel , 'lbHeparinTypeValue' ) + self.lbAcidConcentrate = self.find_widget(QtWidgets.QLabel , 'lbAcidConcentrateValue' ) + self.lbBicarbonateConcentrate = self.find_widget(QtWidgets.QLabel , 'lbBicarbonateConcentrateValue' ) + self.lbDialyzerType = self.find_widget(QtWidgets.QLabel , 'lbDialyzerTypeValue' ) + self.lbBloodPressureMeasureInterval = self.find_widget(QtWidgets.QLabel , 'lbBloodPressureMeasureIntervalValue' ) + self.lbRinsebackFlowRate = self.find_widget(QtWidgets.QLabel , 'lbRinsebackFlowRateValue' ) + self.lbRinsebackVolume = self.find_widget(QtWidgets.QLabel , 'lbRinsebackVolumeValue' ) + self.lbArterialPressureLimitWindow = self.find_widget(QtWidgets.QLabel , 'lbArterialPressureLimitWindowValue' ) + self.lbVenousPressureLimitWindow = self.find_widget(QtWidgets.QLabel , 'lbVenousPressureLimitWindowValue' ) + self.lbVenousPressureLimitAsymtrc = self.find_widget(QtWidgets.QLabel , 'lbVenousPressureLimitAsymtrcValue' ) + self.lbTransmembranePressureLimitWindow = self.find_widget(QtWidgets.QLabel , 'lbTransmembranePressureLimitWindowValue' ) + self.lbDialysateTemp = self.find_widget(QtWidgets.QLabel , 'lbDialysateTempValue' ) + self.lbHeparinDispensingRate = self.find_widget(QtWidgets.QLabel , 'lbHeparinDispensingRateValue' ) + self.lbHeparinBolusVolume = self.find_widget(QtWidgets.QLabel , 'lbHeparinBolusVolumeValue' ) + + + def _init_widgets(self): """ initializes the widgets' properties @@ -244,3 +276,41 @@ @return: None """ self.lbStartTreatment.setText("Start Tx Requested") + + @Slot() + def handle_validate_request(self, message, timestamp = 0.0): + """ + Called when the user requests to firmware from UI + @return: None + """ + message = message['message'] + self.index = MsgFieldPositions.START_POS_FIELD_1 + self.lbBloodFlowRate .setText(str(self.getIntValue(message))) + self.lbDialysateFlowRate .setText(str(self.getIntValue(message))) + self.lbTreatmentDuration .setText(str(self.getIntValue(message))) + self.lbSalineBolusVolume .setText(str(self.getIntValue(message))) + self.lbHeparinStopTime .setText(str(self.getIntValue(message))) + self.lbHeparinType .setText(str(self.getIntValue(message))) + self.lbAcidConcentrate .setText(str(self.getIntValue(message))) + self.lbBicarbonateConcentrate .setText(str(self.getIntValue(message))) + self.lbDialyzerType .setText(str(self.getIntValue(message))) + self.lbBloodPressureMeasureInterval .setText(str(self.getIntValue(message))) + self.lbRinsebackFlowRate .setText(str(self.getIntValue(message))) + self.lbRinsebackVolume .setText(str(self.getIntValue(message))) + self.lbArterialPressureLimitWindow .setText(str(self.getIntValue(message))) + self.lbVenousPressureLimitWindow .setText(str(self.getIntValue(message))) + self.lbVenousPressureLimitAsymtrc .setText(str(self.getIntValue(message))) + self.lbTransmembranePressureLimitWindow .setText(str(self.getIntValue(message))) + self.lbDialysateTemp .setText(f"{self.getFloatValue(message):.1f}") + self.lbHeparinDispensingRate .setText(f"{self.getFloatValue(message):.1f}") + self.lbHeparinBolusVolume .setText(f"{self.getFloatValue(message):.1f}") + + + def getIntValue (self, message): + val,self.index = conversions.bytearray_to_integer( message, self.index) + return val + + + def getFloatValue (self, message): + val,self.index = conversions.bytearray_to_float( message, self.index) + return val \ No newline at end of file