SW/ControlSW/Archive/Dirigent/Sandbox/081219/VNZdroj/136/Control/Dirigent.sh

 #!/bin/bash

SUBDIR=
ThisDev=Dirigent


source Commons.sh

SessionDate=`date '+%Y:%m:%d_%H:%M'`

function OpenSession()
{
    #PingCheck 
    mkdir -p $SHM; mkdir -p $SHM/Shots
    echo `DataBaseQuerry "SELECT shot_no FROM shots_new ORDER BY timestamp  DESC LIMIT 1;"` > $SHM/ShotNo
    $LogFunctionStart
    LogIt $SessionDate
    mkdir -p $SHM/Control; cp *.* $SHM/Control/
    RsyncDevices
    for Dev in $INFRASTRDevs; do
       mkdir -p $SHM/$Dev
       DeviceCommand $Dev OpenSession
       sshfs golem@$Dev:$SHM/ $SHM/$Dev/
    done 
    $LogFunctionEnd
}

function CloseSession()
{
    $LogFunctionStart
    mkdir ~/Sessions/$SessionDate
    for Dev in $INFRASTRDevs; do
        fusermount -u $SHM/$Dev/
        DeviceCommand $Dev CloseSession
    done
    rsync -a $SHM/ ~/Sessions/$SessionDate #Bude muset byt trochu vyse .
    $LogFunctionEnd
    rm -rf $SHM
    LogIt "^C"
}


function Broadcast()
{
    LogIt "********* Broadcasting `echo "$1" | tr a-z A-Z`"
    for Dev in $INFRASTRDevs; 
        do
        #echo `ssh golem@$Dev "source $Dev.sh;$1"|tail -1`
        if [ `ssh golem@$Dev "source $Dev.sh;$@"|tail -1` != "OK" ]; then critical_error "Broadcast $Dev $1 KO";exit 1;fi &
	done
	wait
    LogIt "*********`echo "$1" | tr a-z A-Z` end"
}


function MakeDischarge()
{
	ShotNo=$((`cat $SHM/ShotNo`+1));echo $ShotNo>$SHM/ShotNo
    LogIt "################# Discharge #$ShotNo ##################"
    mkdir -p $SHM0;
    mkdir -p $SHM0/Control; cp *.* $SHM0/Control/
    #PingCheck #Ping all the devices ..
    LogIt "Command Line: $COMMANDLINE"
    LogIt "Load average: `cat /proc/loadavg`"
	echo $ShotNo>$SHM/ShotNo;
   	Broadcast InitDischarge
    Broadcast PrepareDischarge $1 $2 $3 $WGpressure $PreionFlag 
    Broadcast Arming
    sleep 2;Discharge Trigger;sleep 2
    Broadcast PostDisch
    sleep 3
    Broadcast Final
    cp -r $SHM0 $SHM/Shots/$ShotNo
    $LogFunctionEnd
}


function Emergency ()
{
    $LogFunctionPassing
}

function Null ()
{
    $LogFunctionPassing
}



function Final()
{
    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)
      RsyncDevices
      MakeDischarge $UBt $Ucd
      ;;
   --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
      ;;
      --close_session|-c)
      CloseSession
      ;;
      --raw_command|-r)
      RsyncDevices
      $COMMANDLINE
      ;;
      --open_session|-o)
      OpenSession
      ;;
      --logbook|-l)
      tail -f /dev/shm/golem/GlobalLogbook
      ;;
      --rsync)
      RsyncDevices
      ;;
      --post)
      Broadcast PostDisch
      ;;
      --commit)
      git add .; git commit -am "$PAR1"
      ;;
      --help)
      echo "COMMIT: ./Dirigent.sh --commit \"Commit text\""
      ;;

      
esac