########################################################################### # # Copyright (c) 2020-2025 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 post_treatment.py # # @author (last) Zoltan Miskolci # @date (last) 21-Aug-2026 # @author (original) Zoltan Miskolci # @date (original) 21-Aug-2026 # ############################################################################ # Module imports from logging import Logger # Project imports from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.protocols.CAN import CanMessenger, CanChannels from leahi_dialin.utils.abstract_classes import AbstractSubSystem from leahi_dialin.utils.base import publish class TDPostTreatment(AbstractSubSystem): """ Post-Treatment Delivery (TD) Dialin API sub-class for treatment related commands. """ def __init__(self, can_interface: CanMessenger, logger: Logger): """ Constructor """ super().__init__() self.can_interface = can_interface self.logger = logger if self.can_interface is not None: self.can_interface.register_receiving_publication_function(channel_id = CanChannels.td_sync_broadcast_ch_id, message_id = MsgIds.MSG_ID_UNUSED.value, function = self._handler_post_treatment_state_sync) # Treatment State Data self.post_tx_state_timestamp = 0 #: The timestamp of the latest Post-Treatment State message self.post_treatment_states = { 'sub_mode': 0, # The Pre-Treatment Operation Sub-Mode } # ============================================================ Properties ============================================================ @property def post_treatment_states(self) -> dict: """ The Post-Treatment states """ return self._post_treatment_states @post_treatment_states.setter def post_treatment_states(self, value): self._post_treatment_states = value # ============================================================ Handlers ============================================================ @publish([MsgIds.MSG_ID_UNUSED.name.lower(), "post_treatment_states", "post_tx_state_timestamp"]) def _handler_post_treatment_state_sync(self, message, timestamp=0.0): """ Handles published treatment state data messages. @param message: published psot treatment state data message @return: none """ msg_list = [] msg_list.append((self.post_treatment_states, 'sub_mode', DataTypes.U32)) self.process_into_vars(decoder_list = msg_list, message = message) self.post_tx_state_timestamp = timestamp # ============================================================ Overrides and Requests ============================================================