Files
startup/startup.script_common
2025-07-09 11:40:30 +02:00

118 lines
4.6 KiB
Plaintext

# This is the common part of all vxWorks startup scripts
# It is included by all generated scripts
# The following variable must be set before:
# EPICS the epics release (e.g "R7.0.7")
EPICS_MODULES = "/ioc/modules"
# Find a better way later to know current require version
REQUIRE_VERSION="3.3.4"
# autoSR location
putenv "SRBASE=/ioc/data"
# Create some path variables
sprintf STRINGBUFFER, "EPICS_DRIVER_PATH=.:bin/%s_%s:bin:snl:../bin:%s", EPICS, EPICS_HOST_ARCH, EPICS_MODULES
putenv STRINGBUFFER
STREAM_PROTOCOL_DIR=malloc(80)
sprintf STREAM_PROTOCOL_DIR, "%s/cfg", HOME
# Need to branch a few times on EPICS base release
R3 = strncmp(EPICS,"R3.",3)==0
R7 = strncmp(EPICS,"R7.",3)==0
# Load PVA only with more than 32 MB RAM
PVA = R7 && (PVA||(sysPhysMemTop()&0xfc000000)) && !getenv("NOPVA")
# Time server (must be set before loading iocCoreLibrary.munch for 3.14.12)
# Need EPICS_TS_FORCE_NTPTIME for 7.0
putenv "EPICS_TS_NTP_INET=129.129.190.1"
putenv "EPICS_TS_FORCE_NTPTIME=YES"
# Load EPICS system core (different names for different EPICS versions)
EPICS_APP = PVA ? "softIocPVA.munch" : "softIoc.munch"
sprintf STRINGBUFFER, "/epics/base-%s/bin/%s/%s", EPICS+1, EPICS_HOST_ARCH, EPICS_APP
printf "loading %s\n",STRINGBUFFER
sprintf STRINGBUFFER,"%s",ld(0,0,STRINGBUFFER)?"":"shellScriptAbort"
execute STRINGBUFFER
# Setup Time (must be set after loading iocCoreLibrary.munch)
# 2025:
putenv "EPICS_TIMEZONE=MET::-60:033102:102703"
putenv "TIMEZONE=MET::-60:033102:102703"
putenv "EPICS_TS_MIN_WEST=-60"
# Allow backward compatible non-monotonic breaktables
dbBptNotMonotonic=1
# Quiet warnings about unresolved macros in comments
dbQuietMacroWarnings=1
# Start Logging
putenv getenv("EPICS_IOC_LOG_INET") ? "" : "EPICS_IOC_LOG_INET=gfa-syslog-03"
putenv getenv("EPICS_IOC_LOG_PORT") ? "" : "EPICS_IOC_LOG_PORT=1514"
sprintf STRINGBUFFER, "%s ", IOC
iocLogPrefix STRINGBUFFER
iocLogInit
errlogPrintf "Starting EPICS %s\n", EPICS
sprintf STRINGBUFFER, "dbLoadDatabase \"/epics/base-%s/dbd/softIoc%s.dbd\"", EPICS+1, PVA ? "PVA" : ""
execute STRINGBUFFER
sprintf STRINGBUFFER, "softIoc%s_registerRecordDeviceDriver pdbbase", PVA ? "PVA" : ""
execute STRINGBUFFER
# load "require"
sprintf STRINGBUFFER, "require_VERSION=%s", getenv("require_VERSION") ? getenv("require_VERSION") : REQUIRE_VERSION
putenv STRINGBUFFER
sprintf STRINGBUFFER, "require_DIR=%s/require/%s/%s/", EPICS_MODULES, getenv("require_VERSION"), EPICS
putenv STRINGBUFFER
sprintf STRINGBUFFER, "%s/lib/%s/requireLib.munch", getenv("require_DIR"), EPICS_HOST_ARCH
ld 0, 0, STRINGBUFFER
registerModule "require", getenv("require_VERSION"), getenv("require_DIR")
require_registerRecordDeviceDriver pdbbase
require "utilities", getenv("utilities_VERSION")
require "misc", getenv("misc_VERSION")
# caPutLog
putenv "EPICS_CA_PUT_LOG_ADDR=gfa-syslog-03:1515"
require "caPutLog", getenv("caPutLog_VERSION") ? getenv("caPutLog_VERSION") : "ifexists"
# Run Channel Access only on 1st network port
putenv bootInfo("EPICS_CAS_INTF_ADDR_LIST=%e")
# Set up CA search lists for different networks
IP_ADDR=bootInfo("%e")
# Office (only official EPICS subnets, not SLS beamlines!)
ifEnvSet IP_ADDR, "~129.129.130.*", "EPICS_CA_ADDR_LIST", "129.129.131.255 129.129.137.255"
ifEnvSet IP_ADDR, "~129.129.131.*", "EPICS_CA_ADDR_LIST", "129.129.130.255 129.129.137.255"
ifEnvSet IP_ADDR, "~129.129.137.*", "EPICS_CA_ADDR_LIST", "129.129.130.255 129.129.131.255"
# SLS machine network
ifEnvSet IP_ADDR, "~172.22.*", "EPICS_CA_ADDR_LIST", "172.22.4.255 172.22.5.255 172.22.6.255 172.22.7.255 172.22.120.255 172.22.121.255"
ifEnvSet IP_ADDR, "~172.22.*", "EPICS_CA_AUTO_ADDR_LIST", "NO"
ifEnvSet IP_ADDR, "~172.22.*", "EPICS_CAS_BEACON_ADDR_LIST", "172.22.4.255 172.22.5.255 172.22.6.255 172.22.7.255 172.22.120.255 172.22.121.255"
ifEnvSet IP_ADDR, "~172.22.*", "EPICS_CAS_BEACON_AUTO_ADDR_LIST", "NO"
# Metro Lab
ifEnvSet IP_ADDR, "~129.129.128.*", "EPICS_CA_ADDR_LIST", "129.129.128.255"
ifEnvSet IP_ADDR, "~129.129.128.*", "EPICS_CA_AUTO_ADDR_LIST", "NO"
# HIPA
ifEnvSet IP_ADDR, "~172.19.*", "EPICS_CA_ADDR_LIST", "172.19.10.255 172.19.30.255 172.19.32.255"
ifEnvSet IP_ADDR, "~172.19.*", "EPICS_CA_AUTO_ADDR_LIST", "NO"
ifEnvSet IP_ADDR, "~172.19.*", "EPICS_CAS_BEACON_ADDR_LIST", "172.19.10.255 172.19.30.255 172.19.32.255"
ifEnvSet IP_ADDR, "~172.19.*", "EPICS_CAS_BEACON_AUTO_ADDR_LIST", "NO"
# PROSCAN
ifEnvSet IP_ADDR, "~172.25.*", "EPICS_CA_ADDR_LIST", "172.25.60.255 172.25.11.255"
ifEnvSet IP_ADDR, "~172.25.*", "EPICS_CA_AUTO_ADDR_LIST", "NO"
ifEnvSet IP_ADDR, "~172.25.*", "EPICS_CAS_BEACON_ADDR_LIST", "172.25.60.255 172.25.11.255"
ifEnvSet IP_ADDR, "~172.25.*", "EPICS_CAS_BEACON_AUTO_ADDR_LIST", "NO"
# End of startup.script_common