Index: leahi_dialin/fp/modules/pressure_sensors.py =================================================================== diff -u -r9a97e1f14f267d899b1604a9584284d6074f9224 -r9ea3edf76e85df799ba18da8b0515709c5272294 --- leahi_dialin/fp/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 9a97e1f14f267d899b1604a9584284d6074f9224) +++ leahi_dialin/fp/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 9ea3edf76e85df799ba18da8b0515709c5272294) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import fp_enum_repository +from leahi_dialin.common.fp_defs import fp_enum_repository, BETA_IOFP_PRES_SENSOR_OFFSET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -106,7 +106,7 @@ Constraints: Must be logged into FP. - @param sensor: int - switch between filtered override and raw override + @param sensor: int - pressure sensor index from FPPressureSensorNames @param pressure: float - measured pressure (in PSI) to override with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise @@ -126,3 +126,32 @@ override_text = f'{str(pressure)} psi', logger = self.logger, can_interface = self.can_interface) + + def cmd_pressure_sensor_filter_override(self, sensor: int, pressure: float, reset: int = NO_RESET) -> int: + """ + Constructs and sends a filtered FP pressure override command message. + Constraints: + Must be logged into FP. + + @param sensor: int - pressure sensor index from FPPressureSensorNames + @param pressure: float - measured pressure (in PSI) to override with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + modified_index = sensor + BETA_IOFP_PRES_SENSOR_OFFSET + rst = integer_to_bytearray(reset) + sen = integer_to_bytearray(modified_index) + prs = float_to_bytearray(pressure) + payload = rst + prs + sen + + sensor_name = fp_enum_repository.FPPressureSensorNames(sensor).name.split('_')[0] + return cmd_generic_override( + payload = payload, + reset = reset, + channel_id = DenaliChannels.dialin_to_fp_ch_id, + msg_id = MsgIds.MSG_ID_FP_PRESSURE_SENSOR_FILTER_READINGS_OVERRIDE_REQUEST, + entity_name = f'TD {sensor_name} Pressure Sensor filtered pressure', + override_text = f'{str(pressure)} psi', + logger = self.logger, + can_interface = self.can_interface) +