Index: DD_Calibration/interface.ui
===================================================================
diff -u
--- DD_Calibration/interface.ui (revision 0)
+++ DD_Calibration/interface.ui (revision ab304a3190684a7bbf1a68a29eafa34a8c503e3f)
@@ -0,0 +1,523 @@
+
+
+ ui_interface
+
+
+
+ 0
+ 0
+ 668
+ 396
+
+
+
+
+ 1
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 100000
+ 100000
+
+
+
+
+ 10
+
+
+
+ &6 DD Info/&B Calibration
+
+
+ -
+
+
+
+ 10
+
+
+
+ color: rgb(238, 238, 236);
+background-color: rgb(255, 81, 96);
+
+
+
+ DD Calibrations
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ 0
+
+
+
+ Pressures
+
+
+
-
+
+
-
+
+
+ Req [0x11A]
+
+
+
+ -
+
+
+ OffSet
+
+
+
+ -
+
+
+ -
+
+
+
+ 10
+
+
+
+ color: rgb(238, 238, 236);
+background-color: rgb(255, 81, 96);
+
+
+
+ 281 : [0x119] Get Pressures
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Gain
+
+
+
+ -
+
+
+ Send
+
+
+
+ -
+
+
+ CalibrationTime
+
+
+
+ -
+
+
+ Index
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ -
+
+
+
+ 10
+
+
+
+ color: rgb(238, 238, 236);
+background-color: rgb(255, 81, 96);
+
+
+
+ 283 : [0x11B] Set Pressures
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Send
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ Reason
+
+
+
+ -
+
+
+ Req [0x118]
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ QFrame::WinPanel
+
+
+ QFrame::Sunken
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ Index
+
+
+
+ -
+
+
+ Gain
+
+
+
+ -
+
+
+ OffSet
+
+
+
+ -
+
+
+ CalibrationTime
+
+
+
+ -
+
+
+ Accepted
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+ 100
+
+
+
+ -
+
+
+ Reason
+
+
+
+ -
+
+
+ Gain Rejection
+
+
+
+ -
+
+
+ Index
+
+
+
+ -
+
+
+ CalibrationTime Rejection
+
+
+
+ -
+
+
+ OffSet Rejection
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ QFrame::WinPanel
+
+
+ QFrame::Sunken
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ QFrame::WinPanel
+
+
+ QFrame::Sunken
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ QFrame::WinPanel
+
+
+ QFrame::Sunken
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ QFrame::WinPanel
+
+
+ QFrame::Sunken
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+ Accepted
+
+
+
+
+
+
+
+
+
+ Temperature
+
+
+
+
+ Concentrate Pump
+
+
+
+
+ D48
+
+
+
+
+ D12
+
+
+
+
+
+
+
+
+
Index: DD_Calibration/loader.py
===================================================================
diff -u
--- DD_Calibration/loader.py (revision 0)
+++ DD_Calibration/loader.py (revision ab304a3190684a7bbf1a68a29eafa34a8c503e3f)
@@ -0,0 +1,201 @@
+"""
+ DD Calibration 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
+
+# td simulator
+from leahi_dialin.ui.dd_messaging import DD_Messaging
+from leahi_dialin.ui.td_messaging import TD_Messaging
+
+
+class Loader(DynamicLoader):
+ """
+ DD Calibration UI loader
+ """
+ def __init__(self):
+ self.dd_interface = DD_Messaging()
+ self.can_interface = self.dd_interface.can_interface
+ self.index = 0
+
+ super().__init__(os.path.dirname(__file__))
+
+ if self.can_interface is not None:
+ self.can_interface.register_receiving_publication_function(
+ CAN.CanChannels.ui_sync_broadcast_ch_id,
+ MsgIds.MSG_ID_UI_DD_NVM_GET_PRESSURE_SENSOR_CAL_RECORD_REQUEST.value,
+ self.handle_get_calibration_pressures)
+
+ if self.can_interface is not None:
+ self.can_interface.register_receiving_publication_function(
+ CAN.CanChannels.ui_sync_broadcast_ch_id,
+ MsgIds.MSG_ID_UI_DD_NVM_SET_PRESSURE_SENSOR_CAL_RECORD_REQUEST.value,
+ self.handle_set_calibration_pressures)
+
+
+ def _init_loader(self):
+ """
+ finds and creates widgets
+ :return: none
+ """
+ self.pressureList = [
+ "Hydralics Outlet",
+ "Dry Bicarb",
+ "Spent Dialysate",
+ "Fresh Dialysate",
+ "Transmembrane",
+ "D87",
+ "Water Inlet before regulator",
+ "Water Inlet after regulator",
+ "Water Inlet before cond. sensor",
+ "Before RO filter",
+ "After RO filter",
+ ]
+
+ # Pressures
+ self.tbGetPressureSend = self.find_widget(QtWidgets.QToolButton , 'tbGetPressureSend' )
+
+ self.lbGetPressuresReq = self.find_widget(QtWidgets.QLabel , 'lbGetPressuresReq' )
+ self.cbGetPressureAccepted = self.find_widget(QtWidgets.QCheckBox , 'cbGetPressureAccepted' )
+ self.sbGetPressureRejectionReason = self.find_widget(QtWidgets.QSpinBox , 'sbGetPressureRejectionReason' )
+ self.sbGetPressureIndex = self.find_widget(QtWidgets.QSpinBox , 'sbGetPressureIndex' )
+ self.sbGetPressureGain = self.find_widget(QtWidgets.QDoubleSpinBox , 'sbGetPressureGain' )
+ self.sbGetPressureOffset = self.find_widget(QtWidgets.QDoubleSpinBox , 'sbGetPressureOffset' )
+ self.sbGetPressureCalibrationTime = self.find_widget(QtWidgets.QSpinBox , 'sbGetPressureCalibrationTime' )
+
+ self.tbSetPressureSend = self.find_widget(QtWidgets.QToolButton , 'tbSetPressureSend' )
+ self.lbSetPressuresIndex = self.find_widget(QtWidgets.QLabel , 'lbSetPressuresIndex' )
+ self.lbSetPressureGain = self.find_widget(QtWidgets.QLabel , 'lbSetPressureGain' )
+ self.lbSetPressureOffset = self.find_widget(QtWidgets.QLabel , 'lbSetPressureOffset' )
+ self.lbSetPressureCalibrationTime = self.find_widget(QtWidgets.QLabel , 'lbSetPressureCalibrationTime' )
+ self.cbSetPressureAccepted = self.find_widget(QtWidgets.QCheckBox , 'cbSetPressureAccepted' )
+ self.sbSetPressureRejectionReason = self.find_widget(QtWidgets.QSpinBox , 'sbSetPressureRejectionReason' )
+ self.sbSetPressureIndex = self.find_widget(QtWidgets.QSpinBox , 'sbSetPressureIndex' )
+ self.sbSetPressureGain = self.find_widget(QtWidgets.QSpinBox , 'sbSetPressureGain' )
+ self.sbSetPressureOffset = self.find_widget(QtWidgets.QSpinBox , 'sbSetPressureOffset' )
+ self.sbSetPressureCalibrationTime = self.find_widget(QtWidgets.QSpinBox , 'sbSetPressureCalibrationTime' )
+
+
+ def _init_connections(self):
+ """
+ initializes the widget's connections
+ :return: none
+ """
+ self.tbGetPressureSend .clicked.connect ( self.do_get_pressures_response )
+ self.tbSetPressureSend .clicked.connect ( self.do_set_pressures_response )
+
+
+ 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
+
+
+ @Slot()
+ def _init_widgets(self):
+ """
+ initializes the widget's properties
+ :return: none
+ """
+ self.init_get_pressures()
+ self.init_set_pressures()
+
+
+ def init_get_pressures(self):
+ self.lbGetPressuresReq .setText ("-")
+ self.sbGetPressureRejectionReason .setValue (0)
+ self.sbGetPressureIndex .setValue (0)
+ self.sbGetPressureGain .setValue (0)
+ self.sbGetPressureOffset .setValue (0)
+ self.sbGetPressureCalibrationTime .setValue (0)
+ self.cbGetPressureAccepted .setChecked ( True )
+
+
+ def init_set_pressures(self):
+ self.lbSetPressuresIndex .setText ("-")
+ self.lbSetPressureGain .setText ("-")
+ self.lbSetPressureOffset .setText ("-")
+ self.lbSetPressureCalibrationTime .setText ("-")
+ self.cbSetPressureAccepted .setChecked ( True )
+ self.sbSetPressureIndex .setValue (0)
+ self.sbSetPressureGain .setValue (0)
+ self.sbSetPressureOffset .setValue (0)
+ self.sbSetPressureCalibrationTime .setValue (0)
+
+
+ @Slot()
+ def handle_get_calibration_pressures(self, message, timestamp = 0.0):
+ """
+ Called when the user sends a rinseback command request to firmware from UI
+ @return: None
+ """
+ message = message['message']
+ self.index = MsgFieldPositions.START_POS_FIELD_1
+ value = self.getIntValue(message)
+ print(value)
+ cmdString = self.pressureList[value] if value >= 0 and value < len(self.pressureList) else ""
+ self.lbGetPressuresReq.setText(f"{cmdString} ({value})")
+
+
+ @Slot()
+ def handle_set_calibration_pressures(self, message, timestamp = 0.0):
+ """
+ Called when the user sends a rinseback command request to firmware from UI
+ @return: None
+ """
+ message = message['message']
+ self.index = MsgFieldPositions.START_POS_FIELD_1
+ value = self.getIntValue(message)
+ gain = f"{self.getFloatValue(message):.1f}"
+ offset = f"{self.getFloatValue(message):.1f}"
+ caltime = str(self.getIntValue(message))
+
+ cmdString = self.pressureList[value] if value >= 0 and value < len(self.pressureList) else ""
+ self.lbSetPressuresIndex .setText(f"{cmdString} ({value})")
+ self.lbSetPressureGain .setText(gain)
+ self.lbSetPressureOffset .setText(offset)
+ self.lbSetPressureCalibrationTime .setText(caltime)
+
+
+ @Slot()
+ def do_get_pressures_response(self):
+ self.lbGetPressuresReq .setText ("-")
+ self.dd_interface.dd_get_calibration_pressure_sensor_record(self.cbGetPressureAccepted .isChecked() ,
+ self.sbGetPressureRejectionReason .value() ,
+ self.sbGetPressureIndex .value() ,
+ self.sbGetPressureGain .value() ,
+ self.sbGetPressureOffset .value() ,
+ self.sbGetPressureCalibrationTime .value() )
+
+
+ @Slot()
+ def do_set_pressures_response(self):
+ self.lbSetPressuresIndex .setText ("-")
+ self.lbSetPressureGain .setText ("-")
+ self.lbSetPressureOffset .setText ("-")
+ self.lbSetPressureCalibrationTime .setText ("-")
+ self.dd_interface.dd_set_calibration_pressure_sensor_record(self.cbSetPressureAccepted .isChecked() ,
+ self.sbSetPressureRejectionReason .value() ,
+ self.sbSetPressureIndex .value() ,
+ self.sbSetPressureGain .value() ,
+ self.sbSetPressureOffset .value() ,
+ self.sbSetPressureCalibrationTime .value() )
+