Index: leahi_dialin/dd/modules/temperature_sensors.py =================================================================== diff -u -r5f783280400baab74941d3fd4d3e3d5a97bd06ee -rc5bfcf84ed942ca5841bf9de155aa0f495b4d28d --- leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision 5f783280400baab74941d3fd4d3e3d5a97bd06ee) +++ leahi_dialin/dd/modules/temperature_sensors.py (.../temperature_sensors.py) (revision c5bfcf84ed942ca5841bf9de155aa0f495b4d28d) @@ -18,7 +18,8 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import DDTemperaturesNames +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 DenaliChannels @@ -37,29 +38,30 @@ # Dictionary of the temperature sensors self.dd_temperatures_timestamp = 0.0 self.dd_temperatures = { - DDTemperaturesNames.D1_TEMP.name: 0.0, - DDTemperaturesNames.D78_TEMP.name: 0.0, - DDTemperaturesNames.D4_TEMP.name: 0.0, - DDTemperaturesNames.D50_TEMP.name: 0.0, - DDTemperaturesNames.D99_TEMP.name: 0.0, - DDTemperaturesNames.BRD_TEMP.name: 0.0, - DDTemperaturesNames.D16_TEMP.name: 0.0, - DDTemperaturesNames.D28_TEMP.name: 0.0, - DDTemperaturesNames.D30_TEMP.name: 0.0, - DDTemperaturesNames.D44_TEMP.name: 0.0, - DDTemperaturesNames.D75_TEMP.name: 0.0, - DDTemperaturesNames.D4_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D50_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D99_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D28_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D30_AVG_TEMP.name: 0.0, - DDTemperaturesNames.D66_TEMP.name: 0.0, - DDTemperaturesNames.D51_TEMP.name: 0.0, - DDTemperaturesNames.D18_TEMP.name: 0.0, - DDTemperaturesNames.D41_TEMP.name: 0.0, - DDTemperaturesNames.D87_TEMP.name: 0.0 + dd_enum_repository.DDTemperatureSensorNames.D1_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D78_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D4_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D50_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.BRD_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D16_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D28_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D30_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D44_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D75_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D4_AVG_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D50_AVG_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D28_AVG_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D30_AVG_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D66_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D51_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D18_TEMP.name: 0.0, + dd_enum_repository.DDTemperatureSensorNames.D41_TEMP.name: 0.0 } + if GlobalVariables().HW_BETA_1_9: + self.dd_temperatures[dd_enum_repository.DDTemperatureSensorNames.D99_TEMP.name] = 0.0 + self.dd_temperatures[dd_enum_repository.DDTemperatureSensorNames.D99_AVG_TEMP.name] = 0.0 + self.dd_temperatures[dd_enum_repository.DDTemperatureSensorNames.D87_TEMP.name] = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.dd_sync_broadcast_ch_id @@ -76,73 +78,46 @@ @param message: published DD temperature sensors data message @returns none """ - self.dd_temperatures[DDTemperaturesNames.D1_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + sensor_list =[] + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D1_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D78_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D4_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D50_TEMP, 'f')) + if GlobalVariables().HW_BETA_1_9: + if dd_enum_repository.DDTemperatureSensorNames.D99_TEMP.name not in self.dd_temperatures: + self.dd_temperatures[dd_enum_repository.DDTemperatureSensorNames.D99_TEMP.name] = 0.0 + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D99_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.BRD_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D16_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D28_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D30_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D44_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D75_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D4_AVG_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D50_AVG_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D28_AVG_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D30_AVG_TEMP, 'f')) + if GlobalVariables().HW_BETA_1_9: + if dd_enum_repository.DDTemperatureSensorNames.D99_AVG_TEMP.name not in self.dd_temperatures: + self.dd_temperatures[dd_enum_repository.DDTemperatureSensorNames.D99_AVG_TEMP.name] = 0.0 + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D99_AVG_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D9_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D66_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D51_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D18_TEMP, 'f')) + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D41_TEMP, 'f')) + if GlobalVariables().HW_BETA_1_9: + if dd_enum_repository.DDTemperatureSensorNames.D87_TEMP.name not in self.dd_temperatures: + self.dd_temperatures[dd_enum_repository.DDTemperatureSensorNames.D87_TEMP.name] = 0.0 + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D87_TEMP, 'f')) - self.dd_temperatures[DDTemperaturesNames.D78_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + i = 1 + for sensor in sensor_list: + start_pos = eval(f'MsgFieldPositions.START_POS_FIELD_{i}') + end_pos = eval(f'MsgFieldPositions.END_POS_FIELD_{i}') + self.dd_temperatures[sensor[0].name] = struct.unpack(sensor[1],bytearray(message['message'][start_pos:end_pos]))[0] + i += 1 - self.dd_temperatures[DDTemperaturesNames.D4_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - - self.dd_temperatures[DDTemperaturesNames.D50_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - - self.dd_temperatures[DDTemperaturesNames.D99_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - - self.dd_temperatures[DDTemperaturesNames.BRD_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - - self.dd_temperatures[DDTemperaturesNames.D16_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - - self.dd_temperatures[DDTemperaturesNames.D28_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - - self.dd_temperatures[DDTemperaturesNames.D30_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] - - self.dd_temperatures[DDTemperaturesNames.D44_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10]))[0] - - self.dd_temperatures[DDTemperaturesNames.D75_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11]))[0] - - self.dd_temperatures[DDTemperaturesNames.D4_AVG_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12]))[0] - - self.dd_temperatures[DDTemperaturesNames.D50_AVG_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13]))[0] - - self.dd_temperatures[DDTemperaturesNames.D99_AVG_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14]))[0] - - self.dd_temperatures[DDTemperaturesNames.D28_AVG_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15]))[0] - - self.dd_temperatures[DDTemperaturesNames.D30_AVG_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16]))[0] - - self.dd_temperatures[DDTemperaturesNames.D9_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17]))[0] - - self.dd_temperatures[DDTemperaturesNames.D66_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18]))[0] - - self.dd_temperatures[DDTemperaturesNames.D51_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_19:MsgFieldPositions.END_POS_FIELD_19]))[0] - - self.dd_temperatures[DDTemperaturesNames.D18_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_20:MsgFieldPositions.END_POS_FIELD_20]))[0] - - self.dd_temperatures[DDTemperaturesNames.D41_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_21:MsgFieldPositions.END_POS_FIELD_21]))[0] - - self.dd_temperatures[DDTemperaturesNames.D87_TEMP.name] = struct.unpack('f', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_22:MsgFieldPositions.END_POS_FIELD_22]))[0] - - self.dd_temperatures_timestamp = timestamp @@ -180,13 +155,13 @@ @returns 1 if successful, zero otherwise """ # DD Conductivity Sensors' Temperature Reading Override - if DDTemperaturesNames.FIRST_CONDUCTIVITY_SENSOR.value <= sensor_index <= DDTemperaturesNames.LAST_CONDUCTIVITY_SENSOR.value: - modified_index= sensor_index - DDTemperaturesNames.FIRST_CONDUCTIVITY_SENSOR.value + if dd_enum_repository.DDTemperatureSensorNames.FIRST_CONDUCTIVITY_SENSOR.value <= sensor_index <= dd_enum_repository.DDTemperatureSensorNames.LAST_CONDUCTIVITY_SENSOR.value: + modified_index= sensor_index - dd_enum_repository.DDTemperatureSensorNames.FIRST_CONDUCTIVITY_SENSOR.value message_id = MsgIds.MSG_ID_DD_CONDUCTIVITY_SENSOR_TEMPERATURE_OVERRIDE_REQUEST # DD Pressure Sensors' Temperature Reading Override - elif DDTemperaturesNames.FIRST_PRESSURE_SENSOR.value <= sensor_index <= DDTemperaturesNames.LAST_PRESSURE_SENSOR.value: - modified_index= sensor_index - DDTemperaturesNames.FIRST_PRESSURE_SENSOR.value + elif dd_enum_repository.DDTemperatureSensorNames.FIRST_PRESSURE_SENSOR.value <= sensor_index <= dd_enum_repository.DDTemperatureSensorNames.LAST_PRESSURE_SENSOR.value: + modified_index= sensor_index - dd_enum_repository.DDTemperatureSensorNames.FIRST_PRESSURE_SENSOR.value message_id = MsgIds.MSG_ID_DD_PRESSURE_SENSOR_TEMPERATURE_OVERRIDE_REQUEST # DD Temperature Sensors' Temperature Reading Override @@ -199,7 +174,7 @@ value = float_to_bytearray(sensor_value) payload = rst + value + index - sensor_name = DDTemperaturesNames(sensor_index).name.split('_')[0] + sensor_name = dd_enum_repository.DDTemperatureSensorNames(sensor_index).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -225,7 +200,7 @@ sensor_byte_array = integer_to_bytearray(sensor) payload = reset_byte_array + read_byte_array + sensor_byte_array - sensor_name = DDTemperaturesNames(sensor).name.split('_')[0] + sensor_name = dd_enum_repository.DDTemperatureSensorNames(sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -289,17 +264,17 @@ Constraints: Must be logged into DD. - @param sensor: unsigned int - sensor ID, use the index of DDTemperaturesNames + @param sensor: unsigned int - sensor ID, use the index of dd_enum_repository.DDTemperatureSensorNames @param temperature: float - temperature to override the sensor with @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise """ rst = integer_to_bytearray(reset) tmp = float_to_bytearray(temperature) - idx = integer_to_bytearray(sensor - DDTemperaturesNames.FIRST_PRESSURE_SENSOR.value) + idx = integer_to_bytearray(sensor - dd_enum_repository.DDTemperatureSensorNames.FIRST_PRESSURE_SENSOR.value) payload = rst + tmp + idx - sensor_name = DDTemperaturesNames(sensor).name.split('_')[0] + sensor_name = dd_enum_repository.DDTemperatureSensorNames(sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset,