########################################################################### # # Copyright (c) 2019-2019 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_demo.py # # @date 15-May-2020 # @author P. Lucia # # @brief This is a demo script to exercise the HD and DG. # ############################################################################ import sys sys.path.append("..") from dialin.hd.hemodialysis_device import HD import time def test_disable_all_hd_alarms(): """ Disables all hd alarms \returns None """ hd = HD() if hd.cmd_log_in_to_hd(): hd.ui.cmd_ui_request_hd_version() time.sleep(0.5) print(f"Current HD version: {hd.ui.hd_version}") for desc, val in hd.alarms.ids.items(): hd.alarms.cmd_alarm_state_override(0, val) time.sleep(0.5) def test_hd_alarms(): """ Simulates all HD alarms \returns None """ hd = HD() alarm_faults = [ 'ALARM_ID_NO_ALARM', 'ALARM_ID_SOFTWARE_FAULT', 'ALARM_ID_STUCK_BUTTON_TEST_FAILED', 'ALARM_ID_FPGA_POST_TEST_FAILED', 'ALARM_ID_WATCHDOG_POST_TEST_FAILED', 'ALARM_ID_UI_COMM_POST_FAILED', 'ALARM_ID_WATCHDOG_EXPIRED', 'ALARM_ID_RTC_COMM_ERROR', 'ALARM_ID_DG_COMM_TIMEOUT', 'ALARM_ID_UI_COMM_TIMEOUT', 'ALARM_ID_COMM_TOO_MANY_BAD_CRCS', 'ALARM_ID_CAN_MESSAGE_NOT_ACKED', 'ALARM_ID_UF_RATE_TOO_HIGH_ERROR', 'ALARM_ID_UF_VOLUME_ACCURACY_ERROR', 'ALARM_ID_RTC_OR_TIMER_ACCURACY_FAILURE', 'ALARM_ID_NVDATA_CAL_RECORD_CRC_ERROR', 'AlARM_ID_NVDATA_DISINFECTION_DATE_CRC_ERROR', 'ALARM_ID_NVDATA_MFG_RECORD_CRC_ERROR', 'ALARM_ID_RO_PUMP_OUT_PRESSURE_OUT_OF_RANGE', 'ALARM_ID_TEMPERATURE_SENSORS_OUT_OF_RANGE', 'ALARM_ID_TEMPERATURE_SENSORS_INCONSISTENT', 'ALARM_ID_VALVE_CONTROL_FAILURE' ] if hd.cmd_log_in_to_hd(): hd.ui.cmd_ui_request_hd_version() time.sleep(0.5) print(f"Current HD version: {hd.ui.hd_version}") for desc, val in hd.alarms.ids.items(): if desc in alarm_faults: print("Skipping {0}".format(desc)) continue print("Testing {0} = {1}".format(desc, val)) success = hd.alarms.cmd_alarm_state_override(1, val) time.sleep(10) if not success: raise ValueError("Failed to activate alarm {0} = {1}".format(desc, val)) success = hd.alarms.cmd_alarm_state_override(0, val) if not success: raise ValueError("Failed to deactivate alarm {0} = {1}".format(desc, val)) time.sleep(2) if __name__ == '__main__': # test_disable_all_hd_alarms() test_hd_alarms()