Index: tests/test_alarms.py =================================================================== diff -u -r05176be46b1bcb2cd406be63b7888900b3086b67 -r32e628abcbbd3fd70866505d9f2836a6f732ef06 --- tests/test_alarms.py (.../test_alarms.py) (revision 05176be46b1bcb2cd406be63b7888900b3086b67) +++ tests/test_alarms.py (.../test_alarms.py) (revision 32e628abcbbd3fd70866505d9f2836a6f732ef06) @@ -1,23 +1,41 @@ ########################################################################### # -# Copyright (c) 2019-2019 Diality Inc. - All Rights Reserved. +# Copyright (c) 2020-2024 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. +# 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 +# @file test_alarms.py # -# @date 15-May-2020 -# @author P. Lucia +# @author (last) Peter Lucia +# @date (last) 02-Oct-2020 +# @author (original) Peter Lucia +# @date (original) 05-Jun-2020 # -# @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 +from dialin.utils.base import AbstractObserver +from dialin.ui.hd_simulator import HDSimulator +from dialin.common.alarm_defs import AlarmList +from time import time, sleep + +class Observer(AbstractObserver): + + def __init__(self): + pass + + def update(self, result): + pass + + # Store the state + + def check_something(self): + pass + + def test_disable_all_hd_alarms(): """ Disables all hd alarms @@ -27,12 +45,13 @@ if hd.cmd_log_in_to_hd(): hd.ui.cmd_ui_request_hd_version() - time.sleep(0.5) + 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) + sleep(0.5) + def test_hd_alarms(): """ Simulates all HD alarms @@ -57,33 +76,63 @@ '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_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' ] + alarms_observer = Observer() + + hd.alarms.attach(alarms_observer) + if hd.cmd_log_in_to_hd(): hd.ui.cmd_ui_request_hd_version() - time.sleep(0.5) + 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) + print("Testing {0} = {1}".format(val.name, val.value)) + success = hd.alarms.cmd_alarm_state_override(1, val.value) + sleep(3) if not success: raise ValueError("Failed to activate alarm {0} = {1}".format(desc, val)) - success = hd.alarms.cmd_alarm_state_override(0, val) + success = hd.alarms.cmd_alarm_state_override(0, val.value) if not success: raise ValueError("Failed to deactivate alarm {0} = {1}".format(desc, val)) - time.sleep(2) + sleep(2) +def test_clear_alarms(): + hd_sim = HDSimulator() + hd_sim.alarms_simulator.cmd_send_clear_alarms() + sleep(3) + hd_sim.alarms_simulator.cmd_activate_alarm(alarm=AlarmList.ALARM_ID_BLOOD_PUMP_MOTOR_SPEED_CHECK) + sleep(3) + hd_sim.alarms_simulator.cmd_send_clear_alarms() + sleep(1) + + +def test_repeated_alarm(): + hd_sim = HDSimulator(log_level="DEBUG") + hd_sim.alarms_simulator.cmd_send_clear_alarms() + sleep(2) + flags = hd_sim.alarms_simulator.cmd_make_alarm_flags(alarms_silenced=0, + user_acknowledge=0) + hd_sim.alarms_simulator.set_flags(flags) + hd_sim.alarms_simulator.cmd_repeat_broadcast_alarm(alarm=AlarmList.ALARM_ID_BLOOD_PUMP_MOTOR_SPEED_CHECK, + state=1, + timeout=20) +def test_activate_alarm(): + hd_sim = HDSimulator() + hd_sim.alarms_simulator.cmd_send_clear_alarms() + hd_sim.alarms_simulator.cmd_activate_alarm(alarm=AlarmList.ALARM_ID_BLOOD_PUMP_MOTOR_SPEED_CHECK) + + if __name__ == '__main__': - # test_disable_all_hd_alarms() - test_hd_alarms() + test_activate_alarm() + # test_repeated_alarm()