135 lines
4.2 KiB
Bash
Executable File
135 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Program:
|
|
# This script is a finger daemon of program ximeaImageRecorder and psdkProgram. It has three function:
|
|
# 1) ensure that the programs ximeaImagerRecorder and psdkProgram are runing; if not run the programs;
|
|
# 2) generate log file name based the local time and directory if not exist;
|
|
# 3) redirect the output of programs to file generated in (2);
|
|
# Usage:
|
|
# 1) crontab -e
|
|
# 2) */1 * * * * /home/pi/tc_ShellScripts/finger_daemon.sh
|
|
# History:
|
|
# 2021/07/13 Tangchao First release
|
|
# 2022/06/24 Tangchao Second release
|
|
#
|
|
|
|
#sleep 60s #rockpi need sleep 180s when start because if not wired lan which psdk's image transmission use don't work normal.
|
|
|
|
rowNumberDisconnect=0
|
|
|
|
while true
|
|
do
|
|
|
|
# echo "current time is " $(date)
|
|
|
|
# echo "the current directory is " $(pwd)
|
|
|
|
LogDirectory=/media/nvme/300TC/programRunLog
|
|
|
|
if [ ! -e $LogDirectory ]; then
|
|
sudo mkdir -p $LogDirectory
|
|
else
|
|
#echo directory $LogDirectory exist!
|
|
delete=2
|
|
fi
|
|
|
|
|
|
# run psdk program
|
|
cd $LogDirectory
|
|
if [ ! -e djiLog ]; then
|
|
sudo mkdir djiLog
|
|
else
|
|
# echo directory "djiLog" exist!
|
|
delete=2
|
|
fi
|
|
|
|
#python /home/pi/tc_ShellScripts/test.py
|
|
|
|
bool=`ps -ef | grep dji_300tc | grep -v grep | wc -l`
|
|
|
|
if [ $bool -eq 0 ] ; then
|
|
psdkLogFileName=$(date +%Y%m%d_%H%M_%S).dji_log
|
|
sudo /bin/echo $(/bin/date +%F_%T) >> $LogDirectory"/djiLog/runtime.log"
|
|
|
|
# sudo /home/300tc/projects/psdk/psdk_demo &> $LogDirectory"/djiLog/"$psdkLogFileName &
|
|
|
|
cd /home/300tc/projects_source/Payload-SDK/samples/sample_c/platform/linux/manifold2/build/bin
|
|
sudo /home/300tc/projects_source/Payload-SDK/samples/sample_c/platform/linux/manifold2/build/bin/dji_300tc &> $LogDirectory"/djiLog/"$psdkLogFileName &
|
|
|
|
runtimes=$(head -n +1 $LogDirectory"/djiLog/Number_of_runs.txt")
|
|
echo $runtimes
|
|
runtimes=$[runtimes+1]
|
|
echo $runtimes
|
|
|
|
sudo sed -i "1i $runtimes" $LogDirectory"/djiLog/Number_of_runs.txt"
|
|
|
|
echo "Now, start run dji program!"
|
|
else
|
|
# echo "Dji program already runing!"
|
|
tmp1=$(dmesg | grep -n disconnect | grep "usb 1-1.1" | awk '{match($0, /^[0-9]+/); print substr($0, RSTART, RLENGTH)}' | awk 'BEGIN {max = rowNumberDisconnect} {if ($1 > max) max = $1} END {print max}')
|
|
if [ $tmp1 -gt $rowNumberDisconnect ]; then
|
|
echo "new disconnect! "$rowNumberDisconnect"\t"$tmp1
|
|
|
|
dmesg -T &> $LogDirectory"/djiLog/"kernalLog_$(date +%Y%m%d-%H%M%S).txt
|
|
|
|
rowNumberDisconnect=$tmp1
|
|
|
|
kill -9 $(ps -ef | grep dji_300tc | grep -v grep | awk '{print $2}')
|
|
else
|
|
echo "no disconnect!"
|
|
fi
|
|
fi
|
|
|
|
|
|
|
|
# run ximea program
|
|
while [ ! -f "/media/nvme/300TC/config/timesyncfromdji" ]
|
|
do
|
|
sleep 1s
|
|
echo "timesyncfromdji don't exist"
|
|
|
|
done
|
|
|
|
while [ ! -s "/media/nvme/300TC/config/timesyncfromdji" ]
|
|
do
|
|
sleep 1s
|
|
echo "timesyncfromdji is empty"
|
|
|
|
done
|
|
|
|
number=$(cat /media/nvme/300TC/config/timesyncfromdji)
|
|
while [ "$number" -eq 0 ]
|
|
do
|
|
sleep 1s
|
|
echo "Time synchronization is not performed."
|
|
|
|
number=$(cat /media/nvme/300TC/config/timesyncfromdji)
|
|
done
|
|
|
|
cd $LogDirectory
|
|
if [ ! -e hyperspectralLog ]; then
|
|
sudo mkdir hyperspectralLog
|
|
else
|
|
# echo directory "hyperspectralLog" exist!
|
|
delete=2
|
|
fi
|
|
|
|
|
|
procnum=`ps -ef | grep ximeaAirborneSystem | grep -v grep | wc -l`
|
|
|
|
if [ $procnum -eq 0 ] ; then
|
|
fileName=$(date +%Y%m%d_%H%M_%S).hyperspectral_log
|
|
|
|
echo $fileName
|
|
|
|
sudo /home/300tc/projects/ximeaAirborneSystem/ximeaAirborneSystem &> $LogDirectory"/hyperspectralLog/"$fileName &
|
|
|
|
echo "Now, start run hyperspectral program!"
|
|
else
|
|
# echo "HyperspectralLog program already runing!"
|
|
delete=2
|
|
fi
|
|
|
|
sleep 1s
|
|
|
|
done
|