Index: leahi_dialin/fp/modules/valves.py =================================================================== diff -u -r1b36df741816a4ef251028d721235daebea88558 -re45b20cdc5d4c5dcff8cef530b173ca94cb2e422 --- leahi_dialin/fp/modules/valves.py (.../valves.py) (revision 1b36df741816a4ef251028d721235daebea88558) +++ leahi_dialin/fp/modules/valves.py (.../valves.py) (revision e45b20cdc5d4c5dcff8cef530b173ca94cb2e422) @@ -8,23 +8,27 @@ # @file valves.py # # @author (last) Zoltan Miskolci -# @date (last) 09-Jan-2026 +# @date (last) 05-May-2026 # @author (original) Peman Montazemi # @date (original) 19-May-2020 # ############################################################################ +# Module imports import struct from logging import Logger from collections import OrderedDict +# Project imports from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common import fp_enum_repository +from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.fp_defs import BETA_IOFP_VALVE_OFFSET -from leahi_dialin.common.msg_defs import MsgIds +from leahi_dialin.common.msg_ids import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels -from leahi_dialin.utils.base import AbstractSubSystem, publish +from leahi_dialin.protocols.CAN import CanMessenger, CanMessage, CanChannels +from leahi_dialin.utils.abstract_classes import AbstractSubSystem +from leahi_dialin.utils.base import publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -39,23 +43,23 @@ """ # Valves states publish message field positions - START_IO_VALVES_STATES = DenaliMessage.PAYLOAD_START_INDEX + START_IO_VALVES_STATES = CanMessage.PAYLOAD_START_INDEX END_IO_VALVES_STATES = START_IO_VALVES_STATES + 1 # IO Valves States come in as a U08 value (1 byte) START_FP_VALVES_STATES = END_IO_VALVES_STATES END_FP_VALVES_STATES = START_FP_VALVES_STATES + 1 # FP Valves States come in as a U08 value (1 byte) - def __init__(self, can_interface, logger: Logger): + def __init__(self, can_interface: CanMessenger, logger: Logger): """ - @param can_interface: Denali CAN Messenger object + @param can_interface: Can Messenger object """ super().__init__() self.can_interface = can_interface self.logger = logger if self.can_interface is not None: - channel_id = DenaliChannels.fp_sync_broadcast_ch_id - self.msg_id_fp_valves_states_data = MsgIds.MSG_ID_FP_VALVES_STATES_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_fp_valves_states_data, self._handler_valves_sync) + self.can_interface.register_receiving_publication_function(channel_id = CanChannels.fp_sync_broadcast_ch_id, + message_id = MsgIds.MSG_ID_FP_VALVES_STATES_DATA.value, + function = self._handler_valves_sync) self.fp_valves_states_timestamp = 0.0 #: The timestamp of the last message self.valve_states_all = 0x0000 #: States of all the vales in binary format @@ -129,13 +133,13 @@ @return: none """ # Extract each valve state from U08 valves states using bit-masking - io_valves = struct.unpack('B', bytearray(message['message'][self.START_IO_VALVES_STATES:self.END_IO_VALVES_STATES])) + io_valves = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray(message['message'][self.START_IO_VALVES_STATES:self.END_IO_VALVES_STATES])) self.m4_valv["state"] = self._binary_to_valve_state(io_valves[0] & 1) self.m12_valv["state"] = self._binary_to_valve_state(io_valves[0] & 2) self.valve_states_all = io_valves[0] # Extract each valve state from U08 valves states using bit-masking - fp_valves = struct.unpack('B', bytearray(message['message'][self.START_FP_VALVES_STATES:self.END_FP_VALVES_STATES])) + fp_valves = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray(message['message'][self.START_FP_VALVES_STATES:self.END_FP_VALVES_STATES])) self.p11_valv["state"] = self._binary_to_valve_state(fp_valves[0] & 1) self.p33_valv["state"] = self._binary_to_valve_state(fp_valves[0] & 2) self.p34_valv["state"] = self._binary_to_valve_state(fp_valves[0] & 4) @@ -153,7 +157,7 @@ start = self.END_FP_VALVES_STATES end = start + 1 for valve_id in self.valves_sensed_states: - self.valves_sensed_states[valve_id] = struct.unpack('B', bytearray(message['message'][start:end]))[0] + self.valves_sensed_states[valve_id] = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray(message['message'][start:end]))[0] start = end end += 1 self.fp_valves_states_timestamp = timestamp @@ -173,7 +177,7 @@ return cmd_generic_broadcast_interval_override( ms = ms, reset = reset, - channel_id = DenaliChannels.dialin_to_fp_ch_id, + channel_id = CanChannels.dialin_to_fp_ch_id, msg_id = MsgIds.MSG_ID_FP_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST, module_name = 'FP Valves', logger = self.logger, @@ -201,7 +205,7 @@ return cmd_generic_override( payload = payload, reset = reset, - channel_id = DenaliChannels.dialin_to_fp_ch_id, + channel_id = CanChannels.dialin_to_fp_ch_id, msg_id = MsgIds.MSG_ID_FP_VALVE_SENSED_STATE_OVERRIDE_REQUEST, entity_name = f'FP {valve_name} Valve sensed state', override_text = str(state), @@ -230,7 +234,7 @@ return cmd_generic_override( payload = payload, reset = reset, - channel_id = DenaliChannels.dialin_to_fp_ch_id, + channel_id = CanChannels.dialin_to_fp_ch_id, msg_id = MsgIds.MSG_ID_FP_VALVE_CMD_STATE_OVERRIDE_REQUEST, entity_name = f'FP {valve_name} Valve state', override_text = str(state),