Index: leahi_dialin/dd/modules/valves.py =================================================================== diff -u -r7a827f82f5866f5780a0a679920b1e7b75280efd -ra86c438ad4724d63a8aef56f5ae4e9cecab1718c --- leahi_dialin/dd/modules/valves.py (.../valves.py) (revision 7a827f82f5866f5780a0a679920b1e7b75280efd) +++ leahi_dialin/dd/modules/valves.py (.../valves.py) (revision a86c438ad4724d63a8aef56f5ae4e9cecab1718c) @@ -366,6 +366,61 @@ self.logger.debug("Timeout!!!!") return False + def cmd_bc_valves_override(self, bcv1: bool, bcv2: bool, bcv3: bool, bcv4: bool, bcv5: bool, bcv6: bool, bcv7: bool, bcv8: bool) -> int: + """ + Constructs and sends the balancing chamber valve states override command. + Constraints: + Must be logged into DG. + Given valve ID must be one of the valve IDs listed below. + + @param bcv1: bool - valve state for BCV1 (true=open, false=closed) + @param bcv2: bool - valve state for BCV2 (true=open, false=closed) + @param bcv3: bool - valve state for BCV3 (true=open, false=closed) + @param bcv4: bool - valve state for BCV4 (true=open, false=closed) + @param bcv5: bool - valve state for BCV5 (true=open, false=closed) + @param bcv6: bool - valve state for BCV6 (true=open, false=closed) + @param bcv7: bool - valve state for BCV7 (true=open, false=closed) + @param bcv8: bool - valve state for BCV8 (true=open, false=closed) + @return: 1 if successful, zero otherwise + """ + + valve = 0 + if bcv1: + valve = valve | 0x1 + if bcv2: + valve = valve | 0x2 + if bcv3: + valve = valve | 0x4 + if bcv7: + valve = valve | 0x8 + if bcv5: + valve = valve | 0x10 + if bcv6: + valve = valve | 0x20 + if bcv4: + valve = valve | 0x40 + if bcv8: + valve = valve | 0x80 + + payload = integer_to_bytearray(valve) + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dd_ch_id, + message_id=MsgIds.MSG_ID_DD_BC_VALVE_STATES_OVERRIDE_REQUEST.value, + payload=payload) + + self.logger.debug("Override balancing chamber valve states") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + def cmd_valve_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the valve state override command.