########################################################################### # # Copyright (c) 2021-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. # # @file override_templates.py # # @author (last) Zoltan Miskolci # @date (last) 03-Dec-2025 # @author (original) Zoltan Miskolci # @date (original) 03-Dec-2025 # ############################################################################ # Module imports from logging import Logger # Project imports from .constants import RESET, NO_RESET from .msg_defs import MsgIds from ..protocols.CAN import DenaliMessage, DenaliChannels from ..utils.base import DialinEnum from ..utils.checks import check_broadcast_interval_override_ms from ..utils.conversions import integer_to_bytearray, float_to_bytearray @staticmethod def cmd_generic_broadcast_interval_override(ms: int, reset: int, msg_id: MsgIds, channel_id: DenaliChannels, module_name: str, logger: Logger, can_interface) -> int: """ Constructs and sends broadcast interval override command Constraints: Must be logged into the corresponding Module. Given interval must be non-zero and a multiple of the general task interval (50 ms). @param ms: integer - interval (in ms) to override with @param reset: integer - 1 to reset a previous override, 0 to override @param msg_id: MsgIds - The override's msg id @param channel_id: DenaliChannels - The override's channel id @param module_name: str - The module's name to put into the debug prints @param logger: str - The logger for printing debug and error messages @param can_interface: The can_interface @return: 1 if successful, zero otherwise """ if not check_broadcast_interval_override_ms(ms): return False reset_byte_array = integer_to_bytearray(reset) ms_byte_array = integer_to_bytearray(ms) payload = reset_byte_array + ms_byte_array message = DenaliMessage.build_message(channel_id=channel_id, message_id=msg_id.value, payload=payload) logger.debug(f"override {module_name} broadcast interval") # Send message received_message = can_interface.send(message) # If there is content... if received_message is not None: if reset == RESET: str_res = "reset back to normal: " else: str_res = str(ms) + " ms: " logger.debug(f"{module_name} data broadcast interval 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: logger.error("Timeout!!!!") return False