diff --git a/roles/deploy_ioc/vars/xspress3.yml b/roles/deploy_ioc/vars/xspress3.yml new file mode 100644 index 00000000..3c84ef1f --- /dev/null +++ b/roles/deploy_ioc/vars/xspress3.yml @@ -0,0 +1,75 @@ +--- +deploy_ioc_use_common: true +deploy_ioc_use_ad_common: false +deploy_ioc_required_module: xspress3_911d16d +deploy_ioc_executable: xspress3App + +deploy_ioc_req_file_list: + - name: "auto_settings.req" + macros: "P=$(PREFIX)" + +deploy_ioc_dbpf_list: + + - pv: "$(PREFIX)det1:RUN_FLAGS" + value: 0 + - pv: "$(PREFIX)det1:NUM_CHANNELS" + value: "$(NUM_CHANNELS)" + - pv: "$(PREFIX)det1:NumImages" + value: 16000 + - pv: "$(PREFIX)det1:AcquireTime" + value: 0.25 + - pv: "$(PREFIX)det1:CONNECT" + value: "1" + - pv: "$(PREFIX)det1:CTRL_DTC" + value: "Disable" + - pv: "$(PREFIX)det1:TriggerMode" + value: "Internal" + - pv: "$(PREFIX)det1:EraseOnStart" + value: "Yes" + - pv: "$(PREFIX)det1:FrameAdvance" + value: 0 + + # Enable Array Callbacks, set Attributes file + - pv: "$(PREFIX)det1:ArrayCallbacks" + value: "Enable" + + # Configure HDF Plugin + - pv: "$(PREFIX)HDF1:FileTemplate" + value: "%s%s%d.hdf5" + - pv: "$(PREFIX)HDF1:FileWriteMode" + value: "Stream" + - pv: "$(PREFIX)HDF1:EnableCallbacks" + value: "Enable" + - pv: "$(PREFIX)HDF1:Compression" + value: "zlib" + - pv: "$(PREFIX)HDF1:ZLevel" + value: "1" + - pv: "$(PREFIX)HDF1:AutoIncrement" + value: "Yes" + + # Configure PROC plugin spectra summing + - pv: "$(PREFIX)Proc1:EnableFilter" + value: "Enable" + - pv: "$(PREFIX)Proc1:FilterType" + value: "Sum" + - pv: "$(PREFIX)Proc1:EnableCallbacks" + value: "Enable" + + # Disable EraseOnStart + - pv: "$(PREFIX)det1:EraseOnStart" + value: "No" + + # Set path to calibration + - pv: "$(PREFIX)det1:CONFIG_PATH" + value: "$(CALIBRATION_DIR)" + sleep: 2 + + +deploy_ioc_device_specific_env: + MAX_FRAMES: 16834 + MAX_DRV_FRAMES: 16834 + QSIZE: 512 + CBUFFS: 8192 + NUM_BINS: 4096 + PORT: "XSP3" + CIRC_BUFFER: 1 diff --git a/roles/device_roles/xspress3/README.md b/roles/device_roles/xspress3/README.md new file mode 100644 index 00000000..7da0d848 --- /dev/null +++ b/roles/device_roles/xspress3/README.md @@ -0,0 +1,3 @@ +# xspress3 + +Ansible role for deploying xspress3 IOC instances. diff --git a/roles/device_roles/xspress3/example.yml b/roles/device_roles/xspress3/example.yml new file mode 100644 index 00000000..1b2ef5be --- /dev/null +++ b/roles/device_roles/xspress3/example.yml @@ -0,0 +1,10 @@ +--- +xspress3-01: + type: xspress3 + environment: + ENGINEER: C. Engineer + PREFIX: XF:31ID1-ES{XSPRESS3:01} + NUM_CHANNELS: 8 + NUM_CARDS: 4 + XSPRESS3_IP: "192.168.0.1" + CALIBRATION_DIR: "/etc/xspress3/calibration/initial" diff --git a/roles/device_roles/xspress3/files/DefineSCAROI.cmd b/roles/device_roles/xspress3/files/DefineSCAROI.cmd new file mode 100644 index 00000000..728e0b3b --- /dev/null +++ b/roles/device_roles/xspress3/files/DefineSCAROI.cmd @@ -0,0 +1,106 @@ +# setup SCA, ROIs, etc for channel CHAN +dbLoadRecords("xspress3_AttrReset.template", "P=$(PREFIX),R=det1:,CHAN=$(CHAN)") + +#ROIs: take 2D array and turn it into two 1D spectra for each channel: +# 1 for per-frame spectra, 1 for accumulated spectra (using PROC plugin to do accumulation) +NDROIConfigure("CHAN$(CHAN)", "$(QSIZE)", 0, "XSP3", 0, -1, -1) +dbLoadRecords("NDROI.template", "P=$(PREFIX), R=ROI$(CHAN):, PORT=CHAN$(CHAN), TIMEOUT=1, ADDR=0, NDARRAY_PORT=$(PORT), NDARRAY_ADDR=0, Enabled=0") + +NDROIConfigure("CHANSUM$(CHAN)", "$(QSIZE)", 0, "PROC1", 0, -1, -1) +dbLoadRecords("NDROI.template", "P=$(PREFIX), R=ROISUM$(CHAN):, PORT=CHANSUM$(CHAN), TIMEOUT=1, ADDR=0, NDARRAY_PORT=PROC1, NDARRAY_ADDR=0, Enabled=0") + +#SCAs: create an NDAttribute plugin with 9 attributes +NDAttrConfigure("$(PORT).C$(CHAN)SCA", "$(QSIZE)", 0, "$(PORT)", 0, 12) +dbLoadRecords("NDAttribute.template", "P=$(PREFIX),R=C$(CHAN)SCA:, PORT=$(PORT).C$(CHAN)SCA, ADDR=0,TIMEOUT=1,NCHANS=$(MAX_FRAMES),NDARRAY_PORT=$(PORT)") + +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:0:, PORT=$(PORT).C$(CHAN)SCA, ADDR=0,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:1:, PORT=$(PORT).C$(CHAN)SCA, ADDR=1,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:2:, PORT=$(PORT).C$(CHAN)SCA, ADDR=2,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:3:, PORT=$(PORT).C$(CHAN)SCA, ADDR=3,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:4:, PORT=$(PORT).C$(CHAN)SCA, ADDR=4,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:5:, PORT=$(PORT).C$(CHAN)SCA, ADDR=5,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:6:, PORT=$(PORT).C$(CHAN)SCA, ADDR=6,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:7:, PORT=$(PORT).C$(CHAN)SCA, ADDR=7,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:8:, PORT=$(PORT).C$(CHAN)SCA, ADDR=8,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:9:, PORT=$(PORT).C$(CHAN)SCA, ADDR=9,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDAttributeN.template", "P=$(PREFIX),R=C$(CHAN)SCA:10:, PORT=$(PORT).C$(CHAN)SCA, ADDR=10,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") + +NDTimeSeriesConfigure("$(PORT).C$(CHAN)SCA_TS", "$(QSIZE)", 0, "$(PORT)", 0, 12) +dbLoadRecords("$(ADCORE)/db/NDTimeSeries.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:, PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT).C$(CHAN)SCA,NDARRAY_ADDR=1,NCHANS=$(MAX_FRAMES),ENABLED=1") + +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:0:, NAME='CHAN$(CHAN)SCA0', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=0,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:1:, NAME='CHAN$(CHAN)SCA1', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=1,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:2:, NAME='CHAN$(CHAN)SCA2', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=2,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:3:, NAME='CHAN$(CHAN)SCA3', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=3,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:4:, NAME='CHAN$(CHAN)SCA4', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=4,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:5:, NAME='CHAN$(CHAN)SCA5', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=5,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:6:, NAME='CHAN$(CHAN)SCA6', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=6,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:7:, NAME='CHAN$(CHAN)SCA7', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=7,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:8:, NAME='CHAN$(CHAN)EventWidth', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=8,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:9:, NAME='CHAN$(CHAN)DTFactor', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=9,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDTimeSeriesN.template", "P=$(PREFIX),R=C$(CHAN)SCA:TS:10:, NAME='CHAN$(CHAN)DTPercent', PORT=$(PORT).C$(CHAN)SCA_TS, ADDR=10,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") + +dbLoadRecords("xspress3ChannelSCAThreshold.template", "P=$(PREFIX),R=det1:,PORT=$(PORT), ADDR=$(CHM1), TIMEOUT=1, CHAN=$(CHAN), SCA=4") +dbLoadRecords("xspress3ChannelSCALimits.template", "P=$(PREFIX),R=det1:,PORT=$(PORT), ADDR=$(CHM1), TIMEOUT=1, CHAN=$(CHAN), SCA=5") +dbLoadRecords("xspress3ChannelSCALimits.template", "P=$(PREFIX),R=det1:,PORT=$(PORT), ADDR=$(CHM1), TIMEOUT=1, CHAN=$(CHAN), SCA=6") +dbLoadRecords("xspress3ChannelDTC.template", "P=$(PREFIX),R=det1:,PORT=$(PORT), CHAN=$(CHAN), NDARRAY_PORT=$(PORT),ADDR=$(CHM1),TIMEOUT=5") +dbLoadRecords("xspress3ChannelDeadtime.template", "P=$(PREFIX),R=det1:,PORT=$(PORT), ADDR=$(CHM1), TIMEOUT=1, CHAN=$(CHAN)") + +#MCAs: create StdArray for Visualization: +NDStdArraysConfigure("MCA$(CHAN)", 5, 0, "CHAN$(CHAN)", 0, 0) +dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=MCA$(CHAN):,PORT=MCA$(CHAN),ADDR=0,TIMEOUT=1,NDARRAY_PORT=CHAN$(CHAN),TYPE=Float64,FTVL=DOUBLE,NELEMENTS=$(NUM_BINS)") + +NDStdArraysConfigure("MCASUM$(CHAN)", 5, 0, "CHANSUM$(CHAN)", 0, 0) +dbLoadRecords("$(ADCORE)/db/NDStdArrays.template", "P=$(PREFIX),R=MCASUM$(CHAN):,PORT=MCASUM$(CHAN),ADDR=0,TIMEOUT=1,NDARRAY_PORT=CHANSUM$(CHAN),TYPE=Float64,FTVL=DOUBLE,NELEMENTS=$(NUM_BINS)") + +#ROIStats: build 48 ROIs for each of the 1D spectra (per-frame). +NDROIStatConfigure("ROISTAT$(CHAN)", "$(QSIZE)", 0, "CHAN$(CHAN)", 0, 48, 0, 0) +dbLoadRecords("NDROIStat.template", "P=$(PREFIX),R=MCA$(CHAN)ROI: ,PORT=ROISTAT$(CHAN),ADDR=0,TIMEOUT=1, NDARRAY_PORT=CHAN$(CHAN),NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:1:,PORT=ROISTAT$(CHAN),ADDR=0,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:2:,PORT=ROISTAT$(CHAN),ADDR=1,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:3:,PORT=ROISTAT$(CHAN),ADDR=2,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:4:,PORT=ROISTAT$(CHAN),ADDR=3,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:5:,PORT=ROISTAT$(CHAN),ADDR=4,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:6:,PORT=ROISTAT$(CHAN),ADDR=5,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:7:,PORT=ROISTAT$(CHAN),ADDR=6,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:8:,PORT=ROISTAT$(CHAN),ADDR=7,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:9:,PORT=ROISTAT$(CHAN),ADDR=8,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:10:,PORT=ROISTAT$(CHAN),ADDR=9,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:11:,PORT=ROISTAT$(CHAN),ADDR=10,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:12:,PORT=ROISTAT$(CHAN),ADDR=11,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:13:,PORT=ROISTAT$(CHAN),ADDR=12,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:14:,PORT=ROISTAT$(CHAN),ADDR=13,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:15:,PORT=ROISTAT$(CHAN),ADDR=14,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:16:,PORT=ROISTAT$(CHAN),ADDR=15,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:17:,PORT=ROISTAT$(CHAN),ADDR=16,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:18:,PORT=ROISTAT$(CHAN),ADDR=17,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:19:,PORT=ROISTAT$(CHAN),ADDR=18,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:20:,PORT=ROISTAT$(CHAN),ADDR=19,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:21:,PORT=ROISTAT$(CHAN),ADDR=20,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:22:,PORT=ROISTAT$(CHAN),ADDR=21,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:23:,PORT=ROISTAT$(CHAN),ADDR=22,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:24:,PORT=ROISTAT$(CHAN),ADDR=23,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:25:,PORT=ROISTAT$(CHAN),ADDR=24,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:26:,PORT=ROISTAT$(CHAN),ADDR=25,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:27:,PORT=ROISTAT$(CHAN),ADDR=26,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:28:,PORT=ROISTAT$(CHAN),ADDR=27,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:29:,PORT=ROISTAT$(CHAN),ADDR=28,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:30:,PORT=ROISTAT$(CHAN),ADDR=29,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:31:,PORT=ROISTAT$(CHAN),ADDR=30,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:32:,PORT=ROISTAT$(CHAN),ADDR=31,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:33:,PORT=ROISTAT$(CHAN),ADDR=32,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:34:,PORT=ROISTAT$(CHAN),ADDR=33,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:35:,PORT=ROISTAT$(CHAN),ADDR=34,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:36:,PORT=ROISTAT$(CHAN),ADDR=35,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:37:,PORT=ROISTAT$(CHAN),ADDR=36,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:38:,PORT=ROISTAT$(CHAN),ADDR=37,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:39:,PORT=ROISTAT$(CHAN),ADDR=38,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:40:,PORT=ROISTAT$(CHAN),ADDR=39,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:41:,PORT=ROISTAT$(CHAN),ADDR=40,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:42:,PORT=ROISTAT$(CHAN),ADDR=41,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:43:,PORT=ROISTAT$(CHAN),ADDR=42,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:44:,PORT=ROISTAT$(CHAN),ADDR=43,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:45:,PORT=ROISTAT$(CHAN),ADDR=44,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:46:,PORT=ROISTAT$(CHAN),ADDR=45,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:47:,PORT=ROISTAT$(CHAN),ADDR=46,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") +dbLoadRecords("NDROIStatN.template", "P=$(PREFIX),R=MCA$(CHAN)ROI:48:,PORT=ROISTAT$(CHAN),ADDR=47,TIMEOUT=1,NCHANS=$(MAX_FRAMES)") diff --git a/roles/device_roles/xspress3/files/SetChannelValues.cmd b/roles/device_roles/xspress3/files/SetChannelValues.cmd new file mode 100644 index 00000000..54cb1971 --- /dev/null +++ b/roles/device_roles/xspress3/files/SetChannelValues.cmd @@ -0,0 +1,103 @@ +# Load Default values for a single channel + +dbpf("$(PREFIX)ROI$(CHAN):MinY", "$(CHM1)") +dbpf("$(PREFIX)ROISUM$(CHAN):MinY", "$(CHM1)") + +# Disable SCA callbacks by default, otherwise performance is impacted a lot. +dbpf("$(PREFIX)C$(CHAN)SCA:EnableCallbacks", "Disable") + +dbpf("$(PREFIX)C$(CHAN)SCA:0:AttrName", "CHAN$(CHAN)SCA0") +dbpf("$(PREFIX)C$(CHAN)SCA:1:AttrName", "CHAN$(CHAN)SCA1") +dbpf("$(PREFIX)C$(CHAN)SCA:2:AttrName", "CHAN$(CHAN)SCA2") +dbpf("$(PREFIX)C$(CHAN)SCA:3:AttrName", "CHAN$(CHAN)SCA3") +dbpf("$(PREFIX)C$(CHAN)SCA:4:AttrName", "CHAN$(CHAN)SCA4") +dbpf("$(PREFIX)C$(CHAN)SCA:5:AttrName", "CHAN$(CHAN)SCA5") +dbpf("$(PREFIX)C$(CHAN)SCA:6:AttrName", "CHAN$(CHAN)SCA6") +dbpf("$(PREFIX)C$(CHAN)SCA:7:AttrName", "CHAN$(CHAN)SCA7") +dbpf("$(PREFIX)C$(CHAN)SCA:8:AttrName", "CHAN$(CHAN)EventWidth") +dbpf("$(PREFIX)C$(CHAN)SCA:9:AttrName", "CHAN$(CHAN)DTFactor") +dbpf("$(PREFIX)C$(CHAN)SCA:10:AttrName", "CHAN$(CHAN)DTPercent") + +dbpf("$(PREFIX)C$(CHAN)SCA:TS:0:Name", "CHAN$(CHAN)SCA0") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:1:Name", "CHAN$(CHAN)SCA1") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:2:Name", "CHAN$(CHAN)SCA2") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:3:Name", "CHAN$(CHAN)SCA3") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:4:Name", "CHAN$(CHAN)SCA4") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:5:Name", "CHAN$(CHAN)SCA5") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:6:Name", "CHAN$(CHAN)SCA6") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:7:Name", "CHAN$(CHAN)SCA7") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:8:Name", "CHAN$(CHAN)EventWidth") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:9:Name", "CHAN$(CHAN)DTFactor") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:10:Name", "CHAN$(CHAN)DTPercent") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:NDArrayAddress", "1") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:TSAcquireMode", "0") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:TSNumPoints", "NCHANS=$(MAX_FRAMES)") +dbpf("$(PREFIX)C$(CHAN)SCA:TS:TSRead.SCAN", ".5 second") + +dbpf("$(PREFIX)ROI$(CHAN):EnableX", "Enable") +dbpf("$(PREFIX)ROI$(CHAN):EnableY", "Enable") +dbpf("$(PREFIX)ROI$(CHAN):EnableZ", "Disable") +dbpf("$(PREFIX)ROI$(CHAN):SizeY", "1") +dbpf("$(PREFIX)ROISUM$(CHAN):EnableX", "Enable") +dbpf("$(PREFIX)ROISUM$(CHAN):EnableY", "Enable") +dbpf("$(PREFIX)ROISUM$(CHAN):SizeY", "1") + +dbpf("$(PREFIX)ROI$(CHAN):EnableCallbacks", "Enable") +dbpf("$(PREFIX)MCA$(CHAN):EnableCallbacks", "Enable") +dbpf("$(PREFIX)ROISUM$(CHAN):EnableCallbacks", "Enable") +dbpf("$(PREFIX)MCASUM$(CHAN):EnableCallbacks", "Enable") +dbpf("$(PREFIX)MCA$(CHAN)ROI:EnableCallbacks", "Enable") +dbpf("$(PREFIX)MCA$(CHAN)ROI:TSNumPoints", "NCHANS=$(MAX_FRAMES)") + +dbpf("$(PREFIX)MCA$(CHAN):ArrayData.LOPR", 0.5) +#dbpf("$(PREFIX)C$(CHAN):DeadTime_RBV.SCAN", ".1 second") +#dbpf("$(PREFIX)C$(CHAN):DTFactor_RBV.SCAN", ".1 second") + +dbpf("$(PREFIX)MCA$(CHAN)ROI:1:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:2:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:3:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:4:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:5:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:6:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:7:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:8:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:9:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:10:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:11:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:12:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:13:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:14:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:15:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:16:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:17:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:18:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:19:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:20:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:21:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:22:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:23:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:24:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:25:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:26:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:27:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:28:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:29:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:30:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:31:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:32:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:33:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:34:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:35:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:36:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:37:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:38:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:39:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:40:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:41:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:42:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:43:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:44:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:45:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:46:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:47:Use", "Yes") +dbpf("$(PREFIX)MCA$(CHAN)ROI:48:Use", "Yes") diff --git a/roles/device_roles/xspress3/schema.yml b/roles/device_roles/xspress3/schema.yml new file mode 100644 index 00000000..22b3b354 --- /dev/null +++ b/roles/device_roles/xspress3/schema.yml @@ -0,0 +1,10 @@ +--- +type: enum("xspress3") +simulation: bool(required=False) +environment: + ENGINEER: str() + PREFIX: str() + NUM_CHANNELS: int(min=1) + NUM_CARDS: int(min=1) + XSPRESS3_IP: any(ip(), hostname()) + CALIBRATION_DIR: str() diff --git a/roles/device_roles/xspress3/tasks/main.yml b/roles/device_roles/xspress3/tasks/main.yml new file mode 100644 index 00000000..900a6e4d --- /dev/null +++ b/roles/device_roles/xspress3/tasks/main.yml @@ -0,0 +1,35 @@ +--- +# Tasks for xspress3 role + +- name: Install common startup files + ansible.builtin.copy: + src: "{{ item }}" + dest: "{{ deploy_ioc_ioc_directory }}/iocBoot" + owner: "{{ softioc_user }}" + group: "{{ softioc_group }}" + mode: "0664" + with_fileglob: "files/*.cmd" + +- name: Install auto_settings file + ansible.builtin.template: + src: "templates/auto_settings.req.j2" + dest: "{{ deploy_ioc_as_directory }}/req/auto_settings.req" + owner: "{{ softioc_user }}" + group: "{{ softioc_group }}" + mode: "0664" + +- name: Install base startup script + ansible.builtin.template: + src: "templates/base.cmd.j2" + dest: "{{ deploy_ioc_ioc_directory }}/iocBoot/base.cmd" + owner: "{{ softioc_user }}" + group: "{{ softioc_group }}" + mode: "0664" + +- name: Install postInit.cmd override + ansible.builtin.template: + src: "templates/postInit.cmd.j2" + dest: "{{ deploy_ioc_ioc_directory }}/iocBoot/postInit.cmd" + owner: "{{ softioc_user }}" + group: "{{ softioc_group }}" + mode: "0664" diff --git a/roles/device_roles/xspress3/templates/auto_settings.req.j2 b/roles/device_roles/xspress3/templates/auto_settings.req.j2 new file mode 100644 index 00000000..caaf4f68 --- /dev/null +++ b/roles/device_roles/xspress3/templates/auto_settings.req.j2 @@ -0,0 +1,57 @@ +file "ADBase_settings.req", P=$(P), R=det1: + +file "built_settings.req", P=$(P) +file "NDFileHDF5_settings.req", P=$(P), R=HDF1: +{% for i in range(ioc.environment.NUM_CHANNELS) %} +file "NDROIStat_settings.req", P=$(P), R=MCA{{ loop.index }}ROI: + +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:1: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:2: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:3: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:4: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:5: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:6: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:7: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:8: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:9: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:10: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:11: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:12: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:13: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:14: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:15: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:16: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:17: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:18: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:19: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:20: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:21: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:22: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:23: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:24: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:25: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:26: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:27: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:28: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:29: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:30: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:31: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:32: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:33: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:34: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:35: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:36: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:37: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:38: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:39: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:40: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:41: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:42: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:43: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:44: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:45: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:46: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:47: +file "NDROIStatN_settings.req", P=$(P), R=MCA{{ loop.index }}ROI:48: + +{% endfor %} diff --git a/roles/device_roles/xspress3/templates/base.cmd.j2 b/roles/device_roles/xspress3/templates/base.cmd.j2 new file mode 100644 index 00000000..b2b823ac --- /dev/null +++ b/roles/device_roles/xspress3/templates/base.cmd.j2 @@ -0,0 +1,72 @@ + +# xspress3 specific commands +# Device initialization +# --------------------- + +dbLoadDatabase("{{ deploy_ioc_template_root_path }}/dbd/{{ deploy_ioc_executable }}.dbd") +{{ deploy_ioc_executable }}_registerRecordDeviceDriver(pdbbase) + +# suppress "callbackRequest: cbLow ring buffer full" +callbackSetQueueSize(32768) + + +################################################## +# Start Xspress3 driver + +# Parameters +# portName: The Asyn port name to use +# numChannels: The max number of channels (eg. 8) +# numCards: The number of Xspress3 systems (normally 1) +# baseIP: The base address used by the Xspress3 1Gig and 10Gig interfaces (eg. "192.168.0.1") +# Max Frames: Used for XSPRESS3 API Configuration (depends on Xspress3 firmware config). +# Max Driver Frames: Used to limit how big EPICS driver arrays are. Needs to match database MAX_FRAMES_DRIVER_RBV. +# maxSpectra The maximum size of each spectra (eg. 4096) +# maxBuffers Used by asynPortDriver (set to 0 for unlimited) +# maxMemory Used by asynPortDriver (set to 0 for unlimited) +# debug This debug flag is passed to xsp3_config in the Xspress API (0 or 1) +# simTest 0 or 1. Set to 1 to run up this driver in simulation mode. +# circBuffer 0 or 1. set to 1 if more than 12216 frames required +{% if ioc.simulation is defined and ioc.simulation %} +epicsEnvSet("XS3_SIM", 1) +{% else %} +epicsEnvSet("XS3_SIM", 0) +{% endif %} +xspress3Config("$(PORT)", "$(NUM_CHANNELS)", "$(NUM_CARDS)", "$(XSPRESS3_IP)", "$(MAX_FRAMES)", "$(MAX_DRV_FRAMES)", "$(NUM_BINS)", 0, 0, 0, "$(XS3_SIM)", "$(CIRC_BUFFER)") + +# +# Create a processing plugin + +NDProcessConfigure("PROC1", $(QSIZE), 0, "$(PORT)", 0, 0, 0) +dbLoadRecords("$(ADCORE)/db/NDProcess.template", "P=$(PREFIX),R=Proc1:, PORT=PROC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)") + +# Create an HDF5 file saving plugin +NDFileHDF5Configure("FileHDF1", $(QSIZE), 0, "$(PORT)", 0) +dbLoadRecords("$(ADCORE)/db/NDFileHDF5.template", "P=$(PREFIX),R=HDF1:,PORT=FileHDF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)") + +# load main template +dbLoadRecords("$(XSPRESS3)/db/xspress3.template","P=$(PREFIX),R=det1:,PORT=$(PORT), ADDR=0, TIMEOUT=5, MAX_SPECTRA=$(NUM_BINS), MAX_FRAMES=$(MAX_FRAMES), HDF=$(PREFIX)HDF1:, PROC=$(PREFIX)Proc1:") + +# Optional: load devIocStats records (default config includes DEVIOCSTATS module), must define IOC_PREFIX in st.cmd +dbLoadRecords("$(DEVIOCSTATS)/db/iocAdminSoft.db", "IOC=$(IOC_PREFIX)") + +############################### +# DEFINE CHANNELS + +{% for i in range(ioc.environment.NUM_CHANNELS) %} +# Channel {{ loop.index }} +epicsEnvSet("CHAN", "{{ loop.index }}") +epicsEnvSet("CHM1", "{{ loop.index - 1 }}") +< ./DefineSCAROI.cmd +{% endfor %} + +############################### + +dbLoadRecords("$(XSPRESS3)/db/xspress3Deadtime_{{ ioc.environment.NUM_CHANNELS }}Channel.template", "P=$(PREFIX)") + +set_requestfile_path("$(TOP)/{{ deploy_ioc_as_dir_name }}/req") +set_requestfile_path("$(ADCORE)", "db") +set_requestfile_path("$(AUTOSAVE)", "db") +set_requestfile_path("$(BUSY)", "db") +set_requestfile_path("$(CALC)", "db") +set_requestfile_path("$(XSPRESS3)","db") +set_requestfile_path("$(SSCAN)", "db") diff --git a/roles/device_roles/xspress3/templates/postInit.cmd.j2 b/roles/device_roles/xspress3/templates/postInit.cmd.j2 new file mode 100644 index 00000000..011c7e8b --- /dev/null +++ b/roles/device_roles/xspress3/templates/postInit.cmd.j2 @@ -0,0 +1,34 @@ + +cd $(TOP)/{{ deploy_ioc_as_dir_name }}/req + +{% if deploy_ioc_make_autosave_files %} +makeAutosaveFiles() +create_monitor_set("info_settings.req", 30, "") +create_monitor_set("info_positions.req", 10, "") + +{% endif %} +{% for reqfile in deploy_ioc_req_file_list %} +create_monitor_set("{{ reqfile.name }}", 30, "{{ reqfile.macros }}") +{% endfor %} + +{% for dbpf in deploy_ioc_dbpf_list %} +dbpf "{{ dbpf.pv }}", "{{ dbpf.value }}" +{% if dbpf.sleep is defined %} +epicsThreadSleep({{ dbpf.sleep }}) +{% endif %} +{% endfor %} + + +############################### +# SET UP CHANNELS + +{% for i in range(ioc.environment.NUM_CHANNELS) %} +# Channel {{ loop.index }} +epicsEnvSet("CHAN", "{{ loop.index }}") +epicsEnvSet("CHM1", "{{ loop.index - 1 }}") +< ./SetChannelValues.cmd +{% endfor %} + +############################### + +cd $(TOP) diff --git a/roles/install_module/vars/xspress3_911d16d.yml b/roles/install_module/vars/xspress3_911d16d.yml new file mode 100644 index 00000000..07b6a7a1 --- /dev/null +++ b/roles/install_module/vars/xspress3_911d16d.yml @@ -0,0 +1,8 @@ +--- +xspress3_911d16d: + name: xspress3 + version: 911d16d + url: https://github.com/epics-modules/xspress3 + include_base_ad_config: true + module_deps: + - adcore_60080dc