#!/bin/python3 from leahi_dialin.ui.utils import singleton_threadsafe from leahi_dialin.utils import conversions from leahi_dialin.protocols import CAN from leahi_dialin.common import msg_ids from leahi_dialin.common.alarm_priorities import AlarmPriority @singleton_threadsafe class TD_Messaging_Alarms(): def __init__(self): self.can_enabled: bool=False self.can_Channel: str = "can0" class fakeLogger(): def __init__(self): pass def error(a1, a2): pass def info(a1, a2): pass self.can_interface = CAN.DenaliCanMessenger(can_interface=self.can_Channel, logger=fakeLogger() ) self.can_interface.start() if self.can_interface is not None: self.can_enabled = True def cmd_activate_alarm_id(self, state: int = AlarmPriority.ALARM_HIGH, alarm: int = 0, silence_expires: int = 0, flags: int = 0): """ Activates the specified alarm @param state: (int) Alarm priority @param alarm: (int) the alarm id @param silence_expires: (int) seconds until silence expires @param flags: (int) See 'cmd_make_alarm_flags' @return: None """ payload = conversions.integer_to_bytearray (state ) payload += conversions.integer_to_bytearray (alarm ) payload += conversions.integer_to_bytearray (silence_expires) payload += conversions.short_to_bytearray (flags ) message = CAN.DenaliMessage.build_message( channel_id=CAN.DenaliChannels.td_alarm_broadcast_ch_id, message_id=CAN.MsgIds.MSG_ID_ALARM_STATUS_DATA.value, payload=payload) self.can_interface.send(message, 0) def cmd_send_active_list_response(self, accept: bool, reason: int = 0, a0: int = 0, a1: int = 0, a2: int = 0, a3: int = 0, a4: int = 0, a5: int = 0, a6: int = 0, a7: int = 0, a8: int = 0, a9: int = 0) -> None: """ send the list of active alarms @param accept: boolean value true if the request accepted @param reason: the rejection reason @param a0: alarm id 0 in the list - First @param a1: alarm id 1 in the list @param a2: alarm id 2 in the list @param a3: alarm id 3 in the list @param a4: alarm id 4 in the list @param a5: alarm id 5 in the list @param a6: alarm id 6 in the list @param a7: alarm id 7 in the list @param a8: alarm id 8 in the list @param a9: alarm id 9 in the list - Last @return: None """ payload = conversions.integer_to_bytearray(accept) payload += conversions.integer_to_bytearray(reason) payload += conversions.integer_to_bytearray(a0) payload += conversions.integer_to_bytearray(a1) payload += conversions.integer_to_bytearray(a2) payload += conversions.integer_to_bytearray(a3) payload += conversions.integer_to_bytearray(a4) payload += conversions.integer_to_bytearray(a5) payload += conversions.integer_to_bytearray(a6) payload += conversions.integer_to_bytearray(a7) payload += conversions.integer_to_bytearray(a8) payload += conversions.integer_to_bytearray(a9) message = CAN.DenaliMessage.build_message( channel_id=CAN.DenaliChannels.td_to_ui_ch_id, message_id=CAN.MsgIds.MSG_ID_TD_ACTIVE_ALARMS_LIST_REQUEST_RESPONSE.value, payload=payload) self.can_interface.send(message, 0)