#=================================================================# # Template file: NDPluginBase.template # Database for NDPluginBase, i.e. records common to all plugins # Mark Rivers # April 25, 2008 include "NDArrayBase.template" ################################################################### # This record contains the type of plugin # ################################################################### record(stringin, "$(P)$(R)PluginType_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))PLUGIN_TYPE") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # These records control the connection of the server to # # an NDArray driver port and address # ################################################################### # Array port name record(stringout, "$(P)$(R)NDArrayPort") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_PORT") field(VAL, "$(NDARRAY_PORT)") info(autosaveFields, "VAL") } record(stringin, "$(P)$(R)NDArrayPort_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_PORT") field(SCAN, "I/O Intr") } record(longout, "$(P)$(R)NDArrayAddress") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_ADDR") field(VAL, "$(NDARRAY_ADDR=0)") info(autosaveFields, "VAL") } record(longin, "$(P)$(R)NDArrayAddress_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))NDARRAY_ADDR") field(SCAN, "I/O Intr") } ################################################################### # These records control whether callbacks are enabled and # # minimum time between callbacks # ################################################################### record(bo, "$(P)$(R)EnableCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ENABLE_CALLBACKS") field(ZNAM, "Disable") field(ONAM, "Enable") field(VAL, "$(ENABLED=0)") info(autosaveFields, "VAL") } record(bi, "$(P)$(R)EnableCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ENABLE_CALLBACKS") field(ZNAM, "Disable") field(ONAM, "Enable") field(ZSV, "NO_ALARM") field(OSV, "MINOR") field(SCAN, "I/O Intr") } record(ao, "$(P)$(R)MinCallbackTime") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))MIN_CALLBACK_TIME") field(EGU, "s") field(PREC, "3") field(VAL, "0.0") info(autosaveFields, "VAL") } record(ai, "$(P)$(R)MinCallbackTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))MIN_CALLBACK_TIME") field(EGU, "s") field(PREC, "3") field(SCAN, "I/O Intr") } ################################################################### # These records control whether callbacks block or not # ################################################################### record(bo, "$(P)$(R)BlockingCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))BLOCKING_CALLBACKS") field(ZNAM, "No") field(ONAM, "Yes") field(VAL, "0") info(autosaveFields, "VAL") } record(bi, "$(P)$(R)BlockingCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))BLOCKING_CALLBACKS") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } record(longout, "$(P)$(R)DroppedArrays") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))DROPPED_ARRAYS") field(VAL, "0") } record(longin, "$(P)$(R)DroppedArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))DROPPED_ARRAYS") field(SCAN, "I/O Intr") } record(longout, "$(P)$(R)QueueSize") { field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))QUEUE_SIZE") field(PINI, "YES") } record(longin, "$(P)$(R)QueueSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))QUEUE_SIZE") field(FLNK, "$(P)$(R)QueueFreeLow") field(SCAN, "I/O Intr") } record(calcout, "$(P)$(R)QueueFreeLow") { field(CALC, "A*0.25") field(INPA, "$(P)$(R)QueueSize") field(OUT, "$(P)$(R)QueueFree.LOW") field(FLNK, "$(P)$(R)QueueUseHIGH") } # Set a HIGH warning level for the input queue fill level to 75% # of the full size of the queue record(calcout, "$(P)$(R)QueueUseHIGH") { field(CALC, "A*0.75") field(INPA, "$(P)$(R)QueueSize") field(OUT, "$(P)$(R)QueueUse.HIGH") field(FLNK, "$(P)$(R)QueueUseHIHI") } # Set a HIHI level for the input queue fill level to indicate an error # (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) record(calcout, "$(P)$(R)QueueUseHIHI") { field(CALC, "A*1.0") field(INPA, "$(P)$(R)QueueSize") field(OUT, "$(P)$(R)QueueUse.HIHI") } record(longin, "$(P)$(R)QueueFree") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))QUEUE_FREE") field(LLSV, "MAJOR") field(LSV, "MINOR") field(LOLO, "0") field(HYST, "1") field(SCAN, "I/O Intr") } # Display the fill level on the plugins input queue record(calc, "$(P)$(R)QueueUse") { field(CALC, "A-B") field(INPA, "$(P)$(R)QueueSize") field(INPB, "$(P)$(R)QueueFree CP") field(SCAN, "Passive") field(HHSV, "MAJOR") field(HSV, "MINOR") field(HYST, "1") } ################################################################### # The asynRecord is used for mainly for trace mask # ################################################################### # Set ASYN_TRACEIO_HEX bit by default record(asyn,"$(P)$(R)AsynIO") { field(PORT, $(PORT)) field(TIB2,"1") info("ADType", "ADPlugin") }