SW/ControlSW/Archive/Dirigent/1119VersionEtBt/Dirigent.sh

#!/bin/bash


SUBDIR=
ThisDev=Dirig

source Commons.sh
source Tools.sh


ShotNo=`echo "SELECT shot_no FROM shots_new ORDER BY timestamp DESC LIMIT 1;" |$DataB`





function Broadcast()
{
    LogIt "*********`echo "$1" | tr a-z A-Z` start"
    # Rozdame ulohy
    for Dev in $INFRASTRDevs; 
        do
        echo $Dev
        $Dev $@ 
	done
    # Musime zkontrolovat splneni
    for Dev in $INFRASTRDevs; 
        do
        while [ `cat $SHM/GlobalLogBook|grep $ShotNo|grep $Dev/$1|grep -E 'Ascending|Passing'|wc -l` -eq 0 ]; do 
            echo Waiting for $Dev to be completed
            sleep 0.1;
        done
   	done
    LogIt "*********`echo "$1" | tr a-z A-Z` end"
}


function Discharge()
{
    InitDischarge
    LogIt "$DOWNTO ${FUNCNAME[0]}"
   	Broadcast Init
    Broadcast Prepare $UBt $Ucd 
    Broadcast Arming
    sleep 2;Trigger;sleep 2
    Broadcast PostDisch
    sleep 2
    Broadcast Final
    Final
    LogIt "$UPFROM ${FUNCNAME[0]}"
}

function Trigger ()
{
    LogIt "$DOWNTO ${FUNCNAME[0]}"
   	LogIt "$UPFROM ${FUNCNAME[0]}"

}

function Emergency ()
{
    LogIt "$PASSING ${FUNCNAME[0]}"
}

function Null ()
{
    LogIt "$PASSING ${FUNCNAME[0]}"
            
}

#kill `ps -Af|grep golem|grep Dirigent.sh|awk '{print $2}'|xargs ps --ppid|awk '{print $1}'`;sleep 1;killall tail;psa

function OpenSession()
{
    #PingCheck 
    rm -rf $SHM;mkdir -p $SHM/Dirig;
    LogIt "$DOWNTO ${FUNCNAME[0]}"
    date '+%d/%m/%y %H:%M:%S'>$SHM/DateTime;mkdir -p $SHM/Controll; cp *.* $SHM/Controll/
    for Dev in Dirigent $INFRASTRDevs; do
       rsync --copy-links -e ssh $Dev.sh Tools.sh Commons.sh golem@$Dev:
       LogIt "Opening $Dev command stream.."
       echo "source $Dev.sh" > $SHM/Dirig/CommandsStreamTo$Dev
       echo "ShotNo=$ShotNo" >> $SHM/Dirig/CommandsStreamTo$Dev
       tail -f $SHM/Dirig/CommandsStreamTo$Dev|ssh -q golem@$Dev  &
       ssh golem@$Dev "source $Dev.sh;OpenSessionAtDevice" &
    done 
    wait
   	LogIt "$UPFROM ${FUNCNAME[0]}"
}

function DirigentLogIt()      
{
    echo "$@"|tee -a $SHM/GlobalLogBook
}

      
function KillSession()      
{
    killall tail
}
      
function InitDischarge()
{
    rm -rf $SHM0;mkdir -p $SHMdir;
    #PingCheck #Ping all the devices ..
    LogIt "$DOWNTO ${FUNCNAME[0]}"
    LogIt "Command Line: $COMMANDLINE"
    LogIt "Load average: `cat /proc/loadavg`"
	ShotNo=$((`echo "SELECT shot_no FROM shots_new ORDER BY timestamp DESC LIMIT 1;" |$DataB`+1))
	echo $ShotNo>$SHM/ShotNo;$SHMtouch/$ShotNo;
	LogIt "Let's go for shot #"$ShotNo
	LogIt "$UPFROM ${FUNCNAME[0]}"
}

function Final()
{
    LogIt "$DOWNTO ${FUNCNAME[0]}"
    LogIt "Load average: `cat /proc/loadavg`"
}

TASK=$1
COMMANDLINE=`echo $@|sed 's/-r //g'`
PAR1=$1
PAR2=$2
PAR3=$3
PAR4=$4


while [ $# -gt 0 ]; do
   if [[ $1 == *"--"* ]]; then
        v="${1/--/}"
        declare $v="$2"
   fi
  shift
done

case "$TASK" in
   "") 
#      echo "Usage: $0 [-d|--discharge] [-v|--vacuum] [-t|--test]  [-s|--shutdown]"
      RETVAL=1
      ;;
   --discharge|-d)
      Discharge 
      ;;
   --vacuum|-v)
      echo i
      ;;
   --test|-t)
      #Init
      #Et "Init;Prepare 400 300"
      #PwSpPap 3H
      #PwSp UnPiRelayON 5
      #Chamber RotPumpON
      #Bt ShCt_DIS;Bt PS_ENG;sleep 0.3;Bt PS_DIS;Bt ShCt_ENG
      #Et ShCt_DIS;Et PS_ENG;sleep 0.3;Et PS_DIS;Et ShCt_ENG
      Broadcast Arming
      ;;
    --shutdown|-s)
      ShutDown
      ;;   
    --emergency|-e)
      Broadcast Emergency
      ;; 
      --ping|-p)
      PingCheck
      ;;
      --command|-c)
      Init
      $PAR2 $PAR3 $PAR4
      ;;
      --raw_command|-r)
      $COMMANDLINE
      ;;
      --open_session|-o)
      OpenSession
      ;;
      

      
esac