Index: leahi_dialin/dd/modules/levels.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -18,7 +18,8 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import DDLevelSensorEnum +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 @@ -46,11 +47,12 @@ self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_level_data, self._handler_levels_sync) self.dd_level_sensors = { - DDLevelSensorEnum.D6_LEVEL.name: 0, - DDLevelSensorEnum.D63_LEVEL.name: 0, - DDLevelSensorEnum.D98_LEVEL.name: 0, - DDLevelSensorEnum.D46_LEVEL.name: 0 + dd_enum_repository.DDLevelSensorNames.D6_LEVEL.name: 0, + dd_enum_repository.DDLevelSensorNames.D63_LEVEL.name: 0, + dd_enum_repository.DDLevelSensorNames.D46_LEVEL.name: 0 } + if GlobalVariables().HW_BETA_1_9: + self.dd_level_sensors[dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name] = 0.0 self.dd_bicarb_level = 0 self.dd_levels_timestamp = 0 @@ -63,17 +65,25 @@ @param message: published levels data message @returns none """ - self.dd_level_sensors[DDLevelSensorEnum.D6_LEVEL.name] = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.dd_level_sensors[DDLevelSensorEnum.D63_LEVEL.name] = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.dd_level_sensors[DDLevelSensorEnum.D98_LEVEL.name] = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.dd_bicarb_level = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.dd_level_sensors[DDLevelSensorEnum.D46_LEVEL.name] = struct.unpack('i', bytearray( - message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] + sensor_list =[] + sensor_list.append((dd_enum_repository.DDLevelSensorNames.D6_LEVEL, 'i')) + sensor_list.append((dd_enum_repository.DDLevelSensorNames.D63_LEVEL, 'i')) + if GlobalVariables().HW_BETA_1_9: + if dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name not in self.dd_level_sensors: + self.dd_level_sensors[dd_enum_repository.DDTemperatureSensorNames.D98_LEVEL.name] = 0.0 + sensor_list.append((dd_enum_repository.DDTemperatureSensorNames.D98_LEVEL, 'i')) + sensor_list.append((dd_enum_repository.DDLevelSensorNames.D46_LEVEL, 'i')) + 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}') + if i == 4: + self.dd_bicarb_level = struct.unpack('i', bytearray(message['message'][start_pos:end_pos]))[0] + else: + self.dd_level_sensors[sensor[0].name] = struct.unpack(sensor[1], bytearray(message['message'][start_pos:end_pos]))[0] + i += 1 + self.dd_levels_timestamp = timestamp @@ -113,7 +123,7 @@ sts = integer_to_bytearray(status) payload = reset_value + sts + level_sensor - sensor_name = DDLevelSensorEnum(level_sensor).name.split('_')[0] + sensor_name = dd_enum_repository.DDLevelSensorNames(level_sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset,