mirror of https://github.com/OpenIPC/firmware.git
73 lines
1.6 KiB
Bash
73 lines
1.6 KiB
Bash
#!/bin/sh
|
|
DAEMON="Telemetry_Transfer"
|
|
|
|
PIDFILE="/var/run/$DAEMON.pid"
|
|
LOG_DIR="/var/log/$DAEMON"
|
|
STDOUT_LOG="$LOG_DIR/stdout.log"
|
|
STDERR_LOG="$LOG_DIR/stderr.log"
|
|
|
|
COMMAND="socat UDP-RECV:2002 STDOUT | mcom -s 420000 /dev/ttyAMA0 2>>STDERR_LOG | socat - udp-sendto:192.168.144.201:5601 2>>STDERR_LOG "
|
|
|
|
# Ensure the log directory exists
|
|
[ ! -d "$LOG_DIR" ] && mkdir -p "$LOG_DIR"
|
|
|
|
start() {
|
|
echo -n "Starting $DAEMON: "
|
|
|
|
start-stop-daemon -b -m -S -q -p "$PIDFILE" -x /bin/sh -- -c "$COMMAND" \
|
|
>> "$STDOUT_LOG" 2>> "$STDERR_LOG"
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "OK"
|
|
else
|
|
echo "FAIL"
|
|
fi
|
|
|
|
# Schedule the restart of S95telemetry after 30 seconds
|
|
(sleep 30 && /etc/init.d/S95telemetry restart) &
|
|
}
|
|
|
|
stop() {
|
|
echo -n "Stopping $DAEMON: "
|
|
|
|
# Kill the process using the PID file
|
|
if start-stop-daemon -K -q -p "$PIDFILE"; then
|
|
rm -f "$PIDFILE"
|
|
echo "OK"
|
|
else
|
|
echo "FAIL"
|
|
fi
|
|
|
|
# Kill any remaining processes by checking COMMAND
|
|
for pattern in "UDP-RECV:2002" "mcom -s 420000" "udp-sendto:192.168.144.201:5601"; do
|
|
pids=$(ps | grep "$pattern" | grep -v grep | awk '{print $1}')
|
|
for pid in $pids; do
|
|
kill "$pid" 2>/dev/null
|
|
echo "Killed process $pid with pattern $pattern"
|
|
done
|
|
done
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
sleep 3
|
|
start
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
restart|reload)
|
|
restart
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart|reload}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|