SW/ControlSW/Archive/Dirigent/1219BeforeGit/Dirigent.sh

 #!/bin/bash
SUBDIR=
ThisDev=Dirigent

RsyncDevices # Tohle tu asi musí zustat ...


source Commons.sh


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

function OpenSession()
{
    mkdir -p $SHM; mkdir -p $SHM/Shots; mkdir -p $SHM0
    echo `DataBaseQuerry "SELECT shot_no FROM shots_new ORDER BY timestamp  DESC LIMIT 1;"` > $SHM/ShotNo
    $LogFunctionStart
    PingCheck 
    LogIt $SessionDate
    mkdir -p $SHM/Control; cp *.* $SHM/Control/
    RsyncDevices
    for Dev in $RASPs; do
       mkdir -p $SHM/Infrastructure/$Dev
       RASPCommand $Dev RASPsOpenSession
       sshfs golem@$Dev:$SHM/ $SHM/Infrastructure/$Dev/
    done
    for Dev in $DASs; do
       mkdir -p $SHM/DASs/$Dev
       DASCommand $Dev DASsOpenSession
    done 
    df|grep shm
    $LogFunctionEnd
}

function CloseSession()
{
    $LogFunctionStart
    mkdir -p Sessions/$SessionDate
    for Dev in $RASPs; do
        fusermount -u $SHM/Infrastructure/$Dev/
        RASPCommand $Dev RASPsCloseSession
    done
    for Dev in $DASs; do
        DASCommand $Dev DASsCloseSession
    done 
    wait
    rsync -a $SHM/ Sessions/$SessionDate #Bude muset byt trochu vyse .
    rm -rf $SHM
    Broadcast KillAllGMs
    df|grep shm
    #LogIt "^C"
}


function Broadcast()
{
    LogIt "********* Broadcasting `echo "$1" | tr a-z A-Z`"
    for Dev in $RASPs; 
        do
        if [ `ssh golem@$Dev "source $Dev.sh;$@"|tail -1` != "OK" ]; then critical_error "Broadcast $Dev $1 KO";exit 1;fi &
	done
	for Dev in $DASs; 
        do
        if [ `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
	rm -f $SHM0/ShotLogbook 
    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 CommonInitDischarge
    Broadcast PrepareDischarge $1 $2 $3 $WGpressure $PreionFlag 
    Broadcast Arming
    sleep 2;Discharge Trigger;sleep 2
    Broadcast PostDisch
    sleep 3
    Broadcast PostDischargeFinals
    ./Web.sh -r CreateShotHomepage
    cp -r $SHM0 $SHM/Shots/$ShotNo
    cp -r $SHM0  /golem/database/operation/shots/$ShotNo
    echo "INSERT INTO shots_new (shot_no, timestamp, pre_comment) VALUES ($((`cat $SHM/ShotNo`+1)), NOW(), 'tuning the controll system');" | psql -U golem golem_database
    $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)
      MakeDischarge $UBt $Ucd
      ;;
   --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
      ;; 
      --kill|-k)
      Broadcast KillAllGMs
      ;; 
      --ping|-p)
      PingCheck
      ;;
      --close_session|-c)
      CloseSession
      ;;
      --raw_command|-r)
      $COMMANDLINE
      ;;
      --open_session|-o)
      OpenSession
      ;;
      --vacuum_on|-v)
      Chamber PumpingON
      ;;
      --logbook|-l)
      tail -f /dev/shm/golem/GlobalLogbook
      ;;
      --rsyncPUSH)
      RsyncDevices
      ;;
      --rsync)
      RsyncDeviceFromDirigent
      ;;
      --post)
      Broadcast PostDisch
      Broadcast PostDischargeFinals
      ;;
      --commit)
      cd $GWDirigentDir;git add .; git commit -am "$PAR1"; cd $OLDPWD
      ;;
      --help)
      echo "COMMIT: ./Dirigent.sh --commit \"Commit text\""
      ;;
esac