Index: leahi_dialin/dd/modules/valves.py =================================================================== diff -u -rd089b54d2fde7f8c36acce41a47d7acee4ef5da6 -r6d104d3185ac3ed7c18c97ecdc13fd59bf53a8d1 --- leahi_dialin/dd/modules/valves.py (.../valves.py) (revision d089b54d2fde7f8c36acce41a47d7acee4ef5da6) +++ leahi_dialin/dd/modules/valves.py (.../valves.py) (revision 6d104d3185ac3ed7c18c97ecdc13fd59bf53a8d1) @@ -8,23 +8,28 @@ # @file valves.py # # @author (last) Zoltan Miskolci -# @date (last) 07-Jan-2026 +# @date (last) 04-May-2026 # @author (original) Peman Montazemi # @date (original) 19-May-2020 # ############################################################################ -import struct -from logging import Logger +# Module imports from collections import OrderedDict +from logging import Logger +import struct +# Project imports from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common import dd_enum_repository +from leahi_dialin.common.generic_defs import DataTypes from leahi_dialin.common.msg_defs 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.utils.base import AbstractSubSystem, publish +from leahi_dialin.protocols.CAN import DenaliCanMessenger, DenaliMessage, DenaliChannels +from leahi_dialin.utils.abstract_classes import AbstractSubSystem +from leahi_dialin.utils.base import publish +from leahi_dialin.utils.abstract_classes import AbstractSubSystem +from leahi_dialin.utils.base import publish from leahi_dialin.utils.conversions import integer_to_bytearray # Valve states @@ -47,7 +52,7 @@ END_POS_SPARE_VALVES_STATES = START_POS_SPARE_VALVES_STATES + 1 END_POS_ALL_VALVES = START_POS_VALVES_STATES + 4 - def __init__(self, can_interface, logger: Logger): + def __init__(self, can_interface: DenaliCanMessenger, logger: Logger): """ @param can_interface: Denali CAN Messenger object """ @@ -56,9 +61,9 @@ self.logger = logger if self.can_interface is not None: - channel_id = DenaliChannels.dd_sync_broadcast_ch_id - self.msg_id_dd_valves_states_data = MsgIds.MSG_ID_DD_VALVES_STATES_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_valves_states_data, self._handler_valves_sync) + self.can_interface.register_receiving_publication_function(channel_id = DenaliChannels.dd_sync_broadcast_ch_id, + message_id = MsgIds.MSG_ID_DD_VALVES_STATES_DATA.value, + function = self._handler_valves_sync) self.dd_valves_states_timestamp = 0.0 #: The timestamp of the latest message self.valve_states_all = 0x00000000 #: States of all the vales in binary format @@ -225,10 +230,10 @@ @param message: published DD valves states message @return: none """ - vsa = struct.unpack('I', bytearray(message['message'][self.START_POS_VALVES_STATES:self.END_POS_ALL_VALVES])) + vsa = struct.unpack(DataTypes.U32.unpack_attrib(), bytearray(message['message'][self.START_POS_VALVES_STATES:self.END_POS_ALL_VALVES])) self.valve_states_all = vsa[0] - vst = struct.unpack('H', bytearray(message['message'][self.START_POS_VALVES_STATES:self.END_POS_VALVES_STATES])) + vst = struct.unpack(DataTypes.U16.unpack_attrib(), bytearray(message['message'][self.START_POS_VALVES_STATES:self.END_POS_VALVES_STATES])) # Extract each valve state from U16 valves states using bit-masking self.d14_valv["state"] = self._binary_to_valve_state(vst[0] & 1) self.d52_valv["state"] = self._binary_to_valve_state(vst[0] & 2) @@ -247,7 +252,7 @@ self.d81_valv["state"] = self._binary_to_valve_state(vst[0] & 16384) self.d85_valv["state"] = self._binary_to_valve_state(vst[0] & 32768) - bcv = struct.unpack('B', bytearray(message['message'][self.START_POS_BCV_VALVES_STATES:self.END_POS_BCV_VALVES_STATES])) + bcv = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray(message['message'][self.START_POS_BCV_VALVES_STATES:self.END_POS_BCV_VALVES_STATES])) self.d23_valv["state"] = self._binary_to_valve_state(bcv[0] & 1) self.d19_valv["state"] = self._binary_to_valve_state(bcv[0] & 2) self.d25_valv["state"] = self._binary_to_valve_state(bcv[0] & 4) @@ -257,7 +262,7 @@ self.d26_valv["state"] = self._binary_to_valve_state(bcv[0] & 64) self.d22_valv["state"] = self._binary_to_valve_state(bcv[0] & 128) - spv = struct.unpack('B', bytearray(message['message'][self.START_POS_SPARE_VALVES_STATES:self.END_POS_SPARE_VALVES_STATES])) + spv = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray(message['message'][self.START_POS_SPARE_VALVES_STATES:self.END_POS_SPARE_VALVES_STATES])) self.d88_d79_valv["state"] = self._binary_to_valve_state(spv[0] & 1) self.d83_valv["state"] = self._binary_to_valve_state(spv[0] & 2) self.d91_valv["state"] = self._binary_to_valve_state(spv[0] & 4) @@ -275,7 +280,7 @@ start = self.END_POS_SPARE_VALVES_STATES end = start + 1 for valve_id in self.valves_sensed_states: - valve_state_number = struct.unpack('B', bytearray(message['message'][start:end]))[0] + valve_state_number = struct.unpack(DataTypes.U08.unpack_attrib(), bytearray(message['message'][start:end]))[0] self.valves_sensed_states[valve_id] = valve_state_number start = end end += 1