#!/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