Index: leahi_dialin/fp/filtration_purification.py =================================================================== diff -u -r028086f4e594e25b8e693242fdce1cc41c8b0312 -rb0527bdf20a053b81f4c3771b2b31bb066c9a5a7 --- leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision 028086f4e594e25b8e693242fdce1cc41c8b0312) +++ leahi_dialin/fp/filtration_purification.py (.../filtration_purification.py) (revision b0527bdf20a053b81f4c3771b2b31bb066c9a5a7) @@ -336,4 +336,37 @@ self.logger.debug("Timeout!!!!") return False + def cmd_fp_safety_shutdown_override(self, active: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends an FP safety shutdown override command via CAN bus. + Constraints: + Must be logged into FP. + @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_fp_ch_id, + message_id=MsgIds.MSG_ID_FP_SAFETY_SHUTDOWN_OVERRIDE.value, + payload=payload) + + self.logger.debug("overriding FP 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