Index: leahi_dialin/dd/modules/temperature_sensors.py =================================================================== diff -u -re64aa889e5068ea77967567a94e43e4058c84f8b -r4c41400037a9da1afe303601bd960b30de3d79da --- leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision e64aa889e5068ea77967567a94e43e4058c84f8b) +++ leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 4c41400037a9da1afe303601bd960b30de3d79da) @@ -19,32 +19,13 @@ from .constants import NO_RESET, RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions +from leahi_dialin.common.dd_defs import COND_SENSOR_INDEX_OFFSET, DDTemperaturesNames from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish, DialinEnum from leahi_dialin.utils.checks import check_broadcast_interval_override_ms from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray -COND_SENSOR_INDEX_OFFSET = 5 -@unique -class DDTemperaturesNames(DialinEnum): - D1_TEMP = 0 # Heat exchanger Inlet temperature sensor - X6_TEMP = 1 # Heat exchanger Outlet temperature sensor - D4_TEMP = 2 # Hydraulics primary heater temperature sensor - D50_TEMP = 3 # Trimmer heater temperature sensor - BRD_TEMP = 4 # Barometric temperature sensor - BARO_TEMP = 5 # DD board temperature sensor ( thermistor ) - D17_TEMP = 6 # D16 temperature value - D27_TEMP = 7 # D28 temperature value - D29_TEMP = 8 # D30 temperature value - D44_TEMP = 9 # D44 temperature value - D75_TEMP = 10 # D75 temperature value - D4_AVG_TEMP = 11 # D4 Filtered value - D50_AVG_TEMP = 12 # D50 Filtered value - D28_AVG_TEMP = 13 # D28 Filtered value - D30_AVG_TEMP = 14 # D30 Filtered value - - class DDTemperatureSensors(AbstractSubSystem): @@ -57,29 +38,35 @@ self.logger = logger # Dictionary of the temperature sensors self.dd_temperatures_timestamp = 0.0 - self.dd_temperatures = {DDTemperaturesNames.D1_TEMP.name: 0.0, - DDTemperaturesNames.X6_TEMP.name: 0.0, - DDTemperaturesNames.D4_TEMP.name: 0.0, - DDTemperaturesNames.D50_TEMP.name: 0.0, - DDTemperaturesNames.BARO_TEMP.name: 0.0, - DDTemperaturesNames.BRD_TEMP.name: 0.0, - DDTemperaturesNames.D17_TEMP.name: 0.0, - DDTemperaturesNames.D27_TEMP.name: 0.0, - DDTemperaturesNames.D29_TEMP.name: 0.0, - DDTemperaturesNames.D44_TEMP.name: 0.0, - DDTemperaturesNames.D75_TEMP.name: 0.0, - DDTemperaturesNames.D4_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D50_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D28_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D30_AVG_TEMP.name: 0.0} + self.dd_temperatures = { + DDTemperaturesNames.D1_TEMP.name: 0.0, + DDTemperaturesNames.D78_TEMP.name: 0.0, + DDTemperaturesNames.D4_TEMP.name: 0.0, + DDTemperaturesNames.D50_TEMP.name: 0.0, + DDTemperaturesNames.BARO_TEMP.name: 0.0, + DDTemperaturesNames.BRD_TEMP.name: 0.0, + DDTemperaturesNames.D16_TEMP.name: 0.0, + DDTemperaturesNames.D28_TEMP.name: 0.0, + DDTemperaturesNames.D30_TEMP.name: 0.0, + DDTemperaturesNames.D44_TEMP.name: 0.0, + DDTemperaturesNames.D75_TEMP.name: 0.0, + DDTemperaturesNames.D4_AVG_TEMP.name: 0.0, + DDTemperaturesNames.D50_AVG_TEMP.name: 0.0, + DDTemperaturesNames.D28_AVG_TEMP.name: 0.0, + DDTemperaturesNames.D30_AVG_TEMP.name: 0.0, + DDTemperaturesNames.D66_TEMP.name: 0.0, + DDTemperaturesNames.D51_TEMP.name: 0.0, + DDTemperaturesNames.D18_TEMP.name: 0.0, + DDTemperaturesNames.D41_TEMP.name: 0.0 + } if self.can_interface is not None: channel_id = DenaliChannels.dd_sync_broadcast_ch_id - msg_id = MsgIds.MSG_ID_DD_TEMPERATURE_DATA.value - self.can_interface.register_receiving_publication_function(channel_id, msg_id, + self.msg_id_dd_temperature_data = MsgIds.MSG_ID_DD_TEMPERATURE_DATA.value + self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_temperature_data, self._handler_temperature_sensors_sync) - @publish(["dd_temperatures_timestamp", "dd_temperatures"]) + @publish(["msg_id_dd_temperature_data", "dd_temperatures", "dd_temperatures_timestamp"]) def _handler_temperature_sensors_sync(self, message,timestamp=0.0): """ Handles published DD temperature sensors message @@ -90,7 +77,7 @@ self.dd_temperatures[DDTemperaturesNames.D1_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.dd_temperatures[DDTemperaturesNames.X6_TEMP.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.D78_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] self.dd_temperatures[DDTemperaturesNames.D4_TEMP.name] = struct.unpack('f', bytearray( @@ -105,13 +92,13 @@ self.dd_temperatures[DDTemperaturesNames.BARO_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.dd_temperatures[DDTemperaturesNames.D17_TEMP.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.D16_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.dd_temperatures[DDTemperaturesNames.D27_TEMP.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.D28_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.dd_temperatures[DDTemperaturesNames.D29_TEMP.name] = struct.unpack('f', bytearray( + self.dd_temperatures[DDTemperaturesNames.D30_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] self.dd_temperatures[DDTemperaturesNames.D44_TEMP.name] = struct.unpack('f', bytearray( @@ -132,6 +119,18 @@ self.dd_temperatures[DDTemperaturesNames.D30_AVG_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15]))[0] + self.dd_temperatures[DDTemperaturesNames.D66_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16]))[0] + + self.dd_temperatures[DDTemperaturesNames.D51_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17]))[0] + + self.dd_temperatures[DDTemperaturesNames.D18_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18]))[0] + + self.dd_temperatures[DDTemperaturesNames.D41_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_19:MsgFieldPositions.END_POS_FIELD_19]))[0] + self.dd_temperatures_timestamp = timestamp def cmd_temperatures_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: @@ -185,7 +184,7 @@ rst = integer_to_bytearray(reset) value = float_to_bytearray(sensor_value) - if DDTemperaturesNames.D17_TEMP.value <= sensor_index <= DDTemperaturesNames.D75_TEMP.value: + if DDTemperaturesNames.D16_TEMP.value <= sensor_index <= DDTemperaturesNames.D75_TEMP.value: index = integer_to_bytearray((sensor_index - COND_SENSOR_INDEX_OFFSET)) payload = rst + value + index message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dd_ch_id,