Index: leahi_dialin/dd/modules/levels.py =================================================================== diff -u -r20c821bd230fc7689a0275a2918981669ff5cc19 -r03cf6f1c459aed5f12550222c40c58fc41c51688 --- leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 20c821bd230fc7689a0275a2918981669ff5cc19) +++ leahi_dialin/dd/modules/levels.py (.../levels.py) (revision 03cf6f1c459aed5f12550222c40c58fc41c51688) @@ -49,10 +49,10 @@ #: 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.D63_LEVEL.name: 0, dd_enum_repository.DDLevelSensorNames.D98_LEVEL.name: 0 + dd_enum_repository.DDLevelSensorNames.D6_LEVEL.name: 0, } self.dd_bicarb_level = 0 #: The Bicarb level @@ -66,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] @@ -130,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)