# This file was autogenerated by the jAreaDetector package

errlogInit(20000)

< envPaths

dbLoadDatabase("$(AREA_DETECTOR)/dbd/pvCamApp.dbd"
pvCamApp_registerRecordDeviceDriver(pdbbase)

# Create a pvCam driver
# pvCamConfig(const char *portName, int maxSizeX, int maxSizeY, int dataType, int maxBuffers, size_t maxMemory)
# DataTypes:
#    0 = NDInt8
#    1 = NDUInt8
#    2 = NDInt16
#    3 = NDUInt16
#    4 = NDInt32
#    5 = NDUInt32
#    6 = NDFloat32
#    7 = NDFloat64
#
pvCamConfig("PVCAM", 2048, 2048, 3, 50, 100000000)
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/ADBase.template","P=BJT:,R=pvcam:,PORT=PVCAM,ADDR=0,TIMEOUT=1")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/pvCam.template","P=BJT:,R=pvcam:,PORT=PVCAM,ADDR=0,TIMEOUT=1")

# Create an ROI plugin
#NDROIConfigure(const char *portName, int queueSize, int blockingCallbacks, const char *NDArrayPort, int NDArrayAddr, int maxROIs, size_t maxMemory)
NDROIConfigure("ROI", 20, 0, "PVCAM", 0, 8, 100000000)
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDPluginBase.template","P=BJT:,R=ROI:,  PORT=ROI,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PVCAM,NDARRAY_ADDR=0")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROI.template",       "P=BJT:,R=ROI:,  PORT=ROI,ADDR=0,TIMEOUT=1")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:0:,PORT=ROI,ADDR=0,TIMEOUT=1,HIST_SIZE=256")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:1:,PORT=ROI,ADDR=1,TIMEOUT=1,HIST_SIZE=256")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:2:,PORT=ROI,ADDR=2,TIMEOUT=1,HIST_SIZE=256")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:3:,PORT=ROI,ADDR=3,TIMEOUT=1,HIST_SIZE=256")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:4:,PORT=ROI,ADDR=4,TIMEOUT=1,HIST_SIZE=256")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:5:,PORT=ROI,ADDR=5,TIMEOUT=1,HIST_SIZE=256")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:6:,PORT=ROI,ADDR=6,TIMEOUT=1,HIST_SIZE=256")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDROIN.template",      "P=BJT:,R=ROI:7:,PORT=ROI,ADDR=7,TIMEOUT=1,HIST_SIZE=256")

# Create a standard arrays plugin, set it to get data from pvCamera driver.
NDStdArraysConfigure("IMAGE", 1, 0, "PVCAM", 0, 10000000)
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDPluginBase.template","P=BJT:,R=image:,PORT=IMAGE,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PVCAM,NDARRAY_ADDR=0")
dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDStdArrays.template", "P=BJT:,R=image:,PORT=IMAGE,ADDR=0,TIMEOUT=1,TYPE=Int16,FTVL=SHORT,NELEMENTS=4194304")

# Create a Nexus file saving plugin
#drvNDFileNexusConfigure(const char *portName, int queueSize, int blockingCallbacks, const char *NDArrayPort, int NDArrayAddr)
#drvNDFileNexusConfigure("NEXUS", 20, 0, "PVCAM", 0)
#dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDPluginBase.template","P=BJT:,R=nexus:,PORT=NEXUS,ADDR=0,TIMEOUT=1,NDARRAY_PORT=PVCAM,NDARRAY_ADDR=0")
#dbLoadRecords("$(AREA_DETECTOR)/ADApp/Db/NDFileNexus.template","P=BJT:,R=nexus:,PORT=NEXUS,ADDR=0,TIMEOUT=1")

#asynSetTraceIOMask("SIM1",0,2)
#asynSetTraceMask("SIM1",0,255)

set_requestfile_path("./")
set_savefile_path("./autosave")
set_requestfile_path("$(AREA_DETECTOR)/ADApp/Db")
set_pass0_restoreFile("auto_settings.sav")
set_pass1_restoreFile("auto_settings.sav")
save_restoreSet_status_prefix("BJT:")
dbLoadRecords("$(AUTOSAVE)/asApp/Db/save_restoreStatus.db","P=BJT:")

iocInit()

# save things every thirty seconds
create_monitor_set("auto_settings.req", 30,"P=BJT:")