Files
ADAndor/ADApp/Db/NDStdArrays.template
rivers 0aef1c429e Renamed from ADImage
git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@7058 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
2008-04-16 22:16:21 +00:00

266 lines
7.2 KiB
Plaintext

# Database for NDStdArrays asyn driver and standard asyn device support
# Mark Rivers
# April 14, 2008
###################################################################
# These records control the connection of the server to #
# an NDStdArrays driver port and address #
###################################################################
# Array port name
record(stringout, "$(P)$(A)DriverPort")
{
field(DTYP, "asynOctetWrite")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_PORT")
}
record(stringin, "$(P)$(A)DriverPort_RBV")
{
field(PINI, "1")
field(DTYP, "asynOctetRead")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_PORT")
field(SCAN, "I/O Intr")
}
record(longout, "$(P)$(A)DriverAddress")
{
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_ADDR")
}
record(longin, "$(P)$(A)DriverAddress_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_ADDR")
field(SCAN, "I/O Intr")
}
###################################################################
# These records control posting of array data #
###################################################################
# Array posting flag
record(mbbo, "$(P)$(A)PostArrays")
{
field(PINI, "1")
field(VAL, "1")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))POST_ARRAYS")
field(ZRST, "No")
field(ZRVL, "0")
field(ONST, "Yes")
field(ONVL, "1")
}
# Array posting flag
record(mbbi, "$(P)$(A)PostArrays_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))POST_ARRAYS")
field(ZRST, "No")
field(ZRVL, "0")
field(ONST, "Yes")
field(ONVL, "1")
field(SCAN, "I/O Intr")
}
# Minimum time between updates for array waveform record
record(ao, "$(P)$(A)MinArrayUpdate")
{
field(PINI, "1")
field(DTYP, "asynFloat64")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ARRAY_UPDATE_TIME")
field(VAL, "1.0")
field(EGU, "s")
field(PREC, "3")
}
record(ai, "$(P)$(A)MinArrayUpdate_RBV")
{
field(PINI, "1")
field(DTYP, "asynFloat64")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ARRAY_UPDATE_TIME")
field(VAL, "1.0")
field(EGU, "s")
field(PREC, "3")
field(SCAN, "I/O Intr")
}
###################################################################
# These records control whether callbacks block or not #
###################################################################
record(mbbo, "$(P)$(A)BlockingCallbacks")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))BLOCKING_CALLBACKS")
field(ZRST, "No")
field(ZRVL, "0")
field(ONST, "Yes")
field(ONVL, "1")
}
# Array posting flag
record(mbbi, "$(P)$(A)BlockingCallbacks_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))BLOCKING_CALLBACKS")
field(ZRST, "No")
field(ZRVL, "0")
field(ONST, "Yes")
field(ONVL, "1")
field(SCAN, "I/O Intr")
}
###################################################################
# These records are the array size and data type #
###################################################################
# The number of dimensions
record(longin, "$(P)$(A)NDimensions_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ARRAY_NDIMENSIONS")
field(SCAN, "I/O Intr")
}
# The array dimensions waveform record
record(waveform, "$(P)$(A)Dimensions_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32ArrayIn")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ARRAY_DIMENSIONS")
field(FTVL, "LONG")
field(NELM, "10")
field(FLNK, "$(P)$(A)Dim0SA")
field(SCAN, "I/O Intr")
}
# Note, we only extrace the first 2 dimensions here, but this
# can easily be extended up to the maximum of 10 dimensions
record(subArray, "$(P)$(A)Dim0SA")
{
field(INP, "$(P)$(A)Dimensions_RBV NPP NMS")
field(FTVL, "LONG")
field(MALM, "10")
field(NELM, "1")
field(INDX, "0")
field(FLNK, "$(P)$(A)ArraySize0_RBV")
}
record(longin, "$(P)$(A)ArraySize0_RBV")
{
field(INP, "$(P)$(A)Dim0SA")
field(FLNK, "$(P)$(A)Dim1SA")
}
record(subArray, "$(P)$(A)Dim1SA")
{
field(INP, "$(P)$(A)Dimensions_RBV NPP NMS")
field(FTVL, "LONG")
field(MALM, "10")
field(NELM, "1")
field(INDX, "1")
field(FLNK, "$(P)$(A)ArraySize1_RBV")
}
record(longin, "$(P)$(A)ArraySize1_RBV")
{
field(INP, "$(P)$(A)Dim1SA")
# field(FLNK, "$(P)$(A)Dim2SA")
}
record(mbbi, "$(P)$(A)DataType_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))DATA_TYPE")
field(ZRST, "Int8")
field(ZRVL, "0")
field(ONST, "UInt8")
field(ONVL, "1")
field(TWST, "Int16")
field(TWVL, "2")
field(THST, "UInt16")
field(THVL, "3")
field(FRST, "Int32")
field(FRVL, "4")
field(FVST, "UInt32")
field(FVVL, "5")
field(SXST, "Float32")
field(SXVL, "6")
field(SVST, "Float64")
field(SVVL, "7")
field(SCAN, "I/O Intr")
}
###################################################################
# These records provide statistics on array callbacks and #
# array callback rates #
###################################################################
record(longout, "$(P)$(A)ArrayCounter")
{
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ARRAY_COUNTER")
}
record(longin, "$(P)$(A)ArrayCounter_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ARRAY_COUNTER")
field(SCAN, "I/O Intr")
}
# This record needs work, because B should reflect the time since last processed
record(calc, "$(P)$(A)ArrayRate_RBV")
{
field(INPA, "$(P)$(A)ArrayRate_RBV.B NPP NMS") # Previous counter value
field(INPB, "$(P)$(A)ArrayCounter_RBV NPP NMS") # Current counter value
field(INPC, "1.0") # Delta time, needs work
field(CALC, "(B-A)/C")
field(PREC, "1")
field(SCAN, "1 second")
}
record(longout, "$(P)$(A)DroppedArrays")
{
field(DTYP, "asynInt32")
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))DROPPED_ARRAYS")
}
record(longin, "$(P)$(A)DroppedArrays_RBV")
{
field(PINI, "1")
field(DTYP, "asynInt32")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))DROPPED_ARRAYS")
field(SCAN, "I/O Intr")
}
###################################################################
# This record is the array waveform data #
###################################################################
record(waveform, "$(P)$(A)ArrayData")
{
field(DTYP, "asynInt$(SIZE)ArrayIn")
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ARRAY_DATA")
field(FTVL, "$(FTVL)")
field(NELM, "$(NELEMENTS)")
field(SCAN, "I/O Intr")
}
###################################################################
# The asynRecord is used for mainly for trace mask #
###################################################################
# Set ASYN_TRACEIO_HEX bit by default
record(asyn,"$(P)$(A)AsynIO")
{
field(PORT, $(PORT))
field(TIB2,"1")
}