Index: leahi_dialin/dd/modules/levels.py =================================================================== diff -u -rec0de611fa8ec6832762256502a55f1915d7b57c -r15c9d6382186511bb445ee353d926111755a7051 --- leahi_dialin/dd/modules/levels.py (.../levels.py) (revision ec0de611fa8ec6832762256502a55f1915d7b57c) +++ leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 15c9d6382186511bb445ee353d926111755a7051) @@ -18,8 +18,7 @@ from logging import Logger 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 import dd_enum_repository 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,16 +45,16 @@ self.msg_id_dd_level_data = MsgIds.MSG_ID_DD_LEVEL_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_dd_level_data, self._handler_levels_sync) + self.dd_levels_timestamp = 0 #: The timestamp of the latest message + + #: The Level Sensors data in dictionary format self.dd_level_sensors = { - dd_enum_repository.DDLevelSensorNames.D6_LEVEL.name: 0, - dd_enum_repository.DDLevelSensorNames.D63_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D46_LEVEL.name: 0, - dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name: 0 + dd_enum_repository.DDLevelSensorNames.D63_LEVEL.name: 0, + dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name: 0, + dd_enum_repository.DDLevelSensorNames.D6_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 + self.dd_bicarb_level = 0 #: The Bicarb level @publish(["msg_id_dd_level_data", "dd_level_sensors", "dd_bicarb_level", "dd_levels_timestamp"]) @@ -67,16 +66,16 @@ @returns none """ sensor_list =[] - sensor_list.append((dd_enum_repository.DDLevelSensorNames.D6_LEVEL, 'i')) + sensor_list.append((dd_enum_repository.DDLevelSensorNames.D46_LEVEL, 'i')) sensor_list.append((dd_enum_repository.DDLevelSensorNames.D63_LEVEL, 'i')) sensor_list.append((dd_enum_repository.DDLevelSensorNames.D98_LEVEL, 'i')) - sensor_list.append((dd_enum_repository.DDLevelSensorNames.D46_LEVEL, 'i')) + sensor_list.append((dd_enum_repository.DDLevelSensorNames.D6_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: + if i == 5: 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] @@ -131,3 +130,29 @@ override_text = str(status), logger = self.logger, can_interface = self.can_interface) + + def cmd_floater_level_status_override(self, level_sensor: int, status: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends level status override command. + Must be logged into DD. + + @param level_sensor: integer - level sensor id to override + @param status: integer - the status value to override + @param reset: (int) 1 to reset a previous override, 0 to override + @returns 1 if successful, zero otherwise + """ + reset_value = integer_to_bytearray(reset) + lvl_sen = integer_to_bytearray(level_sensor) + sts = integer_to_bytearray(status) + print("sts", sts) + payload = reset_value + sts + lvl_sen + + return cmd_generic_override( + payload = payload, + reset = reset, + channel_id = DenaliChannels.dialin_to_fp_ch_id, + msg_id = MsgIds.MSG_ID_DD_FLOATER_LEVEL_OVERRIDE_REQUEST, + entity_name = f'DD Floater Levels status', + override_text = f'{str(status)}', + logger = self.logger, + can_interface = self.can_interface)