Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
e3-sis8300llrf
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
ESS EPICS Environment
wrappers
e3-sis8300llrf
Commits
2ef588e4
Commit
2ef588e4
authored
5 years ago
by
Thomas Fay
Browse files
Options
Downloads
Patches
Plain Diff
Adds further modularisation to testing scripts.
parent
72aeada7
No related branches found
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
testing/check
+1
-0
1 addition, 0 deletions
testing/check
testing/set_att
+34
-0
34 additions, 0 deletions
testing/set_att
testing/state_change
+19
-0
19 additions, 0 deletions
testing/state_change
testing/test1.sh
+45
-64
45 additions, 64 deletions
testing/test1.sh
with
99 additions
and
64 deletions
testing/check
0 → 100755
+
1
−
0
View file @
2ef588e4
[ "$1" = "$2" ] && echo "Pass" || echo "***Fail: result = $2***"
This diff is collapsed.
Click to expand it.
testing/set_att
0 → 100755
+
34
−
0
View file @
2ef588e4
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"
This diff is collapsed.
Click to expand it.
testing/state_change
0 → 100755
+
19
−
0
View file @
2ef588e4
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
This diff is collapsed.
Click to expand it.
testing/test1.sh
+
45
−
64
View file @
2ef588e4
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
)
&
0
x000000FF
))
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'
"
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment