#=================================================================# # Template file: NDAttribute.template # % macro, P, Device Prefix # % macro, R, Device Suffix # % macro, PORT, Asyn Port name # The asyn port name should match what you have # written in your startup script # % macro, NCHANS, Number of elements in attribute waveform # % macro, ADDR, Asyn Port address # % macro, TIMEOUT, Timeout include "NDPluginBase.template" record(bo, "$(P)$(R)Reset") { field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ATTR_RESET") field(ZNAM, "Done Reset") field(ONAM, "Reset") field(VAL, "0") } ################################################################### # These records control time series # ################################################################### record(mbbo, "$(P)$(R)TSControl") { field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ATTR_TS_CONTROL") field(ZRVL, "0") field(ZRST, "Erase/Start") field(ONVL, "1") field(ONST, "Start") field(TWVL, "2") field(TWST, "Stop") field(THVL, "3") field(THST, "Read") } # This record periodically pokes the TSControl record with 3 to read the time series # but only when TSAcquiring = Acquiring record(longout, "$(P)$(R)TSRead") { field(SDIS, "$(P)$(R)TSAcquiring NPP NMS") field(DISV, "0") field(OUT, "$(P)$(R)TSControl PP MS") field(VAL, "3") field(SCAN, "1 second") info(autosaveFields, "SCAN") } record(longout, "$(P)$(R)TSNumPoints") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ATTR_TS_NUM_POINTS") field(VAL, "$(NCHANS)") field(DRVH, "$(NCHANS)") info(autosaveFields, "VAL") } record(longin, "$(P)$(R)TSCurrentPoint") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ATTR_TS_CURRENT_POINT") field(SCAN, "I/O Intr") } record(bi, "$(P)$(R)TSAcquiring") { field(DTYP, "asynInt32") field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ATTR_TS_ACQUIRING") field(ZNAM, "Done") field(ONAM, "Acquiring") field(ZSV, "NO_ALARM") field(OSV, "MINOR") field(SCAN, "I/O Intr") }