Index: leahi_dialin/fp/modules/conductivity_sensors.py =================================================================== diff -u -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d -r66d171f4704fd77835314e6024e508587f001e8f --- leahi_dialin/fp/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) +++ leahi_dialin/fp/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 66d171f4704fd77835314e6024e508587f001e8f) @@ -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_COND_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 @@ -247,3 +247,64 @@ override_text = str(value), logger = self.logger, can_interface = self.can_interface) + + def cmd_conductivity_sensor_resistance_override(self, sensor_index: int, conductivity: float, reset: int = NO_RESET) -> int: + """ + Constructs and sends the conductivity resistance override command + Constraints: + Must be logged into FP. + Given sensor_index must be one of the sensors defined in ConductivitySensorsEnum + + Note: Override only works for Teensy conductivity sensor implementation. D79 is not installed with Teensy sensors. + + @param sensor_index: unsigned int - index of the sensor + @param conductivity: float - conductivity value to override sensor with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + reset_byte_array = integer_to_bytearray(reset) + cond_byte_array = float_to_bytearray(conductivity) + sensor_byte_array = integer_to_bytearray(sensor_index) + payload = reset_byte_array + cond_byte_array + sensor_byte_array + + sensor_name = fp_enum_repository.FPConductivitySensorNames(sensor_index).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_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST, + entity_name = f'FP {sensor_name} Conductivity Sensor resistance', + override_text = f'{str(conductivity)} ohms', + logger = self.logger, + can_interface = self.can_interface) + + def cmd_conductivity_sensor_filtered_readings_override(self, sensor_index: int, conductivity: float, reset: int = NO_RESET) -> int: + """ + Constructs and sends the conductivity value override command + Constraints: + Must be logged into FP. + Given sensor_index must be one of the sensors defined in FPConductivitySensorsEnum + + @param sensor_index: unsigned int - index of the sensor + @param conductivity: float - conductivity value to override sensor with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + # -1 is for D98 as its not a part of the conductivity sensors + modified_index = sensor_index + BETA_IOFP_COND_SENSOR_OFFSET - 1 + reset_byte_array = integer_to_bytearray(reset) + cond_byte_array = float_to_bytearray(conductivity) + sensor_byte_array = integer_to_bytearray(modified_index) + payload = reset_byte_array + cond_byte_array + sensor_byte_array + + sensor_name = fp_enum_repository.FPConductivitySensorNames(sensor_index).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_FILTERED_COND_SENSOR_READINGS_OVERRIDE_REQUEST, + entity_name = f'DD {sensor_name} Conductivity Sensor reading', + override_text = f'{str(conductivity)} microsiemens/cm', + logger = self.logger, + can_interface = self.can_interface) +