Index: leahi_dialin/fp/modules/temperatures.py =================================================================== diff -u -r437c3e48967c68aec22c53a6c6212f135a9ff2af -r894abd4d8e62d20ba65ca78e443ffb5ea00c07ea --- leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision 437c3e48967c68aec22c53a6c6212f135a9ff2af) +++ leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision 894abd4d8e62d20ba65ca78e443ffb5ea00c07ea) @@ -17,8 +17,9 @@ from enum import unique from logging import Logger -from .constants import NO_RESET, RESET -from leahi_dialin.common.fp_defs import FPTemperaturesNames, BETA_CONDUCTIVITY_SENSOR_OFFSET, BETA_FLOW_SENSOR_OFFSET, BETA_IO_PRES_SENSOR_OFFSET, BETA_FP_PRES_SENSOR_OFFSET +from leahi_dialin.common.constants import NO_RESET +from leahi_dialin.common.global_vars import GlobalVariables +from leahi_dialin.common.fp_defs import fp_enum_repository, BETA_IOFP_COND_SENSOR_OFFSET, BETA_IOFP_PRES_SENSOR_OFFSET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish, DialinEnum @@ -43,17 +44,19 @@ self.fp_temperature_sensors_timestamp = 0 self.fp_temperatures = { - FPTemperaturesNames.M3_TEMP.name: 0.0, - FPTemperaturesNames.P10_TEMP.name: 0.0, - FPTemperaturesNames.P19_TEMP.name: 0.0, - FPTemperaturesNames.P8_TEMP.name: 0.0, - FPTemperaturesNames.P13_TEMP.name: 0.0, - FPTemperaturesNames.P17_TEMP.name: 0.0, - FPTemperaturesNames.P7_TEMP.name: 0.0, - FPTemperaturesNames.P16_TEMP.name: 0.0, - FPTemperaturesNames.P46_TEMP.name: 0.0 + fp_enum_repository.FPTemperaturesNames.M3_TEMP.name: 0.0, + fp_enum_repository.FPTemperaturesNames.P8_TEMP.name: 0.0, + fp_enum_repository.FPTemperaturesNames.P13_TEMP.name: 0.0, + fp_enum_repository.FPTemperaturesNames.P17_TEMP.name: 0.0, + fp_enum_repository.FPTemperaturesNames.P10_TEMP.name: 0.0, + fp_enum_repository.FPTemperaturesNames.P19_TEMP.name: 0.0, + fp_enum_repository.FPTemperaturesNames.P7_TEMP.name: 0.0, + fp_enum_repository.FPTemperaturesNames.P16_TEMP.name: 0.0, } + if GlobalVariables.NEXT_GEN_HW: + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P46_TEMP.name] = 0.0 + @publish(["msg_id_fp_temperature_data", "fp_temperatures", "fp_temperatures_timestamp"]) def _handler_temperature_sensors_sync(self, message,timestamp=0.0): """ @@ -62,32 +65,33 @@ @param message: published FP temperature sensors data message @returns none """ - self.fp_temperatures[FPTemperaturesNames.M3_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.M3_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.fp_temperatures[FPTemperaturesNames.P10_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P10_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.fp_temperatures[FPTemperaturesNames.P19_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P19_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.fp_temperatures[FPTemperaturesNames.P8_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P8_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.fp_temperatures[FPTemperaturesNames.P13_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P13_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.fp_temperatures[FPTemperaturesNames.P17_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P17_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.fp_temperatures[FPTemperaturesNames.P7_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P7_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.fp_temperatures[FPTemperaturesNames.P16_TEMP.name] = struct.unpack('f', bytearray( + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P16_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.fp_temperatures[FPTemperaturesNames.P46_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] + if GlobalVariables.NEXT_GEN_HW: + self.fp_temperatures[fp_enum_repository.FPTemperaturesNames.P46_TEMP.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] self.fp_temperature_sensors_timestamp = timestamp @@ -142,36 +146,32 @@ rst = integer_to_bytearray(reset) value = float_to_bytearray(sensor_value) - # FP Conductivity Sensors' Temperature Override - if FPTemperaturesNames.P10_TEMP.value <= sensor_index <= FPTemperaturesNames.P19_TEMP.value: - index = integer_to_bytearray(sensor_index + BETA_CONDUCTIVITY_SENSOR_OFFSET) - payload = rst + value + index - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_FP_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST.value, - payload=payload) + # FP Conductivity Sensors' Temperature Override + if fp_enum_repository.FPTemperaturesNames.FIRST_CONDUCTIVITY_SENSOR.value <= sensor_index <= fp_enum_repository.FPTemperaturesNames.LAST_CONDUCTIVITY_SENSOR.value: + modified_index = sensor_index - fp_enum_repository.FPTemperaturesNames.FIRST_CONDUCTIVITY_SENSOR.value + BETA_IOFP_COND_SENSOR_OFFSET + msg_id = MsgIds.MSG_ID_FP_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST + # FP Flow Sensors' Temperature Override - elif FPTemperaturesNames.P7_TEMP.value <= sensor_index < FPTemperaturesNames.NUM_OF_TEMPERATURE_SENSORS.value: - index = integer_to_bytearray(sensor_index - BETA_FLOW_SENSOR_OFFSET) - payload = rst + value + index - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_FP_FLOW_TEMP_OVERRIDE_REQUEST.value, - payload=payload) - # IO Pressure Sensors' Temperature Override - elif FPTemperaturesNames.M1_TEMP.value <= sensor_index <= FPTemperaturesNames.M3_TEMP.value: - index = integer_to_bytearray(sensor_index + BETA_IO_PRES_SENSOR_OFFSET) - payload = rst + value + index - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST.value, - payload=payload) + elif fp_enum_repository.FPTemperaturesNames.FIRST_FLOW_SENSOR.value <= sensor_index <= fp_enum_repository.FPTemperaturesNames.LAST_FLOW_SENSOR.value: + modified_index = sensor_index - fp_enum_repository.FPTemperaturesNames.FIRST_FLOW_SENSOR.value + msg_id = MsgIds.MSG_ID_FP_FLOW_TEMP_OVERRIDE_REQUEST + # FP Pressure Sensors' Temperature Override else: - index = integer_to_bytearray(sensor_index + BETA_FP_PRES_SENSOR_OFFSET) - payload = rst + value + index - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST.value, + modified_index = sensor_index - fp_enum_repository.FPTemperaturesNames.FIRST_PRESSURE_SENSOR.value + BETA_IOFP_PRES_SENSOR_OFFSET + msg_id = MsgIds.MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST + + index = integer_to_bytearray(modified_index) + rst = integer_to_bytearray(reset) + value = float_to_bytearray(sensor_value) + payload = rst + value + index + + sensor_name = fp_enum_repository.FPTemperaturesNames(sensor_index).name.split('_')[0] + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, + message_id=msg_id.value, payload=payload) - self.logger.debug("Setting sensor {} to {} C".format(list(self.fp_temperatures.keys())[sensor_index], sensor_value)) + self.logger.debug("Setting sensor {} to {} C".format(fp_enum_repository.FPTemperaturesNames[str(sensor_index)].name, sensor_value)) # Send message received_message = self.can_interface.send(message)