From 8c4f75f75e4cd303c97a37d6b12704a896fdaea2 Mon Sep 17 00:00:00 2001 From: Tristan McGinnis Date: Tue, 15 Apr 2025 20:35:49 -0500 Subject: [PATCH] feat: nodes should die entirely if no MCU found This should allow anchor to restart automatically if it's being run as a service --- src/anchor_pkg/anchor_pkg/anchor_node.py | 6 ++++-- src/arm_pkg/arm_pkg/arm_node.py | 7 ++++--- src/bio_pkg/bio_pkg/bio_node.py | 8 +++++--- src/core_pkg/core_pkg/core_node.py | 6 ++++-- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/anchor_pkg/anchor_pkg/anchor_node.py b/src/anchor_pkg/anchor_pkg/anchor_node.py index 5fc6466..e3dd1d9 100644 --- a/src/anchor_pkg/anchor_pkg/anchor_node.py +++ b/src/anchor_pkg/anchor_pkg/anchor_node.py @@ -7,6 +7,7 @@ import time import atexit import serial +import os import sys import threading import glob @@ -61,8 +62,9 @@ class SerialRelay(Node): if self.port is None: self.get_logger().info("Unable to find MCU...") - time.sleep(1) - sys.exit(1) + #kill the node/process entirely + os.kill(os.getpid(), signal.SIGKILL) + sys.exit(0) self.ser = serial.Serial(self.port, 115200) atexit.register(self.cleanup) diff --git a/src/arm_pkg/arm_pkg/arm_node.py b/src/arm_pkg/arm_pkg/arm_node.py index f0d7201..3a2e9d7 100644 --- a/src/arm_pkg/arm_pkg/arm_node.py +++ b/src/arm_pkg/arm_pkg/arm_node.py @@ -95,9 +95,10 @@ class SerialRelay(Node): break if self.port is None: - self.get_logger().info("Unable to find MCU... please make sure it is connected.") - time.sleep(1) - sys.exit(1) + self.get_logger().info("Unable to find MCU...") + #kill the node/process entirely + os.kill(os.getpid(), signal.SIGKILL) + sys.exit(0) self.ser = serial.Serial(self.port, 115200) atexit.register(self.cleanup) diff --git a/src/bio_pkg/bio_pkg/bio_node.py b/src/bio_pkg/bio_pkg/bio_node.py index ad8f40b..5518b87 100644 --- a/src/bio_pkg/bio_pkg/bio_node.py +++ b/src/bio_pkg/bio_pkg/bio_node.py @@ -3,6 +3,7 @@ from rclpy.node import Node import serial import sys import threading +import os import glob import time import atexit @@ -65,9 +66,10 @@ class SerialRelay(Node): pass if self.port is None: - self.get_logger().info("Unable to find MCU... please make sure it is connected.") - time.sleep(1) - sys.exit(1) + self.get_logger().info("Unable to find MCU...") + #kill the node/process entirely + os.kill(os.getpid(), signal.SIGKILL) + sys.exit(0) self.ser = serial.Serial(self.port, 115200) atexit.register(self.cleanup) diff --git a/src/core_pkg/core_pkg/core_node.py b/src/core_pkg/core_pkg/core_node.py index 1768293..f1398a0 100644 --- a/src/core_pkg/core_pkg/core_node.py +++ b/src/core_pkg/core_pkg/core_node.py @@ -7,6 +7,7 @@ import time import atexit import serial +import os import sys import threading import glob @@ -74,8 +75,9 @@ class SerialRelay(Node): if self.port is None: self.get_logger().info("Unable to find MCU...") - time.sleep(1) - sys.exit(1) + #kill the node/process entirely + os.kill(os.getpid(), signal.SIGKILL) + sys.exit(0) self.ser = serial.Serial(self.port, 115200) atexit.register(self.cleanup)