Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -r02d624e411573936da1445c7b1104096395c0996 -r66d171f4704fd77835314e6024e508587f001e8f --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 02d624e411573936da1445c7b1104096395c0996) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 66d171f4704fd77835314e6024e508587f001e8f) @@ -282,8 +282,8 @@ MSG_ID_DD_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xA018 MSG_ID_DD_TEMPERATURE_SENSOR_MEASURED_TEMPERATURE_OVERRIDE_REQUEST = 0xA019 MSG_ID_DD_TEMPERATURE_SENSOR_READ_COUNTER_OVERRIDE_REQUEST = 0xA01A - MSG_ID_DD_TEMPERATURE_SENSOR_BARO_READ_COUNTER_OVERRIDE_REQUEST = 0xA01B - MSG_ID_DD_TEMPERATURE_SENSOR_BARO_CRC_OVERRIDE_REQUEST = 0xA01C + MSG_ID_DD_TEMPERATURE_SENSOR_FILTERED_TEMP_OVERRIDE_REQUEST = 0xA01B + MSG_ID_DD_AVAILABLE_3 = 0xA01C MSG_ID_DD_DIALYSATE_PUMPS_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xA01D MSG_ID_DD_DIALYSATE_PUMPS_TARGET_SPEED_OVERRIDE_REQUEST = 0xA01E MSG_ID_DD_DIALYSATE_PUMPS_MEASURED_SPEED_OVERRIDE_REQUEST = 0xA01F @@ -363,8 +363,8 @@ MSG_ID_FP_RO_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB009 MSG_ID_FP_PRESSURE_OVERRIDE_REQUEST = 0xB00A MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST = 0xB00B - MSG_ID_FP_PRESSURE_READ_COUNT_OVERRIDE_REQUEST = 0xB00C - MSG_ID_FP_PRESSURE_ERROR_COUNT_OVERRIDE_REQUEST = 0xB00D + MSG_ID_FP_PRESSURE_SENSOR_FILTER_READINGS_OVERRIDE_REQUEST = 0xB00C + MSG_ID_FP_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST = 0xB00D MSG_ID_FP_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00E MSG_ID_FP_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00F MSG_ID_FP_LEVEL_OVERRIDE_REQUEST = 0xB010 Index: leahi_dialin/dd/modules/temperature_sensors.py =================================================================== diff -u -r66ca4d7e28f9a008813bc7bca92dbd98616a840b -r66d171f4704fd77835314e6024e508587f001e8f --- leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 66ca4d7e28f9a008813bc7bca92dbd98616a840b) +++ leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 66d171f4704fd77835314e6024e508587f001e8f) @@ -253,8 +253,7 @@ logger = self.logger, can_interface = self.can_interface) - - def cmd_pressure_filtered_temperature_override(self, sensor: int, temperature: float, reset: int = NO_RESET) -> int: + def cmd_temperatures_filtered_value_override(self, sensor: int, temperature: float, reset: int = NO_RESET) -> int: """ Constructs and sends the filtered temperature override command. Constraints: @@ -265,17 +264,40 @@ @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise """ + + # DD Conductivity Sensors' Temperature Reading Override + if dd_enum_repository.DDTemperatureSensorNames.FIRST_CONDUCTIVITY_SENSOR.value <= sensor <= dd_enum_repository.DDTemperatureSensorNames.LAST_CONDUCTIVITY_SENSOR.value: + modified_index= sensor - dd_enum_repository.DDTemperatureSensorNames.FIRST_CONDUCTIVITY_SENSOR.value + message_id = MsgIds.MSG_ID_DD_FILTERED_COND_SENSOR_TEMPERATURE_OVERRIDE_REQUEST + + # DD Conductivity Sensors' Average Temperature Reading Override + elif dd_enum_repository.DDTemperatureSensorNames.FIRST_AVERAGE_SENSOR.value <= sensor <= dd_enum_repository.DDTemperatureSensorNames.LAST_AVERAGE_SENSOR.value: + modified_index= sensor - dd_enum_repository.DDTemperatureSensorNames.FIRST_AVERAGE_SENSOR.value + message_id = 'Unknown' + self.logger.info('No Msg ID is present for Conductivity sensor Average override! Skipping...') + return False + + # DD Pressure Sensors' Temperature Reading Override + elif dd_enum_repository.DDTemperatureSensorNames.FIRST_PRESSURE_SENSOR.value <= sensor <= dd_enum_repository.DDTemperatureSensorNames.LAST_PRESSURE_SENSOR.value: + modified_index= sensor - dd_enum_repository.DDTemperatureSensorNames.FIRST_PRESSURE_SENSOR.value + message_id = MsgIds.MSG_ID_DD_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST + + # DD Temperature Sensors' Temperature Reading Override + else: + modified_index= sensor + message_id = MsgIds.MSG_ID_DD_TEMPERATURE_SENSOR_FILTERED_TEMP_OVERRIDE_REQUEST + rst = integer_to_bytearray(reset) tmp = float_to_bytearray(temperature) - idx = integer_to_bytearray(sensor - dd_enum_repository.DDTemperatureSensorNames.FIRST_PRESSURE_SENSOR.value) + idx = integer_to_bytearray(modified_index) payload = rst + tmp + idx sensor_name = dd_enum_repository.DDTemperatureSensorNames(sensor).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_PRESSURE_SENSOR_FILTER_TEMPERATURE_OVERRIDE_REQUEST, + msg_id = message_id, entity_name = f'DD {sensor_name} Temperature Sensor filtered temperature', override_text = f'{str(temperature)} Celsius', logger = self.logger, Index: leahi_dialin/fp/modules/conductivity_sensors.py =================================================================== diff -u -r2ceefb8e83a86f153df1f8a8faf0aa37cfc0c088 -r66d171f4704fd77835314e6024e508587f001e8f --- leahi_dialin/fp/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 2ceefb8e83a86f153df1f8a8faf0aa37cfc0c088) +++ 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 @@ -283,16 +283,18 @@ 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 ConductivitySensorsEnum + 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(sensor_index) + 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] Index: leahi_dialin/fp/modules/pressure_sensors.py =================================================================== diff -u -r9a97e1f14f267d899b1604a9584284d6074f9224 -r66d171f4704fd77835314e6024e508587f001e8f --- leahi_dialin/fp/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 9a97e1f14f267d899b1604a9584284d6074f9224) +++ leahi_dialin/fp/modules/pressure_sensors.py (.../pressure_sensors.py) (revision 66d171f4704fd77835314e6024e508587f001e8f) @@ -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,31 @@ 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 + """ + rst = integer_to_bytearray(reset) + sen = integer_to_bytearray(sensor) + 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) + 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