Index: dialin/dg/load_cells.py =================================================================== diff -u -r3a70bfb451b74106348c064c34f19934aadd9119 -r2d39de88dc3354379a7a3af8d49ac6bdb57015e4 --- dialin/dg/load_cells.py (.../load_cells.py) (revision 3a70bfb451b74106348c064c34f19934aadd9119) +++ dialin/dg/load_cells.py (.../load_cells.py) (revision 2d39de88dc3354379a7a3af8d49ac6bdb57015e4) @@ -21,7 +21,7 @@ from ..protocols.CAN import DenaliMessage, DenaliChannels from ..utils.base import AbstractSubSystem, publish from ..utils.checks import check_broadcast_interval_override_ms -from ..utils.conversions import integer_to_bytearray, float_to_bytearray +from ..utils.conversions import integer_to_bytearray, float_to_bytearray, bytearray_to_float class DGLoadCells(AbstractSubSystem): @@ -37,6 +37,8 @@ LOAD_CELL_B1 = 2 LOAD_CELL_B2 = 3 + EMPTY_RESERVOIR_WEIGHT_GRAMS = 1600 + def __init__(self, can_interface, logger: Logger): """ @@ -88,7 +90,7 @@ self.load_cell_B1 = b1[0] self.load_cell_B2 = b2[0] - def cmd_load_cell_override(self, sensor: int, grams: float, reset: int = NO_RESET) -> int: + def cmd_load_cell_override(self, sensor: int, grams: float, add_reservoir_weight: bool = True, reset: int = NO_RESET) -> int: """ Constructs and sends the load cell override command Constraints: @@ -97,6 +99,7 @@ @param sensor: unsigned int - sensor ID @param grams: float - weight (in grams) to override sensor with + @param add_reservoir_weight: bool - Adds the empty reservoir weight, 1600g, @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise @@ -107,20 +110,24 @@ 3 = B2 \n """ + if add_reservoir_weight is not False: + grm = float_to_bytearray(grams + self.EMPTY_RESERVOIR_WEIGHT_GRAMS) + else: + grm = float_to_bytearray(grams) + rst = integer_to_bytearray(reset) - grm = float_to_bytearray(grams) idx = integer_to_bytearray(sensor) payload = rst + grm + idx message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, message_id=MsgIds.MSG_ID_LOAD_CELL_OVERRIDE.value, payload=payload) - - self.logger.debug("override load cell weight value for sensor " + str(sensor)) - # Send message received_message = self.can_interface.send(message) + self.logger.debug( + f"override load cell weight value for sensor {str(sensor)} to {bytearray_to_float(grm, 0)[0]} grams") + # If there is content... if received_message is not None: # response payload is OK or not OK