#!/bin/bash RASPs="Chamber Charger Discharge" #RASPs="Charger Discharge" ARDs="Trigger" PAPs="" VIRTDevs="" DASs="TektrMSO56Standard RigolMSO5104Charger" Infrastructure="$RASPs $VIRTDevs" #IntelligentDevs="$RASPs $VIRTDevs" ALLDevs="$RASPs $DASs" #ALLDevs="$RASPs $OSCs $DASs $PAPs" GM="golem@golem" sshGM="ssh $GM" XTERM="xterm -T $Dev -e ssh golem@$Dev" DataB="psql -qAt -U golem golem_database" SHM="/dev/shm/golem" SHMdir="$SHM/$ThisDev" SHM0="/dev/shm/golem/0" NULL="1>/dev/null" Everything2NULL="1>/dev/null 2>/dev/null" GWDirigentDir="/GW/SW/ControlSW/Dirigent" #RUNinBACKGR="&> /dev/null" RUNinBACKGR="&" LogFunctionStart="LogIt Diving into .." LogFunctionEnd="LogIt Ascending from .." LogFunctionPassing="LogIt Passing by .." LogFunctionGoingThrough="LogIt Going through .." #2> >(tee -a $SHM/stderr.log >&2) function PrepareDischarge() { $LogFunctionPassing; echo OK; } function RASPCommand() { Result=`ssh golem@$1 "source $1.sh;$2"` LogIt $2@$1: $Result } function DASCommand() { Result=`cd DASs;source $1.sh;$2;cd ..` LogIt $2@$1: $Result } #DIRIGENT: function Dirigent(){ ssh golem@Dirigent "source Dirigent.sh; $@"; } #RASPs: function Chamber(){ ssh golem@Chamber "source Chamber.sh; $@"; } function Charger(){ ssh golem@Charger "source Charger.sh; $@"; } function Discharge(){ ssh golem@Discharge "source Discharge.sh; $@"; } #DASS function TektrMSO56Standard(){ "cd DASs;source TektrMSO56Standard.sh; $@"; } function RigolMSO5104Charger(){ "cd DASs;source RigolMSO5104Charger.sh; $@"; } #Analysis function Web(){ "source Web.sh; $@"; } function RASPsOpenSession() { mkdir -p $SHM sshfs golem@Dirigent:$SHM/ $SHM/ echo OK } function DASsOpenSession() { echo OK } function RASPsCloseSession() { fusermount -u $SHM rm -rf $SHM echo OK } function DASsCloseSession() { echo OK } function LogIt() { echo `date '+%H:%M:%S'`\\t ${FUNCNAME[1]} $1 >> $SHM/LocalLogBook printf "`date +%H:%M:%S` #`cat $SHM/ShotNo` $ThisDev/${FUNCNAME[1]}:\t%s\n" "$1 $2 $3 $4"|tee -a $SHM/GlobalLogbook printf "`date +%H:%M:%S` #`cat $SHM/ShotNo` $ThisDev/${FUNCNAME[1]}:\t%s\n" "$1 $2 $3 $4">> $SHM0/ShotLogbook #| expand -t 33 } function CommonInitDischarge() { $LogFunctionPassing mkdir -p $SHM0/$SUBDIR/$ThisDev echo OK } function critical_error() { LogIt "Critical error: $1 ... Stopped" echo pack [label .error -text {Critical error: $1 ... stopped}]|wish } function StartOscAcquiring() { # $1: Osc name $LogFunctionGoingThrough echo ":TRIGger:SWEep AUTO;RUN"|netcat -w 1 $1 5555 mkdir -p /dev/shm/$1/ touch /dev/shm/$1/OscRequestStream tail -f /dev/shm/$1/OscRequestStream|netcat $1 5555 >> /dev/shm/$1/OscRespondStream & } function ReadOscilloscope() { # $1: Osc name # $2: Channel # echo ":SYSTem:TIME?">> /dev/shm/$1/OscRequestStream;mRelax echo ":MEAS:ITEM? VAVG, CHANNEL$2">> /dev/shm/$1/OscRequestStream echo `tail -1 /dev/shm/$1/OscRespondStream|xargs printf '%4.0f\n'` } function OpenOscDVMAcquiring() { # $1: Osc name # $2: Channel # $LogFunctionGoingThrough echo ":DVM:ENABle ON;:DVM:SOURce CHANnel$2"|netcat -w 1 $1 5555;mRelax echo ":STOP;:CLEAR;:TRIGger:SWEEp AUTO;RUN"|netcat -w 1 $1 5555 mkdir -p /dev/shm/$1/ touch /dev/shm/$1/OscRequestStream tail -f /dev/shm/$1/OscRequestStream|netcat -N $1 5555 >> /dev/shm/$1/OscRespondStream & } # while [ 1 ]; do ./Charger.sh -r ReadDVMOscilloscope HVOsc ;sleep 1;done function ReadDVMOscilloscope() { # $1: Osc name echo ":SYSTem:TIME?">> /dev/shm/$1/OscRequestStream;mRelax echo ":DVM:CURRENT?">> /dev/shm/$1/OscRequestStream;mRelax echo `tail -1 /dev/shm/$1/OscRespondStream|xargs printf '%4.0f\n'` } # Defaults, in case it is not defined in the driver itself function Arming() { $LogFunctionGoingThrough echo OK } function PostDischargeFinals() { $LogFunctionGoingThrough echo OK } function PostDisch() { $LogFunctionGoingThrough echo OK } source Tools.sh