# Must have loaded envPaths via st.cmd.* errlogInit(20000) dbLoadDatabase("$(TOP)/dbd/NDDriverStdArraysApp.dbd") NDDriverStdArraysApp_registerRecordDeviceDriver(pdbbase) # Prefix for all records epicsEnvSet("PREFIX", "13NDSA1:") # The port name for the detector epicsEnvSet("PORT", "NDSA") # The queue size for all plugins epicsEnvSet("QSIZE", "20") # The maximim image width; used to set the maximum size for this driver and for row profiles in the NDPluginStats plugin epicsEnvSet("XSIZE", "1024") # The maximim image height; used to set the maximum size for this driver and for column profiles in the NDPluginStats plugin epicsEnvSet("YSIZE", "1024") # The maximum number of time series points in the NDPluginStats plugin epicsEnvSet("NCHANS", "2048") # The maximum number of frames buffered in the NDPluginCircularBuff plugin epicsEnvSet("CBUFFS", "500") # The search path for database files epicsEnvSet("EPICS_DB_INCLUDE_PATH", "$(ADCORE)/db") # The number of elements in the driver waveform record epicsEnvSet("NELEMENTS", 2000000) # The datatype of the waveform record epicsEnvSet("FTVL", "FLOAT") # The asyn interface waveform record epicsEnvSet("TYPE", "Float32") asynSetMinTimerPeriod(0.001) # The EPICS environment variable EPICS_CA_MAX_ARRAY_BYTES needs to be set to a value at least as large # as the largest image that the standard arrays plugin will send. # That vlaue is $(XSIZE) * $(YSIZE) * sizeof(FTVL data type) for the FTVL used when loading the NDStdArrays.template file. # The variable can be set in the environment before running the IOC or it can be set here. # It is often convenient to set it in the environment outside the IOC to the largest array any client # or server will need. For example 10000000 (ten million) bytes may be enough. # If it is set here then remember to also set it outside the IOC for any CA clients that need to access the waveform record. # Do not set EPICS_CA_MAX_ARRAY_BYTES to a value much larger than that required, because EPICS Channel Access actually # allocates arrays of this size every time it needs a buffer larger than 16K. # Uncomment the following line to set it in the IOC. #epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "10000000") # Create an NDDriverStdArrays drivers # NDDriverStdArraysConfig(portName, maxBuffers, maxMemory, priority, stackSize) NDDriverStdArraysConfig("$(PORT)", $(QSIZE), 0, 0) #asynSetTraceMask $(PORT) 0 0xFF #asynSetTraceInfoMask $(PORT) 0 0x7 dbLoadRecords("$(NDDRIVERSTDARRAYS)/db/NDDriverStdArrays.template","P=$(PREFIX),R=cam1:,PORT=$(PORT),ADDR=0,TIMEOUT=1,NELEMENTS=$(NELEMENTS),TYPE=$(TYPE),FTVL=$(FTVL)") # Create a standard arrays plugin, set it to get data from the NDDriverStdArrays driver. NDStdArraysConfigure("Image1", 3, 0, "$(PORT)", 0) # This creates a waveform large enough for 2000x2000x3 (e.g. RGB color) arrays. # This waveform only allows transporting 8-bit images #dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int8,FTVL=UCHAR,NELEMENTS=12000000") # This waveform only allows transporting 16-bit images #dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int16,FTVL=SHORT,NELEMENTS=12000000") # This waveform allows transporting 32-bit images #dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int32,FTVL=LONG,NELEMENTS=12000000") # This waveform allows transporting 64-bit float images dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Float64,FTVL=DOUBLE,NELEMENTS=12000000") # Load all other plugins using commonPlugins.cmd < $(ADCORE)/iocBoot/commonPlugins.cmd set_requestfile_path("$(NDDRIVERSTDARRAYS)/NDDriverStdArraysApp/Db") iocInit() # Silence a very chatty ASYN_TRACE_FLOW # Remove this if performance testing #dbpf 13NDSA1:cam1:PoolUsedMem.SCAN Passive # save things every thirty seconds create_monitor_set("auto_settings.req", 30, "P=$(PREFIX)")