Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -r028086f4e594e25b8e693242fdce1cc41c8b0312 -rb0527bdf20a053b81f4c3771b2b31bb066c9a5a7 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 028086f4e594e25b8e693242fdce1cc41c8b0312) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision b0527bdf20a053b81f4c3771b2b31bb066c9a5a7) @@ -401,5 +401,39 @@ self.logger.debug("Timeout!!!!") return False + def cmd_td_safety_shutdown_override(self, active: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends an TD safety shutdown override command via CAN bus. + Constraints: + Must be logged into TD. + @param active: int - True to activate safety shutdown, False to deactivate + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + + rst = integer_to_bytearray(reset) + saf = integer_to_bytearray(active) + payload = rst + saf + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, + message_id=MsgIds.MSG_ID_TD_SAFETY_SHUTDOWN_OVERRIDE.value, + payload=payload) + + self.logger.debug("overriding TD safety shutdown") + + # Send message + received_message = self.can_interface.send(message) + + if received_message is not None: + if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: + self.logger.debug("Safety shutdown signal overridden") + else: + self.logger.debug("Safety shutdown signal override failed.") + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + +