Index: leahi_dialin/dd/modules/conductivity_sensors.py =================================================================== diff -u -r0a1f091c869a5a2f68f06390fc35192a0eb7edbc -r12d52245d0633f60867e469db81193d6cebec3b2 --- leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 0a1f091c869a5a2f68f06390fc35192a0eb7edbc) +++ leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 12d52245d0633f60867e469db81193d6cebec3b2) @@ -20,6 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common.global_vars import GlobalVariables 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 DenaliMessage, DenaliChannels @@ -215,3 +216,60 @@ 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 DD. + 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 = dd_enum_repository.DDConductivitySensorNames(sensor_index).name.split('_')[0] + return cmd_generic_override( + payload = payload, + reset = reset, + channel_id = DenaliChannels.dialin_to_dd_ch_id, + msg_id = MsgIds.MSG_ID_DD_CONDUCTIVITY_SENSOR_RESISTANCE_OVERRIDE_REQUEST, + entity_name = f'DD {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 DD. + Given sensor_index must be one of the sensors defined in ConductivitySensorsEnum + + @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 = dd_enum_repository.DDConductivitySensorNames(sensor_index).name.split('_')[0] + return cmd_generic_override( + payload = payload, + reset = reset, + channel_id = DenaliChannels.dialin_to_dd_ch_id, + msg_id = MsgIds.MSG_ID_DD_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)