Index: dialin/dg/reservoirs.py =================================================================== diff -u -r812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3 -r5120ddfc3108ba5b8280adf73c4523c11feb935b --- dialin/dg/reservoirs.py (.../reservoirs.py) (revision 812bbf1e5b3b2f1c4f5cfbef1264787e18afb5c3) +++ dialin/dg/reservoirs.py (.../reservoirs.py) (revision 5120ddfc3108ba5b8280adf73c4523c11feb935b) @@ -14,11 +14,13 @@ # ############################################################################ import struct +from logging import Logger + from ..protocols.CAN import (DenaliMessage, DenaliChannels) from ..utils.base import _AbstractSubSystem, _publish from ..common.msg_defs import MsgIds, MsgFieldPositions -from logging import Logger +from ..utils.conversions import integer_to_bytearray class DGReservoirs(_AbstractSubSystem): @@ -75,6 +77,28 @@ """ return self.drain_to_vol_ml + def cmd_switch_reservoirs(self, reservoir: int): + """ + Sends a command to the DG to switch reservoirs + @param reservoir: (int) the new reservoir number + @return: True if command sent, False if invalid reservoir provided + """ + + if reservoir not in [0, 1]: + return False + + payload = integer_to_bytearray(reservoir) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=MsgIds.MSG_ID_DG_SWITCH_RESERVOIR_CMD.value, + payload=payload) + + self.logger.debug("Sending command to switch DG reservoir to {0}".format(reservoir)) + + self.can_interface.send(message, 0) + + return True + @_publish([ "active_reservoir", "fill_to_vol_ml",