Skip to content
Snippets Groups Projects
Commit 2ef588e4 authored by Thomas Fay's avatar Thomas Fay
Browse files

Adds further modularisation to testing scripts.

parent 72aeada7
No related branches found
No related tags found
No related merge requests found
[ "$1" = "$2" ] && echo "Pass" || echo "***Fail: result = $2***"
if [ $1 = "-h" ] || [ $# -lt 1 ]; then
echo "Writes an attenuation value to register for channels 0-8."
echo "Value parameter is optional and a random value in the valid range"
echo "is generated."
echo "usage: sh set_att <sis8300 slot> <channel> (value)"
echo "e.g. sh set-att 0 15"
exit
fi
slot=$1
channel=$2
if [ $# -ge 3 ]; then
attVal = $3
else
attVal=$(( 1 + (RANDOM % 30 / (1 + $channel / 8)) ))
fi
run() {
eval "$(dirname $0)/$1"
}
state=$(( $attVal * 2 * (1 + $channel / 8) ))
echo "Ch $channel - setting attenuation to $attVal"
caput $LLRF_IOC_NAME:AI$1-ATT $attVal > /dev/null
# 4-byte registers 0xF82, 0xF83 and 0xF84 hold the values with one byte offsets between values
reg="0xF8$(( 2 + $channel / 4 ))"
result="$(sis8300drv_reg /dev/sis8300-$slot $reg)"
rshift=$(( $channel % 4 * 8))
result=$(( ($result >> $rshift) & 0x000000FF))
usleep 500000
run "check $state $result"
if [ $# -lt 1 ] ; then
echo "usage: sh state_change.sh <required state> (state result)"
echo "e.g. sh state_change.sh RESET RESETTING"
exit
fi
run() {
eval "$(dirname $0)/$1"
}
echo "Go to state $1"
eval "caput -S $LLRF_IOC_NAME:MSGS $1 >/dev/null"
usleep 500000
result=$(caget -t $LLRF_IOC_NAME)
if [ $# -eq 1 ]; then
run "check $1 $result"
else
run "check $2 $result"
fi
if [ $# -lt 2 ] ; then if [ $# -lt 1 ] ; then
echo "usage: sh test1.sh <system> <SIS8300 slot>" echo "usage: sh test1.sh <SIS8300 slot>"
echo "e.g. sh test1.sh LLRF-LION 6" echo "e.g. sh test1.sh 6"
exit exit
fi fi
slot=$1
path=$(pwd)/$(dirname $0)
# Print module versions # Print module versions
echo "*** Module versions" echo "*** Module versions"
pv_mods=`cat /epics/iocs/sis8300llrf/REQMODs.list | grep MODULES` pv_mods=`cat /epics/iocs/sis8300llrf/REQMODs.list | grep MODULES`
pv_vers=`cat /epics/iocs/sis8300llrf/REQMODs.list | grep VERSIONS` pv_vers=`cat /epics/iocs/sis8300llrf/REQMODs.list | grep VERSIONS`
n=`caget -t $pv_mods | cut -d ' ' -f 1` n=`caget -t $pv_mods | cut -d ' ' -f 1`
for (( i=2; i <= $n+1; i++ )) for (( i=2; i<= $n+1; i++ ))
do do
mod=`caget -t $pv_mods | cut -d ' ' -f $i` mod=`caget -t $pv_mods | cut -d ' ' -f $i`
ver=`caget -t $pv_vers | cut -d ' ' -f $i` ver=`caget -t $pv_vers | cut -d ' ' -f $i`
echo $mod - $ver echo $mod - $ver
done done
llrf_prefix=$1 run() {
eval "$path/$1"
test() {
[ "$1" = "$2" ] && echo "Pass" || echo "***Fail: result = $2***"
}
state_change() {
echo "Go to state $1"
eval "caput -S $llrf_prefix:MSGS $1 >/dev/null"
usleep 500000
if [ $# -eq 2 ]; then
test $2 "$(caget -t $llrf_prefix)"
else
test $1 "$(caget -t $llrf_prefix)"
fi
}
set_att() {
attVal=$(( 1 + (RANDOM % 30 / (1 + $1 / 8)) ))
state=$(( $attVal * 2 * (1 + $1 / 8) ))
echo "Ch $1 - setting attenuation to $attVal"
caput $llrf_prefix:AI$1-ATT $attVal > /dev/null
# 4-byte registers 0xF82, 0xF83 and 0xF84 hold the values with one byte offsets between values
reg="0xF8$(( 2 + $i / 4 ))"
result="$(sis8300drv_reg /dev/sis8300-$2 $reg)"
rshift=$(( $1 % 4 * 8))
result=$(( ($result >> $rshift) & 0x000000FF))
usleep 500000
test $state $result
} }
echo '*** State Machine' echo '*** State Machine'
run "state_change RESET RESETTING"
state_change RESET RESETTING run "state_change OFF"
state_change OFF run "state_change INIT"
state_change INIT run "state_change ON"
state_change ON run "state_change RESET RESETTING"
state_change RESET RESETTING run "state_change INIT"
state_change INIT
echo "*** VM Output" echo "*** VM Output"
echo 'Enable VM' echo 'Enable VM'
caput $llrf_prefix:VMENBL 1 > /dev/null caput $LLRF_IOC_NAME:VMENBL 1 > /dev/null
test 0x700 "$(sis8300drv_reg /dev/sis8300-$2 0x12F)" run "check 0x700 $(sis8300drv_reg /dev/sis8300-$slot 0x12F)"
echo 'Disable VM' echo 'Disable VM'
caput $llrf_prefix:VMENBL 0 > /dev/null caput $LLRF_IOC_NAME:VMENBL 0 > /dev/null
test 0x600 "$(sis8300drv_reg /dev/sis8300-$2 0x12F)" run "check 0x600 $(sis8300drv_reg /dev/sis8300-$slot 0x12F)"
echo '*** Attenuation Parameters' echo '*** Attenuation Parameters'
echo 'Test in INIT state' echo 'Test in INIT state'
state_change 'RESET' 'RESETTING' run "state_change 'RESET' 'RESETTING'"
state_change 'INIT' run "state_change 'INIT'"
# Use only integers for testing of attenuation range 1-31 # Use only integers for testing of attenuation range 1-31
# Note this excludes fractional attenuation values in the testing but for now the simplicity with worth the limited functionality testing. # Note this excludes fractional attenuation values in the testing but for now the simplicity with worth the limited functionality testing.
attVal=$(( $RANDOM % 30 + 1 ))
for i in `seq 0 8` for i in `seq 0 8`
do do
set_att $i $2 run "set_att $slot $i"
done done
echo 'Test attenuation setting in ON state' echo 'Test attenuation setting in ON state'
state_change 'RESET' 'RESETTING' run "state_change 'RESET' 'RESETTING'"
state_change 'INIT' run "state_change 'INIT'"
state_change 'ON' run "state_change 'ON'"
attVal=$(( $RANDOM % 30 + 1 )) attVal=$(( $RANDOM % 30 + 1 ))
for i in `seq 0 8`; for i in `seq 0 8`;
do do
set_att $i $2 run "set_att $slot $i"
done done
echo 'Revert to INIT state' echo 'Revert to INIT state'
state_change 'RESET' 'RESETTING' run "state_change 'RESET' 'RESETTING'"
state_change 'INIT' run "state_change 'INIT'"
echo '*** Pulse' echo '*** Pulse'
state_change 'RESET' 'RESETTING' run "state_change 'RESET' 'RESETTING'"
state_change 'INIT' run "state_change 'INIT'"
state_change 'ON' run "state_change 'ON'"
echo 'Simulating backplane triggers to FPGA for pulse_coming, pulse_start and pulse_end.' echo 'Simulating backplane triggers to FPGA for pulse_coming, pulse_start and pulse_end.'
sis8300drv_reg /dev/sis8300-$2 0x404 -w 0x20
sis8300drv_reg /dev/sis8300-$2 0x404 -w 0x40 for i in `seq 1 50`
sis8300drv_reg /dev/sis8300-$2 0x404 -w 0x80 do
result="$(caget -t $llrf_prefix:PULSEDONECNT)" echo "Beam Pulse $i"
test $result 1 sis8300drv_reg /dev/sis8300-$slot 0x404 -w 0x20
sis8300drv_reg /dev/sis8300-$slot 0x404 -w 0x40
sis8300drv_reg /dev/sis8300-$slot 0x404 -w 0x80
usleep 100000
done
result="$(caget -t $LLRF_IOC_NAME:PULSEDONECNT)"
run "check $result 50"
echo 'Revert to INIT state' echo 'Revert to INIT state'
state_change 'RESET' 'RESETTING' run "state_change 'RESET' 'RESETTING'
state_change 'INIT' run "state_change 'INIT'"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment