Index: leahi_dialin/fp/modules/temperatures.py =================================================================== diff -u -r9a97e1f14f267d899b1604a9584284d6074f9224 -r66d171f4704fd77835314e6024e508587f001e8f --- leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision 9a97e1f14f267d899b1604a9584284d6074f9224) +++ leahi_dialin/fp/modules/temperatures.py (.../temperatures.py) (revision 66d171f4704fd77835314e6024e508587f001e8f) @@ -45,6 +45,7 @@ fp_enum_repository.FPTemperatureSensorNames.P8_TEMP.name: 0.0, fp_enum_repository.FPTemperatureSensorNames.P13_TEMP.name: 0.0, fp_enum_repository.FPTemperatureSensorNames.P17_TEMP.name: 0.0, + fp_enum_repository.FPTemperatureSensorNames.P46_TEMP.name: 0.0, fp_enum_repository.FPTemperatureSensorNames.P10_TEMP.name: 0.0, fp_enum_repository.FPTemperatureSensorNames.P19_TEMP.name: 0.0, fp_enum_repository.FPTemperatureSensorNames.P7_TEMP.name: 0.0, @@ -63,8 +64,18 @@ @param message: published FP temperature sensors data message @returns none """ - self.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.M3_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + sensor_list =[] + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.M3_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P10_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P19_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P8_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P13_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P17_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P7_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P16_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P46_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P7_INTERNAL_TEMP, 'f')) + sensor_list.append((fp_enum_repository.FPTemperatureSensorNames.P16_INTERNAL_TEMP, 'f')) self.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.P10_TEMP.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] @@ -162,3 +173,47 @@ override_text = str(sensor_value), logger = self.logger, can_interface = self.can_interface) + + def cmd_temperatures_filtered_value_override(self, sensor_index: int, sensor_value: float, reset: int = NO_RESET) -> int: + """ + Constructs and sends the filtered value override of a temperature sensor. + Constraints: + Must be logged into FP. + Given sensor_index must be one of the sensors listed below. + + @param sensor_index : (int) Index of the sensor + @param sensor_value: (float) Value of the sensor to override + @param reset: (int) whether to reset the override value. The default is NO_RESET + @returns 1 if successful, zero otherwise + """ + + # FP Conductivity Sensors' Temperature Override + if fp_enum_repository.FPTemperatureSensorNames.FIRST_CONDUCTIVITY_SENSOR.value <= sensor_index <= fp_enum_repository.FPTemperatureSensorNames.LAST_CONDUCTIVITY_SENSOR.value: + modified_index = sensor_index - fp_enum_repository.FPTemperatureSensorNames.FIRST_CONDUCTIVITY_SENSOR.value + BETA_IOFP_COND_SENSOR_OFFSET - 1 + msg_id = MsgIds.MSG_ID_FP_FILTERED_COND_SENSOR_TEMPERATURE_OVERRIDE_REQUEST + + # FP Flow Sensors' Temperature Override + elif fp_enum_repository.FPTemperatureSensorNames.FIRST_FLOW_SENSOR.value <= sensor_index <= fp_enum_repository.FPTemperatureSensorNames.LAST_FLOW_SENSOR.value: + modified_index = sensor_index - fp_enum_repository.FPTemperatureSensorNames.FIRST_FLOW_SENSOR.value + msg_id = MsgIds.MSG_ID_FP_FILTERED_FLOW_TEMP_OVERRIDE_REQUEST + + # FP Pressure Sensors' Temperature Override + else: + modified_index = sensor_index - fp_enum_repository.FPTemperatureSensorNames.FIRST_PRESSURE_SENSOR.value + BETA_IOFP_PRES_SENSOR_OFFSET + msg_id = MsgIds.MSG_ID_FP_PRESSURE_SENSOR_FILTER_TEMPERATURE_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.FPTemperatureSensorNames(sensor_index).name.split('_')[0] + return cmd_generic_override( + payload=payload, + reset=reset, + channel_id=DenaliChannels.dialin_to_fp_ch_id, + msg_id=msg_id, + entity_name=f'FP {sensor_name} Temperature Sensor filtered temperature', + override_text=str(sensor_value), + logger=self.logger, + can_interface=self.can_interface) \ No newline at end of file