[david@dusk iocLinux]$ ../../bin/linux-x86_64/stxm st.cmd
# Linux startup script
# For devIocStats
epicsEnvSet("ENGINEER","engineer")
epicsEnvSet("LOCATION","location")
< envPaths
epicsEnvSet("IOC","iocLinux")
epicsEnvSet("TOP","/opt/epics/synApps_5_8/ioc/stxm")
epicsEnvSet("SUPPORT","/opt/epics/synApps_5_8/support")
epicsEnvSet("EPICS_BASE","/opt/epics/base")
epicsEnvSet("ALIVE","/opt/epics/synApps_5_8/support/alive-1-0")
epicsEnvSet("ALLEN_BRADLEY","/opt/epics/synApps_5_8/support/allenBradley-2-3")
epicsEnvSet("AREA_DETECTOR","/opt/epics/synApps_5_8/support/areaDetector")
epicsEnvSet("ADCORE","/opt/epics/synApps_5_8/support/areaDetector/ADCore")
epicsEnvSet("ADBINARIES","/opt/epics/synApps_5_8/support/areaDetector/ADBinaries")
epicsEnvSet("ASYN","/opt/epics/synApps_5_8/support/asyn-4-30")
epicsEnvSet("AUTOSAVE","/opt/epics/synApps_5_8/support/autosave-5-7-1")
epicsEnvSet("BUSY","/opt/epics/synApps_5_8/support/busy-1-6-1")
epicsEnvSet("CALC","/opt/epics/synApps_5_8/support/calc-3-4-2-1")
epicsEnvSet("CAMAC","/opt/epics/synApps_5_8/support/camac-2-7")
epicsEnvSet("CAPUTRECORDER","/opt/epics/synApps_5_8/support/caputRecorder-1-5-1")
epicsEnvSet("DAC128V","/opt/epics/synApps_5_8/support/dac128V-2-8")
epicsEnvSet("DELAYGEN","/opt/epics/synApps_5_8/support/delaygen-1-1-1")
epicsEnvSet("DEVIOCSTATS","/opt/epics/synApps_5_8/support/devIocStats-3-1-13")
epicsEnvSet("IP","/opt/epics/synApps_5_8/support/ip-2-17")
epicsEnvSet("IP330","/opt/epics/synApps_5_8/support/ip330-2-8")
epicsEnvSet("IPAC","/opt/epics/synApps_5_8/support/ipac-2-14")
epicsEnvSet("IPUNIDIG","/opt/epics/synApps_5_8/support/ipUnidig-2-10")
epicsEnvSet("LOVE","/opt/epics/synApps_5_8/support/love-3-2-5")
epicsEnvSet("MCA","/opt/epics/synApps_5_8/support/mca-7-6")
epicsEnvSet("MEASCOMP","/opt/epics/synApps_5_8/support/measComp-1-1")
epicsEnvSet("MODBUS","/opt/epics/synApps_5_8/support/modbus-2-7")
epicsEnvSet("MOTOR","/opt/epics/synApps_5_8/support/motor-6-9")
epicsEnvSet("OPTICS","/opt/epics/synApps_5_8/support/optics-2-9-3")
epicsEnvSet("SNCSEQ","/opt/epics/synApps_5_8/support/seq-2-2-3")
epicsEnvSet("SOFTGLUE","/opt/epics/synApps_5_8/support/softGlue-2-4-3")
epicsEnvSet("SSCAN","/opt/epics/synApps_5_8/support/sscan-2-10")
epicsEnvSet("STD","/opt/epics/synApps_5_8/support/std-3-4")
epicsEnvSet("STREAM","/opt/epics/synApps_5_8/support/stream-2-6a")
epicsEnvSet("VAC","/opt/epics/synApps_5_8/support/vac-1-5-1")
epicsEnvSet("VME","/opt/epics/synApps_5_8/support/vme-2-8-2")
epicsEnvSet("XXX","/opt/epics/synApps_5_8/support/xxx-5-8")
# save_restore.cmd needs the full path to the startup directory, which
# envPaths currently does not provide
epicsEnvSet(STARTUP,/opt/epics/synApps_5_8/ioc/stxm/iocBoot/iocLinux)
# Increase size of buffer for error logging from default 1256
errlogInit(20000)
# Specify largest array CA will transport
# Note for N doubles, need N*8 bytes+some overhead
epicsEnvSet EPICS_CA_MAX_ARRAY_BYTES 64010
epicsEnvSet ("STREAM_PROTOCOL_PATH", ".:../protocols")
################################################################################
# Tell EPICS all about the record types, device-support modules, drivers,
# etc. in the software we just loaded (stxm.munch)
dbLoadDatabase("../../dbd/iocstxmLinux.dbd")
iocstxmLinux_registerRecordDeviceDriver(pdbbase)
### save_restore setup
< save_restore.cmd
# BEGIN save_restore.cmd ------------------------------------------------------
### save_restore setup
# status PVs
#save_restoreSet_UseStatusPVs(1)
save_restoreSet_status_prefix("stxm:")
dbLoadRecords("/opt/epics/synApps_5_8/support/autosave-5-7-1/asApp/Db/save_restoreStatus.db", "P=stxm:, DEAD_SECONDS=5")
# Ok to save/restore save sets with missing values (no CA connection to PV)?
save_restoreSet_IncompleteSetsOk(1)
# Save dated backup files?
save_restoreSet_DatedBackupFiles(1)
# Number of sequenced backup files to write
save_restoreSet_NumSeqFiles(3)
# Time interval between sequenced backups
save_restoreSet_SeqPeriodInSeconds(300)
# Ok to retry connecting to PVs whose initial connection attempt failed?
save_restoreSet_CAReconnect(1)
# Time interval in seconds between forced save-file writes. (-1 means forever).
# This is intended to get save files written even if the normal trigger mechanism is broken.
save_restoreSet_CallbackTimeout(-1)
# specify where save files should be
set_savefile_path("/opt/epics/synApps_5_8/ioc/stxm/iocBoot/iocLinux", "autosave")
###
# specify what save files should be restored. Note these files must be
# in the directory specified in set_savefile_path(), or, if that function
# has not been called, from the directory current when iocInit is invoked
set_pass0_restoreFile("auto_positions.sav", "P=stxm:")
# Save positions every five seconds
doAfterIocInit("create_monitor_set('auto_positions.req',5,'P=stxm:')")
set_pass0_restoreFile("auto_settings.sav", "P=stxm:")
set_pass1_restoreFile("auto_settings.sav", "P=stxm:")
# save settings every thirty seconds
doAfterIocInit("create_monitor_set('auto_settings.req',30,'P=stxm:')")
# Note that you can reload these sets after creating them: e.g.,
# reload_monitor_set("auto_settings.req",30,"P=stxm:")
# Note that you can restore a .sav file without also autosaving to it.
#set_pass0_restoreFile("myInitData.sav")
#set_pass1_restoreFile("myInitData.sav")
# Also, you can restore a .sav file that contains macros. (autosave R5-4-2)
#set_pass0_restoreFile("myGenericData.sav", "P=stxm:")
#set_pass1_restoreFile("myGenericData.sav", "P=stxm:")
###
# specify directories in which to to search for included request files
set_requestfile_path("/opt/epics/synApps_5_8/ioc/stxm/iocBoot/iocLinux", "")
set_requestfile_path("/opt/epics/synApps_5_8/ioc/stxm/iocBoot/iocLinux", "autosave")
set_requestfile_path("/opt/epics/synApps_5_8/support/areaDetector", "ADApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/areaDetector/ADCore", "ADApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/autosave-5-7-1", "asApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/busy-1-6-1", "busyApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/calc-3-4-2-1", "calcApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/camac-2-7", "camacApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/caputRecorder-1-5-1", "caputRecorderApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/dac128V-2-8", "dac128VApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/delaygen-1-1-1", "delaygenApp/Db")
macLib: macro DXP is undefined (expanding string set_requestfile_path("$(DXP)", "dxpApp/Db"))
set_requestfile_path("/opt/epics/synApps_5_8/support/ip-2-17", "ipApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/ip330-2-8", "ip330App/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/ipUnidig-2-10", "ipUnidigApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/love-3-2-5", "loveApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/mca-7-6", "mcaApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/measComp-1-1", "measCompApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/modbus-2-7", "modbusApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/motor-6-9", "motorApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/optics-2-9-3", "opticsApp/Db")
macLib: macro QUADEM is undefined (expanding string set_requestfile_path("$(QUADEM)", "quadEMApp/Db"))
set_requestfile_path("/opt/epics/synApps_5_8/support/sscan-2-10", "sscanApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/softGlue-2-4-3", "softGlueApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/std-3-4", "stdApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/vac-1-5-1", "vacApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/support/vme-2-8-2", "vmeApp/Db")
set_requestfile_path("/opt/epics/synApps_5_8/ioc/stxm", "stxmApp/Db")
# Debug-output level
save_restoreSet_Debug(0)
# Tell autosave to automatically build built_settings.req and
# built_positions.req from databases and macros supplied to dbLoadRecords()
# (and dbLoadTemplate(), which calls dbLoadRecords()).
epicsEnvSet("BUILT_SETTINGS", "built_settings.req")
epicsEnvSet("BUILT_POSITIONS", "built_positions.req")
autosaveBuild("built_settings.req", "_settings.req", 1)
pretending to register a dbLoadRecords hook
autosaveBuild("built_positions.req", "_positions.req", 1)
# END save_restore.cmd --------------------------------------------------------
# Access Security
dbLoadRecords("/opt/epics/synApps_5_8/ioc/stxm/stxmApp/Db/Security_Control.db","P=stxm:")
asSetFilename("/opt/epics/synApps_5_8/ioc/stxm/iocBoot/accessSecurity.acf")
asSetSubstitutions("P=stxm:")
# soft scaler for testing
< softScaler.cmd
# soft scaler
dbLoadRecords("/opt/epics/synApps_5_8/support/asyn-4-30/db/asynRecord.db","P=stxm:,R=asynScaler,PORT=scaler1Port,ADDR=0,OMAX=0,IMAX=0")
# drvScalerSoftConfigure(char *portName, int maxChans, char *pvTemplate)
drvScalerSoftConfigure("scaler1Port", 8, "stxm:scaler1:s%d")
dbLoadRecords("/opt/epics/synApps_5_8/support/std-3-4/stdApp/Db/scaler.db","P=stxm:,S=scaler1,OUT=@asyn(scaler1Port 0 0),DTYP=Asyn Scaler,FREQ=10000000")
dbLoadRecords("/opt/epics/synApps_5_8/support/std-3-4/stdApp/Db/scalerSoftCtrl.db","P=stxm:,Q=scaler1:,SCALER=stxm:scaler1")
# user-assignable ramp/tweak
dbLoadRecords("/opt/epics/synApps_5_8/support/std-3-4/stdApp/Db/ramp_tweak.db","P=stxm:,Q=rt1")
### Motors
dbLoadTemplate("motor.substitutions.MAXnet")
dbLoadTemplate: error opening sub file motor.substitutions.MAXnet
#dbLoadTemplate("MAXnetAux.substitutions")
# MAXnet IP
#drvAsynIPPortConfigure("MAXNET","maxnet-ip-address:23",0,0,0)
# MAXnet Serial
drvAsynSerialPortConfigure("MAXNET","/dev/ttyUSB0",0,0,0)
asynSetOption("MAXNET",0,"baud","115200")
asynSetOption("MAXNET",0,"bits","8")
asynSetOption("MAXNET",0,"parity","none")
asynSetOption("MAXNET",0,"crtscts","Y")
dbLoadRecords("/opt/epics/synApps_5_8/support/asyn-4-30/db/asynRecord.db","P=oms:,R=maxnet,PORT=MAXNET,ADDR=0,OMAX=0,IMAX=0")
### Uncomment one of the following two lines:
#asynOctetSetInputEos("MAXNET",0,"\n\r")
asynOctetSetInputEos("MAXNET",0,"\n")
asynOctetSetOutputEos("MAXNET",0,"\n")
# omsMAXnetConfig(portName, /* MAXnet Motor Asyn Port name */
# numAxes, /* Number of axes this controller supports */
# serialPortName, /* MAXnet Serial Asyn Port name */
# movingPollPeriod, /* Time to poll (msec) when an axis is in motion */
# idlePollPeriod, /* Time to poll (msec) when an axis is idle. 0 for no polling */
# initString) /* Init String sent to card */
omsMAXnetConfig("MAXNET1" , 10, "MAXNET", 10, 1000, "")
st.cmd line 67: Command omsMAXnetConfig not found.
### Scan-support software
# crate-resident scan. This executes 1D, 2D, 3D, and 4D scans, and caches
# 1D data, but it doesn't store anything to disk. (See 'saveData' below for that.)
dbLoadRecords("/opt/epics/synApps_5_8/support/sscan-2-10/sscanApp/Db/standardScans.db","P=stxm:,MAXPTS1=1000,MAXPTS2=1000,MAXPTS3=1000,MAXPTS4=1000,MAXPTSH=1000")
dbLoadRecords("/opt/epics/synApps_5_8/support/sscan-2-10/sscanApp/Db/saveData.db","P=stxm:")
# Run this after iocInit:
doAfterIocInit("saveData_Init(saveData.req, 'P=stxm:')")
dbLoadRecords("/opt/epics/synApps_5_8/support/sscan-2-10/sscanApp/Db/scanProgress.db","P=stxm:scanProgress:")
# Run this after iocInit:
doAfterIocInit("seq &scanProgress, 'S=stxm:, P=stxm:scanProgress:'")
# configMenu example.
dbLoadRecords("/opt/epics/synApps_5_8/support/autosave-5-7-1/asApp/Db/configMenu.db","P=stxm:,CONFIG=scan1")
# Note that the request file MUST be named $(CONFIG)Menu.req
# If the macro CONFIGMENU is defined with any value, backup (".savB") and
# sequence files (".savN") will not be written. We don't want these for configMenu.
# Run this after iocInit:
doAfterIocInit("create_manual_set('scan1Menu.req','P=stxm:,CONFIG=scan1,CONFIGMENU=1')")
# You could make scan configurations read-only:
#dbLoadRecords("$(AUTOSAVE)/asApp/Db/configMenu.db","P=stxm:,CONFIG=scan1,ENABLE_SAVE=0")
# read-only configMenu example. (Read-only, because we're not calling create_manual_set().)
#dbLoadRecords("$(AUTOSAVE)/asApp/Db/configMenu.db","P=stxm:,CONFIG=scan2")
# A set of scan parameters for each positioner. This is a convenience
# for the user. It can contain an entry for each scannable thing in the
# crate.
dbLoadTemplate("scanParms.substitutions")
### Stuff for user programming ###
< calc.cmd
### Stuff for user programming ###
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userCalcs10.db","P=stxm:")
appendToFile("built_settings.req", '$(P)userCalcEnable')
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userCalcOuts10.db","P=stxm:")
appendToFile("built_settings.req", '$(P)userCalcOutEnable')
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userCalcOuts10more.db","P=stxm:,N1=11,N2=12,N3=13,N4=14,N5=15,N6=16,N7=17,N8=18,N9=19,N10=20")
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userStringCalcs10.db","P=stxm:")
appendToFile("built_settings.req", '$(P)userStringCalcEnable')
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userArrayCalcs10.db","P=stxm:,N=8000")
appendToFile("built_settings.req", '$(P)userArrayCalcEnable')
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userTransforms10.db","P=stxm:")
appendToFile("built_settings.req", '$(P)userTranEnable')
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userAve10.db","P=stxm:")
# string sequence (sseq) records
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/userStringSeqs10.db","P=stxm:")
appendToFile("built_settings.req", '$(P)userStringSeqEnable')
# editSseq - edit any sseq or seq record
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/editSseq.db", "P=stxm:,Q=ES:")
doAfterIocInit("seq &editSseq, 'P=stxm:,Q=ES:'")
# interpolation
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/interp.db", "P=stxm:,N=2000")
dbLoadRecords("/opt/epics/synApps_5_8/support/calc-3-4-2-1/calcApp/Db/interpNew.db", "P=stxm:,Q=1,N=2000")
# pvHistory (in-crate archive of up to three PV's)
dbLoadRecords("/opt/epics/synApps_5_8/support/std-3-4/stdApp/Db/pvHistory.db","P=stxm:,N=1,MAXSAMPLES=1440")
# busy record
dbLoadRecords("/opt/epics/synApps_5_8/support/busy-1-6-1/busyApp/Db/busyRecord.db", "P=stxm:,R=mybusy")
dbLoadRecords("/opt/epics/synApps_5_8/support/busy-1-6-1/busyApp/Db/busyRecord.db", "P=stxm:,R=mybusy2")
# Soft function generator
#dbLoadRecords("$(CALC)/calcApp/Db/FuncGen.db","P=stxm:,Q=fgen,OUT=stxm:m7.VAL")
# Slow feedback
dbLoadTemplate "pid_slow.substitutions"
dbLoadTemplate "async_pid_slow.substitutions"
#dbLoadTemplate "fb_epid.substitutions"
# Miscellaneous PV's, such as burtResult
dbLoadRecords("/opt/epics/synApps_5_8/support/std-3-4/stdApp/Db/misc.db","P=stxm:")
# devIocStats
dbLoadRecords("/opt/epics/synApps_5_8/support/devIocStats-3-1-13/db/iocAdminSoft.db","IOC=stxm")
### Load database record for alive heartbeating support.
# RHOST specifies the IP address that receives the heartbeats.
#dbLoadRecords("$(ALIVE)/aliveApp/Db/alive.db", "P=stxm:,RHOST=X.X.X.X")
###############################################################################
iocInit
Starting iocInit
############################################################################
## EPICS R3.15.5
## EPICS Base built Jan 26 2017
############################################################################
reboot_restore: entry for file 'auto_positions.sav'
reboot_restore: Found filename 'auto_positions.sav' in restoreFileList.
*** restoring from '/opt/epics/synApps_5_8/ioc/stxm/iocBoot/iocLinux/autosave/auto_positions.sav' at initHookState 6 (before record/device init) ***
reboot_restore: done with file 'auto_positions.sav'
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from '/opt/epics/synApps_5_8/ioc/stxm/iocBoot/iocLinux/autosave/auto_settings.sav' at initHookState 6 (before record/device init) ***
reboot_restore: done with file 'auto_settings.sav'
recDynLinkOut: waiting for CA context
reboot_restore: entry for file 'auto_settings.sav'
reboot_restore: Found filename 'auto_settings.sav' in restoreFileList.
*** restoring from '/opt/epics/synApps_5_8/ioc/stxm/iocBoot/iocLinux/autosave/auto_settings.sav' at initHookState 7 (after record/device init) ***
reboot_restore: done with file 'auto_settings.sav'
recDynLinkOut: got CA context
iocRun: All initialization complete
create_monitor_set('auto_positions.req',5,'P=stxm:')
create_monitor_set('auto_settings.req',30,'P=stxm:')
auto_positions.sav: 0 of 0 PV's connected
saveData_Init(saveData.req, 'P=stxm:')
saveData: message queue created
saveData:maxAllowedRetries = 10
saveData:retryWaitInSecs = 15
seq &scanProgress, 'S=stxm:, P=stxm:scanProgress:'
sevr=info Sequencer release 2.2.3, compiled Thu Jan 26 13:28:16 2017
sevr=info Spawning sequencer program "scanProgress", thread 0x249e420: "scanProgress"
sevr=info scanProgress[0]: all channels connected & received 1st monitor
create_manual_set('scan1Menu.req','P=stxm:,CONFIG=scan1,CONFIGMENU=1')
seq &editSseq, 'P=stxm:,Q=ES:'
sevr=info Sequencer release 2.2.3, compiled Thu Jan 26 13:28:16 2017
sevr=info Spawning sequencer program "editSseq", thread 0x24b6610: "editSseq"
sevr=info editSseq[0]: all channels connected & received 1st monitor
sevr=minor ca_array_get_callback( typeToCA(type), count, var->chid, pvCaGetHandler, arg): Virtual circuit disconnect
###############################################################################
# write all the PV names to a local file
dbl > dbl-all.txt
# Report states of database CA links
dbcar(*,1)
CA links in all records
stxm:pid_slow.INP --> stxm:IP330_1 (0, 0)
stxm:pid_slow.OUTL --> stxm:DAC3_1 (0, 0)
stxm:pid_slowStop2.OUT --> stxm:DAC3_1 (0, 0)
stxm:pid_slowOUT_tweak_down.INPB --> stxm:DAC3_1 (0, 0)
stxm:pid_slowOUT_tweak_down.OUT --> stxm:DAC3_1 (0, 0)
stxm:pid_slowOUT_tweak_up.INPB --> stxm:DAC3_1 (0, 0)
stxm:pid_slowOUT_tweak_up.OUT --> stxm:DAC3_1 (0, 0)
stxm:history1_PV1_DESC.DOL --> .DESC (0, 0)
stxm:history1_PV2_DESC.DOL --> .DESC (0, 0)
stxm:history1_PV3_DESC.DOL --> .DESC (0, 0)
Total 270 CA links; 260 connected, 10 not connected.
0 can't read, 0 can't write. (0 disconnects, 0 writes prohibited)
# print the time our boot was finished
date
2017/02/03 08:57:44.475244
epics> scan1Menu.sav: 365 of 365 PV's connected
auto_settings.sav: 6 of 6 PV's connected