#!/bin/bash RASPs="Chamber Charger Discharge" RASPs="Charger Discharge" BUONs="PS DAS" OSCs="ChargerOsc HVOsc ChamberOsc" OSCs="" DASs="Tektr6Standard" ARDs="Trigger" #PAPs="PowSupPap" VIRTDevs="" ALLDevs="$RASPs $OSCs" #ALLDevs="$RASPs $OSCs $DASs $PAPs" INFRASTRDevs="$RASPs $VIRTDevs $OSCs" 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" DirigentDir="/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 DeviceCommand() { Result=`ssh golem@$1 "source $1.sh;$2"` LogIt $2@$1: $Result } function Dirigent(){ ssh golem@gm "source Dirigent.sh; $@"; } function Chamber(){ ssh golem@Chamber "source Chamber.sh; $@"; } function Charger(){ ssh golem@Charger "source Charger.sh; $@"; } function Discharge(){ ssh golem@Discharge "source Discharge.sh; $@"; } function OpenSession() { mkdir -p $SHM sshfs golem@Dirigent:$SHM/ $SHM/ echo OK } function CloseSession() { fusermount -u $SHM rm -rf $SHM 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"|tee -a $SHM0/ShotLogbook #| expand -t 33 } function CommonInitDischarge() { $LogFunctionPassing mkdir -p $SHM0/Infrastructure/$ThisDev echo OK } function critical_error() { LogIt "Critical error: $1 ... Stopped" echo pack [label .error -text {Critical error: $1 ... stopped}]|wish } function RelayON() { case "$ThisDev" in Chamber) echo "import lib as lib;lib.gpio_low($1)"|python 1>&- 2>&- ;; Discharge) echo "import lib as lib;lib.gpio_low($1)"|python 1>&- 2>&- ;; Charger) if [ $1 -le 8 ]; then echo "from unipi.relays.controller20 import RelaysController;c = RelaysController();c.relay($1, True)"|python3 1>&- 2>&-; fi if [ $1 -gt 8 ]; then echo "from unipi.relays.controller25 import RelaysController;c = RelaysController();c.relay((($1-8)), True)"|python3 1>&- 2>&-; fi esac } function RelayOFF() { case "$ThisDev" in Chamber) echo "import lib as lib;lib.gpio_high($1)"|python 1>&- 2>&- ;; Discharge) echo "import lib as lib;lib.gpio_high($1)"|python 1>&- 2>&- ;; Charger) if [ $1 -le 8 ]; then echo "from unipi.relays.controller20 import RelaysController;c = RelaysController();c.relay($1, False)"|python3 1>&- 2>&-; fi if [ $1 -gt 8 ]; then echo "from unipi.relays.controller25 import RelaysController;c = RelaysController();c.relay((($1-8)), False)"|python3 1>&- 2>&-; fi esac } function GetOscScreenShot() { LogIt "Acquiring OSC screenshot .." echo ":DISPLAY:DATA? ON,OFF,PNG" |netcat -w 1 $1 5555|tail -c +12 > $SHM0/Infrastructure/$ThisDev/$1.png } 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'` } function CloseOscDVMAcquiring() { $LogFunctionGoingThrough echo ":STOP;:DVM:ENABle OFF"|netcat -w 1 $1 5555 mRelax killall netcat } source Tools.sh