Index: TD_BloodPrime/interface.ui
===================================================================
diff -u
--- TD_BloodPrime/interface.ui (revision 0)
+++ TD_BloodPrime/interface.ui (revision 24a027df47ef42fd1407f21ccd165998f84b9dc3)
@@ -0,0 +1,411 @@
+
+
+ ui_interface
+
+
+
+ 0
+ 0
+ 405
+ 197
+
+
+
+
+ 100000
+ 100000
+
+
+
+
+ 10
+
+
+
+ &3 Treatment/&5 Blood Prime
+
+
+
+ 5
+
+
+ 5
+
+
+ 5
+
+
+ 5
+
+
+ 5
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
-
+
+
-
+
+
+
+ 10
+
+
+
+ color: rgb(238, 238, 236);
+background-color: rgb(92, 53, 102);
+
+
+ 151 [0x9700]: Blood Prime Progress Data
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Send
+
+
+
+ -
+
+
+ Reset
+
+
+
+
+
+ -
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 6
+
+
+ 6
+
+
-
+
+
+ Target
+Volume (mL)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ false
+
+
+
+ -
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
-
+
+
+
+ 250
+ 0
+
+
+
+ 1000
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 10
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+ -
+
+
+ Delivered
+Volume (mL)
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ false
+
+
+
+ -
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
-
+
+
+
+ 250
+ 0
+
+
+
+ 1000
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 50
+ 0
+
+
+
+
+ 10
+
+
+
+ 0
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
+ 2
+
+
-
+
+
-
+
+
+ color: rgb(238, 238, 236);
+background-color: rgb(92, 53, 102);
+
+
+ 153 [0x9900]: Blood Prime Command Response
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Send
+
+
+
+ -
+
+
+ Reset
+
+
+
+
+
+ -
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
-
+
+
+ Req [0x9800]
+
+
+
+ -
+
+
+ -- --
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Rejection Reason
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
Index: TD_BloodPrime/loader.py
===================================================================
diff -u
--- TD_BloodPrime/loader.py (revision 0)
+++ TD_BloodPrime/loader.py (revision 24a027df47ef42fd1407f21ccd165998f84b9dc3)
@@ -0,0 +1,146 @@
+"""
+ TD Blood Prime UI Loader
+"""
+# Python
+import os
+import can
+import struct
+
+# Qt
+from PySide2 import QtCore, QtWidgets
+from PySide2.QtCore import Slot
+
+# parent
+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.utils import conversions
+
+# hd Simulator
+from leahi_dialin.ui.td_messaging import TD_Messaging
+
+class Loader(DynamicLoader):
+ """
+ TD Blood Prime 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:
+ 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.cmdStrings = [
+ "Increase Rate",
+ "Decrease Rate",
+ "Pause",
+ "Resume",
+ ]
+
+ 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.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.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_progress_reset()
+ self.do_cmd_response_reset()
+
+
+ @Slot()
+ def do_progress_send(self):
+ """
+ slot for sending blood prime data
+ :return: none
+ """
+ self.td_interface.td_blood_prime_progress(
+ self.slProgressTargetVolume.value(),
+ self.slProgressDeliveredVolume.value()
+ )
+
+
+ @Slot()
+ 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.sbCmdRspRejectReason.value()
+ )
+
+
+ @Slot()
+ def do_cmd_response_reset(self):
+ self.lbCmdReqCommand .setText("-- --")
+ self.sbCmdRspRejectReason .setValue(0)