Index: dialin/hd/ui_proxy.py =================================================================== diff -u -r17e48d8bf1a8960537d0615f7118bb8532e1015c -ra51e2af877a26c03f4d75b8f8fc7136c23e8a5d7 --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 17e48d8bf1a8960537d0615f7118bb8532e1015c) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision a51e2af877a26c03f4d75b8f8fc7136c23e8a5d7) @@ -19,6 +19,7 @@ from ..utils.conversions import integer_to_bytearray, float_to_bytearray import struct from ..utils.base import _AbstractSubSystem, _publish +from collections import OrderedDict class HDUIProxy(_AbstractSubSystem): @@ -49,6 +50,24 @@ RESPONSE_REJECTED = 0 RESPONSE_ACCEPTED = 1 + REQUEST_REJECT_REASON_NONE = 0 + REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE = 1 + REQUEST_REJECT_REASON_TIMEOUT_WAITING_FOR_USER_CONFIRM = 2 + REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE = 3 + REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE = 4 + REQUEST_REJECT_REASON_TREATMENT_TOO_CLOSE_TO_FINISHED = 5 + REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE = 6 + REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT = 7 + REQUEST_REJECT_REASON_BLOOD_FLOW_OUT_OF_RANGE = 8 + REQUEST_REJECT_REASON_DIAL_FLOW_OUT_OF_RANGE = 9 + REQUEST_REJECT_REASON_DIAL_VOLUME_OUT_OF_RANGE = 10 + REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE = 11 + REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE = 12 + REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_MINIMUM = 13 + REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS = 14 + REQUEST_REJECT_REASON_UF_NOT_PAUSED = 15 + REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS = 16 + # HD version message field positions START_POS_MAJOR = DenaliMessage.PAYLOAD_START_INDEX END_POS_MAJOR = START_POS_MAJOR + 1 @@ -182,6 +201,12 @@ self.target_blood_flow_rate = 0 self.target_dialysate_flow_rate = 0 + self.reject_reasons = OrderedDict() + for attr in dir(self): + if not callable(getattr(self, attr)) and attr.startswith("REQUEST_REJECT"): + self.reject_reasons[attr] = getattr(self, attr) + self.reject_reasons = OrderedDict(sorted(self.reject_reasons.items(), key=lambda key: key[1])) + def get_hd_version(self): """ Gets the hd version @@ -254,6 +279,14 @@ """ return self.duration_change_reject_reason + def get_reject_reasons(self): + """ + Gets all possible reject reasons + + @return: OrderedDict(), {"": ... } + """ + return self.reject_reasons + def get_duration_change_time_min(self): """ Gets the duration change time Index: tests/unit_tests/test_ui_proxy.py =================================================================== diff -u --- tests/unit_tests/test_ui_proxy.py (revision 0) +++ tests/unit_tests/test_ui_proxy.py (revision a51e2af877a26c03f4d75b8f8fc7136c23e8a5d7) @@ -0,0 +1,37 @@ +########################################################################### +# +# Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file test_imports.py +# +# @date 29-Apr-2020 +# @author P. Lucia +# +# @brief Tests imports of all available modules +# +############################################################################ +import unittest +import sys +sys.path.append("../..") +from datetime import datetime +from dialin.hd.hemodialysis_device import HD + + +class DGValves(unittest.TestCase): + + # @unittest.skip("Skipping test_imports") + def test_hd_get_reject_reasons(self): + hd = HD() + + i = 0 + for key, value in hd.ui.get_reject_reasons().items(): + self.assertEqual(i, value) + i += 1 + + + +if __name__ == '__main__': + unittest.main(verbosity=2)