1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: Driver for Eiger1 with SIMPLON 1.8.0 |
From: | Rong Huang via Tech-talk <tech-talk at aps.anl.gov> |
To: | Mark Rivers <rivers at cars.uchicago.edu> |
Cc: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Tue, 25 Jun 2024 17:02:45 -0500 |
Hi Mark,In my eigerDetector.cpp, line 61:static const string DRIVER_VERSION("3.4.0");RongOn Tue, Jun 25, 2024 at 4:41 PM Mark Rivers <rivers at cars.uchicago.edu> wrote:eigerApp/src/restApi.h defines the versions:
typedef enum {
API_1_6_0,
API_1_8_0
} eigerAPIVersion_t;
So API_1_6_0 = 0 and API_1_8_0=1. The fact that you are getting 1 means it is returning the correct value.
I suspect you may have an old version of the driver, because as I said before the new version does not try to access parameters like LINK_0, etc. unless the detector is using API_1_6_0.
You need to figure out what version of the driver you are running. There is a line that defines DRIVER_VERSION in eigerDetector.cpp:
static const string DRIVER_VERSION("3.4.0");
What does yours say?
If you are running a git clone then you can do
git status to find what version you are using.
Mark
From: Rong Huang <ronghuang at ls-cat.org>
Sent: Tuesday, June 25, 2024 4:34 PM
To: Mark Rivers <rivers at cars.uchicago.edu>
Cc: tech-talk at aps.anl.gov
Subject: Re: Driver for Eiger1 with SIMPLON 1.8.0
Hi Mark,
After "mAPIVersion = mApi.getAPIVersion();", I added "std::cout << "mAPIVersion: " << mAPIVersion << std::endl;" and the printout is:
mAPIVersion: 1
Not sure what else to check
Thanks,
Rong
On Tue, Jun 25, 2024 at 2:00 PM Mark Rivers <rivers at cars.uchicago.edu> wrote:
The areaDetector driver works with Simplon 1.8.0. See the screenshot here:
https://areadetector.github.io/areaDetector/ADEiger/eiger.html#medm-screens
The unknown parameters are only present in the Simplon 1.6, not 1.8.0. The driver only tries to create those parameters if it thinks the detector is running Simplon 1.6.0.
I can think of 2 possible reasons for the error messages:
- You are running an old version of the driver that did not do this test.
- The driver is not correctly detecting that your detector is running the Simplon 1.8.0 API.
This is where it reads the API version:
You could add some debugging to see what value it is getting in that call.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov> On Behalf Of Rong Huang via Tech-talk
Sent: Tuesday, June 25, 2024 1:07 PM
To: tech-talk at aps.anl.gov
Subject: Driver for Eiger1 with SIMPLON 1.8.0
Hello,
We have an Eiger X Si 9M detector using SIMPLON 1.8.0, and we would like to use EPICS areaDetector driver.
Simply tried areaDetector-R3-13, iocEiger1, but it has IOC startup errors. I am not sure about the version of ADEiger, but likely a recent release on github.
Should we roll back to SIMPLON 1.6? Or is there something I have overlooked during installation? Or the IOC startup errors can just be ignored? (cannot find parameters of DCU_BUF_FREE, CLEAR, LINK_0, LINK_1, LINK_2, LINK_3).
Thanks,
Rong
######## IOC startup printout #############
#!../../bin/linux-x86_64/eigerDetectorApp
< envPaths
epicsEnvSet("IOC","iocEiger1")
epicsEnvSet("TOP","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC")
epicsEnvSet("ADEIGER","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../..")
epicsEnvSet("SUPPORT","/opt/epics/synApps-R6-2-1/support")
epicsEnvSet("ASYN","/opt/epics/synApps-R6-2-1/support/asyn-R4-44-2")
epicsEnvSet("AREA_DETECTOR","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13")
epicsEnvSet("ADSUPPORT","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADSupport")
epicsEnvSet("ADCORE","/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore")
epicsEnvSet("AUTOSAVE","/opt/epics/synApps-R6-2-1/support/autosave-R5-11")
epicsEnvSet("BUSY","/opt/epics/synApps-R6-2-1/support/busy-R1-7-4")
epicsEnvSet("CALC","/opt/epics/synApps-R6-2-1/support/calc-R3-7-5")
epicsEnvSet("SNCSEQ","/opt/epics/synApps-R6-2-1/support/seq-R2-2-9")
epicsEnvSet("SSCAN","/opt/epics/synApps-R6-2-1/support/sscan-R2-11-6")
epicsEnvSet("DEVIOCSTATS","/opt/epics/synApps-R6-2-1/support/iocStats-3-2-0")
epicsEnvSet("EPICS_BASE","/opt/epics/base")
errlogInit(20000)
dbLoadDatabase("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/dbd/eigerDetectorApp.dbd")
eigerDetectorApp_registerRecordDeviceDriver(pdbbase)
epicsEnvSet("PREFIX", "21EIG1:")
epicsEnvSet("PORT", "EIG")
epicsEnvSet("QSIZE", "20") # The queue size for all plugins
epicsEnvSet("XSIZE", "3110") # The maximim image width;
# used for row profiles in the NDPluginStats plugin # RH: # of pixels
epicsEnvSet("YSIZE", "3269") # The maximim image height;
# used for column profiles in the NDPluginStats plugin # RH: # of pixels
epicsEnvSet("NCHANS", "2048")
# The maximum number of time series points in the NDPluginStats plugin
epicsEnvSet("CBUFFS", "500")
# The maximum number of frames buffered in the NDPluginCircularBuff plugin
# This is an Eiger1 500K
# epicsEnvSet("EIGERIP", "10.54.160.234")
epicsEnvSet("EIGERIP", "164.54.252.45") # fig
epicsEnvSet("EPICS_DB_INCLUDE_PATH", "/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db:/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../../db")
epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "5000000")
eigerDetectorConfig("EIG", "164.54.252.45", 0, 0)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../../db/eiger1.template", "P=21EIG1:,R=cam1:,PORT=EIG,ADDR=0,TIMEOUT=1")
# Debug
#asynSetTraceMask("$(PORT)", 0, 0x11)
# Create a standard arrays plugin
NDStdArraysConfigure("Image1", 5, 0, "EIG", 0, 0)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDStdArrays.template", "P=21EIG1:,R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,TYPE=Int32,FTVL=LONG,NELEMENTS=1096950, NDARRAY_PORT=EIG")
NDStdArraysConfigure("Image2", 5, 0, "EIG", 1, 0)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDStdArrays.template", "P=21EIG1:,R=image2:,PORT=Image2,ADDR=0,TIMEOUT=1,TYPE=Int32,FTVL=LONG,NELEMENTS=1096950, NDARRAY_PORT=EIG")
# Load all other plugins using commonPlugins.cmd
< /opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/iocBoot/commonPlugins.cmd
# This is an example file for creating plugins
# It uses the following environment variable macros
# Many of the parameters defined in this file are also in commonPlugins_settings.req so if autosave is being
# use the autosave value will replace the value passed to this file.
# $(PREFIX) Prefix for all records
# $(PORT) The port name for the detector. In autosave.
# $(QSIZE) The queue size for all plugins. In autosave.
# $(XSIZE) The maximum image width; used to set the maximum size for row profiles in the NDPluginStats plugin and 1-D FFT
# profiles in NDPluginFFT.
# $(YSIZE) The maximum image height; used to set the maximum size for column profiles in the NDPluginStats plugin
# $(NCHANS) The maximum number of time series points in the NDPluginStats, NDPluginROIStats, and NDPluginAttribute plugins
# $(CBUFFS) The maximum number of frames buffered in the NDPluginCircularBuff plugin
# $(MAX_THREADS) The maximum number of threads for plugins which can run in multiple threads. Defaults to 5.
# Create a netCDF file saving plugin
NDFileNetCDFConfigure("FileNetCDF1", 20, 0, "EIG", 0)
dbLoadRecords("NDFileNetCDF.template","P=21EIG1:,R=netCDF1:,PORT=FileNetCDF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create a TIFF file saving plugin
NDFileTIFFConfigure("FileTIFF1", 20, 0, "EIG", 0)
dbLoadRecords("NDFileTIFF.template", "P=21EIG1:,R=TIFF1:,PORT=FileTIFF1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create a JPEG file saving plugin
NDFileJPEGConfigure("FileJPEG1", 20, 0, "EIG", 0)
dbLoadRecords("NDFileJPEG.template", "P=21EIG1:,R=JPEG1:,PORT=FileJPEG1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create a NeXus file saving plugin
NDFileNexusConfigure("FileNexus1", 20, 0, "EIG", 0)
dbLoadRecords("NDFileNexus.template", "P=21EIG1:,R=Nexus1:,PORT=FileNexus1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create an HDF5 file saving plugin
NDFileHDF5Configure("FileHDF1", 20, 0, "EIG", 0)
dbLoadRecords("NDFileHDF5.template", "P=21EIG1:,R=HDF1:,PORT=FileHDF1,ADDR=0,TIMEOUT=1,XMLSIZE=2048,NDARRAY_PORT=EIG")
# Create a Magick file saving plugin
#NDFileMagickConfigure("FileMagick1", $(QSIZE), 0, "$(PORT)", 0)
#dbLoadRecords("NDFileMagick.template","P=$(PREFIX),R=Magick1:,PORT=FileMagick1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
# Create 4 ROI plugins
NDROIConfigure("ROI1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=21EIG1:,R=ROI1:, PORT=ROI1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
NDROIConfigure("ROI2", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=21EIG1:,R=ROI2:, PORT=ROI2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
NDROIConfigure("ROI3", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=21EIG1:,R=ROI3:, PORT=ROI3,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
NDROIConfigure("ROI4", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDROI.template", "P=21EIG1:,R=ROI4:, PORT=ROI4,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create 8 ROIStat plugins
NDROIStatConfigure("ROISTAT1", 20, 0, "EIG", 0, 8, 0, 0, 0, 0, 5)
dbLoadRecords("NDROIStat.template", "P=21EIG1:,R=ROIStat1: ,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:1:,PORT=ROISTAT1,ADDR=0,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:2:,PORT=ROISTAT1,ADDR=1,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:3:,PORT=ROISTAT1,ADDR=2,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:4:,PORT=ROISTAT1,ADDR=3,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:5:,PORT=ROISTAT1,ADDR=4,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:6:,PORT=ROISTAT1,ADDR=5,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:7:,PORT=ROISTAT1,ADDR=6,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDROIStatN.template", "P=21EIG1:,R=ROIStat1:8:,PORT=ROISTAT1,ADDR=7,TIMEOUT=1,NCHANS=2048")
# Create a processing plugin
NDProcessConfigure("PROC1", 20, 0, "EIG", 0, 0, 0)
dbLoadRecords("NDProcess.template", "P=21EIG1:,R=Proc1:, PORT=PROC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create a TIFF file plugin to read dark and flatfield images into the processing plugin
NDFileTIFFConfigure("PROC1TIFF", 20, 0, "EIG", 0)
dbLoadRecords("NDFileTIFF.template", "P=21EIG1:,R=Proc1:TIFF:,PORT=PROC1TIFF,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create a scatter plugin
NDScatterConfigure("SCATTER1", 20, 0, "EIG", 0, 0, 0)
dbLoadRecords("NDScatter.template", "P=21EIG1:,R=Scatter1:, PORT=SCATTER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create a gather plugin with 8 ports
NDGatherConfigure("GATHER1", 20, 0, 8, 0, 0)
dbLoadRecords("NDGather.template", "P=21EIG1:,R=Gather1:, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=1, PORT=GATHER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=2, PORT=GATHER1,ADDR=1,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=3, PORT=GATHER1,ADDR=2,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=4, PORT=GATHER1,ADDR=3,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=5, PORT=GATHER1,ADDR=4,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=6, PORT=GATHER1,ADDR=5,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=7, PORT=GATHER1,ADDR=6,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDGatherN.template", "P=21EIG1:,R=Gather1:, N=8, PORT=GATHER1,ADDR=7,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create 5 statistics plugins
NDStatsConfigure("STATS1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDStats.template", "P=21EIG1:,R=Stats1:, PORT=STATS1,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")
NDTimeSeriesConfigure("STATS1_TS", 20, 0, "STATS1", 1, 23)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template", "P=21EIG1:,R=Stats1:TS:, PORT=STATS1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS1,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")
NDStatsConfigure("STATS2", 20, 0, "ROI1", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDStats.template", "P=21EIG1:,R=Stats2:, PORT=STATS2,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")
NDTimeSeriesConfigure("STATS2_TS", 20, 0, "STATS2", 1, 23)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template", "P=21EIG1:,R=Stats2:TS:, PORT=STATS2_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS2,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")
NDStatsConfigure("STATS3", 20, 0, "ROI2", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDStats.template", "P=21EIG1:,R=Stats3:, PORT=STATS3,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")
NDTimeSeriesConfigure("STATS3_TS", 20, 0, "STATS3", 1, 23)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template", "P=21EIG1:,R=Stats3:TS:, PORT=STATS3_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS3,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")
NDStatsConfigure("STATS4", 20, 0, "ROI3", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDStats.template", "P=21EIG1:,R=Stats4:, PORT=STATS4,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")
NDTimeSeriesConfigure("STATS4_TS", 20, 0, "STATS4", 1, 23)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template", "P=21EIG1:,R=Stats4:TS:, PORT=STATS4_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS4,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")
NDStatsConfigure("STATS5", 20, 0, "ROI4", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDStats.template", "P=21EIG1:,R=Stats5:, PORT=STATS5,ADDR=0,TIMEOUT=1,HIST_SIZE=256,XSIZE=3110,YSIZE=3269,NCHANS=2048,NDARRAY_PORT=EIG")
NDTimeSeriesConfigure("STATS5_TS", 20, 0, "STATS5", 1, 23)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template", "P=21EIG1:,R=Stats5:TS:, PORT=STATS5_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=STATS5,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")
# Create a transform plugin
NDTransformConfigure("TRANS1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDTransform.template", "P=21EIG1:,R=Trans1:, PORT=TRANS1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create an overlay plugin with 8 overlays
NDOverlayConfigure("OVER1", 20, 0, "EIG", 0, 8, 0, 0, 0, 0, 5)
dbLoadRecords("NDOverlay.template", "P=21EIG1:,R=Over1:, PORT=OVER1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:1:,NAME=ROI1, SHAPE=1,O=Over1:,XPOS=21EIG1:ROI1:MinX_RBV,YPOS=21EIG1:ROI1:MinY_RBV,XSIZE=21EIG1:ROI1:SizeX_RBV,YSIZE=21EIG1:ROI1:SizeY_RBV,PORT=OVER1,ADDR=0,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:2:,NAME=ROI2, SHAPE=1,O=Over1:,XPOS=21EIG1:ROI2:MinX_RBV,YPOS=21EIG1:ROI2:MinY_RBV,XSIZE=21EIG1:ROI2:SizeX_RBV,YSIZE=21EIG1:ROI2:SizeY_RBV,PORT=OVER1,ADDR=1,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:3:,NAME=ROI3, SHAPE=1,O=Over1:,XPOS=21EIG1:ROI3:MinX_RBV,YPOS=21EIG1:ROI3:MinY_RBV,XSIZE=21EIG1:ROI3:SizeX_RBV,YSIZE=21EIG1:ROI3:SizeY_RBV,PORT=OVER1,ADDR=2,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:4:,NAME=ROI4, SHAPE=1,O=Over1:,XPOS=21EIG1:ROI4:MinX_RBV,YPOS=21EIG1:ROI4:MinY_RBV,XSIZE=21EIG1:ROI4:SizeX_RBV,YSIZE=21EIG1:ROI4:SizeY_RBV,PORT=OVER1,ADDR=3,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:5:,NAME=Cursor1,SHAPE=1,O=Over1:,XPOS=junk, YPOS=junk, XSIZE=junk, YSIZE=junk, PORT=OVER1,ADDR=4,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:6:,NAME=Cursor2,SHAPE=1,O=Over1:,XPOS=junk, YPOS=junk, XSIZE=junk, YSIZE=junk, PORT=OVER1,ADDR=5,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:7:,NAME=Box1, SHAPE=1,O=Over1:,XPOS=junk, YPOS=junk, XSIZE=junk, YSIZE=junk, PORT=OVER1,ADDR=6,TIMEOUT=1")
dbLoadRecords("NDOverlayN.template","P=21EIG1:,R=Over1:8:,NAME=Box2, SHAPE=1,O=Over1:,XPOS=junk, YPOS=junk, XSIZE=junk, YSIZE=junk, PORT=OVER1,ADDR=7,TIMEOUT=1")
# Create 2 color conversion plugins
NDColorConvertConfigure("CC1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDColorConvert.template", "P=21EIG1:,R=CC1:, PORT=CC1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
NDColorConvertConfigure("CC2", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDColorConvert.template", "P=21EIG1:,R=CC2:, PORT=CC2,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create a circular buffer plugin
NDCircularBuffConfigure("CB1", 20, 0, "EIG", 0, 500, 0)
dbLoadRecords("NDCircularBuff.template", "P=21EIG1:,R=CB1:, PORT=CB1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
# Create an NDAttribute plugin with 8 attributes
NDAttrConfigure("ATTR1", 20, 0, "EIG", 0, 8, 0, 0, 0)
dbLoadRecords("NDAttribute.template", "P=21EIG1:,R=Attr1:, PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048,NDARRAY_PORT=EIG")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:1:, PORT=ATTR1,ADDR=0,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:2:, PORT=ATTR1,ADDR=1,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:3:, PORT=ATTR1,ADDR=2,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:4:, PORT=ATTR1,ADDR=3,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:5:, PORT=ATTR1,ADDR=4,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:6:, PORT=ATTR1,ADDR=5,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:7:, PORT=ATTR1,ADDR=6,TIMEOUT=1,NCHANS=2048")
dbLoadRecords("NDAttributeN.template", "P=21EIG1:,R=Attr1:8:, PORT=ATTR1,ADDR=7,TIMEOUT=1,NCHANS=2048")
NDTimeSeriesConfigure("ATTR1_TS", 20, 0, "ATTR1", 1, 8)
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db/NDTimeSeries.template", "P=21EIG1:,R=Attr1:TS:, PORT=ATTR1_TS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=ATTR1,NDARRAY_ADDR=1,NCHANS=2048,ENABLED=1")
# Create an FFT plugin
NDFFTConfigure("FFT1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDFFT.template", "P=21EIG1:, R=FFT1:, PORT=FFT1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG, NAME=FFT1, NCHANS=3110")
# Create 2 Codec plugins
NDCodecConfigure("CODEC1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDCodec.template", "P=21EIG1:, R=Codec1:, PORT=CODEC1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG")
NDCodecConfigure("CODEC2", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDCodec.template", "P=21EIG1:, R=Codec2:, PORT=CODEC2, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG")
# Create a bad pixel plugin
NDBadPixelConfigure("BADPIX1", 20, 0, "EIG", 0, 0, 0, 0, 0, 5)
dbLoadRecords("NDBadPixel.template", "P=21EIG1:, R=BadPix1:, PORT=BADPIX1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=EIG")
set_requestfile_path("./")
set_requestfile_path("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/db")
set_requestfile_path("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADCore/iocBoot")
set_requestfile_path("/opt/epics/synApps-R6-2-1/support/autosave-R5-11/db")
set_savefile_path("./autosave")
set_pass0_restoreFile("auto_settings.sav")
set_pass1_restoreFile("auto_settings.sav")
save_restoreSet_status_prefix("21EIG1:")
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/autosave-R5-11/db/save_restoreStatus.db", "P=21EIG1:")
dbLoadRecords("/opt/epics/synApps-R6-2-1/support/autosave-R5-11/db/configMenu.db", "P=21EIG1:, CONFIG=ADAutoSave")
# Load NDPluginPva plugin
NDPvaConfigure("PVA1", 20, 0, "EIG", 0, 21EIG1:Pva1:Image, 0, 0, 0)
dbLoadRecords("NDPva.template", "P=21EIG1:,R=Pva1:, PORT=PVA1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=EIG")
#Must start PVA server if this is enabled
startPVAServer
# Optional: load ffmpegServer plugin
#ffmpegServerConfigure(8081)
#ffmpegStreamConfigure("FfmStream1", 2, 0, "$(PORT)", 0, -1, 0)
#dbLoadRecords("$(FFMPEGSERVER)/db/ffmpegStream.template", "P=$(PREFIX),R=ffmstream1:,PORT=FfmStream1,NDARRAY_PORT=$(PORT)")
#ffmpegFileConfigure("FfmFile1", 16, 0, "$(PORT)", 0, -1, 0)
#dbLoadRecords("$(FFMPEGSERVER)/db/ffmpegFile.template", "P=$(PREFIX),R=ffmfile1:,PORT=FfmFile1,NDARRAY_PORT=$(PORT)")
#set_requestfile_path("$(FFMPEGSERVER)/db")
# Optional: load NDPluginEdge plugin
#NDEdgeConfigure("EDGE1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0)
#dbLoadRecords("$(ADPLUGINEDGE)/db/NDEdge.template", "P=$(PREFIX),R=Edge1:, PORT=EDGE1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
#set_requestfile_path("$(ADPLUGINEDGE)/db")
# Optional: load NDPluginCV plugin
#NDCVConfigure("CV1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5))
#dbLoadRecords("$(ADCOMPVISION)/db/NDCV.template", "P=$(PREFIX),R=CV1:, PORT=CV1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
#set_requestfile_path("$(ADCOMPVISION)/db")
# Optional: load NDPluginBar plugin
#NDBarConfigure("BAR1", $(QSIZE), 0, "$(PORT)", 0, 0, 0, 0, 0, $(MAX_THREADS=5))
#dbLoadRecords("$(ADPLUGINBAR)/db/NDBar.template", "P=$(PREFIX),R=Bar1:, PORT=BAR1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
#set_requestfile_path("$(ADPLUGINBAR)/db")
# Optional: load scan records
#dbLoadRecords("$(SSCAN)/db/scan.db", "P=$(PREFIX),MAXPTS1=2000,MAXPTS2=200,MAXPTS3=20,MAXPTS4=10,MAXPTSH=10")
#set_requestfile_path("$(SSCAN)/db")
# Optional: load sseq record for acquisition sequence
#dbLoadRecords("$(CALC)/db/sseqRecord.db", "P=$(PREFIX), S=AcquireSequence")
#set_requestfile_path("$(CALC)/db")
# Optional: load devIocStats records (requires DEVIOCSTATS module)
#dbLoadRecords("$(DEVIOCSTATS)/db/iocAdminSoft.db", "IOC=$(PREFIX)")
# Optional: load alive record (requires ALIVE module)
#dbLoadRecords("$(ALIVE)/db/alive.db", "P=$(PREFIX),RHOST=192.168.1.254")
# Set the callback queue size to 5000, up from default of 2000 in base.
# This can be needed to avoid errors "callbackRequest: cbLow ring buffer full".
callbackSetQueueSize(5000)
set_requestfile_path("/opt/epics/synApps-R6-2-1/support/areaDetector-R3-13/ADEiger/iocs/eigerIOC/../../eigerApp/Db")
# RH: to remove error of "unable to open file sseq_settings.req. Exiting"
# triggered by "auto_settings.req" -> "commonPlugin_settings.req" -> "NDStats_settings.req"
# -> "sseq_settings.req". https://epics.anl.gov/tech-talk/2020/msg00305.php
set_requestfile_path("/opt/epics/synApps-R6-2-1/support/calc-R3-7-5/calcApp/Db")
iocInit()
Starting iocInit
############################################################################
## EPICS R7.0.8
## Rev. 2024-04-05T14:18-0500
## Rev. Date build date/time:
############################################################################
2024/06/25 12:54:49.891 asynPortDriver:drvUserCreate: addr=0, cannot find parameter DCU_BUF_FREE
21EIG1:cam1:DCUBufferFree_RBV devAsynFloat64::initCommon drvUserCreate
2024/06/25 12:54:49.900 asynPortDriver:drvUserCreate: addr=0, cannot find parameter CLEAR
21EIG1:cam1:FWClear devAsynInt32::initCommon drvUserCreate
recGblRecordError: ao: init_record Error (514,11) PV: 21EIG1:cam1:FWClear
2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_0
21EIG1:cam1:Link0_RBV devAsynInt32::initCommon drvUserCreate
2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_1
21EIG1:cam1:Link1_RBV devAsynInt32::initCommon drvUserCreate
2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_2
21EIG1:cam1:Link2_RBV devAsynInt32::initCommon drvUserCreate
2024/06/25 12:54:49.943 asynPortDriver:drvUserCreate: addr=0, cannot find parameter LINK_3
21EIG1:cam1:Link3_RBV devAsynInt32::initCommon drvUserCreate
iocRun: All initialization complete
# Avoid deluge of messages when debugging
#dbpf $(PREFIX)cam1:PoolUsedMem.SCAN Passive
# save things every thirty seconds
create_monitor_set("auto_settings.req", 30, "P=21EIG1:")
epics> auto_settings.sav: 2372 of 2372 PV's connected