1*0c0cd931SGabriele Monacocheck_requires() { # Check required files, monitors and reactors 2*0c0cd931SGabriele Monaco for i in "$@" ; do 3*0c0cd931SGabriele Monaco p=${i%:program} 4*0c0cd931SGabriele Monaco m=${i%:monitor} 5*0c0cd931SGabriele Monaco r=${i%:reactor} 6*0c0cd931SGabriele Monaco if [ $p != $i ]; then 7*0c0cd931SGabriele Monaco if ! which $p ; then 8*0c0cd931SGabriele Monaco echo "Required program $p is not found." 9*0c0cd931SGabriele Monaco exit_unresolved 10*0c0cd931SGabriele Monaco fi 11*0c0cd931SGabriele Monaco elif [ $m != $i ]; then 12*0c0cd931SGabriele Monaco if ! grep -wq $m available_monitors ; then 13*0c0cd931SGabriele Monaco echo "Required monitor $m is not configured." 14*0c0cd931SGabriele Monaco exit_unsupported 15*0c0cd931SGabriele Monaco fi 16*0c0cd931SGabriele Monaco elif [ $r != $i ]; then 17*0c0cd931SGabriele Monaco if ! grep -wq $r available_reactors ; then 18*0c0cd931SGabriele Monaco echo "Required reactor $r is not configured." 19*0c0cd931SGabriele Monaco exit_unsupported 20*0c0cd931SGabriele Monaco fi 21*0c0cd931SGabriele Monaco elif [ ! -e $i ]; then 22*0c0cd931SGabriele Monaco echo "Required feature interface $i doesn't exist." 23*0c0cd931SGabriele Monaco exit_unsupported 24*0c0cd931SGabriele Monaco fi 25*0c0cd931SGabriele Monaco done 26*0c0cd931SGabriele Monaco} 27*0c0cd931SGabriele Monaco 28*0c0cd931SGabriele Monacoinitialize_system() { # Reset RV to initial-state 29*0c0cd931SGabriele Monaco echo > enabled_monitors 30*0c0cd931SGabriele Monaco for m in monitors/*; do 31*0c0cd931SGabriele Monaco echo nop > $m/reactors || true 32*0c0cd931SGabriele Monaco done 33*0c0cd931SGabriele Monaco echo 1 > monitoring_on 34*0c0cd931SGabriele Monaco echo 1 > reacting_on || true 35*0c0cd931SGabriele Monaco} 36*0c0cd931SGabriele Monaco 37*0c0cd931SGabriele Monacofinish_system() { 38*0c0cd931SGabriele Monaco initialize_system 39*0c0cd931SGabriele Monaco} 40