From f2a1b7ed821133975234e84473a9f5cc9f24a390 Mon Sep 17 00:00:00 2001
From: Thomas Fay <thomas.fay@esss.se>
Date: Wed, 31 Jul 2019 20:39:14 +0200
Subject: [PATCH] Adds configuration scripting of PV aliases.

---
 startup/alias.template      |  1 +
 startup/deployServiceIOC.sh | 27 ++++++++++++++++++---------
 startup/llrf_template.iocsh |  2 +-
 3 files changed, 20 insertions(+), 10 deletions(-)
 create mode 100644 startup/alias.template

diff --git a/startup/alias.template b/startup/alias.template
new file mode 100644
index 0000000..c3a40f1
--- /dev/null
+++ b/startup/alias.template
@@ -0,0 +1 @@
+alias($(O), $(A))
diff --git a/startup/deployServiceIOC.sh b/startup/deployServiceIOC.sh
index a0651f6..9f3c359 100755
--- a/startup/deployServiceIOC.sh
+++ b/startup/deployServiceIOC.sh
@@ -6,9 +6,12 @@ fi
 
 if [[ $# -gt 0 ]] ; then
   EPICS_SRC=$1
+  EPICS_BASE=$2
+  E3_REQUIRE_VERSION=$3
+  LLRF_IOC_NAME=$4
 else
   echo "Usage: sudo deployServiceIOC.sh <e3 source directory> <epics base directory> <epics require version> <LLRF_IOC_NAME>"
-  echo "sudo deployServiceIOC.sh $EPICS_SRC $EPICS_BASE $E3_REQUIRE_VERSION"
+  echo "sudo deployServiceIOC.sh $EPICS_SRC $EPICS_BASE $E3_REQUIRE_VERSION $LLRF_IOC_NAME"
   exit
 fi
 
@@ -18,10 +21,10 @@ serviceNameGit=$EPICS_SRC/e3-sis8300llrf/startup/ioc@llrf.service
 #Prepare service and enable
 
 #Get EPICS base version and require version
-ver_base=$(echo $2 | cut -c13-18)
+ver_base=$(echo $EPICS_BASE | cut -c13-18)
 eval "sed -e 's/icslab-llrf/$hostName/'\
 	-e 's/<epics_base>/$ver_base/'\
-	-e 's/<req_version>/$3/'\
+	-e 's/<req_version>/$E3_REQUIRE_VERSION/'\
 	< $serviceNameGit" > $serviceName
 
 systemctl enable ioc@llrf.service
@@ -38,9 +41,10 @@ slots_fpga=$(ls /dev/sis8300-* | cut -f2 -d "-")
 if [ ${#slots_fpga} -lt 1 ] ; then 
   echo "Could not find SIS8300 digitiser board."
   echo "Board slot must be manually configured in $siteApp/llrf.cmd"
-  snippet="epicsEnvSet(\"LLRF_PREFIX\"     \"$4\" ) \\\n \
+  snippet="epicsEnvSet(\"LLRF_PREFIX\"     \"$LLRF_IOC_NAME\" ) \\\n \
 epicsEnvSet(\"LLRF_SLOT\"       \"<slot>\"    ) \\\n \
-iocshLoad $\(E3_CMD_TOP\)\/llrf.iocsh \\\n "
+iocshLoad $\(E3_CMD_TOP\)\/llrf.iocsh \\\n \
+iocshLoad $\(E3_CMD_TOP\)\/aliasing.iocsh \\\n"
   eval "sed -e $'s/<snippet>/$snippet/g' < $EPICS_SRC/e3-sis8300llrf/startup/llrf_template.cmd  > $siteApp/llrf.cmd" 
 else
   if [ ${#slots_fpga} -eq 1 ]; then
@@ -53,13 +57,15 @@ else
   for slot_fpga in $(ls /dev/sis8300-* | cut -f2 -d "-" | sort -n)
   do
     snippet="$snippet \\\n\
-epicsEnvSet(\"LLRF_PREFIX\"     \"$4$i\" ) \\\n \
+epicsEnvSet(\"LLRF_PREFIX\"     \"$LLRF_IOC_NAME$i\" ) \\\n \
 epicsEnvSet(\"LLRF_SLOT\"       \"$slot_fpga\"    ) \\\n \
-iocshLoad $\(E3_CMD_TOP\)\/llrf.iocsh \\\n "
+iocshLoad $\(E3_CMD_TOP\)\/llrf.iocsh \\\n \
+iocshLoad $\(E3_CMD_TOP\)\/aliasing$i.iocsh \\\n"
     i=$(($i+1))
   done
     #Populate digitiser slot and IOC Name in startup script.
-    eval "sed -e $'s/<snippet>/$snippet/g' < $EPICS_SRC/e3-sis8300llrf/startup/llrf_template.cmd  > $siteApp/llrf.cmd" 
+    eval "sed -e $'s/<snippet>/$snippet/g'\
+        < $EPICS_SRC/e3-sis8300llrf/startup/llrf_template.cmd  > $siteApp/llrf.cmd" 
 
 fi
 
@@ -72,7 +78,7 @@ if [ ${#pcie_enumeration} != 7 ] ; then
   echo "Therefore no timing configuration created."
   echo "# no timing configuration as no EVR detected on PCIe bus." > $siteApp/timing.iocsh 
 else
-  eval "sed -e 's/<B:D.F>/$pcie_enumeration/' -e 's/<LLRF_IOC_NAME>/$4/' < $EPICS_SRC/e3-sis8300llrf/startup/timing_template.iocsh" > "/iocs/sis8300llrf/timing.iocsh"
+  eval "sed -e 's/<B:D.F>/$pcie_enumeration/' -e 's/<LLRF_IOC_NAME>/$LLRF_IOC_NAME/' < $EPICS_SRC/e3-sis8300llrf/startup/timing_template.iocsh" > "/iocs/sis8300llrf/timing.iocsh"
   cp $EPICS_SRC/e3-sis8300llrf/startup/tr-sequencer.sh $siteApp/tr-sequencer.sh
 fi
 
@@ -80,3 +86,6 @@ if [ ! -L /etc/systemd/system/multi-user.target.wants/ioc@llrf.service ] ; then
   echo "ioc@llrf.service is not enabled."
 fi
 systemctl daemon-reload
+
+# Alias template
+cp alias.template $siteApp/alias.template
diff --git a/startup/llrf_template.iocsh b/startup/llrf_template.iocsh
index 77c580a..a858889 100644
--- a/startup/llrf_template.iocsh
+++ b/startup/llrf_template.iocsh
@@ -23,7 +23,7 @@ dbLoadRecords("sis8300Register.db", "PREFIX=$(LLRF_PREFIX), ASYN_PORT=$(LLRF_POR
 dbLoadRecords("sis8300noAO.db", "PREFIX=$(LLRF_PREFIX), ASYN_PORT=$(LLRF_PORT), AI_NELM=$(AI_SMNM_MAX)")
 dbLoadRecords("sis8300llrf-Register.db", "PREFIX=$(LLRF_PREFIX), ASYN_PORT=$(LLRF_PORT), REG_SCAN=2")
 
-
+iocshLoad "aliasing<iNum>.iocsh"
 epicsThreadSleep(1)
 # Configure the RTM for LLRF
 afterInit("dbpf $(LLRF_PREFIX):RTM 2 > /dev/null")
-- 
GitLab