########################################################################### # # 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 watchdog.py # # @date 31-Mar-2020 # @author P. Lucia # # @brief # # ############################################################################ from ..protocols.CAN import (DenaliMessage, DenaliChannels) from ..utils.conversions import integer_to_bytearray from .constants import RESET, NO_RESET class HDWatchdog: """ Hemodialysis Device (HD) Dialin API sub-class for watchdog related commands. """ # watchdog message IDs MSG_ID_HD_WD_CHECKIN_OVERRIDE = 0x8005 def __init__(self, can_interface): """ @param can_interface: the denali can interface object """ self.can_interface = can_interface def cmd_watchdog_task_check_in_override(self, state, task, reset=NO_RESET): """ Constructs and sends the watchdog task check-in override command @param state: integer - 1 for task checked in, 0 for task not checked in @param task: integer - ID of task to override @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise """ rst = integer_to_bytearray(reset) sta = integer_to_bytearray(state) tsk = integer_to_bytearray(task) payload = rst + sta + tsk message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, message_id=self.MSG_ID_HD_WD_CHECKIN_OVERRIDE, payload=payload) print("override watchdog task check-in state") # Send message received_message = self.can_interface.send(message) # If there is content... if received_message is not None: # print(received_message) if reset == RESET: str_res = "reset back to normal" else: str_res = ("checked in" if state != 0 else "not checked in") print("watchdog task check-in overridden to " + str_res + ":" + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) # response payload is OK or not OK return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: print("Timeout!!!!") return False