Index: TD_BloodPrime/loader.py =================================================================== diff -u -ra0402040ea2fe05758988119cdab0f3aa07d44c0 -r2efb20426c195d9f58d0386332b2a11972139eb7 --- TD_BloodPrime/loader.py (.../loader.py) (revision a0402040ea2fe05758988119cdab0f3aa07d44c0) +++ TD_BloodPrime/loader.py (.../loader.py) (revision 2efb20426c195d9f58d0386332b2a11972139eb7) @@ -31,56 +31,119 @@ self.can_interface = self.td_interface.can_interface super().__init__(os.path.dirname(__file__)) + if self.can_interface is not None: + self.can_interface.register_receiving_publication_function( + CAN.DenaliChannels.ui_to_td_ch_id, + MsgIds.MSG_ID_UI_BLOOD_PRIME_CMD_REQUEST.value, + self.handle_cmd_request) + def _init_loader(self): """ finds and creates widgets :return: none """ - self.tbSend = self.find_widget(QtWidgets.QToolButton , 'tbSend' ) - self.tbReset = self.find_widget(QtWidgets.QToolButton , 'tbReset' ) + self.cmdStrings = [ + "Pause", + "Resume", + "Increase Rate", + "Decrease Rate", + ] - self.slTargetVolume = self.find_widget(QtWidgets.QSlider , 'slTargetVolume' ) - self.lbTargetVolume = self.find_widget(QtWidgets.QLabel , 'lbTargetVolume' ) - self.slDeliveredVolume = self.find_widget(QtWidgets.QSlider , 'slDeliveredVolume' ) - self.lbDeliveredVolume = self.find_widget(QtWidgets.QLabel , 'lbDeliveredVolume' ) + self.tbProgressSend = self.find_widget(QtWidgets.QToolButton , 'tbProgressSend' ) + self.tbProgressReset = self.find_widget(QtWidgets.QToolButton , 'tbProgressReset' ) + self.slProgressTargetVolume = self.find_widget(QtWidgets.QSlider , 'slProgressTargetVolume' ) + self.lbProgressTargetVolume = self.find_widget(QtWidgets.QLabel , 'lbProgressTargetVolume' ) + self.slProgressDeliveredVolume = self.find_widget(QtWidgets.QSlider , 'slProgressDeliveredVolume' ) + self.lbProgressDeliveredVolume = self.find_widget(QtWidgets.QLabel , 'lbProgressDeliveredVolume' ) + self.tbCmdRspSend = self.find_widget(QtWidgets.QToolButton , 'tbCmdRspSend' ) + self.tbCmdRspReset = self.find_widget(QtWidgets.QToolButton , 'tbCmdRspReset' ) + self.rbCmdRspAccept = self.find_widget(QtWidgets.QRadioButton , 'rbCmdRspAccept' ) + self.lbCmdReqCommand = self.find_widget(QtWidgets.QLabel , 'lbCmdReqCommand' ) + self.sbCmdRspRejectReason = self.find_widget(QtWidgets.QSpinBox , 'sbCmdRspRejectReason' ) + def _init_connections(self): """ initializes the widgets connections :return: none """ - self.tbSend .clicked .connect(self.do_send) - self.tbReset .clicked .connect(self.do_reset) - self.slTargetVolume .valueChanged .connect(self.do_send) - self.slTargetVolume .valueChanged .connect(lambda value: self.lbTargetVolume.setText(f"{value}")) - self.slDeliveredVolume .valueChanged .connect(self.do_send) - self.slDeliveredVolume .valueChanged .connect(lambda value: self.lbDeliveredVolume.setText(f"{value}")) + self.tbProgressSend .clicked .connect(self.do_progress_send) + self.tbProgressReset .clicked .connect(self.do_progress_reset) + self.slProgressTargetVolume .valueChanged .connect(self.do_progress_send) + self.slProgressTargetVolume .valueChanged .connect(self.do_progress_target_volume_changed) + self.slProgressDeliveredVolume .valueChanged .connect(self.do_progress_send) + self.slProgressDeliveredVolume .valueChanged .connect(self.do_progress_delivered_volume_changed) + self.tbCmdRspSend .clicked .connect(self.do_cmd_response_send) + self.tbCmdRspReset .clicked .connect(self.do_cmd_response_reset) @Slot() def _init_widgets(self): """ initializes the widgets' properties :return: none """ - self.do_reset() + self.do_progress_reset() + self.do_cmd_response_reset() @Slot() - def do_send(self): + def do_progress_send(self): """ slot for sending blood prime data :return: none """ self.td_interface.td_blood_prime_progress( - self.slTargetVolume.value(), - self.slDeliveredVolume.value() + self.slProgressTargetVolume.value(), + self.slProgressDeliveredVolume.value() ) @Slot() - def do_reset(self): - self.slTargetVolume .setValue(0) - self.slDeliveredVolume .setValue(0) + def do_progress_target_volume_changed(self, value): + self.lbProgressTargetVolume.setText(f"{value}") + + + @Slot() + def do_progress_delivered_volume_changed(self, value): + self.lbProgressDeliveredVolume.setText(f"{value}") + + + @Slot() + def do_progress_reset(self): + self.slProgressTargetVolume .setValue(0) + self.slProgressDeliveredVolume .setValue(0) + + + @Slot() + def handle_cmd_request(self, message, timestamp = 0.0): + """ + Called when the user sends a blood prime command request to firmware from UI + @return: None + """ + message = message['message'] + index = MsgFieldPositions.START_POS_FIELD_1 + value,index = conversions.bytearray_to_integer(message, index) + cmdString = self.cmdStrings[value] if value >= 0 and value < len(self.cmdStrings) else "" + self.lbCmdReqCommand.setText(f"{cmdString} ({value})") + + + @Slot() + def do_cmd_response_send(self): + """ + slot for sending blood prime command response + :return: none + """ + self.td_interface.td_blood_prime_cmd_response( + self.rbCmdRspAccept.isChecked(), + self.sbCmdRspRejectReason.value() + ) + + + @Slot() + def do_cmd_response_reset(self): + self.lbCmdReqCommand .setText("-- --") + self.sbCmdRspRejectReason .setValue(0) + self.rbCmdRspAccept .setChecked(True)