diff --git a/iocBoot/iocLinux/Makefile b/iocBoot/iocLinux/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..cec915677152f5d23825ec3bd57ca9757622f311 --- /dev/null +++ b/iocBoot/iocLinux/Makefile @@ -0,0 +1,5 @@ +TOP = ../.. +include $(TOP)/configure/CONFIG +ARCH = linux-x86 +TARGETS = envPaths +include $(TOP)/configure/RULES.ioc diff --git a/iocBoot/iocLinux/README b/iocBoot/iocLinux/README new file mode 100644 index 0000000000000000000000000000000000000000..1060b5e6b9aff50dcf088d243a1fbe242fd352bb --- /dev/null +++ b/iocBoot/iocLinux/README @@ -0,0 +1,5 @@ +Assuming the EPICS_HOST_ARCH environment variable is set correctly, +start the ioc from this directory by executing the following command. + +../../bin/${EPICS_HOST_ARCH}/xxx st.cmd + diff --git a/iocBoot/iocLinux/auto_positions.req b/iocBoot/iocLinux/auto_positions.req new file mode 100644 index 0000000000000000000000000000000000000000..5e89c536b6f99aea3213faf4af534427df4b4ee6 --- /dev/null +++ b/iocBoot/iocLinux/auto_positions.req @@ -0,0 +1,16 @@ +$(P)m1.OFF +$(P)m1.DVAL +$(P)m2.OFF +$(P)m2.DVAL +$(P)m3.OFF +$(P)m3.DVAL +$(P)m4.OFF +$(P)m4.DVAL +$(P)m5.OFF +$(P)m5.DVAL +$(P)m6.OFF +$(P)m6.DVAL +$(P)m7.OFF +$(P)m7.DVAL +$(P)m8.OFF +$(P)m8.DVAL diff --git a/iocBoot/iocLinux/auto_settings.req b/iocBoot/iocLinux/auto_settings.req new file mode 100644 index 0000000000000000000000000000000000000000..bba57ad789a9d27c2d4bb5049223b6ff7e3140ca --- /dev/null +++ b/iocBoot/iocLinux/auto_settings.req @@ -0,0 +1,41 @@ +file motor_settings.req P=$(P),M=m1 + +file scanParms_settings.req P=$(P),M=m1 + +file table_settings.req P=$(P),T=table1,Q=table1 + +file scan_settings.req P=$(P),S=scan1 +file scan_settings.req P=$(P),S=scan2 +file scan_settings.req P=$(P),S=scan3 +file scan_settings.req P=$(P),S=scan4 +file scan_settings.req P=$(P),S=scanH + +# Kohzu monochromator +#$(P)BraggHAO.VAL +#$(P)BraggKAO.VAL +#$(P)BraggLAO.VAL +#$(P)BraggAAO.VAL +#$(P)BraggTypeMO.VAL +#$(P)KohzuMode2MO.VAL +#$(P)Kohzu_yOffsetAO.VAL + +file userCalcs10_settings.req P=$(P) +file userCalcN_settings.req P=$(P),N=I_Detector + +file saveData_settings.req P=$(P) + +file userTransforms10_settings.req P=$(P) + +file userStringCalcs10_settings.req P=$(P) + +# string-sequence records +file sseq_settings.req P=$(P),S=Sseq1 +file sseq_settings.req P=$(P),S=Sseq2 +file sseq_settings.req P=$(P),S=Sseq3 + + +# 4-step measurement +file auto_4step_settings.req P=$(P),Q=4step + +file userAve10_settings.req P=$(P) + diff --git a/iocBoot/iocLinux/envPaths b/iocBoot/iocLinux/envPaths new file mode 100644 index 0000000000000000000000000000000000000000..164e129f69e2dd8a0c34237ccc936779f086e9c0 --- /dev/null +++ b/iocBoot/iocLinux/envPaths @@ -0,0 +1,27 @@ +epicsEnvSet(ARCH,"linux-x86") +epicsEnvSet(IOC,"iocLinux") +epicsEnvSet(TOP,"/home/oxygen4/MOONEY/epics/synApps_5_1/support/xxx") +epicsEnvSet(SUPPORT,"/home/oxygen/MOONEY/epics/synApps_5_1/support") +epicsEnvSet(ALLEN_BRADLEY,"/home/oxygen/MOONEY/epics/synApps_5_1/support/allenBradley/2-1") +epicsEnvSet(ASYN,"/home/oxygen/MOONEY/epics/synApps_5_1/support/asyn/4-2") +epicsEnvSet(AUTOSAVE,"/home/oxygen/MOONEY/epics/synApps_5_1/support/autosave/cvs") +epicsEnvSet(CALC,"/home/oxygen/MOONEY/epics/synApps_5_1/support/calc/2-4") +epicsEnvSet(CAMAC,"/home/oxygen/MOONEY/epics/synApps_5_1/support/camac/cvs") +epicsEnvSet(CCD,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ccd/cvs") +epicsEnvSet(DAC128V,"/home/oxygen/MOONEY/epics/synApps_5_1/support/dac128V/cvs") +epicsEnvSet(DXP,"/home/oxygen/MOONEY/epics/synApps_5_1/support/dxp/cvs") +epicsEnvSet(GENSUB,"/home/oxygen/MOONEY/epics/synApps_5_1/support/genSub/1-6") +epicsEnvSet(IP,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ip/2-4") +epicsEnvSet(IP330,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ip330/cvs") +epicsEnvSet(IPUNIDIG,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ipUnidig/cvs") +epicsEnvSet(IPAC,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ipac/2-8") +epicsEnvSet(MCA,"/home/oxygen/MOONEY/epics/synApps_5_1/support/mca/cvs") +epicsEnvSet(MOTOR,"/home/oxygen/MOONEY/epics/synApps_5_1/support/motor/cvs") +epicsEnvSet(OPTICS,"/home/oxygen/MOONEY/epics/synApps_5_1/support/optics/2-4") +epicsEnvSet(QUADEM,"/home/oxygen/MOONEY/epics/synApps_5_1/support/quadEM/cvs") +epicsEnvSet(SNCSEQ,"/home/oxygen/MOONEY/epics/synApps_5_1/support/seq/2-0-9") +epicsEnvSet(SSCAN,"/home/oxygen/MOONEY/epics/synApps_5_1/support/sscan/cvs") +epicsEnvSet(STD,"/home/oxygen/MOONEY/epics/synApps_5_1/support/std/2-4") +epicsEnvSet(VME,"/home/oxygen/MOONEY/epics/synApps_5_1/support/vme/cvs") +epicsEnvSet(VXSTATS,"/home/oxygen/MOONEY/epics/synApps_5_1/support/vxStats/cvs") +epicsEnvSet(EPICS_BASE,"/home/oxygen/MOONEY/epics/base-3.14.7") diff --git a/iocBoot/iocLinux/run b/iocBoot/iocLinux/run new file mode 100755 index 0000000000000000000000000000000000000000..001877b6aba04854d4dfb1896e8a1eda54d3c16e --- /dev/null +++ b/iocBoot/iocLinux/run @@ -0,0 +1 @@ +../../bin/${EPICS_HOST_ARCH}/xxx st.cmd diff --git a/iocBoot/iocLinux/saveData.req b/iocBoot/iocLinux/saveData.req new file mode 100644 index 0000000000000000000000000000000000000000..6eaff4e171705167bd1c68f42c9db0cfcf4dc2c6 --- /dev/null +++ b/iocBoot/iocLinux/saveData.req @@ -0,0 +1,40 @@ +[prefix] +$(P) + +[status] +$(P)saveData_status + +[message] +$(P)saveData_message + +[filename] +$(P)saveData_fileName + +[counter] # scan counter +$(P)saveData_scanNumber + +[fileSystem] # scan file system +$(P)saveData_fileSystem + +[subdir] # scan file subdirectory +$(P)saveData_subDir + +[fullPathName] +$(P)saveData_fullPathName + +[realTime1D] # if nonzero, write 1D data as it comes in +$(P)saveData_realTime1D + +[scanRecord] # specify scan records to be monitored +$(P)scanH +$(P)scan1 +$(P)scan2 +$(P)scan3 +$(P)scan4 + +[extraPV] +$(P)userCalc1.CALC "string" +$(P)saveData_realTime1D "enum" +$(P)saveData_scanNumber "long" +$(P)saveData_fileSystem "filesystem" +$(P)scan1.P1SM "scan mode" diff --git a/iocBoot/iocLinux/save_restore.cmd b/iocBoot/iocLinux/save_restore.cmd new file mode 100644 index 0000000000000000000000000000000000000000..6aadbca37dde80e67df7775a6ca077e3e92b262d --- /dev/null +++ b/iocBoot/iocLinux/save_restore.cmd @@ -0,0 +1,56 @@ +### save_restore setup +# +# The rest this file does not require modification for standard use, but... +# If you want save_restore to manage its own NFS mount, specify the name and +# IP address of the file server to which save files should be written. +# This currently is supported only on vxWorks. +#save_restoreSet_NFSHost("oxygen", "164.54.52.4") + +# status-PV prefix +save_restoreSet_status_prefix("xxx:") +# Debug-output level +save_restoreSet_Debug(0) + +# 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) + +# specify where save files should be +set_savefile_path("$(STARTUP)", "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") +set_pass0_restoreFile("auto_settings.sav") +set_pass1_restoreFile("auto_settings.sav") + +# specify directories in which to to search for included request files +# Note cdCommands defines 'startup', but envPaths does not +set_requestfile_path("$(STARTUP)", "") +set_requestfile_path("$(STARTUP)", "autosave") +set_requestfile_path("$(AUTOSAVE)", "asApp/Db") +set_requestfile_path("$(CALC)", "calcApp/Db") +#set_requestfile_path("$(CAMAC)", "camacApp/Db") +set_requestfile_path("$(CCD)", "ccdApp/Db") +set_requestfile_path("$(DAC128V)", "dac128VApp/Db") +set_requestfile_path("$(DXP)", "dxpApp/Db") +set_requestfile_path("$(IP)", "ipApp/Db") +set_requestfile_path("$(IP330)", "ip330App/Db") +set_requestfile_path("$(IPUNIDIG)", "ipUnidigApp/Db") +#set_requestfile_path("$(LOVE)", "loveApp/Db") +set_requestfile_path("$(MCA)", "mcaApp/Db") +set_requestfile_path("$(MOTOR)", "motorApp/Db") +set_requestfile_path("$(OPTICS)", "opticsApp/Db") +set_requestfile_path("$(QUADEM)", "quadEMApp/Db") +set_requestfile_path("$(SSCAN)", "sscanApp/Db") +set_requestfile_path("$(STD)", "stdApp/Db") +set_requestfile_path("$(VME)", "vmeApp/Db") + +dbLoadRecords("$(AUTOSAVE)/asApp/Db/save_restoreStatus.db", "P=xxx:") diff --git a/iocBoot/iocLinux/scanParms.substitutions b/iocBoot/iocLinux/scanParms.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..cfe432b88291e917e8b9a8a6b493e024bf2a8d78 --- /dev/null +++ b/iocBoot/iocLinux/scanParms.substitutions @@ -0,0 +1,46 @@ +file "$(SSCAN)/sscanApp/Db/scanParms.db" +{ +{P=xxx:,SCANREC=xxx:scan1,Q=m1,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=m2,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=m3,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=m4,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=m5,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=m6,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=m7,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=m8,POS=$(Q).VAL,RDBK=$(Q).RBV} + +{P=xxx:,SCANREC=xxx:scan1,Q=Table1X,POS=table1.X,RDBK=table1.XRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1Y,POS=table1.Y,RDBK=table1.YRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1Z,POS=table1.Z,RDBK=table1.ZRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1AX,POS=table1.AX,RDBK=table1.AXRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1AY,POS=table1.AY,RDBK=table1.AYRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1AZ,POS=table1.AZ,RDBK=table1.AZRB} + +#{P=xxx:,SCANREC=xxx:scan1,Q=BraggE,POS=BraggEAO.VAL,RDBK=BraggERdbkAO.VAL} +#{P=xxx:,SCANREC=xxx:scan1,Q=BraggLambda,POS=BraggLambdaAO.VAL,RDBK=BraggLambdaRdbkAO.VAL} +#{P=xxx:,SCANREC=xxx:scan1,Q=BraggTheta,POS=BraggThetaAO.VAL,RDBK=BraggThetaRdbkAO.VAL} + +#{P=xxx:,SCANREC=xxx:scan1,Q=HR1_E,POS=HR1_EAO.VAL,RDBK=HR1_ERdbkAO} +#{P=xxx:,SCANREC=xxx:scan1,Q=HR1_A,POS=HR1_worldOffAO.VAL,RDBK=HR1_worldOffAO.VAL} + +# old slit +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hp,POS=Slit1Hxp.VAL,RDBK=Slit1Ht2.A} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hn,POS=Slit1Hxn.VAL,RDBK=Slit1Ht2.B} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hsize,POS=Slit1Hsize.VAL,RDBK=Slit1Ht2.C} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hcenter,POS=Slit1Hcenter.VAL,RDBK=Slit1Ht2.D} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vp,POS=Slit1Vxp.VAL,RDBK=Slit1Vt2.A} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vn,POS=Slit1Vxn.VAL,RDBK=Slit1Vt2.B} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vsize,POS=Slit1Vsize.VAL,RDBK=Slit1Vt2.C} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vcenter,POS=Slit1Vcenter.VAL,RDBK=Slit1Vt2.D} + +# new soft-motor-based slit +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hxn,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hxp,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hsize,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hcenter,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vxn,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vxp,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vsize,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vcenter,POS=$(Q).VAL,RDBK=$(Q).RBV} + +} diff --git a/iocBoot/iocLinux/st.cmd b/iocBoot/iocLinux/st.cmd new file mode 100644 index 0000000000000000000000000000000000000000..021774e9873bbd603281ee306a7a1c6450945184 --- /dev/null +++ b/iocBoot/iocLinux/st.cmd @@ -0,0 +1,131 @@ +# vxWorks startup script + +# Read environment variables +< envPaths + +# save_restore.cmd needs the full path to the startup directory, which +# envPaths currently does not provide +epicsEnvSet(STARTUP,$(TOP)/iocBoot/$(IOC)) + +################################################################################ +# Tell EPICS all about the record types, device-support modules, drivers, +# etc. in the software we just loaded (xxx.munch) +dbLoadDatabase("../../dbd/iocxxx.dbd") +iocxxx_registerRecordDeviceDriver(pdbbase) + +# Increase size of buffer for error logging from default 1256 +errlogInit(5000) + +# debug sseq record +#var sseqRecDebug,10 + +# need more entries in wait/scan-record channel-access queue? +#var recDynLinkQsize, 1024 + +# Specify largest array CA will transport +# Note for N sscanRecord data points, need (N+1)*8 bytes, else MEDM +# plot doesn't display +epicsEnvSet EPICS_CA_MAX_ARRAY_BYTES 64008 + +### save_restore setup +# We presume a suitable initHook routine was compiled into the executable. +# See also create_monitor_set(), after iocInit() . +< save_restore.cmd + +# interpolation +dbLoadRecords("$(CALC)/calcApp/Db/interp.db", "P=xxx:,N=2000") + + +### 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("$(SSCAN)/sscanApp/Db/scan.db","P=xxx:,MAXPTS1=4000,MAXPTS2=200,MAXPTS3=10,MAXPTS4=10,MAXPTSH=4000") + +# Slits +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1V,mXp=m3,mXn=m4") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1H,mXp=m5,mXn=m6") + +# 2-post mirror +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2postMirror.db","P=xxx:,Q=M1,mDn=m1,mUp=m2,LENGTH=0.3") + +# User filters +#dbLoadRecords("$(OPTICS)/opticsApp/Db/filterMotor.db","P=xxx:,Q=fltr1:,MOTOR=m1,LOCK=fltr_1_2:") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/filterMotor.db","P=xxx:,Q=fltr2:,MOTOR=m2,LOCK=fltr_1_2:") + +# Optical tables +#var tableRecordDebug,1 +#dbLoadRecords("$(OPTICS)/opticsApp/Db/table.db","P=xxx:,Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y=m3,M2X=m4,M2Y=m5,M2Z=m6,GEOM=SRI") + +### Monochromator support ### +# Kohzu and PSL monochromators: Bragg and theta/Y/Z motors +# standard geometry (geometry 1) +#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m1,M_Y=m2,M_Z=m3,yOffLo=17.4999,yOffHi=17.5001") +# modified geometry (geometry 2) +#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m1,M_Y=m2,M_Z=m3,yOffLo=4,yOffHi=36") + +# Spherical grating monochromator +#dbLoadRecords("$(OPTICS)/opticsApp/Db/SGM.db","P=xxx:,N=1,M_x=m1,M_rIn=m2,M_rOut=m3,M_g=m4") + +# 4-bounce high-resolution monochromator +#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=xxx:,N=1,M_PHI1=m1,M_PHI2=m2") + +### Stuff for user programming ### +dbLoadRecords("$(CALC)/calcApp/Db/userCalcs10.db","P=xxx:") +dbLoadRecords("$(CALC)/calcApp/Db/userStringCalcs10.db","P=xxx:") +dbLoadRecords("$(CALC)/calcApp/Db/userTransforms10.db","P=xxx:") +# extra userCalcs (must also load userCalcs10.db for the enable switch) +dbLoadRecords("$(CALC)/calcApp/Db/userCalcN.db","P=xxx:,N=I_Detector") +#dbLoadRecords("$(CALC)/calcApp/Db/userAve10.db","P=xxx:") +# string sequence (sseq) record +dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq1") +dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq2") +dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq3") +# 4-step measurement +#dbLoadRecords("$(STD)/stdApp/Db/4step.db", "P=xxx:") + +### serial support ### + +# generic serial ports +#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=xxx:,C=0,SERVER=serial1") +#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=xxx:,C=0,SERVER=serial2") + +# serial O/I block (generic serial record with format and parse string calcs) +# on epics/mpf processor +#dbLoadRecords("$(IP)/ipApp/Db/serial_OI_block.db","P=xxx:,N=0_1,C=0,SERVER=serial5") +# on stand-alone mpf processor +#dbLoadRecords("$(IP)/ipApp/Db/serial_OI_block.db","P=xxx:,N=1_1,C=0,SERVER=serial5") + +# Miscellaneous PV's, such as burtResult +dbLoadRecords("$(STD)/stdApp/Db/misc.db","P=xxx:") + + +############################################################################### +iocInit + +### startup State Notation Language programs +#seq &kohzuCtl, "P=xxx:, M_THETA=m1, M_Y=m2, M_Z=m3, GEOM=1, logfile=kohzuCtl.log" +#seq &hrCtl, "P=xxx:, N=1, M_PHI1=m1, M_PHI2=m2, logfile=hrCtl1.log" + +### Start up the autosave task and tell it what to do. +# The task is actually named "save_restore". +# Note that you can reload these sets after creating them: e.g., +# reload_monitor_set("auto_settings.req",30,"P=xxx:") +# +# save positions every five seconds +create_monitor_set("auto_positions.req",5,"P=xxx:") +# save other things every thirty seconds +create_monitor_set("auto_settings.req",30,"P=xxx:") + +### Start the saveData task. +# saveData_MessagePolicy +# 0: wait forever for space in message queue, then send message +# 1: send message only if queue is not full +# 2: send message only if queue is not full and specified time has passed (SetCptWait() +# sets this time.) +# 3: if specified time has passed, wait for space in queue, then send message +# else: don't send message +#var "debug_saveData" 2 +#saveData_MessagePolicy = 2 +#saveData_SetCptWait_ms(100) +saveData_Init("saveData.req", "P=xxx:") +#saveData_PrintScanInfo("xxx:scan1") diff --git a/iocBoot/iocSolaris/Makefile b/iocBoot/iocSolaris/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..ab5b240648227eacbd98b4f1728695df4846e9a6 --- /dev/null +++ b/iocBoot/iocSolaris/Makefile @@ -0,0 +1,5 @@ +TOP = ../.. +include $(TOP)/configure/CONFIG +ARCH = solaris-sparc-gnu +TARGETS = envPaths +include $(TOP)/configure/RULES.ioc diff --git a/iocBoot/iocSolaris/README b/iocBoot/iocSolaris/README new file mode 100644 index 0000000000000000000000000000000000000000..1060b5e6b9aff50dcf088d243a1fbe242fd352bb --- /dev/null +++ b/iocBoot/iocSolaris/README @@ -0,0 +1,5 @@ +Assuming the EPICS_HOST_ARCH environment variable is set correctly, +start the ioc from this directory by executing the following command. + +../../bin/${EPICS_HOST_ARCH}/xxx st.cmd + diff --git a/iocBoot/iocSolaris/auto_positions.req b/iocBoot/iocSolaris/auto_positions.req new file mode 100644 index 0000000000000000000000000000000000000000..5e89c536b6f99aea3213faf4af534427df4b4ee6 --- /dev/null +++ b/iocBoot/iocSolaris/auto_positions.req @@ -0,0 +1,16 @@ +$(P)m1.OFF +$(P)m1.DVAL +$(P)m2.OFF +$(P)m2.DVAL +$(P)m3.OFF +$(P)m3.DVAL +$(P)m4.OFF +$(P)m4.DVAL +$(P)m5.OFF +$(P)m5.DVAL +$(P)m6.OFF +$(P)m6.DVAL +$(P)m7.OFF +$(P)m7.DVAL +$(P)m8.OFF +$(P)m8.DVAL diff --git a/iocBoot/iocSolaris/auto_settings.req b/iocBoot/iocSolaris/auto_settings.req new file mode 100644 index 0000000000000000000000000000000000000000..a426ea09e2f19b11d48605603772e88d6b69beef --- /dev/null +++ b/iocBoot/iocSolaris/auto_settings.req @@ -0,0 +1,48 @@ +file motor_settings.req P=$(P),M=m1 +file softMotor_settings.req P=$(P),SM=SM1 +file softMotor_settings.req P=$(P),SM=SM2 +file softMotor_settings.req P=$(P),SM=SM3 +file softMotor_settings.req P=$(P),SM=SM4 +file softMotor_settings.req P=$(P),SM=SM5 +file softMotor_settings.req P=$(P),SM=SM6 +file softMotor_settings.req P=$(P),SM=SM7 +file softMotor_settings.req P=$(P),SM=SM8 +file softMotor_settings.req P=$(P),SM=SM9 +file softMotor_settings.req P=$(P),SM=SM10 + +file scanParms_settings.req P=$(P),M=m1 + +file table_settings.req P=$(P),T=table1,Q=table1 + +file scan_settings.req P=$(P),S=scan1 +file scan_settings.req P=$(P),S=scan2 +file scan_settings.req P=$(P),S=scan3 +file scan_settings.req P=$(P),S=scan4 +file scan_settings.req P=$(P),S=scanH + +# Kohzu monochromator +#$(P)BraggHAO.VAL +#$(P)BraggKAO.VAL +#$(P)BraggLAO.VAL +#$(P)BraggAAO.VAL +#$(P)BraggTypeMO.VAL +#$(P)KohzuMode2MO.VAL +#$(P)Kohzu_yOffsetAO.VAL + +file userCalcs10_settings.req P=$(P) +file userCalcN_settings.req P=$(P),N=I_Detector +file saveData_settings.req P=$(P) +file userTransforms10_settings.req P=$(P) +file userStringCalcs10_settings.req P=$(P) +file userCalcOuts10_settings.req P=$(P) +# string-sequence records +file sseq_settings.req P=$(P),S=Sseq1 +file sseq_settings.req P=$(P),S=Sseq2 +file sseq_settings.req P=$(P),S=Sseq3 + + +# 4-step measurement +file auto_4step_settings.req P=$(P),Q=4step + +file userAve10_settings.req P=$(P) + diff --git a/iocBoot/iocSolaris/envPaths b/iocBoot/iocSolaris/envPaths new file mode 100644 index 0000000000000000000000000000000000000000..0d144e72a4fa552f8a489c2a5566d7c294c8d894 --- /dev/null +++ b/iocBoot/iocSolaris/envPaths @@ -0,0 +1,28 @@ +epicsEnvSet(ARCH,"solaris-sparc-gnu") +epicsEnvSet(IOC,"iocSolaris") +epicsEnvSet(TOP,"/home/oxygen4/MOONEY/epics/synApps_5_1/support/xxx") +epicsEnvSet(SUPPORT,"/home/oxygen/MOONEY/epics/synApps_5_1/support") +epicsEnvSet(EPICS_BASE,"/home/oxygen/MOONEY/epics/base-3.14.7") +epicsEnvSet(ALLEN_BRADLEY,"/home/oxygen/MOONEY/epics/synApps_5_1/support/allenBradley/2-1") +epicsEnvSet(ASYN,"/home/oxygen/MOONEY/epics/synApps_5_1/support/asyn/4-2") +epicsEnvSet(AUTOSAVE,"/home/oxygen/MOONEY/epics/synApps_5_1/support/autosave/4-1") +epicsEnvSet(GENSUB,"/home/oxygen/MOONEY/epics/synApps_5_1/support/genSub/1-6") +epicsEnvSet(CALC,"/home/oxygen/MOONEY/epics/synApps_5_1/support/calc/cvs") +epicsEnvSet(CAMAC,"/home/oxygen/MOONEY/epics/synApps_5_1/support/camac/cvs") +epicsEnvSet(CCD,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ccd/cvs") +epicsEnvSet(DAC128V,"/home/oxygen/MOONEY/epics/synApps_5_1/support/dac128V/cvs") +epicsEnvSet(DXP,"/home/oxygen/MOONEY/epics/synApps_5_1/support/dxp/cvs") +epicsEnvSet(IP,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ip/2-4") +epicsEnvSet(IP330,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ip330/cvs") +epicsEnvSet(IPAC,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ipac/2-8") +epicsEnvSet(IPUNIDIG,"/home/oxygen/MOONEY/epics/synApps_5_1/support/ipUnidig/cvs") +epicsEnvSet(MCA,"/home/oxygen/MOONEY/epics/synApps_5_1/support/mca/cvs") +epicsEnvSet(MOTOR,"/home/oxygen/MOONEY/epics/synApps_5_1/support/motor/cvs") +epicsEnvSet(OPTICS,"/home/oxygen/MOONEY/epics/synApps_5_1/support/optics/2-4") +epicsEnvSet(QUADEM,"/home/oxygen/MOONEY/epics/synApps_5_1/support/quadEM/cvs") +epicsEnvSet(SNCSEQ,"/home/oxygen/MOONEY/epics/synApps_5_1/support/seq/2-0-9") +epicsEnvSet(SSCAN,"/home/oxygen/MOONEY/epics/synApps_5_1/support/sscan/cvs") +epicsEnvSet(STD,"/home/oxygen/MOONEY/epics/synApps_5_1/support/std/cvs") +epicsEnvSet(VME,"/home/oxygen/MOONEY/epics/synApps_5_1/support/vme/cvs") +epicsEnvSet(VXSTATS,"/home/oxygen/MOONEY/epics/synApps_5_1/support/vxStats/cvs") +epicsEnvSet(XXX,"/home/oxygen/MOONEY/epics/synApps_5_1/support/xxx") diff --git a/iocBoot/iocSolaris/motor.substitutions b/iocBoot/iocSolaris/motor.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..a1c4a2a534018f8f7823bd05cf67d8f644b8c123 --- /dev/null +++ b/iocBoot/iocSolaris/motor.substitutions @@ -0,0 +1,21 @@ +file "$(MOTOR)/db/motor.db" +{ +pattern +{P, N, M, DTYP, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT} +{xxx:, 1, m$(N), "OMS VME8/44", 0, 0, "M0X", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 2, m$(N), "OMS VME8/44", 0, 1, "M0Y", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 3, m$(N), "OMS VME8/44", 0, 2, "M1Y", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 4, m$(N), "OMS VME8/44", 0, 3, "M2X", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 5, m$(N), "OMS VME8/44", 0, 4, "M2Y", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 6, m$(N), "OMS VME8/44", 0, 5, "M2Z", mm, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 7, m$(N), "OMS VME8/44", 0, 6, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 8, m$(N), "OMS VME8/44", 0, 7, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 9, m$(N), "OMS VME58", 0, 0, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 10, m$(N), "OMS VME58", 0, 1, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 11, m$(N), "OMS VME58", 0, 2, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 12, m$(N), "OMS VME58", 0, 3, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 13, m$(N), "OMS VME58", 0, 4, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 14, m$(N), "OMS VME58", 0, 5, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 15, m$(N), "OMS VME58", 0, 6, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +{xxx:, 16, m$(N), "OMS VME58", 0, 7, "motor $(N)", degrees, Pos, 1, .1, .2, 0, 1, .2, 2.5e-4, 5, 100, -100, ""} +} diff --git a/iocBoot/iocSolaris/run b/iocBoot/iocSolaris/run new file mode 100755 index 0000000000000000000000000000000000000000..001877b6aba04854d4dfb1896e8a1eda54d3c16e --- /dev/null +++ b/iocBoot/iocSolaris/run @@ -0,0 +1 @@ +../../bin/${EPICS_HOST_ARCH}/xxx st.cmd diff --git a/iocBoot/iocSolaris/saveData.req b/iocBoot/iocSolaris/saveData.req new file mode 100644 index 0000000000000000000000000000000000000000..6eaff4e171705167bd1c68f42c9db0cfcf4dc2c6 --- /dev/null +++ b/iocBoot/iocSolaris/saveData.req @@ -0,0 +1,40 @@ +[prefix] +$(P) + +[status] +$(P)saveData_status + +[message] +$(P)saveData_message + +[filename] +$(P)saveData_fileName + +[counter] # scan counter +$(P)saveData_scanNumber + +[fileSystem] # scan file system +$(P)saveData_fileSystem + +[subdir] # scan file subdirectory +$(P)saveData_subDir + +[fullPathName] +$(P)saveData_fullPathName + +[realTime1D] # if nonzero, write 1D data as it comes in +$(P)saveData_realTime1D + +[scanRecord] # specify scan records to be monitored +$(P)scanH +$(P)scan1 +$(P)scan2 +$(P)scan3 +$(P)scan4 + +[extraPV] +$(P)userCalc1.CALC "string" +$(P)saveData_realTime1D "enum" +$(P)saveData_scanNumber "long" +$(P)saveData_fileSystem "filesystem" +$(P)scan1.P1SM "scan mode" diff --git a/iocBoot/iocSolaris/save_restore.cmd b/iocBoot/iocSolaris/save_restore.cmd new file mode 100644 index 0000000000000000000000000000000000000000..6aadbca37dde80e67df7775a6ca077e3e92b262d --- /dev/null +++ b/iocBoot/iocSolaris/save_restore.cmd @@ -0,0 +1,56 @@ +### save_restore setup +# +# The rest this file does not require modification for standard use, but... +# If you want save_restore to manage its own NFS mount, specify the name and +# IP address of the file server to which save files should be written. +# This currently is supported only on vxWorks. +#save_restoreSet_NFSHost("oxygen", "164.54.52.4") + +# status-PV prefix +save_restoreSet_status_prefix("xxx:") +# Debug-output level +save_restoreSet_Debug(0) + +# 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) + +# specify where save files should be +set_savefile_path("$(STARTUP)", "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") +set_pass0_restoreFile("auto_settings.sav") +set_pass1_restoreFile("auto_settings.sav") + +# specify directories in which to to search for included request files +# Note cdCommands defines 'startup', but envPaths does not +set_requestfile_path("$(STARTUP)", "") +set_requestfile_path("$(STARTUP)", "autosave") +set_requestfile_path("$(AUTOSAVE)", "asApp/Db") +set_requestfile_path("$(CALC)", "calcApp/Db") +#set_requestfile_path("$(CAMAC)", "camacApp/Db") +set_requestfile_path("$(CCD)", "ccdApp/Db") +set_requestfile_path("$(DAC128V)", "dac128VApp/Db") +set_requestfile_path("$(DXP)", "dxpApp/Db") +set_requestfile_path("$(IP)", "ipApp/Db") +set_requestfile_path("$(IP330)", "ip330App/Db") +set_requestfile_path("$(IPUNIDIG)", "ipUnidigApp/Db") +#set_requestfile_path("$(LOVE)", "loveApp/Db") +set_requestfile_path("$(MCA)", "mcaApp/Db") +set_requestfile_path("$(MOTOR)", "motorApp/Db") +set_requestfile_path("$(OPTICS)", "opticsApp/Db") +set_requestfile_path("$(QUADEM)", "quadEMApp/Db") +set_requestfile_path("$(SSCAN)", "sscanApp/Db") +set_requestfile_path("$(STD)", "stdApp/Db") +set_requestfile_path("$(VME)", "vmeApp/Db") + +dbLoadRecords("$(AUTOSAVE)/asApp/Db/save_restoreStatus.db", "P=xxx:") diff --git a/iocBoot/iocSolaris/scanParms.substitutions b/iocBoot/iocSolaris/scanParms.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..6cda7e7d8c3b5a3cd461ca7a1698ba78290f607a --- /dev/null +++ b/iocBoot/iocSolaris/scanParms.substitutions @@ -0,0 +1,48 @@ +file "$(SSCAN)/sscanApp/Db/scanParms.db" +{ +{P=xxx:,SCANREC=xxx:scan1,Q=SM1,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM2,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM3,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM4,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM5,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM6,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM7,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM8,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM9,POS=$(Q).VAL,RDBK=$(Q).RBV} +{P=xxx:,SCANREC=xxx:scan1,Q=SM10,POS=$(Q).VAL,RDBK=$(Q).RBV} + +{P=xxx:,SCANREC=xxx:scan1,Q=Table1X,POS=table1.X,RDBK=table1.XRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1Y,POS=table1.Y,RDBK=table1.YRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1Z,POS=table1.Z,RDBK=table1.ZRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1AX,POS=table1.AX,RDBK=table1.AXRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1AY,POS=table1.AY,RDBK=table1.AYRB} +{P=xxx:,SCANREC=xxx:scan1,Q=Table1AZ,POS=table1.AZ,RDBK=table1.AZRB} + +#{P=xxx:,SCANREC=xxx:scan1,Q=BraggE,POS=BraggEAO.VAL,RDBK=BraggERdbkAO.VAL} +#{P=xxx:,SCANREC=xxx:scan1,Q=BraggLambda,POS=BraggLambdaAO.VAL,RDBK=BraggLambdaRdbkAO.VAL} +#{P=xxx:,SCANREC=xxx:scan1,Q=BraggTheta,POS=BraggThetaAO.VAL,RDBK=BraggThetaRdbkAO.VAL} + +#{P=xxx:,SCANREC=xxx:scan1,Q=HR1_E,POS=HR1_EAO.VAL,RDBK=HR1_ERdbkAO} +#{P=xxx:,SCANREC=xxx:scan1,Q=HR1_A,POS=HR1_worldOffAO.VAL,RDBK=HR1_worldOffAO.VAL} + +# old slit +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hp,POS=Slit1Hxp.VAL,RDBK=Slit1Ht2.A} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hn,POS=Slit1Hxn.VAL,RDBK=Slit1Ht2.B} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hsize,POS=Slit1Hsize.VAL,RDBK=Slit1Ht2.C} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Hcenter,POS=Slit1Hcenter.VAL,RDBK=Slit1Ht2.D} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vp,POS=Slit1Vxp.VAL,RDBK=Slit1Vt2.A} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vn,POS=Slit1Vxn.VAL,RDBK=Slit1Vt2.B} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vsize,POS=Slit1Vsize.VAL,RDBK=Slit1Vt2.C} +{P=xxx:,SCANREC=xxx:scan1,Q=Slit1Vcenter,POS=Slit1Vcenter.VAL,RDBK=Slit1Vt2.D} + +# new soft-motor-based slit +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hxn,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hxp,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hsize,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Hcenter,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vxn,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vxp,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vsize,POS=$(Q).VAL,RDBK=$(Q).RBV} +#{P=xxx:,SCANREC=xxx:scan1,Q=Slit2Vcenter,POS=$(Q).VAL,RDBK=$(Q).RBV} + +} diff --git a/iocBoot/iocSolaris/softMotor.substitutions b/iocBoot/iocSolaris/softMotor.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..988001da4f3a26428b16081b6c1bca356a034f0a --- /dev/null +++ b/iocBoot/iocSolaris/softMotor.substitutions @@ -0,0 +1,15 @@ +file "$(STD)/stdApp/Db/softMotor.db" +{ +pattern +{P, SM} +{xxx:, SM1} +{xxx:, SM2} +{xxx:, SM3} +{xxx:, SM4} +{xxx:, SM5} +{xxx:, SM6} +{xxx:, SM7} +{xxx:, SM8} +{xxx:, SM9} +{xxx:, SM10} +} diff --git a/iocBoot/iocSolaris/st.cmd b/iocBoot/iocSolaris/st.cmd new file mode 100644 index 0000000000000000000000000000000000000000..b7a6f1b53f856167a9c19b8d62ed4b5135c29a78 --- /dev/null +++ b/iocBoot/iocSolaris/st.cmd @@ -0,0 +1,142 @@ +# vxWorks startup script + +# Read environment variables +< envPaths + +# save_restore.cmd needs the full path to the startup directory, which +# envPaths currently does not provide +epicsEnvSet(STARTUP,$(TOP)/iocBoot/$(IOC)) + +################################################################################ +# Tell EPICS all about the record types, device-support modules, drivers, +# etc. in the software we just loaded (xxx.munch) +dbLoadDatabase("../../dbd/iocxxx_solaris.dbd") +iocxxx_solaris_registerRecordDeviceDriver(pdbbase) + +# Increase size of buffer for error logging from default 1256 +errlogInit(5000) + +# debug sseq record +#var sseqRecDebug,10 + +# need more entries in wait/scan-record channel-access queue? +#var recDynLinkQsize, 1024 + +# Specify largest array CA will transport +# Note for N sscanRecord data points, need (N+1)*8 bytes, else MEDM +# plot doesn't display +epicsEnvSet EPICS_CA_MAX_ARRAY_BYTES 64008 + +### save_restore setup +# We presume a suitable initHook routine was compiled into the executable. +# See also create_monitor_set(), after iocInit() . +< save_restore.cmd + +dbLoadRecords("$(TOP)/xxxApp/Db/busy.db", "P=xxx:,B=busy") + +# Motors +dbLoadTemplate("softMotor.substitutions") + +# interpolation +dbLoadRecords("$(CALC)/calcApp/Db/interp.db", "P=xxx:,N=2000") + + +### 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("$(SSCAN)/sscanApp/Db/scan.db","P=xxx:,MAXPTS1=4000,MAXPTS2=200,MAXPTS3=10,MAXPTS4=10,MAXPTSH=4000") + +# 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") + +# Slits +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1V,mXp=m3,mXn=m4") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2slit.db","P=xxx:,SLIT=Slit1H,mXp=m5,mXn=m6") + +# 2-post mirror +#dbLoadRecords("$(OPTICS)/opticsApp/Db/2postMirror.db","P=xxx:,Q=M1,mDn=m1,mUp=m2,LENGTH=0.3") + +# User filters +#dbLoadRecords("$(OPTICS)/opticsApp/Db/filterMotor.db","P=xxx:,Q=fltr1:,MOTOR=m1,LOCK=fltr_1_2:") +#dbLoadRecords("$(OPTICS)/opticsApp/Db/filterMotor.db","P=xxx:,Q=fltr2:,MOTOR=m2,LOCK=fltr_1_2:") + +# Optical tables +#var tableRecordDebug,1 +#dbLoadRecords("$(OPTICS)/opticsApp/Db/table.db","P=xxx:,Q=Table1,T=table1,M0X=m1,M0Y=m2,M1Y=m3,M2X=m4,M2Y=m5,M2Z=m6,GEOM=SRI") + +### Monochromator support ### +# Kohzu and PSL monochromators: Bragg and theta/Y/Z motors +# standard geometry (geometry 1) +#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m1,M_Y=m2,M_Z=m3,yOffLo=17.4999,yOffHi=17.5001") +# modified geometry (geometry 2) +#dbLoadRecords("$(OPTICS)/opticsApp/Db/kohzuSeq.db","P=xxx:,M_THETA=m1,M_Y=m2,M_Z=m3,yOffLo=4,yOffHi=36") + +# Spherical grating monochromator +#dbLoadRecords("$(OPTICS)/opticsApp/Db/SGM.db","P=xxx:,N=1,M_x=m1,M_rIn=m2,M_rOut=m3,M_g=m4") + +# 4-bounce high-resolution monochromator +#dbLoadRecords("$(OPTICS)/opticsApp/Db/hrSeq.db","P=xxx:,N=1,M_PHI1=m1,M_PHI2=m2") + +### Stuff for user programming ### +dbLoadRecords("$(CALC)/calcApp/Db/userCalcs10.db","P=xxx:") +dbLoadRecords("$(CALC)/calcApp/Db/userStringCalcs10.db","P=xxx:") +dbLoadRecords("$(CALC)/calcApp/Db/userTransforms10.db","P=xxx:") +# extra userCalcs (must also load userCalcs10.db for the enable switch) +dbLoadRecords("$(CALC)/calcApp/Db/userCalcN.db","P=xxx:,N=I_Detector") +#dbLoadRecords("$(CALC)/calcApp/Db/userAve10.db","P=xxx:") +dbLoadRecords("$(CALC)/calcApp/Db/userCalcOuts10.db","P=xxx:") +# string sequence (sseq) record +dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq1") +dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq2") +dbLoadRecords("$(STD)/stdApp/Db/yySseq.db","P=xxx:,S=Sseq3") +# 4-step measurement +#dbLoadRecords("$(STD)/stdApp/Db/4step.db", "P=xxx:") + +### serial support ### + +# generic serial ports +#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=xxx:,C=0,SERVER=serial1") +#dbLoadRecords("$(IP)/ipApp/Db/generic_serial.db", "P=xxx:,C=0,SERVER=serial2") + +# serial O/I block (generic serial record with format and parse string calcs) +# on epics/mpf processor +#dbLoadRecords("$(IP)/ipApp/Db/serial_OI_block.db","P=xxx:,N=0_1,C=0,SERVER=serial5") +# on stand-alone mpf processor +#dbLoadRecords("$(IP)/ipApp/Db/serial_OI_block.db","P=xxx:,N=1_1,C=0,SERVER=serial5") + +# Miscellaneous PV's, such as burtResult +dbLoadRecords("$(STD)/stdApp/Db/misc.db","P=xxx:") + + +############################################################################### +iocInit + +### startup State Notation Language programs +#seq &kohzuCtl, "P=xxx:, M_THETA=m1, M_Y=m2, M_Z=m3, GEOM=1, logfile=kohzuCtl.log" +#seq &hrCtl, "P=xxx:, N=1, M_PHI1=m1, M_PHI2=m2, logfile=hrCtl1.log" + +### Start up the autosave task and tell it what to do. +# The task is actually named "save_restore". +# Note that you can reload these sets after creating them: e.g., +# reload_monitor_set("auto_settings.req",30,"P=xxx:") +# +# save positions every five seconds +create_monitor_set("auto_positions.req",5,"P=xxx:") +# save other things every thirty seconds +create_monitor_set("auto_settings.req",30,"P=xxx:") + +### Start the saveData task. +# saveData_MessagePolicy +# 0: wait forever for space in message queue, then send message +# 1: send message only if queue is not full +# 2: send message only if queue is not full and specified time has passed (SetCptWait() +# sets this time.) +# 3: if specified time has passed, wait for space in queue, then send message +# else: don't send message +#var "debug_saveData" 2 +#saveData_MessagePolicy = 2 +#saveData_SetCptWait_ms(100) +saveData_Init("saveData.req", "P=xxx:") +#saveData_PrintScanInfo("xxx:scan1")