Index: leahi_dialin/dd/modules/ultrafiltration.py =================================================================== diff -u -r3f4937e339925dde0b95f08e49969f8983c5cba4 -rba415df9f8e76d6b0f21e8f69ba99346e42f7b09 --- leahi_dialin/dd/modules/ultrafiltration.py (.../ultrafiltration.py) (revision 3f4937e339925dde0b95f08e49969f8983c5cba4) +++ leahi_dialin/dd/modules/ultrafiltration.py (.../ultrafiltration.py) (revision ba415df9f8e76d6b0f21e8f69ba99346e42f7b09) @@ -16,15 +16,18 @@ # Module imports from logging import Logger +from typing import Union # Project imports from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.generic_defs import DataTypes +from leahi_dialin.common import dd_enum_repository from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override from leahi_dialin.protocols.CAN import CanMessenger, CanChannels from leahi_dialin.utils.abstract_classes import AbstractSubSystem from leahi_dialin.utils.base import publish +from leahi_dialin.utils import DialinEnum class DDUltrafiltration(AbstractSubSystem): @@ -49,12 +52,67 @@ function = self._handler_ultrafiltration_sync) self.uf_timestamp = 0.0 #: The timestamp of the latest message - self.uf_exec_state = 0 #: The Ultrafiltration execution state - self.uf_rate = 0.0 #: The Ultrafiltration rate - self.compensated_uf_rate = 0.0 #: The Compensated Ultrafiltration rate - self.is_uf_requested = 0 #: Is Ultrafiltration requested or not + self.uf_exec_state = 0 + self.uf_rate = 0.0 + self.compensated_uf_rate = 0.0 + self.is_uf_requested = False + +# ============================================================ Properties ============================================================ + @property + def uf_exec_state(self) -> int: + """ + The Ultrafiltration execution state + """ + return self._uf_exec_state + + @uf_exec_state.setter + def uf_exec_state(self, value: Union[int, DialinEnum]): + if isinstance(value, int): + self._uf_exec_state = value + else: + self._uf_exec_state = value + + + @property + def uf_rate(self) -> float: + """ + The Ultrafiltration rate + """ + return self._uf_rate + + @uf_rate.setter + def uf_rate(self, value: float): + self._uf_rate = value + + + @property + def compensated_uf_rate(self) -> float: + """ + The Compensated Ultrafiltration rate + """ + return self._compensated_uf_rate + + @compensated_uf_rate.setter + def compensated_uf_rate(self, value: float): + self._compensated_uf_rate = value + + + @property + def is_uf_requested(self) -> bool: + """ + Is Ultrafiltration requested or not + """ + return self._is_uf_requested + + @is_uf_requested.setter + def is_uf_requested(self, value: bool): + self._is_uf_requested = value + + + +# ============================================================ Handlers ============================================================ @publish(["msg_id_dd_uf_data", "uf_exec_state","uf_rate", "compensated_uf_rate", "is_uf_requested", "uf_timestamp"]) @@ -66,16 +124,17 @@ @return: None """ msg_list =[] - msg_list.append(('self.uf_exec_state', DataTypes.U32)) - msg_list.append(('self.uf_rate', DataTypes.F32)) - msg_list.append(('self.compensated_uf_rate', DataTypes.F32)) - msg_list.append(('self.is_uf_requested', DataTypes.U32)) + # msg_list.append((type(self).uf_exec_state, DataTypes.U32)) + msg_list.append((type(self).uf_rate, DataTypes.F32)) + msg_list.append((type(self).compensated_uf_rate, DataTypes.F32)) + msg_list.append((type(self).is_uf_requested, DataTypes.BOOL)) - self.process_into_vars(decoder_list = msg_list, - message = message) + self.process_into_vars(decoder_list = msg_list, message = message) self.uf_timestamp = timestamp + +# ============================================================ Overrides and Requests ============================================================ def cmd_uf_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the broadcast time interval override for ultrafiltration data.