Index: simulator/plugins/GeneralResponseMessage/interface.ui =================================================================== diff -u -r7f0678d0f61fa99a35a1f34fac6c36e12ba93f20 -r7b31e16c71ec5da38ce5759fbfb44a885554cf13 --- simulator/plugins/GeneralResponseMessage/interface.ui (.../interface.ui) (revision 7f0678d0f61fa99a35a1f34fac6c36e12ba93f20) +++ simulator/plugins/GeneralResponseMessage/interface.ui (.../interface.ui) (revision 7b31e16c71ec5da38ce5759fbfb44a885554cf13) @@ -6,14 +6,14 @@ 0 0 - 1234 - 312 + 1198 + 281 - &9 General/&2 Response Message + &9 General/&0 Response Message - + @@ -34,158 +34,185 @@ - - - - - MsgID - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - + + + + 10 + + + + color: rgb(238, 238, 236); +background-color: rgb(46, 52, 54); + + + Response Message + + + Qt::AlignCenter + + + + + + + + + + + HD + + + true + + + + + + + DG + + + + + + + Data + + + + - - - - D000 - - - 94 - - + + + + + + MsgID + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 65535 + + + + + + + Decimal + + + + - - - - - 0 - 0 - - - - - 50 - 0 - - + + - reason + Accept - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - 0 - 0 - - - - - 10 - - - - QFrame::StyledPanel - - - QFrame::Plain - + + - + Reject - + - - - 0 - 0 - + + 999 - - - 10 - - - - + + - Decimal + Reason - - - - - 10 - - - - color: rgb(238, 238, 236); -background-color: rgb(46, 52, 54); - - - Response Message - - - Qt::AlignCenter - - + + + + + + Ack + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + 2147483647 + + + + + + + Sequence + + + + + + + Send + + + + - - - - - 10 - + + + + Qt::Horizontal - - Accept + + + 40 + 20 + - + - - - - - 10 - - - - Reject - - - - - - - HD - - - true - - - - - - - DG - - - - + + + + + 0 + 0 + + + + + 10 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + + + + + 2 @@ -405,7 +432,227 @@ - + + + + 2 + + + 0 + + + + + P10 + + + + + + + P11 + + + + + + + P12 + + + + + + + P13 + + + + + + + P14 + + + + + + + P15 + + + + + + + P16 + + + + + + + P17 + + + + + + + P18 + + + + + + + P19 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + 2147483647 + + + + + + + F10 + + + + + + + F11 + + + + + + + F12 + + + + + + + F13 + + + + + + + F14 + + + + + + + F15 + + + + + + + F16 + + + + + + + F17 + + + + + + + F18 + + + + + + + F19 + + + + + + Qt::Vertical @@ -423,10 +670,6 @@ rbHD rbDG - leMessageID - btnAccept - btnReject - spnReason chkP0 spnP0 chkP1 Index: simulator/plugins/GeneralResponseMessage/loader.py =================================================================== diff -u -r7f0678d0f61fa99a35a1f34fac6c36e12ba93f20 -r7b31e16c71ec5da38ce5759fbfb44a885554cf13 --- simulator/plugins/GeneralResponseMessage/loader.py (.../loader.py) (revision 7f0678d0f61fa99a35a1f34fac6c36e12ba93f20) +++ simulator/plugins/GeneralResponseMessage/loader.py (.../loader.py) (revision 7b31e16c71ec5da38ce5759fbfb44a885554cf13) @@ -23,11 +23,18 @@ """ rbHD: QtWidgets.QRadioButton rbDG: QtWidgets.QRadioButton - leMessageID: QtWidgets.QLineEdit + + chkData: QtWidgets.QCheckBox + spnMessageID: QtWidgets.QSpinBox + btnAccept: QtWidgets.QPushButton btnReject: QtWidgets.QPushButton lblAction: QtWidgets.QLabel spnReason: QtWidgets.QSpinBox + + btnAcknow: QtWidgets.QPushButton + spnSequence: QtWidgets.QSpinBox + spnP0: QtWidgets.QSpinBox spnP1: QtWidgets.QSpinBox spnP2: QtWidgets.QSpinBox @@ -58,6 +65,36 @@ chkF7: QtWidgets.QCheckBox chkF8: QtWidgets.QCheckBox chkF9: QtWidgets.QCheckBox + spnP10: QtWidgets.QSpinBox + spnP11: QtWidgets.QSpinBox + spnP12: QtWidgets.QSpinBox + spnP13: QtWidgets.QSpinBox + spnP14: QtWidgets.QSpinBox + spnP15: QtWidgets.QSpinBox + spnP16: QtWidgets.QSpinBox + spnP17: QtWidgets.QSpinBox + spnP18: QtWidgets.QSpinBox + spnP19: QtWidgets.QSpinBox + chkP10: QtWidgets.QCheckBox + chkP11: QtWidgets.QCheckBox + chkP12: QtWidgets.QCheckBox + chkP13: QtWidgets.QCheckBox + chkP14: QtWidgets.QCheckBox + chkP15: QtWidgets.QCheckBox + chkP16: QtWidgets.QCheckBox + chkP17: QtWidgets.QCheckBox + chkP18: QtWidgets.QCheckBox + chkP19: QtWidgets.QCheckBox + chkF10: QtWidgets.QCheckBox + chkF11: QtWidgets.QCheckBox + chkF12: QtWidgets.QCheckBox + chkF13: QtWidgets.QCheckBox + chkF14: QtWidgets.QCheckBox + chkF15: QtWidgets.QCheckBox + chkF16: QtWidgets.QCheckBox + chkF17: QtWidgets.QCheckBox + chkF18: QtWidgets.QCheckBox + chkF19: QtWidgets.QCheckBox def __init__(self, hd_simulator: HDSimulator): super().__init__(os.path.dirname(__file__), hd_simulator) @@ -69,11 +106,17 @@ """ self.rbHD = self.find_radio_button('rbHD') self.rbDG = self.find_radio_button('rbDG') - self.leMessageID = self.find_line_edit('leMessageID') + self.chkData = self.find_checkbox('chkData') + + self.spnMessageID = self.find_spinbox('spnMessageID') self.btnAccept = self.find_button('btnAccept') self.btnReject = self.find_button('btnReject') self.lblAction = self.find_label('lblAction') self.spnReason = self.find_spinbox('spnReason') + + self.btnAcknow = self.find_button('btnAcknow') + self.spnSequence = self.find_spinbox('spnSequence') + self.spnP0 = self.find_spinbox('spnP0') self.spnP1 = self.find_spinbox('spnP1') self.spnP2 = self.find_spinbox('spnP2') @@ -104,6 +147,36 @@ self.chkF7 = self.find_checkbox('chkF7') self.chkF8 = self.find_checkbox('chkF8') self.chkF9 = self.find_checkbox('chkF9') + self.spnP10 = self.find_spinbox('spnP10') + self.spnP11 = self.find_spinbox('spnP11') + self.spnP12 = self.find_spinbox('spnP12') + self.spnP13 = self.find_spinbox('spnP13') + self.spnP14 = self.find_spinbox('spnP14') + self.spnP15 = self.find_spinbox('spnP15') + self.spnP16 = self.find_spinbox('spnP16') + self.spnP17 = self.find_spinbox('spnP17') + self.spnP18 = self.find_spinbox('spnP18') + self.spnP19 = self.find_spinbox('spnP19') + self.chkP10 = self.find_checkbox('chkP10') + self.chkP11 = self.find_checkbox('chkP11') + self.chkP12 = self.find_checkbox('chkP12') + self.chkP13 = self.find_checkbox('chkP13') + self.chkP14 = self.find_checkbox('chkP14') + self.chkP15 = self.find_checkbox('chkP15') + self.chkP16 = self.find_checkbox('chkP16') + self.chkP17 = self.find_checkbox('chkP17') + self.chkP18 = self.find_checkbox('chkP18') + self.chkP19 = self.find_checkbox('chkP19') + self.chkF10 = self.find_checkbox('chkF10') + self.chkF11 = self.find_checkbox('chkF11') + self.chkF12 = self.find_checkbox('chkF12') + self.chkF13 = self.find_checkbox('chkF13') + self.chkF14 = self.find_checkbox('chkF14') + self.chkF15 = self.find_checkbox('chkF15') + self.chkF16 = self.find_checkbox('chkF16') + self.chkF17 = self.find_checkbox('chkF17') + self.chkF18 = self.find_checkbox('chkF18') + self.chkF19 = self.find_checkbox('chkF19') def _init_widgets(self): """ @@ -119,6 +192,7 @@ """ self.btnAccept.clicked.connect(self.do_accept) self.btnReject.clicked.connect(self.do_reject) + self.btnAcknow.clicked.connect(self.do_acknow) def _make_parameters_payload(self): self.parameters_payload_len = 0 @@ -183,17 +257,86 @@ else: self.parameters_payload += integer_to_bytearray(self.spnP9.value()) self.parameters_payload_len = 10 + if self.chkP10.isChecked(): + if self.chkF10.isChecked(): + self.parameters_payload = float_to_bytearray(self.spnP10.value()) + else: + self.parameters_payload = integer_to_bytearray(self.spnP10.value()) + self.parameters_payload_len = 11 + if self.chkP11.isChecked(): + if self.chkF11.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP11.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP11.value()) + self.parameters_payload_len = 12 + if self.chkP12.isChecked(): + if self.chkF12.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP12.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP12.value()) + self.parameters_payload_len = 13 + if self.chkP13.isChecked(): + if self.chkF13.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP13.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP13.value()) + self.parameters_payload_len = 14 + if self.chkP14.isChecked(): + if self.chkF14.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP14.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP14.value()) + self.parameters_payload_len = 15 + if self.chkP15.isChecked(): + if self.chkF15.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP15.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP15.value()) + self.parameters_payload_len = 16 + if self.chkP16.isChecked(): + if self.chkF16.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP16.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP16.value()) + self.parameters_payload_len = 17 + if self.chkP17.isChecked(): + if self.chkF17.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP17.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP17.value()) + self.parameters_payload_len = 18 + if self.chkP18.isChecked(): + if self.chkF18.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP18.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP18.value()) + self.parameters_payload_len = 19 + if self.chkP19.isChecked(): + if self.chkF19.isChecked(): + self.parameters_payload += float_to_bytearray(self.spnP19.value()) + else: + self.parameters_payload += integer_to_bytearray(self.spnP19.value()) + self.parameters_payload_len = 20 @Slot() def do_accept(self): """ the slot for accept button :return: none """ - message_id = self.leMessageID.text() + message_id = self.spnMessageID.text() self._make_parameters_payload() - self.hd_simulator.cmd_send_general_response(int(message_id), True, 0, self.rbHD.isChecked(), - self.parameters_payload_len > 0, self.parameters_payload) + if self.rbHD.isChecked(): + self.hd_simulator.cmd_send_general_hd_response(int(message_id), True, 0, + self.chkData.isChecked(), + self.parameters_payload_len > 0, + self.parameters_payload) + else: + self.hd_simulator.cmd_send_general_dg_response(int(message_id), True, 0, + self.chkData.isChecked(), + self.parameters_payload_len > 0, + self.parameters_payload) + self.lblAction.setText('Accepted ') @Slot() @@ -202,9 +345,30 @@ the slot for reject button :return: none """ - message_id = self.leMessageID.text() + message_id = self.spnMessageID.text() reason = self.spnReason.value() self._make_parameters_payload() - self.hd_simulator.cmd_send_general_response(int(message_id), False, reason, self.rbHD.isChecked(), - self.parameters_payload_len > 0, self.parameters_payload) + if self.rbHD.isChecked(): + self.hd_simulator.cmd_send_general_hd_response(int(message_id), False, reason, + self.chkData.isChecked(), + self.parameters_payload_len > 0, + self.parameters_payload) + else: + self.hd_simulator.cmd_send_general_dg_response(int(message_id), False, reason, + self.chkData.isChecked(), + self.parameters_payload_len > 0, + self.parameters_payload) + self.lblAction.setText('Rejected ' + "{}".format(reason)) + + @Slot() + def do_acknow(self): + """ + sends the message acknowledge by the sequence number spnSequence + :return: None + """ + seq = self.spnSequence.value() + if self.rbHD.isChecked(): + self.hd_simulator.ack_send_hd(seq) + else: + self.hd_simulator.ack_send_dg(seq) Index: simulator/plugins/PostTreatment/interface.ui =================================================================== diff -u -rf7ddf9ad0024ce755a89661d7bf47a2342d97890 -r7b31e16c71ec5da38ce5759fbfb44a885554cf13 --- simulator/plugins/PostTreatment/interface.ui (.../interface.ui) (revision f7ddf9ad0024ce755a89661d7bf47a2342d97890) +++ simulator/plugins/PostTreatment/interface.ui (.../interface.ui) (revision 7b31e16c71ec5da38ce5759fbfb44a885554cf13) @@ -11,7 +11,7 @@ - &5 Post-Treatment/&0 Responses + &5 Post-Treatment/&0 Treatment Log Index: simulator/plugins/PostTreatment/loader.py =================================================================== diff -u -rf7ddf9ad0024ce755a89661d7bf47a2342d97890 -r7b31e16c71ec5da38ce5759fbfb44a885554cf13 --- simulator/plugins/PostTreatment/loader.py (.../loader.py) (revision f7ddf9ad0024ce755a89661d7bf47a2342d97890) +++ simulator/plugins/PostTreatment/loader.py (.../loader.py) (revision 7b31e16c71ec5da38ce5759fbfb44a885554cf13) @@ -12,8 +12,6 @@ from dialin.ui.hd_simulator import HDSimulator from dialin.ui.hd_simulator import RequestRejectReasons -from dialin.utils.conversions import unsigned_to_bytearray, float_to_bytearray - # plugin specific # -- None -- @@ -244,45 +242,43 @@ the slot for accept button :return: none """ - parameters = [ - # column 1 - unsigned_to_bytearray(int(self.leBloodFlowRate.text())), - unsigned_to_bytearray(int(self.leDialysateFlowRate.text())), - unsigned_to_bytearray(int(self.leTreatmentDuration.text())), - unsigned_to_bytearray(int(self.leActualTreatmentDuration.text())), - unsigned_to_bytearray(int(self.leAcidConcentrateType.text())), - unsigned_to_bytearray(int(self.leBicarbonateConcentrateType.text())), - unsigned_to_bytearray(int(self.lePotassiumConcentration.text())), - unsigned_to_bytearray(int(self.leCalciumConcentration.text())), - unsigned_to_bytearray(int(self.leBicarbonateConcentration.text())), - unsigned_to_bytearray(int(self.leSodiumConcentration.text())), - float_to_bytearray(float(self.leDialysateTemperature.text())), - unsigned_to_bytearray(int(self.leDialyzerType.text())), - unsigned_to_bytearray(int(self.leTreatmentDateTime.text())), - float_to_bytearray(float(self.leAverageBloodFlow.text())), - float_to_bytearray(float(self.leAverageDialysateFlow.text())), - float_to_bytearray(float(self.leDialysateVolumeUsed.text())), - float_to_bytearray(float(self.leAverageDialysateTemp.text())), - # column 2 - float_to_bytearray(float(self.leTargetUFVolume.text())), - float_to_bytearray(float(self.leActualUFVolume.text())), - float_to_bytearray(float(self.leTargetUFRate.text())), - float_to_bytearray(float(self.leActualUFRate.text())), - unsigned_to_bytearray(int(self.leSalineBolusVolume.text())), - unsigned_to_bytearray(int(self.leHeparinType.text())), - unsigned_to_bytearray(int(self.leHeparinConcentration.text())), - float_to_bytearray(float(self.leHeparinBolusVolume.text())), - float_to_bytearray(float(self.leHeparinDispenseRate.text())), - unsigned_to_bytearray(int(self.leHeparinPreStop.text())), - float_to_bytearray(float(self.leHeparinDeliveredVolume.text())), - float_to_bytearray(float(self.leAverageArterialPressure.text())), - float_to_bytearray(float(self.leAverageVenousPressure.text())), - unsigned_to_bytearray(int(self.leEndTreatmentEarlyAlarm.text())), - unsigned_to_bytearray(int(self.leDeviceID.text())), - unsigned_to_bytearray(int(self.leWaterSampleTestResult.text())) - ] - - self.hd_simulator.cmd_send_post_treatment_log_response(True, 0, parameters) + self.hd_simulator.cmd_send_post_treatment_log_response(True, 0, + # column 1 + int(self.leBloodFlowRate.text()), + int(self.leDialysateFlowRate.text()), + int(self.leTreatmentDuration.text()), + int(self.leActualTreatmentDuration.text()), + int(self.leAcidConcentrateType.text()), + int(self.leBicarbonateConcentrateType.text()), + int(self.lePotassiumConcentration.text()), + int(self.leCalciumConcentration.text()), + int(self.leBicarbonateConcentration.text()), + int(self.leSodiumConcentration.text()), + float(self.leDialysateTemperature.text()), + int(self.leDialyzerType.text()), + int(self.leTreatmentDateTime.text()), + float(self.leAverageBloodFlow.text()), + float(self.leAverageDialysateFlow.text()), + float(self.leDialysateVolumeUsed.text()), + float(self.leAverageDialysateTemp.text()), + # column 2 + float(self.leTargetUFVolume.text()), + float(self.leActualUFVolume.text()), + float(self.leTargetUFRate.text()), + float(self.leActualUFRate.text()), + int(self.leSalineBolusVolume.text()), + int(self.leHeparinType.text()), + int(self.leHeparinConcentration.text()), + float(self.leHeparinBolusVolume.text()), + float(self.leHeparinDispenseRate.text()), + int(self.leHeparinPreStop.text()), + float(self.leHeparinDeliveredVolume.text()), + float(self.leAverageArterialPressure.text()), + float(self.leAverageVenousPressure.text()), + int(self.leEndTreatmentEarlyAlarm.text()), + int(self.leDeviceID.text()), + int(self.leWaterSampleTestResult.text()) + ) self.lblActionTxLog.setText('Accepted ') @Slot() @@ -291,43 +287,11 @@ the slot for reject button :return: none """ - parameters = [ - # column 1 - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - float_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - # column 2 - float_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - unsigned_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - float_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0), - unsigned_to_bytearray(0) - ] reason = self.spnReasonTxLog.value() - self.hd_simulator.cmd_send_post_treatment_log_response(False, reason, parameters) + self.hd_simulator.cmd_send_post_treatment_log_response(False, reason, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0 + ) self.lblActionTxLog.setText('Rejected ' + "{}".format(reason))