# HG changeset patch # User Heinz Junkes # Date 1551947006 -3600 # Node ID 77d8eafe2a074545416ab79d701de4b596e652fa Initial repo diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/Bronkhorst.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/Bronkhorst.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,1430 @@ +################################################################################# +# +################################################################################ +record(stringin, "$(IOC):$(NAME)-NAME") +{ + field(DESC, "Name of the device") + field(VAL, "$(NAME) Device") + field(PINI, "YES") +} + +record(stringin, "$(IOC):$(NAME)-IDN") +{ + field(DESC, "Name of the device") + field(INP, "@devBronkhorst.proto identity $(PORT)") + field(PINI, "YES") +} + +################################################################################ +################################################################################ +#INTEGER PARAMETERS +################################################################################ +################################################################################ +################################################################################ +# Read; Measure will return a value between -23593 and 41942 +# Record $(IOC):$(NAME)-MEASURE recomputes this value to percentages. NOTE that percentage +# can be larger than 100% (max value: 131.07%) and even negative for bipolar +# ADC mode. (min value: -73.73%) +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-MEASURE_") +{ + field(DESC, "Read measure") + field(SCAN, "$(SCAN2)") + field(DTYP, "stream") + field(PREC, "3") + field(INP, "@devBronkhorst.proto readInt(01,20) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-MEASURE") +} + +record(calc, "$(IOC):$(NAME)-GET-MEASURE") +{ + field(DESC, "Measure to percentage") + field(INPA, "$(IOC):$(NAME)-GET-MEASURE_") + field(EGU, "%") + field(PREC, "3") + field(CALC, "A*100/32000") + field(FLNK, "$(IOC):$(NAME)-COMM-STATUS") +} + + +################################################################################ +# Read; $(IOC):$(NAME)-GET-SETPOINT_ fetches the value from the device, +# $(IOC):$(NAME)-GET-SETPOINT recalculates the value to percentages. +# +# $(IOC):$(NAME)-GET-SETPOINT_ is scanned periodically, because setpoint value can be +# changed on ALARM or when the Counter reaches it's limit - this is configured +# by the user +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-SETPOINT_") +{ + field(DESC, "Read setpoint in raw [0,32000]") + field(DTYP, "stream") + field(SCAN, "$(SCAN2)") + field(INP, "@devBronkhorst.proto readInt(01,21) $(PORT)") + field(PREC, "1") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-SETPOINT") +} + +record(calc, "$(IOC):$(NAME)-GET-SETPOINT") +{ + field(DESC, "Setpoint to percentage") + field(INPA, "$(IOC):$(NAME)-GET-SETPOINT_") + field(EGU, "%") + field(PREC, "1") + field(CALC, "A*100/32000") +} + +################################################################################ +# Write; User writes the flow percentage to $(IOC):$(NAME)-SET-SETPOINT. +# $(IOC):$(NAME)-SET-SETPOINT_ recalculates the percentage to interval [0, 32000] and +# writes the new setpoint to the device +################################################################################ +record(ao, "$(IOC):$(NAME)-SET-SETPOINT") +{ + field(DESC, "Setpoint in percentage") + field(EGU, "%") + field(PREC, "1") + field(FLNK, "$(IOC):$(NAME)-SET-SETPOINT_") +} + +record(calcout, "$(IOC):$(NAME)-SET-SETPOINT_") +{ + field(DESC, "Write setpoint in raw [0,32000]") + field(INPA, "$(IOC):$(NAME)-SET-SETPOINT") + field(PREC, "1") + field(DTYP, "stream") + field(CALC, "A*32000/100") + field(OUT, "@devBronkhorst.proto writeInt(01,21) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-SETPOINT_") +} + +record(calcout, "$(IOC):$(NAME)-SET-SP-INIT_"){ + field(INPA, "$(IOC):$(NAME)-SET-SETPOINT_") + field(CALC, "A*100/32000") + field(OUT, "$(IOC):$(NAME)-SET-SETPOINT") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-SET-SETPOINT") + +} + +################################################################################ +# Read/Write: Setpoint is ramped from 0% to 100% in slope*0.1 seconds +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-SETPOINT-SLOPE") +{ + field(DESC, "Read setpoint slope") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(PINI, "YES") + field(INP, "@devBronkhorst.proto readInt(01,22) $(PORT)") +} + +record(ao, "$(IOC):$(NAME)-SET-SETPOINT-SLOPE") +{ + field(DESC, "Write setpoint slope") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(OUT, "@devBronkhorst.proto writeInt(01,22) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-SETPOINT-SLOPE") +} + +################################################################################ +# Read/Write: Get control mode from device. One of $(IOC):$(NAME)-CTRL-MODE-1/2_ will +# be in illegal value state. The GUI screen will show the one which is not in +# illegal value state by checking the severity of the state +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-CTRL-MODE_") +{ + field(DESC,"") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(01,04) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-CTRL-MODE-1_") +} + +record(mbbi, "$(IOC):$(NAME)-CTRL-MODE-1_") +{ + field(DESC, "Control modes 0-15") + field(DTYP, "Raw Soft Channel") + field(INP, "$(IOC):$(NAME)-GET-CTRL-MODE_") + field(UNSV, "MAJOR") + field(ZRVL, "0") + field(ZRST, "BUS/RS232") + field(ONVL, "1") + field(ONST, "Analog input") + field(TWVL, "2") + field(TWST, "FLOWBUS*FLOWBUS") + field(THVL, "3") + field(THST, "Close valve") + field(FRVL, "4") + field(FRST, "Controller idle") + field(FVVL, "5") + field(FVST, "Testmode") + field(SXVL, "6") + field(SXST, "Tuning mode") + field(SVVL, "7") + field(SVST, "Setpoint=100%") + field(EIVL, "8") + field(EIST, "Purge valve") + field(NIVL, "9") + field(NIST, "Calibration mode") + field(TEVL, "10") + field(TEST, "analogIn*FLOWBUS") + field(ELVL, "11") + field(ELST, "Keyboard||FLOWBUS") + field(TVVL, "12") + field(TVST, "Setpoint=0%") + field(TTVL, "13") + field(TTST, "FLOWBUS*analogIn") + field(FTVL, "14") + field(FTST, "Range select mode") + field(FFVL, "15") + field(FFST, "Manual start, auto end") + field(FLNK, "$(IOC):$(NAME)-CTRL-MODE-2_") +} + +record(mbbi, "$(IOC):$(NAME)-CTRL-MODE-2_") +{ + field(DESC, "Control modes 0-15") + field(DTYP, "Raw Soft Channel") + field(INP, "$(IOC):$(NAME)-GET-CTRL-MODE_") + field(UNSV, "MAJOR") + field(ZRSV, "MAJOR") + field(ONVL, "16") + field(ONST, "Auto start, manual end") + field(TWVL, "17") + field(TWST, "Auto start/end") + field(THVL, "18") + field(THST, "RS232 setpoint") + field(FRVL, "19") + field(FRST, "RS232 broadcast") + field(FVVL, "20") + field(FVST, "Valve stearing") + field(SXVL, "21") + field(SXST, "Analog valve stearing") + field(SVVL, "22") + field(SVST, "Valve safe state") +} + +################################################################################ +# Read/Write: Set control mode. GUI screen will contain strings representing +# the values on the interval [0, 22]. These values correspond to states in mbbi +# records $(IOC):$(NAME)-CTRL-MODE-1,2_ +################################################################################ +record(ao, "$(IOC):$(NAME)-SET-CTRL-MODE") +{ + field(DESC,"Set the control mode") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeChar(01,04) $(PORT)") +} + + +################################################################################ +# Read/Write: Get/Set fluid number. +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-FLUID-NUM") +{ + field(DESC, "Read fluid number") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(PINI, "YES") + field(INP, "@devBronkhorst.proto readChar(01,10) $(PORT)") + +} + +record(ao, "$(IOC):$(NAME)-SET-FLUID-NUM") +{ + field(DESC, "Set fluid number") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(OUT, "@devBronkhorst.proto writeChar(01,10) $(PORT)") +} + +################################################################################ +# Read: Read sensor type +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-SENSOR-TYPE") +{ + field(DESC,"Read sensor type") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(01,0E) $(PORT)") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "128") + field(SXVL, "129") + field(SVVL, "130") + field(EIVL, "131") + field(NIVL, "132") + field(ZRST, "Pressure controller") + field(ONST, "Liquid volume controller") + field(TWST, "Liquid/gas controller") + field(THST, "Gas volume controller") + field(FRST, "Other controller") + field(FVST, "Pressure sensor") + field(SXST, "Liquid volume sensor") + field(SVST, "Liquid/gas mass sensor") + field(EIST, "Gas volume sensor") + field(NIST, "Other sensor") + field(PINI, "YES") +} + + +################################################################################ +# Read: Get readout unit +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-CAP-UNIT-IDX") +{ + field(DESC, "Capacity unit index") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(01,0F) $(PORT)") + field(ZRST, "ln/min") + field(ONST, "mln/h") + field(TWST, "mln/min") + field(THST, "ln/h") + field(FRST, "m3n/h") + field(FFST, "mls/min") + field(SXST, "mls/h") + field(SVST, "ls/min") + field(EIST, "ls/h") + field(NIST, "m3s/h") + field(PINI, "YES") +} + +################################################################################ +# Read: Valve will go into the safe state if buss communication is lost and +# control mode is in BUS/RS232 state or if initreset = 73 or if control mode +# is 22. +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-VALVE-STATE") +{ + field(DESC, "Capacity unit index") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(72,1A) $(PORT)") + field(ZRST, "Deactivate") + field(ONST, "Activate") + field(TWST, "Close") + field(THST, "Open") + field(FRST, "Current position") + field(FFST, "Safe Value") + field(PINI, "YES") +} + +record(mbbo, "$(IOC):$(NAME)-SET-VALVE-STATE") +{ + field(DESC, "Capacity unit index") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(OUT, "@devBronkhorst.proto writeChar(72,1A) $(PORT)") + field(ZRST, "Deactivate") + field(ONST, "Activate") + field(TWST, "Close") + field(THST, "Open") + field(FRST, "Current position") + field(FFST, "Safe Value") + field(FLNK, "$(IOC):$(NAME)-GET-VALVE-STATE") +} + +################################################################################ +# Read: Alarm info. mbbiDirect record checks which flags are set and then +# starts (forward links) the process chain of bi records representing the value +# of each alarm state. +################################################################################ +record(mbbiDirect, "$(IOC):$(NAME)-GET-ALARM-INFO") +{ + field(DESC, "Read alarm flags") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readChar(01,14) $(PORT)") + field(SCAN, "$(SCAN2)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-ERROR-MSG-NUM") +} + +################################################################################ +# Read: Alarm mode +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-ALARM-MODE") +{ + field(DESC, "Read alarm mode") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readChar(61,03) $(PORT)") + field(SCAN, "$(SCAN1)") + field(ZRST, "Off") + field(ONST, "Absolute Limits") + field(TWST, "Setpoint Limits") + field(THST, "Power up") + field(PINI, "YES") +} + +################################################################################ +# Write; Set Alarm mode +################################################################################ +record(mbbo, "$(IOC):$(NAME)-SET-ALARM-MODE") +{ + field(DESC, "Set alarm mode") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeChar(61,03) $(PORT)") + field(SCAN, "$(SCAN1)") + field(ZRST, "Off") + field(ONST, "Absolute Limits") + field(TWST, "Setpoint Limits") + field(THST, "Power up") + field(FLNK, "$(IOC):$(NAME)-GET-ALARM-MODE") +} +################################################################################ +# Read-Write; Get/Set maximum alarm limit. User specifies percentage which is +# converted to interval [0, 32000] +################################################################################ +record(calc, "$(IOC):$(NAME)-GET-ALM-MAX-LIM") +{ + field(DESC, "Get alarm maximum limit in %") + field(INPA, "$(IOC):$(NAME)-GET-ALM-MAX-LIM_") + field(SCAN, "$(SCAN1)") + field(PREC, "1") + field(CALC, "A*100/32000") + field(EGU, "%") +} + +record(ai, "$(IOC):$(NAME)-GET-ALM-MAX-LIM_") +{ + field(DESC, "Get alarm maximum limit in raw") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readInt(61,21) $(PORT)") + field(SCAN, "$(SCAN1)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-MAX-LIM") +} + +record(ai, "$(IOC):$(NAME)-SET-ALM-MAX-LIM") +{ + field(DESC, "Set alarm maximum limit in %") + field(FLNK, "$(IOC):$(NAME)-SET-ALM-MAX-LIM_") + field(EGU, "%") + field(PREC, "1") +} + +record(calcout, "$(IOC):$(NAME)-SET-ALM-MAX-LIM_") +{ + field(DESC, "Set alarm maximum limit in raw") + field(DTYP, "stream") + field(INPA, "$(IOC):$(NAME)-SET-ALM-MAX-LIM") + field(CALC, "A*32000/100") + field(OUT, "@devBronkhorst.proto writeInt(61,21) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-MAX-LIM_") +} + +record(calcout, "$(IOC):$(NAME)-SET-ALM-MAX-LIM-INIT_"){ + field(INPA, "$(IOC):$(NAME)-SET-ALM-MAX-LIMT_") + field(CALC, "A*100/32000") + field(OUT, "$(IOC):$(NAME)-SET-ALM-MAX-LIM") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-SET-ALM-MAX-LIM") + +} + +################################################################################ +# Read-Write; Get/Set minimum alarm limit. User specifies percentage which is +# converted to interval [0, 32000] +################################################################################ +record(calc, "$(IOC):$(NAME)-GET-ALM-MIN-LIM") +{ + field(DESC, "Get alarm minimum limit in %") + field(INPA, "$(IOC):$(NAME)-GET-ALM-MIN-LIM_") + field(SCAN, "$(SCAN1)") + field(PREC, "1") + field(CALC, "A*100/32000") +} + +record(ai, "$(IOC):$(NAME)-GET-ALM-MIN-LIM_") +{ + field(DESC, "Get alarm minimum limit in raw") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readInt(61,22) $(PORT)") + field(SCAN, "$(SCAN1)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-MIN-LIM") +} + +record(ai, "$(IOC):$(NAME)-SET-ALM-MIN-LIM") +{ + field(DESC, "Set alarm minimum limit in %") + field(EGU, "%") + field(PREC, "1") + field(FLNK, "$(IOC):$(NAME)-SET-ALM-MIN-LIM_") +} + +record(calcout, "$(IOC):$(NAME)-SET-ALM-MIN-LIM_") +{ + field(DESC, "Set alarm minimum limit in raw") + field(DTYP, "stream") + field(INPA, "$(IOC):$(NAME)-SET-ALM-MIN-LIM") + field(CALC, "A*32000/100") + field(OUT, "@devBronkhorst.proto writeInt(61,22) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-MIN-LIM_") +} + +record(calcout, "$(IOC):$(NAME)-SET-ALM-MIN-LIM-INIT_"){ + field(INPA, "$(IOC):$(NAME)-SET-ALM-MIN-LIMT_") + field(CALC, "A*100/32000") + field(OUT, "$(IOC):$(NAME)-SET-ALM-MIN-LIM") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-SET-ALM-MIN-LIM") + +} + + +################################################################################ +# Read-Write; Get/Set alarm setpoint mode. If device goes into an alarm state, +# a new setpoint (stored in the record $(IOC):$(NAME)-GET/SET-ALM-NEW-SP) will be set, +# but only if device ($(IOC):$(NAME)-GET/SET-ALM-SP-MODE) is in state 1. +################################################################################ +record(bi, "$(IOC):$(NAME)-GET-ALM-SP-MODE") +{ + field(DESC, "Get alarm setpoint mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(ZNAM, "NO") + field(ONAM, "YES") + field(PINI, "YES") + field(INP, "@devBronkhorst.proto readChar(61,05) $(PORT)") +} + +record(bo, "$(IOC):$(NAME)-SET-ALM-SP-MODE") +{ + field(DESC, "Set alarm setpoint mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(ZNAM, "NO") + field(ONAM, "YES") + field(OUT, "@devBronkhorst.proto writeChar(61,05) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-SP-MODE") +} + +record(ai, "$(IOC):$(NAME)-GET-ALM-NEW-SP_") +{ + field(DESC, "Read alarm setpoint") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readInt(61,26) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-NEW-SP") +} + +record(calc, "$(IOC):$(NAME)-GET-ALM-NEW-SP") +{ + field(DESC, "Alarm setpoint to percentage") + field(INPA, "$(IOC):$(NAME)-GET-ALM-NEW-SP_") + field(EGU, "%") + field(PREC, "1") + field(CALC, "A*100/32000") +} + +record(ao, "$(IOC):$(NAME)-SET-ALM-NEW-SP") +{ + field(DESC, "Alarm setpoint in percentage") + field(EGU, "%") + field(PREC, "1") + field(FLNK, "$(IOC):$(NAME)-SET-ALM-NEW-SP_") +} + +record(calcout, "$(IOC):$(NAME)-SET-ALM-NEW-SP_") +{ + field(DESC, "Write alarm setpoint") + field(INPA, "$(IOC):$(NAME)-SET-ALM-NEW-SP") + field(DTYP, "stream") + field(CALC, "A*32000/100") + field(OUT, "@devBronkhorst.proto writeInt(61,26) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-NEW-SP_") +} + +record(calcout, "$(IOC):$(NAME)-SET-ALM-NEW-SP-INIT_"){ + field(INPA, "$(IOC):$(NAME)-SET-ALM-NEW-SP_") + field(CALC, "A*100/32000") + field(OUT, "$(IOC):$(NAME)-SET-ALM-NEW-SP") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-SET-ALM-NEW-SP") + +} + + +################################################################################ +# Read-Write; Alarm delay time seconds. Alarm action will be delayed when alarm +# limit has been exceeded. Automatic reset will be delayed when sensor signal +# reaches safe level again. +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-ALM-DELAY") +{ + field(DESC, "Get alarm delay") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(EGU, "s") + field(PINI, "YES") + field(INP, "@devBronkhorst.proto readChar(61,07) $(PORT)") +} + +record(ao, "$(IOC):$(NAME)-SET-ALM-DELAY") +{ + field(DESC, "Get alarm delay") + field(DTYP, "stream") + field(EGU, "s") + field(OUT, "@devBronkhorst.proto writeChar(61,07) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-ALM-DELAY") +} + +################################################################################ +# Read-Write; Enable reset alarm for different reset triggers. +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-RESET-ALM-MODE") +{ + field(DESC, "Get reset alarm mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(61,09) $(PORT)") + field(ZRST, "OFF") + field(ONST, "Switch") + field(TWST, "External") + field(THST, "External,Switch") + field(FRST, "RS232") + field(FVST, "RS232,Switch") + field(SXST, "RS232,Ext") + field(SVST, "RS232,Ext,Switch") + field(EIST, "Auto") + field(NIST, "Auto,Switch") + field(TEST, "Auto,Ext") + field(ELST, "Auto,Ext,Switch") + field(TVST, "Auto,RS232") + field(TTST, "Auto,RS232,Switch") + field(FTST, "Auto,RS232,Ext") + field(FFST, "Auto,RS232,Ext,Switch") + #field(PINI, "YES") +} + +record(mbboDirect, "$(IOC):$(NAME)-SET-RESET-ALM-MODE") +{ + field(DESC, "Set alarm reset mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(B0, "1") + field(B2, "1") + field(OUT, "@devBronkhorst.proto writeChar(61,09) $(PORT)") +# field(ZRST, "OFF") +# field(ONST, "Switch") +# field(TWST, "External") +# field(THST, "Switch,External") +# field(FRST, "RS232") +# field(FVST, "RS232,Switch") +# field(SXST, "RS232,Ext") +# field(SVST, "RS232,Ext,Switch") +# field(EIST, "Auto") +# field(NIST, "Auto,Switch") +# field(TEST, "Auto,Ext") +# field(ELST, "Auto,Ext,Switch") +# field(TVST, "Auto,RS232") +# field(TTST, "Auto,RS232,Switch") +# field(FTST, "Auto,RS232,Ext") +# field(FFST, "Auto,RS232,Ext,Switch") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-RESET-ALM-MODE") +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-SWITCH") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B0") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE") + +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-EXT") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B1") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE") + +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-RS232") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B2") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE") + +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-AUTO") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-ALM-MODE.B3") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-ALM-MODE") + +} + +################################################################################ +# Read-Write; Counter mode. +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-CNT-MODE") +{ + field(DESC, "Get counter mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(68,08) $(PORT)") + field(ZRST, "Off") + field(ONST, "Continuous") + field(TWST, "To limit") + field(PINI, "YES") +} + +record(mbbo, "$(IOC):$(NAME)-SET-CNT-MODE") +{ + field(DESC, "Set counter mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(OUT, "@devBronkhorst.proto writeChar(68,08) $(PORT)") + field(ZRST, "Off") + field(ONST, "Continuous") + field(TWST, "To limit") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-MODE") +} + +################################################################################ +# Read-Write; Counter setpoint mode. 0 - No setpoint change when limit is +# reached. 1 - setpoint change when limit is reached +################################################################################ +record(bi, "$(IOC):$(NAME)-GET-CNT-SP-MODE") +{ + field(DESC, "Get counter mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(68,05) $(PORT)") + field(ZNAM, "NO") + field(ONAM, "YES") + field(PINI, "YES") +} + +record(bo, "$(IOC):$(NAME)-SET-CNT-SP-MODE") +{ + field(DESC, "Set counter mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(OUT, "@devBronkhorst.proto writeChar(68,05) $(PORT)") + field(ZNAM, "NO") + field(ONAM, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-SP-MODE") +} + +################################################################################ +# Read-Write; Get/Set new counter setpoint which will apply f GET-CNT-SP-MODE is +# YES when limit is reached. +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-CNT-NEW-SP_") +{ + field(DESC, "Read counter new setpoint") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readInt(68,26) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-NEW-SP") +} + +record(calc, "$(IOC):$(NAME)-GET-CNT-NEW-SP") +{ + field(DESC, "Counter new setpoint to percentage") + field(INPA, "$(IOC):$(NAME)-GET-CNT-NEW-SP_") + field(EGU, "%") + field(PREC, "1") + field(CALC, "A*100/32000") +} + +record(ao, "$(IOC):$(NAME)-SET-CNT-NEW-SP") +{ + field(DESC, "Counter new setpoint in percentage") + field(EGU, "%") + field(PREC, "1") + field(FLNK, "$(IOC):$(NAME)-SET-CNT-NEW-SP_") +} + +record(calcout, "$(IOC):$(NAME)-SET-CNT-NEW-SP_") +{ + field(DESC, "Write counter new setpoint") + field(INPA, "$(IOC):$(NAME)-SET-CNT-NEW-SP") + field(DTYP, "stream") + field(CALC, "A*32000/100") + field(OUT, "@devBronkhorst.proto writeInt(68,26) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-NEW-SP_") +} + +record(calcout, "$(IOC):$(NAME)-SET-CNT-NEW-SP-INIT_"){ + field(INPA, "$(IOC):$(NAME)-SET-CNT-NEW-SP_") + field(CALC, "A*100/32000") + field(OUT, "$(IOC):$(NAME)-SET-CNT-NEW-SP") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-SET-CNT-NEW-SP") + +} + +################################################################################ +# Read-Write; Counter unit +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-CNT-UNIT") +{ + field(DESC, "Read counter unit") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readChar(68,02) $(PORT)") + field(ZRST, "ln") + field(ONST, "mm3n") + field(TWST, "mln") + field(THST, "cm3n") + field(FRST, "uln") + field(FVST, "dm3n") + field(SXST, "m3n") + field(SVST, "uls") + field(EIST, "mm3s") + field(NIST, "mls") + field(TEST, "cm3s") + field(ELST, "ls") + field(TVST, "dm3s") + field(TTST, "m3s") +# field(PINI, "YES") +} + +record(mbbo, "$(IOC):$(NAME)-SET-CNT-UNIT") +{ + field(DESC, "Read counter unit") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeChar(68,02) $(PORT)") + field(VAL, "0") + field(ZRST, "ln") + field(ONST, "mm3n") + field(TWST, "mln") + field(THST, "cm3n") + field(FRST, "uln") + field(FVST, "dm3n") + field(SXST, "m3n") + field(SVST, "uls") + field(EIST, "mm3s") + field(NIST, "mls") + field(TEST, "cm3s") + field(ELST, "ls") + field(TVST, "dm3s") + field(TTST, "m3s") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-UNIT") +} + + +################################################################################ +# Read-Write; Enable reset counter for different reset triggers. +################################################################################ +record(mbbi, "$(IOC):$(NAME)-GET-RESET-CNT-MODE") +{ + field(DESC, "Get reset alarm mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(68,09) $(PORT)") + field(ZRST, "OFF") + field(ONST, "Switch") + field(TWST, "External") + field(THST, "Switch,External") + field(FRST, "RS232") + field(FVST, "RS232,Switch") + field(SXST, "RS232,Ext") + field(SVST, "RS232,Ext,Switch") + field(EIST, "Auto") + field(NIST, "Auto,Switch") + field(TEST, "Auto,Ext") + field(ELST, "Auto,Ext,Switch") + field(TVST, "Auto,RS232") + field(TTST, "Auto,RS232,Switch") + field(FTST, "Auto,RS232,Ext") + field(FFST, "Auto,RS232,Ext,Switch") +} + +record(mbboDirect, "$(IOC):$(NAME)-SET-RESET-CNT-MODE") +{ + field(DESC, "Set alarm reset mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(B0, "1") + field(B2, "1") + field(OUT, "@devBronkhorst.proto writeChar(68,09) $(PORT)") +# field(ZRST, "OFF") +# field(ONST, "Switch") +# field(TWST, "External") +# field(THST, "Switch,External") +# field(FRST, "RS232") +# field(FVST, "RS232,Switch") +# field(SXST, "RS232,Ext") +# field(SVST, "RS232,Ext,Switch") +# field(EIST, "Auto") +# field(NIST, "Auto,Switch") +# field(TEST, "Auto,Ext") +# field(ELST, "Auto,Ext;Switch") +# field(TVST, "Auto,RS232") +# field(TTST, "Auto,RS232,Switch") +# field(FTST, "Auto,RS232,Ext") +# field(FFST, "Auto,RS232,Ext,Switch") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-RESET-CNT-MODE") +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-SWITCH") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B0") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE") +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-EXT") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B1") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE") +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-RS232") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B2") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE") +} + +record(bo, "$(IOC):$(NAME)-TOGGLE-RESET-CNT-AUTO") +{ + field(DESC, "") + field(OUT, "$(IOC):$(NAME)-SET-RESET-CNT-MODE.B3") + field(FLNK, "$(IOC):$(NAME)-SET-RESET-CNT-MODE") +} +################################################################################ +# Write. RESET +################################################################################ +record(mbbo, "$(IOC):$(NAME)-RESET") +{ + field(DESC, "Set alarm reset mode") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(OUT, "@devBronkhorst.proto writeChar(73,08) $(PORT)") + field(ZRST, "NO RESET") + field(ONST, "Counter") + field(TWST, "Alarm") + field(THST, "Limit counter") + field(FRST, "Counter reset & OFF") + field(FVST, "Module") + field(SXST, "Alarm info error") + field(SVST, "Alarm info warning") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-MODE") + +} + +################################################################################ +################################################################################ +#FLOAT PARAMETERS +################################################################################ +################################################################################ +################################################################################ +# Read; Counter value +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-CNT") +{ + field(DESC, "Read counter") + field(PREC, "3") +} + +record(aSub, "$(IOC):$(NAME)-GET-CNT_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-GET-CNT__") + field(FTA, "LONG") + field(OUTA, "$(IOC):$(NAME)-GET-CNT") + field(FTVA, "FLOAT") + field(SNAM, "readFloat") + field(FLNK, "$(IOC):$(NAME)-GET-CNT") +} + +record(ai, "$(IOC):$(NAME)-GET-CNT__") +{ + field(DESC, "Read counter as long") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readFloat(68,41) $(PORT)") + field(SCAN, "$(SCAN2)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-CNT_") +} + +record(ao, "$(IOC):$(NAME)-SET-CNT") +{ + field(DESC, "Set counter") + field(FLNK, "$(IOC):$(NAME)-SET-CNT_") +} + +record(aSub, "$(IOC):$(NAME)-SET-CNT_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-SET-CNT") + field(FTA, "FLOAT") + field(OUTA, "$(IOC):$(NAME)-SET-CNT__") + field(FTVA, "LONG") + field(SNAM, "writeFloat") + field(FLNK, "$(IOC):$(NAME)-SET-CNT__") +} + +record(ao, "$(IOC):$(NAME)-SET-CNT__") +{ + field(DESC, "Set counter as long") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeFloat(68,41) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-CNT__") +} + +record(aSub, "$(IOC):$(NAME)-SET-CNT-INIT_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-SET-CNT__") + field(FTA, "LONG") + field(OUTA, "$(IOC):$(NAME)-SET-CNT") + field(FTVA, "FLOAT") + field(SNAM, "readFloat") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-SET-CNT") +} + + +################################################################################ +# Read; Counter limit +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-CNT-LIM") +{ + field(DESC, "Read counter limit") + field(PREC, "3") +} + +record(aSub, "$(IOC):$(NAME)-GET-CNT-LIM_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-GET-CNT-LIM__") + field(FTA, "LONG") + field(OUTA, "$(IOC):$(NAME)-GET-CNT-LIM") + field(FTVA, "FLOAT") + field(SNAM, "readFloat") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-LIM") +} + +record(ai, "$(IOC):$(NAME)-GET-CNT-LIM__") +{ + field(DESC, "Read counter limit as long") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readFloat(68,43) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-LIM_") +} + +record(ao, "$(IOC):$(NAME)-SET-CNT-LIM") +{ + field(DESC, "Set counter limit") + field(PREC, "3") + field(FLNK, "$(IOC):$(NAME)-SET-CNT-LIM_") +} + +record(aSub, "$(IOC):$(NAME)-SET-CNT-LIM_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-SET-CNT-LIM") + field(FTA, "FLOAT") + field(OUTA, "$(IOC):$(NAME)-SET-CNT-LIM__") + field(FTVA, "LONG") + field(SNAM, "writeFloat") + field(FLNK, "$(IOC):$(NAME)-SET-CNT-LIM__") +} + +record(ao, "$(IOC):$(NAME)-SET-CNT-LIM__") +{ + field(DESC, "Set counter limit as INPlong") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeFloat(68,43) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-CNT-LIM__") +} + +record(aSub, "$(IOC):$(NAME)-SET-CNT-LIM-INIT_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-SET-CNT-LIM__") + field(FTA, "LONG") + field(OUTA, "$(IOC):$(NAME)-SET-CNT-LIM") + field(FTVA, "FLOAT") + field(SNAM, "readFloat") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-SET-CNT-LIM") +} + +################################################################################ +# Read/write PID parameters +################################################################################ +record(ai, "$(IOC):$(NAME)-GET-P") +{ + field(DESC, "Read P") + field(PREC, "3") +} + +record(aSub, "$(IOC):$(NAME)-GET-P_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-GET-P__") + field(FTA, "LONG") + field(OUTA, "$(IOC):$(NAME)-GET-P") + field(FTVA, "FLOAT") + field(SNAM, "readFloat") + field(FLNK, "$(IOC):$(NAME)-GET-P") +} + +record(ai, "$(IOC):$(NAME)-GET-P__") +{ + field(DESC, "Read P as long") + field(SCAN, "Passive") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readFloat(72,55) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-P_") +} + +record(ao, "$(IOC):$(NAME)-SET-P") +{ + field(DESC, "Set P") + field(PREC, "3") + field(FLNK, "$(IOC):$(NAME)-SET-P_") +} + +record(aSub, "$(IOC):$(NAME)-SET-P_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-SET-P") + field(FTA, "FLOAT") + field(OUTA, "$(IOC):$(NAME)-SET-P__") + field(FTVA, "LONG") + field(SNAM, "writeFloat") + field(FLNK, "$(IOC):$(NAME)-SET-P__") +} + +record(ao, "$(IOC):$(NAME)-SET-P__") +{ + field(DESC, "Set P as INPlong") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeFloat(72,55) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-P__") +} + +record(ai, "$(IOC):$(NAME)-GET-I") +{ + field(DESC, "Read I") + field(PREC, "3") +} + +record(aSub, "$(IOC):$(NAME)-GET-I_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-GET-I__") + field(FTA, "LONG") + field(OUTA, "$(IOC):$(NAME)-GET-I") + field(FTVA, "FLOAT") + field(SNAM, "readFloat") + field(FLNK, "$(IOC):$(NAME)-GET-I") +} + +record(ai, "$(IOC):$(NAME)-GET-I__") +{ + field(DESC, "Read I as long") + field(SCAN, "Passive") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readFloat(72,56) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-I_") +} + +record(ao, "$(IOC):$(NAME)-SET-I") +{ + field(DESC, "Set I") + field(PREC, "3") + field(FLNK, "$(IOC):$(NAME)-SET-I_") +} + +record(aSub, "$(IOC):$(NAME)-SET-I_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-SET-I") + field(FTA, "FLOAT") + field(OUTA, "$(IOC):$(NAME)-SET-I__") + field(FTVA, "LONG") + field(SNAM, "writeFloat") + field(FLNK, "$(IOC):$(NAME)-SET-I__") +} + +record(ao, "$(IOC):$(NAME)-SET-I__") +{ + field(DESC, "Set I as INPlong") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeFloat(72,56) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-I__") +} + +record(ai, "$(IOC):$(NAME)-GET-D") +{ + field(DESC, "Read D") + field(PREC, "3") +} + +record(aSub, "$(IOC):$(NAME)-GET-D_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-GET-D__") + field(FTA, "LONG") + field(OUTA, "$(IOC):$(NAME)-GET-D") + field(FTVA, "FLOAT") + field(SNAM, "readFloat") + field(FLNK, "$(IOC):$(NAME)-GET-D") +} + +record(ai, "$(IOC):$(NAME)-GET-D__") +{ + field(DESC, "Read D as long") + field(SCAN, "Passive") + field(DTYP, "stream") + field(INP, "@devBronkhorst.proto readFloat(72,57) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-D_") +} + +record(ao, "$(IOC):$(NAME)-SET-D") +{ + field(DESC, "Set D") + field(PREC, "3") + field(FLNK, "$(IOC):$(NAME)-SET-D_") +} + +record(aSub, "$(IOC):$(NAME)-SET-D_") +{ + field(DESC, "Interpret long as float") + field(INPA, "$(IOC):$(NAME)-SET-D") + field(FTA, "FLOAT") + field(OUTA, "$(IOC):$(NAME)-SET-D__") + field(FTVA, "LONG") + field(SNAM, "writeFloat") + field(FLNK, "$(IOC):$(NAME)-SET-D__") +} + +record(ao, "$(IOC):$(NAME)-SET-D__") +{ + field(DESC, "Set D as INPlong") + field(DTYP, "stream") + field(OUT, "@devBronkhorst.proto writeFloat(72,57) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-D__") +} +################################################################################ +################################################################################ +#STATUS PARAMETERS +################################################################################ +################################################################################ +################################################################################ +# Read:Number of error messages. 0 - no error message, 1 - at least 1 error +# message +################################################################################ +record(bi, "$(IOC):$(NAME)-ERROR-MSG-NUM") +{ + field(DESC, "Number of error mesgs") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B0") + field(SCAN, "$(SCAN1)") + field(ZNAM, "No error") + field(ONAM, "Error") + field(FLNK, "$(IOC):$(NAME)-WARNING-MSG-NUM") +} + +################################################################################ +# Read:Number of warning messages. 0 - no warning message, 1 - at least 1 +# warning message +################################################################################ +record(bi, "$(IOC):$(NAME)-WARNING-MSG-NUM") +{ + field(DESC, "Number of warning msgs") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B1") + field(SCAN, "$(SCAN1)") + field(ZNAM, "No warning") + field(ONAM, "Warning") + field(FLNK, "$(IOC):$(NAME)-MIN-ALARM") +} + +################################################################################ +# Read:Number of minimum alarm messages for measured signal. +# 0 - no minimum alarm message, +# 1 - at least 1 minumum alarm message +################################################################################ +record(bi, "$(IOC):$(NAME)-MIN-ALARM") +{ + field(DESC, "Number of min alarm msgs") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B2") + field(SCAN, "$(SCAN1)") + field(ZNAM, "No min alarm") + field(ONAM, "Min alarm") + field(FLNK, "$(IOC):$(NAME)-MAX-ALARM") +} + +################################################################################ +# Read:Number of maximum alarm messages for measured signal. +# 0 - no maximum alarm message, +# 1 - at least 1 maximum alarm message +################################################################################ +record(bi, "$(IOC):$(NAME)-MAX-ALARM") +{ + field(DESC, "Number of max alar msgs") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B3") + field(SCAN, "$(SCAN1)") + field(ZNAM, "No max alarm") + field(ONAM, "Max alarm") + field(FLNK, "$(IOC):$(NAME)-BATCH-CNT-ALARM") +} + +################################################################################ +# Read: 0 - Batch counter has not reached it's limit +# 1 - Batch counter has reached it's limit +################################################################################ +record(bi, "$(IOC):$(NAME)-BATCH-CNT-ALARM") +{ + field(DESC, "Batch counter alarm") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B4") + field(SCAN, "$(SCAN1)") + field(ZNAM, "OK") + field(ONAM, "Limit") + field(FLNK, "$(IOC):$(NAME)-RESPONSE-ALARM") +} + +################################################################################ +# Read: 0 - Response OK (setpoint-measure within limit) +# 1 - Response alarm message: setpoint-measure is too high +################################################################################ +record(bi, "$(IOC):$(NAME)-RESPONSE-ALARM") +{ + field(DESC, "Response alarm") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B5") + field(SCAN, "$(SCAN1)") + field(ZNAM, "OK") + field(ONAM, "SP to high") + field(FLNK, "$(IOC):$(NAME)-MASTER-OUT-ALARM") +} + +################################################################################ +# Read: 0 - Master output signal OK (or unused) +# 1 - Master output signal not received: check master instrument +################################################################################ +record(bi, "$(IOC):$(NAME)-MASTER-OUT-ALARM") +{ + field(DESC, "Master output alarm") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B6") + field(SCAN, "$(SCAN1)") + field(ZNAM, "OK") + field(ONAM, "Not received") + field(FLNK, "$(IOC):$(NAME)-HARDWARE-ALARM") +} + +################################################################################ +# Read: 0 - Hardware OK +# 1 - Hardware error message: check your hardware +################################################################################ +record(bi, "$(IOC):$(NAME)-HARDWARE-ALARM") +{ + field(DESC, "Response alarm") + field(INP, "$(IOC):$(NAME)-GET-ALARM-INFO.B7") + field(SCAN, "$(SCAN1)") + field(ZNAM, "OK") + field(ONAM, "Error") +} + + +################################################################################ +# Read: Check if communication is OK +################################################################################ +record(calc, "$(IOC):$(NAME)-COMM-STATUS") +{ + field(DESC, "Communication status") + field(INPA, "$(IOC):$(NAME)-GET-MEASURE_.STAT") + field(CALC, "A>0") + field(FLNK, "$(IOC):$(NAME)-ALARM") +} + +################################################################################ +# Read; Sum of communication and device errors. If either device or comm. is in +# error, value is 1. LED on the main screen uses this to determine if everything +# is ok. +################################################################################ +record(calc, "$(IOC):$(NAME)-ALARM") +{ + field(DESC, "Communication status") + field(INPA, "$(IOC):$(NAME)-COMM-STATUS") + field(INPB, "$(IOC):$(NAME)-GET-ALARM-INFO.B0") + field(INPC, "$(IOC):$(NAME)-GET-ALARM-INFO.B1") + field(INPD, "$(IOC):$(NAME)-GET-ALARM-INFO.B2") + field(INPE, "$(IOC):$(NAME)-GET-ALARM-INFO.B3") + field(INPF, "$(IOC):$(NAME)-GET-ALARM-INFO.B5") + field(INPG, "$(IOC):$(NAME)-GET-ALARM-INFO.B6") + field(INPH, "$(IOC):$(NAME)-GET-ALARM-INFO.B7") + field(CALC, "(A+B+C+D+E+F+G+H)>0") +} + +################################################################################ +# Lock/unlock secured parameters, e.g. PID parameters +################################################################################ + +record(ai, "$(IOC):$(NAME)-GET-INITRESET__") +{ + field(DESC, "Get locked/unlocked") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(INP, "@devBronkhorst.proto readChar(00,0A) $(PORT)") + field(PINI, "YES") + field(FLNK, "$(IOC):$(NAME)-GET-INITRESET_") +} + +record(calcout, "$(IOC):$(NAME)-GET-INITRESET_"){ + field(CALC, "(A=82)?0:(A=64)?1:2") + field(INPA, "$(IOC):$(NAME)-GET-INITRESET__") + field(OUT, "$(IOC):$(NAME)-GET-INITRESET") + field(FLNK, "$(IOC):$(NAME)-GET-INITRESET") +} + +record(mbbo, "$(IOC):$(NAME)-GET-INITRESET") +{ + field(DESC, "Locked/unlocked") + field(ZRVL, "0") + field(ZRST, "Lock") + field(ONVL, "1") + field(ONST, "Unlock") + field(TWVL, "2") + field(TWST, "Unknown") +} + +record(mbbo, "$(IOC):$(NAME)-SET-INITRESET") +{ + field(DESC, "Lock/unlock") + field(ZRVL, "0") + field(ZRST, "Lock") + field(ONVL, "1") + field(ONST, "Unlock") + field(OUT, "$(IOC):$(NAME)-SET-INITRESET_") + field(FLNK, "$(IOC):$(NAME)-SET-INITRESET_") +} + +record(calcout, "$(IOC):$(NAME)-SET-INITRESET_"){ + field(CALC, "(A=1)?64:82") + field(INPA, "$(IOC):$(NAME)-SET-INITRESET") + field(OUT, "$(IOC):$(NAME)-SET-INITRESET__") + field(FLNK, "$(IOC):$(NAME)-SET-INITRESET__") +} + +record(ao, "$(IOC):$(NAME)-SET-INITRESET__") +{ + field(DESC, "Send Lock/unlock") + field(DTYP, "stream") + field(SCAN, "$(SCAN1)") + field(OUT, "@devBronkhorst.proto writeChar(00,0A) $(PORT)") + field(FLNK, "$(IOC):$(NAME)-GET-INITRESET__") +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/Bronkhorst.substitution --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/Bronkhorst.substitution Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,4 @@ +file "db/Bronkhorst.db"{ + pattern{IOC, NAME, PORT, SCAN1, SCAN2} + {"trARPES:BHORST", "HEFLOW", "MOXA_11", "Passive", "1 second"} +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/Keithley6485.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/Keithley6485.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,500 @@ +## Instrument management related PVs + +record(bo, "$(P)$(CA)reset") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) RESET") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(CA)refreshFanout1") +} + +record( fanout, "$(P)$(CA)refresh") +{ + field(LNK1, "$(P)$(CA)refreshFanout1") +} + +record( fanout, "$(P)$(CA)refreshFanout1") +{ + field(LNK1, "$(P)$(CA)rate") + field(LNK2, "$(P)$(CA)range") + field(LNK3, "$(P)$(CA)rangeAuto") + field(LNK4, "$(P)$(CA)rangeAutoUlimit") + field(LNK5, "$(P)$(CA)rangeAutoLlimit") + field(FLNK, "$(P)$(CA)refreshFanout2") +} + +record( fanout, "$(P)$(CA)refreshFanout2") +{ + field(LNK1, "$(P)$(CA)zeroCheck") + field(LNK2, "$(P)$(CA)zeroCorrect") + field(FLNK, "$(P)$(CA)refreshFanout3") +} + +record( fanout, "$(P)$(CA)refreshFanout3") +{ + field(LNK1, "$(P)$(CA)medianFilter") + field(LNK2, "$(P)$(CA)medianFilterRank") + field(LNK3, "$(P)$(CA)digitalFilter") + field(LNK4, "$(P)$(CA)digitalFilterCount") + field(LNK5, "$(P)$(CA)digitalFilterControl") +# field(FLNK, "$(P)$(CA)refreshFanout4") +} + +record(ai, "$(P)$(CA)read") +{ + field(PINI, "YES") + field(SCAN, "2 second") + field(DTYP, "asynFloat64") +# field(DTYP, "asynOctetRead") +# field(INP, "@asyn($(PORT))") + field(PREC, "5") + field(INP, "@asyn($(PORT)) READ") + field(FLNK, "$(P)$(CA)readValFanout1") +} + +record( fanout, "$(P)$(CA)readValFanout1") +{ + field(LNK1, "$(P)$(CA)readStatusOverflow") + field(LNK2, "$(P)$(CA)readStatusFilter") + field(LNK3, "$(P)$(CA)readStatusMath") + field(LNK4, "$(P)$(CA)readStatusNull") + field(LNK5, "$(P)$(CA)readStatusLimits") + field(FLNK, "$(P)$(CA)readValFanout2") +} +record( fanout, "$(P)$(CA)readValFanout2") +{ + field(LNK1, "$(P)$(CA)readStatusOvervoltage") + field(LNK2, "$(P)$(CA)readStatusZeroCheck") + field(LNK3, "$(P)$(CA)readStatusZeroCorrect") + field(LNK4, "$(P)$(CA)readStatusRaw") + field(LNK5, "$(P)$(CA)readTimestamp") +} + +record(bi, "$(P)$(CA)readStatusOverflow") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_OVERFLOW") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +record(bi, "$(P)$(CA)readStatusFilter") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_FILTER") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(bi, "$(P)$(CA)readStatusMath") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_MATH") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(bi, "$(P)$(CA)readStatusNull") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_NULL") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(mbbi, "$(P)$(CA)readStatusLimits") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_LIMITS") + field(ZRVL, "0") + field(ZRST, "Passed") + field(ONVL, "1") + field(ONST, "Limit 1 Failed") + field(TWVL, "2") + field(TWST, "Limit 2 Failed") + field(THVL, "3") + field(THST, "Disabled") +} + +record(bi, "$(P)$(CA)readStatusOvervoltage") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_OVERVOLTAGE") + field(ZNAM, "No") + field(ONAM, "Yes") +} + +record(bi, "$(P)$(CA)readStatusZeroCheck") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_ZERO_CHECK") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(bi, "$(P)$(CA)readStatusZeroCorrect") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_ZERO_CORRECT") + field(ZNAM, "Disabled") + field(ONAM, "Enabled") +} + +record(longin, "$(P)$(CA)readStatusRaw") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) STATUS_RAW") +} + +record(longin, "$(P)$(CA)readTimestamp") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) TIMESTAMP") +} + + + +record(stringin, "$(P)$(CA)model") +{ + field(PINI, "YES") + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT)) MODEL") +} + +record(stringin, "$(P)$(CA)serial") +{ + field(PINI, "YES") + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT)) SERIAL") +} + +record(stringin, "$(P)$(CA)digRev") +{ + field(PINI, "YES") + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT)) DIG_REV") +} + +record(stringin, "$(P)$(CA)dispRev") +{ + field(PINI, "YES") + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT)) DISP_REV") +} + +record(stringin, "$(P)$(CA)brdRev") +{ + field(PINI, "YES") + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT)) BRD_REV") +} + + +record(mbbo, "$(P)$(CA)rateSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) RATE") + field(ZRVL, "0") + field(ZRST, "Slow") + field(ONVL, "1") + field(ONST, "Medium") + field(TWVL, "2") + field(TWST, "Fast") + field(FLNK, "$(P)$(CA)rate") +} + +record(mbbi, "$(P)$(CA)rate") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) RATE") + field(ZRVL, "0") + field(ZRST, "Slow") + field(ONVL, "1") + field(ONST, "Medium") + field(TWVL, "2") + field(TWST, "Fast") +} + + +record(mbbo, "$(P)$(CA)rangeSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) RANGE") + field(ZRVL, "0") + field(ZRST, "2nA") + field(ONVL, "1") + field(ONST, "20nA") + field(TWVL, "2") + field(TWST, "200nA") + field(THVL, "3") + field(THST, "2uA") + field(FRVL, "4") + field(FRST, "20uA") + field(FVVL, "5") + field(FVST, "200uA") + field(SXVL, "6") + field(SXST, "2mA") + field(SVVL, "7") + field(SVST, "20mA") + field(FLNK, "$(P)$(CA)range") +} + +record(mbbi, "$(P)$(CA)range") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) RANGE") + field(ZRVL, "0") + field(ZRST, "2nA") + field(ONVL, "1") + field(ONST, "20nA") + field(TWVL, "2") + field(TWST, "200nA") + field(THVL, "3") + field(THST, "2uA") + field(FRVL, "4") + field(FRST, "20uA") + field(FVVL, "5") + field(FVST, "200uA") + field(SXVL, "6") + field(SXST, "2mA") + field(SVVL, "7") + field(SVST, "20mA") +} + +record(bo, "$(P)$(CA)rangeAutoSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) RANGE_AUTO") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(CA)rangeAuto") +} + +record(bi, "$(P)$(CA)rangeAuto") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) RANGE_AUTO") + field(ZNAM, "Off") + field(ONAM, "On") +} + +record(mbbo, "$(P)$(CA)rangeAutoUlimitSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) RANGE_AUTO_ULIMIT") + field(ZRVL, "0") + field(ZRST, "2nA") + field(ONVL, "1") + field(ONST, "20nA") + field(TWVL, "2") + field(TWST, "200nA") + field(THVL, "3") + field(THST, "2uA") + field(FRVL, "4") + field(FRST, "20uA") + field(FVVL, "5") + field(FVST, "200uA") + field(SXVL, "6") + field(SXST, "2mA") + field(SVVL, "7") + field(SVST, "20mA") + field(FLNK, "$(P)$(CA)rangeAutoUlimit") +} + +record(mbbi, "$(P)$(CA)rangeAutoUlimit") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) RANGE_AUTO_ULIMIT") + field(ZRVL, "0") + field(ZRST, "2nA") + field(ONVL, "1") + field(ONST, "20nA") + field(TWVL, "2") + field(TWST, "200nA") + field(THVL, "3") + field(THST, "2uA") + field(FRVL, "4") + field(FRST, "20uA") + field(FVVL, "5") + field(FVST, "200uA") + field(SXVL, "6") + field(SXST, "2mA") + field(SVVL, "7") + field(SVST, "20mA") +} + +record(mbbo, "$(P)$(CA)rangeAutoLlimitSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) RANGE_AUTO_LLIMIT") + field(ZRVL, "0") + field(ZRST, "2nA") + field(ONVL, "1") + field(ONST, "20nA") + field(TWVL, "2") + field(TWST, "200nA") + field(THVL, "3") + field(THST, "2uA") + field(FRVL, "4") + field(FRST, "20uA") + field(FVVL, "5") + field(FVST, "200uA") + field(SXVL, "6") + field(SXST, "2mA") + field(SVVL, "7") + field(SVST, "20mA") + field(FLNK, "$(P)$(CA)rangeAutoLlimit") +} + +record(mbbi, "$(P)$(CA)rangeAutoLlimit") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) RANGE_AUTO_LLIMIT") + field(ZRVL, "0") + field(ZRST, "2nA") + field(ONVL, "1") + field(ONST, "20nA") + field(TWVL, "2") + field(TWST, "200nA") + field(THVL, "3") + field(THST, "2uA") + field(FRVL, "4") + field(FRST, "20uA") + field(FVVL, "5") + field(FVST, "200uA") + field(SXVL, "6") + field(SXST, "2mA") + field(SVVL, "7") + field(SVST, "20mA") +} + + +record(bo, "$(P)$(CA)zeroCheckSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) ZERO_CHECK") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(CA)zeroCheck") +} + +record(bi, "$(P)$(CA)zeroCheck") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) ZERO_CHECK") + field(ZNAM, "Off") + field(ONAM, "On") +} + +record(bo, "$(P)$(CA)zeroCorrectSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) ZERO_CORRECT") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(CA)zeroCorrect") +} + +record(bi, "$(P)$(CA)zeroCorrect") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) ZERO_CORRECT") + field(ZNAM, "Off") + field(ONAM, "On") +} + +record(bo, "$(P)$(CA)zeroCorrectAcquire") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) ZERO_CORRECT_ACQUIRE") + field(ZNAM, "Off") + field(ONAM, "On") +} + + +record(bo, "$(P)$(CA)medianFilterSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) MEDIAN_FILTER") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(CA)medianFilter") +} +record(bi, "$(P)$(CA)medianFilter") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) MEDIAN_FILTER") + field(ZNAM, "Off") + field(ONAM, "On") +} + +record(longout, "$(P)$(CA)medianFilterRankSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) MEDIAN_FILTER_RANK") + field(FLNK, "$(P)$(CA)medianFilterRank") +} +record(longin, "$(P)$(CA)medianFilterRank") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) MEDIAN_FILTER_RANK") +} + + +record(bo, "$(P)$(CA)digitalFilterSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) DIGITAL_FILTER") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(CA)digitalFilter") +} +record(bi, "$(P)$(CA)digitalFilter") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) DIGITAL_FILTER") + field(ZNAM, "Off") + field(ONAM, "On") +} + +record(longout, "$(P)$(CA)digitalFilterCountSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) DIGITAL_FILTER_COUNT") + field(FLNK, "$(P)$(CA)digitalFilterCount") +} +record(longin, "$(P)$(CA)digitalFilterCount") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) DIGITAL_FILTER_COUNT") +} + +record(bo, "$(P)$(CA)digitalFilterControlSet") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT)) DIGITAL_FILTER_CONTROL") + field(ZNAM, "Moving") + field(ONAM, "Repeat") + field(FLNK, "$(P)$(CA)digitalFilterControl") +} +record(bi, "$(P)$(CA)digitalFilterControl") +{ + field(PINI, "YES") + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT)) DIGITAL_FILTER_CONTROL") + field(ZNAM, "Moving") + field(ONAM, "Repeat") +} + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/LakeShore331.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/LakeShore331.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,1016 @@ +record(asyn,"$(P)LS336:$(Q):serial") { + field(PORT,"$(PORT)") +} + +record(sseq,"$(P)LS336:$(Q):init") { + field(SCAN, "1 second") + field(LNK1,"$(P)LS336:$(Q):readAll.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):init.SCAN NPP NMS") + field(STR2,"Passive") + } + +record(sseq,"$(P)LS336:$(Q):read") { + field(LNK1,"$(P)LS336:$(Q):INA.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):IN2.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):IN3.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):IN4.PROC CA NMS") + field(LNK5,"$(P)LS336:$(Q):HTR1.PROC CA NMS") + field(LNK6,"$(P)LS336:$(Q):HTR2.PROC CA NMS") + field(LNK7,"$(P)LS336:$(Q):AOUT3.PROC CA NMS") + field(LNK8,"$(P)LS336:$(Q):AOUT4.PROC CA NMS") + field(LNK9,"$(P)LS336:$(Q):ModeRI_RBV.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") + field(WAIT5,"Wait") + field(WAIT6,"Wait") + field(WAIT7,"Wait") + field(WAIT8,"Wait") + field(WAIT9,"Wait") +} + +record(sseq,"$(P)LS336:$(Q):readAll") { + field(DLY1,"1") + field(LNK1,"$(P)LS336:$(Q):readAllMode.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):readAllSetup.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):readAllPID.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):readAllSP.PROC CA NMS") + field(LNK5,"$(P)LS336:$(Q):readAllRange.PROC CA NMS") + field(LNK6,"$(P)LS336:$(Q):read.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") + field(WAIT5,"Wait") + field(WAIT6,"Wait") +} + +record(sseq,"$(P)LS336:$(Q):readAllPID") { + field(LNK1,"$(P)LS336:$(Q):getPID1.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):getPID2.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):getRamp1.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):getRamp2.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") +} + +record(sseq,"$(P)LS336:$(Q):readAllMode") { + field(LNK1,"$(P)LS336:$(Q):getOutModeA.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):getOutMode2.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):getOutMode3.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):getOutMode4.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") +} + +record(sseq,"$(P)LS336:$(Q):readAllRange") { + field(LNK1,"$(P)LS336:$(Q):HTR1:Range_RBV.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):HTR2:Range_RBV.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):AOUT3:Range_RBV.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):AOUT4:Range_RBV.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") +} + +record(sseq,"$(P)LS336:$(Q):readAllSetup") { + field(LNK1,"$(P)LS336:$(Q):INA:getType.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):IN2:getType.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):IN3:getType.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):IN4:getType.PROC CA NMS") + field(LNK5,"$(P)LS336:$(Q):INA:Name_RBV.PROC CA NMS") + field(LNK6,"$(P)LS336:$(Q):IN2:Name_RBV.PROC CA NMS") + field(LNK7,"$(P)LS336:$(Q):IN3:Name_RBV.PROC CA NMS") + field(LNK8,"$(P)LS336:$(Q):IN4:Name_RBV.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") + field(WAIT5,"Wait") + field(WAIT6,"Wait") + field(WAIT7,"Wait") + field(WAIT8,"Wait") +} + +record(sseq,"$(P)LS336:$(Q):readAllSP") { + field(LNK1,"$(P)LS336:$(Q):OUTA:SP_RBV.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):OUT2:SP_RBV.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):OUT3:SP_RBV.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):OUT4:SP_RBV.PROC CA NMS") + field(LNK5,"$(P)LS336:$(Q):OUTA:MOUT_RBV.PROC CA NMS") + field(LNK6,"$(P)LS336:$(Q):OUT2:MOUT_RBV.PROC CA NMS") + field(LNK7,"$(P)LS336:$(Q):OUT3:MOUT_RBV.PROC CA NMS") + field(LNK8,"$(P)LS336:$(Q):OUT4:MOUT_RBV.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") + field(WAIT5,"Wait") + field(WAIT6,"Wait") + field(WAIT7,"Wait") + field(WAIT8,"Wait") +} + +record(sseq,"$(P)LS336:$(Q):readAllSelect") { + field(LNK1,"$(P)LS336:$(Q):OUTA:Select.PROC CA NMS") + field(LNK2,"$(P)LS336:$(Q):OUT2:Select.PROC CA NMS") + field(LNK3,"$(P)LS336:$(Q):OUT3:Select.PROC CA NMS") + field(LNK4,"$(P)LS336:$(Q):OUT4:Select.PROC CA NMS") + field(WAIT1,"Wait") + field(WAIT2,"Wait") + field(WAIT3,"Wait") + field(WAIT4,"Wait") +} + + +record(mbbo,"$(P)LS336:$(Q):OUTA:Cntrl") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") + field(FLNK,"$(P)LS336:$(Q):setOutModeA.VAL PP MS") +} +record(mbbo,"$(P)LS336:$(Q):OUT2:Cntrl") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") + field(FLNK,"$(P)LS336:$(Q):setOutMode2.VAL PP MS") +} + +record(mbbo,"$(P)LS336:$(Q):OUT3:Cntrl") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") + field(FLNK,"$(P)LS336:$(Q):setOutMode3.VAL PP MS") +} +record(mbbo,"$(P)LS336:$(Q):OUT4:Cntrl") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") + field(FLNK,"$(P)LS336:$(Q):setOutMode4.VAL PP MS") +} + +record(mbbo,"$(P)LS336:$(Q):OUTA:Mode") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"Off") + field(ONST,"Closed Loop") + field(TWST,"Zone") + field(THST,"Open Loop") + field(FLNK,"$(P)LS336:$(Q):setOutModeA.VAL PP MS") +} + +record(mbbo,"$(P)LS336:$(Q):OUT2:Mode") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"Off") + field(ONST,"Closed Loop") + field(TWST,"Zone") + field(THST,"Open Loop") + field(FLNK,"$(P)LS336:$(Q):setOutMode2.VAL PP MS") +} + +record(mbbo,"$(P)LS336:$(Q):OUT3:Mode") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"3") + field(TWVL,"4") + field(THVL,"5") + field(ZRST,"Off") + field(ONST,"Open Loop") + field(TWST,"Monitor Out") + field(THST,"Warmup Supply") + field(FLNK,"$(P)LS336:$(Q):setOutMode3.VAL PP MS") +} + +record(mbbo,"$(P)LS336:$(Q):OUT4:Mode") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"3") + field(TWVL,"4") + field(THVL,"5") + field(ZRST,"Off") + field(ONST,"Open Loop") + field(TWST,"Monitor Out") + field(THST,"Warmup Supply") + field(FLNK,"$(P)LS336:$(Q):setOutMode4.VAL PP MS") +} + + +record(mbbi,"$(P)LS336:$(Q):OUTA:Cntrl_RBV") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") +} +record(mbbi,"$(P)LS336:$(Q):OUT2:Cntrl_RBV") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") +} + +record(mbbi,"$(P)LS336:$(Q):OUT3:Cntrl_RBV") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") +} +record(mbbi,"$(P)LS336:$(Q):OUT4:Cntrl_RBV") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"-") + field(ONST,"A") + field(TWST,"B") + field(THST,"C") + field(FRST,"D") +} + +record(mbbi,"$(P)LS336:$(Q):OUTA:Mode_RBV") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"Off") + field(ONST,"Closed Loop") + field(TWST,"Zone") + field(THST,"Open Loop") +} + +record(mbbi,"$(P)LS336:$(Q):OUT2:Mode_RBV") { + field(DTYP,"Soft Channel") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"Off") + field(ONST,"Closed Loop") + field(TWST,"Zone") + field(THST,"Open Loop") +} + +record(mbbi,"$(P)LS336:$(Q):OUT3:Mode_RBV") { + field(DTYP,"Soft Channel") + field(ZRST,"Off") + field(THST,"Open Loop") + field(FRST,"Monitor Out") + field(FVST,"Warmup Supply") +} + +record(mbbi,"$(P)LS336:$(Q):OUT4:Mode_RBV") { + field(DTYP,"Soft Channel") + field(ZRST,"Off") + field(THST,"Open Loop") + field(FRST,"Monitor Out") + field(FVST,"Warmup Supply") +} + +record(stringin,"$(P)LS336:$(Q):INA:getType") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInType(A,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record(mbbi,"$(P)LS336:$(Q):INA:Sensor_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"Disabled") + field(ONST,"Diode") + field(TWST,"Platium RTD") + field(THST,"NTC RTD") + field(FRST,"Thermocouple") +} + +record(bi,"$(P)LS336:$(Q):INA:AutoRange_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(ai,"$(P)LS336:$(Q):INA:Range_RBV") { +} + +record(bi,"$(P)LS336:$(Q):INA:Comp_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(mbbi,"$(P)LS336:$(Q):INA:Units_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"UNDF") + field(ONST,"K") + field(TWST,"C") + field(THST,"S") +} + +record(mbbo,"$(P)LS336:$(Q):INA:Units") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setInType(A,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field(ZRVL,"1") + field(ONVL,"2") + field(TWVL,"3") + field(ZRST,"K") + field(ONST,"C") + field(TWST,"S") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + +record(stringin,"$(P)LS336:$(Q):IN2:getType") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInType(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record(mbbi,"$(P)LS336:$(Q):IN2:Sensor_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"Disabled") + field(ONST,"Diode") + field(TWST,"Platium RTD") + field(THST,"NTC RTD") + field(FRST,"Thermocouple") +} + +record(bi,"$(P)LS336:$(Q):IN2:AutoRange_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(ai,"$(P)LS336:$(Q):IN2:Range_RBV") { +} + +record(bi,"$(P)LS336:$(Q):IN2:Comp_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(mbbi,"$(P)LS336:$(Q):IN2:Units_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"UNDF") + field(ONST,"K") + field(TWST,"C") + field(THST,"S") +} + +record(mbbo,"$(P)LS336:$(Q):IN2:Units") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setInType(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field(ZRVL,"1") + field(ONVL,"2") + field(TWVL,"3") + field(ZRST,"K") + field(ONST,"C") + field(TWST,"S") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + + +record(stringin,"$(P)LS336:$(Q):IN3:getType") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInType(3,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record(mbbi,"$(P)LS336:$(Q):IN3:Sensor_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"Disabled") + field(ONST,"Diode") + field(TWST,"Platium RTD") + field(THST,"NTC RTD") + field(FRST,"Thermocouple") +} + +record(bi,"$(P)LS336:$(Q):IN3:AutoRange_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(ai,"$(P)LS336:$(Q):IN3:Range_RBV") { +} + +record(bi,"$(P)LS336:$(Q):IN3:Comp_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(mbbi,"$(P)LS336:$(Q):IN3:Units_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"UNDF") + field(ONST,"K") + field(TWST,"C") + field(THST,"S") +} + +record(mbbo,"$(P)LS336:$(Q):IN3:Units") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setInType(3,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field(ZRVL,"1") + field(ONVL,"2") + field(TWVL,"3") + field(ZRST,"K") + field(ONST,"C") + field(TWST,"S") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + +record(stringin,"$(P)LS336:$(Q):IN4:getType") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInType(4,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record(mbbi,"$(P)LS336:$(Q):IN4:Sensor_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(FRVL,"4") + field(ZRST,"Disabled") + field(ONST,"Diode") + field(TWST,"Platium RTD") + field(THST,"NTC RTD") + field(FRST,"Thermocouple") +} + +record(bi,"$(P)LS336:$(Q):IN4:AutoRange_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(ai,"$(P)LS336:$(Q):IN4:Range_RBV") { +} + +record(bi,"$(P)LS336:$(Q):IN4:Comp_RBV") { + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(mbbi,"$(P)LS336:$(Q):IN4:Units_RBV") { + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"UNDF") + field(ONST,"K") + field(TWST,"C") + field(THST,"S") +} + +record(mbbo,"$(P)LS336:$(Q):IN4:Units") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setInType(4,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field(ZRVL,"1") + field(ONVL,"2") + field(TWVL,"3") + field(ZRST,"K") + field(ONST,"C") + field(TWST,"S") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + +record (stringin, "$(P)LS336:$(Q):INA:Name_RBV") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getInName(A,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record (stringin, "$(P)LS336:$(Q):IN2:Name_RBV") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getInName(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record (stringin, "$(P)LS336:$(Q):IN3:Name_RBV") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getInName(3,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record (stringin, "$(P)LS336:$(Q):IN4:Name_RBV") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getInName(4,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record(ai,"$(P)LS336:$(Q):INA") { + field(PREC, 4) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInput(A,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record(ai,"$(P)LS336:$(Q):IN2") { + field(PREC, 4) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInput(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record(ai,"$(P)LS336:$(Q):IN3") { + field(PREC, 4) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInput(3,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record(ai,"$(P)LS336:$(Q):IN4") { + field(PREC, 4) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getInput(4,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record(ai,"$(P)LS336:$(Q):HTR1") { + field(PREC, 1) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getHeater(1) $(PORT) $(ADDR)") +} +record(ai,"$(P)LS336:$(Q):HTR2") { + field(PREC, 1) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getHeater(2) $(PORT) $(ADDR)") +} + +record(ai,"$(P)LS336:$(Q):AOUT3") { + field(PREC, 1) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getAOutput(3) $(PORT) $(ADDR)") +} +record(ai,"$(P)LS336:$(Q):AOUT4") { + field(PREC, 1) + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getAOutput(4) $(PORT) $(ADDR)") +} + + + +record(ai,"$(P)LS336:$(Q):P1_RBV") { + field(PREC,"1") +} +record(ai,"$(P)LS336:$(Q):P2_RBV") { + field(PREC,"1") +} + +record(ai,"$(P)LS336:$(Q):I1_RBV") { + field(PREC,"1") +} +record(ai,"$(P)LS336:$(Q):I2_RBV") { + field(PREC,"1") +} +record(ai,"$(P)LS336:$(Q):D1_RBV") { + field(PREC,"0") +} +record(ai,"$(P)LS336:$(Q):D2_RBV") { + field(PREC,"0") +} + +record(ao,"$(P)LS336:$(Q):P1") { + field(PREC,"1") + field(DRVL, "0.0") + field(DRVH, "1000.0") + field(FLNK, "$(P)LS336:$(Q):setPID1.VAL PP MS") +} +record(ao,"$(P)LS336:$(Q):P2") { + field(PREC,"1") + field(DRVL, "0.0") + field(DRVH, "1000.0") + field(FLNK, "$(P)LS336:$(Q):setPID2.VAL PP MS") +} + +record(ao,"$(P)LS336:$(Q):I1") { + field(PREC,"1") + field(DRVL, "0.0") + field(DRVH, "1000.0") + field(FLNK, "$(P)LS336:$(Q):setPID1.VAL PP MS") +} +record(ao,"$(P)LS336:$(Q):I2") { + field(PREC,"1") + field(DRVL, "0.0") + field(DRVH, "1000.0") + field(FLNK, "$(P)LS336:$(Q):setPID2.VAL PP MS") +} + +record(ao,"$(P)LS336:$(Q):D1") { + field(PREC,"0") + field(DRVL, "0") + field(DRVH, "200") + field (FLNK, "$(P)LS336:$(Q):setPID1.VAL PP MS") +} +record(ao,"$(P)LS336:$(Q):D2") { + field(PREC,"0") + field(DRVL, "0") + field(DRVH, "200") + field (FLNK, "$(P)LS336:$(Q):setPID2.VAL PP MS") +} + + +record(ai,"$(P)LS336:$(Q):RampR1_RBV") { + field(PREC,"1") +} +record(ai,"$(P)LS336:$(Q):RampR2_RBV") { + field(PREC,"1") +} + +record(bi,"$(P)LS336:$(Q):OnRamp1_RBV") { + field(DTYP,"Soft Channel") + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(bi,"$(P)LS336:$(Q):OnRamp2_RBV") { + field(DTYP,"Soft Channel") + field(ZNAM,"OFF") + field(ONAM,"ON") +} + +record(bo,"$(P)LS336:$(Q):OnRamp1") { + field(DTYP,"Soft Channel") + field(ZNAM,"OFF") + field(ONAM,"ON") + field(FLNK,"$(P)LS336:$(Q):setRamp1.VAL PP MS") +} + +record(bo,"$(P)LS336:$(Q):OnRamp2") { + field(DTYP,"Soft Channel") + field(ZNAM,"OFF") + field(ONAM,"ON") + field(FLNK,"$(P)LS336:$(Q):setRamp2.VAL PP MS") +} + +record(ao,"$(P)LS336:$(Q):RampR1") { + field(PREC,"1") + field (DRVL, "0.0") + field (DRVH, "100.0") + field(FLNK,"$(P)LS336:$(Q):setRamp1.VAL PP MS") +} +record(ao,"$(P)LS336:$(Q):RampR2") { + field(PREC,"1") + field (DRVL, "0.0") + field (DRVH, "100.0") + field(FLNK,"$(P)LS336:$(Q):setRamp2.VAL PP MS") +} + + +record (stringin, "$(P)LS336:$(Q):ID") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getID($(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record (ai, "$(P)LS336:$(Q):OUTA:SP_RBV") { + field (DTYP, "stream") + field (PREC, "4") + field (INP, "@LakeShore331.proto getSETP(A) $(PORT) $(ADDR)") +} +record (ai, "$(P)LS336:$(Q):OUT2:SP_RBV") { + field (DTYP, "stream") + field (PREC, "4") + field (INP, "@LakeShore331.proto getSETP(2) $(PORT) $(ADDR)") +} +record (ai, "$(P)LS336:$(Q):OUT3:SP_RBV") { + field (DTYP, "stream") + field (PREC, "4") + field (INP, "@LakeShore331.proto getSETP(3) $(PORT) $(ADDR)") +} +record (ai, "$(P)LS336:$(Q):OUT4:SP_RBV") { + field (DTYP, "stream") + field (PREC, "4") + field (INP, "@LakeShore331.proto getSETP(4) $(PORT) $(ADDR)") +} + +record (ao, "$(P)LS336:$(Q):OUTA:SP") { + field (DTYP, "stream") + field (PREC, "4") + field (OUT, "@LakeShore331.proto setSETP(A) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):OUTA:SP_RBV.VAL PP MS") +} +record (ao, "$(P)LS336:$(Q):OUT2:SP") { + field (DTYP, "stream") + field (PREC, "4") + field (OUT, "@LakeShore331.proto setSETP(2) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):OUT2:SP_RBV.VAL PP MS") +} +record (ao, "$(P)LS336:$(Q):OUT3:SP") { + field (DTYP, "stream") + field (PREC, "4") + field (OUT, "@LakeShore331.proto setSETP(3) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):OUT3:SP_RBV.VAL PP MS") +} +record (ao, "$(P)LS336:$(Q):OUT4:SP") { + field (DTYP, "stream") + field (PREC, "4") + field (OUT, "@LakeShore331.proto setSETP(4) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):OUT4:SP_RBV.VAL PP MS") +} + +record (ai, "$(P)LS336:$(Q):OUTA:MOUT_RBV") { + field (DTYP, "stream") + field (PREC, "2") + field (INP, "@LakeShore331.proto getMOUT(A) $(PORT) $(ADDR)") +} +record (ai, "$(P)LS336:$(Q):OUT2:MOUT_RBV") { + field (DTYP, "stream") + field (PREC, "2") + field (INP, "@LakeShore331.proto getMOUT(2) $(PORT) $(ADDR)") +} +record (ai, "$(P)LS336:$(Q):OUT3:MOUT_RBV") { + field (DTYP, "stream") + field (PREC, "2") + field (INP, "@LakeShore331.proto getMOUT(3) $(PORT) $(ADDR)") +} +record (ai, "$(P)LS336:$(Q):OUT4:MOUT_RBV") { + field (DTYP, "stream") + field (PREC, "2") + field (INP, "@LakeShore331.proto getMOUT(4) $(PORT) $(ADDR)") +} + +record (ao, "$(P)LS336:$(Q):OUTA:MOUT") { + field (DTYP, "stream") + field (PREC, "2") + field (OUT, "@LakeShore331.proto setMOUT(A) $(PORT) $(ADDR)") + field (DRVL, "0.0") + field (DRVH, "100.0") + field (FLNK,"$(P)LS336:$(Q):OUTA:MOUT_RBV.VAL PP MS") +} +record (ao, "$(P)LS336:$(Q):OUT2:MOUT") { + field (DTYP, "stream") + field (PREC, "2") + field (OUT, "@LakeShore331.proto setMOUT(2) $(PORT) $(ADDR)") + field (DRVL, "0.0") + field (DRVH, "100.0") + field (FLNK,"$(P)LS336:$(Q):OUT2:MOUT_RBV.VAL PP MS") +} +record (ao, "$(P)LS336:$(Q):OUT3:MOUT") { + field (DTYP, "stream") + field (PREC, "2") + field (OUT, "@LakeShore331.proto setMOUT(3) $(PORT) $(ADDR)") + field (DRVL, "0.0") + field (DRVH, "100.0") + field (FLNK,"$(P)LS336:$(Q):OUT3:MOUT_RBV.VAL PP MS") +} +record (ao, "$(P)LS336:$(Q):OUT4:MOUT") { + field (DTYP, "stream") + field (PREC, "2") + field (DRVL, "0.0") + field (DRVH, "100.0") + field (OUT, "@LakeShore331.proto setMOUT(4) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):OUT4:MOUT_RBV.VAL PP MS") +} + + +record(mbbi,"$(P)LS336:$(Q):HTR1:Range_RBV") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getRange(1) $(PORT) $(ADDR)") + field(ZRST,"OFF") + field(ONST,"LOW") + field(TWST,"MEDIUM") + field(THST,"HIGH") +} + +record(mbbo,"$(P)LS336:$(Q):HTR1:Range") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setRange(1) $(PORT) $(ADDR)") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"OFF") + field(ONST,"LOW") + field(TWST,"MEDIUM") + field(THST,"HIGH") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + + +record(mbbi,"$(P)LS336:$(Q):HTR2:Range_RBV") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getRange(2) $(PORT) $(ADDR)") + field(ZRST,"OFF") + field(ONST,"LOW") + field(TWST,"MEDIUM") + field(THST,"HIGH") +} + +record(mbbo,"$(P)LS336:$(Q):HTR2:Range") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setRange(2) $(PORT) $(ADDR)") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(THVL,"3") + field(ZRST,"OFF") + field(ONST,"LOW") + field(TWST,"MEDIUM") + field(THST,"HIGH") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + + +record(mbbi,"$(P)LS336:$(Q):AOUT3:Range_RBV") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getRange(3) $(PORT) $(ADDR)") + field(ZRST,"OFF") + field(ONST,"ON") +} + +record(mbbo,"$(P)LS336:$(Q):AOUT3:Range") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setRange(3) $(PORT) $(ADDR)") + field(ZRVL,"0") + field(ONVL,"1") + field(ZRST,"OFF") + field(ONST,"ON") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + +record(mbbi,"$(P)LS336:$(Q):AOUT4:Range_RBV") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getRange(4) $(PORT) $(ADDR)") + field(ZRST,"OFF") + field(ONST,"ON") +} + +record(mbbo,"$(P)LS336:$(Q):AOUT4:Range") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setRange(4) $(PORT) $(ADDR)") + field(ZRVL,"0") + field(ONVL,"1") + field(ZRST,"OFF") + field(ONST,"ON") + field(FLNK,"$(P)LS336:$(Q):readAll") +} + +record (stringin, "$(P)LS336:$(Q):getPID1") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getPID(1,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record (stringin, "$(P)LS336:$(Q):getPID2") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getPID(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + + +record (stringin, "$(P)LS336:$(Q):setPID1") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setPID(1,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK, "$(P)LS336:$(Q):getPID1.VAL PP MS") +} + +record (stringin, "$(P)LS336:$(Q):setPID2") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setPID(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK, "$(P)LS336:$(Q):getPID2.VAL PP MS") +} + + +record (stringin, "$(P)LS336:$(Q):getRamp1") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getRamp(1,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record (stringin, "$(P)LS336:$(Q):getRamp2") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getRamp(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record (stringin, "$(P)LS336:$(Q):setRamp1") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setRamp(1,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK, "$(P)LS336:$(Q):getRamp1.VAL PP MS") +} + +record (stringin, "$(P)LS336:$(Q):setRamp2") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setRamp(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK, "$(P)LS336:$(Q):getRamp2.VAL PP MS") +} + +record (stringin, "$(P)LS336:$(Q):setOutModeA") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setOUTMODE(A,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):readAll") +} + +record (stringin, "$(P)LS336:$(Q):setOutMode2") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setOUTMODE(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):readAll") +} + +record (stringin, "$(P)LS336:$(Q):setOutMode3") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setOUTMODE(3,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):readAll") +} + +record (stringin, "$(P)LS336:$(Q):setOutMode4") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto setOUTMODE(4,$(P)LS336:$(Q)) $(PORT) $(ADDR)") + field (FLNK,"$(P)LS336:$(Q):readAll") +} + +record (stringin, "$(P)LS336:$(Q):getOutModeA") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getOUTMODE(A,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record (stringin, "$(P)LS336:$(Q):getOutMode2") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getOUTMODE(2,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record (stringin, "$(P)LS336:$(Q):getOutMode3") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getOUTMODE(3,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} +record (stringin, "$(P)LS336:$(Q):getOutMode4") { + field (DTYP, "stream") + field (INP, "@LakeShore331.proto getOUTMODE(4,$(P)LS336:$(Q)) $(PORT) $(ADDR)") +} + +record(mbbi,"$(P)LS336:$(Q):ModeRI_RBV") { + field(DTYP, "stream") + field(INP, "@LakeShore331.proto getMODE $(PORT) $(ADDR)") + field(ZRST,"Local") + field(ONST,"Remote") + field(TWST,"Rem/Lockout") +} + +record(mbbo,"$(P)LS336:$(Q):ModeRI") { + field(DTYP, "stream") + field(OUT, "@LakeShore331.proto setMODE $(PORT) $(ADDR)") + field(ZRVL,"0") + field(ONVL,"1") + field(TWVL,"2") + field(ZRST,"Local") + field(ONST,"Remote") + field(TWST,"Rem/Lockout") + field(FLNK,"$(P)LS336:$(Q):ModeRI_RBV") +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/LakeShore331.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/LakeShore331.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,154 @@ +# LakeShore 336 Series Streams Protocol File +# +##### +# Interface: ASCII (INET or GPIB) +# Four Sensor Inputs/Outputs +# Two PID Loops +# Two Heater Outputs +# +# Commands: +# *IDN? - ID Query +# return: +# INTYPE? - Input Type Parameter Query +# return: n,n,n,n,n ,,,, +# HTR? - Heater Output Query +# return: +nnn.n +# HTRSET? - Heater Setup Query +# return: n,n,+n.nnn,n ,,, +# HTRST? - Heater Status Query +# return: n +# RDG? - Celcius/Kevin/Sensor Input Reading Query +# return: +nnn.n +# RDGST? - Input Reading Status Query +# return: n +# SETP , - Control Setpoint Command +# SETP? - Control Setpoint Query +# return: +nnn.nnn +# RANGE , - Heater Range Command +# RANGE? - Heater Range Query +# return: <0=Off, 1=Low(On), 2=Medium, 3=High +# PID ,

,, - Control Loop Parameters Command +# PID? - Control Loop Query +# return: ,, +# RAMP ,, - Control Setpoint Ramp Cmd +# RAMP? - Control Setpoint Ramp Query +# return: , +# + +ExtraInput = Ignore; +ReplyTimeout = 100; +OutTerminator = LF; +InTerminator = CR LF; + +getID { + out "*IDN?"; + in "%s"; + @init {out "*IDN?"; in "%s";} + } + +setSETP { + out "SETP \$1,%f"; + wait 100; + } + +getSETP { + out "SETP? \$1"; + in "%f"; + @init {out "SETP? \$1"; in "%f";} + } + + +setMOUT { + out "MOUT \$1,%f"; + wait 100; + } + +getMOUT { + out "MOUT? \$1"; + in "%f"; + @init {out "MOUT? \$1"; in "%f";} + } + + +setOUTMODE { + out "OUTMODE \$1,%(\$2:OUT\$1:Mode.RVAL)d,%(\$2:OUT\$1:Cntrl.VAL)d,0"; + wait 100; + } + + +getOUTMODE { + out "OUTMODE? \$1"; + in "%(\$2:OUT\$1:Mode_RBV.VAL)d,%(\$2:OUT\$1:Cntrl_RBV.VAL)d,%*d"; + } + +setMODE { + out "MODE %d"; + wait 100; + } + +getMODE { + out "MODE?"; + in "%d"; + } + +setPID { + out "PID \$1,%(\$2:P\$1.VAL)f,%(\$2:I\$1.VAL)f,%(\$2:D\$1.VAL)f"; + wait 100; + } + +getPID { + out "PID? \$1"; + in "%(\$2:P\$1_RBV.VAL)f,%(\$2:I\$1_RBV.VAL)f,%(\$2:D\$1_RBV.VAL)f"; + } + +setInType { + out "INTYPE %(\$2:OUT\$1:Cntrl_RBV.VAL)s,%(\$2:IN\$1:Sensor_RBV.VAL)d,%(\$2:IN\$1:AutoRange_RBV.VAL)d,%(\$2:IN\$1:Range_RBV.VAL)d,%(\$2:IN\$1:Comp_RBV.VAL)d,%(\$2:IN\$1:Units.RVAL)d"; + } + +getInType { + out "INTYPE? %(\$2:OUT\$1:Cntrl_RBV.VAL)s"; + in "%(\$2:IN\$1:Sensor_RBV.VAL)d,%(\$2:IN\$1:Comp_RBV.VAL)d"; + } + +getInput { + out "%(\$2:IN\$1:Units_RBV.VAL)s","RDG? ","%(\$2:OUT\$1:Cntrl_RBV.VAL)s"; + in "%f"; + } + +getInName { + out "INNAME? %(\$2:OUT\$1:Cntrl_RBV.VAL)s"; + in "%[_a-zA-Z0-9 -]"; + } + +getHeater { + out "HTR? \$1"; + in "%f"; + } + +getRange { + out "RANGE? \$1"; + in "%d"; + } + +setRange { + out "RANGE \$1,%d"; + wait 100; + } + +getAOutput { + out "AOUT? \$1"; + in "%f"; + } + +setRamp { + out "RAMP \$1,%(\$2:OnRamp\$1.VAL)d,%(\$2:RampR\$1.VAL)f"; + wait 100; + } + +getRamp { + out "RAMP? \$1"; + in "%(\$2:OnRamp\$1_RBV.VAL)d,%(\$2:RampR\$1_RBV.VAL)f"; + } + + + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/Makefile Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,31 @@ +TOP=../.. +include $(TOP)/configure/CONFIG +#---------------------------------------- +# ADD MACRO DEFINITIONS BELOW HERE + +# Install databases, templates & substitutions like this +DB += XGS600_chan.db +DB += XGS600.proto +DB += XGS600.substitutions +DB += XGS600_unit.db +DB += TPG26x.db +DB += TPG26x.proto +DB += SATECO_lakeshore331.proto +DB += SATECO_lakeshore.substitution +DB += SATECO_base.db +DB += SATECO_lakeshore331.db +DB += Bronkhorst.db +DB += Bronkhorst.substitution +DB += devBronkhorst.proto +DB += Keithley6485.db +DB += devKeithley6487.db +DB += devKeithley6487.proto +DB += asynRecord.db + +# If .db template is not named *.template add +# _TEMPLATE = + +include $(TOP)/configure/RULES +#---------------------------------------- +# ADD EXTRA GNUMAKE RULES BELOW HERE + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/SATECO_base.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/SATECO_base.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,473 @@ +# $Source: /cvs/G/DRV/SATECO/SATECO_base.template,v $ +# $Date: 2008/10/28 14:01:25 $ +# $Revision: 1.20 $ +# $Author: wang_x1 $ + + +# Required substitutions: +# NAME - prefix, e.g. X99SA-ES1-CRYOJET: +# UNIT - temperature unit +# PTCOLS - StreamDevice protocol file +# PORT - port name + +# The Alarm Status of this record is used to trigger WATCHDOG +record(stringin, "$(NAME):VERSION") +{ + field(DESC, "control version") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_VERSION $(PORT)") + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + + field(FLNK, "$(NAME):ONESHOT") +} + +############################################## +# Controller Mode +############################################## +record(mbbi, "$(NAME):MODE_RBV") +{ + field(DESC, "control mode") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_MODE $(PORT)") + + field(ZRVL, "0") + field(ONVL, "1") + + field(ZRST, "Local") + field(ONST, "Remote") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +record(mbbo, "$(NAME):MODE") +{ + field(DESC, "control mode") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_MODE $(PORT)") + + field(ZRVL, "0") + field(ONVL, "1") + + field(ZRST, "Local") + field(ONST, "Remote") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + + +############################################## +# Connection Status Monitor +############################################## +record(mbbo, "$(NAME):CONN-STAT") +{ + field(DESC, "connection status") + + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + + field(ZRST, "Disconnected") + field(ONST, "Connected") + field(TWST, "Connecting") + + field(ZRSV, "MAJOR") + field(ONSV, "NO_ALARM") + field(TWSV, "MINOR") +} +record(bo, "$(NAME):CONN") +{ + field(DESC, "turn on/off connection") + + field(ZNAM, "Disconnect") + field(ONAM, "Connect") + field(ZSV, "MAJOR") + field(OSV, "NO_ALARM") + + field(OUT, "$(NAME):CONN-DFAN.VAL PP") + field(FLNK, "$(NAME):CONN-CALC") +} + +record(dfanout, "$(NAME):CONN-DFAN") +{ + field(DESC, "fanout connect action") + field(OMSL, "supervisory") + + field(OUTA, "$(NAME):ASYNIO.ENBL") +# field(OUTB, "$(NAME):ENBLSCAN.VAL") + field(OUTC, "$(NAME):WATCHDOG.VAL PP") +} + +record(calcout, "$(NAME):CONN-CALC") +{ + field(DESC, "connecting") + field(INPA, "$(NAME):CONN.VAL") + field(CALC, "A=1?2:0") + field(DOPT, "Use CALC") + field(OOPT, "Transition To Non-zero") + field(OUT, "$(NAME):CONN-STAT.VAL PP MS") + field(SCAN, "Passive") +} + +record(calcout, "$(NAME):ONESHOT") +{ + field(DESC, "watchdog trigger") + field(INPA, "$(NAME):VERSION.STAT") + field(CALC, "A=0?1:0") + field(OOPT, "When Non-zero") + field(OUT, "$(NAME):WATCHDOG.VAL PP MS") + field(SCAN, "Passive") +} + +record(bo, "$(NAME):ENBLSCAN") +{ + field(DESC, "enable/disable record scan") + field(DTYP, "Soft Channel") + field(SCAN, "Passive") + + field(ZNAM, "Disable") + field(ONAM, "Enable") +} + +record(bo, "$(NAME):WATCHDOG") +{ + field(DESC, "connection indicator") + field(DTYP, "Soft Channel") + + field(HIGH, "15") + field(SCAN, "Passive") + + field(OUT, "$(NAME):CONN-STAT.VAL PP") + + field(ZNAM, "Disconnected") + field(ONAM, "Connected") + field(ZSV, "MAJOR") + field(OSV, "NO_ALARM") +} + +record(asyn, "$(NAME):ASYNIO") +{ + field(DESC, "asyn port") + field(PORT, "$(PORT)") +} + +record(calcout, "$(NAME):TRIG-CONN") +{ + field(DESC, "trigger scan") + field(INPA, "$(NAME):WATCHDOG.VAL CPP MS") + field(CALC, "A") + field(OUT, "$(NAME):CONN.VAL PP MS") + field(OOPT, "Transition To Zero") +} + +########################################### +# PID +########################################### +record(ao, "$(NAME):P") +{ + field(DESC, "PID - proportion set-point") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_P($(NAME)) $(PORT)") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + field(PREC, "1") +} + +record(ai, "$(NAME):P_RBV") +{ + field(DESC, "PID - proportion readback") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_P $(PORT)") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + field(PREC, "1") +} +record(ao, "$(NAME):I") +{ + field(DESC, "PID - integral set-point") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_I($(NAME)) $(PORT)") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + field(PREC, "1") +} + +record(ai, "$(NAME):I_RBV") +{ + field(DESC, "PID - integral readback") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_I $(PORT)") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + field(PREC, "1") +} +record(ao, "$(NAME):D") +{ + field(DESC, "PID - derivative set-point") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_D($(NAME)) $(PORT)") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + field(PREC, "1") +} + +record(ai, "$(NAME):D_RBV") +{ + field(DESC, "PID - derivative readback") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_D $(PORT)") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + field(PREC, "1") +} + +########################################### +# Heating Level +########################################### +record(ao, "$(NAME):HT-LVL") +{ + field(DESC, "heater level set-point") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_HEAT-LEVEL $(PORT)") + + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + + field(HOPR, "100") + field(LOPR, "0") + field(PREC, "1") + field(EGU, "%") +} + +record(ai, "$(NAME):HT-LVL_RBV") +{ + field(DESC, "heater level readback") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_HEAT-LEVEL $(PORT)") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + + field(HOPR, "100") + field(LOPR, "0") + field(PREC, "1") + field(EGU, "%") +} + +########################################### +# Temperature +########################################### + +record(ai, "$(NAME):TEMP_RBV") +{ + field(DESC, "temperature") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_TEMP $(PORT)") + field(FLNK, "$(NAME):TEMP-AVG") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + + field(PREC, "2") + field(EGU, "$(UNIT)") +} + +record(ao, "$(NAME):TEMP") +{ + field(DESC, "temperature") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_TEMP $(PORT)") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + + field(PREC, "2") + field(EGU, "$(UNIT)") + + field(FLNK, "$(NAME):GO-1 PP MS") +} + +#! +record(ai, "$(NAME):TEMP-SP") +{ + field(DESC, "temperature setpoint") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_TEMP-SP $(PORT)") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") + + field(PREC, "2") + field(EGU, "$(UNIT)") +} + +########################################### +# busy record for temperature set-point +########################################### +record(calcout, "$(NAME):GO-1") +{ + field(DESC, "") + field(INPA, "$(NAME):TEMP.SIMM") + field(CALC, "A=1?0:1") + + field(OUT, "$(NAME):GO-2 PP MS") + field(OOPT, "When Non-zero") +} + +record(bo, "$(NAME):GO-2") +{ + field(DESC, "") + field(DTYP, "Soft Channel") + field(OMSL, "supervisory") + field(VAL, "1") + field(OUT, "$(NAME):BUSY.VAL PP MS") + # update TEMP-STAT, not waiting for next readback + field(FLNK, "$(NAME):RNG-CALC") +} + +record(busy, "$(NAME):BUSY") +{ +} + +########################################### +# Temperature Status Monitor +########################################### + +record(longout, "$(NAME):SETTL-PRD") +{ + field(DESC, "settling time") + field(EGU, "s") + field(VAL, "120") + field(FLNK, "$(NAME):TEMP-AVG") +} + +record(ao, "$(NAME):TOLERANCE") +{ + field(DESC, "tolerance band width") + field(EGU, "$(UNIT)") + field(VAL, "1") + field(PREC, "2") +} + +record(sub, "$(NAME):TEMP-AVG") +{ + field(DESC, "temperature average") + field(INPA, "$(NAME):SETTL-PRD.VAL") + field(INPB, "$(NAME):TEMP_RBV.VAL") + field(INPD, "0") # Continuous Mode + field(INAM, "initSubAve") + field(SNAM, "SubAve") + field(PREC, "2") + field(SCAN, "Passive") + + field(FLNK, "$(NAME):RNG-CALC") +} + +record(calcout, "$(NAME):RNG-CALC") +{ + field(DESC, "temperature status calc") + field(INPA, "$(NAME):TEMP-AVG.VAL") + field(INPB, "$(NAME):TEMP.VAL") + field(INPC, "$(NAME):TOLERANCE.VAL") + field(INPD, "$(NAME):TEMP_RBV.VAL") + + field(CALC, "(ABS(A-B)<=C)&&(ABS(D-B)<=C)?0:1") + field(DOPT, "Use CALC") + field(OOPT, "When Zero") + + field(OUT, "$(NAME):BUSY.VAL PP MS") + field(FLNK, "$(NAME):TEMP-STAT.VAL PP MS") + + field(SCAN, "Passive") +} + +record(mbbo, "$(NAME):TEMP-STAT") +{ + field(DESC, "temperature status") + + field(DOL, "$(NAME):RNG-CALC MS") + field(OMSL, "closed_loop") + + field(ZRVL, "0") + field(ONVL, "1") + + field(ZRST, "Inside Range") + field(ONST, "Out of Range") + + field(ZRSV, "NO_ALARM") + field(ONSV, "MAJOR") + + field(SCAN, "Passive") +} +########################################### +# For Debug Use +########################################### +record(stringout, "$(NAME):QUERY") +{ + field(DESC, "debug - query") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) QUERY($(NAME):RECV.VAL) $(PORT)") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} +record(stringout, "$(NAME):RECV") +{ + field(DESC, "debug - received message") + field(DTYP, "Soft Channel") +} + +########################################### +# retrieve temp set-point when connected +########################################### +record(calcout, "$(NAME):TRIG-STAT") +{ + field(DESC, "trigger TRIG-SP") + field(INPA, "$(NAME):CONN-STAT.VAL CPP MS") + field(CALC, "A=1?1:0") + field(OUT, "$(NAME):TEMP-SIMM1.VAL PP MS") + field(OOPT, "Transition To Non-zero") +} +record(bo, "$(NAME):TEMP-SIMM1") +{ + field(DESC, "set TEMP in simulation") + field(OUT, "$(NAME):TEMP.SIMM") + field(FLNK, "$(NAME):SEQ") +} + +record(sseq, "$(NAME):SEQ") +{ + field(SELM, "All") + + field(WAIT1,"Wait") + field(DO1, "1") + field(LNK1, "$(NAME):TEMP-SP.PROC CA") + + field(DOL2, "$(NAME):TEMP-SP.VAL") + field(LNK2, "$(NAME):TEMP.VAL PP") + + field(FLNK, "$(NAME):TEMP-SIMM2") +} + +record(bo, "$(NAME):TEMP-SIMM2") +{ + field(DESC, "reset TEMP out simulation") + field(DOL, "0") + field(OUT, "$(NAME):TEMP.SIMM") + field(OMSL, "closed_loop") +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/SATECO_lakeshore.substitution --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/SATECO_lakeshore.substitution Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,15 @@ +#file lakeshore340.template { +# {NAME = X11MA-ES3-LSCI +# BUS = 15 +# QM = "'"} +#} +file "db/SATECO_base.db" { + pattern + { NAME, UNIT, PTCOLS, PORT } + { "trARPES:Carving", "K", "SATECO_lakeshore331.proto", "MOXA_2" } +} +file "db/SATECO_lakeshore331.db" { + pattern + { NAME, PTCOLS, PORT } + { "trARPES:Carving", "SATECO_lakeshore331.proto", "MOXA_2" } +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/SATECO_lakeshore331.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/SATECO_lakeshore331.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,251 @@ +# $Source: /cvs/G/DRV/SATECO/SATECO_lakeshore331.template,v $ +# $Date: 2013/06/18 11:22:01 $ +# $Revision: 1.7 $ +# $Author: wang_x1 $ + + +# Required substitutions: +# NAME - prefix, e.g. X99SA-ES1-CRYOJET: +# PTCOLS - StreamDevice protocol file +# PORT - port name + +############################################## +# Controller Control Mode +############################################## +record(mbbi, "$(NAME):CMODE_RBV") +{ + field(DESC, "control loop mode") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_CONTROL-MODE $(PORT)") + + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "5") + + field(ZRST, "Manual PID") + field(ONST, "Zone") + field(TWST, "Open Loop") + field(THST, "Auto Tune PID") + field(FRST, "Auto Tune PI") + field(FVST, "Auto Tune P") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +record(mbbo, "$(NAME):CMODE") +{ + field(DESC, "control loop mode") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_CONTROL-MODE $(PORT)") + + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "4") + field(FVVL, "5") + + field(ZRST, "Manual PID") + field(ONST, "Zone") + field(TWST, "Open Loop") + field(THST, "Auto Tune PID") + field(FRST, "Auto Tune PI") + field(FVST, "Auto Tune P") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +########################################### +# Heater Status +########################################### +record(mbbo, "$(NAME):HT-RNG") +{ + field(DESC, "heater range set-point") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_HEAT-RANGE $(PORT)") + + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + + field(ZRST, "Off") + field(ONST, "Low") + field(TWST, "Med") + field(THST, "High") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +record(mbbi, "$(NAME):HT-RNG_RBV") +{ + field(DESC, "heater range readback") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_HEAT-RANGE $(PORT)") + + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + + field(ZRST, "Off") + field(ONST, "Low") + field(TWST, "Med") + field(THST, "High") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +############################################## +# Heater Status +############################################## +record(mbbi, "$(NAME):HT-STAT") +{ + field(DESC, "heater status") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_HEAT-STAT $(PORT)") + + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + + field(ZRST, "no error") + field(ONST, "open load") + field(TWST, "short circuit") + + field(ZRSV, "NO_ALARM") + field(ONSV, "MAJOR") + field(TWSV, "MAJOR") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +############################################## +# Manual Heat Power Output +############################################## +record(ai, "$(NAME):MHP_RBV") +{ + field(DESC, "MHP readback") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_MHP $(PORT)") + + field(EGU, "%") + field(PREC, "2") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +record(ao, "$(NAME):MHP") +{ + field(DESC, "MHP set-point") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_MHP $(PORT)") + + field(EGU, "%") + field(PREC, "2") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + + + +############################################## +# Ramp Rate +############################################## +record(ao, "$(NAME):RMP-RT") +{ + field(DESC, "ramp rate set-point") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_RAMP-RATE($(NAME)) $(PORT)") + + field(EGU, "K/min") + field(PREC, "1") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} +record(ai, "$(NAME):RMP-RT_RBV") +{ + field(DESC, "ramp rate readback") + + field(EGU, "K/min") + field(PREC, "1") +} + +############################################## +# Ramp Mode +############################################## +record(bo, "$(NAME):RMP-MD") +{ + field(DESC, "trun of/off ramp") + field(DTYP, "stream") + field(OUT, "@$(PTCOLS) SET_RAMP-MODE($(NAME)) $(PORT)") + + field(ZNAM, "Off") + field(ONAM, "On") + + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} +record(bi, "$(NAME):RMP-MD_RBV") +{ + field(DESC, "ramp mode on/off") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_RAMP($(NAME)) $(PORT)") + + field(ZNAM, "Off") + field(ONAM, "On") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +############################################## +# Ramp Status +############################################## +record(bi, "$(NAME):RMP-STAT") +{ + field(DESC, "ramp status") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_RAMP-STAT $(PORT)") + + field(ZNAM, "Not ramping") + field(ONAM, "Setpoint is ramping") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + +############################################## +# Input B +############################################## +record(ai, "$(NAME):TEMP-B") +{ + field(DESC, "input B temperature") + field(DTYP, "stream") + field(INP, "@$(PTCOLS) GET_TEMP-B $(PORT)") + + field(EGU, "K") + field(PREC, "2") + + field(SCAN, "1 second") + field(DISV, "0") + field(SDIS, "$(NAME):WATCHDOG.VAL") +} + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/SATECO_lakeshore331.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/SATECO_lakeshore331.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,55 @@ +# $Source: /cvs/G/DRV/SATECO/cfg/SATECO_lakeshore331.ptcols,v $ +# $Date: 2012/12/06 10:32:25 $ +# $Revision: 1.9 $ +# $Author: wang_x1 $ +#---------------------------------------------- +InTerminator = CR LF; +OutTerminator = CR LF; +ReplyTimeout = 500; +ReadTimeout = 100; +WriteTimeout = 100; +ExtraInput = Ignore; + +GET_VERSION { out "*IDN?"; in "%39c"; wait 50; } + +GET_MODE { out "MODE?"; in "%{0|1|2}"; wait 50; } +SET_MODE { out "MODE %{0|1|2}"; wait 50; } + +GET_TEMP-SP { out "SETP? 1"; in "%f"; wait 50; } +GET_TEMP { out "KRDG? A"; in "%f"; wait 50; } +SET_TEMP { out "SETP 1,%f"; wait 50; } + +GET_TEMP-B { out "KRDG? B"; in "%f"; wait 50; } +GET_TEMP-C { out "KRDG? C"; in "%f"; wait 50; } +GET_TEMP-D { out "KRDG? D"; in "%f"; wait 50; } + +GET_HEAT-RANGE { out "RANGE?"; in "%{0|1|2|3}";wait 50; } +SET_HEAT-RANGE { out "RANGE %{0|1|2|3}"; wait 50; } + +GET_HEAT-STAT { out "HTRST?"; in "%{0|1|2}"; wait 50; } + +GET_MHP { out "MOUT? 1"; in "%f"; wait 50; } +SET_MHP { out "MOUT 1, %f"; wait 50; } + +GET_HEAT-LEVEL { out "HTR?"; in "%f"; wait 50; } +SET_HEAT-LEVEL {} + +GET_P { out "PID? 1"; in "%f,%*f,%*f"; wait 50;} +SET_P { out "PID 1,%f,%(\$1:I_RBV.VAL)f,%(\$1:D_RBV.VAL)f"; wait 50;} + +GET_I { out "PID? 1"; in "%*f,%f,%*f"; wait 50;} +SET_I { out "PID 1,%(\$1:P_RBV.VAL)f,%f,%(\$1:D_RBV.VAL)f"; wait 50; } + +GET_D { out "PID? 1"; in "%*f,%*f,%f"; wait 50;} +SET_D { out "PID 1,%(\$1:P_RBV.VAL)f,%(\$1:I_RBV.VAL)f,%f"; wait 50;} + +GET_CONTROL-MODE { out "CMODE? 1"; in "%{1|2|3|4|5|6}"; wait 50; } +SET_CONTROL-MODE { out "CMODE 1, %{1|2|3|4|5|6}"; wait 50; } + +GET_RAMP { out "RAMP? 1"; in "%{0|1},%(\$1:RMP-RT_RBV.VAL)f"; wait 50; } +GET_RAMP-STAT { out "RAMPST? 1"; in "%{0|1}"; wait 50; } +SET_RAMP-RATE { out "RAMP 1, %(\$1:RMP-MD_RBV.VAL)d, %f"; wait 50; } +SET_RAMP-MODE { out "RAMP 1, %d, %(\$1:RMP-RT_RBV.VAL)f"; wait 50; } + +QUERY {out "%s"; in "%(\$1)39c";} + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/TPG26x.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/TPG26x.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,333 @@ +record(stringin, "$(P)Reset") { + field(DTYP, "stream") + field(INP, "@TPG26x.proto reset $(PORT)") + field(PINI,"YES") +} + +record(bo, "$(P)DISABLE") +{ + field(DESC, "Disable comms") + field(PINI, "YES") + field(VAL, "$(DISABLE=0)") + field(OMSL, "supervisory") + field(ZNAM, "COMMS ENABLED") + field(ONAM, "COMMS DISABLED") +} + +# This record reads both pressure and errors +record(ai,"$(P)1:RAW_PRES") +{ + field(DESC, "Pressure reading from gauge 1 no error") + field(SCAN, "1 second") + field(DTYP, "stream") + field(INP, "@TPG26x.proto pres($(P),1:ERROR,2:ERROR,2:RAW_PRES) $(PORT)") + field(PINI, "YES") + field(PREC, "4") + field(SIML, "$(P)SIM") + field(SIOL, "$(P)SIM:1:PRESSURE") + field(SDIS, "$(P)DISABLE") + field(FLNK, "$(P)ACTIVITY") + field(VAL, 0) + info(archive, "VAL") +} + +record(mbbi,"$(P)1:ERROR") +{ + field(DESC, "Error from the Gauge 1") + field(SCAN, "Passive") + field(ZRST, "No Error") + field(ZRSV, "NO_ALARM") + field(ZRVL, 0) + field(ONST, "Underrange") + field(ONSV, "MINOR") + field(ONVL, 1) + field(TWST, "Overrange") + field(TWSV, "MINOR") + field(TWVL, 2) + field(THST, "Sensor error") + field(THSV, "MAJOR") + field(THVL, 3) + field(FRST, "Sensor off") + field(FRSV, "MAJOR") + field(FRVL, 4) + field(FVST, "No Sensor") + field(FVSV, "MAJOR") + field(FVVL, 5) + field(SXST, "Identification Error") + field(SXSV, "MAJOR") + field(SXVL, 6) + field(UNSV, "MAJOR") + field(PINI, "YES") + field(VAL, 0) + field(SIML, "$(P)SIM") + field(SIOL, "$(P)SIM:1:ERROR") + info(archive, "VAL") + info(INTEREST, "MEDIUM") +} + +# This record is set from 1:RAW_PRES +record(ai,"$(P)2:RAW_PRES") +{ + field(DESC, "Pressure reading from gauge 2 no error") + field(SCAN, "Passive") + field(PREC, "4") + field(SIML, "$(P)SIM") + field(SIOL, "$(P)SIM:2:PRESSURE") + field(PINI, "YES") + field(VAL, 0) + info(archive, "VAL") +} + +# This record is set from 1:RAW_PRES +record(mbbi,"$(P)2:ERROR") +{ + field(DESC, "Error from the Gauge 2") + field(SCAN, "Passive") + field(ZRST, "No Error") + field(ZRSV, "NO_ALARM") + field(ZRVL, 0) + field(ONST, "Underrange") + field(ONSV, "MINOR") + field(ONVL, 1) + field(TWST, "Overrange") + field(TWSV, "MINOR") + field(TWVL, 2) + field(THST, "Sensor error") + field(THSV, "MAJOR") + field(THVL, 3) + field(FRST, "Sensor off") + field(FRSV, "MAJOR") + field(FRVL, 4) + field(FVST, "No Sensor") + field(FVSV, "MAJOR") + field(FVVL, 5) + field(SXST, "Identification Error") + field(SXSV, "MAJOR") + field(SXVL, 6) + field(SVSV, "MAJOR") + field(SVVL, 7) + field(EISV, "MAJOR") + field(EIVL, 8) + field(NISV, "MAJOR") + field(NIVL, 9) + field(TESV, "MAJOR") + field(TEVL, 10) + field(ELSV, "MAJOR") + field(ELVL, 11) + field(TVSV, "MAJOR") + field(TVVL, 12) + field(TTSV, "MAJOR") + field(TTVL, 13) + field(FTSV, "MAJOR") + field(FTVL, 14) + field(FFSV, "MAJOR") + field(FFVL, 15) + field(PINI, "YES") + field(VAL, 0) + field(SIML, "$(P)SIM") + field(SIOL, "$(P)SIM:2:ERROR") + info(archive, "VAL") + info(INTEREST, "MEDIUM") +} + + +record(calcout,"$(P)1:CALC_PRES") { + field(DESC, "Pressure calculation gauge 1") + field(INPA, "$(P)1:RAW_PRES MS CP") + # For the error state reported + field(INPB, "$(P)1:ERROR MS CP") + + field(OUT, "$(P)1:PRESSURE MS PP") + + field(CALC, "A") +} + +record(ai,"$(P)1:PRESSURE") { + field(DESC, "Pressure reading from gauge 1") + field(EGU, "") # set by units transfer + field(PREC, "4") + $(IFPRESSUR1) info(alarm, "TPG26x") + info(archive, "VAL") + info(INTEREST, "HIGH") +} + +## PV hidden on graph when value set to 0, or is displayed +## when the channel is on and the VAL field is uncommented (sets to 1) + +record(bo, "$(P)1:VISIBLE") +{ + field(SCAN, "Passive") + field(DTYP, "Soft Channel") + field(ZNAM, "NO") + field(ONAM, "YES") + field(PINI, "YES") + $(IFPRESSUR1) field(VAL, "1") +} + +record(calcout,"$(P)2:CALC_PRES") { + field(DESC, "Pressure calculation gauge 2") + field(INPA, "$(P)2:RAW_PRES MS CP") + # For the error state reported + field(INPB, "$(P)2:ERROR MS CP") + # For the disconnect error (data is pushed into 1) + field(INPC, "$(P)1:RAW_PRES MS CP") + + field(OUT, "$(P)2:PRESSURE MS PP") + + field(CALC, "A") +} + +record(ai,"$(P)2:PRESSURE") { + field(DESC, "Pressure reading from gauge 2") + field(EGU, "") # set by units transfer + field(PREC, "4") + $(IFPRESSUR2) info(alarm, "TPG26x") + info(archive, "VAL") + info(INTEREST, "HIGH") +} + +## PV hidden on graph when value set to 0, or is displayed +## when the channel is on and the VAL field is uncommented (sets to 1) + +record(bo, "$(P)2:VISIBLE") +{ + field(SCAN, "Passive") + field(DTYP, "Soft Channel") + field(ZNAM, "NO") + field(ONAM, "YES") + field(PINI, "YES") + $(IFPRESSUR2) field(VAL, "1") +} + +record(calc,"$(P)ACTIVITY") { + field(DESC, "Activity record") + field(INPA, "$(P)ACTIVITY") + field(CALC, "A!=0?0:1") + field(VAL, 0) + field(PINI, "YES") +} + +record(stringout,"$(P)1:UNITS_TRANSFER") { + field(DESC, "Transfer the units to pressure 1") + field(DOL, "$(P)UNITS.VAL CP") + field(OMSL, "closed_loop") + field(OUT, "$(P)1:PRESSURE.EGU") +} + +record(stringout,"$(P)2:UNITS_TRANSFER") { + field(DESC, "Transfer the units to pressure 2") + field(DOL, "$(P)UNITS.VAL CP") + field(OMSL, "closed_loop") + field(OUT, "$(P)2:PRESSURE.EGU") +} + +record(mbbi, "$(P)UNITS") +{ + field(DESC, "Units of pressure") + field(SCAN, "1 second") + field(DTYP, "stream") + field(INP, "@TPG26x.proto getUnits $(PORT)") + field(ZRST, "mbar") + field(ONST, "Torr") + field(TWST, "Pa") + field(SIML, "$(P)SIM") + field(SIOL, "$(P)SIM:UNITS") + field(SDIS, "$(P)DISABLE") + info(archive, "VAL") + info(INTEREST, "HIGH") +} + +record(mbbo, "$(P)UNITS:SP") +{ + field(DTYP, "stream") + field(DESC, "Set the units of pressure") + field(OUT, "@TPG26x.proto setUnits $(PORT)") + field(ZRST, "mbar") + field(ONST, "Torr") + field(TWST, "Pa") + field(SIML, "$(P)SIM") + field(SIOL, "$(P)SIM:UNITS:SP") + field(SDIS, "$(P)DISABLE") + info(archive, "VAL") +} + +alias("$(P)UNITS", "$(P)UNITS:SP:RBV") + + + +## SIMULATION STUFF ## + +record(bo, "$(P)SIM") +{ + field(SCAN, "Passive") + field(DTYP, "Soft Channel") + field(ZNAM, "NO") + field(ONAM, "YES") + field(VAL, "$(RECSIM=0)") +} + +alias("$(P)SIM", "$(P)SIM:SP") + +record(mbbi, "$(P)SIM:UNITS") +{ + field(SCAN, "Passive") + field(DTYP, "Soft Channel") + field(ZRST, "mbar") + field(ONST, "Torr") + field(TWST, "Pa") +} + +alias("$(P)SIM:UNITS","$(P)SIM:UNITS:SP") + +alias("$(P)SIM:UNITS","$(P)SIM:UNITS:SP:RBV") + +record(ai,"$(P)SIM:1:PRESSURE") +{ + field(DESC, "Sim pressure from gauge 1 no error") + field(SCAN, "Passive") + field(DTYP, "Soft Channel") + field(PINI, "YES") + field(VAL, 0) +} + +record(ai,"$(P)SIM:2:PRESSURE") +{ + field(DESC, "Sim pressure from gauge 2 no error") + field(SCAN, "Passive") + field(DTYP, "Soft Channel") + field(FLNK, "$(P)2:RAW_PRES") + field(PINI, "YES") + field(VAL, 0) +} + +record(mbbi,"$(P)SIM:1:ERROR") +{ + field(DESC, "Simulated error from the Gauge 1") + field(SCAN, "Passive") + field(ZRST, "No Error") + field(ONST, "Underrange") + field(TWST, "Overrange") + field(THST, "Sensor error") + field(FRST, "Sensor off") + field(FVST, "No Sensor") + field(SXST, "Identification Error") + field(FLNK, "$(P)1:ERROR") + field(PINI, "YES") + field(VAL, 0) +} + +record(mbbi,"$(P)SIM:2:ERROR") +{ + field(DESC, "Simulated error from the Gauge 2") + field(SCAN, "Passive") + field(ZRST, "No Error") + field(ONST, "Underrange") + field(TWST, "Overrange") + field(THST, "Sensor error") + field(FRST, "Sensor off") + field(FVST, "No Sensor") + field(SXST, "Identification Error") + field(PINI, "YES") + field(VAL, 0) + field(FLNK, "$(P)2:ERROR") +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/TPG26x.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/TPG26x.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,50 @@ + + +#How TPG26x comms work: +#First send a command (e.g. ask for the pressure) then the device will return ACK. +#Then send ENQ to get the actual values. + +#According to the streamdevice manual, once an "out" is sent access to the +#device is exclusively locked until the WHOLE protocol is finished. +#This should mean that we do not need to worry about commands interrupting each other + +LockTimeout = 2500; +ReplyTimeout = 2000; +ReadTimeout = 100; +OutTerminator = CR; +InTerminator = CR LF; + +# Reset communication +reset { + out "RES,1"; + in ACK; + out ENQ; + in "%s"; +} + +# Get pressures (and errors) from both guages +pres { + out "PRX"; + in ACK; + out ENQ; + in "%(\$1\$2)d,%f,%(\$1\$3)d,%(\$1\$4)f"; +} + +# Get the current units +getUnits { + out "UNI"; + in ACK; + out ENQ; + in "%{0|1|2}"; +} + +# Set the current units +setUnits { + #UNI,0 = mbar + #UNI,1 = Torr + #UNI,2 = Pa + out "UNI,%{0|1|2}"; + in ACK; + out ENQ; + in "%{0|1|2}"; +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/XGS600.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/XGS600.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,37 @@ +#---------------------------------------------------------------------- +# +# StreamDevice protocol file for a reading/setting selected elements +# from a Varian XGS-600 pressure gauge controller +# +# 2013-01-10 J.Priller original version +# +#---------------------------------------------------------------------- + +Terminator = CR; + +# getUnits(address) +getUnits { + out "#\$113"; + in ">%d"; +} + +# getPressure(address,chan) +getPressure { + out "#\$102\$2"; + in ">%g"; +} + +# send a raw command +sendRawCommand { + out "%s"; +} + +# send a raw query (needs argument for PV to receive reply) +sendRawQuery { + ExtraInput = Ignore; + out "%s"; + in "%(\$1)40c"; +} + + + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/XGS600.substitutions --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/XGS600.substitutions Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,14 @@ +file "db/XGS600_unit.db" { + pattern + { HWUNIT, ADDR } + { "_trarpes_vac_xgs600_1", "00" } +} + +file "db/XGS600_chan.db" { + pattern + { HWUNIT, ADDR, CHAN, SYS, DEV, INST } + { "_trarpes_vac_xgs600_1", "00", "I1", "trARPES:", "XGS600:", "PressureAC" } + { "_trarpes_vac_xgs600_1", "00", "I2", "trARPES:", "XGS600:", "PressureTC" } + { "_trarpes_vac_xgs600_1", "00", "I3", "trARPES:", "XGS600:", "PressureMETIS" } + { "_trarpes_vac_xgs600_1", "00", "I4", "trARPES:", "XGS600:", "PressureMBE" } +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/XGS600_chan.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/XGS600_chan.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,29 @@ +# +# database template for an XGS600 pressure sensor channel +# +# macros: +# SYS,DEV,INST : base name for this channel +# HWUNIT : name of asyn port in drvAsynIPPortConfigure() +# + +record(ai, "$(SYS)$(DEV)$(INST):P_RD") +{ + field(DESC, "Pressure reading") + field(DTYP, "stream") + field(SCAN, ".2 second") + field(PREC, "3") + field(EGU, "??") + field(INP, "@XGS600.proto getPressure($(ADDR),$(CHAN)) $(HWUNIT)") + field(ADEL, "1.0e-9") +} + +record(scalcout, "_$(SYS)$(DEV)$(INST):units") +{ + field(DESC, "Units reading") + field(DTYP, "Soft Channel") + field(SCAN, "Passive") + field(CALC, "AA") + field(INAA, "_$(HWUNIT)_UNITS_SCALC.SVAL CP NMS") + field(OOPT, "Every Time") + field(OUT, "$(SYS)$(DEV)$(INST):P_RD.EGU NPP NMS") +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/XGS600_unit.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/XGS600_unit.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,50 @@ + +record(asyn, "_$(HWUNIT):sensor_asyn") +{ + field(PORT, "$(HWUNIT)") +} + +record(longin, "_$(HWUNIT)_UNITS_IDX") +{ + field(DESC, "Units index number") + field(DTYP, "stream") + field(SCAN, "1 second") + field(INP, "@XGS600.proto getUnits($(ADDR)) $(HWUNIT)") +} + +record(scalcout, "_$(HWUNIT)_UNITS_SCALC") +{ + field(DESC, "Units string scalcout") + field(DTYP, "Soft Channel") + field(SCAN, "Passive") + field(CALC, "@@A") + field(INPA, "_$(HWUNIT)_UNITS_IDX CP MS") + field(AA, "Torr") + field(BB, "mBar") + field(CC, "Pascal") +} + +record(stringout, "_$(HWUNIT)_RAW_CMD") +{ + field(DESC, "Raw command") + field(SCAN, "Passive") + field(DTYP, "stream") + field(OUT, "@XGS600.proto sendRawCommand $(HWUNIT)") +} + +record(stringout, "_$(HWUNIT)_RAW_QUERY") +{ + field(DESC, "Raw query") + field(SCAN, "Passive") + field(DTYP, "stream") + field(OUT, "@XGS600.proto sendRawQuery(_$(HWUNIT)_RAW_REPLY.VAL) $(HWUNIT)") +} + +record(stringin, "_$(HWUNIT)_RAW_REPLY") +{ + field(DESC, "Raw query reply") + field(SCAN, "Passive") + field(DTYP, "Soft Channel") +} + + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/asynRecord.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/asynRecord.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,9 @@ +record(asyn,"$(P)$(R)") +{ + field(DTYP,"asynRecordDevice") + field(PORT,"$(PORT)") + field(ADDR,"$(ADDR)") + field(OMAX,"$(OMAX)") + field(IMAX,"$(IMAX)") +} + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/devBronkhorst.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/devBronkhorst.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,44 @@ +Terminator = CR LF; +ReplyTimeout = 3000; +LockTimeout = 3000; + +identity{ + out ":0780040060006000"; + in ":138002006000%26c00"; +} + +readChar{ + out ":068004\$1\$2\$1\$2"; + in ":058002\$1\$2%X"; +} + +writeChar{ + out ":058002\$1\$2%02X"; + @init{readChar;} +} + +#SHOULD readInt also contain 0-padding? +readInt{ + out ":068004\$1\$2\$1\$2"; + in ":068002\$1\$2%X"; +} + +writeInt{ + out ":068002\$1\$2%04X"; + @init{readInt;} +} + +readFloat{ + out ":068004\$1\$2\$1\$2"; + in ":088002\$1\$2%X"; +} + +writeFloat{ + out ":088002\$1\$2%08X"; + @init{readFloat;} +} + +debug{ + out ":068004\$1\$2\$1\$2"; + in "%39c"; +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/devKeithley6487.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/devKeithley6487.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,721 @@ +########################################################################## +# Copyright (c) 2011 Lawrence Berkeley National Laboratory, Accelerator +# Technology Group, Engineering Division +# This code is distributed subject to a Software License Agreement found +# in file LICENSE that is included with this distribution. +########################################################################## + +# +# Basic SCPI (IEEE488.2) commands +# +record(waveform, "$(P)$(R)IDN") +{ + field(DESC, "SCPI identification string") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getIDN(119) $(PORT) $(A)") + field(PINI, "YES") + field(FTVL, "CHAR") + field(NELM, "120") +} +record(bo, "$(P)$(R)RST") +{ + field(DESC, "SCPI Reset") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto cmd(*RST) $(PORT) $(A)") +} +record(bo, "$(P)$(R)CLS") +{ + field(DESC, "SCPI Clear status") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto cmd(*CLS) $(PORT) $(A)") +} +record(bo, "$(P)$(R)TRG") +{ + field(DESC, "SCPI trigger") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto cmd(*TRG) $(PORT) $(A)") +} +record(longin, "$(P)$(R)GetSTB") +{ + field(DESC, "SCPI get status byte") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(*STB) $(PORT) $(A)") +} +record(longin, "$(P)$(R)GetESR") +{ + field(DESC, "SCPI get event status") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(*ESR) $(PORT) $(A)") +} +record(longout, "$(P)$(R)SetESE") +{ + field(DESC, "SCPI enable event status") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(*ESE) $(PORT) $(A)") +} +record(longin, "$(P)$(R)GetESE") +{ + field(DESC, "SCPI enabled event status") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(*ESE) $(PORT) $(A)") +} +record(longout, "$(P)$(R)SetSRE") +{ + field(DESC, "SCPI enable service requests") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(*SRE) $(PORT) $(A)") +} +record(longin, "$(P)$(R)GetSRE") +{ + field(DESC, "Enabled service requests") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(*SRE) $(PORT) $(A)") +} +record(longin, "$(P)$(R)GetOPC") +{ + field(DESC, "Output completion status") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(*OPC) $(PORT) $(A)") +} + +# +# Unlock/Lock local controls +# +record(bo, "$(P)$(R)KLOCK") +{ + field(DESC, "Lock out all local controls") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(SYST:KLOCK) $(PORT) $(A)") + field(ZNAM, "Unlocked") + field(ONAM, "Locked") + field(FLNK, "$(P)$(R)KLOCKRBV") +} +record(bi, "$(P)$(R)KLOCKRBV") +{ + field(DESC, "All local controls locked?") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(SYST:KLOCK) $(PORT) $(A)") + field(ZNAM, "Unlocked") + field(ONAM, "Locked") + field(PINI, "YES") +} + +# +# Reading +# +record(ai, "$(P)$(R)Measure") +{ + field(DESC, "Measure current") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto measureCurrent $(PORT) $(A)") + field(EGU, "A") + field(PREC, "5") +} +record(waveform, "$(P)$(R)FetchWF") +{ + field(DESC, "Fetch buffered data") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto fetchBuffered $(PORT) $(A)") + field(EGU, "A") + field(PREC, "5") + field(FTVL, "FLOAT") + field(NELM, "$(NELM=1000)") +} + +# +# Zero-check +# +record(bo, "$(P)$(R)ZeroCheck") +{ + field(DESC, "Disable/Enable zero check (input clamp)") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(SYST:ZCH) $(PORT) $(A)") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(R)ZeroCheckRBV") +} +record(bi, "$(P)$(R)ZeroCheckRBV") +{ + field(DESC, "Disable/Enable zero check (input clamp)") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(SYST:ZCH) $(PORT) $(A)") + field(ZNAM, "Off") + field(ONAM, "On") + field(PINI, "YES") +} + +# +# Range +# +record(bo, "$(P)$(R)AutoRange") +{ + field(DESC, "Disable/Enable auto-range") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(RANG:AUTO) $(PORT) $(A)") + field(ZNAM, "Fixed") + field(ONAM, "Auto") + field(FLNK, "$(P)$(R)AutoRangeRBV") +} +record(bi, "$(P)$(R)AutoRangeRBV") +{ + field(DESC, "Disable/Enable auto-range") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(RANG:AUTO) $(PORT) $(A)") + field(ZNAM, "Fixed") + field(ONAM, "Auto") + field(PINI, "YES") +} +record(mbbo, "$(P)$(R)Range") +{ + field(DESC, "Full-scale range") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setRange $(PORT) $(A)") + field(ZRVL, "9") + field(ZRST, "2 nA") + field(ONVL, "8") + field(ONST, "20 nA") + field(TWVL, "7") + field(TWST, "200 nA") + field(THVL, "6") + field(THST, "2 uA") + field(FRVL, "5") + field(FRST, "20 uA") + field(FVVL, "4") + field(FVST, "200 uA") + field(SXVL, "3") + field(SXST, "2 mA") + field(SVVL, "2") + field(SVST, "20 mA") + field(FLNK, "$(P)$(R)RangeRBV") +} +record(mbbi, "$(P)$(R)RangeRBV") +{ + field(DESC, "Full-scale range readback") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getRange $(PORT) $(A)") + field(ZRVL, "9") + field(ZRST, "2 nA") + field(ONVL, "8") + field(ONST, "20 nA") + field(TWVL, "7") + field(TWST, "200 nA") + field(THVL, "6") + field(THST, "2 uA") + field(FRVL, "5") + field(FRST, "20 uA") + field(FVVL, "4") + field(FVST, "200 uA") + field(SXVL, "3") + field(SXST, "2 mA") + field(SVVL, "2") + field(SVST, "20 mA") + field(PINI, "YES") +} + +# +# Filtering +# +record(ao, "$(P)$(R)IntegrationTime") +{ + field(DESC, "Reading integration time") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setF(NPLC) $(PORT) $(A)") + field(EGU, "Cycles") + field(PREC, "2") + field(LOPR, "0") + field(HOPR, "60") + field(DRVL, "0.01") + field(DRVH, "60") + field(FLNK, "$(P)$(R)IntegrationTimeRBV") +} +record(ai, "$(P)$(R)IntegrationTimeRBV") +{ + field(DESC, "Reading integration time") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getF(NPLC) $(PORT) $(A)") + field(EGU, "Cycles") + field(PREC, "2") + field(LOPR, "0") + field(HOPR, "60") + field(PINI, "YES") +} +record(longout, "$(P)$(R)FilterCount") +{ + field(DESC, "Number of samples in reading") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(AVER:COUN) $(PORT) $(A)") + field(EGU, "Samples") + field(LOPR, "2") + field(HOPR, "100") + field(DRVL, "2") + field(DRVH, "100") + field(FLNK, "$(P)$(R)FilterCountRBV") +} +record(longin, "$(P)$(R)FilterCountRBV") +{ + field(DESC, "Number of samples in reading") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(AVER:COUN) $(PORT) $(A)") + field(EGU, "Samples") + field(LOPR, "2") + field(HOPR, "100") + field(PINI, "YES") +} +record(bo, "$(P)$(R)FilterEnable") +{ + field(DESC, "Disable/Enable filter") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(AVER) $(PORT) $(A)") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(FLNK, "$(P)$(R)FilterEnableRBV") +} +record(bi, "$(P)$(R)FilterEnableRBV") +{ + field(DESC, "Disable/Enable filter") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(AVER) $(PORT) $(A)") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(PINI, "YES") +} +record(bo, "$(P)$(R)Damping") +{ + field(DESC, "Disable/Enable damping") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(DAMP) $(PORT) $(A)") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(FLNK, "$(P)$(R)DampingRBV") +} +record(bi, "$(P)$(R)DampingRBV") +{ + field(DESC, "Disable/Enable damping") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(DAMP) $(PORT) $(A)") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(PINI, "YES") +} + +# +# Triggering +# +record(mbbo, "$(P)$(R)ArmSource") +{ + field(DESC, "Arm source") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setArmSource $(PORT) $(A)") + field(ZRVL, "0") + field(ZRST, "Immediate") + field(ONVL, "1") + field(ONST, "GPIB/Serial") + field(TWVL, "2") + field(TWST, "Timer") + field(THVL, "3") + field(THST, "Manual") + field(FRVL, "4") + field(FRST, "Trigger Link") + field(FVVL, "5") + field(FVST, "SOT falling") + field(SXVL, "6") + field(SXST, "SOT rising") + field(SVVL, "7") + field(SVST, "SOT transition") + field(FLNK, "$(P)$(R)ArmSourceRBV") +} +record(mbbi, "$(P)$(R)ArmSourceRBV") +{ + field(DESC, "Arm source readback") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getArmSource $(PORT) $(A)") + field(ZRVL, "0") + field(ZRST, "Immediate") + field(ONVL, "1") + field(ONST, "GPIB/Serial") + field(TWVL, "2") + field(TWST, "Timer") + field(THVL, "3") + field(THST, "Manual") + field(FRVL, "4") + field(FRST, "Trigger Link") + field(FVVL, "5") + field(FVST, "SOT falling") + field(SXVL, "6") + field(SXST, "SOT rising") + field(SVVL, "7") + field(SVST, "SOT transition") + field(PINI, "YES") +} +record(mbbo, "$(P)$(R)ArmLine") +{ + field(DESC, "TLINK arm line") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(ARM:ILIN) $(PORT) $(A)") + field(ONVL, "1") + field(ONST, " TLink 1") + field(TWVL, "2") + field(TWST, " TLink 2") + field(THVL, "3") + field(THST, " TLink 3") + field(FRVL, "4") + field(FRST, " TLink 4") + field(FVVL, "5") + field(FVST, " TLink 5") + field(SXVL, "6") + field(SXST, " TLink 6") + field(FLNK, "$(P)$(R)ArmLineRBV") +} +record(mbbi, "$(P)$(R)ArmLineRBV") +{ + field(DESC, "TLINK arm line") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(ARM:ILIN) $(PORT) $(A)") + field(ONVL, "1") + field(ONST, " TLink 1") + field(TWVL, "2") + field(TWST, " TLink 2") + field(THVL, "3") + field(THST, " TLink 3") + field(FRVL, "4") + field(FRST, " TLink 4") + field(FVVL, "5") + field(FVST, " TLink 5") + field(SXVL, "6") + field(SXST, " TLink 6") + field(PINI, "YES") +} +record(ao, "$(P)$(R)ArmTimerInterval") +{ + field(DESC, "Arm timer interval") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setF(ARM:TIM) $(PORT) $(A)") + field(EGU, "s") + field(PREC, "5") + field(LOPR, "0") + field(HOPR, "1e5") + field(DRVL, "0.001") + field(DRVH, "99999.999") + field(FLNK, "$(P)$(R)ArmTimerIntervalRBV") +} +record(ai, "$(P)$(R)ArmTimerIntervalRBV") +{ + field(DESC, "Arm timer interval") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getF(ARM:TIM) $(PORT) $(A)") + field(EGU, "s") + field(PREC, "5") + field(LOPR, "0") + field(HOPR, "1e5") + field(PINI, "YES") +} +record(longout, "$(P)$(R)ArmCount") +{ + field(DESC, "Arm count") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(ARM:COUN) $(PORT) $(A)") + field(LOPR, "1") + field(HOPR, "2048") + field(DRVL, "1") + field(DRVH, "2048") + field(FLNK, "$(P)$(R)ArmCountRBV") +} +record(longin, "$(P)$(R)ArmCountRBV") +{ + field(DESC, "Arm count") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(ARM:COUN) $(PORT) $(A)") + field(LOPR, "1") + field(HOPR, "2048") + field(PINI, "YES") +} +record(mbbo, "$(P)$(R)TriggerSource") +{ + field(DESC, "Trigger source") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setTriggerSource $(PORT) $(A)") + field(ZRVL, "0") + field(ZRST, "Immediate") + field(ONVL, "1") + field(ONST, "Trigger Link") + field(FLNK, "$(P)$(R)TriggerSourceRBV") +} +record(mbbi, "$(P)$(R)TriggerSourceRBV") +{ + field(DESC, "Trigger source readback") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getTriggerSource $(PORT) $(A)") + field(ZRVL, "0") + field(ZRST, "Immediate") + field(ONVL, "1") + field(ONST, "Trigger Link") + field(PINI, "YES") +} +record(mbbo, "$(P)$(R)TriggerLine") +{ + field(DESC, "TLINK trigger line") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(TRIG:ILIN) $(PORT) $(A)") + field(ONVL, "1") + field(ONST, " TLink 1") + field(TWVL, "2") + field(TWST, " TLink 2") + field(THVL, "3") + field(THST, " TLink 3") + field(FRVL, "4") + field(FRST, " TLink 4") + field(FVVL, "5") + field(FVST, " TLink 5") + field(SXVL, "6") + field(SXST, " TLink 6") + field(FLNK, "$(P)$(R)TriggerLineRBV") +} +record(mbbi, "$(P)$(R)TriggerLineRBV") +{ + field(DESC, "TLINK trigger line") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(TRIG:ILIN) $(PORT) $(A)") + field(ONVL, "1") + field(ONST, " TLink 1") + field(TWVL, "2") + field(TWST, " TLink 2") + field(THVL, "3") + field(THST, " TLink 3") + field(FRVL, "4") + field(FRST, " TLink 4") + field(FVVL, "5") + field(FVST, " TLink 5") + field(SXVL, "6") + field(SXST, " TLink 6") + field(PINI, "YES") +} +record(ao, "$(P)$(R)TriggerDelay") +{ + field(DESC, "Trigger Delay") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setF(TRIG:DEL) $(PORT) $(A)") + field(EGU, "s") + field(PREC, "5") + field(LOPR, "0") + field(HOPR, "1000") + field(DRVL, "0") + field(DRVH, "999.9998") + field(FLNK, "$(P)$(R)TriggerDelayRBV") +} +record(ai, "$(P)$(R)TriggerDelayRBV") +{ + field(DESC, "Trigger Delay") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getF(TRIG:DEL) $(PORT) $(A)") + field(EGU, "s") + field(PREC, "5") + field(LOPR, "0") + field(HOPR, "1000") + field(PINI, "YES") +} +record(bo, "$(P)$(R)TriggerDelayAuto") +{ + field(DESC, "Disable/Enable trigger autodelay") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(TRIG:DEL:AUTO) $(PORT) $(A)") + field(ZNAM, "Fixed") + field(ONAM, "Auto") + field(FLNK, "$(P)$(R)TriggerDelayAutoRBV") +} +record(bi, "$(P)$(R)TriggerDelayAutoRBV") +{ + field(DESC, "Disable/Enable trigger autodelay") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(TRIG:DEL:AUTO) $(PORT) $(A)") + field(ZNAM, "Fixed") + field(ONAM, "Auto") + field(PINI, "YES") +} +record(longout, "$(P)$(R)TriggerCount") +{ + field(DESC, "Trigger count") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(TRIG:COUN) $(PORT) $(A)") + field(LOPR, "1") + field(HOPR, "2048") + field(DRVL, "1") + field(DRVH, "2048") + field(FLNK, "$(P)$(R)TriggerCountRBV") +} +record(longin, "$(P)$(R)TriggerCountRBV") +{ + field(DESC, "Trigger count") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(TRIG:COUN) $(PORT) $(A)") + field(LOPR, "1") + field(HOPR, "2048") + field(PINI, "YES") +} +record(bo, "$(P)$(R)Start") +{ + field(DESC, "SCPI Reset") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto cmd(INIT) $(PORT) $(A)") +} +record(bo, "$(P)$(R)Cancel") +{ + field(DESC, "Cancel trigger sequence") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto cancel $(PORT) $(A)") +} + +# +# The MEASure? command resets a bunch of trigger settings. +# This sequence record will restore them. +# +record(seq, "$(P)$(R)RestoreTriggerSettings") +{ + field(DESC, "Restore trigger settings after MEASure?") + field(LNK1, "$(P)$(R)ArmSource.PROC") + field(LNK2, "$(P)$(R)ArmCount.PROC") + field(LNK3, "$(P)$(R)TriggerSource.PROC") + field(LNK6, "$(P)$(R)TriggerCount.PROC") + field(LNK5, "$(P)$(R)TriggerDelayAuto.PROC") + field(LNK4, "$(P)$(R)TriggerDelay.PROC") +} +record(seq, "$(P)$(R)ReadTriggerSettings") +{ + field(DESC, "Read back trigger settings") + field(LNK1, "$(P)$(R)ArmSourceRBV.PROC") + field(LNK2, "$(P)$(R)ArmLineRBV.PROC") + field(LNK3, "$(P)$(R)ArmTimerIntervalRBV.PROC") + field(LNK4, "$(P)$(R)ArmCountRBV.PROC") + field(LNK5, "$(P)$(R)TriggerSourceRBV.PROC") + field(LNK6, "$(P)$(R)TriggerLineRBV.PROC") + field(LNK7, "$(P)$(R)TriggerDelayRBV.PROC") + field(LNK8, "$(P)$(R)TriggerDelayAutoRBV.PROC") + field(LNK9, "$(P)$(R)TriggerCountRBV.PROC") +} + +# +# Voltage source +# +record(bo, "$(P)$(R)SourceEnable") +{ + field(DESC, "Disable/Enable voltage source") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(SOUR:VOLT:STAT) $(PORT) $(A)") + field(ZNAM, "Off") + field(ONAM, "On") + field(FLNK, "$(P)$(R)SourceEnableRBV") +} +record(bi, "$(P)$(R)SourceEnableRBV") +{ + field(DESC, "Voltage source enabled?") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(SOUR:VOLT:STAT) $(PORT) $(A)") + field(ZNAM, "Off") + field(ONAM, "On") + field(PINI, "YES") +} +record(bo, "$(P)$(R)SourceInterlock") +{ + field(DESC, "Disable/Enable interlock") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setD(SOUR:VOLT:INT) $(PORT) $(A)") + field(ZNAM, "Disable") + field(ONAM, "Enable") + field(FLNK, "$(P)$(R)SourceInterlockRBV") +} +record(bi, "$(P)$(R)SourceInterlockRBV") +{ + field(DESC, "Interlock status") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getD(SOUR:VOLT:INT) $(PORT) $(A)") + field(ONAM, "Good") + field(ZNAM, "Broken") + field(PINI, "YES") +} +record(mbbo, "$(P)$(R)SourceRange") +{ + field(DESC, "Full-scale range") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setSourceRange $(PORT) $(A)") + field(ZRVL, "10") + field(ZRST, "10 V") + field(ONVL, "50") + field(ONST, "50 V") + field(TWVL, "500") + field(TWST, "500 V") + field(FLNK, "$(P)$(R)SourceRangeRBV") +} +record(mbbi, "$(P)$(R)SourceRangeRBV") +{ + field(DESC, "Full-scale range readback") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getSourceRange $(PORT) $(A)") + field(ZRVL, "0") + field(ZRST, "10 V") + field(ONVL, "1") + field(ONST, "50 V") + field(TWVL, "2") + field(TWST, "500 V") +} +record(mbbo, "$(P)$(R)SourceIlimit") +{ + field(DESC, "Source current limit") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setIlimit $(PORT) $(A)") + field(ZRVL, "5") + field(ZRST, "25 uA") + field(ONVL, "4") + field(ONST, "250 uA") + field(TWVL, "3") + field(TWST, "2.5 mA") + field(THVL, "2") + field(THST, "25 mA") + field(FLNK, "$(P)$(R)SourceIlimitRBV") +} +record(mbbi, "$(P)$(R)SourceIlimitRBV") +{ + field(DESC, "Source current limit") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getIlimit $(PORT) $(A)") + field(ZRVL, "5") + field(ZRST, "25 uA") + field(ONVL, "4") + field(ONST, "250 uA") + field(TWVL, "3") + field(TWST, "2.5 mA") + field(THVL, "2") + field(THST, "25 mA") + field(PINI, "YES") +} +record(ao, "$(P)$(R)SourceVoltage") +{ + field(DESC, "Source voltage setpoint") + field(DTYP, "stream") + field(OUT, "@devKeithley6487.proto setF(SOUR:VOLT) $(PORT) $(A)") + field(EGU, "V") + field(PREC, "5") + field(LOPR, "-505") + field(HOPR, "505") + field(DRVL, "-505") + field(DRVH, "505") + field(FLNK, "$(P)$(R)SourceVoltageRBV") +} +record(ai, "$(P)$(R)SourceVoltageRBV") +{ + field(DESC, "Source voltage readback") + field(DTYP, "stream") + field(INP, "@devKeithley6487.proto getF(SOUR:VOLT) $(PORT) $(A)") + field(EGU, "V") + field(PREC, "5") + field(LOPR, "-505") + field(HOPR, "505") + field(PINI, "YES") +} +record(seq, "$(P)$(R)SourceReadSettings") +{ + field(DESC, "Read back source settings") + field(LNK1, "$(P)$(R)SourceVoltageRBV.PROC") + field(LNK2, "$(P)$(R)SourceEnableRBV.PROC") + field(LNK3, "$(P)$(R)SourceInterlockRBV.PROC") + field(LNK4, "$(P)$(R)SourceIlimitRBV.PROC") + field(LNK5, "$(P)$(R)SourceRangeRBV.PROC") +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/devKeithley6487.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/devKeithley6487.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,119 @@ +########################################################################## +# Copyright (c) 2011 Lawrence Berkeley National Laboratory, Accelerator +# Technology Group, Engineering Division +# This code is distributed subject to a Software License Agreement found +# in file LICENSE that is included with this distribution. +########################################################################## + +@writetimeout { disconnect; } +@replytimeout { disconnect; } +@readtimeout { disconnect; } +@mismatch { disconnect; } + +ReplyTimeout = 1200; +InTerminator = "\n"; +OutTerminator = "\n"; + +getIDN { + out "*IDN?"; + in "%\$1[^\r\n]"; + ExtraInput = Ignore; +} +cmd { + out "\$1"; +} + +setD { + out "\$1 %d"; + @init { out "\$1?"; in "%d"; } +} +getD { + out "\$1?"; + in "%d"; + ExtraInput = Ignore; +} + +setF { + out "\$1 %f"; + @init { out "\$1?"; in "%f"; } +} +getF { + out "\$1?"; + in "%f"; + ExtraInput = Ignore; +} + +setRange { + out "RANG 2E-%d"; + @init { out "RANG?"; in "%*[^E]E-%d"; } +} +getRange { + out "RANG?"; + in "%*[^E]E-%d"; + ExtraInput = Ignore; +} + +setArmSource { + out "ARM:SOUR %{IMM|BUS|TIM|MAN|TLIN|NST|PST|BST}"; + @init { out "ARM:SOUR?"; in "%{IMM|BUS|TIM|MAN|TLIN|NST|PST|BST}"; } +} +getArmSource { + out "ARM:SOUR?"; + in "%{IMM|BUS|TIM|MAN|TLIN|NST|PST|BST}"; + ExtraInput = Ignore; +} +setTriggerSource { + out "TRIG:SOUR %{IMM|TLIN}"; + @init { out "TRIG:SOUR?"; in "%{IMM|TLIN}"; } +} +getTriggerSource { + out "TRIG:SOUR?"; + in "%{IMM|TLIN}"; + ExtraInput = Ignore; +} +cancel { + out "\030ABOR\r"; + in "%*s"; + ExtraInput = Ignore; +} + +# +# Measure current +# +measureCurrent { + ReplyTimeout = 5000; + out "READ?"; + in "%f"; + ExtraInput = Ignore; + @init { out "FORM:ELEM READ;CONF:CURR:DC"; } +} +fetchBuffered { + ReplyTimeout = 10000; + Separator = ","; + out "FETC?"; + in "%f"; + ExtraInput = Ignore; +} + +# +# Source +# +setIlimit { + out "SOUR:VOLT:ILIM 2.5E-%d"; + @init { out "SOUR:VOLT:ILIM?"; in "2.5%*[^E]E-%d"; } +} +getIlimit { + out "SOUR:VOLT:ILIM?"; + in "2.5%*[^E]E-%d"; + ExtraInput = Ignore; +} +setSourceRange { + out "SOUR:VOLT:RANGE %d"; + @init { out "SOUR:VOLT:RANGE?"; in "%{1.000000E+01|5.000000E+01|5.000000E+02}"; } +} +getSourceRange { + out "SOUR:VOLT:RANGE?"; + in "%{1.000000E+01|5.000000E+01|5.000000E+02}"; + ExtraInput = Ignore; +} + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Db/ls331.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Db/ls331.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,319 @@ +################################################## +# +# Protocol File +# +# Protocol file for Lakeshore 336 +# Diamond Light Source, June 2010 +# +# Oak Ridge National Lab, UT-Battelle, 2013-2015. +# Add more commands. +# +################################################## + +# check check Lakeshore 331 + +################################################## +# General Settings +################################################## + +Terminator = "\r\n"; +ReplyTimeout = 1000; + + +################################################### +# Get functions +################################################### + +# /// Read the device ID +getID { + out "*IDN?"; + in "LSCI,%s"; +} + +# /// Read the model number +getMODEL { + in "LSCI,%8c,%*15c,%*s"; +} + +# /// Read the serial number +getSERIAL { + in "LSCI,%*8c,%15c,%*s"; +} + +# /// Read the device firmware number +getFIRMWARE { + in "LSCI,%*8c,%*15c,%s"; +} + +# /// Read the heater status for output 1 or 2 +getHTR { + out "HTR? \$1"; + in "%f"; +} + +# /// Read the analog output for output 3 or 4 +getAOUT { + out "AOUT? \$1"; + in "%f"; +} + +# /// Read the setpoint for outputs 1-4 +getSETP { + out "SETP? \$1"; + in "%f"; +} + +# /// Read the temperature in kelvin for inputs 1-4 +getKRDG { + out "KRDG? \$1"; + in "%f"; +} + +# /// Read the voltage input for inputs 1-4 +getSRDG { + out "SRDG? \$1"; + in "%f"; +} + +# /// Read the range parameter (power range) for outputs 1-4 +getRANGE { + out "RANGE? \$1"; + in "%d"; +} + +# /// Read the ramp value and status for outputs 1-4 +# /// The first parameter is the output number. +# /// The second parameter is the ramp status record. +getRAMP { + out "RAMP? \$1"; + in "%(\$2)d,%f"; +} + +# /// Read the ramp status for outputs 1-4 +getRAMPSTATUS { + out "RAMP? \$1"; + in "%d,%*f"; +} + +# /// Read the manual output value for outputs 1-4 +getMOUT { + out "MOUT? \$1"; + in "%f"; +} + +# /// Read the PID params into 3 records using one write/read. +# /// The first argument is the output number. The second and third are +# /// the I and D records. +getPID { + out "PID? \$1"; + in "%f,%(\$2:\$3)f,%(\$2:\$4)f"; +} + +# /// Combine getOUTMODEMODE, getOUTMODEINPUT and getOUTMODEPE into one function. +# /// The first argument is the output number. +# /// The second argument is the PV prefix. +# /// The third argument is the output mode intput record (suffix only). +# /// The fourth argument is the output mode powerup enable record (suffix only). +getOM { + out "OUTMODE? \$1"; + in "%d,%(\$2:\$3)d,%(\$2:\$4)d"; +} + +# /// Read the output mode mode status for outputs 1-4 +# /// 0=Off +# /// 1=Closed Loop PID +# /// 2=Zone +# /// 3=Open Loop +# /// 4=Monitor Out +# /// 5=Warm Up Supply +getOUTMODEMODE { + out "OUTMODE? \$1"; + in "%d,%*d,%*d"; +} + +# /// Read the output mode input for outputs 1-4 +# /// 0=None +# /// 1=A +# /// 2=B +# /// 3=C +# /// 4=D +getOUTMODEINPUT { + out "OUTMODE? \$1"; + in "%*d,%d,%*d"; +} + +# /// Read the output mode power up enable for outputs 1-4 +# /// 0=Off +# /// 1=On +getOUTMODEPE { + out "OUTMODE? \$1"; + in "%*d,%*d,%d"; +} + + +# /// Read the tuning status +getTUNEST { + out "TUNEST?"; + in "%s"; +} + +# /// Read the tuning status success param +getTUNESTSUCCESS { + out "TUNEST?"; + in "%*d,%*d,%d,%*d"; +} + +# /// Read the ZONE parameters (this is read into a waveform) +getZONE { + out "ZONE? \$1,\$2"; + separator=","; + in "%f"; +} + +# /// Read the input sensor name +getINNAME { + out "INNAME? \$1"; + in "%#s"; +} + + +# /// Read the alarm status +# /// The first param is the input number, the second is the alarm low record. +getALARMST { + out "ALARMST? \$1"; + in "%d,%(\$2)d" +} + +# /// Read the alarm params. I put the ends of the PV names here +# /// to make the initial record INP link short. +getALARM { + out "ALARM? \$1"; + in "%(\$2.A)d,%(\$2.B)f,%(\$2.C)f,%(\$2.D)f,%(\$2.E)d,%(\$2.F)d,%(\$2.G)d" +} + +# /// Read the input reading status +getRDGST { + out "RDGST? \$1"; + in "%d" +} + +# /// Read the heater status for outputs 1 or 2 +getHTRST { + out "HTRST? \$1"; + in "%d" +} + +# /// Read the input curve number +getINCRV { + out "INCRV? \$1"; + in "%d" +} + +# /// Read the input curve header. +# /// The first argument is the curve number record (also prefix for other record names). +# /// The second argument is the curve name record (suffix only). +# /// The third argument is the curve serial number record (suffix only). +# /// The fourth argument is the curve data format record (suffix only). +# /// The fifth argument is the curve temperature limit record (suffix only). +# /// The sixth argument is the curve temperature coefficient record (suffix only). +getCRVHDR { + out "CRVHDR? %(\$1:\$2)d"; + in "%(\$1:\$3.AA)15c,%(\$1:\$3.BB)10c,%(\$1:\$3.A)d,%(\$1:\$3.B)f,%(\$1:\$3.C)d" +} + +# /// Read the input type params. I put the ends of the PV names here +# /// to make the initial record INP link short. +getINTYPE { + out "INTYPE? \$1"; + in "%(\$2.A)d,%(\$2.B)d,%(\$2.C)d,%(\$2.D)d,%(\$2.E)d" +} + + +####################################################### +# Set functions +####################################################### + +# /// Set the setpoint for outputs 1-4 +setSETP { + out "SETP \$1,%f"; + @init { getSETP; } +} + +# /// Set the range parameter for outputs 1-4 +setRANGE { + out "RANGE \$1,%d"; + @init { getRANGE; } +} + +# /// Set the ramp parameter for loops 1-2 +#Need to pass in the PV name for the getRAMPSTATUS protocol. +setRAMP { + out "RAMP \$2,%(\$1.VAL)d,%f"; + @init { out "RAMP? \$2"; in "%*d,%f"; } +} + +# /// Set the ramp status for loops 1-2 +#Need to pass in the PV name for the getRAMP protocol. +setRAMPSTATUS { + out "RAMP \$2,%d,%(\$1.VAL)f"; + @init { out "RAMP? \$2"; in "%d,%*f"; } +} + +# /// Set the manual output value for outputs 1-4 +setMOUT { + out "MOUT \$1,%f"; + @init { getMOUT; } +} + +# /// Set the PID P parameter for outputs 1-4 +setP { + out "PID \$1,%f,%(\$2:\$3)f,%(\$2:\$4)f"; + @init { out "PID? \$1"; in "%f,%*f,%*f"; } +} + +# /// Set the PID I parameter for outputs 1-4 +setI { + out "PID \$1,%(\$2:\$3)f,%f,%(\$2:\$4)f"; + @init { out "PID? \$1"; in "%*f,%f,%*f"; } +} + +# /// Set the PID D parameter for outputs 1-4 +setD { + out "PID \$1,%(\$2:\$3)f,%(\$2:\$4)f,%f"; + @init { out "PID? \$1"; in "%*f,%*f,%f"; } +} + +# /// Set the output mode [loop],[mode],[input],[power up enable] +setOM { + out "OUTMODE \$1,%d,%(\$2:\$3)d,%(\$2:\$4)d"; + @init { out "OUTMODE? \$1"; in "%d,%*d,%*d";} +} + +# /// Set the output mode input [loop],[mode],[input],[power up enable] +setOMI { + out "OUTMODE \$1,%(\$2:\$3)d,%d,%(\$2:\$4)d"; + @init { out "OUTMODE? \$1"; in "%*d,%d,%*d";} +} + +# /// Set the output mode power up enable [loop],[mode],[input],[power up enable] +setOMP { + out "OUTMODE \$1,%(\$2:\$3)d,%(\$2:\$4)d,%d"; + @init { out "OUTMODE? \$1"; in "%*d,%*d,%d";} +} + + +# /// Start the auto tune process. +setATUNE { + out "ATUNE \$1,%(\$2.VAL)d"; +} + +# /// Set the ZONE parameters +setZONE { + out "ZONE \$1,\$2,%(A)f,%(B)f,%(C)f,%(D)f,%(E)f,%(F)d,%(G)d,%(H)f"; +} + +# /// Set the input sensor name +setINNAME { + out "INNAME \$1,\"%s\""; + @init { getINNAME; } +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/Makefile Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,8 @@ +TOP = .. +include $(TOP)/configure/CONFIG +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *src*)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Src*)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *db*)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *Db*)) +include $(TOP)/configure/RULES_DIRS + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/src/IOCINFRAMain.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/src/IOCINFRAMain.cpp Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,23 @@ +/* IOCINFRAMain.cpp */ +/* Author: Marty Kraimer Date: 17MAR2000 */ + +#include +#include +#include +#include +#include + +#include "epicsExit.h" +#include "epicsThread.h" +#include "iocsh.h" + +int main(int argc,char *argv[]) +{ + if(argc>=2) { + iocsh(argv[1]); + epicsThreadSleep(.2); + } + iocsh(NULL); + epicsExit(0); + return(0); +} diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/src/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/src/Makefile Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,57 @@ +TOP=../.. + +include $(TOP)/configure/CONFIG +#---------------------------------------- +# ADD MACRO DEFINITIONS AFTER THIS LINE +#============================= + +#============================= +# Build the IOC application + +PROD_IOC = IOCINFRA +# IOCINFRA.dbd will be created and installed +DBD += IOCINFRA.dbd + +# IOCINFRA.dbd will be made up from these files: +IOCINFRA_DBD += base.dbd + +# Include dbd files from all support applications: +#IOCINFRA_DBD += xxx.dbd +IOCINFRA_DBD += calc.dbd +IOCINFRA_DBD += drvAsynIPPort.dbd +IOCINFRA_DBD += asyn.dbd +IOCINFRA_DBD += busySupport.dbd +IOCINFRA_DBD += stream.dbd +IOCINFRA_DBD += ip.dbd +IOCINFRA_DBD += bronkhorstFloat.dbd +IOCINFRA_DBD += drvAsynKeithley648x.dbd + +# Add all the support libraries needed by this IOC +#IOCINFRA_LIBS += xxx +IOCINFRA_LIBS += asyn +IOCINFRA_LIBS += stream +IOCINFRA_LIBS += busy +IOCINFRA_LIBS += calc +IOCINFRA_LIBS += ip + +# IOCINFRA_registerRecordDeviceDriver.cpp derives from IOCINFRA.dbd +IOCINFRA_SRCS += bronkhorstFloat.c +IOCINFRA_SRCS += drvAsynKeithley648x.cpp +IOCINFRA_SRCS += IOCINFRA_registerRecordDeviceDriver.cpp + +# Build the main IOC entry point on workstation OSs. +IOCINFRA_SRCS_DEFAULT += IOCINFRAMain.cpp +IOCINFRA_SRCS_vxWorks += -nil- + +# Add support from base/src/vxWorks if needed +#IOCINFRA_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary + +# Finally link to the EPICS Base libraries +IOCINFRA_LIBS += $(EPICS_BASE_IOC_LIBS) + +#=========================== + +include $(TOP)/configure/RULES +#---------------------------------------- +# ADD RULES AFTER THIS LINE + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/src/bronkhorstFloat.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/src/bronkhorstFloat.c Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,40 @@ +/* + * readFloat.c + * + * Created on: Mar 20, 2014 + * Author: user + */ + +#include +#include +#include +#include + +static int readFloat(aSubRecord *precord) +{ + /* + * Long variable in precord->a field, needs to reinterpreted as a float + * and stored to the output value field precord->vala + */ + *((float *)precord->vala) = *((float *)precord->a); + + return 0; +} + +static int writeFloat(aSubRecord *precord) +{ + /* + * Float variable in precord->a field, needs to reinterpreted as a long + * and stored to the output value field precord->vala + */ + *((long *)precord->vala) = *((long *)precord->a); + + return 0; +} + + +epicsRegisterFunction(readFloat); +epicsRegisterFunction(writeFloat); + + + diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/src/bronkhorstFloat.dbd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/src/bronkhorstFloat.dbd Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,2 @@ +function(readFloat) +function(writeFloat) diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/src/drvAsynKeithley648x.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/src/drvAsynKeithley648x.cpp Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,1339 @@ +/* + Description + This module provides support for a multiple device port driver. To + initialize the driver, the method drvAsynKeithley6485() is called from the + startup script with the following calling sequence. + + drvAsynKeithley6485(myport,ioport,ioaddr) + + Where: + myport - Keithley6485 Asyn interface port driver name (i.e. "EP0" ) + ioport - Communication port driver name (i.e. "S0" ) + ioaddr - Communication port device addr + + The method dbior can be called from the IOC shell to display the current + status of the driver. +*/ + + +/* System related include files */ +#include +#include +#include +#include + + +/* EPICS system related include files */ +#include +#include +#include +#include +#include +#include + +/* EPICS synApps/Asyn related include files */ +#include +#include +#include +#include +#include +#include +#include + +/* Define symbolic constants */ +#define TIMEOUT (5.0) +#define BUFFER_SIZE (100) + + +typedef enum {Octet=1, Float64=2, Int32=3} Type; + +static const char *driver = "drvAsynKeithley648x"; /* String for asynPrint */ + + +/* Declare port driver structure */ +struct Port +{ + int devtype; // 1:6485, 2:6487 + char* myport; + char* ioport; + int ioaddr; + + int init; // really needed?? + + char model[BUFFER_SIZE+1], *serial, *dig_rev, *disp_rev, *brd_rev; + + struct + { + int ioErrors; + int writeReads; + int writeOnlys; + } stats; + + struct + { + double reading; + int timestamp; + union + { + int raw; + struct + { + unsigned int overflow : 1; + unsigned int filter_enabled : 1; + unsigned int math_enabled : 1; + unsigned int null_enabled : 1; + unsigned int limit_test : 1; + unsigned int limit_result : 2; + unsigned int overvoltage : 1; + unsigned int padding : 1; + unsigned int zero_check_enabled : 1; + unsigned int zero_correct_enabled : 1; + } bits; + } status; + /* + Bits: + 0 (OFLO) — Set to 1 if measurement performed while in over-range + (overflowed reading). + 1 (Filter) — Set to 1 when measurement performed with the averaging + filter enabled. + 2 (Math) — Set to 1 when measurement performed with CALC1 enabled. + 3 (Null) — Set to 1 if null for CALC2 is enabled. + 4 (Limits) — Set to 1 if a limit test (CALC2) is enabled. + 5 & 6 (Limit Results) — Provides limit test results: + Bit 6 Bit 5 + 0 0 All limit tests passed + 0 1 CALC2:LIM1 test failed + 1 0 CALC2:LIM2 test failed + 7 (Overvoltage) — Set to 1 if measurement performed with an + overvoltage condition on the input. + 9 (Zero Check) — Set to 1 when zero check is enabled. + 10 (Zero Correct) — Set to 1 when zero correct is enabled. + */ + int eom; + } data; + + /* Asyn info */ + asynUser *pasynUser; + asynUser *pasynUserTrace; /* asynUser for asynTrace on this port */ + asynStandardInterfaces asynStdInterfaces; +}; + + +struct Command +{ + const char *tag; + int dev; + int type; + int id; +}; + + +/* Declare command structure */ +struct GenCommand +{ + asynStatus (*readFunc)(int which, Port *pport, void* data, Type Iface, + size_t *length, int *eom); + asynStatus (*writeFunc)(int which, Port *pport, void* data, Type Iface); +}; + +struct SimpleCommand +{ + int type; + const char *cmd_str; +}; + +/* Public interface forward references */ +int drvAsynKeithley648x(const char* myport,const char* ioport, int ioaddr); + + +/* Forward references for asynCommon methods */ +static void report(void* ppvt,FILE* fp,int details); +static asynStatus connect(void* ppvt,asynUser* pasynUser); +static asynStatus disconnect(void* ppvt,asynUser* pasynUser); +static asynCommon ifaceCommon = {report,connect,disconnect}; + +/* Forward references for asynDrvUser methods */ +static asynStatus create(void* ppvt,asynUser* pasynUser,const char* drvInfo, + const char** pptypeName,size_t* psize); +static asynStatus destroy(void* ppvt,asynUser* pasynUser); +static asynStatus gettype(void* ppvt,asynUser* pasynUser, + const char** pptypeName,size_t* psize); +static asynDrvUser ifaceDrvUser = {create,gettype,destroy}; + +/* Forward references for asynFloat64 methods */ +static asynStatus readFloat64(void* ppvt,asynUser* pasynUser, + epicsFloat64* value); +static asynStatus writeFloat64(void* ppvt,asynUser* pasynUser, + epicsFloat64 value); +static asynFloat64 ifaceFloat64 = {writeFloat64, readFloat64}; + +/* Forward references for asynInt32 methods */ +static asynStatus readInt32(void* ppvt,asynUser* pasynUser,epicsInt32* value); +static asynStatus writeInt32(void* ppvt,asynUser* pasynUser,epicsInt32 value); +static asynInt32 ifaceInt32 = {writeInt32, readInt32}; + +/* Forward references for asynOctet methods */ +static asynStatus flushOctet( void* ppvt, asynUser* pasynUser); +static asynStatus writeOctet( void* ppvt, asynUser* pasynUser, const char *data, + size_t numchars, size_t* nbytes); +static asynStatus readOctet( void* ppvt, asynUser* pasynUser, char* data, + size_t maxchars, size_t *nbytes, int *eom); +static asynOctet ifaceOctet = { writeOctet, readOctet, flushOctet}; + + +/* Forward references for external asynOctet interface */ +static asynStatus writeOnly(Port* pport, const char* outBuf); +static asynStatus writeRead(Port* pport, const char* outBuf, char* inpBuf, + int inputSize, int *eomReason); + + +static asynStatus readDummy(int which, Port *pport, void *data, Type Iface, + size_t *length, int *eom); +static asynStatus writeDummy(int which, Port *pport, void* data, Type Iface); + +static asynStatus readSimpleData( int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom); +static asynStatus writeSimpleData( int which, Port *pport, void *data, + Type Iface); + +static asynStatus readCache(int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom); + +static asynStatus readSensorReading(int which, Port *pport, void* data, + Type Iface, size_t *length, int *eom); +static asynStatus readRange(int which, Port *pport, void* data, + Type Iface, size_t *length, int *eom); +static asynStatus writeRange(int which, Port *pport, void* data, Type Iface); +static asynStatus readRate(int which, Port *pport, void* data, + Type Iface, size_t *length, int *eom); +static asynStatus writeRate(int which, Port *pport, void* data, Type Iface); +static asynStatus readVoltageSettings(int which, Port *pport, void* data, + Type Iface, size_t *length, int *eom); +static asynStatus writeVoltageSettings(int which, Port *pport, void* data, + Type Iface); +static asynStatus readCommon(int which, Port *pport, void* data, + Type Iface, size_t *length, int *eom); +static asynStatus writeCommon(int which, Port *pport, void* data, Type Iface); + + + + +// General commands that need special attention go here +enum { VOID_CMD, READ_CMD, RANGE_CMD, RANGE_AUTO_ULIMIT_CMD, + RANGE_AUTO_LLIMIT_CMD, RATE_CMD, DIGITAL_FILTER_CONTROL_CMD, + VOLTAGE_RANGE_CMD, VOLTAGE_CURRENT_LIMIT_CMD, GEN_CMD_NUMBER }; +static GenCommand genCommandTable[GEN_CMD_NUMBER] = + { + { readDummy, writeDummy}, // VOID + { readSensorReading, writeDummy}, // READ + { readRange, writeRange}, // RANGE + { readRange, writeRange}, // RANGE_AUTO_ULIMIT + { readRange, writeRange}, // RANGE_AUTO_LLIMIT + { readRate, writeRate}, // RATE + { readCommon, writeCommon}, // DIGITAL_FILTER_CONTROL + { readVoltageSettings, writeVoltageSettings}, // VOLTAGE_RANGE_COMMAND + { readVoltageSettings, writeVoltageSettings}, // VOLTAGE_CURRENT_LIMIT_COMMAND + }; + +// commands that are very simple-minded go here +enum { RESET_CMD, RANGE_AUTO_CMD, + ZERO_CHECK_CMD, ZERO_CORRECT_CMD, ZERO_CORRECT_ACQUIRE_CMD, + MEDIAN_FILTER_CMD, MEDIAN_FILTER_RANK_CMD, + DIGITAL_FILTER_CMD, DIGITAL_FILTER_COUNT_CMD, + VOLTAGE_CMD, VOLTAGE_STATE_CMD, VOLTAGE_10V_INTERLOCK_CMD, VOLTAGE_INTERLOCK_STATUS_CMD, + SIMPLE_CMD_NUMBER}; + +enum { SIMPLE_TRIGGER=0, SIMPLE_OCTET=Octet, SIMPLE_FLOAT64=Float64, + SIMPLE_INT32=Int32 }; +static SimpleCommand simpleCommandTable[SIMPLE_CMD_NUMBER] = + { + { SIMPLE_TRIGGER, "*RST"}, // RESET DEVICE + + { SIMPLE_INT32, ":RANGE:AUTO"}, // RANGE_AUTO + + { SIMPLE_INT32, "SYST:ZCH"}, // ZERO CHECK + { SIMPLE_INT32, "SYST:ZCOR"}, // ZERO CORRECT + { SIMPLE_TRIGGER, "SYST:ZCOR:ACQ"}, // ZERO CORRECT ACQUIRE + + { SIMPLE_INT32, "MED"}, // MEDIAN FILTER + { SIMPLE_INT32, "MED:RANK"}, // MEDIAN FILTER RANK + + { SIMPLE_INT32, "AVER"}, // DIGITAL FILTER + { SIMPLE_INT32, "AVER:COUN"}, // DIGITAL FILTER COUNT + + { SIMPLE_FLOAT64, "SOUR:VOLT"}, // VOLTAGE + { SIMPLE_INT32, "SOUR:VOLT:STAT"}, // VOLTAGE STATE + { SIMPLE_INT32, "SOUR:VOLT:INT"}, // VOLTAGE 10V INTERLOCK + { SIMPLE_INT32, "SOUR:VOLT:INT:FAIL"}, // VOLTAGE INTERLOCK STATUS + + // { SIMPLE_INT32, "AVER:"}, // + // { SIMPLE_INT32, "AVER:"}, // + }; + + +enum { TIMESTAMP_CMD, STATUS_RAW_CMD, STATUS_OVERFLOW_CMD, STATUS_FILTER_CMD, + STATUS_MATH_CMD, STATUS_NULL_CMD, STATUS_LIMITS_CMD, + STATUS_OVERVOLTAGE_CMD, STATUS_ZERO_CHECK_CMD, STATUS_ZERO_CORRECT_CMD, + MODEL_CMD, SERIAL_CMD, DIG_REV_CMD, DISP_REV_CMD, BRD_REV_CMD, + CACHE_CMD_NUMBER }; + +#define COMMAND_NUMBER (GEN_CMD_NUMBER + SIMPLE_CMD_NUMBER + CACHE_CMD_NUMBER) + +enum { CMD_GEN, CMD_SIMPLE, CMD_CACHE }; +enum { DEV_ALL, DEV_6485, DEV_6487}; +static Command commandTable[ COMMAND_NUMBER ] = + { + { "VOID", DEV_ALL, CMD_GEN, VOID_CMD }, + { "READ", DEV_ALL, CMD_GEN, READ_CMD }, + { "RANGE", DEV_ALL, CMD_GEN, RANGE_CMD }, + { "RANGE_AUTO_ULIMIT", DEV_ALL, CMD_GEN, RANGE_AUTO_ULIMIT_CMD }, + { "RANGE_AUTO_LLIMIT", DEV_ALL, CMD_GEN, RANGE_AUTO_LLIMIT_CMD }, + { "RATE", DEV_ALL, CMD_GEN, RATE_CMD }, + { "DIGITAL_FILTER_CONTROL", DEV_ALL, CMD_GEN, DIGITAL_FILTER_CONTROL_CMD }, + { "VOLTAGE_RANGE", DEV_6487, CMD_GEN, VOLTAGE_RANGE_CMD }, + { "VOLTAGE_CURRENT_LIMIT", DEV_6487, CMD_GEN, VOLTAGE_CURRENT_LIMIT_CMD }, + { "RESET", DEV_ALL, CMD_SIMPLE, RESET_CMD }, + { "RANGE_AUTO", DEV_ALL, CMD_SIMPLE, RANGE_AUTO_CMD }, + { "ZERO_CHECK", DEV_ALL, CMD_SIMPLE, ZERO_CHECK_CMD }, + { "ZERO_CORRECT", DEV_ALL, CMD_SIMPLE, ZERO_CORRECT_CMD }, + { "ZERO_CORRECT_ACQUIRE", DEV_ALL, CMD_SIMPLE, ZERO_CORRECT_ACQUIRE_CMD }, + { "MEDIAN_FILTER", DEV_ALL, CMD_SIMPLE, MEDIAN_FILTER_CMD }, + { "MEDIAN_FILTER_RANK", DEV_ALL, CMD_SIMPLE, MEDIAN_FILTER_RANK_CMD }, + { "DIGITAL_FILTER", DEV_ALL, CMD_SIMPLE, DIGITAL_FILTER_CMD }, + { "DIGITAL_FILTER_COUNT", DEV_ALL, CMD_SIMPLE, DIGITAL_FILTER_COUNT_CMD }, + { "VOLTAGE", DEV_6487, CMD_SIMPLE, VOLTAGE_CMD }, + { "VOLTAGE_STATE", DEV_6487, CMD_SIMPLE, VOLTAGE_STATE_CMD }, + { "VOLTAGE_TENV_INTERLOCK", DEV_6487, CMD_SIMPLE, VOLTAGE_10V_INTERLOCK_CMD }, + { "VOLTAGE_INTERLOCK_STATUS", DEV_6487, CMD_SIMPLE, VOLTAGE_INTERLOCK_STATUS_CMD }, + { "MODEL", DEV_ALL, CMD_CACHE, MODEL_CMD }, + { "SERIAL", DEV_ALL, CMD_CACHE, SERIAL_CMD }, + { "DIG_REV", DEV_ALL, CMD_CACHE, DIG_REV_CMD }, + { "DISP_REV", DEV_ALL, CMD_CACHE, DISP_REV_CMD }, + { "BRD_REV", DEV_ALL, CMD_CACHE, BRD_REV_CMD }, + { "TIMESTAMP", DEV_ALL, CMD_CACHE, TIMESTAMP_CMD }, + { "STATUS_RAW", DEV_ALL, CMD_CACHE, STATUS_RAW_CMD }, + { "STATUS_OVERFLOW", DEV_ALL, CMD_CACHE, STATUS_OVERFLOW_CMD }, + { "STATUS_FILTER", DEV_ALL, CMD_CACHE, STATUS_FILTER_CMD }, + { "STATUS_MATH", DEV_ALL, CMD_CACHE, STATUS_MATH_CMD }, + { "STATUS_NULL", DEV_ALL, CMD_CACHE, STATUS_NULL_CMD }, + { "STATUS_LIMITS", DEV_ALL, CMD_CACHE, STATUS_LIMITS_CMD }, + { "STATUS_OVERVOLTAGE", DEV_ALL, CMD_CACHE, STATUS_OVERVOLTAGE_CMD }, + { "STATUS_ZERO_CHECK", DEV_ALL, CMD_CACHE, STATUS_ZERO_CHECK_CMD }, + { "STATUS_ZERO_CORRECT", DEV_ALL, CMD_CACHE, STATUS_ZERO_CORRECT_CMD }, + }; + + + +/**************************************************************************** + * Define public interface methods + ****************************************************************************/ +int drvAsynKeithley648x(const char *type, const char *myport, + const char *ioport, int ioaddr) +{ + int status = asynSuccess; + Port* pport; + // int i; + asynStandardInterfaces *pInterfaces; + + char inpBuf[BUFFER_SIZE]; + int eomReason; + + pport = (Port*)callocMustSucceed(1,sizeof(Port),"drvAsynKeithley6485"); + pport->myport = epicsStrDup(myport); + pport->ioport = epicsStrDup(ioport); + pport->ioaddr = ioaddr; + + pport->devtype = DEV_ALL; + if( !strcmp("6485", type)) + pport->devtype = DEV_6485; + if( !strcmp("6487", type)) + pport->devtype = DEV_6487; + if(pport->devtype == DEV_ALL) // DEV_ALL is not a real device + { + errlogPrintf("%s::drvAsynKeithley6485 type has to be " + "either \'6485\' or \'6487\'.\n", driver); + return asynError; + } + + + status = pasynOctetSyncIO->connect(ioport,ioaddr,&pport->pasynUser,NULL); + if (status != asynSuccess) + { + errlogPrintf("%s::drvAsynKeithley6485 port %s can't connect " + "to asynCommon on Octet server %s address %d.\n", + driver, myport, ioport, ioaddr); + return asynError; + } + + /* Create asynUser for asynTrace */ + pport->pasynUserTrace = pasynManager->createAsynUser(0, 0); + pport->pasynUserTrace->userPvt = pport; + + status = pasynManager->registerPort(myport,ASYN_CANBLOCK,1,0,0); + if( status != asynSuccess) + { + errlogPrintf("%s::drvAsynKeithley6485 port %s can't register port\n", + driver, myport); + return asynError; + } + + pInterfaces = &pport->asynStdInterfaces; + + /* Initialize interface pointers */ + pInterfaces->common.pinterface = (void *)&ifaceCommon; + pInterfaces->drvUser.pinterface = (void *)&ifaceDrvUser; + pInterfaces->octet.pinterface = (void *)&ifaceOctet; + pInterfaces->int32.pinterface = (void *)&ifaceInt32; + pInterfaces->float64.pinterface = (void *)&ifaceFloat64; + + status = pasynStandardInterfacesBase->initialize(myport, pInterfaces, + pport->pasynUserTrace, + pport); + if (status != asynSuccess) + { + errlogPrintf("%s::drvAsynKeithley6485 port %s" + " can't register standard interfaces: %s\n", + driver, myport, pport->pasynUserTrace->errorMessage); + return asynError; + } + +#ifdef vxWorks + /* Send a sacrificial clear status to vxworks device (i.e. VME)*/ + /* This fixes a problem with *IDN? call when starting from a cold boot */ + /* with the SBS IP-Octal hardware. */ + if( writeOnly(pport,"") ) + { + errlogPrintf("%s::drvAsynKeithley6485 port %s failed to write\n", + driver, myport); + return asynError; + } +#endif + + /* Reset device */ + if( writeOnly(pport,"*CLS") ) + { + errlogPrintf("%s::drvAsynKeithley6485 port %s failed to clear\n", + driver, myport); + return asynError; + } + + + /* Identification query */ + if( writeRead(pport,"*IDN?",inpBuf,sizeof(inpBuf),&eomReason) ) + { + errlogPrintf("%s::drvAsynKeithley6485 port %s failed to " + "acquire identification\n", driver, myport); + return asynError; + } + strcpy(pport->model,inpBuf); + // char *model, *serial, *dig_rev, *disp_rev, *brd_rev; + pport->serial = strchr( pport->model, ','); + pport->serial = strchr( pport->serial + 1, ','); + *(pport->serial) = '\0'; + pport->serial++; + pport->dig_rev = strchr( pport->serial, ','); + *(pport->dig_rev) = '\0'; + pport->dig_rev++; + pport->disp_rev = strchr( pport->dig_rev, '/'); + *(pport->disp_rev) = '\0'; + pport->disp_rev++; + pport->brd_rev = strchr( pport->disp_rev, '/'); + *(pport->brd_rev) = '\0'; + pport->brd_rev++; + + /* Complete initialization */ + pport->init=1; + + pport->data.reading = 0.0; + pport->data.timestamp = 0; + pport->data.status.raw = 0; + + return asynSuccess; +} + + + + +/**************************************************************************** + * Define private read and write parameter methods + ****************************************************************************/ + +static asynStatus readDummy(int which, Port *pport, void *data, Type Iface, + size_t *length, int *eom) +{ + return asynSuccess; +} + +static asynStatus writeDummy(int which, Port *pport, void *data, Type Iface) +{ + return asynSuccess; +} + +/// + +static asynStatus readSimpleData( int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom) +{ + asynStatus status; + char outBuf[BUFFER_SIZE]; + char inpBuf[BUFFER_SIZE]; + + int len; + + // Trigger will automatically not work + if( simpleCommandTable[which].type != Iface) + return asynSuccess; + + sprintf( outBuf, "%s?", simpleCommandTable[which].cmd_str); + + status = writeRead( pport, outBuf, inpBuf, BUFFER_SIZE, &pport->data.eom); + if( status != asynSuccess) + return status; + + switch( Iface) + { + case Float64: + *((epicsFloat64 *) data) = atof(inpBuf); + break; + case Int32: + *((epicsInt32 *) data) = atoi(inpBuf); + break; + case Octet: + len = strlen( inpBuf); + if( len > 39) + inpBuf[39] = '\0'; + strcpy( (char *) data, inpBuf); + break; + } + + return asynSuccess; +} + +static asynStatus writeSimpleData( int which, Port *pport, void *data, + Type Iface) +{ + char outBuf[BUFFER_SIZE]; + + if( simpleCommandTable[which].type == SIMPLE_TRIGGER ) + sprintf( outBuf, "%s", simpleCommandTable[which].cmd_str); + else + { + if( simpleCommandTable[which].type != Iface ) + return asynSuccess; + + switch( simpleCommandTable[which].type & Iface) + { + case Float64: + sprintf( outBuf, "%s %g", simpleCommandTable[which].cmd_str, + *((epicsFloat64*) data) ); + break; + case Int32: + sprintf( outBuf, "%s %d", simpleCommandTable[which].cmd_str, + *((epicsInt32*) data) ); + break; + case Octet: + sprintf( outBuf, "%s %s", simpleCommandTable[which].cmd_str, + ((char *) data) ); + break; + } + } + + return writeOnly( pport, outBuf); +} + +//// + +static asynStatus readCache(int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom) +{ + char *char_cache = NULL; + int len; + + switch( Iface) + { + case Octet: + switch(which) + { + case MODEL_CMD: + char_cache = pport->model; + break; + case SERIAL_CMD: + char_cache = pport->serial; + break; + case DIG_REV_CMD: + char_cache = pport->dig_rev; + break; + case DISP_REV_CMD: + char_cache = pport->disp_rev; + break; + case BRD_REV_CMD: + char_cache = pport->brd_rev; + break; + } + len = strlen(char_cache); + if( len < 40) + strcpy( (char *) data, char_cache); + else // just in case string will overflow the EPICS string size of 40 + { + len = 39; + memcpy( (char *) data, char_cache, len); + ((char *) data)[len] = '\0'; + } + *length = len; + *eom = 0; + break; + case Float64: + // switch( which) + // { + // } + break; + case Int32: + switch( which) + { + case TIMESTAMP_CMD: + *(epicsInt32*)data = pport->data.timestamp; + break; + case STATUS_RAW_CMD: + *(epicsInt32*) data = pport->data.status.raw; + break; + case STATUS_OVERFLOW_CMD: + *(epicsInt32*) data = pport->data.status.bits.overflow; + break; + case STATUS_FILTER_CMD: + *(epicsInt32*) data = pport->data.status.bits.filter_enabled; + break; + case STATUS_MATH_CMD: + *(epicsInt32*) data = pport->data.status.bits.math_enabled; + break; + case STATUS_NULL_CMD: + *(epicsInt32*) data = pport->data.status.bits.null_enabled; + break; + case STATUS_LIMITS_CMD: + if( pport->data.status.bits.limit_test) + *(epicsInt32*) data = pport->data.status.bits.limit_result; + else + *(epicsInt32*) data = 3; + break; + case STATUS_OVERVOLTAGE_CMD: + *(epicsInt32*) data = pport->data.status.bits.overvoltage; + break; + case STATUS_ZERO_CHECK_CMD: + *(epicsInt32*) data = pport->data.status.bits.zero_check_enabled; + break; + case STATUS_ZERO_CORRECT_CMD: + *(epicsInt32*) data = pport->data.status.bits.zero_correct_enabled; + break; + } + break; + } + + return asynSuccess; +} + + +static asynStatus readSensorReading(int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom) +{ + asynStatus status; + char inpBuf[BUFFER_SIZE]; + + char *str, *token[3], *saveptr; + int pass; + + status = writeRead( pport, "READ?", inpBuf, BUFFER_SIZE, &pport->data.eom); + if( status != asynSuccess) + return status; + + str = inpBuf; + for( pass = 0; pass < 3; pass++, str = NULL) + { + token[pass] = epicsStrtok_r(str, ",", &saveptr); + if (token == NULL) + break; + } + if( pass != 3) + return asynError; + + pport->data.reading = atof( token[0]); + pport->data.timestamp = (int) atof( token[1]); + pport->data.status.raw = (int) atof( token[2]); + + switch( Iface ) + { + case Octet: + // only print current value + *length = sprintf( (char *) data, "%s", token[0]); + *eom = pport->data.eom; + break; + case Float64: + *(epicsFloat64*)data = pport->data.reading; + break; + case Int32: + break; + } + + return asynSuccess; +} + +static asynStatus readRange(int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom) +{ + asynStatus status; + char inpBuf[BUFFER_SIZE]; + + if( Iface == Octet) + return asynSuccess; + + switch( which) + { + case RANGE_CMD: + status = writeRead( pport, ":RANGE?", inpBuf, BUFFER_SIZE, + &pport->data.eom); + break; + case RANGE_AUTO_ULIMIT_CMD: + status = writeRead( pport, ":RANGE:AUTO:ULIM?", inpBuf, BUFFER_SIZE, + &pport->data.eom); + break; + case RANGE_AUTO_LLIMIT_CMD: + status = writeRead( pport, ":RANGE:AUTO:LLIM?", inpBuf, BUFFER_SIZE, + &pport->data.eom); + break; + default: + return asynError; + } + if( status != asynSuccess) + return status; + + if( Iface == Float64) + { + double val; + + val = atof( inpBuf); + if( val == 0.0) + return asynError; + + *(epicsFloat64*) data = val; + } + else if( Iface == Int32) + { + char *p; + + p = strchr( inpBuf, 'E'); + if(p == NULL) + return asynError; + p++; + *(epicsInt32*) data = 9 + atoi(p) ; + } + + return asynSuccess; +} + + +static asynStatus writeRange( int which, Port *pport, void *data, Type Iface) +{ + char outBuf[BUFFER_SIZE]; + int value; + + if( Iface != Int32) + return asynSuccess; + + value = *((epicsInt32*) data); + if( (value < 0) || (value > 7) ) + return asynError; + + switch( which) + { + case RANGE_CMD: + sprintf( outBuf, ":RANGE 2.0e%d", -9 + value ); + break; + case RANGE_AUTO_ULIMIT_CMD: + sprintf( outBuf, ":RANGE:AUTO:ULIM 2.0e%d", -9 + value ); + break; + case RANGE_AUTO_LLIMIT_CMD: + sprintf( outBuf, ":RANGE:AUTO:LLIM 2.0e%d", -9 + value ); + break; + default: + return asynError; + } + + return writeOnly( pport, outBuf); +} + + +static asynStatus readRate(int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom) +{ + asynStatus status; + char inpBuf[BUFFER_SIZE]; + + double val; + int rate; + + if( Iface != Int32) + return asynSuccess; + + status = writeRead( pport, ":NPLC?", inpBuf, BUFFER_SIZE, &pport->data.eom); + if( status != asynSuccess) + return status; + + val = atof( inpBuf); + if( val > 1.0) + rate = 0; // SLOW + else if( val > 0.1) + rate = 1; // MEDIUM + else + rate = 2; // FAST + + *((epicsInt32*) data) = rate; + + return asynSuccess; +} + + +static asynStatus writeRate( int which, Port *pport, void *data, Type Iface) +{ + char outBuf[BUFFER_SIZE]; + int rate; + double val; + + if( Iface != Int32) + return asynSuccess; + + rate = *((epicsInt32*) data); + if( (rate < 0) || (rate > 2) ) + return asynError; + + switch( rate) + { + case 0: + val = 6.0; + break; + case 1: + val = 1.0; + break; + case 2: + val = 0.1; + break; + default: + val = 1.0; + break; + } + + sprintf( outBuf, ":NPLC %g", val ); + return writeOnly( pport, outBuf); +} + + +static asynStatus readVoltageSettings(int which, Port *pport, void *data, Type Iface, + size_t *length, int *eom) +{ + asynStatus status; + char inpBuf[BUFFER_SIZE]; + + double val; + + if(( which != VOLTAGE_RANGE_CMD) && ( which != VOLTAGE_CURRENT_LIMIT_CMD)) + return asynError; + if( Iface == Octet) + return asynSuccess; + + if( which == VOLTAGE_RANGE_CMD) + status = writeRead( pport, "SOUR:VOLT:RANGE?", inpBuf, BUFFER_SIZE, + &pport->data.eom); + else + status = writeRead( pport, "SOUR:VOLT:ILIM?", inpBuf, BUFFER_SIZE, + &pport->data.eom); + if( status != asynSuccess) + return status; + + val = atof( inpBuf); + if( val == 0.0) + return asynError; + + if( Iface == Float64) + { + *((epicsFloat64*) data) = val; + } + else if( Iface == Int32) + { + if( which == VOLTAGE_RANGE_CMD) + { + if( val == 10.0) + *((epicsInt32*) data) = 0; + else if( val == 50.0) + *((epicsInt32*) data) = 1; + else if( val == 500.0) + *((epicsInt32*) data) = 2; + } + else + { + if( val == 2.5e-5) + *((epicsInt32*) data) = 0; + else if( val == 2.5e-4) + *((epicsInt32*) data) = 1; + else if( val == 2.5e-3) + *((epicsInt32*) data) = 2; + else if( val == 2.5e-2) + *((epicsInt32*) data) = 3; + } + } + + return asynSuccess; +} + + +static asynStatus writeVoltageSettings( int which, Port *pport, void *data, Type Iface) +{ + char outBuf[BUFFER_SIZE]; + int value; + + if(( which != VOLTAGE_RANGE_CMD) && ( which != VOLTAGE_CURRENT_LIMIT_CMD)) + return asynError; + if( Iface != Int32) + return asynSuccess; + + value = *((epicsInt32*) data); + if( which == VOLTAGE_RANGE_CMD) + { + if( (value < 0) || (value > 2) ) + return asynError; + + if( value == 0) + value = 10; + else if( value == 1) + value = 50; + else + value = 500; + + sprintf( outBuf, "SOUR:VOLT:RANGE %d", value ); + } + else + { + if( (value < 0) || (value > 3) ) + return asynError; + + sprintf( outBuf, "SOUR:VOLT:ILIM 2.5e%d", value - 5 ); + } + + return writeOnly( pport, outBuf); +} + + +static asynStatus readCommon(int which, Port *pport, void *data, + Type Iface, size_t *length, int *eom) +{ + asynStatus status; + char inpBuf[BUFFER_SIZE]; + + int val = 0; + + if( Iface != Int32) + return asynSuccess; + + switch(which) + { + case DIGITAL_FILTER_CONTROL_CMD: + status = writeRead( pport, "AVER:TCON?", inpBuf, BUFFER_SIZE, + &pport->data.eom); + + if( status != asynSuccess) + return status; + if( !strcmp( "MOV", inpBuf) ) + val = 0; + else if( !strcmp( "REP", inpBuf) ) + val = 1; + else + return asynError; + break; + } + + *((epicsInt32*) data) = val; + + return asynSuccess; +} + + +static asynStatus writeCommon( int which, Port *pport, void *data, Type Iface) +{ + char outBuf[BUFFER_SIZE]; + int val; + + if( Iface != Int32) + return asynSuccess; + + val = *((epicsInt32*) data); + switch( which) + { + case DIGITAL_FILTER_CONTROL_CMD: + if( !val) + sprintf( outBuf, "AVER:TCON MOV" ); + else if(val == 1) + sprintf( outBuf, "AVER:TCON REP" ); + else + return asynError; + break; + } + + return writeOnly( pport, outBuf); +} + + +/**************************************************************************** + * Define private interface asynCommon methods + ****************************************************************************/ +static void report(void* ppvt,FILE* fp,int details) +{ + // int i; + Port* pport = (Port*)ppvt; + + fprintf( fp, "Keithley648x port: %s\n", pport->myport); + if( details) + { + fprintf( fp, " server: %s\n", pport->ioport); + fprintf( fp, " address: %d\n", pport->ioaddr); + fprintf( fp, " ioErrors: %d\n", pport->stats.ioErrors); + fprintf( fp, " writeReads: %d\n", pport->stats.writeReads); + fprintf( fp, " writeOnlys: %d\n", pport->stats.writeOnlys); + fprintf( fp, " support %s initialized\n",(pport->init)?"IS":"IS NOT"); + } + +} + +static asynStatus connect(void* ppvt,asynUser* pasynUser) +{ + pasynManager->exceptionConnect(pasynUser); + return asynSuccess; +} + +static asynStatus disconnect(void* ppvt,asynUser* pasynUser) +{ + pasynManager->exceptionDisconnect(pasynUser); + return asynSuccess; +} + + +/**************************************************************************** + * Define private interface asynDrvUser methods + ****************************************************************************/ +static asynStatus create(void* ppvt, asynUser *pasynUser, const char *drvInfo, + const char **pptypeName, size_t *psize) +{ + Port* pport=(Port*)ppvt; + + int i; + + for(i = 0; i < COMMAND_NUMBER; i++) + if( !epicsStrCaseCmp( drvInfo, commandTable[i].tag) ) + { + if( (commandTable[i].dev != DEV_ALL) && + (commandTable[i].dev != pport->devtype) ) + { + errlogPrintf("%s::create port %s failed as tag %s is for different " + "device\n", driver, pport->myport, drvInfo); + pasynUser->reason = 0; + return asynError; + } + pasynUser->reason = i; + break; + } + if( i == COMMAND_NUMBER ) + { + errlogPrintf("%s::create port %s failed to find tag %s\n", + driver, pport->myport, drvInfo); + pasynUser->reason = 0; + return asynError; + } + + return asynSuccess; +} + +static asynStatus gettype(void* ppvt,asynUser* pasynUser, + const char** pptypeName,size_t* psize) +{ + if( pptypeName ) + *pptypeName = NULL; + if( psize ) + *psize = 0; + + return asynSuccess; +} + +static asynStatus destroy(void* ppvt,asynUser* pasynUser) +{ + return asynSuccess; +} + + +/**************************************************************************** + * Define private interface asynFloat64 methods + ****************************************************************************/ +static asynStatus writeFloat64(void* ppvt,asynUser* pasynUser, + epicsFloat64 value) +{ + Port* pport=(Port*)ppvt; + int which = pasynUser->reason; + + int id; + id = commandTable[which].id; + + if( pport->init == 0) + return asynError; + + switch( commandTable[which].type ) + { + case CMD_GEN: + return genCommandTable[id].writeFunc(id, pport, &value, Float64); + break; + case CMD_SIMPLE: + return writeSimpleData( id, pport, &value, Float64); + break; + } + + return asynSuccess; +} + +static asynStatus readFloat64(void* ppvt,asynUser* pasynUser, + epicsFloat64* value) +{ + Port* pport=(Port*)ppvt; + int which = pasynUser->reason; + + int id; + id = commandTable[which].id; + + if( pport->init == 0) + return asynError; + + switch( commandTable[which].type ) + { + case CMD_GEN: + return genCommandTable[id].readFunc(id, pport, value, Float64, + NULL, NULL); + break; + case CMD_SIMPLE: + return readSimpleData( id, pport, value, Float64, NULL, NULL); + break; + case CMD_CACHE: + return readCache(id, pport, value, Float64, NULL, NULL); + break; + } + + return asynSuccess; +} + + +/**************************************************************************** + * Define private interface asynInt32 methods + ****************************************************************************/ +static asynStatus writeInt32(void *ppvt, asynUser *pasynUser, epicsInt32 value) +{ + Port* pport=(Port*)ppvt; + int which = pasynUser->reason; + + int id; + id = commandTable[which].id; + + if( pport->init == 0) + return asynError; + + switch( commandTable[which].type ) + { + case CMD_GEN: + return genCommandTable[id].writeFunc(id, pport, &value, Int32); + break; + case CMD_SIMPLE: + return writeSimpleData( id, pport, (void *) &value, Int32); + break; + } + + return asynSuccess; +} + +static asynStatus readInt32(void *ppvt, asynUser *pasynUser, epicsInt32 *value) +{ + Port* pport=(Port*)ppvt; + int which = pasynUser->reason; + + int id; + id = commandTable[which].id; + + if( pport->init == 0) + return asynError; + + switch( commandTable[which].type ) + { + case CMD_GEN: + return genCommandTable[id].readFunc(id, pport, value, Int32, + NULL, NULL); + break; + case CMD_SIMPLE: + return readSimpleData( id, pport, value, Int32, NULL, NULL); + break; + case CMD_CACHE: + return readCache(id, pport, value, Int32, NULL, NULL); + break; + } + + return asynSuccess; +} + + +/**************************************************************************** + * Define private interface asynOctet methods + ****************************************************************************/ +static asynStatus flushOctet(void *ppvt, asynUser* pasynUser) +{ + return asynSuccess; +} + +static asynStatus writeOctet(void *ppvt, asynUser *pasynUser, const char *data, + size_t numchars, size_t *nbytes) +{ + Port* pport=(Port*)ppvt; + int which = pasynUser->reason; + + int id; + id = commandTable[which].id; + + if( pport->init == 0) + return asynError; + + switch( commandTable[which].type ) + { + case CMD_GEN: + *nbytes=strlen(data); + return genCommandTable[id].writeFunc(id, pport, (void *) data, Octet); + break; + case CMD_SIMPLE: + *nbytes=strlen(data); + return writeSimpleData( id, pport, &data, Octet); + break; + } + + return asynSuccess; +} + +static asynStatus readOctet(void* ppvt, asynUser* pasynUser, char* data, + size_t maxchars,size_t* nbytes,int* eom) +{ + Port* pport=(Port*)ppvt; + int which = pasynUser->reason; + + int id; + id = commandTable[which].id; + + if( pport->init == 0) + return asynError; + + switch( commandTable[which].type ) + { + case CMD_GEN: + return genCommandTable[id].readFunc(id, pport, (void *) data, Octet, + nbytes, eom); + break; + case CMD_SIMPLE: + return readSimpleData( id, pport, data, Octet, nbytes, eom); + break; + case CMD_CACHE: + return readCache(id, pport, (void *) data, Octet, nbytes, eom); + break; + } + + return asynSuccess; +} + + +/**************************************************************************** + * Define private Keithley648x external interface asynOctet methods + ****************************************************************************/ +static asynStatus writeOnly(Port *pport, const char *outBuf) +{ + asynStatus status; + size_t nActual, nRequested; + + nRequested=strlen(outBuf); + status = + pasynOctetSyncIO->write(pport->pasynUser,outBuf,nRequested,TIMEOUT,&nActual); + if( nActual!=nRequested ) + status = asynError; + + if( status!=asynSuccess ) + { + pport->stats.ioErrors++; + asynPrint(pport->pasynUserTrace,ASYN_TRACE_ERROR, + "%s writeOnly: error %d wrote \"%s\"\n", + pport->myport,status,outBuf); + } + else + pport->stats.writeOnlys++; + + asynPrint(pport->pasynUserTrace, ASYN_TRACEIO_FILTER, + "%s writeOnly: wrote \"%s\"\n", + pport->myport,outBuf); + + return status; +} + +static asynStatus writeRead(Port *pport, const char *outBuf, char *inpBuf, + int inputSize, int *eomReason) +{ + asynStatus status; + size_t nWrite, nRead, nWriteRequested; + + nWriteRequested=strlen(outBuf); + status = pasynOctetSyncIO->writeRead(pport->pasynUser,outBuf, + nWriteRequested,inpBuf,inputSize-1, + TIMEOUT,&nWrite,&nRead,eomReason); + if( nWrite!=nWriteRequested ) + status = asynError; + + if( status!=asynSuccess ) + { + pport->stats.ioErrors++; + asynPrint(pport->pasynUserTrace,ASYN_TRACE_ERROR, + "%s writeRead: error %d wrote \"%s\"\n", + pport->myport,status,outBuf); + } + else + { + inpBuf[nRead]='\0'; + pport->stats.writeReads++; + } + + asynPrint(pport->pasynUserTrace,ASYN_TRACEIO_FILTER, + "%s writeRead: wrote \"%s\" read \"%s\"\n", + pport->myport,outBuf,inpBuf); + + return status; +} + + +/**************************************************************************** + * Register public methods + ****************************************************************************/ + +/* Initialization method definitions */ +static const iocshArg arg0 = {"type",iocshArgString}; +static const iocshArg arg1 = {"myport",iocshArgString}; +static const iocshArg arg2 = {"ioport",iocshArgString}; +static const iocshArg arg3 = {"ioaddr",iocshArgInt}; +static const iocshArg* args[]= {&arg0,&arg1,&arg2,&arg3}; +static const iocshFuncDef drvAsynKeithley648xFuncDef = + {"drvAsynKeithley648x",4,args}; +static void drvAsynKeithley648xCallFunc(const iocshArgBuf* args) +{ + drvAsynKeithley648x(args[0].sval,args[1].sval,args[2].sval,args[3].ival); +} + +/* Registration method */ +static void drvAsynKeithley648xRegister(void) +{ + static int firstTime = 1; + + if( firstTime ) + { + firstTime = 0; + iocshRegister( &drvAsynKeithley648xFuncDef,drvAsynKeithley648xCallFunc ); + } +} +epicsExportRegistrar( drvAsynKeithley648xRegister ); diff -r 000000000000 -r 77d8eafe2a07 IOCINFRAApp/src/drvAsynKeithley648x.dbd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/IOCINFRAApp/src/drvAsynKeithley648x.dbd Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,2 @@ +# Keithley 6485/6487 picoammeter +registrar(drvAsynKeithley648xRegister) diff -r 000000000000 -r 77d8eafe2a07 Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,35 @@ +# Makefile at top of application tree +TOP = . +include $(TOP)/configure/CONFIG + +# Directories to build, any order +DIRS += configure +DIRS += $(wildcard *Sup) +DIRS += $(wildcard *App) +DIRS += $(wildcard *Top) +DIRS += $(wildcard iocBoot) + +# The build order is controlled by these dependency rules: + +# All dirs except configure depend on configure +$(foreach dir, $(filter-out configure, $(DIRS)), \ + $(eval $(dir)_DEPEND_DIRS += configure)) + +# Any *App dirs depend on all *Sup dirs +$(foreach dir, $(filter %App, $(DIRS)), \ + $(eval $(dir)_DEPEND_DIRS += $(filter %Sup, $(DIRS)))) + +# Any *Top dirs depend on all *Sup and *App dirs +$(foreach dir, $(filter %Top, $(DIRS)), \ + $(eval $(dir)_DEPEND_DIRS += $(filter %Sup %App, $(DIRS)))) + +# iocBoot depends on all *App dirs +iocBoot_DEPEND_DIRS += $(filter %App,$(DIRS)) + +# Add any additional dependency rules here: + +include $(TOP)/configure/RULES_TOP + +all: + cp -rf iocBoot /epics/iocs/sys/infra + chmod a+x /epics/iocs/sys/infra/iocBoot/iocIOCINFRA/st.cmd diff -r 000000000000 -r 77d8eafe2a07 bin/linux-x86_64/IOCINFRA Binary file bin/linux-x86_64/IOCINFRA has changed diff -r 000000000000 -r 77d8eafe2a07 configure/CONFIG --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/CONFIG Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,29 @@ +# CONFIG - Load build configuration data +# +# Do not make changes to this file! + +# Allow user to override where the build rules come from +RULES = $(EPICS_BASE) + +# RELEASE files point to other application tops +include $(TOP)/configure/RELEASE +-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).Common +ifdef T_A +-include $(TOP)/configure/RELEASE.Common.$(T_A) +-include $(TOP)/configure/RELEASE.$(EPICS_HOST_ARCH).$(T_A) +endif + +CONFIG = $(RULES)/configure +include $(CONFIG)/CONFIG + +# Override the Base definition: +INSTALL_LOCATION = $(TOP) + +# CONFIG_SITE files contain other build configuration settings +include $(TOP)/configure/CONFIG_SITE +-include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).Common +ifdef T_A + -include $(TOP)/configure/CONFIG_SITE.Common.$(T_A) + -include $(TOP)/configure/CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A) +endif + diff -r 000000000000 -r 77d8eafe2a07 configure/CONFIG_SITE --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/CONFIG_SITE Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,43 @@ +# CONFIG_SITE + +# Make any application-specific changes to the EPICS build +# configuration variables in this file. +# +# Host/target specific settings can be specified in files named +# CONFIG_SITE.$(EPICS_HOST_ARCH).Common +# CONFIG_SITE.Common.$(T_A) +# CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A) + +# CHECK_RELEASE controls the consistency checking of the support +# applications pointed to by the RELEASE* files. +# Normally CHECK_RELEASE should be set to YES. +# Set CHECK_RELEASE to NO to disable checking completely. +# Set CHECK_RELEASE to WARN to perform consistency checking but +# continue building even if conflicts are found. +CHECK_RELEASE = YES + +# Set this when you only want to compile this application +# for a subset of the cross-compiled target architectures +# that Base is built for. +#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32 + +# To install files into a location other than $(TOP) define +# INSTALL_LOCATION here. +INSTALL_LOCATION=/epics/iocs/sys/infra + +# Set this when the IOC and build host use different paths +# to the install location. This may be needed to boot from +# a Microsoft FTP server say, or on some NFS configurations. +#IOCS_APPL_TOP = + +# For application debugging purposes, override the HOST_OPT and/ +# or CROSS_OPT settings from base/configure/CONFIG_SITE +#HOST_OPT = NO +#CROSS_OPT = NO + +# These allow developers to override the CONFIG_SITE variable +# settings without having to modify the configure/CONFIG_SITE +# file itself. +-include $(TOP)/../CONFIG_SITE.local +-include $(TOP)/configure/CONFIG_SITE.local + diff -r 000000000000 -r 77d8eafe2a07 configure/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/Makefile Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,8 @@ +TOP=.. + +include $(TOP)/configure/CONFIG + +TARGETS = $(CONFIG_TARGETS) +CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS))) + +include $(TOP)/configure/RULES diff -r 000000000000 -r 77d8eafe2a07 configure/RELEASE --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/RELEASE Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,49 @@ +# RELEASE - Location of external support modules +# +# IF YOU CHANGE ANY PATHS in this file or make API changes to +# any modules it refers to, you should do a "make rebuild" in +# this application's top level directory. +# +# The EPICS build process does not check dependencies against +# any files from outside the application, so it is safest to +# rebuild it completely if any modules it depends on change. +# +# Host- or target-specific settings can be given in files named +# RELEASE.$(EPICS_HOST_ARCH).Common +# RELEASE.Common.$(T_A) +# RELEASE.$(EPICS_HOST_ARCH).$(T_A) +# +# This file is parsed by both GNUmake and an EPICS Perl script, +# so it may ONLY contain definititions of paths to other support +# modules, variable definitions that are used in module paths, +# and include statements that pull in other RELEASE files. +# Variables may be used before their values have been set. +# Build variables that are NOT used in paths should be set in +# the CONFIG_SITE file. + +# Variables and paths to dependent modules: +#MODULES = /path/to/modules +#MYMODULE = $(MODULES)/my-module +SUPPORT=/opt/epics/SUPPORT +#SSCAN=$(SUPPORT)/sscan +CALC=$(SUPPORT)/calc +BUSY=$(SUPPORT)/busy +ASYN=$(SUPPORT)/asyn +STREAM=$(SUPPORT)/stream +IP=$(SUPPORT)/ip + +# If using the sequencer, point SNCSEQ at its top directory: +SNCSEQ = $(SUPPORT)/seq-2.2.6 + +# EPICS_BASE should appear last so earlier modules can override stuff: +EPICS_BASE = /opt/epics/BASE/epics-base + +# Set RULES here if you want to use build rules from somewhere +# other than EPICS_BASE: +#RULES = $(MODULES)/build-rules + +# These lines allow developers to override these RELEASE settings +# without having to modify this file directly. +-include $(TOP)/../RELEASE.local +-include $(TOP)/../RELEASE.$(EPICS_HOST_ARCH).local +-include $(TOP)/configure/RELEASE.local diff -r 000000000000 -r 77d8eafe2a07 configure/RULES --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/RULES Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,6 @@ +# RULES + +include $(CONFIG)/RULES + +# Library should be rebuilt because LIBOBJS may have changed. +$(LIBNAME): ../Makefile diff -r 000000000000 -r 77d8eafe2a07 configure/RULES.ioc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/RULES.ioc Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,2 @@ +#RULES.ioc +include $(CONFIG)/RULES.ioc diff -r 000000000000 -r 77d8eafe2a07 configure/RULES_DIRS --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/RULES_DIRS Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,2 @@ +#RULES_DIRS +include $(CONFIG)/RULES_DIRS diff -r 000000000000 -r 77d8eafe2a07 configure/RULES_TOP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configure/RULES_TOP Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,3 @@ +#RULES_TOP +include $(CONFIG)/RULES_TOP + diff -r 000000000000 -r 77d8eafe2a07 db/LS331.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/LS331.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,319 @@ +################################################## +# +# Protocol File +# +# Protocol file for Lakeshore 336 +# Diamond Light Source, June 2010 +# +# Oak Ridge National Lab, UT-Battelle, 2013-2015. +# Add more commands. +# +################################################## + +# check check Lakeshore 331 + +################################################## +# General Settings +################################################## + +Terminator = "\r\n"; +ReplyTimeout = 1000; + + +################################################### +# Get functions +################################################### + +# /// Read the device ID +getID { + out "*IDN?"; + in "LSCI,%s"; +} + +# /// Read the model number +getMODEL { + in "LSCI,%8c,%*15c,%*s"; +} + +# /// Read the serial number +getSERIAL { + in "LSCI,%*8c,%15c,%*s"; +} + +# /// Read the device firmware number +getFIRMWARE { + in "LSCI,%*8c,%*15c,%s"; +} + +# /// Read the heater status for output 1 or 2 +getHTR { + out "HTR? \$1"; + in "%f"; +} + +# /// Read the analog output for output 3 or 4 +getAOUT { + out "AOUT? \$1"; + in "%f"; +} + +# /// Read the setpoint for outputs 1-4 +getSETP { + out "SETP? \$1"; + in "%f"; +} + +# /// Read the temperature in kelvin for inputs 1-4 +getKRDG { + out "KRDG? \$1"; + in "%f"; +} + +# /// Read the voltage input for inputs 1-4 +getSRDG { + out "SRDG? \$1"; + in "%f"; +} + +# /// Read the range parameter (power range) for outputs 1-4 +getRANGE { + out "RANGE? \$1"; + in "%d"; +} + +# /// Read the ramp value and status for outputs 1-4 +# /// The first parameter is the output number. +# /// The second parameter is the ramp status record. +getRAMP { + out "RAMP? \$1"; + in "%(\$2)d,%f"; +} + +# /// Read the ramp status for outputs 1-4 +getRAMPSTATUS { + out "RAMP? \$1"; + in "%d,%*f"; +} + +# /// Read the manual output value for outputs 1-4 +getMOUT { + out "MOUT? \$1"; + in "%f"; +} + +# /// Read the PID params into 3 records using one write/read. +# /// The first argument is the output number. The second and third are +# /// the I and D records. +getPID { + out "PID? \$1"; + in "%f,%(\$2:\$3)f,%(\$2:\$4)f"; +} + +# /// Combine getOUTMODEMODE, getOUTMODEINPUT and getOUTMODEPE into one function. +# /// The first argument is the output number. +# /// The second argument is the PV prefix. +# /// The third argument is the output mode intput record (suffix only). +# /// The fourth argument is the output mode powerup enable record (suffix only). +getOM { + out "OUTMODE? \$1"; + in "%d,%(\$2:\$3)d,%(\$2:\$4)d"; +} + +# /// Read the output mode mode status for outputs 1-4 +# /// 0=Off +# /// 1=Closed Loop PID +# /// 2=Zone +# /// 3=Open Loop +# /// 4=Monitor Out +# /// 5=Warm Up Supply +getOUTMODEMODE { + out "OUTMODE? \$1"; + in "%d,%*d,%*d"; +} + +# /// Read the output mode input for outputs 1-4 +# /// 0=None +# /// 1=A +# /// 2=B +# /// 3=C +# /// 4=D +getOUTMODEINPUT { + out "OUTMODE? \$1"; + in "%*d,%d,%*d"; +} + +# /// Read the output mode power up enable for outputs 1-4 +# /// 0=Off +# /// 1=On +getOUTMODEPE { + out "OUTMODE? \$1"; + in "%*d,%*d,%d"; +} + + +# /// Read the tuning status +getTUNEST { + out "TUNEST?"; + in "%s"; +} + +# /// Read the tuning status success param +getTUNESTSUCCESS { + out "TUNEST?"; + in "%*d,%*d,%d,%*d"; +} + +# /// Read the ZONE parameters (this is read into a waveform) +getZONE { + out "ZONE? \$1,\$2"; + separator=","; + in "%f"; +} + +# /// Read the input sensor name +getINNAME { + out "INNAME? \$1"; + in "%#s"; +} + + +# /// Read the alarm status +# /// The first param is the input number, the second is the alarm low record. +getALARMST { + out "ALARMST? \$1"; + in "%d,%(\$2)d" +} + +# /// Read the alarm params. I put the ends of the PV names here +# /// to make the initial record INP link short. +getALARM { + out "ALARM? \$1"; + in "%(\$2.A)d,%(\$2.B)f,%(\$2.C)f,%(\$2.D)f,%(\$2.E)d,%(\$2.F)d,%(\$2.G)d" +} + +# /// Read the input reading status +getRDGST { + out "RDGST? \$1"; + in "%d" +} + +# /// Read the heater status for outputs 1 or 2 +getHTRST { + out "HTRST? \$1"; + in "%d" +} + +# /// Read the input curve number +getINCRV { + out "INCRV? \$1"; + in "%d" +} + +# /// Read the input curve header. +# /// The first argument is the curve number record (also prefix for other record names). +# /// The second argument is the curve name record (suffix only). +# /// The third argument is the curve serial number record (suffix only). +# /// The fourth argument is the curve data format record (suffix only). +# /// The fifth argument is the curve temperature limit record (suffix only). +# /// The sixth argument is the curve temperature coefficient record (suffix only). +getCRVHDR { + out "CRVHDR? %(\$1:\$2)d"; + in "%(\$1:\$3.AA)15c,%(\$1:\$3.BB)10c,%(\$1:\$3.A)d,%(\$1:\$3.B)f,%(\$1:\$3.C)d" +} + +# /// Read the input type params. I put the ends of the PV names here +# /// to make the initial record INP link short. +getINTYPE { + out "INTYPE? \$1"; + in "%(\$2.A)d,%(\$2.B)d,%(\$2.C)d,%(\$2.D)d,%(\$2.E)d" +} + + +####################################################### +# Set functions +####################################################### + +# /// Set the setpoint for outputs 1-4 +setSETP { + out "SETP \$1,%f"; + @init { getSETP; } +} + +# /// Set the range parameter for outputs 1-4 +setRANGE { + out "RANGE \$1,%d"; + @init { getRANGE; } +} + +# /// Set the ramp parameter for loops 1-2 +#Need to pass in the PV name for the getRAMPSTATUS protocol. +setRAMP { + out "RAMP \$2,%(\$1.VAL)d,%f"; + @init { out "RAMP? \$2"; in "%*d,%f"; } +} + +# /// Set the ramp status for loops 1-2 +#Need to pass in the PV name for the getRAMP protocol. +setRAMPSTATUS { + out "RAMP \$2,%d,%(\$1.VAL)f"; + @init { out "RAMP? \$2"; in "%d,%*f"; } +} + +# /// Set the manual output value for outputs 1-4 +setMOUT { + out "MOUT \$1,%f"; + @init { getMOUT; } +} + +# /// Set the PID P parameter for outputs 1-4 +setP { + out "PID \$1,%f,%(\$2:\$3)f,%(\$2:\$4)f"; + @init { out "PID? \$1"; in "%f,%*f,%*f"; } +} + +# /// Set the PID I parameter for outputs 1-4 +setI { + out "PID \$1,%(\$2:\$3)f,%f,%(\$2:\$4)f"; + @init { out "PID? \$1"; in "%*f,%f,%*f"; } +} + +# /// Set the PID D parameter for outputs 1-4 +setD { + out "PID \$1,%(\$2:\$3)f,%(\$2:\$4)f,%f"; + @init { out "PID? \$1"; in "%*f,%*f,%f"; } +} + +# /// Set the output mode [loop],[mode],[input],[power up enable] +setOM { + out "OUTMODE \$1,%d,%(\$2:\$3)d,%(\$2:\$4)d"; + @init { out "OUTMODE? \$1"; in "%d,%*d,%*d";} +} + +# /// Set the output mode input [loop],[mode],[input],[power up enable] +setOMI { + out "OUTMODE \$1,%(\$2:\$3)d,%d,%(\$2:\$4)d"; + @init { out "OUTMODE? \$1"; in "%*d,%d,%*d";} +} + +# /// Set the output mode power up enable [loop],[mode],[input],[power up enable] +setOMP { + out "OUTMODE \$1,%(\$2:\$3)d,%(\$2:\$4)d,%d"; + @init { out "OUTMODE? \$1"; in "%*d,%*d,%d";} +} + + +# /// Start the auto tune process. +setATUNE { + out "ATUNE \$1,%(\$2.VAL)d"; +} + +# /// Set the ZONE parameters +setZONE { + out "ZONE \$1,\$2,%(A)f,%(B)f,%(C)f,%(D)f,%(E)f,%(F)d,%(G)d,%(H)f"; +} + +# /// Set the input sensor name +setINNAME { + out "INNAME \$1,\"%s\""; + @init { getINNAME; } +} diff -r 000000000000 -r 77d8eafe2a07 db/LakeShore331.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/LakeShore331.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,487 @@ +record (stringin, "$(P)LS331:$(Q):IDN") { + field(DTYP, "stream") + field(INP, "@LK331.proto getIDN $(PORT)") +} + +record(stringin, "$(P)LS331:$(Q):serial") { + field(DTYP, "stream") + field(INP, "@LK331.proto getSERIAL $(PORT)") +} + +record(stringin, "$(P)LS331:$(Q):model") { + field(DTYP, "stream") + field(INP, "@LK331.proto getSERIAL $(PORT)") +} + + +grecord(dfanout,"$(P)LS331:$(Q):Init") { + field(SCAN,"1 second") + field(OUTA,"$(P)LS331:$(Q):Input_sel.PROC PP NMS") + field(OUTB,"$(P)LS331:$(Q):Units_sel.PROC PP NMS") + field(OUTC,"$(P)LS331:$(Q):HeatRg.PROC PP NMS") + field(OUTD,"$(P)LS331:$(Q):Gain_set.PROC PP NMS") + field(OUTE,"$(P)LS331:$(Q):Rset_set.PROC PP NMS") + field(OUTF,"$(P)LS331:$(Q):Rate_set.PROC PP NMS") + field(OUTG,"$(P)LS331:$(Q):RampR_set.PROC PP NMS") + field(OUTH,"$(P)LS331:$(Q):InitB.PROC PP NMS") +} + +grecord(dfanout,"$(P)LS331:$(Q):InitB") { + field(SCAN,"Passive") + field(OUTA,"$(P)LS331:$(Q):Ramp_on.PROC PP NMS") + field(OUTB,"$(P)LS331:$(Q):wr_SP.PROC PP NMS") + field(OUTC,"$(P)LS331:$(Q):read.PROC PP NMS") + field(OUTD,"$(P)LS331:$(Q):readPID.PROC PP NMS") + field(OUTE,"$(P)LS331:$(Q):Init.SCAN CA NMS") +} + +record(ao, "$(P)LS331:$(Q):Rset_set") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):setRset.VAL PP MS") + field(PREC, "0") +} + +record(ao, "$(P)LS331:$(Q):Rate_set") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):setRate.VAL PP MS") + field(PREC, "0") +} + +record(ao, "$(P)LS331:$(Q):RampR_set") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):setRamp.VAL PP MS") + field(PREC, "1") +} + +record(ao, "$(P)LS331:$(Q):wr_SP") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):SP_scalc.VAL PP MS") + field(PREC, "3") +} + +record(ao, "$(P)LS331:$(Q):Gain_set") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):setGain.VAL PP MS") + field(PREC, "0") +} + +record(mbbi, "$(P)LS331:$(Q):Rg_rdbk") { + field(DTYP, "Soft Channel") + field(INP, "$(P)LS331:$(Q):Range.VAL NPP MS") + field(ZRST, "OFF") + field(ONST, "100 mA") + field(TWST, "300 mA") + field(THST, "1 A") +} + +record(mbbi, "$(P)LS331:$(Q):Ramp_state") { + field(DTYP, "Soft Channel") + field(INP, "$(P)LS331:$(Q):Ramp_scalc.VAL NPP MS") + field(ZRST, "OFF") + field(ONST, "ON") +} + +record(mbbo, "$(P)LS331:$(Q):Input_sel") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):SetCtl.VAL NPP MS") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "0") + field(THVL, "0") + field(ZRST, "A") + field(ONST, "B") +} + +record(mbbo, "$(P)LS331:$(Q):Units_sel") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):SetCtl.VAL NPP MS") + field(ZRVL, "1") + field(ONVL, "2") + field(TWVL, "0") + field(THVL, "0") + field(ZRST, "K") + field(ONST, "C") +} + +record(mbbo, "$(P)LS331:$(Q):HeatRg") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):SetHeat.VAL PP MS") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "2") + field(THVL, "3") + field(FRVL, "0") + field(FVVL, "0") + field(ZRST, "OFF") + field(ONST, "100 mA") + field(TWST, "300 mA") + field(THST, "1 A") +} + +record(mbbo, "$(P)LS331:$(Q):Ramp_on") { + field(DTYP, "Soft Channel") + field(FLNK, "$(P)LS331:$(Q):setRamp.PROC PP MS") + field(ZRVL, "0") + field(ONVL, "1") + field(TWVL, "0") + field(THVL, "0") + field(ZRST, "OFF") + field(ONST, "ON") +} + +record(seq, "$(P)LS331:$(Q):readPID") { + field(PREC, "1") + field(DLY1, ".05") + field(LNK1, "$(P)LS331:$(Q):rd_Gain.PROC PP MS") + field(DLY2, ".05") + field(LNK2, "$(P)LS331:$(Q):rd_Rset.PROC PP MS") + field(DLY3, ".05") + field(LNK3, "$(P)LS331:$(Q):rd_Rate.PROC PP MS") + field(DLY4, ".05") + field(LNK4, "$(P)LS331:$(Q):rd_Ramp.PROC PP MS") +} + +record(seq, "$(P)LS331:$(Q):read") { + field(PREC, "1") + field(DLY1, ".05") + field(LNK1, "$(P)LS331:$(Q):readCtl.PROC PP MS") + field(DLY2, ".05") + field(LNK2, "$(P)LS331:$(Q):rd_rdat_scalc.PROC PP MS") + field(DLY3, ".05") + field(LNK3, "$(P)LS331:$(Q):rd_SplA_scalc.PROC PP MS") + field(DLY4, ".05") + field(LNK4, "$(P)LS331:$(Q):rd_SplB_scalc.PROC PP MS") + field(DLY5, ".05") + field(LNK5, "$(P)LS331:$(Q):rd_Heater.PROC PP MS") + field(DLY6, ".05") + field(LNK6, "$(P)LS331:$(Q):readSP.PROC PP MS") +} + +record(stringout, "$(P)LS331:$(Q):rd_Rset") { + field(DTYP, "Soft Channel") + field(FLNK, "0") + field(VAL, "RSET?") + field(OUT, "$(P)LS331:$(Q):wr_rd_Rset.AOUT PP MS") +} + +record(stringout, "$(P)LS331:$(Q):rd_Rate") { + field(DTYP, "Soft Channel") + field(FLNK, "0") + field(VAL, "RATE?") + field(OUT, "$(P)LS331:$(Q):wr_rd_Rate.AOUT PP MS") +} + +record(stringout, "$(P)LS331:$(Q):rd_Ramp") { + field(DTYP, "Soft Channel") + field(FLNK, "0") + field(VAL, "RAMP?") + field(OUT, "$(P)LS331:$(Q):wr_rd_Ramp.AOUT PP MS") +} + +record(stringout, "$(P)LS331:$(Q):readSP") { + field(DTYP, "Soft Channel") + field(FLNK, "0") + field(VAL, "SETP?") + field(OUT, "$(P)LS331:$(Q):rd_SP.AOUT PP MS") +} + +record(stringout, "$(P)LS331:$(Q):rd_Gain") { + field(DTYP, "Soft Channel") + field(FLNK, "0") + field(VAL, "GAIN?") + field(OUT, "$(P)LS331:$(Q):wr_rd_Gain.AOUT PP MS") +} + +record(asyn, "$(P)LS331:$(Q):wr_rd_Rset") { + field(FLNK, "$(P)LS331:$(Q):I.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):wr_rd_Rate") { + field(FLNK, "$(P)LS331:$(Q):D.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):wr_rd_Gain") { + field(FLNK, "$(P)LS331:$(Q):P.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):rd_Ctl") { + field(FLNK, "$(P)LS331:$(Q):Control.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):rd_CtlParms") { + field(FLNK, "$(P)LS331:$(Q):CtlInput.PROC PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):rd_Heater") { + field(FLNK, "$(P)LS331:$(Q):Heater.VAL PP MS") + field(PORT, "$(PORT)") + field(AOUT, "HTR?") +} + +record(asyn, "$(P)LS331:$(Q):write_SP") { + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):rd_SP") { + field(FLNK, "$(P)LS331:$(Q):SP.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):rd_Spl_a") { + field(FLNK, "$(P)LS331:$(Q):SampleA.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):rd_Spl_b") { + field(FLNK, "$(P)LS331:$(Q):SampleB.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):wr_rd_Htr") { + field(FLNK, "$(P)LS331:$(Q):Range.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(asyn, "$(P)LS331:$(Q):wr_rd_Ramp") { + field(FLNK, "$(P)LS331:$(Q):Ramp_scalc.VAL PP MS") + field(PORT, "$(PORT)") +} + +record(scalcout, "$(P)LS331:$(Q):setRset") { + field(DESC, "Format string for PID input") + field(CALC, "$P('RSET %d;RSET?',A)") + field(INPA, "$(P)LS331:$(Q):Rset_set.VAL NPP MS") + field(OUT, "$(P)LS331:$(Q):wr_rd_Rset.AOUT PP MS") + field(PREC, "1") +} + +record(scalcout, "$(P)LS331:$(Q):setRate") { + field(DESC, "Format string for PID input") + field(CALC, "$P('RATE %d;RATE?',A)") + field(INPA, "$(P)LS331:$(Q):Rate_set.VAL NPP MS") + field(OUT, "$(P)LS331:$(Q):wr_rd_Rate.AOUT PP MS") + field(PREC, "1") +} + +record(scalcout, "$(P)LS331:$(Q):setGain") { + field(DESC, "Format string for PID input") + field(CALC, "$P('GAIN %d;GAIN?',A)") + field(INPA, "$(P)LS331:$(Q):Gain_set.VAL NPP MS") + field(OUT, "$(P)LS331:$(Q):wr_rd_Gain.AOUT PP MS") + field(PREC, "1") +} + +record(scalcout, "$(P)LS331:$(Q):Ramp_scalc") { + field(FLNK, "$(P)LS331:$(Q):RampR.PROC PP MS") + field(CALC, "INT(AA)") + field(INAA, "$(P)LS331:$(Q):wr_rd_Ramp.AINP NPP MS") + field(PREC, "1") +} +record(scalcout, "$(P)LS331:$(Q):RampR") { + field(FLNK, "$(P)LS331:$(Q):Ramp_state.PROC PP MS") + field(CALC, "SSCANF(AA,'%s')[2,10]") + field(INAA, "$(P)LS331:$(Q):wr_rd_Ramp.AINP NPP MS") + field(PREC, "1") +} + +record(scalcout, "$(P)LS331:$(Q):P") { + field(CALC, "INT(AA)") + field(INAA, "$(P)LS331:$(Q):wr_rd_Gain.AINP NPP MS") + field(PREC, "0") +} + +record(scalcout, "$(P)LS331:$(Q):I") { + field(CALC, "INT(AA)") + field(INAA, "$(P)LS331:$(Q):wr_rd_Rset.AINP NPP MS") + field(PREC, "0") +} + +record(scalcout, "$(P)LS331:$(Q):D") { + field(CALC, "INT(AA)") + field(INAA, "$(P)LS331:$(Q):wr_rd_Rate.AINP NPP MS") + field(PREC, "0") +} + +record(scalcout, "$(P)LS331:$(Q):Control") { + field(DESC, "Format string for Ctl query") + field(CALC, "DBL(AA)") + field(INAA, "$(P)LS331:$(Q):rd_Ctl.AINP NPP MS") + field(INEE, "0") + field(PREC, "3") +} + +record(scalcout, "$(P)LS331:$(Q):Heater") { + field(DESC, "Format string for Ctl query") + field(CALC, "DBL(AA)") + field(INAA, "$(P)LS331:$(Q):rd_Heater.AINP NPP MS") + field(INEE, "0") + field(PREC, "0") +} + +record(scalcout, "$(P)LS331:$(Q):Range") { + field(DESC, "Format string for Ctl query") + field(FLNK, "$(P)LS331:$(Q):Rg_rdbk.PROC PP MS") + field(CALC, "INT(AA)") + field(INAA, "$(P)LS331:$(Q):wr_rd_Htr.AINP NPP MS") + field(INEE, "0") + field(PREC, "2") +} + +record(scalcout, "$(P)LS331:$(Q):SP") { + field(DESC, "Format string for Ctl query") + field(CALC, "DBL(AA)") + field(INAA, "$(P)LS331:$(Q):rd_SP.AINP NPP MS") + field(INEE, "0") + field(PREC, "3") +} + +record(scalcout, "$(P)LS331:$(Q):SP_scalc") { + field(DESC, "Format string for Ctl query") + field(FLNK, "$(P)LS331:$(Q):readSP.PROC PP MS") + field(CALC, "$P('SETP 1,%6.3f',A)") + field(INPA, "$(P)LS331:$(Q):wr_SP.VAL NPP MS") + field(INEE, "0") + field(OUT, "$(P)LS331:$(Q):write_SP.AOUT PP MS") + field(PREC, "3") +} + +record(scalcout, "$(P)LS331:$(Q):SampleA") { + field(DESC, "Convt str fror SplA query") + field(CALC, "DBL(AA)") + field(INAA, "$(P)LS331:$(Q):rd_Spl_a.AINP PP MS") + field(INEE, "0") + field(PREC, "3") +} + +record(scalcout, "$(P)LS331:$(Q):SampleB") { + field(DESC, "Convrt str from SplB query") + field(CALC, "DBL(AA)") + field(INAA, "$(P)LS331:$(Q):rd_Spl_b.AINP PP MS") + field(INEE, "0") + field(PREC, "3") +} + +record(scalcout, "$(P)LS331:$(Q):CtlInput") { + field(DESC, "Parse string for Ctl Input") + field(FLNK, "$(P)LS331:$(Q):CtlUnits.PROC PP MS") + field(CALC, "SSCANF(AA,'%s')[0,0]") + field(INAA, "$(P)LS331:$(Q):rd_CtlParms.AINP NPP MS") + field(PREC, "1") + field(AA, "A") +} + +record(scalcout, "$(P)LS331:$(Q):CtlUnits") { + field(DESC, "Parse string for Ctl Unit") + field(FLNK, "$(P)LS331:$(Q):CtlUnits_str.PROC PP MS") + field(CALC, "INT(SSCANF(AA,'%s')[2,2])") + field(INAA, "$(P)LS331:$(Q):rd_CtlParms.AINP NPP MS") + field(PREC, "1") + field(AA, "A,2") +} + +record(scalcout, "$(P)LS331:$(Q):CtlUnits_str") { + field(DESC, "Make Ctl Input string") + field(CALC, "A=1?BB:CC") + field(INPA, "$(P)LS331:$(Q):CtlUnits.VAL NPP MS") + field(PREC, "1") + field(A, "1") + field(BB, "K") + field(CC, "C") +} + +record(scalcout, "$(P)LS331:$(Q):SetCtl") { + field(DESC, "Format string for Ctl Set") + field(FLNK, "$(P)LS331:$(Q):read.PROC PP MS") + field(CALC, "AA+(B?FF:EE)+','+STR(C)[0,0]+DD") + field(INAA, "") + field(INBB, "$(P)LS331:$(Q):Input_sel.VAL PP MS") + field(INPB, "$(P)LS331:$(Q):Input_sel.VAL PP MS") + field(INPC, "$(P)LS331:$(Q):Units_sel.RVAL PP MS") + field(INDD, "") + field(OUT, "$(P)LS331:$(Q):rd_CtlParms.AOUT PP MS") + field(PREC, "1") + field(AA, "CSET 1,") + field(BB, "A") + field(B, "0") + field(C, "1") + field(DD, ",0,1;CSET?") + field(EE, "A") + field(FF, "B") +} + +record(scalcout, "$(P)LS331:$(Q):readCtl") { + field(DESC, "Format string for Ctl query") + field(CALC, "AA") + field(INAA, "0") + field(OUT, "$(P)LS331:$(Q):rd_CtlParms.AOUT PP MS") + field(PREC, "1") + field(AA, "CSET?") +} + +record(scalcout, "$(P)LS331:$(Q):SetHeat") { + field(CALC, "AA+BB+CC") + field(INAA, "0") + field(INBB, "$(P)LS331:$(Q):HeatRg.RVAL NPP MS") + field(OUT, "$(P)LS331:$(Q):wr_rd_Htr.AOUT PP MS") + field(PREC, "1") + field(AA, "RANGE ") + field(BB, "0") + field(CC, ";RANGE?") +} + +record(scalcout, "$(P)LS331:$(Q):rd_SplA_scalc") { + field(DESC, "Format str for A query") + field(CALC, "AA+BB") + field(INAA, "$(P)LS331:$(Q):CtlUnits_str.SVAL PP MS") + field(INBB, "0") + field(OUT, "$(P)LS331:$(Q):rd_Spl_a.AOUT PP MS") + field(PREC, "1") + field(AA, "K") + field(BB, "RDG? A") +} + +record(scalcout, "$(P)LS331:$(Q):rd_SplB_scalc") { + field(DESC, "Format str for B query") + field(CALC, "AA+BB") + field(INAA, "$(P)LS331:$(Q):CtlUnits_str.SVAL PP MS") + field(INBB, "0") + field(OUT, "$(P)LS331:$(Q):rd_Spl_b.AOUT PP MS") + field(PREC, "1") + field(AA, "K") + field(BB, "RDG? B") +} + +record(scalcout, "$(P)LS331:$(Q):rd_rdat_scalc") { + field(DESC, "Format str for rd query") + field(CALC, "A=2?EE+BB+CC:DD+BB+CC") + field(INPA, "$(P)LS331:$(Q):CtlUnits.VAL NPP MS") + field(INBB, "0") + field(INCC, "$(P)LS331:$(Q):CtlInput.SVAL NPP MS") + field(INDD, "0") + field(INEE, "0") + field(OUT, "$(P)LS331:$(Q):rd_Ctl.AOUT PP MS") + field(PREC, "1") + field(A, "1") + field(BB, "RDG? ") + field(DD, "K") + field(EE, "C") +} + +record(scalcout, "$(P)LS331:$(Q):setRamp") { + field(DESC, "Format string for PID input") + field(CALC, "AA+$P('%d',A)+','+$P('%5.1f',B)+BB") + field(INPA, "$(P)LS331:$(Q):Ramp_on.RVAL NPP MS") + field(INPB, "$(P)LS331:$(Q):RampR_set.VAL NPP MS") + field(OUT, "$(P)LS331:$(Q):wr_rd_Ramp.AOUT PP MS") + field(PREC, "1") + field(AA, "RAMP 1,") + field(BB, ";RAMP?") + field(CC, "0") +} + + diff -r 000000000000 -r 77d8eafe2a07 db/XGS600.proto --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/XGS600.proto Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,37 @@ +#---------------------------------------------------------------------- +# +# StreamDevice protocol file for a reading/setting selected elements +# from a Varian XGS-600 pressure gauge controller +# +# 2013-01-10 J.Priller original version +# +#---------------------------------------------------------------------- + +Terminator = CR; + +# getUnits(address) +getUnits { + out "#\$113"; + in ">%d"; +} + +# getPressure(address,chan) +getPressure { + out "#\$102\$2"; + in ">%g"; +} + +# send a raw command +sendRawCommand { + out "%s"; +} + +# send a raw query (needs argument for PV to receive reply) +sendRawQuery { + ExtraInput = Ignore; + out "%s"; + in "%(\$1)40c"; +} + + + diff -r 000000000000 -r 77d8eafe2a07 db/XGS600.substitutions --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/XGS600.substitutions Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,14 @@ +file "db/XGS600_unit.db" { + pattern + { HWUNIT, ADDR } + { "_trarpes_vac_xgs600_1", "00" } +} + +file "db/XGS600_chan.db" { + pattern + { HWUNIT, ADDR, CHAN, SYS, DEV, INST } + { "_trarpes_vac_xgs600_1", "00", "I1", "trARPES:", "XGS600:", "PressureAC" } + { "_trarpes_vac_xgs600_1", "00", "I2", "trARPES:", "XGS600:", "PressureTC" } + { "_trarpes_vac_xgs600_1", "00", "I3", "trARPES:", "XGS600:", "PressureMETIS" } + { "_trarpes_vac_xgs600_1", "00", "I4", "trARPES:", "XGS600:", "PressureMBE" } +} diff -r 000000000000 -r 77d8eafe2a07 db/XGS600_chan.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/XGS600_chan.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,29 @@ +# +# database template for an XGS600 pressure sensor channel +# +# macros: +# SYS,DEV,INST : base name for this channel +# HWUNIT : name of asyn port in drvAsynIPPortConfigure() +# + +record(ai, "$(SYS)$(DEV)$(INST):P_RD") +{ + field(DESC, "Pressure reading") + field(DTYP, "stream") + field(SCAN, ".2 second") + field(PREC, "3") + field(EGU, "??") + field(INP, "@XGS600.proto getPressure($(ADDR),$(CHAN)) $(HWUNIT)") + field(ADEL, "1.0e-9") +} + +record(scalcout, "_$(SYS)$(DEV)$(INST):units") +{ + field(DESC, "Units reading") + field(DTYP, "Soft Channel") + field(SCAN, "Passive") + field(CALC, "AA") + field(INAA, "_$(HWUNIT)_UNITS_SCALC.SVAL CP NMS") + field(OOPT, "Every Time") + field(OUT, "$(SYS)$(DEV)$(INST):P_RD.EGU NPP NMS") +} diff -r 000000000000 -r 77d8eafe2a07 db/XGS600_unit.db --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/db/XGS600_unit.db Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,50 @@ + +record(asyn, "_$(HWUNIT):sensor_asyn") +{ + field(PORT, "$(HWUNIT)") +} + +record(longin, "_$(HWUNIT)_UNITS_IDX") +{ + field(DESC, "Units index number") + field(DTYP, "stream") + field(SCAN, "1 second") + field(INP, "@XGS600.proto getUnits($(ADDR)) $(HWUNIT)") +} + +record(scalcout, "_$(HWUNIT)_UNITS_SCALC") +{ + field(DESC, "Units string scalcout") + field(DTYP, "Soft Channel") + field(SCAN, "Passive") + field(CALC, "@@A") + field(INPA, "_$(HWUNIT)_UNITS_IDX CP MS") + field(AA, "Torr") + field(BB, "mBar") + field(CC, "Pascal") +} + +record(stringout, "_$(HWUNIT)_RAW_CMD") +{ + field(DESC, "Raw command") + field(SCAN, "Passive") + field(DTYP, "stream") + field(OUT, "@XGS600.proto sendRawCommand $(HWUNIT)") +} + +record(stringout, "_$(HWUNIT)_RAW_QUERY") +{ + field(DESC, "Raw query") + field(SCAN, "Passive") + field(DTYP, "stream") + field(OUT, "@XGS600.proto sendRawQuery(_$(HWUNIT)_RAW_REPLY.VAL) $(HWUNIT)") +} + +record(stringin, "_$(HWUNIT)_RAW_REPLY") +{ + field(DESC, "Raw query reply") + field(SCAN, "Passive") + field(DTYP, "Soft Channel") +} + + diff -r 000000000000 -r 77d8eafe2a07 dbd/IOCINFRA.dbd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dbd/IOCINFRA.dbd Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,23917 @@ +menu(aoOIF) { + choice(aoOIF_Full, "Full") + choice(aoOIF_Incremental, "Incremental") +} +menu(acalcoutINAP) { + choice(acalcoutINAP_No, "No PROC on Change") + choice(acalcoutINAP_Yes, "PROC on Change") +} +menu(acalcoutOOPT) { + choice(acalcoutOOPT_Every_Time, "Every Time") + choice(acalcoutOOPT_On_Change, "On Change") + choice(acalcoutOOPT_When_Zero, "When Zero") + choice(acalcoutOOPT_When_Non_zero, "When Non-zero") + choice(acalcoutOOPT_Transition_To_Zero, "Transition To Zero") + choice(acalcoutOOPT_Transition_To_Non_zero, "Transition To Non-zero") + choice(acalcoutOOPT_Never, "Never") +} +menu(menuSimm) { + choice(menuSimmNO, "NO") + choice(menuSimmYES, "YES") + choice(menuSimmRAW, "RAW") +} +menu(menuAlarmSevr) { + choice(menuAlarmSevrNO_ALARM, "NO_ALARM") + choice(menuAlarmSevrMINOR, "MINOR") + choice(menuAlarmSevrMAJOR, "MAJOR") + choice(menuAlarmSevrINVALID, "INVALID") +} +menu(menuConvert) { + choice(menuConvertNO_CONVERSION, "NO CONVERSION") + choice(menuConvertSLOPE, "SLOPE") + choice(menuConvertLINEAR, "LINEAR") + choice(menuConverttypeKdegF, "typeKdegF") + choice(menuConverttypeKdegC, "typeKdegC") + choice(menuConverttypeJdegF, "typeJdegF") + choice(menuConverttypeJdegC, "typeJdegC") + choice(menuConverttypeEdegF, "typeEdegF(ixe only)") + choice(menuConverttypeEdegC, "typeEdegC(ixe only)") + choice(menuConverttypeTdegF, "typeTdegF") + choice(menuConverttypeTdegC, "typeTdegC") + choice(menuConverttypeRdegF, "typeRdegF") + choice(menuConverttypeRdegC, "typeRdegC") + choice(menuConverttypeSdegF, "typeSdegF") + choice(menuConverttypeSdegC, "typeSdegC") +} +menu(scalcoutOOPT) { + choice(scalcoutOOPT_Every_Time, "Every Time") + choice(scalcoutOOPT_On_Change, "On Change") + choice(scalcoutOOPT_When_Zero, "When Zero") + choice(scalcoutOOPT_When_Non_zero, "When Non-zero") + choice(scalcoutOOPT_Transition_To_Zero, "Transition To Zero") + choice(scalcoutOOPT_Transition_To_Non_zero, "Transition To Non-zero") + choice(scalcoutOOPT_Never, "Never") +} +menu(ipDRTO) { + choice(ipDRTO_unknown, "Unknown") + choice(ipDRTO_No, "No") + choice(ipDRTO_Yes, "Yes") +} +menu(calcoutOOPT) { + choice(calcoutOOPT_Every_Time, "Every Time") + choice(calcoutOOPT_On_Change, "On Change") + choice(calcoutOOPT_When_Zero, "When Zero") + choice(calcoutOOPT_When_Non_zero, "When Non-zero") + choice(calcoutOOPT_Transition_To_Zero, "Transition To Zero") + choice(calcoutOOPT_Transition_To_Non_zero, "Transition To Non-zero") +} +menu(sseqLNKV) { + choice(sseqLNKV_EXT_NC, "Ext PV NC") + choice(sseqLNKV_EXT, "Ext PV OK") + choice(sseqLNKV_LOC, "Local PV") + choice(sseqLNKV_CON, "Constant") +} +menu(aSubEFLG) { + choice(aSubEFLG_NEVER, "NEVER") + choice(aSubEFLG_ON_CHANGE, "ON CHANGE") + choice(aSubEFLG_ALWAYS, "ALWAYS") +} +menu(sseqSELM) { + choice(sseqSELM_All, "All") + choice(sseqSELM_Specified, "Specified") + choice(sseqSELM_Mask, "Mask") +} +menu(asynFMT) { + choice(asynFMT_ASCII, "ASCII") + choice(asynFMT_Hybrid, "Hybrid") + choice(asynFMT_Binary, "Binary") +} +menu(serialFCTL) { + choice(serialFCTL_unknown, "Unknown") + choice(serialFCTL_None, "None") + choice(serialFCTL_Hardware, "Hardware") +} +menu(acalcoutDOPT) { + choice(acalcoutDOPT_Use_VAL, "Use CALC") + choice(acalcoutDOPT_Use_OVAL, "Use OCAL") +} +menu(gpibUCMD) { + choice(gpibUCMD_None, "None") + choice(gpibUCMD_Device_Clear__DCL_, "Device Clear (DCL)") + choice(gpibUCMD_Local_Lockout__LL0_, "Local Lockout (LL0)") + choice(gpibUCMD_Serial_Poll_Disable__SPD_, "Serial Poll Disable (SPD)") + choice(gpibUCMD_Serial_Poll_Enable__SPE_, "Serial Poll Enable (SPE)") + choice(gpibUCMD_Unlisten__UNL_, "Unlisten (UNL)") + choice(gpibUCMD_Untalk__UNT_, "Untalk (UNT)") +} +menu(asynENABLE) { + choice(asynENABLE_Disable, "Disable") + choice(asynENABLE_Enable, "Enable") +} +menu(menuPriority) { + choice(menuPriorityLOW, "LOW") + choice(menuPriorityMEDIUM, "MEDIUM") + choice(menuPriorityHIGH, "HIGH") +} +menu(menuYesNo) { + choice(menuYesNoNO, "NO") + choice(menuYesNoYES, "YES") +} +menu(calcoutDOPT) { + choice(calcoutDOPT_Use_VAL, "Use CALC") + choice(calcoutDOPT_Use_OVAL, "Use OCAL") +} +menu(swaitINAP) { + choice(swaitINAP_No, "No") + choice(swaitINAP_Yes, "Yes") +} +menu(asynAUTOCONNECT) { + choice(asynAUTOCONNECT_noAutoConnect, "noAutoConnect") + choice(asynAUTOCONNECT_autoConnect, "autoConnect") +} +menu(acalcoutSIZE) { + choice(acalcoutSIZE_NELM, "NELM") + choice(acalcoutSIZE_NUSE, "NUSE") +} +menu(aaoPOST) { + choice(aaoPOST_Always, "Always") + choice(aaoPOST_OnChange, "On Change") +} +menu(menuPost) { + choice(menuPost_OnChange, "On Change") + choice(menuPost_Always, "Always") +} +menu(serialDBIT) { + choice(serialDBIT_unknown, "Unknown") + choice(serialDBIT_5, "5") + choice(serialDBIT_6, "6") + choice(serialDBIT_7, "7") + choice(serialDBIT_8, "8") +} +menu(scalcoutINAP) { + choice(scalcoutINAP_No, "No PROC on Change") + choice(scalcoutINAP_Yes, "PROC on Change") +} +menu(selSELM) { + choice(selSELM_Specified, "Specified") + choice(selSELM_High_Signal, "High Signal") + choice(selSELM_Low_Signal, "Low Signal") + choice(selSELM_Median_Signal, "Median Signal") +} +menu(seqSELM) { + choice(seqSELM_All, "All") + choice(seqSELM_Specified, "Specified") + choice(seqSELM_Mask, "Mask") +} +menu(sseqWAIT) { + choice(sseqWAIT_NoWait, "NoWait") + choice(sseqWAIT_Wait, "Wait") + choice(sseqWAIT_Wait1, "After1") + choice(sseqWAIT_Wait2, "After2") + choice(sseqWAIT_Wait3, "After3") + choice(sseqWAIT_Wait4, "After4") + choice(sseqWAIT_Wait5, "After5") + choice(sseqWAIT_Wait6, "After6") + choice(sseqWAIT_Wait7, "After7") + choice(sseqWAIT_Wait8, "After8") + choice(sseqWAIT_Wait9, "After9") + choice(sseqWAIT_Wait10, "AfterA") +} +menu(compressALG) { + choice(compressALG_N_to_1_Low_Value, "N to 1 Low Value") + choice(compressALG_N_to_1_High_Value, "N to 1 High Value") + choice(compressALG_N_to_1_Average, "N to 1 Average") + choice(compressALG_Average, "Average") + choice(compressALG_Circular_Buffer, "Circular Buffer") + choice(compressALG_N_to_1_Median, "N to 1 Median") +} +menu(menuPini) { + choice(menuPiniNO, "NO") + choice(menuPiniYES, "YES") + choice(menuPiniRUN, "RUN") + choice(menuPiniRUNNING, "RUNNING") + choice(menuPiniPAUSE, "PAUSE") + choice(menuPiniPAUSED, "PAUSED") +} +menu(serialMCTL) { + choice(serialMCTL_unknown, "Unknown") + choice(serialMCTL_CLOCAL, "CLOCAL") + choice(serialMCTL_Yes, "YES") +} +menu(menuAlarmStat) { + choice(menuAlarmStatNO_ALARM, "NO_ALARM") + choice(menuAlarmStatREAD, "READ") + choice(menuAlarmStatWRITE, "WRITE") + choice(menuAlarmStatHIHI, "HIHI") + choice(menuAlarmStatHIGH, "HIGH") + choice(menuAlarmStatLOLO, "LOLO") + choice(menuAlarmStatLOW, "LOW") + choice(menuAlarmStatSTATE, "STATE") + choice(menuAlarmStatCOS, "COS") + choice(menuAlarmStatCOMM, "COMM") + choice(menuAlarmStatTIMEOUT, "TIMEOUT") + choice(menuAlarmStatHWLIMIT, "HWLIMIT") + choice(menuAlarmStatCALC, "CALC") + choice(menuAlarmStatSCAN, "SCAN") + choice(menuAlarmStatLINK, "LINK") + choice(menuAlarmStatSOFT, "SOFT") + choice(menuAlarmStatBAD_SUB, "BAD_SUB") + choice(menuAlarmStatUDF, "UDF") + choice(menuAlarmStatDISABLE, "DISABLE") + choice(menuAlarmStatSIMM, "SIMM") + choice(menuAlarmStatREAD_ACCESS, "READ_ACCESS") + choice(menuAlarmStatWRITE_ACCESS, "WRITE_ACCESS") +} +menu(aSubLFLG) { + choice(aSubLFLG_IGNORE, "IGNORE") + choice(aSubLFLG_READ, "READ") +} +menu(histogramCMD) { + choice(histogramCMD_Read, "Read") + choice(histogramCMD_Clear, "Clear") + choice(histogramCMD_Start, "Start") + choice(histogramCMD_Stop, "Stop") +} +menu(bufferingALG) { + choice(bufferingALG_FIFO, "FIFO Buffer") + choice(bufferingALG_LIFO, "LIFO Buffer") +} +menu(aaiPOST) { + choice(aaiPOST_Always, "Always") + choice(aaiPOST_OnChange, "On Change") +} +menu(swaitDOPT) { + choice(swaitDOPT_Use_VAL, "Use VAL") + choice(swaitDOPT_Use_DOL, "Use DOL") +} +menu(menuFtype) { + choice(menuFtypeSTRING, "STRING") + choice(menuFtypeCHAR, "CHAR") + choice(menuFtypeUCHAR, "UCHAR") + choice(menuFtypeSHORT, "SHORT") + choice(menuFtypeUSHORT, "USHORT") + choice(menuFtypeLONG, "LONG") + choice(menuFtypeULONG, "ULONG") + choice(menuFtypeINT64, "INT64") + choice(menuFtypeUINT64, "UINT64") + choice(menuFtypeFLOAT, "FLOAT") + choice(menuFtypeDOUBLE, "DOUBLE") + choice(menuFtypeENUM, "ENUM") +} +menu(calcoutINAV) { + choice(calcoutINAV_EXT_NC, "Ext PV NC") + choice(calcoutINAV_EXT, "Ext PV OK") + choice(calcoutINAV_LOC, "Local PV") + choice(calcoutINAV_CON, "Constant") +} +menu(scalcoutINAV) { + choice(scalcoutINAV_EXT_NC, "Ext PV NC") + choice(scalcoutINAV_EXT, "Ext PV OK") + choice(scalcoutINAV_LOC, "Local PV") + choice(scalcoutINAV_CON, "Constant") +} +menu(asynINTERFACE) { + choice(asynINTERFACE_OCTET, "asynOctet") + choice(asynINTERFACE_INT32, "asynInt32") + choice(asynINTERFACE_UINT32, "asynUInt32Digital") + choice(asynINTERFACE_FLOAT64, "asynFloat64") +} +menu(transformCOPT) { + choice(transformCOPT_CONDITIONAL, "Conditional") + choice(transformCOPT_ALWAYS, "Always") +} +menu(asynCONNECT) { + choice(asynCONNECT_Disconnect, "Disconnect") + choice(asynCONNECT_Connect, "Connect") +} +menu(stringinPOST) { + choice(stringinPOST_OnChange, "On Change") + choice(stringinPOST_Always, "Always") +} +menu(menuOmsl) { + choice(menuOmslsupervisory, "supervisory") + choice(menuOmslclosed_loop, "closed_loop") +} +menu(menuScan) { + choice(menuScanPassive, "Passive") + choice(menuScanEvent, "Event") + choice(menuScanI_O_Intr, "I/O Intr") + choice(menuScan10_second, "10 second") + choice(menuScan5_second, "5 second") + choice(menuScan2_second, "2 second") + choice(menuScan1_second, "1 second") + choice(menuScan_5_second, ".5 second") + choice(menuScan_2_second, ".2 second") + choice(menuScan_1_second, ".1 second") +} +menu(transformIVLA) { + choice(transformIVLA_IGNORE, "Ignore error") + choice(transformIVLA_DO_NOTHING, "Do Nothing") +} +menu(transformIAV) { + choice(transformIAV_EXT_NC, "Ext PV NC") + choice(transformIAV_EXT, "Ext PV OK") + choice(transformIAV_LOC, "Local PV") + choice(transformIAV_CON, "Constant") +} +menu(waveformPOST) { + choice(waveformPOST_Always, "Always") + choice(waveformPOST_OnChange, "On Change") +} +menu(serialIX) { + choice(serialIX_unknown, "Unknown") + choice(serialIX_No, "No") + choice(serialIX_Yes, "Yes") +} +menu(swaitINAV) { + choice(swaitINAV_PV_OK, "PV OK") + choice(swaitINAV_PV_BAD, "PV BAD") + choice(swaitINAV_No_PV, "No PV") +} +menu(swaitOOPT) { + choice(swaitOOPT_Every_Time, "Every Time") + choice(swaitOOPT_On_Change, "On Change") + choice(swaitOOPT_When_Zero, "When Zero") + choice(swaitOOPT_When_Non_zero, "When Non-zero") + choice(swaitOOPT_Transition_To_Zero, "Transition To Zero") + choice(swaitOOPT_Transition_To_Non_zero, "Transition To Non-zero") + choice(swaitOOPT_Never, "Never") +} +menu(scalcoutDOPT) { + choice(scalcoutDOPT_Use_VAL, "Use CALC") + choice(scalcoutDOPT_Use_OVAL, "Use OCAL") +} +menu(gpibACMD) { + choice(gpibACMD_None, "None") + choice(gpibACMD_Group_Execute_Trig___GET_, "Group Execute Trig. (GET)") + choice(gpibACMD_Go_To_Local__GTL_, "Go To Local (GTL)") + choice(gpibACMD_Selected_Dev__Clear__SDC_, "Selected Dev. Clear (SDC)") + choice(gpibACMD_Take_Control__TCT_, "Take Control (TCT)") + choice(gpibACMD_Serial_Poll, "Serial Poll") +} +menu(dfanoutSELM) { + choice(dfanoutSELM_All, "All") + choice(dfanoutSELM_Specified, "Specified") + choice(dfanoutSELM_Mask, "Mask") +} +menu(asynTRACE) { + choice(asynTRACE_Off, "Off") + choice(asynTRACE_On, "On") +} +menu(acalcoutINAV) { + choice(acalcoutINAV_EXT_NC, "Ext PV NC") + choice(acalcoutINAV_EXT, "Ext PV OK") + choice(acalcoutINAV_LOC, "Local PV") + choice(acalcoutINAV_CON, "Constant") +} +menu(asynTMOD) { + choice(asynTMOD_Write_Read, "Write/Read") + choice(asynTMOD_Write, "Write") + choice(asynTMOD_Read, "Read") + choice(asynTMOD_Flush, "Flush") + choice(asynTMOD_NoIO, "NoI/O") +} +menu(scalcoutWAIT) { + choice(scalcoutWAIT_NoWait, "NoWait") + choice(scalcoutWAIT_Wait, "Wait") +} +menu(menuIvoa) { + choice(menuIvoaContinue_normally, "Continue normally") + choice(menuIvoaDon_t_drive_outputs, "Don't drive outputs") + choice(menuIvoaSet_output_to_IVOV, "Set output to IVOV") +} +menu(stringoutPOST) { + choice(stringoutPOST_OnChange, "On Change") + choice(stringoutPOST_Always, "Always") +} +menu(serialSBIT) { + choice(serialSBIT_unknown, "Unknown") + choice(serialSBIT_1, "1") + choice(serialSBIT_2, "2") +} +menu(acalcoutWAIT) { + choice(acalcoutWAIT_NoWait, "NoWait") + choice(acalcoutWAIT_Wait, "Wait") +} +menu(fanoutSELM) { + choice(fanoutSELM_All, "All") + choice(fanoutSELM_Specified, "Specified") + choice(fanoutSELM_Mask, "Mask") +} +menu(serialPRTY) { + choice(serialPRTY_unknown, "Unknown") + choice(serialPRTY_None, "None") + choice(serialPRTY_Even, "Even") + choice(serialPRTY_Odd, "Odd") +} +menu(serialBAUD) { + choice(serialBAUD_unknown, "Unknown") + choice(serialBAUD_300, "300") + choice(serialBAUD_600, "600") + choice(serialBAUD_1200, "1200") + choice(serialBAUD_2400, "2400") + choice(serialBAUD_4800, "4800") + choice(serialBAUD_9600, "9600") + choice(serialBAUD_19200, "19200") + choice(serialBAUD_38400, "38400") + choice(serialBAUD_57600, "57600") + choice(serialBAUD_115200, "115200") + choice(serialBAUD_230400, "230400") + choice(serialBAUD_460800, "460800") + choice(serialBAUD_576000, "576000") + choice(serialBAUD_921600, "921600") + choice(serialBAUD_1152000, "1152000") +} +menu(asynEOMREASON) { + choice(asynEOMREASONNone, "None") + choice(asynEOMREASONCNT, "Count") + choice(asynEOMREASONEOS, "Eos") + choice(asynEOMREASONCNTEOS, "Count Eos") + choice(asynEOMREASONEND, "End") + choice(asynEOMREASONCNTEND, "Count End") + choice(asynEOMREASONEOSEND, "Eos End") + choice(asynEOMREASONCNTEOSEND, "Count Eos End") +} +recordtype(int64in) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + prompt("Scan Mechanism") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + menu(menuScan) + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Event Name") + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + prompt("Disable Value") + promptgroup("20 - Scan") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + prompt("Alarm Ack Transient") + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + interest(2) + special(SPC_NOMOD) + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + interest(4) + special(SPC_NOMOD) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + special(SPC_NOMOD) + interest(2) + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_INT64) { + asl(ASL0) + prompt("Current value") + promptgroup("40 - Input") + pp(TRUE) + } + field(INP, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input Specification") + } + field(EGU, DBF_STRING) { + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("Units name") + size(16) + } + field(HOPR, DBF_INT64) { + prompt("High Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(LOPR, DBF_INT64) { + prompt("Low Operating Range") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(HIHI, DBF_INT64) { + prompt("Hihi Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(LOLO, DBF_INT64) { + prompt("Lolo Alarm Limit") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + pp(TRUE) + } + field(HIGH, DBF_INT64) { + prompt("High Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(LOW, DBF_INT64) { + prompt("Low Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(HHSV, DBF_MENU) { + pp(TRUE) + prompt("Hihi Severity") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LLSV, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Lolo Severity") + pp(TRUE) + } + field(HSV, DBF_MENU) { + prompt("High Severity") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(LSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Low Severity") + interest(1) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(HYST, DBF_INT64) { + prompt("Alarm Deadband") + promptgroup("70 - Alarm") + interest(1) + } + field(AFTC, DBF_DOUBLE) { + interest(1) + promptgroup("70 - Alarm") + prompt("Alarm Filter Time Constant") + } + field(AFVL, DBF_DOUBLE) { + prompt("Alarm Filter Value") + special(SPC_NOMOD) + interest(3) + } + field(ADEL, DBF_INT64) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_INT64) { + interest(1) + promptgroup("80 - Display") + prompt("Monitor Deadband") + } + field(LALM, DBF_INT64) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(ALST, DBF_INT64) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Archived") + } + field(MLST, DBF_INT64) { + interest(3) + special(SPC_NOMOD) + prompt("Last Val Monitored") + } + field(SIOL, DBF_INLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Input Link") + } + field(SVAL, DBF_INT64) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + prompt("Simulation Mode") + special(SPC_MOD) + interest(1) + } + field(SIMS, DBF_MENU) { + interest(2) + promptgroup("90 - Simulate") + prompt("Simulation Mode Severity") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + special(SPC_NOMOD) + interest(4) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + promptgroup("90 - Simulate") + interest(1) + prompt("Sim. Mode Scan") + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + interest(2) + promptgroup("90 - Simulate") + prompt("Sim. Mode Async Delay") + } + field(SIMPVT, DBF_NOACCESS) { + prompt("Sim. Mode Private") + interest(4) + special(SPC_NOMOD) + extra("CALLBACK *simpvt") + } +} +device(int64in, CONSTANT, devI64inSoft, "Soft Channel") +device(int64in, CONSTANT, devI64inSoftCallback, "Async Soft Channel") +recordtype(sseq) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + size(40) + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + interest(3) + prompt("Force Processing") + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + initial("UDF") + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + menu(menuYesNo) + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + initial("YES") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + } + field(PPNR, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + special(SPC_NOMOD) + interest(4) + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + } + field(UDF, DBF_UCHAR) { + initial("1") + pp(TRUE) + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + interest(2) + special(SPC_NOMOD) + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_LONG) { + pp(TRUE) + asl(ASL0) + prompt("Used to trigger") + } + field(SELM, DBF_MENU) { + menu(sseqSELM) + prompt("Select Mechanism") + promptgroup("40 - Input") + interest(1) + } + field(SELN, DBF_USHORT) { + initial("1") + prompt("Link Selection") + interest(1) + } + field(SELL, DBF_INLINK) { + interest(1) + promptgroup("40 - Input") + prompt("Link Selection Loc") + } + field(PREC, DBF_SHORT) { + promptgroup("80 - Display") + interest(1) + prompt("Display Precision") + } + field(DLY1, DBF_DOUBLE) { + prompt("Delay 1") + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(1) + } + field(DOL1, DBF_INLINK) { + prompt("Input link1") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + } + field(DO1, DBF_DOUBLE) { + prompt("Constant input 1") + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + } + field(LNK1, DBF_OUTLINK) { + special(SPC_MOD) + interest(1) + promptgroup("51 - Output (1)") + prompt("Output Link 1") + } + field(STR1, DBF_STRING) { + interest(4) + special(SPC_MOD) + promptgroup("51 - Output (1)") + prompt("String value 1") + size(40) + } + field(DT1, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("DOL link type") + } + field(LT1, DBF_SHORT) { + prompt("LNK link type") + special(SPC_NOMOD) + interest(4) + } + field(WAIT1, DBF_MENU) { + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(1) + prompt("Wait for completion?") + menu(sseqWAIT) + } + field(WERR1, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(WTG1, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(IX1, DBF_SHORT) { + initial("0") + interest(2) + special(SPC_NOMOD) + } + field(DOL1V, DBF_MENU) { + menu(sseqLNKV) + prompt("DOL LINK Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(LNK1V, DBF_MENU) { + menu(sseqLNKV) + special(SPC_NOMOD) + interest(1) + prompt("LNK LINK Status") + initial("1") + } + field(DLY2, DBF_DOUBLE) { + prompt("Delay 2") + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(1) + } + field(DOL2, DBF_INLINK) { + prompt("Input link 2") + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + } + field(DO2, DBF_DOUBLE) { + special(SPC_MOD) + interest(1) + promptgroup("51 - Output (1)") + prompt("Constant input 2") + } + field(LNK2, DBF_OUTLINK) { + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + prompt("Output Link 2") + } + field(STR2, DBF_STRING) { + size(40) + prompt("String value 2") + interest(4) + special(SPC_MOD) + promptgroup("51 - Output (1)") + } + field(DT2, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("DOL link type") + } + field(LT2, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("LNK link type") + } + field(WAIT2, DBF_MENU) { + menu(sseqWAIT) + prompt("Wait for completion?") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + } + field(WERR2, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(WTG2, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(IX2, DBF_SHORT) { + special(SPC_NOMOD) + interest(2) + initial("1") + } + field(DOL2V, DBF_MENU) { + initial("1") + interest(1) + special(SPC_NOMOD) + prompt("DOL LINK Status") + menu(sseqLNKV) + } + field(LNK2V, DBF_MENU) { + initial("1") + menu(sseqLNKV) + special(SPC_NOMOD) + interest(1) + prompt("LNK LINK Status") + } + field(DLY3, DBF_DOUBLE) { + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(1) + prompt("Delay 3") + } + field(DOL3, DBF_INLINK) { + prompt("Input link 3") + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + } + field(DO3, DBF_DOUBLE) { + special(SPC_MOD) + interest(1) + promptgroup("51 - Output (1)") + prompt("Constant input 3") + } + field(LNK3, DBF_OUTLINK) { + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + prompt("Output Link 3") + } + field(STR3, DBF_STRING) { + size(40) + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(4) + prompt("String value 3") + } + field(DT3, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("DOL link type") + } + field(LT3, DBF_SHORT) { + prompt("LNK link type") + special(SPC_NOMOD) + interest(4) + } + field(WAIT3, DBF_MENU) { + menu(sseqWAIT) + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(1) + prompt("Wait for completion?") + } + field(WERR3, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(WTG3, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(IX3, DBF_SHORT) { + initial("2") + special(SPC_NOMOD) + interest(2) + } + field(DOL3V, DBF_MENU) { + menu(sseqLNKV) + prompt("DOL LINK Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(LNK3V, DBF_MENU) { + initial("1") + menu(sseqLNKV) + interest(1) + special(SPC_NOMOD) + prompt("LNK LINK Status") + } + field(DLY4, DBF_DOUBLE) { + interest(1) + special(SPC_MOD) + promptgroup("52 - Output (2)") + prompt("Delay 4") + } + field(DOL4, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("52 - Output (2)") + prompt("Input link 4") + } + field(DO4, DBF_DOUBLE) { + prompt("Constant input 4") + special(SPC_MOD) + interest(1) + promptgroup("51 - Output (1)") + } + field(LNK4, DBF_OUTLINK) { + prompt("Output Link 4") + promptgroup("52 - Output (2)") + special(SPC_MOD) + interest(1) + } + field(STR4, DBF_STRING) { + size(40) + prompt("String value 4") + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(4) + } + field(DT4, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("DOL link type") + } + field(LT4, DBF_SHORT) { + prompt("LNK link type") + special(SPC_NOMOD) + interest(4) + } + field(WAIT4, DBF_MENU) { + prompt("Wait for completion?") + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(1) + menu(sseqWAIT) + } + field(WERR4, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(WTG4, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(IX4, DBF_SHORT) { + initial("3") + special(SPC_NOMOD) + interest(2) + } + field(DOL4V, DBF_MENU) { + initial("1") + menu(sseqLNKV) + interest(1) + special(SPC_NOMOD) + prompt("DOL LINK Status") + } + field(LNK4V, DBF_MENU) { + initial("1") + interest(1) + special(SPC_NOMOD) + prompt("LNK LINK Status") + menu(sseqLNKV) + } + field(DLY5, DBF_DOUBLE) { + promptgroup("52 - Output (2)") + special(SPC_MOD) + interest(1) + prompt("Delay 5") + } + field(DOL5, DBF_INLINK) { + special(SPC_MOD) + promptgroup("52 - Output (2)") + interest(1) + prompt("Input link 5") + } + field(DO5, DBF_DOUBLE) { + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + prompt("Constant input 5") + } + field(LNK5, DBF_OUTLINK) { + prompt("Output Link 5") + special(SPC_MOD) + interest(1) + promptgroup("52 - Output (2)") + } + field(STR5, DBF_STRING) { + interest(4) + special(SPC_MOD) + promptgroup("51 - Output (1)") + prompt("String value 5") + size(40) + } + field(DT5, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("DOL link type") + } + field(LT5, DBF_SHORT) { + interest(4) + special(SPC_NOMOD) + prompt("LNK link type") + } + field(WAIT5, DBF_MENU) { + prompt("Wait for completion?") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + menu(sseqWAIT) + } + field(WERR5, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(WTG5, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(IX5, DBF_SHORT) { + interest(2) + special(SPC_NOMOD) + initial("4") + } + field(DOL5V, DBF_MENU) { + initial("1") + menu(sseqLNKV) + prompt("DOL LINK Status") + interest(1) + special(SPC_NOMOD) + } + field(LNK5V, DBF_MENU) { + menu(sseqLNKV) + prompt("LNK LINK Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(DLY6, DBF_DOUBLE) { + prompt("Delay 6") + interest(1) + special(SPC_MOD) + promptgroup("52 - Output (2)") + } + field(DOL6, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("52 - Output (2)") + prompt("Input link 6") + } + field(DO6, DBF_DOUBLE) { + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + prompt("Constant input 6") + } + field(LNK6, DBF_OUTLINK) { + interest(1) + special(SPC_MOD) + promptgroup("52 - Output (2)") + prompt("Output Link 6") + } + field(STR6, DBF_STRING) { + size(40) + special(SPC_MOD) + interest(4) + promptgroup("51 - Output (1)") + prompt("String value 6") + } + field(DT6, DBF_SHORT) { + prompt("DOL link type") + special(SPC_NOMOD) + interest(4) + } + field(LT6, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("LNK link type") + } + field(WAIT6, DBF_MENU) { + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(1) + prompt("Wait for completion?") + menu(sseqWAIT) + } + field(WERR6, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(WTG6, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(IX6, DBF_SHORT) { + special(SPC_NOMOD) + interest(2) + initial("5") + } + field(DOL6V, DBF_MENU) { + initial("1") + prompt("DOL LINK Status") + interest(1) + special(SPC_NOMOD) + menu(sseqLNKV) + } + field(LNK6V, DBF_MENU) { + initial("1") + menu(sseqLNKV) + special(SPC_NOMOD) + interest(1) + prompt("LNK LINK Status") + } + field(DLY7, DBF_DOUBLE) { + prompt("Delay 7") + interest(1) + special(SPC_MOD) + promptgroup("53 - Output (3)") + } + field(DOL7, DBF_INLINK) { + prompt("Input link 7") + special(SPC_MOD) + promptgroup("53 - Output (3)") + interest(1) + } + field(DO7, DBF_DOUBLE) { + prompt("Constant input 7") + special(SPC_MOD) + interest(1) + promptgroup("51 - Output (1)") + } + field(LNK7, DBF_OUTLINK) { + promptgroup("53 - Output (3)") + special(SPC_MOD) + interest(1) + prompt("Output Link 7") + } + field(STR7, DBF_STRING) { + prompt("String value 7") + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(4) + size(40) + } + field(DT7, DBF_SHORT) { + interest(4) + special(SPC_NOMOD) + prompt("DOL link type") + } + field(LT7, DBF_SHORT) { + interest(4) + special(SPC_NOMOD) + prompt("LNK link type") + } + field(WAIT7, DBF_MENU) { + prompt("Wait for completion?") + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + menu(sseqWAIT) + } + field(WERR7, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(WTG7, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(IX7, DBF_SHORT) { + initial("6") + special(SPC_NOMOD) + interest(2) + } + field(DOL7V, DBF_MENU) { + menu(sseqLNKV) + prompt("DOL LINK Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(LNK7V, DBF_MENU) { + prompt("LNK LINK Status") + special(SPC_NOMOD) + interest(1) + menu(sseqLNKV) + initial("1") + } + field(DLY8, DBF_DOUBLE) { + prompt("Delay 8") + interest(1) + special(SPC_MOD) + promptgroup("53 - Output (3)") + } + field(DOL8, DBF_INLINK) { + special(SPC_MOD) + promptgroup("53 - Output (3)") + interest(1) + prompt("Input link 8") + } + field(DO8, DBF_DOUBLE) { + prompt("Constant input 8") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + } + field(LNK8, DBF_OUTLINK) { + prompt("Output Link 8") + special(SPC_MOD) + promptgroup("53 - Output (3)") + interest(1) + } + field(STR8, DBF_STRING) { + special(SPC_MOD) + promptgroup("51 - Output (1)") + interest(4) + prompt("String value 8") + size(40) + } + field(DT8, DBF_SHORT) { + prompt("DOL link type") + interest(4) + special(SPC_NOMOD) + } + field(LT8, DBF_SHORT) { + special(SPC_NOMOD) + interest(4) + prompt("LNK link type") + } + field(WAIT8, DBF_MENU) { + menu(sseqWAIT) + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(1) + prompt("Wait for completion?") + } + field(WERR8, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(WTG8, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(IX8, DBF_SHORT) { + interest(2) + special(SPC_NOMOD) + initial("7") + } + field(DOL8V, DBF_MENU) { + special(SPC_NOMOD) + interest(1) + prompt("DOL LINK Status") + menu(sseqLNKV) + initial("1") + } + field(LNK8V, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("LNK LINK Status") + menu(sseqLNKV) + } + field(DLY9, DBF_DOUBLE) { + prompt("Delay 9") + special(SPC_MOD) + interest(1) + promptgroup("53 - Output (3)") + } + field(DOL9, DBF_INLINK) { + special(SPC_MOD) + promptgroup("53 - Output (3)") + interest(1) + prompt("Input link 9") + } + field(DO9, DBF_DOUBLE) { + prompt("Constant input 9") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + } + field(LNK9, DBF_OUTLINK) { + promptgroup("53 - Output (3)") + special(SPC_MOD) + interest(1) + prompt("Output Link 9") + } + field(STR9, DBF_STRING) { + promptgroup("51 - Output (1)") + special(SPC_MOD) + interest(4) + prompt("String value 9") + size(40) + } + field(DT9, DBF_SHORT) { + prompt("DOL link type") + special(SPC_NOMOD) + interest(4) + } + field(LT9, DBF_SHORT) { + interest(4) + special(SPC_NOMOD) + prompt("LNK link type") + } + field(WAIT9, DBF_MENU) { + menu(sseqWAIT) + prompt("Wait for completion?") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + } + field(WERR9, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(WTG9, DBF_SHORT) { + interest(1) + special(SPC_NOMOD) + } + field(IX9, DBF_SHORT) { + initial("8") + special(SPC_NOMOD) + interest(2) + } + field(DOL9V, DBF_MENU) { + special(SPC_NOMOD) + interest(1) + prompt("DOL LINK Status") + menu(sseqLNKV) + initial("1") + } + field(LNK9V, DBF_MENU) { + menu(sseqLNKV) + interest(1) + special(SPC_NOMOD) + prompt("LNK LINK Status") + initial("1") + } + field(DLYA, DBF_DOUBLE) { + prompt("Delay 10") + special(SPC_MOD) + interest(1) + promptgroup("53 - Output (3)") + } + field(DOLA, DBF_INLINK) { + prompt("Input link 10") + promptgroup("53 - Output (3)") + special(SPC_MOD) + interest(1) + } + field(DOA, DBF_DOUBLE) { + prompt("Constant input 10") + special(SPC_MOD) + interest(1) + promptgroup("51 - Output (1)") + } + field(LNKA, DBF_OUTLINK) { + prompt("Output Link 10") + special(SPC_MOD) + promptgroup("53 - Output (3)") + interest(1) + } + field(STRA, DBF_STRING) { + interest(4) + special(SPC_MOD) + promptgroup("51 - Output (1)") + prompt("String value A") + size(40) + } + field(DTA, DBF_SHORT) { + interest(4) + special(SPC_NOMOD) + prompt("DOL link type") + } + field(LTA, DBF_SHORT) { + interest(4) + special(SPC_NOMOD) + prompt("LNK link type") + } + field(WAITA, DBF_MENU) { + menu(sseqWAIT) + prompt("Wait for completion?") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output (1)") + } + field(WERRA, DBF_SHORT) { + special(SPC_NOMOD) + interest(1) + } + field(WTGA, DBF_SHORT) { + interest(1) + } + field(IXA, DBF_SHORT) { + interest(2) + initial("9") + } + field(DOLAV, DBF_MENU) { + menu(sseqLNKV) + prompt("DOL LINK Status") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(LNKAV, DBF_MENU) { + prompt("LNK LINK Status") + interest(1) + special(SPC_NOMOD) + menu(sseqLNKV) + initial("1") + } + field(ABORT, DBF_SHORT) { + interest(1) + special(SPC_MOD) + prompt("Abort sequence") + } + field(ABORTING, DBF_SHORT) { + special(SPC_MOD) + interest(1) + prompt("Aborting") + } + field(BUSY, DBF_SHORT) { + prompt("Sequence active") + special(SPC_NOMOD) + interest(1) + } +} +recordtype(sel) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + size(40) + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Event Name") + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKT, DBF_MENU) { + menu(menuYesNo) + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(2) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + } + field(SPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + prompt("Address of RSET") + interest(4) + special(SPC_NOMOD) + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + prompt("Time") + interest(2) + special(SPC_NOMOD) + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_DOUBLE) { + asl(ASL0) + prompt("Result") + promptgroup("40 - Input") + special(SPC_NOMOD) + } + field(SELM, DBF_MENU) { + promptgroup("30 - Action") + prompt("Select Mechanism") + menu(selSELM) + } + field(SELN, DBF_USHORT) { + prompt("Index value") + } + field(PREC, DBF_SHORT) { + promptgroup("80 - Display") + interest(1) + prompt("Display Precision") + } + field(NVL, DBF_INLINK) { + promptgroup("30 - Action") + interest(1) + prompt("Index Value Location") + } + field(INPA, DBF_INLINK) { + interest(1) + promptgroup("41 - Input A-F") + prompt("Input A") + } + field(INPB, DBF_INLINK) { + prompt("Input B") + interest(1) + promptgroup("41 - Input A-F") + } + field(INPC, DBF_INLINK) { + prompt("Input C") + promptgroup("41 - Input A-F") + interest(1) + } + field(INPD, DBF_INLINK) { + prompt("Input D") + interest(1) + promptgroup("41 - Input A-F") + } + field(INPE, DBF_INLINK) { + promptgroup("41 - Input A-F") + interest(1) + prompt("Input E") + } + field(INPF, DBF_INLINK) { + promptgroup("41 - Input A-F") + interest(1) + prompt("Input F") + } + field(INPG, DBF_INLINK) { + promptgroup("42 - Input G-L") + interest(1) + prompt("Input G") + } + field(INPH, DBF_INLINK) { + promptgroup("42 - Input G-L") + interest(1) + prompt("Input H") + } + field(INPI, DBF_INLINK) { + prompt("Input I") + promptgroup("42 - Input G-L") + interest(1) + } + field(INPJ, DBF_INLINK) { + prompt("Input J") + interest(1) + promptgroup("42 - Input G-L") + } + field(INPK, DBF_INLINK) { + prompt("Input K") + interest(1) + promptgroup("42 - Input G-L") + } + field(INPL, DBF_INLINK) { + interest(1) + promptgroup("42 - Input G-L") + prompt("Input L") + } + field(EGU, DBF_STRING) { + size(16) + promptgroup("80 - Display") + prop(YES) + interest(1) + prompt("Engineering Units") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Rng") + prop(YES) + promptgroup("80 - Display") + interest(1) + } + field(LOPR, DBF_DOUBLE) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Low Operating Range") + } + field(HIHI, DBF_DOUBLE) { + pp(TRUE) + prompt("Hihi Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + } + field(LOLO, DBF_DOUBLE) { + pp(TRUE) + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("Lolo Alarm Limit") + } + field(HIGH, DBF_DOUBLE) { + pp(TRUE) + prompt("High Alarm Limit") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + } + field(LOW, DBF_DOUBLE) { + pp(TRUE) + prompt("Low Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(HHSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Hihi Severity") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + pp(TRUE) + } + field(LLSV, DBF_MENU) { + prompt("Lolo Severity") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + pp(TRUE) + } + field(HSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prop(YES) + interest(1) + promptgroup("70 - Alarm") + prompt("High Severity") + } + field(LSV, DBF_MENU) { + pp(TRUE) + prompt("Low Severity") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(HYST, DBF_DOUBLE) { + promptgroup("70 - Alarm") + interest(1) + prompt("Alarm Deadband") + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup("80 - Display") + interest(1) + } + field(A, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input A") + } + field(B, DBF_DOUBLE) { + prompt("Value of Input B") + pp(TRUE) + } + field(C, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input C") + } + field(D, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input D") + } + field(E, DBF_DOUBLE) { + prompt("Value of Input E") + pp(TRUE) + } + field(F, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input F") + } + field(G, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input G") + } + field(H, DBF_DOUBLE) { + prompt("Value of Input H") + pp(TRUE) + } + field(I, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input I") + } + field(J, DBF_DOUBLE) { + prompt("Value of Input J") + pp(TRUE) + } + field(K, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input K") + } + field(L, DBF_DOUBLE) { + prompt("Value of Input L") + pp(TRUE) + } + field(LA, DBF_DOUBLE) { + prompt("Prev Value of A") + interest(3) + special(SPC_NOMOD) + } + field(LB, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of B") + } + field(LC, DBF_DOUBLE) { + prompt("Prev Value of C") + special(SPC_NOMOD) + interest(3) + } + field(LD, DBF_DOUBLE) { + prompt("Prev Value of D") + interest(3) + special(SPC_NOMOD) + } + field(LE, DBF_DOUBLE) { + prompt("Prev Value of E") + interest(3) + special(SPC_NOMOD) + } + field(LF, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of F") + } + field(LG, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of G") + } + field(LH, DBF_DOUBLE) { + prompt("Prev Value of H") + interest(3) + special(SPC_NOMOD) + } + field(LI, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of I") + } + field(LJ, DBF_DOUBLE) { + prompt("Prev Value of J") + special(SPC_NOMOD) + interest(3) + } + field(LK, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of K") + } + field(LL, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of L") + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST, DBF_DOUBLE) { + prompt("Last Value Archived") + interest(3) + special(SPC_NOMOD) + } + field(MLST, DBF_DOUBLE) { + prompt("Last Val Monitored") + interest(3) + special(SPC_NOMOD) + } + field(NLST, DBF_USHORT) { + special(SPC_NOMOD) + interest(3) + prompt("Last Index Monitored") + } +} +recordtype(scalcout) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + } + field(SCAN, DBF_MENU) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + menu(menuYesNo) + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + } + field(UDF, DBF_UCHAR) { + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + interest(2) + special(SPC_NOMOD) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VERS, DBF_DOUBLE) { + prompt("Code Version") + special(SPC_NOMOD) + initial("1") + } + field(RPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Record Private") + extra("void *rpvt") + size(4) + } + field(VAL, DBF_DOUBLE) { + asl(ASL0) + prompt("Result") + } + field(SVAL, DBF_STRING) { + prompt("String result") + asl(ASL0) + size(40) + } + field(PVAL, DBF_DOUBLE) { + prompt("Previous Value") + } + field(PSVL, DBF_STRING) { + prompt("Previous string result") + special(SPC_NOMOD) + size(40) + } + field(CALC, DBF_STRING) { + prompt("Calculation") + promptgroup("30 - Action") + special(SPC_MOD) + pp(TRUE) + size(80) + } + field(CLCV, DBF_LONG) { + interest(1) + prompt("CALC Valid") + } + field(INPA, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Input A") + } + field(INPB, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input B") + } + field(INPC, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input C") + } + field(INPD, DBF_INLINK) { + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("Input D") + } + field(INPE, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Input E") + } + field(INPF, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Input F") + } + field(INPG, DBF_INLINK) { + prompt("Input G") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(INPH, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input H") + } + field(INPI, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input I") + } + field(INPJ, DBF_INLINK) { + prompt("Input J") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INPK, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Input K") + } + field(INPL, DBF_INLINK) { + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("Input L") + } + field(INAA, DBF_INLINK) { + prompt("String input AA") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INBB, DBF_INLINK) { + prompt("String input BB") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INCC, DBF_INLINK) { + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + prompt("String input CC") + } + field(INDD, DBF_INLINK) { + prompt("String input DD") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(INEE, DBF_INLINK) { + prompt("String input EE") + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + } + field(INFF, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("String input FF") + } + field(INGG, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("String input GG") + } + field(INHH, DBF_INLINK) { + prompt("String input HH") + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + } + field(INII, DBF_INLINK) { + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + prompt("String input II") + } + field(INJJ, DBF_INLINK) { + prompt("String input JJ") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INKK, DBF_INLINK) { + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + prompt("String input KK") + } + field(INLL, DBF_INLINK) { + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("String input LL") + } + field(OUT, DBF_OUTLINK) { + prompt("Output Link") + promptgroup("50 - Output") + interest(1) + special(SPC_MOD) + } + field(INAV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + prompt("INPA PV Status") + special(SPC_NOMOD) + interest(1) + } + field(INBV, DBF_MENU) { + menu(scalcoutINAV) + special(SPC_NOMOD) + interest(1) + prompt("INPB PV Status") + initial("1") + } + field(INCV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + special(SPC_NOMOD) + interest(1) + prompt("INPC PV Status") + } + field(INDV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + special(SPC_NOMOD) + interest(1) + prompt("INPD PV Status") + } + field(INEV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INPE PV Status") + menu(scalcoutINAV) + initial("1") + } + field(INFV, DBF_MENU) { + prompt("INPF PV Status") + interest(1) + special(SPC_NOMOD) + menu(scalcoutINAV) + initial("1") + } + field(INGV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("INPG PV Status") + menu(scalcoutINAV) + } + field(INHV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + prompt("INPH PV Status") + interest(1) + special(SPC_NOMOD) + } + field(INIV, DBF_MENU) { + initial("1") + prompt("INPI PV Status") + special(SPC_NOMOD) + interest(1) + menu(scalcoutINAV) + } + field(INJV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + special(SPC_NOMOD) + interest(1) + prompt("INPJ PV Status") + } + field(INKV, DBF_MENU) { + initial("1") + prompt("INPK PV Status") + interest(1) + special(SPC_NOMOD) + menu(scalcoutINAV) + } + field(INLV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + prompt("INPL PV Status") + interest(1) + special(SPC_NOMOD) + } + field(IAAV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + prompt("INAA PV Status") + interest(1) + special(SPC_NOMOD) + } + field(IBBV, DBF_MENU) { + special(SPC_NOMOD) + interest(1) + prompt("INBB PV Status") + menu(scalcoutINAV) + initial("1") + } + field(ICCV, DBF_MENU) { + initial("1") + prompt("INCC PV Status") + interest(1) + special(SPC_NOMOD) + menu(scalcoutINAV) + } + field(IDDV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INDD PV Status") + menu(scalcoutINAV) + initial("1") + } + field(IEEV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INEE PV Status") + menu(scalcoutINAV) + initial("1") + } + field(IFFV, DBF_MENU) { + initial("1") + menu(scalcoutINAV) + prompt("INFF PV Status") + special(SPC_NOMOD) + interest(1) + } + field(IGGV, DBF_MENU) { + initial("1") + prompt("INGG PV Status") + special(SPC_NOMOD) + interest(1) + menu(scalcoutINAV) + } + field(IHHV, DBF_MENU) { + initial("1") + interest(1) + special(SPC_NOMOD) + prompt("INHH PV Status") + menu(scalcoutINAV) + } + field(IIIV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INII PV Status") + menu(scalcoutINAV) + initial("1") + } + field(IJJV, DBF_MENU) { + menu(scalcoutINAV) + special(SPC_NOMOD) + interest(1) + prompt("INJJ PV Status") + initial("1") + } + field(IKKV, DBF_MENU) { + menu(scalcoutINAV) + prompt("INKK PV Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(ILLV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INLL PV Status") + menu(scalcoutINAV) + initial("1") + } + field(OUTV, DBF_MENU) { + menu(scalcoutINAV) + prompt("OUT PV Status") + special(SPC_NOMOD) + interest(1) + } + field(OOPT, DBF_MENU) { + prompt("Output Execute Opt") + interest(1) + promptgroup("30 - Action") + menu(scalcoutOOPT) + } + field(ODLY, DBF_DOUBLE) { + prompt("Output Execute Delay") + promptgroup("70 - Alarm") + interest(1) + asl(ASL0) + } + field(WAIT, DBF_MENU) { + menu(scalcoutWAIT) + interest(1) + prompt("Wait for completion?") + } + field(DLYA, DBF_USHORT) { + special(SPC_NOMOD) + prompt("Output Delay Active") + asl(ASL0) + } + field(DOPT, DBF_MENU) { + menu(scalcoutDOPT) + promptgroup("30 - Action") + interest(1) + prompt("Output Data Opt") + } + field(OCAL, DBF_STRING) { + prompt("Output Calculation") + promptgroup("30 - Action") + special(SPC_MOD) + size(80) + pp(TRUE) + } + field(OCLV, DBF_LONG) { + prompt("OCAL Valid") + interest(1) + } + field(OEVT, DBF_USHORT) { + asl(ASL0) + promptgroup("30 - Action") + prompt("Event To Issue") + } + field(IVOA, DBF_MENU) { + prompt("INVALID output action") + promptgroup("50 - Output") + interest(2) + menu(menuIvoa) + } + field(IVOV, DBF_DOUBLE) { + interest(2) + promptgroup("50 - Output") + prompt("INVALID output value") + } + field(EGU, DBF_STRING) { + prompt("Units Name") + promptgroup("80 - Display") + interest(1) + size(16) + } + field(PREC, DBF_SHORT) { + promptgroup("80 - Display") + interest(1) + prompt("Display Precision") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Rng") + promptgroup("80 - Display") + interest(1) + } + field(LOPR, DBF_DOUBLE) { + prompt("Low Operating Range") + interest(1) + promptgroup("80 - Display") + } + field(HIHI, DBF_DOUBLE) { + promptgroup("70 - Alarm") + interest(1) + prompt("Hihi Alarm Limit") + pp(TRUE) + } + field(LOLO, DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(HIGH, DBF_DOUBLE) { + prompt("High Alarm Limit") + interest(1) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(LOW, DBF_DOUBLE) { + pp(TRUE) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Alarm Limit") + } + field(HHSV, DBF_MENU) { + pp(TRUE) + prompt("Hihi Severity") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LLSV, DBF_MENU) { + prompt("Lolo Severity") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + pp(TRUE) + } + field(HSV, DBF_MENU) { + prompt("High Severity") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(LSV, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Severity") + pp(TRUE) + } + field(HYST, DBF_DOUBLE) { + interest(1) + promptgroup("70 - Alarm") + prompt("Alarm Deadband") + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + promptgroup("80 - Display") + interest(1) + prompt("Monitor Deadband") + } + field(A, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input A") + pp(TRUE) + } + field(B, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input B") + pp(TRUE) + } + field(C, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input C") + pp(TRUE) + } + field(D, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input D") + promptgroup("10 - Common") + } + field(E, DBF_DOUBLE) { + prompt("Value of Input E") + promptgroup("10 - Common") + pp(TRUE) + } + field(F, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input F") + pp(TRUE) + } + field(G, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input G") + pp(TRUE) + } + field(H, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input H") + pp(TRUE) + } + field(I, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input I") + promptgroup("10 - Common") + } + field(J, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input J") + pp(TRUE) + } + field(K, DBF_DOUBLE) { + promptgroup("10 - Common") + prompt("Value of Input K") + pp(TRUE) + } + field(L, DBF_DOUBLE) { + prompt("Value of Input L") + promptgroup("10 - Common") + pp(TRUE) + } + field(STRS, DBF_NOACCESS) { + extra("char **strs") + size(4) + interest(4) + prompt("Array of string pointers") + } + field(AA, DBF_STRING) { + prompt("Value of string input AA") + interest(4) + promptgroup("10 - Common") + pp(TRUE) + size(40) + } + field(BB, DBF_STRING) { + promptgroup("10 - Common") + interest(4) + prompt("Value of string input BB") + size(40) + pp(TRUE) + } + field(CC, DBF_STRING) { + pp(TRUE) + size(40) + prompt("Value of string input CC") + interest(4) + promptgroup("10 - Common") + } + field(DD, DBF_STRING) { + pp(TRUE) + size(40) + prompt("Value of string input DD") + promptgroup("10 - Common") + interest(4) + } + field(EE, DBF_STRING) { + prompt("Value of string input EE") + promptgroup("10 - Common") + interest(4) + pp(TRUE) + size(40) + } + field(FF, DBF_STRING) { + prompt("Value of string input FF") + promptgroup("10 - Common") + interest(4) + pp(TRUE) + size(40) + } + field(GG, DBF_STRING) { + size(40) + pp(TRUE) + interest(4) + promptgroup("10 - Common") + prompt("Value of string input GG") + } + field(HH, DBF_STRING) { + interest(4) + promptgroup("10 - Common") + prompt("Value of string input HH") + size(40) + pp(TRUE) + } + field(II, DBF_STRING) { + promptgroup("10 - Common") + interest(4) + prompt("Value of string input II") + size(40) + pp(TRUE) + } + field(JJ, DBF_STRING) { + pp(TRUE) + size(40) + promptgroup("10 - Common") + interest(4) + prompt("Value of string input JJ") + } + field(KK, DBF_STRING) { + prompt("Value of string input KK") + interest(4) + promptgroup("10 - Common") + size(40) + pp(TRUE) + } + field(LL, DBF_STRING) { + promptgroup("10 - Common") + interest(4) + prompt("Value of string input LL") + size(40) + pp(TRUE) + } + field(PAA, DBF_NOACCESS) { + size(4) + extra("char *paa") + prompt("Prev Value of AA") + interest(4) + special(SPC_DBADDR) + } + field(PBB, DBF_NOACCESS) { + special(SPC_DBADDR) + interest(4) + prompt("Prev Value of BB") + extra("char *pbb") + size(4) + } + field(PCC, DBF_NOACCESS) { + interest(4) + special(SPC_DBADDR) + prompt("Prev Value of CC") + extra("char *pcc") + size(4) + } + field(PDD, DBF_NOACCESS) { + extra("char *pdd") + size(4) + special(SPC_DBADDR) + interest(4) + prompt("Prev Value of DD") + } + field(PEE, DBF_NOACCESS) { + interest(4) + special(SPC_DBADDR) + prompt("Prev Value of EE") + extra("char *pee") + size(4) + } + field(PFF, DBF_NOACCESS) { + size(4) + extra("char *pff") + prompt("Prev Value of FF") + interest(4) + special(SPC_DBADDR) + } + field(PGG, DBF_NOACCESS) { + extra("char *pgg") + size(4) + special(SPC_DBADDR) + interest(4) + prompt("Prev Value of GG") + } + field(PHH, DBF_NOACCESS) { + interest(4) + special(SPC_DBADDR) + prompt("Prev Value of HH") + extra("char *phh") + size(4) + } + field(PII, DBF_NOACCESS) { + special(SPC_DBADDR) + interest(4) + prompt("Prev Value of II") + extra("char *pii") + size(4) + } + field(PJJ, DBF_NOACCESS) { + prompt("Prev Value of JJ") + interest(4) + special(SPC_DBADDR) + size(4) + extra("char *pjj") + } + field(PKK, DBF_NOACCESS) { + extra("char *pkk") + size(4) + special(SPC_DBADDR) + interest(4) + prompt("Prev Value of KK") + } + field(PLL, DBF_NOACCESS) { + size(4) + extra("char *pll") + prompt("Prev Value of LL") + interest(4) + special(SPC_DBADDR) + } + field(OVAL, DBF_DOUBLE) { + prompt("Output Value") + asl(ASL0) + } + field(OSV, DBF_STRING) { + prompt("Output string value") + asl(ASL0) + size(40) + } + field(POSV, DBF_STRING) { + special(SPC_NOMOD) + prompt("Previous output string value") + size(40) + } + field(PA, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of A") + } + field(PB, DBF_DOUBLE) { + prompt("Prev Value of B") + interest(3) + special(SPC_NOMOD) + } + field(PC, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of C") + } + field(PD, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of D") + } + field(PE, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of E") + } + field(PF, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of F") + } + field(PG, DBF_DOUBLE) { + prompt("Prev Value of G") + special(SPC_NOMOD) + interest(3) + } + field(PH, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of H") + } + field(PI, DBF_DOUBLE) { + prompt("Prev Value of I") + interest(3) + special(SPC_NOMOD) + } + field(PJ, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of J") + } + field(PK, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of K") + } + field(PL, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of L") + } + field(POVL, DBF_DOUBLE) { + prompt("Prev Value of OVAL") + asl(ASL0) + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST, DBF_DOUBLE) { + prompt("Last Value Archived") + interest(3) + special(SPC_NOMOD) + } + field(MLST, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Last Val Monitored") + } + field(RPCL, DBF_NOACCESS) { + prompt("Postfix Calc") + special(SPC_NOMOD) + interest(4) + extra("unsigned char rpcl[282]") + } + field(ORPC, DBF_NOACCESS) { + extra("unsigned char orpc[282]") + special(SPC_NOMOD) + interest(4) + prompt("Postfix OCalc") + } +} +device(scalcout, CONSTANT, devsCalcoutSoft, "Soft Channel") +device(scalcout, INST_IO, devscalcoutStream, "stream") +recordtype(acalcout) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + size(40) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + promptgroup("10 - Common") + interest(1) + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKT, DBF_MENU) { + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + interest(2) + special(SPC_NOMOD) + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + } + field(SPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + } + field(DSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Forward Process Link") + } + field(VERS, DBF_DOUBLE) { + initial("1") + special(SPC_NOMOD) + prompt("Code Version") + } + field(RPVT, DBF_NOACCESS) { + size(4) + extra("void *rpvt") + prompt("Record Private") + special(SPC_NOMOD) + interest(4) + } + field(VAL, DBF_DOUBLE) { + asl(ASL0) + prompt("Result") + } + field(AVAL, DBF_NOACCESS) { + pp(TRUE) + extra("double *aval") + asl(ASL0) + prompt("Array Value") + special(SPC_DBADDR) + } + field(NELM, DBF_ULONG) { + prompt("Number of Elements") + interest(1) + special(SPC_NOMOD) + promptgroup("30 - Action") + initial("1") + } + field(NUSE, DBF_ULONG) { + pp(TRUE) + initial("0") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("# elem's in use") + } + field(PVAL, DBF_DOUBLE) { + prompt("Previous Value") + } + field(PAVL, DBF_NOACCESS) { + prompt("Prev. Array Value") + asl(ASL0) + extra("double *pavl") + pp(TRUE) + } + field(CALC, DBF_STRING) { + pp(TRUE) + size(80) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("Calculation") + } + field(CLCV, DBF_LONG) { + prompt("CALC Valid") + interest(1) + } + field(INPA, DBF_INLINK) { + prompt("Input A") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INPB, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input B") + } + field(INPC, DBF_INLINK) { + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("Input C") + } + field(INPD, DBF_INLINK) { + prompt("Input D") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INPE, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Input E") + } + field(INPF, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input F") + } + field(INPG, DBF_INLINK) { + prompt("Input G") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(INPH, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input H") + } + field(INPI, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input I") + } + field(INPJ, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Input J") + } + field(INPK, DBF_INLINK) { + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + prompt("Input K") + } + field(INPL, DBF_INLINK) { + prompt("Input L") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INAA, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Array input AA") + } + field(INBB, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Array input BB") + } + field(INCC, DBF_INLINK) { + prompt("Array input CC") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(INDD, DBF_INLINK) { + prompt("Array input DD") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INEE, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Array input EE") + } + field(INFF, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + prompt("Array input FF") + } + field(INGG, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Array input GG") + } + field(INHH, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Array input HH") + } + field(INII, DBF_INLINK) { + prompt("Array input II") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(INJJ, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("Array input JJ") + } + field(INKK, DBF_INLINK) { + prompt("Array input KK") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(INLL, DBF_INLINK) { + prompt("Array input LL") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(OUT, DBF_OUTLINK) { + prompt("Output Link") + interest(1) + special(SPC_MOD) + promptgroup("50 - Output") + } + field(INAV, DBF_MENU) { + initial("1") + interest(1) + special(SPC_NOMOD) + prompt("INPA PV Status") + menu(acalcoutINAV) + } + field(INBV, DBF_MENU) { + menu(acalcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INPB PV Status") + initial("1") + } + field(INCV, DBF_MENU) { + initial("1") + prompt("INPC PV Status") + special(SPC_NOMOD) + interest(1) + menu(acalcoutINAV) + } + field(INDV, DBF_MENU) { + menu(acalcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INPD PV Status") + initial("1") + } + field(INEV, DBF_MENU) { + initial("1") + menu(acalcoutINAV) + prompt("INPE PV Status") + special(SPC_NOMOD) + interest(1) + } + field(INFV, DBF_MENU) { + initial("1") + menu(acalcoutINAV) + prompt("INPF PV Status") + interest(1) + special(SPC_NOMOD) + } + field(INGV, DBF_MENU) { + menu(acalcoutINAV) + prompt("INPG PV Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(INHV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INPH PV Status") + menu(acalcoutINAV) + initial("1") + } + field(INIV, DBF_MENU) { + initial("1") + menu(acalcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INPI PV Status") + } + field(INJV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("INPJ PV Status") + menu(acalcoutINAV) + } + field(INKV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("INPK PV Status") + menu(acalcoutINAV) + } + field(INLV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INPL PV Status") + menu(acalcoutINAV) + initial("1") + } + field(IAAV, DBF_MENU) { + menu(acalcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INAA PV Status") + initial("1") + } + field(IBBV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INBB PV Status") + menu(acalcoutINAV) + initial("1") + } + field(ICCV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("INCC PV Status") + menu(acalcoutINAV) + } + field(IDDV, DBF_MENU) { + initial("1") + prompt("INDD PV Status") + special(SPC_NOMOD) + interest(1) + menu(acalcoutINAV) + } + field(IEEV, DBF_MENU) { + menu(acalcoutINAV) + prompt("INEE PV Status") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(IFFV, DBF_MENU) { + initial("1") + prompt("INFF PV Status") + special(SPC_NOMOD) + interest(1) + menu(acalcoutINAV) + } + field(IGGV, DBF_MENU) { + menu(acalcoutINAV) + prompt("INGG PV Status") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(IHHV, DBF_MENU) { + initial("1") + prompt("INHH PV Status") + interest(1) + special(SPC_NOMOD) + menu(acalcoutINAV) + } + field(IIIV, DBF_MENU) { + initial("1") + menu(acalcoutINAV) + prompt("INII PV Status") + interest(1) + special(SPC_NOMOD) + } + field(IJJV, DBF_MENU) { + initial("1") + prompt("INJJ PV Status") + interest(1) + special(SPC_NOMOD) + menu(acalcoutINAV) + } + field(IKKV, DBF_MENU) { + menu(acalcoutINAV) + prompt("INKK PV Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(ILLV, DBF_MENU) { + initial("1") + menu(acalcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INLL PV Status") + } + field(OUTV, DBF_MENU) { + menu(acalcoutINAV) + prompt("OUT PV Status") + interest(1) + special(SPC_NOMOD) + } + field(OOPT, DBF_MENU) { + prompt("Output Execute Opt") + interest(1) + promptgroup("30 - Action") + menu(acalcoutOOPT) + } + field(ODLY, DBF_DOUBLE) { + interest(1) + promptgroup("70 - Alarm") + prompt("Output Execute Delay") + asl(ASL0) + } + field(WAIT, DBF_MENU) { + interest(1) + prompt("Wait for completion?") + menu(acalcoutWAIT) + } + field(DLYA, DBF_USHORT) { + asl(ASL0) + special(SPC_NOMOD) + prompt("Output Delay Active") + } + field(DOPT, DBF_MENU) { + menu(acalcoutDOPT) + prompt("Output Data Opt") + promptgroup("30 - Action") + interest(1) + } + field(OCAL, DBF_STRING) { + pp(TRUE) + size(80) + prompt("Output Calculation") + promptgroup("30 - Action") + special(SPC_MOD) + } + field(OCLV, DBF_LONG) { + prompt("OCAL Valid") + interest(1) + } + field(OEVT, DBF_USHORT) { + promptgroup("30 - Action") + prompt("Event To Issue") + asl(ASL0) + } + field(IVOA, DBF_MENU) { + prompt("INVALID output action") + interest(2) + promptgroup("50 - Output") + menu(menuIvoa) + } + field(IVOV, DBF_DOUBLE) { + promptgroup("50 - Output") + interest(2) + prompt("INVALID output value") + } + field(EGU, DBF_STRING) { + size(16) + interest(1) + promptgroup("80 - Display") + prompt("Units Name") + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + interest(1) + promptgroup("80 - Display") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Rng") + promptgroup("80 - Display") + interest(1) + } + field(LOPR, DBF_DOUBLE) { + interest(1) + promptgroup("80 - Display") + prompt("Low Operating Range") + } + field(HIHI, DBF_DOUBLE) { + pp(TRUE) + promptgroup("70 - Alarm") + interest(1) + prompt("Hihi Alarm Limit") + } + field(LOLO, DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(HIGH, DBF_DOUBLE) { + promptgroup("70 - Alarm") + interest(1) + prompt("High Alarm Limit") + pp(TRUE) + } + field(LOW, DBF_DOUBLE) { + pp(TRUE) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Alarm Limit") + } + field(HHSV, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Hihi Severity") + pp(TRUE) + } + field(LLSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Lolo Severity") + interest(1) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(HSV, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("High Severity") + pp(TRUE) + } + field(LSV, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Severity") + pp(TRUE) + } + field(HYST, DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup("70 - Alarm") + interest(1) + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + promptgroup("80 - Display") + interest(1) + prompt("Monitor Deadband") + } + field(A, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input A") + } + field(B, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input B") + } + field(C, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input C") + } + field(D, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input D") + } + field(E, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input E") + } + field(F, DBF_DOUBLE) { + prompt("Value of Input F") + pp(TRUE) + } + field(G, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input G") + } + field(H, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input H") + } + field(I, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input I") + } + field(J, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input J") + } + field(K, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input K") + } + field(L, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input L") + } + field(AA, DBF_NOACCESS) { + pp(TRUE) + extra("double *aa") + prompt("Value of array input") + special(SPC_DBADDR) + asl(ASL0) + } + field(BB, DBF_NOACCESS) { + special(SPC_DBADDR) + prompt("Value of array input") + asl(ASL0) + extra("double *bb") + pp(TRUE) + } + field(CC, DBF_NOACCESS) { + extra("double *cc") + pp(TRUE) + asl(ASL0) + special(SPC_DBADDR) + prompt("Value of array input") + } + field(DD, DBF_NOACCESS) { + special(SPC_DBADDR) + prompt("Value of array input") + asl(ASL0) + extra("double *dd") + pp(TRUE) + } + field(EE, DBF_NOACCESS) { + special(SPC_DBADDR) + prompt("Value of array input") + asl(ASL0) + extra("double *ee") + pp(TRUE) + } + field(FF, DBF_NOACCESS) { + asl(ASL0) + prompt("Value of array input") + special(SPC_DBADDR) + pp(TRUE) + extra("double *ff") + } + field(GG, DBF_NOACCESS) { + prompt("Value of array input") + special(SPC_DBADDR) + asl(ASL0) + pp(TRUE) + extra("double *gg") + } + field(HH, DBF_NOACCESS) { + asl(ASL0) + prompt("Value of array input") + special(SPC_DBADDR) + pp(TRUE) + extra("double *hh") + } + field(II, DBF_NOACCESS) { + asl(ASL0) + special(SPC_DBADDR) + prompt("Value of array input") + extra("double *ii") + pp(TRUE) + } + field(JJ, DBF_NOACCESS) { + extra("double *jj") + pp(TRUE) + special(SPC_DBADDR) + prompt("Value of array input") + asl(ASL0) + } + field(KK, DBF_NOACCESS) { + extra("double *kk") + pp(TRUE) + asl(ASL0) + special(SPC_DBADDR) + prompt("Value of array input") + } + field(LL, DBF_NOACCESS) { + asl(ASL0) + special(SPC_DBADDR) + prompt("Value of array input") + extra("double *ll") + pp(TRUE) + } + field(PAA, DBF_NOACCESS) { + extra("double *paa") + prompt("Prev Val of array input") + asl(ASL0) + } + field(NEWM, DBF_ULONG) { + prompt("new array value mask") + special(SPC_NOMOD) + asl(ASL0) + } + field(OVAL, DBF_DOUBLE) { + prompt("Output Value") + asl(ASL0) + } + field(OAV, DBF_NOACCESS) { + pp(TRUE) + extra("double *oav") + asl(ASL0) + prompt("Output array value") + special(SPC_DBADDR) + } + field(POAV, DBF_NOACCESS) { + prompt("Output array value") + asl(ASL0) + pp(TRUE) + extra("double *poav") + } + field(PA, DBF_DOUBLE) { + prompt("Prev Value of A") + special(SPC_NOMOD) + interest(3) + } + field(PB, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of B") + } + field(PC, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of C") + } + field(PD, DBF_DOUBLE) { + prompt("Prev Value of D") + special(SPC_NOMOD) + interest(3) + } + field(PE, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of E") + } + field(PF, DBF_DOUBLE) { + prompt("Prev Value of F") + special(SPC_NOMOD) + interest(3) + } + field(PG, DBF_DOUBLE) { + prompt("Prev Value of G") + special(SPC_NOMOD) + interest(3) + } + field(PH, DBF_DOUBLE) { + prompt("Prev Value of H") + special(SPC_NOMOD) + interest(3) + } + field(PI, DBF_DOUBLE) { + prompt("Prev Value of I") + interest(3) + special(SPC_NOMOD) + } + field(PJ, DBF_DOUBLE) { + prompt("Prev Value of J") + special(SPC_NOMOD) + interest(3) + } + field(PK, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of K") + } + field(PL, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of L") + } + field(POVL, DBF_DOUBLE) { + asl(ASL0) + prompt("Prev Value of OVAL") + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(ALST, DBF_DOUBLE) { + prompt("Last Value Archived") + interest(3) + special(SPC_NOMOD) + } + field(MLST, DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(RPCL, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Reverse Polish Calc") + extra("unsigned char rpcl[282]") + } + field(ORPC, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Reverse Polish OCalc") + extra("unsigned char orpc[282]") + } + field(CACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Calc active") + } + field(CSTAT, DBF_LONG) { + prompt("Calc status") + special(SPC_NOMOD) + interest(1) + } + field(AMASK, DBF_ULONG) { + interest(1) + special(SPC_NOMOD) + prompt("Array mod") + } + field(SIZE, DBF_MENU) { + menu(acalcoutSIZE) + interest(1) + prompt("Array size reported to clients") + } + field(AMEM, DBF_LONG) { + prompt("Allocated array memory") + special(SPC_NOMOD) + interest(1) + } + field(PMEM, DBF_LONG) { + special(SPC_NOMOD) + interest(1) + prompt("Prev array memory") + } +} +device(acalcout, CONSTANT, devaCalcoutSoft, "Soft Channel") +recordtype(stringout) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + size(29) + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + } + field(SCAN, DBF_MENU) { + menu(menuScan) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + prompt("Force Processing") + interest(3) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + initial("UDF") + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + prompt("Alarm Ack Transient") + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + interest(4) + special(SPC_NOMOD) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + interest(2) + special(SPC_NOMOD) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup("20 - Scan") + interest(1) + } + field(VAL, DBF_STRING) { + pp(TRUE) + size(40) + asl(ASL0) + promptgroup("50 - Output") + prompt("Current Value") + } + field(OVAL, DBF_STRING) { + size(40) + prompt("Previous Value") + special(SPC_NOMOD) + interest(3) + } + field(DOL, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Desired Output Loc") + } + field(OMSL, DBF_MENU) { + prompt("Output Mode Select") + interest(1) + promptgroup("50 - Output") + menu(menuOmsl) + } + field(OUT, DBF_OUTLINK) { + prompt("Output Specification") + promptgroup("50 - Output") + interest(1) + } + field(MPST, DBF_MENU) { + interest(1) + promptgroup("80 - Display") + prompt("Post Value Monitors") + menu(stringoutPOST) + } + field(APST, DBF_MENU) { + menu(stringoutPOST) + prompt("Post Archive Monitors") + promptgroup("80 - Display") + interest(1) + } + field(SIOL, DBF_OUTLINK) { + prompt("Simulation Output Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + interest(1) + special(SPC_MOD) + prompt("Simulation Mode") + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + special(SPC_NOMOD) + interest(4) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + initial("65535") + promptgroup("90 - Simulate") + interest(1) + prompt("Sim. Mode Scan") + menu(menuScan) + } + field(SDLY, DBF_DOUBLE) { + interest(2) + promptgroup("90 - Simulate") + prompt("Sim. Mode Async Delay") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + prompt("Sim. Mode Private") + special(SPC_NOMOD) + interest(4) + extra("CALLBACK *simpvt") + } + field(IVOA, DBF_MENU) { + interest(2) + promptgroup("50 - Output") + prompt("INVALID output action") + menu(menuIvoa) + } + field(IVOV, DBF_STRING) { + promptgroup("50 - Output") + interest(2) + prompt("INVALID output value") + size(40) + } +} +device(stringout, CONSTANT, devSoSoft, "Soft Channel") +device(stringout, CONSTANT, devSoSoftCallback, "Async Soft Channel") +device(stringout, INST_IO, devSoStdio, "stdio") +device(stringout, INST_IO, asynSoOctetWrite, "asynOctetWrite") +device(stringout, INST_IO, devstringoutStream, "stream") +device(stringout, INST_IO, devSoStrParm, "asyn so stringParm") +device(stringout, INST_IO, devSoEurotherm, "asyn so Eurotherm") +device(stringout, INST_IO, devSoMPC, "asyn MPC") +recordtype(stringin) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + promptgroup("20 - Scan") + interest(1) + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + prompt("Alarm Ack Transient") + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + interest(1) + promptgroup("70 - Alarm") + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(2) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + interest(2) + special(SPC_NOMOD) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_STRING) { + asl(ASL0) + promptgroup("40 - Input") + prompt("Current Value") + pp(TRUE) + size(40) + } + field(OVAL, DBF_STRING) { + interest(3) + special(SPC_NOMOD) + prompt("Previous Value") + size(40) + } + field(INP, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input Specification") + } + field(MPST, DBF_MENU) { + menu(stringinPOST) + promptgroup("80 - Display") + interest(1) + prompt("Post Value Monitors") + } + field(APST, DBF_MENU) { + menu(stringinPOST) + interest(1) + promptgroup("80 - Display") + prompt("Post Archive Monitors") + } + field(SIOL, DBF_INLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Input Link") + } + field(SVAL, DBF_STRING) { + prompt("Simulation Value") + pp(TRUE) + size(40) + } + field(SIML, DBF_INLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Mode Link") + } + field(SIMM, DBF_MENU) { + interest(1) + special(SPC_MOD) + prompt("Simulation Mode") + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Simulation Mode Severity") + promptgroup("90 - Simulate") + interest(2) + } + field(OLDSIMM, DBF_MENU) { + menu(menuSimm) + prompt("Prev. Simulation Mode") + special(SPC_NOMOD) + interest(4) + } + field(SSCN, DBF_MENU) { + initial("65535") + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + menu(menuScan) + } + field(SDLY, DBF_DOUBLE) { + prompt("Sim. Mode Async Delay") + promptgroup("90 - Simulate") + interest(2) + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + prompt("Sim. Mode Private") + interest(4) + special(SPC_NOMOD) + extra("CALLBACK *simpvt") + } +} +device(stringin, CONSTANT, devSiSoft, "Soft Channel") +device(stringin, CONSTANT, devSiSoftCallback, "Async Soft Channel") +device(stringin, INST_IO, devTimestampSI, "Soft Timestamp") +device(stringin, INST_IO, devSiGeneralTime, "General Time") +device(stringin, INST_IO, devSiEnviron, "getenv") +device(stringin, INST_IO, asynSiOctetCmdResponse, "asynOctetCmdResponse") +device(stringin, INST_IO, asynSiOctetWriteRead, "asynOctetWriteRead") +device(stringin, INST_IO, asynSiOctetRead, "asynOctetRead") +device(stringin, INST_IO, devstringinStream, "stream") +device(stringin, INST_IO, devSiStrParm, "asyn si stringParm") +device(stringin, INST_IO, devSiMPC, "asyn MPC") +device(stringin, GPIB_IO, devSiGP307Gpib, "Vg307 GPIB Instrument") +device(stringin, INST_IO, devSiTPG261, "asyn TPG261") +recordtype(calc) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "postfix.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + } + field(PHAS, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Event Name") + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + promptgroup("20 - Scan") + interest(1) + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + special(SPC_NOMOD) + interest(4) + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + prompt("Alarm Ack Transient") + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + } + field(RSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_DOUBLE) { + asl(ASL0) + prompt("Result") + promptgroup("50 - Output") + } + field(CALC, DBF_STRING) { + pp(TRUE) + initial("0") + size(80) + prompt("Calculation") + promptgroup("30 - Action") + special(SPC_CALC) + } + field(INPA, DBF_INLINK) { + promptgroup("41 - Input A-F") + interest(1) + prompt("Input A") + } + field(INPB, DBF_INLINK) { + promptgroup("41 - Input A-F") + interest(1) + prompt("Input B") + } + field(INPC, DBF_INLINK) { + promptgroup("41 - Input A-F") + interest(1) + prompt("Input C") + } + field(INPD, DBF_INLINK) { + interest(1) + promptgroup("41 - Input A-F") + prompt("Input D") + } + field(INPE, DBF_INLINK) { + interest(1) + promptgroup("41 - Input A-F") + prompt("Input E") + } + field(INPF, DBF_INLINK) { + prompt("Input F") + interest(1) + promptgroup("41 - Input A-F") + } + field(INPG, DBF_INLINK) { + promptgroup("42 - Input G-L") + interest(1) + prompt("Input G") + } + field(INPH, DBF_INLINK) { + prompt("Input H") + interest(1) + promptgroup("42 - Input G-L") + } + field(INPI, DBF_INLINK) { + prompt("Input I") + interest(1) + promptgroup("42 - Input G-L") + } + field(INPJ, DBF_INLINK) { + prompt("Input J") + promptgroup("42 - Input G-L") + interest(1) + } + field(INPK, DBF_INLINK) { + interest(1) + promptgroup("42 - Input G-L") + prompt("Input K") + } + field(INPL, DBF_INLINK) { + interest(1) + promptgroup("42 - Input G-L") + prompt("Input L") + } + field(EGU, DBF_STRING) { + size(16) + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Engineering Units") + } + field(PREC, DBF_SHORT) { + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("Display Precision") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Rng") + promptgroup("80 - Display") + prop(YES) + interest(1) + } + field(LOPR, DBF_DOUBLE) { + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("Low Operating Range") + } + field(HIHI, DBF_DOUBLE) { + pp(TRUE) + prompt("Hihi Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + } + field(LOLO, DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + interest(1) + prop(YES) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(HIGH, DBF_DOUBLE) { + prompt("High Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(LOW, DBF_DOUBLE) { + pp(TRUE) + prompt("Low Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + } + field(HHSV, DBF_MENU) { + prompt("Hihi Severity") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(LLSV, DBF_MENU) { + pp(TRUE) + prompt("Lolo Severity") + interest(1) + prop(YES) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(HSV, DBF_MENU) { + pp(TRUE) + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("High Severity") + menu(menuAlarmSevr) + } + field(LSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Low Severity") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(AFTC, DBF_DOUBLE) { + promptgroup("70 - Alarm") + interest(1) + prompt("Alarm Filter Time Constant") + } + field(AFVL, DBF_DOUBLE) { + prompt("Alarm Filter Value") + interest(3) + special(SPC_NOMOD) + } + field(HYST, DBF_DOUBLE) { + promptgroup("70 - Alarm") + interest(1) + prompt("Alarm Deadband") + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup("80 - Display") + interest(1) + } + field(A, DBF_DOUBLE) { + prompt("Value of Input A") + pp(TRUE) + } + field(B, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input B") + } + field(C, DBF_DOUBLE) { + prompt("Value of Input C") + pp(TRUE) + } + field(D, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input D") + } + field(E, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input E") + } + field(F, DBF_DOUBLE) { + prompt("Value of Input F") + pp(TRUE) + } + field(G, DBF_DOUBLE) { + prompt("Value of Input G") + pp(TRUE) + } + field(H, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input H") + } + field(I, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input I") + } + field(J, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input J") + } + field(K, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input K") + } + field(L, DBF_DOUBLE) { + prompt("Value of Input L") + pp(TRUE) + } + field(LA, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of A") + } + field(LB, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of B") + } + field(LC, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of C") + } + field(LD, DBF_DOUBLE) { + prompt("Prev Value of D") + interest(3) + special(SPC_NOMOD) + } + field(LE, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of E") + } + field(LF, DBF_DOUBLE) { + prompt("Prev Value of F") + interest(3) + special(SPC_NOMOD) + } + field(LG, DBF_DOUBLE) { + prompt("Prev Value of G") + interest(3) + special(SPC_NOMOD) + } + field(LH, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of H") + } + field(LI, DBF_DOUBLE) { + prompt("Prev Value of I") + special(SPC_NOMOD) + interest(3) + } + field(LJ, DBF_DOUBLE) { + prompt("Prev Value of J") + special(SPC_NOMOD) + interest(3) + } + field(LK, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of K") + } + field(LL, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of L") + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(ALST, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Archived") + } + field(MLST, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Val Monitored") + } + field(RPCL, DBF_NOACCESS) { + extra("char rpcl[INFIX_TO_POSTFIX_SIZE(80)]") + special(SPC_NOMOD) + interest(4) + prompt("Reverse Polish Calc") + } +} +recordtype(calcout) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "dbScan.h" + %#include "postfix.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + size(29) + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + } + field(SCAN, DBF_MENU) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + interest(3) + prompt("Force Processing") + } + field(STAT, DBF_MENU) { + initial("UDF") + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + interest(1) + promptgroup("70 - Alarm") + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + interest(1) + special(SPC_NOMOD) + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + } + field(PPN, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + special(SPC_NOMOD) + interest(2) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(RPVT, DBF_NOACCESS) { + prompt("Record Private") + interest(4) + special(SPC_NOMOD) + extra("struct rpvtStruct *rpvt") + } + field(VAL, DBF_DOUBLE) { + asl(ASL0) + promptgroup("50 - Output") + prompt("Result") + } + field(PVAL, DBF_DOUBLE) { + prompt("Previous Value") + } + field(CALC, DBF_STRING) { + prompt("Calculation") + promptgroup("30 - Action") + special(SPC_CALC) + size(80) + initial("0") + pp(TRUE) + } + field(CLCV, DBF_LONG) { + prompt("CALC Valid") + interest(1) + } + field(INPA, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("41 - Input A-F") + prompt("Input A") + } + field(INPB, DBF_INLINK) { + prompt("Input B") + interest(1) + special(SPC_MOD) + promptgroup("41 - Input A-F") + } + field(INPC, DBF_INLINK) { + prompt("Input C") + interest(1) + special(SPC_MOD) + promptgroup("41 - Input A-F") + } + field(INPD, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("41 - Input A-F") + prompt("Input D") + } + field(INPE, DBF_INLINK) { + promptgroup("41 - Input A-F") + interest(1) + special(SPC_MOD) + prompt("Input E") + } + field(INPF, DBF_INLINK) { + interest(1) + promptgroup("41 - Input A-F") + special(SPC_MOD) + prompt("Input F") + } + field(INPG, DBF_INLINK) { + promptgroup("42 - Input G-L") + interest(1) + special(SPC_MOD) + prompt("Input G") + } + field(INPH, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("42 - Input G-L") + prompt("Input H") + } + field(INPI, DBF_INLINK) { + prompt("Input I") + promptgroup("42 - Input G-L") + interest(1) + special(SPC_MOD) + } + field(INPJ, DBF_INLINK) { + prompt("Input J") + special(SPC_MOD) + interest(1) + promptgroup("42 - Input G-L") + } + field(INPK, DBF_INLINK) { + prompt("Input K") + promptgroup("42 - Input G-L") + interest(1) + special(SPC_MOD) + } + field(INPL, DBF_INLINK) { + prompt("Input L") + interest(1) + promptgroup("42 - Input G-L") + special(SPC_MOD) + } + field(OUT, DBF_OUTLINK) { + interest(1) + special(SPC_MOD) + promptgroup("50 - Output") + prompt("Output Specification") + } + field(INAV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INPA PV Status") + menu(calcoutINAV) + initial("1") + } + field(INBV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("INPB PV Status") + menu(calcoutINAV) + } + field(INCV, DBF_MENU) { + menu(calcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INPC PV Status") + initial("1") + } + field(INDV, DBF_MENU) { + special(SPC_NOMOD) + interest(1) + prompt("INPD PV Status") + menu(calcoutINAV) + initial("1") + } + field(INEV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("INPE PV Status") + menu(calcoutINAV) + } + field(INFV, DBF_MENU) { + menu(calcoutINAV) + special(SPC_NOMOD) + interest(1) + prompt("INPF PV Status") + initial("1") + } + field(INGV, DBF_MENU) { + menu(calcoutINAV) + prompt("INPG PV Status") + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(INHV, DBF_MENU) { + prompt("INPH PV Status") + special(SPC_NOMOD) + interest(1) + menu(calcoutINAV) + initial("1") + } + field(INIV, DBF_MENU) { + initial("1") + menu(calcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INPI PV Status") + } + field(INJV, DBF_MENU) { + prompt("INPJ PV Status") + special(SPC_NOMOD) + interest(1) + menu(calcoutINAV) + initial("1") + } + field(INKV, DBF_MENU) { + menu(calcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("INPK PV Status") + initial("1") + } + field(INLV, DBF_MENU) { + initial("1") + prompt("INPL PV Status") + special(SPC_NOMOD) + interest(1) + menu(calcoutINAV) + } + field(OUTV, DBF_MENU) { + menu(calcoutINAV) + interest(1) + special(SPC_NOMOD) + prompt("OUT PV Status") + } + field(OOPT, DBF_MENU) { + menu(calcoutOOPT) + prompt("Output Execute Opt") + promptgroup("50 - Output") + interest(1) + } + field(ODLY, DBF_DOUBLE) { + asl(ASL0) + prompt("Output Execute Delay") + interest(1) + promptgroup("50 - Output") + } + field(DLYA, DBF_USHORT) { + asl(ASL0) + prompt("Output Delay Active") + special(SPC_NOMOD) + } + field(DOPT, DBF_MENU) { + prompt("Output Data Opt") + promptgroup("30 - Action") + interest(1) + menu(calcoutDOPT) + } + field(OCAL, DBF_STRING) { + prompt("Output Calculation") + promptgroup("30 - Action") + special(SPC_CALC) + initial("0") + size(80) + pp(TRUE) + } + field(OCLV, DBF_LONG) { + interest(1) + prompt("OCAL Valid") + } + field(OEVT, DBF_STRING) { + size(40) + prompt("Event To Issue") + special(SPC_MOD) + promptgroup("30 - Action") + asl(ASL0) + } + field(EPVT, DBF_NOACCESS) { + prompt("Event private") + interest(4) + special(SPC_NOMOD) + extra("EVENTPVT epvt") + } + field(IVOA, DBF_MENU) { + menu(menuIvoa) + promptgroup("50 - Output") + interest(2) + prompt("INVALID output action") + } + field(IVOV, DBF_DOUBLE) { + prompt("INVALID output value") + interest(2) + promptgroup("50 - Output") + } + field(EGU, DBF_STRING) { + size(16) + interest(1) + prop(YES) + promptgroup("80 - Display") + prompt("Engineering Units") + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Rng") + prop(YES) + promptgroup("80 - Display") + interest(1) + } + field(LOPR, DBF_DOUBLE) { + prompt("Low Operating Range") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(HIHI, DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(LOLO, DBF_DOUBLE) { + pp(TRUE) + prompt("Lolo Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(HIGH, DBF_DOUBLE) { + pp(TRUE) + prop(YES) + promptgroup("70 - Alarm") + interest(1) + prompt("High Alarm Limit") + } + field(LOW, DBF_DOUBLE) { + pp(TRUE) + prop(YES) + interest(1) + promptgroup("70 - Alarm") + prompt("Low Alarm Limit") + } + field(HHSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Hihi Severity") + interest(1) + prop(YES) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(LLSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("Lolo Severity") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(HSV, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("High Severity") + pp(TRUE) + } + field(LSV, DBF_MENU) { + pp(TRUE) + prop(YES) + interest(1) + promptgroup("70 - Alarm") + prompt("Low Severity") + menu(menuAlarmSevr) + } + field(HYST, DBF_DOUBLE) { + interest(1) + promptgroup("70 - Alarm") + prompt("Alarm Deadband") + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + promptgroup("80 - Display") + interest(1) + prompt("Monitor Deadband") + } + field(A, DBF_DOUBLE) { + prompt("Value of Input A") + pp(TRUE) + } + field(B, DBF_DOUBLE) { + prompt("Value of Input B") + pp(TRUE) + } + field(C, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input C") + } + field(D, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input D") + } + field(E, DBF_DOUBLE) { + prompt("Value of Input E") + pp(TRUE) + } + field(F, DBF_DOUBLE) { + prompt("Value of Input F") + pp(TRUE) + } + field(G, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input G") + } + field(H, DBF_DOUBLE) { + prompt("Value of Input H") + pp(TRUE) + } + field(I, DBF_DOUBLE) { + prompt("Value of Input I") + pp(TRUE) + } + field(J, DBF_DOUBLE) { + prompt("Value of Input J") + pp(TRUE) + } + field(K, DBF_DOUBLE) { + prompt("Value of Input K") + pp(TRUE) + } + field(L, DBF_DOUBLE) { + prompt("Value of Input L") + pp(TRUE) + } + field(OVAL, DBF_DOUBLE) { + prompt("Output Value") + asl(ASL0) + } + field(LA, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of A") + } + field(LB, DBF_DOUBLE) { + prompt("Prev Value of B") + interest(3) + special(SPC_NOMOD) + } + field(LC, DBF_DOUBLE) { + prompt("Prev Value of C") + interest(3) + special(SPC_NOMOD) + } + field(LD, DBF_DOUBLE) { + prompt("Prev Value of D") + special(SPC_NOMOD) + interest(3) + } + field(LE, DBF_DOUBLE) { + prompt("Prev Value of E") + interest(3) + special(SPC_NOMOD) + } + field(LF, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of F") + } + field(LG, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of G") + } + field(LH, DBF_DOUBLE) { + prompt("Prev Value of H") + special(SPC_NOMOD) + interest(3) + } + field(LI, DBF_DOUBLE) { + prompt("Prev Value of I") + interest(3) + special(SPC_NOMOD) + } + field(LJ, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of J") + } + field(LK, DBF_DOUBLE) { + prompt("Prev Value of K") + interest(3) + special(SPC_NOMOD) + } + field(LL, DBF_DOUBLE) { + prompt("Prev Value of L") + special(SPC_NOMOD) + interest(3) + } + field(POVL, DBF_DOUBLE) { + prompt("Prev Value of OVAL") + asl(ASL0) + } + field(LALM, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Alarmed") + } + field(ALST, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Last Value Archived") + } + field(MLST, DBF_DOUBLE) { + prompt("Last Val Monitored") + interest(3) + special(SPC_NOMOD) + } + field(RPCL, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Reverse Polish Calc") + extra("char rpcl[INFIX_TO_POSTFIX_SIZE(80)]") + } + field(ORPC, DBF_NOACCESS) { + extra("char orpc[INFIX_TO_POSTFIX_SIZE(80)]") + prompt("Reverse Polish OCalc") + interest(4) + special(SPC_NOMOD) + } +} +device(calcout, CONSTANT, devCalcoutSoft, "Soft Channel") +device(calcout, CONSTANT, devCalcoutSoftCallback, "Async Soft Channel") +device(calcout, INST_IO, devcalcoutStream, "stream") +recordtype(histogram) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + } + field(PHAS, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + special(SPC_NOMOD) + interest(4) + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + interest(3) + prompt("Force Processing") + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + initial("UDF") + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + initial("YES") + prompt("Alarm Ack Transient") + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(2) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + interest(1) + special(SPC_NOMOD) + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + interest(4) + special(SPC_NOMOD) + } + field(SPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + interest(4) + special(SPC_NOMOD) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + } + field(LSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + prompt("Time") + interest(2) + special(SPC_NOMOD) + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup("20 - Scan") + interest(1) + } + field(VAL, DBF_NOACCESS) { + extra("void * val") + asl(ASL0) + special(SPC_DBADDR) + prompt("Value") + } + field(NELM, DBF_USHORT) { + prompt("Num of Array Elements") + special(SPC_NOMOD) + interest(1) + promptgroup("30 - Action") + initial("1") + } + field(CSTA, DBF_SHORT) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("Collection Status") + } + field(CMD, DBF_MENU) { + prompt("Collection Control") + interest(1) + special(SPC_CALC) + menu(histogramCMD) + asl(ASL0) + } + field(ULIM, DBF_DOUBLE) { + interest(1) + prop(YES) + special(SPC_RESET) + promptgroup("30 - Action") + prompt("Upper Signal Limit") + } + field(LLIM, DBF_DOUBLE) { + prompt("Lower Signal Limit ") + prop(YES) + interest(1) + special(SPC_RESET) + promptgroup("30 - Action") + } + field(WDTH, DBF_DOUBLE) { + prompt("Element Width") + interest(3) + special(SPC_NOMOD) + } + field(SGNL, DBF_DOUBLE) { + special(SPC_MOD) + prompt("Signal Value") + } + field(PREC, DBF_SHORT) { + interest(1) + prop(YES) + promptgroup("80 - Display") + prompt("Display Precision") + } + field(SVL, DBF_INLINK) { + prompt("Signal Value Location") + promptgroup("40 - Input") + interest(1) + } + field(BPTR, DBF_NOACCESS) { + extra("epicsUInt32 *bptr") + interest(4) + special(SPC_NOMOD) + prompt("Buffer Pointer") + } + field(WDOG, DBF_NOACCESS) { + extra("void * wdog") + interest(4) + special(SPC_NOMOD) + prompt("Watchdog callback") + } + field(MDEL, DBF_SHORT) { + prompt("Monitor Count Deadband") + promptgroup("80 - Display") + interest(1) + } + field(MCNT, DBF_SHORT) { + interest(3) + special(SPC_NOMOD) + prompt("Counts Since Monitor") + } + field(SDEL, DBF_DOUBLE) { + prompt("Monitor Seconds Dband") + special(SPC_RESET) + interest(1) + promptgroup("80 - Display") + } + field(SIOL, DBF_INLINK) { + prompt("Simulation Input Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SVAL, DBF_DOUBLE) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SIMM, DBF_MENU) { + prompt("Simulation Mode") + interest(1) + special(SPC_MOD) + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + prompt("Sim. Mode Scan") + promptgroup("90 - Simulate") + interest(1) + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + promptgroup("90 - Simulate") + interest(2) + prompt("Sim. Mode Async Delay") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + special(SPC_NOMOD) + interest(4) + prompt("Sim. Mode Private") + } + field(HOPR, DBF_ULONG) { + prompt("High Operating Range") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(LOPR, DBF_ULONG) { + promptgroup("80 - Display") + prop(YES) + interest(1) + prompt("Low Operating Range") + } +} +device(histogram, CONSTANT, devHistogramSoft, "Soft Channel") +recordtype(mbbiDirect) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(PINI, DBF_MENU) { + menu(menuPini) + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + prompt("Disable Value") + promptgroup("20 - Scan") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + promptgroup("20 - Scan") + interest(1) + } + field(MLOK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + } + field(NSEV, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + initial("YES") + prompt("Alarm Ack Transient") + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + interest(2) + special(SPC_NOMOD) + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_LONG) { + pp(TRUE) + prompt("Current Value") + promptgroup("40 - Input") + asl(ASL0) + } + field(NOBT, DBF_SHORT) { + interest(1) + promptgroup("40 - Input") + special(SPC_NOMOD) + prompt("Number of Bits") + } + field(INP, DBF_INLINK) { + prompt("Input Specification") + promptgroup("40 - Input") + interest(1) + } + field(RVAL, DBF_ULONG) { + pp(TRUE) + prompt("Raw Value") + } + field(ORAW, DBF_ULONG) { + prompt("Prev Raw Value") + interest(3) + special(SPC_NOMOD) + } + field(MASK, DBF_ULONG) { + special(SPC_NOMOD) + interest(1) + prompt("Hardware Mask") + } + field(MLST, DBF_LONG) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Monitored") + } + field(SHFT, DBF_USHORT) { + prompt("Shift") + interest(1) + promptgroup("40 - Input") + } + field(SIOL, DBF_INLINK) { + prompt("Simulation Input Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SVAL, DBF_LONG) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + prompt("Simulation Mode") + special(SPC_MOD) + interest(1) + menu(menuSimm) + } + field(SIMS, DBF_MENU) { + interest(2) + promptgroup("90 - Simulate") + prompt("Simulation Mode Severity") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + initial("65535") + menu(menuScan) + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + } + field(SDLY, DBF_DOUBLE) { + prompt("Sim. Mode Async Delay") + interest(2) + promptgroup("90 - Simulate") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + interest(4) + special(SPC_NOMOD) + prompt("Sim. Mode Private") + } + field(B0, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 0") + } + field(B1, DBF_UCHAR) { + prompt("Bit 1") + interest(1) + pp(TRUE) + } + field(B2, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 2") + } + field(B3, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 3") + interest(1) + } + field(B4, DBF_UCHAR) { + prompt("Bit 4") + interest(1) + pp(TRUE) + } + field(B5, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 5") + interest(1) + } + field(B6, DBF_UCHAR) { + interest(1) + prompt("Bit 6") + pp(TRUE) + } + field(B7, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 7") + } + field(B8, DBF_UCHAR) { + interest(1) + prompt("Bit 8") + pp(TRUE) + } + field(B9, DBF_UCHAR) { + prompt("Bit 9") + interest(1) + pp(TRUE) + } + field(BA, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 10") + } + field(BB, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 11") + } + field(BC, DBF_UCHAR) { + prompt("Bit 12") + interest(1) + pp(TRUE) + } + field(BD, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 13") + interest(1) + } + field(BE, DBF_UCHAR) { + interest(1) + prompt("Bit 14") + pp(TRUE) + } + field(BF, DBF_UCHAR) { + prompt("Bit 15") + interest(1) + pp(TRUE) + } + field(B10, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 16") + } + field(B11, DBF_UCHAR) { + prompt("Bit 17") + interest(1) + pp(TRUE) + } + field(B12, DBF_UCHAR) { + prompt("Bit 18") + interest(1) + pp(TRUE) + } + field(B13, DBF_UCHAR) { + prompt("Bit 19") + interest(1) + pp(TRUE) + } + field(B14, DBF_UCHAR) { + interest(1) + prompt("Bit 20") + pp(TRUE) + } + field(B15, DBF_UCHAR) { + prompt("Bit 21") + interest(1) + pp(TRUE) + } + field(B16, DBF_UCHAR) { + interest(1) + prompt("Bit 22") + pp(TRUE) + } + field(B17, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 23") + } + field(B18, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 24") + } + field(B19, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 25") + } + field(B1A, DBF_UCHAR) { + prompt("Bit 26") + interest(1) + pp(TRUE) + } + field(B1B, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 27") + } + field(B1C, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 28") + interest(1) + } + field(B1D, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 29") + interest(1) + } + field(B1E, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 30") + interest(1) + } + field(B1F, DBF_UCHAR) { + pp(TRUE) + interest(1) + prompt("Bit 31") + } +} +device(mbbiDirect, CONSTANT, devMbbiDirectSoft, "Soft Channel") +device(mbbiDirect, CONSTANT, devMbbiDirectSoftRaw, "Raw Soft Channel") +device(mbbiDirect, CONSTANT, devMbbiDirectSoftCallback, "Async Soft Channel") +device(mbbiDirect, INST_IO, asynMbbiDirectUInt32Digital, "asynUInt32Digital") +device(mbbiDirect, INST_IO, devmbbiDirectStream, "stream") +recordtype(event) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "dbScan.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + prompt("Scan Mechanism") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + } + field(PHAS, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + } + field(DISS, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + interest(4) + special(SPC_NOMOD) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + } + field(UDFS, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + interest(2) + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup("20 - Scan") + interest(1) + } + field(VAL, DBF_STRING) { + size(40) + asl(ASL0) + promptgroup("40 - Input") + special(SPC_MOD) + prompt("Event Name To Post") + } + field(EPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Event private") + extra("EVENTPVT epvt") + } + field(INP, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input Specification") + } + field(SIOL, DBF_INLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Input Link") + } + field(SVAL, DBF_STRING) { + size(40) + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Mode Link") + } + field(SIMM, DBF_MENU) { + special(SPC_MOD) + interest(1) + prompt("Simulation Mode") + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + promptgroup("90 - Simulate") + interest(2) + prompt("Simulation Mode Severity") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + special(SPC_NOMOD) + interest(4) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + promptgroup("90 - Simulate") + interest(1) + prompt("Sim. Mode Scan") + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + interest(2) + promptgroup("90 - Simulate") + prompt("Sim. Mode Async Delay") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + prompt("Sim. Mode Private") + interest(4) + special(SPC_NOMOD) + } +} +device(event, CONSTANT, devEventSoft, "Soft Channel") +recordtype(subArray) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + } + field(PHAS, DBF_SHORT) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + promptgroup("10 - Common") + interest(1) + } + field(DISV, DBF_SHORT) { + prompt("Disable Value") + promptgroup("20 - Scan") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + interest(3) + prompt("Force Processing") + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + prompt("New Alarm Status") + interest(2) + special(SPC_NOMOD) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + menu(menuYesNo) + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(LCNT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(2) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + interest(2) + special(SPC_NOMOD) + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_NOACCESS) { + prompt("Value") + special(SPC_DBADDR) + asl(ASL0) + pp(TRUE) + extra("void * val") + } + field(PREC, DBF_SHORT) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Display Precision") + } + field(FTVL, DBF_MENU) { + promptgroup("30 - Action") + interest(1) + special(SPC_NOMOD) + prompt("Field Type of Value") + menu(menuFtype) + } + field(INP, DBF_INLINK) { + prompt("Input Specification") + promptgroup("40 - Input") + interest(1) + } + field(EGU, DBF_STRING) { + size(16) + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Engineering Units") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Range") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(LOPR, DBF_DOUBLE) { + prompt("Low Operating Range") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(MALM, DBF_ULONG) { + promptgroup("30 - Action") + interest(1) + special(SPC_NOMOD) + prompt("Maximum Elements") + initial("1") + } + field(NELM, DBF_ULONG) { + promptgroup("30 - Action") + prompt("Number of Elements") + initial("1") + pp(TRUE) + } + field(INDX, DBF_ULONG) { + promptgroup("30 - Action") + prompt("Substring Index") + pp(TRUE) + } + field(BUSY, DBF_SHORT) { + special(SPC_NOMOD) + prompt("Busy Indicator") + } + field(NORD, DBF_LONG) { + special(SPC_NOMOD) + prompt("Number elements read") + } + field(BPTR, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Buffer Pointer") + extra("void * bptr") + } +} +device(subArray, CONSTANT, devSASoft, "Soft Channel") +recordtype(lsi) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "devSup.h" + % + %/* Declare Device Support Entry Table */ + %typedef struct lsidset { + % long number; + % DEVSUPFUN report; + % DEVSUPFUN init; + % DEVSUPFUN init_record; + % DEVSUPFUN get_ioint_info; + % DEVSUPFUN read_string; + %} lsidset; + % + %#include "callback.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + interest(3) + prompt("Force Processing") + } + field(STAT, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + prompt("New Alarm Status") + interest(2) + special(SPC_NOMOD) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + initial("YES") + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + } + field(PPN, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + } + field(DPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_NOACCESS) { + asl(ASL0) + prompt("Current Value") + special(SPC_DBADDR) + pp(TRUE) + extra("char *val") + } + field(OVAL, DBF_NOACCESS) { + extra("char *oval") + special(SPC_DBADDR) + interest(3) + prompt("Old Value") + } + field(SIZV, DBF_USHORT) { + initial("41") + prompt("Size of buffers") + promptgroup("40 - Input") + interest(1) + special(SPC_NOMOD) + } + field(LEN, DBF_ULONG) { + prompt("Length of VAL") + special(SPC_NOMOD) + } + field(OLEN, DBF_ULONG) { + prompt("Length of OVAL") + special(SPC_NOMOD) + } + field(INP, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input Specification") + } + field(MPST, DBF_MENU) { + interest(1) + promptgroup("80 - Display") + prompt("Post Value Monitors") + menu(menuPost) + } + field(APST, DBF_MENU) { + menu(menuPost) + promptgroup("80 - Display") + interest(1) + prompt("Post Archive Monitors") + } + field(SIML, DBF_INLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Mode Link") + } + field(SIMM, DBF_MENU) { + prompt("Simulation Mode") + interest(1) + special(SPC_MOD) + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + interest(2) + promptgroup("90 - Simulate") + prompt("Simulation Mode Severity") + menu(menuAlarmSevr) + } + field(SIOL, DBF_INLINK) { + prompt("Simulation Input Link") + promptgroup("90 - Simulate") + interest(1) + } + field(OLDSIMM, DBF_MENU) { + menu(menuSimm) + special(SPC_NOMOD) + interest(4) + prompt("Prev. Simulation Mode") + } + field(SSCN, DBF_MENU) { + menu(menuScan) + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + prompt("Sim. Mode Async Delay") + interest(2) + promptgroup("90 - Simulate") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + special(SPC_NOMOD) + interest(4) + prompt("Sim. Mode Private") + } +} +device(lsi, CONSTANT, devLsiSoft, "Soft Channel") +device(lsi, INST_IO, devLsiEnviron, "getenv") +recordtype(bo) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + } + field(PHAS, DBF_SHORT) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + prompt("Disable Value") + promptgroup("20 - Scan") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + interest(3) + prompt("Force Processing") + } + field(STAT, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + prompt("Alarm Ack Transient") + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(2) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + interest(1) + special(SPC_NOMOD) + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + } + field(UDF, DBF_UCHAR) { + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_ENUM) { + asl(ASL0) + prompt("Current Value") + promptgroup("50 - Output") + pp(TRUE) + } + field(OMSL, DBF_MENU) { + interest(1) + promptgroup("50 - Output") + prompt("Output Mode Select") + menu(menuOmsl) + } + field(DOL, DBF_INLINK) { + interest(1) + promptgroup("40 - Input") + prompt("Desired Output Loc") + } + field(OUT, DBF_OUTLINK) { + prompt("Output Specification") + promptgroup("50 - Output") + interest(1) + } + field(HIGH, DBF_DOUBLE) { + promptgroup("30 - Action") + interest(1) + prompt("Seconds to Hold High") + } + field(ZNAM, DBF_STRING) { + size(26) + pp(TRUE) + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("Zero Name") + } + field(ONAM, DBF_STRING) { + pp(TRUE) + size(26) + prompt("One Name") + promptgroup("80 - Display") + prop(YES) + interest(1) + } + field(RVAL, DBF_ULONG) { + pp(TRUE) + prompt("Raw Value") + } + field(ORAW, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("prev Raw Value") + } + field(MASK, DBF_ULONG) { + special(SPC_NOMOD) + interest(1) + prompt("Hardware Mask") + } + field(RPVT, DBF_NOACCESS) { + extra("void * rpvt") + prompt("Record Private") + special(SPC_NOMOD) + interest(4) + } + field(WDPT, DBF_NOACCESS) { + extra("void * wdpt") + interest(4) + special(SPC_NOMOD) + prompt("Watch Dog Timer ID") + } + field(ZSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Zero Error Severity") + } + field(OSV, DBF_MENU) { + pp(TRUE) + prompt("One Error Severity") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(COSV, DBF_MENU) { + prompt("Change of State Sevr") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + pp(TRUE) + } + field(RBV, DBF_ULONG) { + prompt("Readback Value") + special(SPC_NOMOD) + } + field(ORBV, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Readback Value") + } + field(MLST, DBF_USHORT) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Monitored") + } + field(LALM, DBF_USHORT) { + interest(3) + special(SPC_NOMOD) + prompt("Last Value Alarmed") + } + field(SIOL, DBF_OUTLINK) { + prompt("Simulation Output Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIML, DBF_INLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Mode Link") + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + special(SPC_MOD) + interest(1) + prompt("Simulation Mode") + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("90 - Simulate") + interest(2) + prompt("Simulation Mode Severity") + } + field(OLDSIMM, DBF_MENU) { + special(SPC_NOMOD) + interest(4) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + menu(menuScan) + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + prompt("Sim. Mode Async Delay") + interest(2) + promptgroup("90 - Simulate") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + special(SPC_NOMOD) + interest(4) + prompt("Sim. Mode Private") + } + field(IVOA, DBF_MENU) { + prompt("INVALID outpt action") + promptgroup("50 - Output") + interest(2) + menu(menuIvoa) + } + field(IVOV, DBF_USHORT) { + prompt("INVALID output value") + promptgroup("50 - Output") + interest(2) + } +} +device(bo, CONSTANT, devBoSoft, "Soft Channel") +device(bo, CONSTANT, devBoSoftRaw, "Raw Soft Channel") +device(bo, CONSTANT, devBoSoftCallback, "Async Soft Channel") +device(bo, INST_IO, devBoGeneralTime, "General Time") +device(bo, INST_IO, devBoDbState, "Db State") +device(bo, INST_IO, asynBoInt32, "asynInt32") +device(bo, INST_IO, asynBoUInt32Digital, "asynUInt32Digital") +device(bo, INST_IO, devboStream, "stream") +device(bo, INST_IO, devBoStrParm, "asyn bo stringParm") +device(bo, INST_IO, devBoMPC, "asyn MPC") +device(bo, GPIB_IO, devBoGP307Gpib, "Vg307 GPIB Instrument") +device(bo, BBGPIB_IO, devBoAX301, "PZT Bug") +device(bo, INST_IO, devBoTPG261, "asyn TPG261") +recordtype(permissive) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + } + field(PHAS, DBF_SHORT) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + initial("UDF") + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + interest(4) + special(SPC_NOMOD) + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + prompt("Time") + interest(2) + special(SPC_NOMOD) + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(LABL, DBF_STRING) { + interest(1) + promptgroup("80 - Display") + prompt("Button Label") + pp(TRUE) + size(20) + } + field(VAL, DBF_USHORT) { + promptgroup("40 - Input") + prompt("Status") + asl(ASL0) + pp(TRUE) + } + field(OVAL, DBF_USHORT) { + special(SPC_NOMOD) + interest(3) + prompt("Old Status") + } + field(WFLG, DBF_USHORT) { + pp(TRUE) + prompt("Wait Flag") + } + field(OFLG, DBF_USHORT) { + prompt("Old Flag") + special(SPC_NOMOD) + interest(3) + } +} +recordtype(state) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + interest(1) + promptgroup("20 - Scan") + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + } + field(EVNT, DBF_STRING) { + size(40) + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Event Name") + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + promptgroup("10 - Common") + interest(1) + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + } + field(MLIS, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + prompt("Alarm Ack Transient") + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + interest(1) + promptgroup("70 - Alarm") + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + interest(1) + special(SPC_NOMOD) + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_STRING) { + asl(ASL0) + prompt("Value") + promptgroup("40 - Input") + pp(TRUE) + size(20) + } + field(OVAL, DBF_STRING) { + size(20) + special(SPC_NOMOD) + interest(3) + prompt("Prev Value") + } +} +recordtype(longin) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + menu(menuPini) + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup("20 - Scan") + interest(1) + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + initial("UDF") + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + prompt("Alarm Ack Transient") + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + interest(1) + promptgroup("70 - Alarm") + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + } + field(PRIO, DBF_MENU) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup("20 - Scan") + interest(1) + } + field(VAL, DBF_LONG) { + prompt("Current value") + promptgroup("40 - Input") + asl(ASL0) + pp(TRUE) + } + field(INP, DBF_INLINK) { + prompt("Input Specification") + interest(1) + promptgroup("40 - Input") + } + field(EGU, DBF_STRING) { + prompt("Engineering Units") + prop(YES) + interest(1) + promptgroup("80 - Display") + size(16) + } + field(HOPR, DBF_LONG) { + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("High Operating Range") + } + field(LOPR, DBF_LONG) { + prompt("Low Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(HIHI, DBF_LONG) { + pp(TRUE) + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("Hihi Alarm Limit") + } + field(LOLO, DBF_LONG) { + prop(YES) + interest(1) + promptgroup("70 - Alarm") + prompt("Lolo Alarm Limit") + pp(TRUE) + } + field(HIGH, DBF_LONG) { + pp(TRUE) + prop(YES) + promptgroup("70 - Alarm") + interest(1) + prompt("High Alarm Limit") + } + field(LOW, DBF_LONG) { + pp(TRUE) + prompt("Low Alarm Limit") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + } + field(HHSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("Hihi Severity") + promptgroup("70 - Alarm") + interest(1) + } + field(LLSV, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Lolo Severity") + pp(TRUE) + } + field(HSV, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("High Severity") + pp(TRUE) + } + field(LSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Severity") + } + field(HYST, DBF_LONG) { + interest(1) + promptgroup("70 - Alarm") + prompt("Alarm Deadband") + } + field(AFTC, DBF_DOUBLE) { + interest(1) + promptgroup("70 - Alarm") + prompt("Alarm Filter Time Constant") + } + field(AFVL, DBF_DOUBLE) { + prompt("Alarm Filter Value") + interest(3) + special(SPC_NOMOD) + } + field(ADEL, DBF_LONG) { + promptgroup("80 - Display") + interest(1) + prompt("Archive Deadband") + } + field(MDEL, DBF_LONG) { + prompt("Monitor Deadband") + interest(1) + promptgroup("80 - Display") + } + field(LALM, DBF_LONG) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(ALST, DBF_LONG) { + interest(3) + special(SPC_NOMOD) + prompt("Last Value Archived") + } + field(MLST, DBF_LONG) { + interest(3) + special(SPC_NOMOD) + prompt("Last Val Monitored") + } + field(SIOL, DBF_INLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Input Link") + } + field(SVAL, DBF_LONG) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + prompt("Simulation Mode") + interest(1) + special(SPC_MOD) + } + field(SIMS, DBF_MENU) { + interest(2) + promptgroup("90 - Simulate") + prompt("Simulation Mode Severity") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + special(SPC_NOMOD) + interest(4) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + initial("65535") + promptgroup("90 - Simulate") + interest(1) + prompt("Sim. Mode Scan") + menu(menuScan) + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + promptgroup("90 - Simulate") + interest(2) + prompt("Sim. Mode Async Delay") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + prompt("Sim. Mode Private") + interest(4) + special(SPC_NOMOD) + } +} +device(longin, CONSTANT, devLiSoft, "Soft Channel") +device(longin, CONSTANT, devLiSoftCallback, "Async Soft Channel") +device(longin, INST_IO, devLiGeneralTime, "General Time") +device(longin, INST_IO, asynLiInt32, "asynInt32") +device(longin, INST_IO, asynLiUInt32Digital, "asynUInt32Digital") +device(longin, INST_IO, devlonginStream, "stream") +device(longin, INST_IO, devLiStrParm, "asyn li stringParm") +recordtype(waveform) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + interest(1) + promptgroup("20 - Scan") + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + prompt("Disable Value") + promptgroup("20 - Scan") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + interest(2) + } + field(ACKT, DBF_MENU) { + menu(menuYesNo) + prompt("Alarm Ack Transient") + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + initial("YES") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + special(SPC_NOMOD) + interest(2) + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_NOACCESS) { + asl(ASL0) + special(SPC_DBADDR) + prompt("Value") + extra("void * val") + pp(TRUE) + } + field(RARM, DBF_SHORT) { + pp(TRUE) + interest(1) + promptgroup("30 - Action") + prompt("Rearm the waveform") + } + field(PREC, DBF_SHORT) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Display Precision") + } + field(INP, DBF_INLINK) { + prompt("Input Specification") + interest(1) + promptgroup("40 - Input") + } + field(EGU, DBF_STRING) { + prompt("Engineering Units") + promptgroup("80 - Display") + prop(YES) + interest(1) + size(16) + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(LOPR, DBF_DOUBLE) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Low Operating Range") + } + field(NELM, DBF_ULONG) { + initial("1") + prompt("Number of Elements") + interest(1) + special(SPC_NOMOD) + promptgroup("30 - Action") + } + field(FTVL, DBF_MENU) { + prompt("Field Type of Value") + promptgroup("30 - Action") + interest(1) + special(SPC_NOMOD) + menu(menuFtype) + } + field(BUSY, DBF_SHORT) { + special(SPC_NOMOD) + prompt("Busy Indicator") + } + field(NORD, DBF_ULONG) { + prompt("Number elements read") + special(SPC_NOMOD) + } + field(BPTR, DBF_NOACCESS) { + extra("void * bptr") + special(SPC_NOMOD) + interest(4) + prompt("Buffer Pointer") + } + field(SIOL, DBF_INLINK) { + prompt("Simulation Input Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + interest(1) + special(SPC_MOD) + prompt("Simulation Mode") + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("90 - Simulate") + interest(2) + prompt("Simulation Mode Severity") + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + interest(4) + special(SPC_NOMOD) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + initial("65535") + menu(menuScan) + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + prompt("Sim. Mode Async Delay") + interest(2) + promptgroup("90 - Simulate") + } + field(SIMPVT, DBF_NOACCESS) { + prompt("Sim. Mode Private") + interest(4) + special(SPC_NOMOD) + extra("CALLBACK *simpvt") + } + field(MPST, DBF_MENU) { + prompt("Post Value Monitors") + promptgroup("80 - Display") + interest(1) + menu(waveformPOST) + } + field(APST, DBF_MENU) { + prompt("Post Archive Monitors") + promptgroup("80 - Display") + interest(1) + menu(waveformPOST) + } + field(HASH, DBF_ULONG) { + prompt("Hash of OnChange data.") + interest(3) + } +} +device(waveform, CONSTANT, devWfSoft, "Soft Channel") +device(waveform, INST_IO, asynWfOctetCmdResponse, "asynOctetCmdResponse") +device(waveform, INST_IO, asynWfOctetWriteRead, "asynOctetWriteRead") +device(waveform, INST_IO, asynWfOctetRead, "asynOctetRead") +device(waveform, INST_IO, asynWfOctetWrite, "asynOctetWrite") +device(waveform, INST_IO, asynWfOctetWriteBinary, "asynOctetWriteBinary") +device(waveform, INST_IO, asynInt8ArrayWfIn, "asynInt8ArrayIn") +device(waveform, INST_IO, asynInt8ArrayWfOut, "asynInt8ArrayOut") +device(waveform, INST_IO, asynInt16ArrayWfIn, "asynInt16ArrayIn") +device(waveform, INST_IO, asynInt16ArrayWfOut, "asynInt16ArrayOut") +device(waveform, INST_IO, asynInt32ArrayWfIn, "asynInt32ArrayIn") +device(waveform, INST_IO, asynInt32ArrayWfOut, "asynInt32ArrayOut") +device(waveform, INST_IO, asynInt32TimeSeries, "asynInt32TimeSeries") +device(waveform, INST_IO, asynFloat32ArrayWfIn, "asynFloat32ArrayIn") +device(waveform, INST_IO, asynFloat32ArrayWfOut, "asynFloat32ArrayOut") +device(waveform, INST_IO, asynFloat64ArrayWfIn, "asynFloat64ArrayIn") +device(waveform, INST_IO, asynFloat64ArrayWfOut, "asynFloat64ArrayOut") +device(waveform, INST_IO, asynFloat64TimeSeries, "asynFloat64TimeSeries") +device(waveform, INST_IO, devwaveformStream, "stream") +recordtype(int64out) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + prompt("Scan Mechanism") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + interest(1) + promptgroup("20 - Scan") + prompt("Process at iocInit") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + prompt("Disable Value") + promptgroup("20 - Scan") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + prompt("New Alarm Status") + interest(2) + special(SPC_NOMOD) + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + prompt("Alarm Ack Transient") + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + special(SPC_NOMOD) + interest(4) + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + initial("1") + pp(TRUE) + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + special(SPC_NOMOD) + interest(2) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_INT64) { + promptgroup("50 - Output") + prompt("Desired Output") + asl(ASL0) + pp(TRUE) + } + field(OUT, DBF_OUTLINK) { + promptgroup("50 - Output") + interest(1) + prompt("Output Specification") + } + field(DOL, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Desired Output Loc") + } + field(OMSL, DBF_MENU) { + menu(menuOmsl) + promptgroup("50 - Output") + interest(1) + prompt("Output Mode Select") + } + field(EGU, DBF_STRING) { + prompt("Units name") + prop(YES) + promptgroup("80 - Display") + interest(1) + size(16) + } + field(DRVH, DBF_INT64) { + pp(TRUE) + interest(1) + prop(YES) + promptgroup("30 - Action") + prompt("Drive High Limit") + } + field(DRVL, DBF_INT64) { + prompt("Drive Low Limit") + promptgroup("30 - Action") + prop(YES) + interest(1) + pp(TRUE) + } + field(HOPR, DBF_INT64) { + prompt("High Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(LOPR, DBF_INT64) { + interest(1) + prop(YES) + promptgroup("80 - Display") + prompt("Low Operating Range") + } + field(HIHI, DBF_INT64) { + pp(TRUE) + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("Hihi Alarm Limit") + } + field(LOLO, DBF_INT64) { + prompt("Lolo Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(HIGH, DBF_INT64) { + prompt("High Alarm Limit") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + pp(TRUE) + } + field(LOW, DBF_INT64) { + pp(TRUE) + prompt("Low Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + } + field(HHSV, DBF_MENU) { + pp(TRUE) + interest(1) + promptgroup("70 - Alarm") + prompt("Hihi Severity") + menu(menuAlarmSevr) + } + field(LLSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Lolo Severity") + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(HSV, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("High Severity") + pp(TRUE) + } + field(LSV, DBF_MENU) { + pp(TRUE) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Severity") + menu(menuAlarmSevr) + } + field(HYST, DBF_INT64) { + promptgroup("70 - Alarm") + interest(1) + prompt("Alarm Deadband") + } + field(ADEL, DBF_INT64) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_INT64) { + promptgroup("80 - Display") + interest(1) + prompt("Monitor Deadband") + } + field(LALM, DBF_INT64) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST, DBF_INT64) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST, DBF_INT64) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(SIOL, DBF_OUTLINK) { + prompt("Simulation Output Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIML, DBF_INLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Mode Link") + } + field(SIMM, DBF_MENU) { + prompt("Simulation Mode") + special(SPC_MOD) + interest(1) + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + promptgroup("90 - Simulate") + interest(2) + prompt("Sim. Mode Async Delay") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + prompt("Sim. Mode Private") + special(SPC_NOMOD) + interest(4) + } + field(IVOA, DBF_MENU) { + prompt("INVALID output action") + promptgroup("50 - Output") + interest(2) + menu(menuIvoa) + } + field(IVOV, DBF_INT64) { + prompt("INVALID output value") + interest(2) + promptgroup("50 - Output") + } +} +device(int64out, CONSTANT, devI64outSoft, "Soft Channel") +device(int64out, CONSTANT, devI64outSoftCallback, "Async Soft Channel") +recordtype(aSub) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %struct aSubRecord; + field(NAME, DBF_STRING) { + special(SPC_NOMOD) + prompt("Record Name") + size(61) + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup("20 - Scan") + interest(1) + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + promptgroup("20 - Scan") + interest(1) + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + } + field(NSEV, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + interest(4) + special(SPC_NOMOD) + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + interest(4) + special(SPC_NOMOD) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + interest(4) + special(SPC_NOMOD) + prompt("Device Private") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup("20 - Scan") + interest(1) + } + field(VAL, DBF_LONG) { + prompt("Subr. return value") + asl(ASL0) + } + field(OVAL, DBF_LONG) { + interest(3) + special(SPC_NOMOD) + prompt("Old return value") + } + field(INAM, DBF_STRING) { + size(41) + special(SPC_NOMOD) + interest(1) + promptgroup("30 - Action") + prompt("Initialize Subr. Name") + } + field(LFLG, DBF_MENU) { + interest(1) + promptgroup("30 - Action") + prompt("Subr. Input Enable") + menu(aSubLFLG) + } + field(SUBL, DBF_INLINK) { + prompt("Subroutine Name Link") + interest(1) + special(SPC_NOMOD) + promptgroup("30 - Action") + } + field(SNAM, DBF_STRING) { + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("Process Subr. Name") + size(41) + } + field(ONAM, DBF_STRING) { + promptgroup("30 - Action") + interest(3) + special(SPC_NOMOD) + prompt("Old Subr. Name") + size(41) + } + field(SADR, DBF_NOACCESS) { + extra("long (*sadr)(struct aSubRecord *)") + special(SPC_NOMOD) + interest(2) + prompt("Subroutine Address") + } + field(CADR, DBF_NOACCESS) { + prompt("Subroutine Cleanup Address") + special(SPC_NOMOD) + interest(2) + extra("void (*cadr)(struct aSubRecord *)") + } + field(BRSV, DBF_MENU) { + interest(1) + promptgroup("70 - Alarm") + prompt("Bad Return Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(PREC, DBF_SHORT) { + interest(1) + prop(YES) + promptgroup("80 - Display") + prompt("Display Precision") + } + field(EFLG, DBF_MENU) { + prompt("Output Event Flag") + interest(1) + promptgroup("50 - Output") + menu(aSubEFLG) + initial("1") + } + field(INPA, DBF_INLINK) { + promptgroup("41 - Input A-G") + interest(1) + prompt("Input Link A") + } + field(INPB, DBF_INLINK) { + prompt("Input Link B") + promptgroup("41 - Input A-G") + interest(1) + } + field(INPC, DBF_INLINK) { + prompt("Input Link C") + interest(1) + promptgroup("41 - Input A-G") + } + field(INPD, DBF_INLINK) { + prompt("Input Link D") + interest(1) + promptgroup("41 - Input A-G") + } + field(INPE, DBF_INLINK) { + promptgroup("41 - Input A-G") + interest(1) + prompt("Input Link E") + } + field(INPF, DBF_INLINK) { + prompt("Input Link F") + promptgroup("41 - Input A-G") + interest(1) + } + field(INPG, DBF_INLINK) { + promptgroup("41 - Input A-G") + interest(1) + prompt("Input Link G") + } + field(INPH, DBF_INLINK) { + prompt("Input Link H") + promptgroup("42 - Input H-N") + interest(1) + } + field(INPI, DBF_INLINK) { + prompt("Input Link I") + interest(1) + promptgroup("42 - Input H-N") + } + field(INPJ, DBF_INLINK) { + promptgroup("42 - Input H-N") + interest(1) + prompt("Input Link J") + } + field(INPK, DBF_INLINK) { + interest(1) + promptgroup("42 - Input H-N") + prompt("Input Link K") + } + field(INPL, DBF_INLINK) { + prompt("Input Link L") + promptgroup("42 - Input H-N") + interest(1) + } + field(INPM, DBF_INLINK) { + interest(1) + promptgroup("42 - Input H-N") + prompt("Input Link M") + } + field(INPN, DBF_INLINK) { + prompt("Input Link N") + interest(1) + promptgroup("42 - Input H-N") + } + field(INPO, DBF_INLINK) { + promptgroup("43 - Input O-U") + interest(1) + prompt("Input Link O") + } + field(INPP, DBF_INLINK) { + prompt("Input Link P") + interest(1) + promptgroup("43 - Input O-U") + } + field(INPQ, DBF_INLINK) { + prompt("Input Link Q") + promptgroup("43 - Input O-U") + interest(1) + } + field(INPR, DBF_INLINK) { + promptgroup("43 - Input O-U") + interest(1) + prompt("Input Link R") + } + field(INPS, DBF_INLINK) { + interest(1) + promptgroup("43 - Input O-U") + prompt("Input Link S") + } + field(INPT, DBF_INLINK) { + promptgroup("43 - Input O-U") + interest(1) + prompt("Input Link T") + } + field(INPU, DBF_INLINK) { + prompt("Input Link U") + promptgroup("43 - Input O-U") + interest(1) + } + field(A, DBF_NOACCESS) { + asl(ASL0) + prompt("Input value A") + special(SPC_DBADDR) + interest(2) + extra("void *a") + } + field(B, DBF_NOACCESS) { + extra("void *b") + prompt("Input value B") + special(SPC_DBADDR) + interest(2) + asl(ASL0) + } + field(C, DBF_NOACCESS) { + extra("void *c") + special(SPC_DBADDR) + interest(2) + prompt("Input value C") + asl(ASL0) + } + field(D, DBF_NOACCESS) { + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Input value D") + extra("void *d") + } + field(E, DBF_NOACCESS) { + extra("void *e") + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Input value E") + } + field(F, DBF_NOACCESS) { + prompt("Input value F") + special(SPC_DBADDR) + interest(2) + asl(ASL0) + extra("void *f") + } + field(G, DBF_NOACCESS) { + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Input value G") + extra("void *g") + } + field(H, DBF_NOACCESS) { + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Input value H") + extra("void *h") + } + field(I, DBF_NOACCESS) { + special(SPC_DBADDR) + interest(2) + prompt("Input value I") + asl(ASL0) + extra("void *i") + } + field(J, DBF_NOACCESS) { + prompt("Input value J") + special(SPC_DBADDR) + interest(2) + asl(ASL0) + extra("void *j") + } + field(K, DBF_NOACCESS) { + prompt("Input value K") + special(SPC_DBADDR) + interest(2) + asl(ASL0) + extra("void *k") + } + field(L, DBF_NOACCESS) { + extra("void *l") + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Input value L") + } + field(M, DBF_NOACCESS) { + prompt("Input value M") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + extra("void *m") + } + field(N, DBF_NOACCESS) { + extra("void *n") + asl(ASL0) + prompt("Input value N") + special(SPC_DBADDR) + interest(2) + } + field(O, DBF_NOACCESS) { + extra("void *o") + asl(ASL0) + prompt("Input value O") + special(SPC_DBADDR) + interest(2) + } + field(P, DBF_NOACCESS) { + special(SPC_DBADDR) + interest(2) + prompt("Input value P") + asl(ASL0) + extra("void *p") + } + field(Q, DBF_NOACCESS) { + extra("void *q") + prompt("Input value Q") + special(SPC_DBADDR) + interest(2) + asl(ASL0) + } + field(R, DBF_NOACCESS) { + extra("void *r") + interest(2) + special(SPC_DBADDR) + prompt("Input value R") + asl(ASL0) + } + field(S, DBF_NOACCESS) { + extra("void *s") + prompt("Input value S") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + } + field(T, DBF_NOACCESS) { + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Input value T") + extra("void *t") + } + field(U, DBF_NOACCESS) { + extra("void *u") + asl(ASL0) + prompt("Input value U") + interest(2) + special(SPC_DBADDR) + } + field(FTA, DBF_MENU) { + menu(menuFtype) + interest(1) + special(SPC_NOMOD) + promptgroup("41 - Input A-G") + prompt("Type of A") + initial("DOUBLE") + } + field(FTB, DBF_MENU) { + prompt("Type of B") + interest(1) + promptgroup("41 - Input A-G") + special(SPC_NOMOD) + menu(menuFtype) + initial("DOUBLE") + } + field(FTC, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + special(SPC_NOMOD) + interest(1) + promptgroup("41 - Input A-G") + prompt("Type of C") + } + field(FTD, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of D") + interest(1) + promptgroup("41 - Input A-G") + special(SPC_NOMOD) + } + field(FTE, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + promptgroup("41 - Input A-G") + prompt("Type of E") + menu(menuFtype) + initial("DOUBLE") + } + field(FTF, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of F") + interest(1) + promptgroup("41 - Input A-G") + special(SPC_NOMOD) + } + field(FTG, DBF_MENU) { + initial("DOUBLE") + prompt("Type of G") + promptgroup("41 - Input A-G") + interest(1) + special(SPC_NOMOD) + menu(menuFtype) + } + field(FTH, DBF_MENU) { + menu(menuFtype) + prompt("Type of H") + promptgroup("42 - Input H-N") + interest(1) + special(SPC_NOMOD) + initial("DOUBLE") + } + field(FTI, DBF_MENU) { + initial("DOUBLE") + prompt("Type of I") + special(SPC_NOMOD) + interest(1) + promptgroup("42 - Input H-N") + menu(menuFtype) + } + field(FTJ, DBF_MENU) { + initial("DOUBLE") + prompt("Type of J") + special(SPC_NOMOD) + interest(1) + promptgroup("42 - Input H-N") + menu(menuFtype) + } + field(FTK, DBF_MENU) { + prompt("Type of K") + interest(1) + special(SPC_NOMOD) + promptgroup("42 - Input H-N") + menu(menuFtype) + initial("DOUBLE") + } + field(FTL, DBF_MENU) { + prompt("Type of L") + interest(1) + special(SPC_NOMOD) + promptgroup("42 - Input H-N") + menu(menuFtype) + initial("DOUBLE") + } + field(FTM, DBF_MENU) { + initial("DOUBLE") + prompt("Type of M") + promptgroup("42 - Input H-N") + interest(1) + special(SPC_NOMOD) + menu(menuFtype) + } + field(FTN, DBF_MENU) { + menu(menuFtype) + interest(1) + special(SPC_NOMOD) + promptgroup("42 - Input H-N") + prompt("Type of N") + initial("DOUBLE") + } + field(FTO, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of O") + interest(1) + promptgroup("43 - Input O-U") + special(SPC_NOMOD) + } + field(FTP, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of P") + interest(1) + special(SPC_NOMOD) + promptgroup("43 - Input O-U") + } + field(FTQ, DBF_MENU) { + initial("DOUBLE") + prompt("Type of Q") + special(SPC_NOMOD) + interest(1) + promptgroup("43 - Input O-U") + menu(menuFtype) + } + field(FTR, DBF_MENU) { + menu(menuFtype) + prompt("Type of R") + special(SPC_NOMOD) + interest(1) + promptgroup("43 - Input O-U") + initial("DOUBLE") + } + field(FTS, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + promptgroup("43 - Input O-U") + interest(1) + special(SPC_NOMOD) + prompt("Type of S") + } + field(FTT, DBF_MENU) { + prompt("Type of T") + promptgroup("43 - Input O-U") + interest(1) + special(SPC_NOMOD) + menu(menuFtype) + initial("DOUBLE") + } + field(FTU, DBF_MENU) { + interest(1) + promptgroup("43 - Input O-U") + special(SPC_NOMOD) + prompt("Type of U") + menu(menuFtype) + initial("DOUBLE") + } + field(NOA, DBF_ULONG) { + interest(1) + special(SPC_NOMOD) + promptgroup("41 - Input A-G") + prompt("Max. elements in A") + initial("1") + } + field(NOB, DBF_ULONG) { + initial("1") + interest(1) + special(SPC_NOMOD) + promptgroup("41 - Input A-G") + prompt("Max. elements in B") + } + field(NOC, DBF_ULONG) { + prompt("Max. elements in C") + special(SPC_NOMOD) + interest(1) + promptgroup("41 - Input A-G") + initial("1") + } + field(NOD, DBF_ULONG) { + initial("1") + prompt("Max. elements in D") + special(SPC_NOMOD) + interest(1) + promptgroup("41 - Input A-G") + } + field(NOE, DBF_ULONG) { + initial("1") + interest(1) + promptgroup("41 - Input A-G") + special(SPC_NOMOD) + prompt("Max. elements in E") + } + field(NOF, DBF_ULONG) { + initial("1") + interest(1) + special(SPC_NOMOD) + promptgroup("41 - Input A-G") + prompt("Max. elements in F") + } + field(NOG, DBF_ULONG) { + prompt("Max. elements in G") + interest(1) + special(SPC_NOMOD) + promptgroup("41 - Input A-G") + initial("1") + } + field(NOH, DBF_ULONG) { + initial("1") + interest(1) + special(SPC_NOMOD) + promptgroup("42 - Input H-N") + prompt("Max. elements in H") + } + field(NOI, DBF_ULONG) { + interest(1) + promptgroup("42 - Input H-N") + special(SPC_NOMOD) + prompt("Max. elements in I") + initial("1") + } + field(NOJ, DBF_ULONG) { + prompt("Max. elements in J") + interest(1) + special(SPC_NOMOD) + promptgroup("42 - Input H-N") + initial("1") + } + field(NOK, DBF_ULONG) { + prompt("Max. elements in K") + promptgroup("42 - Input H-N") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(NOL, DBF_ULONG) { + special(SPC_NOMOD) + interest(1) + promptgroup("42 - Input H-N") + prompt("Max. elements in L") + initial("1") + } + field(NOM, DBF_ULONG) { + initial("1") + prompt("Max. elements in M") + special(SPC_NOMOD) + interest(1) + promptgroup("42 - Input H-N") + } + field(NON, DBF_ULONG) { + prompt("Max. elements in N") + interest(1) + special(SPC_NOMOD) + promptgroup("42 - Input H-N") + initial("1") + } + field(NOO, DBF_ULONG) { + initial("1") + prompt("Max. elements in O") + special(SPC_NOMOD) + interest(1) + promptgroup("43 - Input O-U") + } + field(NOP, DBF_ULONG) { + initial("1") + prompt("Max. elements in P") + interest(1) + special(SPC_NOMOD) + promptgroup("43 - Input O-U") + } + field(NOQ, DBF_ULONG) { + interest(1) + special(SPC_NOMOD) + promptgroup("43 - Input O-U") + prompt("Max. elements in Q") + initial("1") + } + field(NOR, DBF_ULONG) { + promptgroup("43 - Input O-U") + interest(1) + special(SPC_NOMOD) + prompt("Max. elements in R") + initial("1") + } + field(NOS, DBF_ULONG) { + initial("1") + interest(1) + special(SPC_NOMOD) + promptgroup("43 - Input O-U") + prompt("Max. elements in S") + } + field(NOT, DBF_ULONG) { + prompt("Max. elements in T") + promptgroup("43 - Input O-U") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(NOU, DBF_ULONG) { + initial("1") + interest(1) + promptgroup("43 - Input O-U") + special(SPC_NOMOD) + prompt("Max. elements in U") + } + field(NEA, DBF_ULONG) { + initial("1") + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in A") + } + field(NEB, DBF_ULONG) { + prompt("Num. elements in B") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEC, DBF_ULONG) { + prompt("Num. elements in C") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NED, DBF_ULONG) { + initial("1") + prompt("Num. elements in D") + special(SPC_NOMOD) + interest(3) + } + field(NEE, DBF_ULONG) { + special(SPC_NOMOD) + interest(3) + prompt("Num. elements in E") + initial("1") + } + field(NEF, DBF_ULONG) { + prompt("Num. elements in F") + interest(3) + special(SPC_NOMOD) + initial("1") + } + field(NEG, DBF_ULONG) { + prompt("Num. elements in G") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEH, DBF_ULONG) { + special(SPC_NOMOD) + interest(3) + prompt("Num. elements in H") + initial("1") + } + field(NEI, DBF_ULONG) { + prompt("Num. elements in I") + interest(3) + special(SPC_NOMOD) + initial("1") + } + field(NEJ, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in J") + initial("1") + } + field(NEK, DBF_ULONG) { + prompt("Num. elements in K") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEL, DBF_ULONG) { + prompt("Num. elements in L") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEM, DBF_ULONG) { + initial("1") + prompt("Num. elements in M") + interest(3) + special(SPC_NOMOD) + } + field(NEN, DBF_ULONG) { + prompt("Num. elements in N") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEO, DBF_ULONG) { + initial("1") + prompt("Num. elements in O") + interest(3) + special(SPC_NOMOD) + } + field(NEP, DBF_ULONG) { + prompt("Num. elements in P") + interest(3) + special(SPC_NOMOD) + initial("1") + } + field(NEQ, DBF_ULONG) { + initial("1") + prompt("Num. elements in Q") + special(SPC_NOMOD) + interest(3) + } + field(NER, DBF_ULONG) { + initial("1") + special(SPC_NOMOD) + interest(3) + prompt("Num. elements in R") + } + field(NES, DBF_ULONG) { + special(SPC_NOMOD) + interest(3) + prompt("Num. elements in S") + initial("1") + } + field(NET, DBF_ULONG) { + initial("1") + prompt("Num. elements in T") + interest(3) + special(SPC_NOMOD) + } + field(NEU, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in U") + initial("1") + } + field(OUTA, DBF_OUTLINK) { + prompt("Output Link A") + interest(1) + promptgroup("51 - Output A-G") + } + field(OUTB, DBF_OUTLINK) { + promptgroup("51 - Output A-G") + interest(1) + prompt("Output Link B") + } + field(OUTC, DBF_OUTLINK) { + prompt("Output Link C") + interest(1) + promptgroup("51 - Output A-G") + } + field(OUTD, DBF_OUTLINK) { + prompt("Output Link D") + interest(1) + promptgroup("51 - Output A-G") + } + field(OUTE, DBF_OUTLINK) { + prompt("Output Link E") + promptgroup("51 - Output A-G") + interest(1) + } + field(OUTF, DBF_OUTLINK) { + prompt("Output Link F") + interest(1) + promptgroup("51 - Output A-G") + } + field(OUTG, DBF_OUTLINK) { + prompt("Output Link G") + promptgroup("51 - Output A-G") + interest(1) + } + field(OUTH, DBF_OUTLINK) { + interest(1) + promptgroup("52 - Output H-N") + prompt("Output Link H") + } + field(OUTI, DBF_OUTLINK) { + prompt("Output Link I") + interest(1) + promptgroup("52 - Output H-N") + } + field(OUTJ, DBF_OUTLINK) { + prompt("Output Link J") + interest(1) + promptgroup("52 - Output H-N") + } + field(OUTK, DBF_OUTLINK) { + prompt("Output Link K") + promptgroup("52 - Output H-N") + interest(1) + } + field(OUTL, DBF_OUTLINK) { + prompt("Output Link L") + promptgroup("52 - Output H-N") + interest(1) + } + field(OUTM, DBF_OUTLINK) { + interest(1) + promptgroup("52 - Output H-N") + prompt("Output Link M") + } + field(OUTN, DBF_OUTLINK) { + prompt("Output Link N") + interest(1) + promptgroup("52 - Output H-N") + } + field(OUTO, DBF_OUTLINK) { + interest(1) + promptgroup("53 - Output O-U") + prompt("Output Link O") + } + field(OUTP, DBF_OUTLINK) { + prompt("Output Link P") + promptgroup("53 - Output O-U") + interest(1) + } + field(OUTQ, DBF_OUTLINK) { + prompt("Output Link Q") + interest(1) + promptgroup("53 - Output O-U") + } + field(OUTR, DBF_OUTLINK) { + interest(1) + promptgroup("53 - Output O-U") + prompt("Output Link R") + } + field(OUTS, DBF_OUTLINK) { + promptgroup("53 - Output O-U") + interest(1) + prompt("Output Link S") + } + field(OUTT, DBF_OUTLINK) { + prompt("Output Link T") + promptgroup("53 - Output O-U") + interest(1) + } + field(OUTU, DBF_OUTLINK) { + prompt("Output Link U") + interest(1) + promptgroup("53 - Output O-U") + } + field(VALA, DBF_NOACCESS) { + extra("void *vala") + prompt("Output value A") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + } + field(VALB, DBF_NOACCESS) { + extra("void *valb") + asl(ASL0) + prompt("Output value B") + interest(2) + special(SPC_DBADDR) + } + field(VALC, DBF_NOACCESS) { + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Output value C") + extra("void *valc") + } + field(VALD, DBF_NOACCESS) { + extra("void *vald") + asl(ASL0) + special(SPC_DBADDR) + interest(2) + prompt("Output value D") + } + field(VALE, DBF_NOACCESS) { + extra("void *vale") + asl(ASL0) + special(SPC_DBADDR) + interest(2) + prompt("Output value E") + } + field(VALF, DBF_NOACCESS) { + interest(2) + special(SPC_DBADDR) + prompt("Output value F") + asl(ASL0) + extra("void *valf") + } + field(VALG, DBF_NOACCESS) { + extra("void *valg") + prompt("Output value G") + special(SPC_DBADDR) + interest(2) + asl(ASL0) + } + field(VALH, DBF_NOACCESS) { + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Output value H") + extra("void *valh") + } + field(VALI, DBF_NOACCESS) { + interest(2) + special(SPC_DBADDR) + prompt("Output value I") + asl(ASL0) + extra("void *vali") + } + field(VALJ, DBF_NOACCESS) { + extra("void *valj") + prompt("Output value J") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + } + field(VALK, DBF_NOACCESS) { + prompt("Output value K") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + extra("void *valk") + } + field(VALL, DBF_NOACCESS) { + special(SPC_DBADDR) + interest(2) + prompt("Output value L") + asl(ASL0) + extra("void *vall") + } + field(VALM, DBF_NOACCESS) { + prompt("Output value M") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + extra("void *valm") + } + field(VALN, DBF_NOACCESS) { + prompt("Output value N") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + extra("void *valn") + } + field(VALO, DBF_NOACCESS) { + extra("void *valo") + asl(ASL0) + interest(2) + special(SPC_DBADDR) + prompt("Output value O") + } + field(VALP, DBF_NOACCESS) { + extra("void *valp") + asl(ASL0) + prompt("Output value P") + special(SPC_DBADDR) + interest(2) + } + field(VALQ, DBF_NOACCESS) { + extra("void *valq") + prompt("Output value Q") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + } + field(VALR, DBF_NOACCESS) { + extra("void *valr") + special(SPC_DBADDR) + interest(2) + prompt("Output value R") + asl(ASL0) + } + field(VALS, DBF_NOACCESS) { + special(SPC_DBADDR) + interest(2) + prompt("Output value S") + asl(ASL0) + extra("void *vals") + } + field(VALT, DBF_NOACCESS) { + prompt("Output value T") + interest(2) + special(SPC_DBADDR) + asl(ASL0) + extra("void *valt") + } + field(VALU, DBF_NOACCESS) { + interest(2) + special(SPC_DBADDR) + prompt("Output value U") + asl(ASL0) + extra("void *valu") + } + field(OVLA, DBF_NOACCESS) { + asl(ASL0) + prompt("Old Output A") + interest(4) + special(SPC_NOMOD) + extra("void *ovla") + } + field(OVLB, DBF_NOACCESS) { + extra("void *ovlb") + asl(ASL0) + prompt("Old Output B") + special(SPC_NOMOD) + interest(4) + } + field(OVLC, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Old Output C") + asl(ASL0) + extra("void *ovlc") + } + field(OVLD, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Old Output D") + asl(ASL0) + extra("void *ovld") + } + field(OVLE, DBF_NOACCESS) { + extra("void *ovle") + asl(ASL0) + special(SPC_NOMOD) + interest(4) + prompt("Old Output E") + } + field(OVLF, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Old Output F") + asl(ASL0) + extra("void *ovlf") + } + field(OVLG, DBF_NOACCESS) { + asl(ASL0) + interest(4) + special(SPC_NOMOD) + prompt("Old Output G") + extra("void *ovlg") + } + field(OVLH, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Old Output H") + asl(ASL0) + extra("void *ovlh") + } + field(OVLI, DBF_NOACCESS) { + asl(ASL0) + interest(4) + special(SPC_NOMOD) + prompt("Old Output I") + extra("void *ovli") + } + field(OVLJ, DBF_NOACCESS) { + prompt("Old Output J") + interest(4) + special(SPC_NOMOD) + asl(ASL0) + extra("void *ovlj") + } + field(OVLK, DBF_NOACCESS) { + extra("void *ovlk") + asl(ASL0) + prompt("Old Output K") + special(SPC_NOMOD) + interest(4) + } + field(OVLL, DBF_NOACCESS) { + prompt("Old Output L") + special(SPC_NOMOD) + interest(4) + asl(ASL0) + extra("void *ovll") + } + field(OVLM, DBF_NOACCESS) { + extra("void *ovlm") + prompt("Old Output M") + interest(4) + special(SPC_NOMOD) + asl(ASL0) + } + field(OVLN, DBF_NOACCESS) { + extra("void *ovln") + prompt("Old Output N") + interest(4) + special(SPC_NOMOD) + asl(ASL0) + } + field(OVLO, DBF_NOACCESS) { + extra("void *ovlo") + asl(ASL0) + interest(4) + special(SPC_NOMOD) + prompt("Old Output O") + } + field(OVLP, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Old Output P") + asl(ASL0) + extra("void *ovlp") + } + field(OVLQ, DBF_NOACCESS) { + asl(ASL0) + prompt("Old Output Q") + interest(4) + special(SPC_NOMOD) + extra("void *ovlq") + } + field(OVLR, DBF_NOACCESS) { + extra("void *ovlr") + asl(ASL0) + prompt("Old Output R") + special(SPC_NOMOD) + interest(4) + } + field(OVLS, DBF_NOACCESS) { + extra("void *ovls") + prompt("Old Output S") + special(SPC_NOMOD) + interest(4) + asl(ASL0) + } + field(OVLT, DBF_NOACCESS) { + asl(ASL0) + prompt("Old Output T") + special(SPC_NOMOD) + interest(4) + extra("void *ovlt") + } + field(OVLU, DBF_NOACCESS) { + asl(ASL0) + interest(4) + special(SPC_NOMOD) + prompt("Old Output U") + extra("void *ovlu") + } + field(FTVA, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + interest(1) + special(SPC_NOMOD) + promptgroup("51 - Output A-G") + prompt("Type of VALA") + } + field(FTVB, DBF_MENU) { + menu(menuFtype) + prompt("Type of VALB") + interest(1) + special(SPC_NOMOD) + promptgroup("51 - Output A-G") + initial("DOUBLE") + } + field(FTVC, DBF_MENU) { + promptgroup("51 - Output A-G") + interest(1) + special(SPC_NOMOD) + prompt("Type of VALC") + menu(menuFtype) + initial("DOUBLE") + } + field(FTVD, DBF_MENU) { + prompt("Type of VALD") + promptgroup("51 - Output A-G") + interest(1) + special(SPC_NOMOD) + menu(menuFtype) + initial("DOUBLE") + } + field(FTVE, DBF_MENU) { + initial("DOUBLE") + prompt("Type of VALE") + interest(1) + special(SPC_NOMOD) + promptgroup("51 - Output A-G") + menu(menuFtype) + } + field(FTVF, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + interest(1) + promptgroup("51 - Output A-G") + special(SPC_NOMOD) + prompt("Type of VALF") + } + field(FTVG, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of VALG") + special(SPC_NOMOD) + interest(1) + promptgroup("51 - Output A-G") + } + field(FTVH, DBF_MENU) { + promptgroup("52 - Output H-N") + interest(1) + special(SPC_NOMOD) + prompt("Type of VALH") + menu(menuFtype) + initial("DOUBLE") + } + field(FTVI, DBF_MENU) { + special(SPC_NOMOD) + interest(1) + promptgroup("52 - Output H-N") + prompt("Type of VALI") + menu(menuFtype) + initial("DOUBLE") + } + field(FTVJ, DBF_MENU) { + promptgroup("52 - Output H-N") + interest(1) + special(SPC_NOMOD) + prompt("Type of VALJ") + menu(menuFtype) + initial("DOUBLE") + } + field(FTVK, DBF_MENU) { + interest(1) + promptgroup("52 - Output H-N") + special(SPC_NOMOD) + prompt("Type of VALK") + menu(menuFtype) + initial("DOUBLE") + } + field(FTVL, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of VALL") + promptgroup("52 - Output H-N") + interest(1) + special(SPC_NOMOD) + } + field(FTVM, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of VALM") + special(SPC_NOMOD) + interest(1) + promptgroup("52 - Output H-N") + } + field(FTVN, DBF_MENU) { + initial("DOUBLE") + prompt("Type of VALN") + interest(1) + special(SPC_NOMOD) + promptgroup("52 - Output H-N") + menu(menuFtype) + } + field(FTVO, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + prompt("Type of VALO") + promptgroup("53 - Output O-U") + interest(1) + special(SPC_NOMOD) + } + field(FTVP, DBF_MENU) { + menu(menuFtype) + prompt("Type of VALP") + interest(1) + promptgroup("53 - Output O-U") + special(SPC_NOMOD) + initial("DOUBLE") + } + field(FTVQ, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + interest(1) + special(SPC_NOMOD) + promptgroup("53 - Output O-U") + prompt("Type of VALQ") + } + field(FTVR, DBF_MENU) { + initial("DOUBLE") + interest(1) + special(SPC_NOMOD) + promptgroup("53 - Output O-U") + prompt("Type of VALR") + menu(menuFtype) + } + field(FTVS, DBF_MENU) { + initial("DOUBLE") + menu(menuFtype) + interest(1) + promptgroup("53 - Output O-U") + special(SPC_NOMOD) + prompt("Type of VALS") + } + field(FTVT, DBF_MENU) { + initial("DOUBLE") + prompt("Type of VALT") + interest(1) + special(SPC_NOMOD) + promptgroup("53 - Output O-U") + menu(menuFtype) + } + field(FTVU, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + promptgroup("53 - Output O-U") + prompt("Type of VALU") + menu(menuFtype) + initial("DOUBLE") + } + field(NOVA, DBF_ULONG) { + initial("1") + promptgroup("51 - Output A-G") + interest(1) + special(SPC_NOMOD) + prompt("Max. elements in VALA") + } + field(NOVB, DBF_ULONG) { + prompt("Max. elements in VALB") + interest(1) + special(SPC_NOMOD) + promptgroup("51 - Output A-G") + initial("1") + } + field(NOVC, DBF_ULONG) { + initial("1") + prompt("Max. elements in VALC") + promptgroup("51 - Output A-G") + interest(1) + special(SPC_NOMOD) + } + field(NOVD, DBF_ULONG) { + initial("1") + special(SPC_NOMOD) + interest(1) + promptgroup("51 - Output A-G") + prompt("Max. elements in VALD") + } + field(NOVE, DBF_ULONG) { + initial("1") + interest(1) + special(SPC_NOMOD) + promptgroup("51 - Output A-G") + prompt("Max. elements in VALE") + } + field(NOVF, DBF_ULONG) { + promptgroup("51 - Output A-G") + interest(1) + special(SPC_NOMOD) + prompt("Max. elements in VALF") + initial("1") + } + field(NOVG, DBF_ULONG) { + special(SPC_NOMOD) + interest(1) + promptgroup("51 - Output A-G") + prompt("Max. elements in VALG") + initial("1") + } + field(NOVH, DBF_ULONG) { + prompt("Max. elements in VAlH") + interest(1) + promptgroup("52 - Output H-N") + special(SPC_NOMOD) + initial("1") + } + field(NOVI, DBF_ULONG) { + initial("1") + interest(1) + special(SPC_NOMOD) + promptgroup("52 - Output H-N") + prompt("Max. elements in VALI") + } + field(NOVJ, DBF_ULONG) { + initial("1") + promptgroup("52 - Output H-N") + interest(1) + special(SPC_NOMOD) + prompt("Max. elements in VALJ") + } + field(NOVK, DBF_ULONG) { + initial("1") + special(SPC_NOMOD) + interest(1) + promptgroup("52 - Output H-N") + prompt("Max. elements in VALK") + } + field(NOVL, DBF_ULONG) { + initial("1") + prompt("Max. elements in VALL") + special(SPC_NOMOD) + interest(1) + promptgroup("52 - Output H-N") + } + field(NOVM, DBF_ULONG) { + initial("1") + prompt("Max. elements in VALM") + interest(1) + special(SPC_NOMOD) + promptgroup("52 - Output H-N") + } + field(NOVN, DBF_ULONG) { + initial("1") + interest(1) + promptgroup("52 - Output H-N") + special(SPC_NOMOD) + prompt("Max. elements in VALN") + } + field(NOVO, DBF_ULONG) { + interest(1) + promptgroup("53 - Output O-U") + special(SPC_NOMOD) + prompt("Max. elements in VALO") + initial("1") + } + field(NOVP, DBF_ULONG) { + initial("1") + prompt("Max. elements in VALP") + promptgroup("53 - Output O-U") + interest(1) + special(SPC_NOMOD) + } + field(NOVQ, DBF_ULONG) { + initial("1") + interest(1) + promptgroup("53 - Output O-U") + special(SPC_NOMOD) + prompt("Max. elements in VALQ") + } + field(NOVR, DBF_ULONG) { + prompt("Max. elements in VALR") + promptgroup("53 - Output O-U") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(NOVS, DBF_ULONG) { + initial("1") + prompt("Max. elements in VALS") + special(SPC_NOMOD) + interest(1) + promptgroup("53 - Output O-U") + } + field(NOVT, DBF_ULONG) { + prompt("Max. elements in VALT") + interest(1) + special(SPC_NOMOD) + promptgroup("53 - Output O-U") + initial("1") + } + field(NOVU, DBF_ULONG) { + prompt("Max. elements in VALU") + special(SPC_NOMOD) + interest(1) + promptgroup("53 - Output O-U") + initial("1") + } + field(NEVA, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALA") + special(SPC_NOMOD) + interest(3) + } + field(NEVB, DBF_ULONG) { + initial("1") + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in VALB") + } + field(NEVC, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALC") + special(SPC_NOMOD) + interest(3) + } + field(NEVD, DBF_ULONG) { + prompt("Num. elements in VALD") + interest(3) + special(SPC_NOMOD) + initial("1") + } + field(NEVE, DBF_ULONG) { + prompt("Num. elements in VALE") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEVF, DBF_ULONG) { + prompt("Num. elements in VALF") + interest(3) + special(SPC_NOMOD) + initial("1") + } + field(NEVG, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALG") + interest(3) + special(SPC_NOMOD) + } + field(NEVH, DBF_ULONG) { + prompt("Num. elements in VAlH") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEVI, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALI") + interest(3) + special(SPC_NOMOD) + } + field(NEVJ, DBF_ULONG) { + prompt("Num. elements in VALJ") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEVK, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALK") + special(SPC_NOMOD) + interest(3) + } + field(NEVL, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in VALL") + initial("1") + } + field(NEVM, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in VALM") + initial("1") + } + field(NEVN, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALN") + special(SPC_NOMOD) + interest(3) + } + field(NEVO, DBF_ULONG) { + special(SPC_NOMOD) + interest(3) + prompt("Num. elements in VALO") + initial("1") + } + field(NEVP, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALP") + special(SPC_NOMOD) + interest(3) + } + field(NEVQ, DBF_ULONG) { + initial("1") + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in VALQ") + } + field(NEVR, DBF_ULONG) { + initial("1") + prompt("Num. elements in VALR") + interest(3) + special(SPC_NOMOD) + } + field(NEVS, DBF_ULONG) { + prompt("Num. elements in VALS") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(NEVT, DBF_ULONG) { + initial("1") + interest(3) + special(SPC_NOMOD) + prompt("Num. elements in VALT") + } + field(NEVU, DBF_ULONG) { + prompt("Num. elements in VALU") + special(SPC_NOMOD) + interest(3) + initial("1") + } + field(ONVA, DBF_ULONG) { + prompt("Num. elements in OVLA") + special(SPC_NOMOD) + interest(4) + initial("1") + } + field(ONVB, DBF_ULONG) { + prompt("Num. elements in OVLB") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVC, DBF_ULONG) { + special(SPC_NOMOD) + interest(4) + prompt("Num. elements in OVLC") + initial("1") + } + field(ONVD, DBF_ULONG) { + prompt("Num. elements in OVLD") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVE, DBF_ULONG) { + initial("1") + interest(4) + special(SPC_NOMOD) + prompt("Num. elements in OVLE") + } + field(ONVF, DBF_ULONG) { + prompt("Num. elements in OVLF") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVG, DBF_ULONG) { + prompt("Num. elements in OVLG") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVH, DBF_ULONG) { + prompt("Num. elements in VAlH") + special(SPC_NOMOD) + interest(4) + initial("1") + } + field(ONVI, DBF_ULONG) { + prompt("Num. elements in OVLI") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVJ, DBF_ULONG) { + initial("1") + interest(4) + special(SPC_NOMOD) + prompt("Num. elements in OVLJ") + } + field(ONVK, DBF_ULONG) { + prompt("Num. elements in OVLK") + special(SPC_NOMOD) + interest(4) + initial("1") + } + field(ONVL, DBF_ULONG) { + initial("1") + interest(4) + special(SPC_NOMOD) + prompt("Num. elements in OVLL") + } + field(ONVM, DBF_ULONG) { + special(SPC_NOMOD) + interest(4) + prompt("Num. elements in OVLM") + initial("1") + } + field(ONVN, DBF_ULONG) { + prompt("Num. elements in OVLN") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVO, DBF_ULONG) { + special(SPC_NOMOD) + interest(4) + prompt("Num. elements in OVLO") + initial("1") + } + field(ONVP, DBF_ULONG) { + prompt("Num. elements in OVLP") + special(SPC_NOMOD) + interest(4) + initial("1") + } + field(ONVQ, DBF_ULONG) { + special(SPC_NOMOD) + interest(4) + prompt("Num. elements in OVLQ") + initial("1") + } + field(ONVR, DBF_ULONG) { + initial("1") + prompt("Num. elements in OVLR") + special(SPC_NOMOD) + interest(4) + } + field(ONVS, DBF_ULONG) { + prompt("Num. elements in OVLS") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVT, DBF_ULONG) { + prompt("Num. elements in OVLT") + interest(4) + special(SPC_NOMOD) + initial("1") + } + field(ONVU, DBF_ULONG) { + prompt("Num. elements in OVLU") + interest(4) + special(SPC_NOMOD) + initial("1") + } +} +recordtype(seq) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + special(SPC_NOMOD) + prompt("Record Name") + size(61) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + size(40) + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + prompt("Alarm Ack Transient") + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + interest(2) + special(SPC_NOMOD) + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Forward Process Link") + } + field(VAL, DBF_LONG) { + pp(TRUE) + prompt("Used to trigger") + asl(ASL0) + } + field(SELM, DBF_MENU) { + prompt("Select Mechanism") + promptgroup("30 - Action") + interest(1) + menu(seqSELM) + } + field(SELN, DBF_USHORT) { + initial("1") + interest(1) + prompt("Link Selection") + } + field(SELL, DBF_INLINK) { + prompt("Link Selection Loc") + interest(1) + promptgroup("30 - Action") + } + field(OFFS, DBF_SHORT) { + promptgroup("30 - Action") + interest(1) + prompt("Offset for Specified") + initial("0") + } + field(SHFT, DBF_SHORT) { + initial("-1") + interest(1) + promptgroup("30 - Action") + prompt("Shift for Mask mode") + } + field(OLDN, DBF_USHORT) { + interest(4) + prompt("Old Selection") + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + interest(1) + promptgroup("80 - Display") + } + field(DLY0, DBF_DOUBLE) { + prompt("Delay 0") + promptgroup("41 - Link 0-7") + interest(1) + } + field(DOL0, DBF_INLINK) { + prompt("Input link 0") + interest(1) + promptgroup("41 - Link 0-7") + } + field(DO0, DBF_DOUBLE) { + interest(1) + prompt("Value 0") + } + field(LNK0, DBF_OUTLINK) { + prompt("Output Link 0") + promptgroup("41 - Link 0-7") + interest(1) + } + field(DLY1, DBF_DOUBLE) { + promptgroup("41 - Link 0-7") + interest(1) + prompt("Delay 1") + } + field(DOL1, DBF_INLINK) { + interest(1) + promptgroup("41 - Link 0-7") + prompt("Input link1") + } + field(DO1, DBF_DOUBLE) { + prompt("Value 1") + interest(1) + } + field(LNK1, DBF_OUTLINK) { + prompt("Output Link 1") + interest(1) + promptgroup("41 - Link 0-7") + } + field(DLY2, DBF_DOUBLE) { + interest(1) + promptgroup("41 - Link 0-7") + prompt("Delay 2") + } + field(DOL2, DBF_INLINK) { + promptgroup("41 - Link 0-7") + interest(1) + prompt("Input link 2") + } + field(DO2, DBF_DOUBLE) { + prompt("Value 2") + interest(1) + } + field(LNK2, DBF_OUTLINK) { + promptgroup("41 - Link 0-7") + interest(1) + prompt("Output Link 2") + } + field(DLY3, DBF_DOUBLE) { + promptgroup("41 - Link 0-7") + interest(1) + prompt("Delay 3") + } + field(DOL3, DBF_INLINK) { + prompt("Input link 3") + promptgroup("41 - Link 0-7") + interest(1) + } + field(DO3, DBF_DOUBLE) { + interest(1) + prompt("Value 3") + } + field(LNK3, DBF_OUTLINK) { + interest(1) + promptgroup("41 - Link 0-7") + prompt("Output Link 3") + } + field(DLY4, DBF_DOUBLE) { + prompt("Delay 4") + promptgroup("41 - Link 0-7") + interest(1) + } + field(DOL4, DBF_INLINK) { + prompt("Input link 4") + interest(1) + promptgroup("41 - Link 0-7") + } + field(DO4, DBF_DOUBLE) { + interest(1) + prompt("Value 4") + } + field(LNK4, DBF_OUTLINK) { + prompt("Output Link 4") + interest(1) + promptgroup("41 - Link 0-7") + } + field(DLY5, DBF_DOUBLE) { + prompt("Delay 5") + interest(1) + promptgroup("41 - Link 0-7") + } + field(DOL5, DBF_INLINK) { + prompt("Input link 5") + interest(1) + promptgroup("41 - Link 0-7") + } + field(DO5, DBF_DOUBLE) { + prompt("Value 5") + interest(1) + } + field(LNK5, DBF_OUTLINK) { + prompt("Output Link 5") + promptgroup("41 - Link 0-7") + interest(1) + } + field(DLY6, DBF_DOUBLE) { + promptgroup("41 - Link 0-7") + interest(1) + prompt("Delay 6") + } + field(DOL6, DBF_INLINK) { + interest(1) + promptgroup("41 - Link 0-7") + prompt("Input link 6") + } + field(DO6, DBF_DOUBLE) { + prompt("Value 6") + interest(1) + } + field(LNK6, DBF_OUTLINK) { + promptgroup("41 - Link 0-7") + interest(1) + prompt("Output Link 6") + } + field(DLY7, DBF_DOUBLE) { + prompt("Delay 7") + promptgroup("41 - Link 0-7") + interest(1) + } + field(DOL7, DBF_INLINK) { + interest(1) + promptgroup("41 - Link 0-7") + prompt("Input link 7") + } + field(DO7, DBF_DOUBLE) { + interest(1) + prompt("Value 7") + } + field(LNK7, DBF_OUTLINK) { + interest(1) + promptgroup("41 - Link 0-7") + prompt("Output Link 7") + } + field(DLY8, DBF_DOUBLE) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Delay 8") + } + field(DOL8, DBF_INLINK) { + interest(1) + promptgroup("42 - Link 8-F") + prompt("Input link 8") + } + field(DO8, DBF_DOUBLE) { + interest(1) + prompt("Value 8") + } + field(LNK8, DBF_OUTLINK) { + interest(1) + promptgroup("42 - Link 8-F") + prompt("Output Link 8") + } + field(DLY9, DBF_DOUBLE) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Delay 9") + } + field(DOL9, DBF_INLINK) { + prompt("Input link 9") + promptgroup("42 - Link 8-F") + interest(1) + } + field(DO9, DBF_DOUBLE) { + prompt("Value 9") + interest(1) + } + field(LNK9, DBF_OUTLINK) { + prompt("Output Link 9") + promptgroup("42 - Link 8-F") + interest(1) + } + field(DLYA, DBF_DOUBLE) { + prompt("Delay 10") + interest(1) + promptgroup("42 - Link 8-F") + } + field(DOLA, DBF_INLINK) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Input link 10") + } + field(DOA, DBF_DOUBLE) { + prompt("Value 10") + interest(1) + } + field(LNKA, DBF_OUTLINK) { + prompt("Output Link 10") + interest(1) + promptgroup("42 - Link 8-F") + } + field(DLYB, DBF_DOUBLE) { + prompt("Delay 11") + interest(1) + promptgroup("42 - Link 8-F") + } + field(DOLB, DBF_INLINK) { + prompt("Input link 11") + interest(1) + promptgroup("42 - Link 8-F") + } + field(DOB, DBF_DOUBLE) { + interest(1) + prompt("Value 11") + } + field(LNKB, DBF_OUTLINK) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Output Link 11") + } + field(DLYC, DBF_DOUBLE) { + prompt("Delay 12") + interest(1) + promptgroup("42 - Link 8-F") + } + field(DOLC, DBF_INLINK) { + interest(1) + promptgroup("42 - Link 8-F") + prompt("Input link 12") + } + field(DOC, DBF_DOUBLE) { + prompt("Value 12") + interest(1) + } + field(LNKC, DBF_OUTLINK) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Output Link 12") + } + field(DLYD, DBF_DOUBLE) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Delay 13") + } + field(DOLD, DBF_INLINK) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Input link 13") + } + field(DOD, DBF_DOUBLE) { + prompt("Value 13") + interest(1) + } + field(LNKD, DBF_OUTLINK) { + prompt("Output Link 13") + promptgroup("42 - Link 8-F") + interest(1) + } + field(DLYE, DBF_DOUBLE) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Delay 14") + } + field(DOLE, DBF_INLINK) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Input link 14") + } + field(DOE, DBF_DOUBLE) { + prompt("Value 14") + interest(1) + } + field(LNKE, DBF_OUTLINK) { + prompt("Output Link 14") + interest(1) + promptgroup("42 - Link 8-F") + } + field(DLYF, DBF_DOUBLE) { + prompt("Delay 15") + promptgroup("42 - Link 8-F") + interest(1) + } + field(DOLF, DBF_INLINK) { + interest(1) + promptgroup("42 - Link 8-F") + prompt("Input link 15") + } + field(DOF, DBF_DOUBLE) { + interest(1) + prompt("Value 15") + } + field(LNKF, DBF_OUTLINK) { + promptgroup("42 - Link 8-F") + interest(1) + prompt("Output Link 15") + } +} +recordtype(aai) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + size(40) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + prompt("Alarm Ack Transient") + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + } + field(TIME, DBF_NOACCESS) { + interest(2) + special(SPC_NOMOD) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup("20 - Scan") + interest(1) + } + field(VAL, DBF_NOACCESS) { + special(SPC_DBADDR) + prompt("Value") + asl(ASL0) + extra("void * val") + pp(TRUE) + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + prop(YES) + promptgroup("80 - Display") + interest(1) + } + field(INP, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input Specification") + } + field(EGU, DBF_STRING) { + prompt("Engineering Units") + prop(YES) + interest(1) + promptgroup("80 - Display") + size(16) + } + field(HOPR, DBF_DOUBLE) { + interest(1) + prop(YES) + promptgroup("80 - Display") + prompt("High Operating Range") + } + field(LOPR, DBF_DOUBLE) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Low Operating Range") + } + field(NELM, DBF_ULONG) { + initial("1") + prompt("Number of Elements") + special(SPC_NOMOD) + interest(1) + promptgroup("30 - Action") + } + field(FTVL, DBF_MENU) { + special(SPC_NOMOD) + interest(1) + promptgroup("30 - Action") + prompt("Field Type of Value") + menu(menuFtype) + } + field(NORD, DBF_ULONG) { + prompt("Number elements read") + special(SPC_NOMOD) + } + field(BPTR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Buffer Pointer") + extra("void * bptr") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + prompt("Simulation Mode") + interest(1) + special(SPC_MOD) + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + prompt("Simulation Mode Severity") + promptgroup("90 - Simulate") + interest(2) + menu(menuAlarmSevr) + } + field(SIOL, DBF_INLINK) { + prompt("Simulation Input Link") + promptgroup("90 - Simulate") + interest(1) + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + menu(menuScan) + prompt("Sim. Mode Scan") + interest(1) + promptgroup("90 - Simulate") + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + interest(2) + promptgroup("90 - Simulate") + prompt("Sim. Mode Async Delay") + } + field(SIMPVT, DBF_NOACCESS) { + prompt("Sim. Mode Private") + special(SPC_NOMOD) + interest(4) + extra("CALLBACK *simpvt") + } + field(MPST, DBF_MENU) { + prompt("Post Value Monitors") + interest(1) + promptgroup("80 - Display") + menu(aaiPOST) + } + field(APST, DBF_MENU) { + promptgroup("80 - Display") + interest(1) + prompt("Post Archive Monitors") + menu(aaiPOST) + } + field(HASH, DBF_ULONG) { + prompt("Hash of OnChange data.") + interest(3) + } +} +device(aai, CONSTANT, devAaiSoft, "Soft Channel") +device(aai, INST_IO, devaaiStream, "stream") +recordtype(mbbo) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup("20 - Scan") + interest(1) + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + promptgroup("10 - Common") + interest(1) + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + } + field(BKLNK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + prompt("Alarm Ack Transient") + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + } + field(PPNR, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + interest(4) + special(SPC_NOMOD) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + } + field(RDES, DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + initial("INVALID") + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(2) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_ENUM) { + pp(TRUE) + promptgroup("50 - Output") + special(SPC_DBADDR) + prompt("Desired Value") + asl(ASL0) + } + field(DOL, DBF_INLINK) { + interest(1) + promptgroup("40 - Input") + prompt("Desired Output Loc") + } + field(OMSL, DBF_MENU) { + menu(menuOmsl) + promptgroup("50 - Output") + interest(1) + prompt("Output Mode Select") + } + field(NOBT, DBF_USHORT) { + special(SPC_NOMOD) + interest(1) + promptgroup("50 - Output") + prompt("Number of Bits") + } + field(OUT, DBF_OUTLINK) { + prompt("Output Specification") + interest(1) + promptgroup("50 - Output") + } + field(ZRVL, DBF_ULONG) { + prompt("Zero Value") + promptgroup("51 - Output 0-7") + interest(1) + special(SPC_MOD) + pp(TRUE) + base(HEX) + } + field(ONVL, DBF_ULONG) { + prompt("One Value") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output 0-7") + base(HEX) + pp(TRUE) + } + field(TWVL, DBF_ULONG) { + prompt("Two Value") + interest(1) + promptgroup("51 - Output 0-7") + special(SPC_MOD) + pp(TRUE) + base(HEX) + } + field(THVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + prompt("Three Value") + interest(1) + promptgroup("51 - Output 0-7") + special(SPC_MOD) + } + field(FRVL, DBF_ULONG) { + pp(TRUE) + base(HEX) + prompt("Four Value") + promptgroup("51 - Output 0-7") + interest(1) + special(SPC_MOD) + } + field(FVVL, DBF_ULONG) { + interest(1) + promptgroup("51 - Output 0-7") + special(SPC_MOD) + prompt("Five Value") + pp(TRUE) + base(HEX) + } + field(SXVL, DBF_ULONG) { + promptgroup("51 - Output 0-7") + interest(1) + special(SPC_MOD) + prompt("Six Value") + pp(TRUE) + base(HEX) + } + field(SVVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + prompt("Seven Value") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output 0-7") + } + field(EIVL, DBF_ULONG) { + prompt("Eight Value") + promptgroup("52 - Output 8-15") + interest(1) + special(SPC_MOD) + base(HEX) + pp(TRUE) + } + field(NIVL, DBF_ULONG) { + pp(TRUE) + base(HEX) + interest(1) + special(SPC_MOD) + promptgroup("52 - Output 8-15") + prompt("Nine Value") + } + field(TEVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + prompt("Ten Value") + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + } + field(ELVL, DBF_ULONG) { + pp(TRUE) + base(HEX) + prompt("Eleven Value") + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + } + field(TVVL, DBF_ULONG) { + prompt("Twelve Value") + special(SPC_MOD) + interest(1) + promptgroup("52 - Output 8-15") + pp(TRUE) + base(HEX) + } + field(TTVL, DBF_ULONG) { + prompt("Thirteen Value") + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + pp(TRUE) + base(HEX) + } + field(FTVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + prompt("Fourteen Value") + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + } + field(FFVL, DBF_ULONG) { + pp(TRUE) + base(HEX) + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + prompt("Fifteen Value") + } + field(ZRST, DBF_STRING) { + special(SPC_MOD) + interest(1) + promptgroup("81 - Display 0-7") + prompt("Zero String") + pp(TRUE) + size(26) + } + field(ONST, DBF_STRING) { + prompt("One String") + interest(1) + promptgroup("81 - Display 0-7") + special(SPC_MOD) + size(26) + pp(TRUE) + } + field(TWST, DBF_STRING) { + size(26) + pp(TRUE) + promptgroup("81 - Display 0-7") + interest(1) + special(SPC_MOD) + prompt("Two String") + } + field(THST, DBF_STRING) { + pp(TRUE) + size(26) + interest(1) + promptgroup("81 - Display 0-7") + special(SPC_MOD) + prompt("Three String") + } + field(FRST, DBF_STRING) { + interest(1) + promptgroup("81 - Display 0-7") + special(SPC_MOD) + prompt("Four String") + pp(TRUE) + size(26) + } + field(FVST, DBF_STRING) { + pp(TRUE) + size(26) + prompt("Five String") + interest(1) + promptgroup("81 - Display 0-7") + special(SPC_MOD) + } + field(SXST, DBF_STRING) { + interest(1) + promptgroup("81 - Display 0-7") + special(SPC_MOD) + prompt("Six String") + size(26) + pp(TRUE) + } + field(SVST, DBF_STRING) { + special(SPC_MOD) + interest(1) + promptgroup("81 - Display 0-7") + prompt("Seven String") + pp(TRUE) + size(26) + } + field(EIST, DBF_STRING) { + prompt("Eight String") + interest(1) + promptgroup("82 - Display 8-15") + special(SPC_MOD) + size(26) + pp(TRUE) + } + field(NIST, DBF_STRING) { + pp(TRUE) + size(26) + promptgroup("82 - Display 8-15") + interest(1) + special(SPC_MOD) + prompt("Nine String") + } + field(TEST, DBF_STRING) { + size(26) + pp(TRUE) + interest(1) + special(SPC_MOD) + promptgroup("82 - Display 8-15") + prompt("Ten String") + } + field(ELST, DBF_STRING) { + pp(TRUE) + size(26) + special(SPC_MOD) + interest(1) + promptgroup("82 - Display 8-15") + prompt("Eleven String") + } + field(TVST, DBF_STRING) { + interest(1) + promptgroup("82 - Display 8-15") + special(SPC_MOD) + prompt("Twelve String") + pp(TRUE) + size(26) + } + field(TTST, DBF_STRING) { + prompt("Thirteen String") + special(SPC_MOD) + interest(1) + promptgroup("82 - Display 8-15") + size(26) + pp(TRUE) + } + field(FTST, DBF_STRING) { + pp(TRUE) + size(26) + interest(1) + promptgroup("82 - Display 8-15") + special(SPC_MOD) + prompt("Fourteen String") + } + field(FFST, DBF_STRING) { + prompt("Fifteen String") + special(SPC_MOD) + interest(1) + promptgroup("82 - Display 8-15") + size(26) + pp(TRUE) + } + field(ZRSV, DBF_MENU) { + pp(TRUE) + interest(1) + promptgroup("71 - Alarm 0-7") + prompt("State Zero Severity") + menu(menuAlarmSevr) + } + field(ONSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + promptgroup("71 - Alarm 0-7") + interest(1) + prompt("State One Severity") + } + field(TWSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("State Two Severity") + promptgroup("71 - Alarm 0-7") + interest(1) + } + field(THSV, DBF_MENU) { + prompt("State Three Severity") + interest(1) + promptgroup("71 - Alarm 0-7") + menu(menuAlarmSevr) + pp(TRUE) + } + field(FRSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + promptgroup("71 - Alarm 0-7") + interest(1) + prompt("State Four Severity") + } + field(FVSV, DBF_MENU) { + pp(TRUE) + prompt("State Five Severity") + interest(1) + promptgroup("71 - Alarm 0-7") + menu(menuAlarmSevr) + } + field(SXSV, DBF_MENU) { + pp(TRUE) + promptgroup("71 - Alarm 0-7") + interest(1) + prompt("State Six Severity") + menu(menuAlarmSevr) + } + field(SVSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + interest(1) + promptgroup("71 - Alarm 0-7") + prompt("State Seven Severity") + } + field(EISV, DBF_MENU) { + promptgroup("72 - Alarm 8-15") + interest(1) + prompt("State Eight Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(NISV, DBF_MENU) { + interest(1) + promptgroup("72 - Alarm 8-15") + prompt("State Nine Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(TESV, DBF_MENU) { + prompt("State Ten Severity") + promptgroup("72 - Alarm 8-15") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(ELSV, DBF_MENU) { + pp(TRUE) + interest(1) + promptgroup("72 - Alarm 8-15") + prompt("State Eleven Severity") + menu(menuAlarmSevr) + } + field(TVSV, DBF_MENU) { + prompt("State Twelve Severity") + promptgroup("72 - Alarm 8-15") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(TTSV, DBF_MENU) { + pp(TRUE) + interest(1) + promptgroup("72 - Alarm 8-15") + prompt("State Thirteen Sevr") + menu(menuAlarmSevr) + } + field(FTSV, DBF_MENU) { + prompt("State Fourteen Sevr") + promptgroup("72 - Alarm 8-15") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(FFSV, DBF_MENU) { + prompt("State Fifteen Sevr") + promptgroup("72 - Alarm 8-15") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(UNSV, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Unknown State Sevr") + menu(menuAlarmSevr) + pp(TRUE) + } + field(COSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Change of State Sevr") + } + field(RVAL, DBF_ULONG) { + pp(TRUE) + prompt("Raw Value") + } + field(ORAW, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Raw Value") + } + field(RBV, DBF_ULONG) { + special(SPC_NOMOD) + prompt("Readback Value") + } + field(ORBV, DBF_ULONG) { + prompt("Prev Readback Value") + special(SPC_NOMOD) + interest(3) + } + field(MASK, DBF_ULONG) { + prompt("Hardware Mask") + special(SPC_NOMOD) + interest(1) + } + field(MLST, DBF_USHORT) { + prompt("Last Value Monitored") + special(SPC_NOMOD) + interest(3) + } + field(LALM, DBF_USHORT) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(SDEF, DBF_SHORT) { + prompt("States Defined") + interest(3) + special(SPC_NOMOD) + } + field(SHFT, DBF_USHORT) { + promptgroup("50 - Output") + interest(1) + prompt("Shift") + } + field(SIOL, DBF_OUTLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Output Link") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + interest(1) + special(SPC_MOD) + prompt("Simulation Mode") + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + promptgroup("90 - Simulate") + interest(2) + prompt("Simulation Mode Severity") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + special(SPC_NOMOD) + interest(4) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + initial("65535") + menu(menuScan) + promptgroup("90 - Simulate") + interest(1) + prompt("Sim. Mode Scan") + } + field(SDLY, DBF_DOUBLE) { + prompt("Sim. Mode Async Delay") + interest(2) + promptgroup("90 - Simulate") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + special(SPC_NOMOD) + interest(4) + prompt("Sim. Mode Private") + } + field(IVOA, DBF_MENU) { + prompt("INVALID outpt action") + promptgroup("50 - Output") + interest(2) + menu(menuIvoa) + } + field(IVOV, DBF_USHORT) { + interest(2) + promptgroup("50 - Output") + prompt("INVALID output value") + } +} +device(mbbo, CONSTANT, devMbboSoft, "Soft Channel") +device(mbbo, CONSTANT, devMbboSoftRaw, "Raw Soft Channel") +device(mbbo, CONSTANT, devMbboSoftCallback, "Async Soft Channel") +device(mbbo, INST_IO, asynMbboInt32, "asynInt32") +device(mbbo, INST_IO, asynMbboUInt32Digital, "asynUInt32Digital") +device(mbbo, INST_IO, devmbboStream, "stream") +device(mbbo, INST_IO, devMbboMPC, "asyn MPC") +device(mbbo, INST_IO, devMbboTPG261, "asyn TPG261") +recordtype(printf) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "devSup.h" + % + %/* Declare Device Support Entry Table */ + %typedef struct printfdset { + % long number; + % DEVSUPFUN report; + % DEVSUPFUN init; + % DEVSUPFUN init_record; + % DEVSUPFUN get_ioint_info; + % DEVSUPFUN write_string; + %} printfdset; + % + %/* Number of INPx fields defined */ + %#define PRINTF_NLINKS 10 + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + } + field(SCAN, DBF_MENU) { + menu(menuScan) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + } + field(PHAS, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKS, DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + interest(4) + special(SPC_NOMOD) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(2) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_NOACCESS) { + asl(ASL0) + special(SPC_DBADDR) + prompt("Result") + extra("char *val") + pp(TRUE) + } + field(SIZV, DBF_USHORT) { + initial("41") + interest(1) + promptgroup("30 - Action") + special(SPC_NOMOD) + prompt("Size of VAL buffer") + } + field(LEN, DBF_ULONG) { + special(SPC_NOMOD) + prompt("Length of VAL") + } + field(OUT, DBF_OUTLINK) { + prompt("Output Specification") + interest(1) + promptgroup("50 - Output") + } + field(FMT, DBF_STRING) { + pp(TRUE) + size(81) + promptgroup("30 - Action") + prompt("Format String") + } + field(IVLS, DBF_STRING) { + initial("LNK") + size(16) + prompt("Invalid Link String") + promptgroup("30 - Action") + } + field(INP0, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input 0") + } + field(INP1, DBF_INLINK) { + prompt("Input 1") + promptgroup("40 - Input") + interest(1) + } + field(INP2, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input 2") + } + field(INP3, DBF_INLINK) { + prompt("Input 3") + promptgroup("40 - Input") + interest(1) + } + field(INP4, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input 4") + } + field(INP5, DBF_INLINK) { + prompt("Input 5") + interest(1) + promptgroup("40 - Input") + } + field(INP6, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input 6") + } + field(INP7, DBF_INLINK) { + prompt("Input 7") + interest(1) + promptgroup("40 - Input") + } + field(INP8, DBF_INLINK) { + prompt("Input 8") + interest(1) + promptgroup("40 - Input") + } + field(INP9, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input 9") + } +} +device(printf, CONSTANT, devPrintfSoft, "Soft Channel") +device(printf, CONSTANT, devPrintfSoftCallback, "Async Soft Channel") +device(printf, INST_IO, devPrintfStdio, "stdio") +recordtype(ao) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + special(SPC_NOMOD) + prompt("Record Name") + size(61) + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + size(29) + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + special(SPC_NOMOD) + interest(4) + } + field(MLIS, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + prompt("Force Processing") + interest(3) + } + field(STAT, DBF_MENU) { + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + special(SPC_NOMOD) + interest(2) + } + field(FLNK, DBF_FWDLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Forward Process Link") + } + field(VAL, DBF_DOUBLE) { + pp(TRUE) + asl(ASL0) + prompt("Desired Output") + promptgroup("50 - Output") + } + field(OVAL, DBF_DOUBLE) { + prompt("Output Value") + } + field(OUT, DBF_OUTLINK) { + prompt("Output Specification") + interest(1) + promptgroup("50 - Output") + } + field(OROC, DBF_DOUBLE) { + promptgroup("50 - Output") + interest(1) + prompt("Output Rate of Change") + } + field(DOL, DBF_INLINK) { + prompt("Desired Output Loc") + interest(1) + promptgroup("40 - Input") + } + field(OMSL, DBF_MENU) { + prompt("Output Mode Select") + promptgroup("50 - Output") + interest(1) + menu(menuOmsl) + } + field(OIF, DBF_MENU) { + promptgroup("50 - Output") + interest(1) + prompt("Out Full/Incremental") + menu(aoOIF) + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + promptgroup("80 - Display") + prop(YES) + interest(1) + } + field(LINR, DBF_MENU) { + pp(TRUE) + promptgroup("60 - Convert") + interest(1) + special(SPC_LINCONV) + prompt("Linearization") + menu(menuConvert) + } + field(EGUF, DBF_DOUBLE) { + pp(TRUE) + prompt("Eng Units Full") + special(SPC_LINCONV) + interest(1) + promptgroup("60 - Convert") + } + field(EGUL, DBF_DOUBLE) { + prompt("Eng Units Low") + interest(1) + special(SPC_LINCONV) + promptgroup("60 - Convert") + pp(TRUE) + } + field(EGU, DBF_STRING) { + promptgroup("80 - Display") + prop(YES) + interest(1) + prompt("Engineering Units") + size(16) + } + field(ROFF, DBF_ULONG) { + pp(TRUE) + interest(2) + prompt("Raw Offset") + } + field(EOFF, DBF_DOUBLE) { + pp(TRUE) + promptgroup("60 - Convert") + interest(2) + prompt("EGU to Raw Offset") + } + field(ESLO, DBF_DOUBLE) { + initial("1") + pp(TRUE) + prompt("EGU to Raw Slope") + interest(2) + promptgroup("60 - Convert") + } + field(DRVH, DBF_DOUBLE) { + prompt("Drive High Limit") + prop(YES) + interest(1) + promptgroup("30 - Action") + pp(TRUE) + } + field(DRVL, DBF_DOUBLE) { + pp(TRUE) + prop(YES) + promptgroup("30 - Action") + interest(1) + prompt("Drive Low Limit") + } + field(HOPR, DBF_DOUBLE) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("High Operating Range") + } + field(LOPR, DBF_DOUBLE) { + prompt("Low Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(AOFF, DBF_DOUBLE) { + pp(TRUE) + interest(1) + promptgroup("60 - Convert") + prompt("Adjustment Offset") + } + field(ASLO, DBF_DOUBLE) { + interest(1) + promptgroup("60 - Convert") + prompt("Adjustment Slope") + pp(TRUE) + } + field(HIHI, DBF_DOUBLE) { + pp(TRUE) + prompt("Hihi Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(LOLO, DBF_DOUBLE) { + pp(TRUE) + prompt("Lolo Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + } + field(HIGH, DBF_DOUBLE) { + pp(TRUE) + prompt("High Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(LOW, DBF_DOUBLE) { + pp(TRUE) + prop(YES) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Alarm Limit") + } + field(HHSV, DBF_MENU) { + prompt("Hihi Severity") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(LLSV, DBF_MENU) { + prompt("Lolo Severity") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + pp(TRUE) + } + field(HSV, DBF_MENU) { + prop(YES) + interest(1) + promptgroup("70 - Alarm") + prompt("High Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(LSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prop(YES) + promptgroup("70 - Alarm") + interest(1) + prompt("Low Severity") + } + field(HYST, DBF_DOUBLE) { + prompt("Alarm Deadband") + interest(1) + promptgroup("70 - Alarm") + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup("80 - Display") + interest(1) + } + field(MDEL, DBF_DOUBLE) { + promptgroup("80 - Display") + interest(1) + prompt("Monitor Deadband") + } + field(RVAL, DBF_LONG) { + prompt("Current Raw Value") + pp(TRUE) + } + field(ORAW, DBF_LONG) { + interest(3) + special(SPC_NOMOD) + prompt("Previous Raw Value") + } + field(RBV, DBF_LONG) { + prompt("Readback Value") + special(SPC_NOMOD) + } + field(ORBV, DBF_LONG) { + prompt("Prev Readback Value") + special(SPC_NOMOD) + interest(3) + } + field(PVAL, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Previous value") + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(ALST, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Archived") + } + field(MLST, DBF_DOUBLE) { + prompt("Last Val Monitored") + interest(3) + special(SPC_NOMOD) + } + field(PBRK, DBF_NOACCESS) { + extra("void * pbrk") + interest(4) + special(SPC_NOMOD) + prompt("Ptrto brkTable") + } + field(INIT, DBF_SHORT) { + prompt("Initialized?") + interest(3) + special(SPC_NOMOD) + } + field(LBRK, DBF_SHORT) { + prompt("LastBreak Point") + interest(3) + special(SPC_NOMOD) + } + field(SIOL, DBF_OUTLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Output Link") + } + field(SIML, DBF_INLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Mode Link") + } + field(SIMM, DBF_MENU) { + prompt("Simulation Mode") + interest(1) + special(SPC_MOD) + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + promptgroup("90 - Simulate") + interest(1) + prompt("Sim. Mode Scan") + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + prompt("Sim. Mode Async Delay") + interest(2) + promptgroup("90 - Simulate") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + prompt("Sim. Mode Private") + special(SPC_NOMOD) + interest(4) + extra("CALLBACK *simpvt") + } + field(IVOA, DBF_MENU) { + prompt("INVALID output action") + promptgroup("50 - Output") + interest(2) + menu(menuIvoa) + } + field(IVOV, DBF_DOUBLE) { + promptgroup("50 - Output") + interest(2) + prompt("INVALID output value") + } + field(OMOD, DBF_UCHAR) { + special(SPC_NOMOD) + prompt("Was OVAL modified?") + } +} +device(ao, CONSTANT, devAoSoft, "Soft Channel") +device(ao, CONSTANT, devAoSoftRaw, "Raw Soft Channel") +device(ao, CONSTANT, devAoSoftCallback, "Async Soft Channel") +device(ao, INST_IO, asynAoInt32, "asynInt32") +device(ao, INST_IO, asynAoFloat64, "asynFloat64") +device(ao, INST_IO, devaoStream, "stream") +device(ao, INST_IO, devAoStrParm, "asyn ao stringParm") +device(ao, INST_IO, devAoEurotherm, "asyn ao Eurotherm") +device(ao, INST_IO, devAoMPC, "asyn MPC") +device(ao, BBGPIB_IO, devAoAX301, "PZT Bug") +device(ao, INST_IO, devAoTPG261, "asyn TPG261") +recordtype(asyn) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + special(SPC_AS) + promptgroup("10 - Common") + prompt("Access Security Group") + } + field(SCAN, DBF_MENU) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + } + field(PHAS, DBF_SHORT) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + promptgroup("20 - Scan") + interest(1) + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + interest(2) + special(SPC_NOMOD) + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + special(SPC_NOMOD) + interest(4) + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + } + field(LSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scheduling Priority") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_LONG) { + asl(ASL0) + interest(4) + prompt("Value field (unused)") + } + field(PORT, DBF_STRING) { + prompt("asyn port") + interest(1) + special(SPC_MOD) + promptgroup("40 - Input") + size(40) + initial("") + } + field(ADDR, DBF_LONG) { + promptgroup("40 - Input") + interest(1) + special(SPC_MOD) + prompt("asyn address") + initial("0") + } + field(PCNCT, DBF_MENU) { + menu(asynCONNECT) + prompt("Port Connect/Disconnect") + interest(2) + special(SPC_MOD) + } + field(DRVINFO, DBF_STRING) { + promptgroup("40 - Input") + interest(2) + special(SPC_MOD) + prompt("Driver info string") + size(40) + initial("") + } + field(REASON, DBF_LONG) { + prompt("asynUser->reason") + interest(2) + special(SPC_MOD) + } + field(TMOD, DBF_MENU) { + prompt("Transaction mode") + interest(1) + promptgroup("40 - Input") + menu(asynTMOD) + } + field(TMOT, DBF_DOUBLE) { + initial("1.0") + prompt("Timeout (sec)") + promptgroup("40 - Input") + interest(1) + } + field(IFACE, DBF_MENU) { + menu(asynINTERFACE) + prompt("Interface") + special(SPC_MOD) + interest(2) + promptgroup("40 - Input") + } + field(OCTETIV, DBF_LONG) { + interest(2) + prompt("asynOctet is valid") + } + field(OPTIONIV, DBF_LONG) { + interest(2) + prompt("asynOption is valid") + } + field(GPIBIV, DBF_LONG) { + prompt("asynGPIB is valid") + interest(2) + } + field(I32IV, DBF_LONG) { + interest(2) + prompt("asynInt32 is valid") + } + field(UI32IV, DBF_LONG) { + interest(2) + prompt("asynUInt32Digital is valid") + } + field(F64IV, DBF_LONG) { + prompt("asynFloat64 is valid") + interest(2) + } + field(AOUT, DBF_STRING) { + size(40) + pp(TRUE) + interest(1) + promptgroup("50 - Output") + prompt("Output (command) string") + } + field(OEOS, DBF_STRING) { + promptgroup("50 - Output") + special(SPC_MOD) + interest(1) + prompt("Output delimiter") + size(40) + } + field(BOUT, DBF_CHAR) { + prompt("Output binary data") + interest(1) + special(SPC_DBADDR) + pp(TRUE) + } + field(OPTR, DBF_NOACCESS) { + extra("void *optr") + special(SPC_NOMOD) + interest(4) + prompt("Output buffer pointer") + } + field(OMAX, DBF_LONG) { + initial("80") + prompt("Max. size of output array") + interest(1) + special(SPC_NOMOD) + promptgroup("50 - Output") + } + field(NOWT, DBF_LONG) { + promptgroup("50 - Output") + interest(1) + prompt("Number of bytes to write") + initial("80") + } + field(NAWT, DBF_LONG) { + interest(1) + prompt("Number of bytes actually written") + } + field(OFMT, DBF_MENU) { + promptgroup("50 - Output") + interest(1) + prompt("Output format") + menu(asynFMT) + } + field(AINP, DBF_STRING) { + prompt("Input (response) string") + special(SPC_NOMOD) + interest(1) + size(40) + } + field(TINP, DBF_STRING) { + prompt("Translated input string") + special(SPC_NOMOD) + interest(1) + asl(ASL0) + size(40) + } + field(IEOS, DBF_STRING) { + prompt("Input Delimiter") + special(SPC_MOD) + interest(1) + promptgroup("40 - Input") + size(40) + } + field(BINP, DBF_CHAR) { + special(SPC_DBADDR) + prompt("Input binary data") + asl(ASL0) + } + field(IPTR, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Input buffer pointer") + extra("void *iptr") + size(4) + } + field(IMAX, DBF_LONG) { + initial("80") + prompt("Max. size of input array") + interest(1) + promptgroup("40 - Input") + special(SPC_NOMOD) + } + field(NRRD, DBF_LONG) { + promptgroup("40 - Input") + interest(1) + prompt("Number of bytes to read") + } + field(NORD, DBF_LONG) { + interest(1) + special(SPC_NOMOD) + prompt("Number of bytes read") + } + field(IFMT, DBF_MENU) { + menu(asynFMT) + prompt("Input format") + interest(1) + promptgroup("40 - Input") + } + field(EOMR, DBF_MENU) { + menu(asynEOMREASON) + special(SPC_NOMOD) + interest(1) + prompt("EOM reason") + } + field(I32INP, DBF_LONG) { + prompt("asynInt32 input") + interest(2) + special(SPC_NOMOD) + } + field(I32OUT, DBF_LONG) { + pp(TRUE) + prompt("asynInt32 output") + promptgroup("50 - Output") + interest(2) + } + field(UI32INP, DBF_ULONG) { + special(SPC_NOMOD) + interest(2) + prompt("asynUInt32Digital input") + } + field(UI32OUT, DBF_ULONG) { + interest(2) + promptgroup("50 - Output") + prompt("asynUInt32Digital output") + pp(TRUE) + } + field(UI32MASK, DBF_ULONG) { + initial("0xffffffff") + prompt("asynUInt32Digital mask") + interest(2) + promptgroup("50 - Output") + special(SPC_MOD) + } + field(F64INP, DBF_DOUBLE) { + prompt("asynFloat64 input") + interest(2) + special(SPC_NOMOD) + } + field(F64OUT, DBF_DOUBLE) { + promptgroup("50 - Output") + interest(2) + prompt("asynFloat64 output") + pp(TRUE) + } + field(BAUD, DBF_MENU) { + menu(serialBAUD) + prompt("Baud rate") + promptgroup("40 - Input") + special(SPC_MOD) + interest(2) + } + field(LBAUD, DBF_LONG) { + special(SPC_MOD) + promptgroup("40 - Input") + interest(2) + prompt("Baud rate") + } + field(PRTY, DBF_MENU) { + menu(serialPRTY) + special(SPC_MOD) + promptgroup("40 - Input") + interest(2) + prompt("Parity") + } + field(DBIT, DBF_MENU) { + special(SPC_MOD) + promptgroup("40 - Input") + interest(2) + prompt("Data bits") + menu(serialDBIT) + } + field(SBIT, DBF_MENU) { + interest(2) + special(SPC_MOD) + promptgroup("40 - Input") + prompt("Stop bits") + menu(serialSBIT) + } + field(MCTL, DBF_MENU) { + interest(2) + special(SPC_MOD) + promptgroup("40 - Input") + prompt("Modem control") + menu(serialMCTL) + } + field(FCTL, DBF_MENU) { + prompt("Flow control") + special(SPC_MOD) + interest(2) + promptgroup("40 - Input") + menu(serialFCTL) + } + field(IXON, DBF_MENU) { + menu(serialIX) + promptgroup("40 - Input") + special(SPC_MOD) + interest(2) + prompt("Output XON/XOFF") + } + field(IXOFF, DBF_MENU) { + interest(2) + special(SPC_MOD) + promptgroup("40 - Input") + prompt("Input XON/XOFF") + menu(serialIX) + } + field(IXANY, DBF_MENU) { + menu(serialIX) + special(SPC_MOD) + interest(2) + promptgroup("40 - Input") + prompt("XON=any character") + } + field(HOSTINFO, DBF_STRING) { + prompt("host info") + promptgroup("40 - Input") + interest(1) + special(SPC_MOD) + initial("") + size(40) + } + field(DRTO, DBF_MENU) { + menu(ipDRTO) + promptgroup("40 - Input") + special(SPC_MOD) + interest(2) + prompt("Disconnect on timeout") + } + field(UCMD, DBF_MENU) { + pp(TRUE) + interest(2) + promptgroup("50 - Output") + prompt("Universal command") + menu(gpibUCMD) + } + field(ACMD, DBF_MENU) { + menu(gpibACMD) + prompt("Addressed command") + promptgroup("50 - Output") + interest(2) + pp(TRUE) + } + field(SPR, DBF_UCHAR) { + special(SPC_NOMOD) + interest(2) + prompt("Serial poll response") + } + field(TMSK, DBF_LONG) { + prompt("Trace mask") + interest(1) + promptgroup("80 - Display") + special(SPC_MOD) + } + field(TB0, DBF_MENU) { + interest(1) + special(SPC_MOD) + promptgroup("80 - Display") + prompt("Trace error") + menu(asynTRACE) + } + field(TB1, DBF_MENU) { + menu(asynTRACE) + prompt("Trace IO device") + special(SPC_MOD) + interest(1) + promptgroup("80 - Display") + } + field(TB2, DBF_MENU) { + special(SPC_MOD) + interest(1) + promptgroup("80 - Display") + prompt("Trace IO filter") + menu(asynTRACE) + } + field(TB3, DBF_MENU) { + special(SPC_MOD) + interest(1) + promptgroup("80 - Display") + prompt("Trace IO driver") + menu(asynTRACE) + } + field(TB4, DBF_MENU) { + menu(asynTRACE) + prompt("Trace flow") + interest(1) + special(SPC_MOD) + promptgroup("80 - Display") + } + field(TB5, DBF_MENU) { + interest(1) + special(SPC_MOD) + promptgroup("80 - Display") + prompt("Trace warning") + menu(asynTRACE) + } + field(TIOM, DBF_LONG) { + prompt("Trace I/O mask") + promptgroup("80 - Display") + interest(1) + special(SPC_MOD) + } + field(TIB0, DBF_MENU) { + menu(asynTRACE) + prompt("Trace IO ASCII") + promptgroup("80 - Display") + interest(1) + special(SPC_MOD) + } + field(TIB1, DBF_MENU) { + menu(asynTRACE) + special(SPC_MOD) + interest(1) + promptgroup("80 - Display") + prompt("Trace IO escape") + } + field(TIB2, DBF_MENU) { + interest(1) + promptgroup("80 - Display") + special(SPC_MOD) + prompt("Trace IO hex") + menu(asynTRACE) + } + field(TINM, DBF_LONG) { + prompt("Trace Info mask") + interest(1) + promptgroup("80 - Display") + special(SPC_MOD) + } + field(TINB0, DBF_MENU) { + menu(asynTRACE) + special(SPC_MOD) + interest(1) + promptgroup("80 - Display") + prompt("Trace Info Time") + } + field(TINB1, DBF_MENU) { + prompt("Trace Info Port") + promptgroup("80 - Display") + interest(1) + special(SPC_MOD) + menu(asynTRACE) + } + field(TINB2, DBF_MENU) { + menu(asynTRACE) + prompt("Trace Info Source") + interest(1) + special(SPC_MOD) + promptgroup("80 - Display") + } + field(TINB3, DBF_MENU) { + menu(asynTRACE) + prompt("Trace Info Thread") + promptgroup("80 - Display") + interest(1) + special(SPC_MOD) + } + field(TSIZ, DBF_LONG) { + prompt("Trace IO truncate size") + interest(1) + special(SPC_MOD) + promptgroup("80 - Display") + } + field(TFIL, DBF_STRING) { + prompt("Trace IO file") + interest(1) + promptgroup("80 - Display") + special(SPC_MOD) + size(40) + } + field(AUCT, DBF_MENU) { + menu(asynAUTOCONNECT) + prompt("Autoconnect") + special(SPC_MOD) + interest(1) + promptgroup("40 - Input") + } + field(CNCT, DBF_MENU) { + special(SPC_MOD) + interest(1) + promptgroup("40 - Input") + prompt("Connect/Disconnect") + menu(asynCONNECT) + } + field(ENBL, DBF_MENU) { + menu(asynENABLE) + interest(1) + promptgroup("40 - Input") + special(SPC_MOD) + prompt("Enable/Disable") + } + field(ERRS, DBF_NOACCESS) { + interest(4) + special(SPC_DBADDR) + prompt("Error string") + extra("char *errs") + } + field(AQR, DBF_UCHAR) { + interest(4) + special(SPC_MOD) + prompt("Abort queueRequest") + } +} +device(asyn, INST_IO, asynRecordDevice, "asynRecordDevice") +recordtype(aao) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + special(SPC_NOMOD) + prompt("Record Name") + size(61) + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + prompt("Scan Mechanism") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + interest(1) + promptgroup("20 - Scan") + prompt("Process at iocInit") + } + field(PHAS, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup("20 - Scan") + interest(1) + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + prompt("Disable Value") + promptgroup("20 - Scan") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + prompt("Alarm Ack Transient") + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + interest(1) + special(SPC_NOMOD) + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + pp(TRUE) + initial("1") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + } + field(TIME, DBF_NOACCESS) { + prompt("Time") + interest(2) + special(SPC_NOMOD) + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_NOACCESS) { + asl(ASL0) + prompt("Value") + special(SPC_DBADDR) + pp(TRUE) + extra("void * val") + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + promptgroup("80 - Display") + prop(YES) + interest(1) + } + field(OUT, DBF_OUTLINK) { + promptgroup("50 - Output") + interest(1) + prompt("Output Specification") + } + field(EGU, DBF_STRING) { + size(16) + prompt("Engineering Units") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Range") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(LOPR, DBF_DOUBLE) { + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("Low Operating Range") + } + field(NELM, DBF_ULONG) { + initial("1") + prompt("Number of Elements") + interest(1) + special(SPC_NOMOD) + promptgroup("30 - Action") + } + field(FTVL, DBF_MENU) { + prompt("Field Type of Value") + interest(1) + special(SPC_NOMOD) + promptgroup("30 - Action") + menu(menuFtype) + } + field(NORD, DBF_ULONG) { + special(SPC_NOMOD) + prompt("Number elements read") + } + field(BPTR, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Buffer Pointer") + extra("void * bptr") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SIMM, DBF_MENU) { + prompt("Simulation Mode") + special(SPC_MOD) + interest(1) + menu(menuYesNo) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + promptgroup("90 - Simulate") + prompt("Simulation Mode Severity") + } + field(SIOL, DBF_OUTLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Output Link") + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + prompt("Sim. Mode Async Delay") + interest(2) + promptgroup("90 - Simulate") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + prompt("Sim. Mode Private") + special(SPC_NOMOD) + interest(4) + } + field(MPST, DBF_MENU) { + menu(aaoPOST) + interest(1) + promptgroup("80 - Display") + prompt("Post Value Monitors") + } + field(APST, DBF_MENU) { + interest(1) + promptgroup("80 - Display") + prompt("Post Archive Monitors") + menu(aaoPOST) + } + field(HASH, DBF_ULONG) { + interest(3) + prompt("Hash of OnChange data.") + } +} +device(aao, CONSTANT, devAaoSoft, "Soft Channel") +device(aao, INST_IO, devaaoStream, "stream") +recordtype(bi) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(PINI, DBF_MENU) { + menu(menuPini) + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(EVNT, DBF_STRING) { + size(40) + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Event Name") + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + promptgroup("10 - Common") + interest(1) + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + interest(1) + special(SPC_NOMOD) + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + interest(1) + special(SPC_NOMOD) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + initial("1") + pp(TRUE) + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(TIME, DBF_NOACCESS) { + prompt("Time") + interest(2) + special(SPC_NOMOD) + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(INP, DBF_INLINK) { + prompt("Input Specification") + promptgroup("40 - Input") + interest(1) + } + field(VAL, DBF_ENUM) { + asl(ASL0) + prompt("Current Value") + promptgroup("40 - Input") + pp(TRUE) + } + field(ZSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("Zero Error Severity") + promptgroup("70 - Alarm") + interest(1) + } + field(OSV, DBF_MENU) { + pp(TRUE) + promptgroup("70 - Alarm") + interest(1) + prompt("One Error Severity") + menu(menuAlarmSevr) + } + field(COSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Change of State Svr") + } + field(ZNAM, DBF_STRING) { + prompt("Zero Name") + prop(YES) + interest(1) + promptgroup("80 - Display") + pp(TRUE) + size(26) + } + field(ONAM, DBF_STRING) { + pp(TRUE) + size(26) + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("One Name") + } + field(RVAL, DBF_ULONG) { + pp(TRUE) + prompt("Raw Value") + } + field(ORAW, DBF_ULONG) { + special(SPC_NOMOD) + interest(3) + prompt("prev Raw Value") + } + field(MASK, DBF_ULONG) { + interest(1) + special(SPC_NOMOD) + prompt("Hardware Mask") + } + field(LALM, DBF_USHORT) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Alarmed") + } + field(MLST, DBF_USHORT) { + prompt("Last Value Monitored") + interest(3) + special(SPC_NOMOD) + } + field(SIOL, DBF_INLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Input Link") + } + field(SVAL, DBF_ULONG) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Mode Link") + } + field(SIMM, DBF_MENU) { + menu(menuSimm) + prompt("Simulation Mode") + special(SPC_MOD) + interest(1) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + interest(4) + special(SPC_NOMOD) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + prompt("Sim. Mode Scan") + promptgroup("90 - Simulate") + interest(1) + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + promptgroup("90 - Simulate") + interest(2) + prompt("Sim. Mode Async Delay") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Sim. Mode Private") + extra("CALLBACK *simpvt") + } +} +device(bi, CONSTANT, devBiSoft, "Soft Channel") +device(bi, CONSTANT, devBiSoftRaw, "Raw Soft Channel") +device(bi, CONSTANT, devBiSoftCallback, "Async Soft Channel") +device(bi, INST_IO, devBiDbState, "Db State") +device(bi, INST_IO, asynBiInt32, "asynInt32") +device(bi, INST_IO, asynBiUInt32Digital, "asynUInt32Digital") +device(bi, INST_IO, devbiStream, "stream") +device(bi, INST_IO, devBiStrParm, "asyn bi stringParm") +device(bi, INST_IO, devBiMPC, "asyn MPC") +device(bi, GPIB_IO, devBiGP307Gpib, "Vg307 GPIB Instrument") +device(bi, INST_IO, devBiTelevac, "asyn Televac") +device(bi, INST_IO, devBiTPG261, "asyn TPG261") +recordtype(sub) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %struct subRecord; + %typedef long (*SUBFUNCPTR)(struct subRecord *); + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + } + field(BKLNK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + prompt("Force Processing") + interest(3) + } + field(STAT, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKT, DBF_MENU) { + initial("YES") + prompt("Alarm Ack Transient") + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(2) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + special(SPC_NOMOD) + interest(4) + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + } + field(RDES, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_DOUBLE) { + pp(TRUE) + prompt("Result") + asl(ASL0) + } + field(INAM, DBF_STRING) { + size(40) + special(SPC_NOMOD) + interest(1) + promptgroup("30 - Action") + prompt("Init Routine Name") + } + field(SNAM, DBF_STRING) { + size(40) + prompt("Subroutine Name") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + } + field(SADR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Subroutine Address") + extra("SUBFUNCPTR sadr") + } + field(INPA, DBF_INLINK) { + prompt("Input A") + promptgroup("41 - Input A-F") + interest(1) + } + field(INPB, DBF_INLINK) { + prompt("Input B") + promptgroup("41 - Input A-F") + interest(1) + } + field(INPC, DBF_INLINK) { + promptgroup("41 - Input A-F") + interest(1) + prompt("Input C") + } + field(INPD, DBF_INLINK) { + interest(1) + promptgroup("41 - Input A-F") + prompt("Input D") + } + field(INPE, DBF_INLINK) { + prompt("Input E") + promptgroup("41 - Input A-F") + interest(1) + } + field(INPF, DBF_INLINK) { + prompt("Input F") + promptgroup("41 - Input A-F") + interest(1) + } + field(INPG, DBF_INLINK) { + prompt("Input G") + promptgroup("42 - Input G-L") + interest(1) + } + field(INPH, DBF_INLINK) { + prompt("Input H") + interest(1) + promptgroup("42 - Input G-L") + } + field(INPI, DBF_INLINK) { + promptgroup("42 - Input G-L") + interest(1) + prompt("Input I") + } + field(INPJ, DBF_INLINK) { + prompt("Input J") + interest(1) + promptgroup("42 - Input G-L") + } + field(INPK, DBF_INLINK) { + interest(1) + promptgroup("42 - Input G-L") + prompt("Input K") + } + field(INPL, DBF_INLINK) { + promptgroup("42 - Input G-L") + interest(1) + prompt("Input L") + } + field(EGU, DBF_STRING) { + prompt("Engineering Units") + prop(YES) + interest(1) + promptgroup("80 - Display") + size(16) + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Range") + prop(YES) + promptgroup("80 - Display") + interest(1) + } + field(LOPR, DBF_DOUBLE) { + prompt("Low Operating Range") + prop(YES) + promptgroup("80 - Display") + interest(1) + } + field(HIHI, DBF_DOUBLE) { + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("Hihi Alarm Limit") + pp(TRUE) + } + field(LOLO, DBF_DOUBLE) { + pp(TRUE) + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("Lolo Alarm Limit") + } + field(HIGH, DBF_DOUBLE) { + prompt("High Alarm Limit") + interest(1) + prop(YES) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(LOW, DBF_DOUBLE) { + prompt("Low Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(BRSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("Bad Return Severity") + promptgroup("70 - Alarm") + interest(1) + } + field(HHSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Hihi Severity") + interest(1) + prop(YES) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(LLSV, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("Lolo Severity") + pp(TRUE) + } + field(HSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("High Severity") + } + field(LSV, DBF_MENU) { + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("Low Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(HYST, DBF_DOUBLE) { + promptgroup("70 - Alarm") + interest(1) + prompt("Alarm Deadband") + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup("80 - Display") + interest(1) + } + field(A, DBF_DOUBLE) { + prompt("Value of Input A") + pp(TRUE) + } + field(B, DBF_DOUBLE) { + prompt("Value of Input B") + pp(TRUE) + } + field(C, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input C") + } + field(D, DBF_DOUBLE) { + prompt("Value of Input D") + pp(TRUE) + } + field(E, DBF_DOUBLE) { + prompt("Value of Input E") + pp(TRUE) + } + field(F, DBF_DOUBLE) { + prompt("Value of Input F") + pp(TRUE) + } + field(G, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input G") + } + field(H, DBF_DOUBLE) { + prompt("Value of Input H") + pp(TRUE) + } + field(I, DBF_DOUBLE) { + prompt("Value of Input I") + pp(TRUE) + } + field(J, DBF_DOUBLE) { + prompt("Value of Input J") + pp(TRUE) + } + field(K, DBF_DOUBLE) { + prompt("Value of Input K") + pp(TRUE) + } + field(L, DBF_DOUBLE) { + prompt("Value of Input L") + pp(TRUE) + } + field(LA, DBF_DOUBLE) { + prompt("Prev Value of A") + interest(3) + special(SPC_NOMOD) + } + field(LB, DBF_DOUBLE) { + prompt("Prev Value of B") + interest(3) + special(SPC_NOMOD) + } + field(LC, DBF_DOUBLE) { + prompt("Prev Value of C") + interest(3) + special(SPC_NOMOD) + } + field(LD, DBF_DOUBLE) { + prompt("Prev Value of D") + interest(3) + special(SPC_NOMOD) + } + field(LE, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of E") + } + field(LF, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of F") + } + field(LG, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of G") + } + field(LH, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of H") + } + field(LI, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of I") + } + field(LJ, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of J") + } + field(LK, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of K") + } + field(LL, DBF_DOUBLE) { + prompt("Prev Value of L") + special(SPC_NOMOD) + interest(3) + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(ALST, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Archived") + } + field(MLST, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Monitored") + } +} +recordtype(transform) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + special(SPC_NOMOD) + prompt("Record Name") + size(61) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Event Name") + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + special(SPC_NOMOD) + interest(4) + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + prompt("Alarm Ack Transient") + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + } + field(PPN, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + interest(2) + special(SPC_NOMOD) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VERS, DBF_FLOAT) { + special(SPC_NOMOD) + prompt("Code Version") + initial("1") + } + field(RPVT, DBF_NOACCESS) { + size(4) + extra("void * rpvt") + prompt("Record Private") + interest(4) + special(SPC_NOMOD) + } + field(IVLA, DBF_MENU) { + initial("0") + menu(transformIVLA) + interest(1) + promptgroup("10 - Common") + prompt("Invalid link action") + } + field(COPT, DBF_MENU) { + prompt("Calc option") + promptgroup("10 - Common") + interest(1) + menu(transformCOPT) + initial("Conditional") + } + field(VAL, DBF_DOUBLE) { + prompt("Result") + } + field(CLCA, DBF_STRING) { + size(120) + prompt("Calculation A") + promptgroup("10 - Common") + special(SPC_MOD) + } + field(CLCB, DBF_STRING) { + size(120) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Calculation B") + } + field(CLCC, DBF_STRING) { + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Calculation C") + size(120) + } + field(CLCD, DBF_STRING) { + prompt("Calculation D") + special(SPC_MOD) + promptgroup("10 - Common") + size(120) + } + field(CLCE, DBF_STRING) { + prompt("Calculation E") + special(SPC_MOD) + promptgroup("10 - Common") + size(120) + } + field(CLCF, DBF_STRING) { + prompt("Calculation F") + promptgroup("10 - Common") + special(SPC_MOD) + size(120) + } + field(CLCG, DBF_STRING) { + prompt("Calculation G") + special(SPC_MOD) + promptgroup("10 - Common") + size(120) + } + field(CLCH, DBF_STRING) { + size(120) + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Calculation H") + } + field(CLCI, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Calculation I") + size(120) + } + field(CLCJ, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Calculation J") + size(120) + } + field(CLCK, DBF_STRING) { + size(120) + prompt("Calculation K") + special(SPC_MOD) + promptgroup("10 - Common") + } + field(CLCL, DBF_STRING) { + size(120) + prompt("Calculation L") + promptgroup("10 - Common") + special(SPC_MOD) + } + field(CLCM, DBF_STRING) { + prompt("Calculation M") + special(SPC_MOD) + promptgroup("10 - Common") + size(120) + } + field(CLCN, DBF_STRING) { + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Calculation N") + size(120) + } + field(CLCO, DBF_STRING) { + size(120) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Calculation O") + } + field(CLCP, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Calculation P") + size(120) + } + field(CAV, DBF_LONG) { + interest(1) + prompt("CALC Invalid") + } + field(CBV, DBF_LONG) { + interest(1) + prompt("CALC Invalid") + } + field(CCV, DBF_LONG) { + interest(1) + prompt("CALC Invalid") + } + field(CDV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CEV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CFV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CGV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CHV, DBF_LONG) { + interest(1) + prompt("CALC Invalid") + } + field(CIV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CJV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CKV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CLV, DBF_LONG) { + interest(1) + prompt("CALC Invalid") + } + field(CMV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(CNV, DBF_LONG) { + prompt("CALC Invalid") + interest(1) + } + field(COV, DBF_LONG) { + interest(1) + prompt("CALC Invalid") + } + field(CPV, DBF_LONG) { + interest(1) + prompt("CALC Invalid") + } + field(INPA, DBF_INLINK) { + prompt("Input A") + interest(1) + promptgroup("10 - Common") + special(SPC_MOD) + } + field(INPB, DBF_INLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Input B") + } + field(INPC, DBF_INLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Input C") + } + field(INPD, DBF_INLINK) { + prompt("Input D") + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + } + field(INPE, DBF_INLINK) { + interest(1) + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Input E") + } + field(INPF, DBF_INLINK) { + prompt("Input F") + interest(1) + promptgroup("10 - Common") + special(SPC_MOD) + } + field(INPG, DBF_INLINK) { + prompt("Input G") + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + } + field(INPH, DBF_INLINK) { + special(SPC_MOD) + interest(1) + promptgroup("10 - Common") + prompt("Input H") + } + field(INPI, DBF_INLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Input I") + } + field(INPJ, DBF_INLINK) { + interest(1) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Input J") + } + field(INPK, DBF_INLINK) { + prompt("Input K") + interest(1) + special(SPC_MOD) + promptgroup("10 - Common") + } + field(INPL, DBF_INLINK) { + prompt("Input L") + interest(1) + special(SPC_MOD) + promptgroup("10 - Common") + } + field(INPM, DBF_INLINK) { + interest(1) + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Input M") + } + field(INPN, DBF_INLINK) { + prompt("Input N") + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + } + field(INPO, DBF_INLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Input O") + } + field(INPP, DBF_INLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Input P") + } + field(OUTA, DBF_OUTLINK) { + interest(1) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Output A") + } + field(OUTB, DBF_OUTLINK) { + prompt("Output B") + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + } + field(OUTC, DBF_OUTLINK) { + prompt("Output C") + special(SPC_MOD) + interest(1) + promptgroup("10 - Common") + } + field(OUTD, DBF_OUTLINK) { + special(SPC_MOD) + interest(1) + promptgroup("10 - Common") + prompt("Output D") + } + field(OUTE, DBF_OUTLINK) { + prompt("Output E") + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + } + field(OUTF, DBF_OUTLINK) { + interest(1) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Output F") + } + field(OUTG, DBF_OUTLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Output G") + } + field(OUTH, DBF_OUTLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Output H") + } + field(OUTI, DBF_OUTLINK) { + prompt("Output I") + special(SPC_MOD) + interest(1) + promptgroup("10 - Common") + } + field(OUTJ, DBF_OUTLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Output J") + } + field(OUTK, DBF_OUTLINK) { + prompt("Output K") + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + } + field(OUTL, DBF_OUTLINK) { + prompt("Output L") + interest(1) + special(SPC_MOD) + promptgroup("10 - Common") + } + field(OUTM, DBF_OUTLINK) { + special(SPC_MOD) + interest(1) + promptgroup("10 - Common") + prompt("Output M") + } + field(OUTN, DBF_OUTLINK) { + interest(1) + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Output N") + } + field(OUTO, DBF_OUTLINK) { + prompt("Output O") + interest(1) + promptgroup("10 - Common") + special(SPC_MOD) + } + field(OUTP, DBF_OUTLINK) { + promptgroup("10 - Common") + interest(1) + special(SPC_MOD) + prompt("Output P") + } + field(EGU, DBF_STRING) { + interest(1) + promptgroup("10 - Common") + prompt("Units Name") + size(16) + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + interest(1) + promptgroup("10 - Common") + } + field(A, DBF_DOUBLE) { + pp(TRUE) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Value of A") + } + field(B, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of B") + promptgroup("10 - Common") + special(SPC_MOD) + } + field(C, DBF_DOUBLE) { + pp(TRUE) + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Value of C") + } + field(D, DBF_DOUBLE) { + prompt("Value of D") + promptgroup("10 - Common") + special(SPC_MOD) + pp(TRUE) + } + field(E, DBF_DOUBLE) { + prompt("Value of E") + promptgroup("10 - Common") + special(SPC_MOD) + pp(TRUE) + } + field(F, DBF_DOUBLE) { + pp(TRUE) + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Value of F") + } + field(G, DBF_DOUBLE) { + pp(TRUE) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Value of G") + } + field(H, DBF_DOUBLE) { + pp(TRUE) + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Value of H") + } + field(I, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of I") + promptgroup("10 - Common") + special(SPC_MOD) + } + field(J, DBF_DOUBLE) { + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Value of J") + pp(TRUE) + } + field(K, DBF_DOUBLE) { + pp(TRUE) + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Value of K") + } + field(L, DBF_DOUBLE) { + promptgroup("10 - Common") + special(SPC_MOD) + prompt("Value of L") + pp(TRUE) + } + field(M, DBF_DOUBLE) { + special(SPC_MOD) + promptgroup("10 - Common") + prompt("Value of M") + pp(TRUE) + } + field(N, DBF_DOUBLE) { + prompt("Value of N") + promptgroup("10 - Common") + special(SPC_MOD) + pp(TRUE) + } + field(O, DBF_DOUBLE) { + prompt("Value of O") + promptgroup("10 - Common") + special(SPC_MOD) + pp(TRUE) + } + field(P, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of P") + promptgroup("10 - Common") + special(SPC_MOD) + } + field(LA, DBF_DOUBLE) { + prompt("Prev Value of A") + special(SPC_NOMOD) + interest(3) + } + field(LB, DBF_DOUBLE) { + prompt("Prev Value of B") + special(SPC_NOMOD) + interest(3) + } + field(LC, DBF_DOUBLE) { + prompt("Prev Value of C") + interest(3) + special(SPC_NOMOD) + } + field(LD, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of D") + } + field(LE, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of E") + } + field(LF, DBF_DOUBLE) { + prompt("Prev Value of F") + special(SPC_NOMOD) + interest(3) + } + field(LG, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of G") + } + field(LH, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of H") + } + field(LI, DBF_DOUBLE) { + prompt("Prev Value of I") + interest(3) + special(SPC_NOMOD) + } + field(LJ, DBF_DOUBLE) { + prompt("Prev Value of J") + special(SPC_NOMOD) + interest(3) + } + field(LK, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of K") + } + field(LL, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of L") + } + field(LM, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of M") + } + field(LN, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Prev Value of N") + } + field(LO, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Value of O") + } + field(LP, DBF_DOUBLE) { + prompt("Prev Value of P") + interest(3) + special(SPC_NOMOD) + } + field(RPCA, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Postfix Calc A") + extra("unsigned char rpca[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCB, DBF_NOACCESS) { + extra("unsigned char rpcb[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + prompt("Postfix Calc B") + special(SPC_NOMOD) + interest(4) + } + field(RPCC, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Postfix Calc C") + extra("unsigned char rpcc[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCD, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Postfix Calc D") + extra("unsigned char rpcd[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCE, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Postfix Calc E") + extra("unsigned char rpce[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCF, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Postfix Calc F") + extra("unsigned char rpcf[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCG, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Postfix Calc G") + extra("unsigned char rpcg[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCH, DBF_NOACCESS) { + prompt("Postfix Calc H") + interest(4) + special(SPC_NOMOD) + extra("unsigned char rpch[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCI, DBF_NOACCESS) { + prompt("Postfix Calc I") + special(SPC_NOMOD) + interest(4) + extra("unsigned char rpci[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCJ, DBF_NOACCESS) { + prompt("Postfix Calc J") + interest(4) + special(SPC_NOMOD) + extra("unsigned char rpcj[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCK, DBF_NOACCESS) { + extra("unsigned char rpck[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + prompt("Postfix Calc K") + special(SPC_NOMOD) + interest(4) + } + field(RPCL, DBF_NOACCESS) { + extra("unsigned char rpcl[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + prompt("Postfix Calc L") + interest(4) + special(SPC_NOMOD) + } + field(RPCM, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Postfix Calc M") + extra("unsigned char rpcm[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(RPCN, DBF_NOACCESS) { + extra("unsigned char rpcn[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + prompt("Postfix Calc N") + interest(4) + special(SPC_NOMOD) + } + field(RPCO, DBF_NOACCESS) { + extra("unsigned char rpco[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + special(SPC_NOMOD) + interest(4) + prompt("Postfix Calc O") + } + field(RPCP, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Postfix Calc P") + extra("unsigned char rpcp[SCALC_INFIX_TO_POSTFIX_SIZE(120)]") + } + field(CMTA, DBF_STRING) { + prompt("Comment A") + promptgroup("10 - Common") + size(39) + } + field(CMTB, DBF_STRING) { + size(39) + prompt("Comment B") + promptgroup("10 - Common") + } + field(CMTC, DBF_STRING) { + size(39) + prompt("Comment C") + promptgroup("10 - Common") + } + field(CMTD, DBF_STRING) { + promptgroup("10 - Common") + prompt("Comment D") + size(39) + } + field(CMTE, DBF_STRING) { + prompt("Comment E") + promptgroup("10 - Common") + size(39) + } + field(CMTF, DBF_STRING) { + promptgroup("10 - Common") + prompt("Comment F") + size(39) + } + field(CMTG, DBF_STRING) { + size(39) + prompt("Comment G") + promptgroup("10 - Common") + } + field(CMTH, DBF_STRING) { + promptgroup("10 - Common") + prompt("Comment H") + size(39) + } + field(CMTI, DBF_STRING) { + promptgroup("10 - Common") + prompt("Comment I") + size(39) + } + field(CMTJ, DBF_STRING) { + size(39) + prompt("Comment J") + promptgroup("10 - Common") + } + field(CMTK, DBF_STRING) { + promptgroup("10 - Common") + prompt("Comment K") + size(39) + } + field(CMTL, DBF_STRING) { + size(39) + prompt("Comment L") + promptgroup("10 - Common") + } + field(CMTM, DBF_STRING) { + size(39) + prompt("Comment M") + promptgroup("10 - Common") + } + field(CMTN, DBF_STRING) { + size(39) + prompt("Comment N") + promptgroup("10 - Common") + } + field(CMTO, DBF_STRING) { + size(39) + prompt("Comment O") + promptgroup("10 - Common") + } + field(CMTP, DBF_STRING) { + promptgroup("10 - Common") + prompt("Comment P") + size(39) + } + field(MAP, DBF_SHORT) { + prompt("Input bitmap") + interest(3) + promptgroup("10 - Common") + } + field(IAV, DBF_MENU) { + menu(transformIAV) + interest(1) + special(SPC_NOMOD) + prompt("Input link valid") + initial("1") + } + field(IBV, DBF_MENU) { + initial("1") + menu(transformIAV) + prompt("Input link valid") + interest(1) + special(SPC_NOMOD) + } + field(ICV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("Input link valid") + menu(transformIAV) + } + field(IDV, DBF_MENU) { + menu(transformIAV) + prompt("Input link valid") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(IEV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("Input link valid") + menu(transformIAV) + initial("1") + } + field(IFV, DBF_MENU) { + initial("1") + menu(transformIAV) + interest(1) + special(SPC_NOMOD) + prompt("Input link valid") + } + field(IGV, DBF_MENU) { + menu(transformIAV) + special(SPC_NOMOD) + interest(1) + prompt("Input link valid") + initial("1") + } + field(IHV, DBF_MENU) { + initial("1") + special(SPC_NOMOD) + interest(1) + prompt("Input link valid") + menu(transformIAV) + } + field(IIV, DBF_MENU) { + menu(transformIAV) + special(SPC_NOMOD) + interest(1) + prompt("Input link valid") + initial("1") + } + field(IJV, DBF_MENU) { + menu(transformIAV) + special(SPC_NOMOD) + interest(1) + prompt("Input link valid") + initial("1") + } + field(IKV, DBF_MENU) { + initial("1") + interest(1) + special(SPC_NOMOD) + prompt("Input link valid") + menu(transformIAV) + } + field(ILV, DBF_MENU) { + initial("1") + prompt("Input link valid") + special(SPC_NOMOD) + interest(1) + menu(transformIAV) + } + field(IMV, DBF_MENU) { + initial("1") + menu(transformIAV) + prompt("Input link valid") + interest(1) + special(SPC_NOMOD) + } + field(INV, DBF_MENU) { + initial("1") + prompt("Input link valid") + interest(1) + special(SPC_NOMOD) + menu(transformIAV) + } + field(IOV, DBF_MENU) { + menu(transformIAV) + interest(1) + special(SPC_NOMOD) + prompt("Input link valid") + initial("1") + } + field(IPV, DBF_MENU) { + initial("1") + prompt("Input link valid") + special(SPC_NOMOD) + interest(1) + menu(transformIAV) + } + field(OAV, DBF_MENU) { + initial("1") + menu(transformIAV) + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + } + field(OBV, DBF_MENU) { + menu(transformIAV) + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + initial("1") + } + field(OCV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + menu(transformIAV) + initial("1") + } + field(ODV, DBF_MENU) { + initial("1") + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + menu(transformIAV) + } + field(OEV, DBF_MENU) { + initial("1") + menu(transformIAV) + prompt("Output link valid") + special(SPC_NOMOD) + interest(1) + } + field(OFV, DBF_MENU) { + special(SPC_NOMOD) + interest(1) + prompt("Output link valid") + menu(transformIAV) + initial("1") + } + field(OGV, DBF_MENU) { + menu(transformIAV) + prompt("Output link valid") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(OHV, DBF_MENU) { + initial("1") + menu(transformIAV) + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + } + field(OIV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + menu(transformIAV) + initial("1") + } + field(OJV, DBF_MENU) { + prompt("Output link valid") + interest(1) + special(SPC_NOMOD) + menu(transformIAV) + initial("1") + } + field(OKV, DBF_MENU) { + menu(transformIAV) + prompt("Output link valid") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(OLV, DBF_MENU) { + initial("1") + prompt("Output link valid") + special(SPC_NOMOD) + interest(1) + menu(transformIAV) + } + field(OMV, DBF_MENU) { + initial("1") + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + menu(transformIAV) + } + field(ONV, DBF_MENU) { + initial("1") + prompt("Output link valid") + interest(1) + special(SPC_NOMOD) + menu(transformIAV) + } + field(OOV, DBF_MENU) { + initial("1") + menu(transformIAV) + interest(1) + special(SPC_NOMOD) + prompt("Output link valid") + } + field(OPV, DBF_MENU) { + prompt("Output link valid") + interest(1) + special(SPC_NOMOD) + menu(transformIAV) + initial("1") + } +} +recordtype(mbbi) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + menu(menuScan) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(EVNT, DBF_STRING) { + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + prompt("Disable Value") + promptgroup("20 - Scan") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + prompt("Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Status") + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + interest(4) + special(SPC_NOMOD) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotifyRecord") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + interest(4) + special(SPC_NOMOD) + prompt("Device Private") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + } + field(UDF, DBF_UCHAR) { + initial("1") + pp(TRUE) + promptgroup("10 - Common") + interest(1) + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + special(SPC_NOMOD) + interest(2) + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_ENUM) { + pp(TRUE) + prompt("Current Value") + promptgroup("40 - Input") + asl(ASL0) + } + field(NOBT, DBF_USHORT) { + promptgroup("40 - Input") + interest(1) + special(SPC_NOMOD) + prompt("Number of Bits") + } + field(INP, DBF_INLINK) { + promptgroup("40 - Input") + interest(1) + prompt("Input Specification") + } + field(ZRVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + interest(1) + promptgroup("41 - Input 0-7") + special(SPC_MOD) + prompt("Zero Value") + } + field(ONVL, DBF_ULONG) { + interest(1) + special(SPC_MOD) + promptgroup("41 - Input 0-7") + prompt("One Value") + base(HEX) + pp(TRUE) + } + field(TWVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + promptgroup("41 - Input 0-7") + interest(1) + special(SPC_MOD) + prompt("Two Value") + } + field(THVL, DBF_ULONG) { + prompt("Three Value") + interest(1) + special(SPC_MOD) + promptgroup("41 - Input 0-7") + base(HEX) + pp(TRUE) + } + field(FRVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + interest(1) + special(SPC_MOD) + promptgroup("41 - Input 0-7") + prompt("Four Value") + } + field(FVVL, DBF_ULONG) { + pp(TRUE) + base(HEX) + interest(1) + special(SPC_MOD) + promptgroup("41 - Input 0-7") + prompt("Five Value") + } + field(SXVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + interest(1) + promptgroup("41 - Input 0-7") + special(SPC_MOD) + prompt("Six Value") + } + field(SVVL, DBF_ULONG) { + prompt("Seven Value") + interest(1) + special(SPC_MOD) + promptgroup("41 - Input 0-7") + pp(TRUE) + base(HEX) + } + field(EIVL, DBF_ULONG) { + prompt("Eight Value") + special(SPC_MOD) + interest(1) + promptgroup("42 - Input 8-15") + pp(TRUE) + base(HEX) + } + field(NIVL, DBF_ULONG) { + interest(1) + special(SPC_MOD) + promptgroup("42 - Input 8-15") + prompt("Nine Value") + pp(TRUE) + base(HEX) + } + field(TEVL, DBF_ULONG) { + special(SPC_MOD) + interest(1) + promptgroup("42 - Input 8-15") + prompt("Ten Value") + base(HEX) + pp(TRUE) + } + field(ELVL, DBF_ULONG) { + pp(TRUE) + base(HEX) + prompt("Eleven Value") + interest(1) + special(SPC_MOD) + promptgroup("42 - Input 8-15") + } + field(TVVL, DBF_ULONG) { + prompt("Twelve Value") + interest(1) + promptgroup("42 - Input 8-15") + special(SPC_MOD) + base(HEX) + pp(TRUE) + } + field(TTVL, DBF_ULONG) { + pp(TRUE) + base(HEX) + prompt("Thirteen Value") + special(SPC_MOD) + interest(1) + promptgroup("42 - Input 8-15") + } + field(FTVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + special(SPC_MOD) + interest(1) + promptgroup("42 - Input 8-15") + prompt("Fourteen Value") + } + field(FFVL, DBF_ULONG) { + base(HEX) + pp(TRUE) + prompt("Fifteen Value") + interest(1) + special(SPC_MOD) + promptgroup("42 - Input 8-15") + } + field(ZRST, DBF_STRING) { + interest(1) + special(SPC_MOD) + promptgroup("81 - Display 0-7") + prompt("Zero String") + pp(TRUE) + size(26) + } + field(ONST, DBF_STRING) { + promptgroup("81 - Display 0-7") + interest(1) + special(SPC_MOD) + prompt("One String") + pp(TRUE) + size(26) + } + field(TWST, DBF_STRING) { + special(SPC_MOD) + interest(1) + promptgroup("81 - Display 0-7") + prompt("Two String") + size(26) + pp(TRUE) + } + field(THST, DBF_STRING) { + pp(TRUE) + size(26) + interest(1) + special(SPC_MOD) + promptgroup("81 - Display 0-7") + prompt("Three String") + } + field(FRST, DBF_STRING) { + prompt("Four String") + interest(1) + promptgroup("81 - Display 0-7") + special(SPC_MOD) + size(26) + pp(TRUE) + } + field(FVST, DBF_STRING) { + pp(TRUE) + size(26) + prompt("Five String") + special(SPC_MOD) + interest(1) + promptgroup("81 - Display 0-7") + } + field(SXST, DBF_STRING) { + special(SPC_MOD) + interest(1) + promptgroup("81 - Display 0-7") + prompt("Six String") + size(26) + pp(TRUE) + } + field(SVST, DBF_STRING) { + prompt("Seven String") + interest(1) + special(SPC_MOD) + promptgroup("81 - Display 0-7") + pp(TRUE) + size(26) + } + field(EIST, DBF_STRING) { + special(SPC_MOD) + interest(1) + promptgroup("82 - Display 8-15") + prompt("Eight String") + pp(TRUE) + size(26) + } + field(NIST, DBF_STRING) { + special(SPC_MOD) + interest(1) + promptgroup("82 - Display 8-15") + prompt("Nine String") + size(26) + pp(TRUE) + } + field(TEST, DBF_STRING) { + interest(1) + promptgroup("82 - Display 8-15") + special(SPC_MOD) + prompt("Ten String") + pp(TRUE) + size(26) + } + field(ELST, DBF_STRING) { + size(26) + pp(TRUE) + interest(1) + promptgroup("82 - Display 8-15") + special(SPC_MOD) + prompt("Eleven String") + } + field(TVST, DBF_STRING) { + interest(1) + promptgroup("82 - Display 8-15") + special(SPC_MOD) + prompt("Twelve String") + pp(TRUE) + size(26) + } + field(TTST, DBF_STRING) { + size(26) + pp(TRUE) + prompt("Thirteen String") + special(SPC_MOD) + interest(1) + promptgroup("82 - Display 8-15") + } + field(FTST, DBF_STRING) { + size(26) + pp(TRUE) + promptgroup("82 - Display 8-15") + interest(1) + special(SPC_MOD) + prompt("Fourteen String") + } + field(FFST, DBF_STRING) { + prompt("Fifteen String") + special(SPC_MOD) + interest(1) + promptgroup("82 - Display 8-15") + pp(TRUE) + size(26) + } + field(ZRSV, DBF_MENU) { + pp(TRUE) + interest(1) + promptgroup("71 - Alarm 0-7") + prompt("State Zero Severity") + menu(menuAlarmSevr) + } + field(ONSV, DBF_MENU) { + prompt("State One Severity") + promptgroup("71 - Alarm 0-7") + interest(1) + menu(menuAlarmSevr) + pp(TRUE) + } + field(TWSV, DBF_MENU) { + pp(TRUE) + prompt("State Two Severity") + promptgroup("71 - Alarm 0-7") + interest(1) + menu(menuAlarmSevr) + } + field(THSV, DBF_MENU) { + pp(TRUE) + prompt("State Three Severity") + promptgroup("71 - Alarm 0-7") + interest(1) + menu(menuAlarmSevr) + } + field(FRSV, DBF_MENU) { + pp(TRUE) + promptgroup("71 - Alarm 0-7") + interest(1) + prompt("State Four Severity") + menu(menuAlarmSevr) + } + field(FVSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + promptgroup("71 - Alarm 0-7") + interest(1) + prompt("State Five Severity") + } + field(SXSV, DBF_MENU) { + interest(1) + promptgroup("71 - Alarm 0-7") + prompt("State Six Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(SVSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + interest(1) + promptgroup("71 - Alarm 0-7") + prompt("State Seven Severity") + } + field(EISV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("State Eight Severity") + interest(1) + promptgroup("72 - Alarm 8-15") + pp(TRUE) + } + field(NISV, DBF_MENU) { + prompt("State Nine Severity") + interest(1) + promptgroup("72 - Alarm 8-15") + menu(menuAlarmSevr) + pp(TRUE) + } + field(TESV, DBF_MENU) { + pp(TRUE) + interest(1) + promptgroup("72 - Alarm 8-15") + prompt("State Ten Severity") + menu(menuAlarmSevr) + } + field(ELSV, DBF_MENU) { + pp(TRUE) + promptgroup("72 - Alarm 8-15") + interest(1) + prompt("State Eleven Severity") + menu(menuAlarmSevr) + } + field(TVSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("State Twelve Severity") + interest(1) + promptgroup("72 - Alarm 8-15") + } + field(TTSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + interest(1) + promptgroup("72 - Alarm 8-15") + prompt("State Thirteen Sevr") + } + field(FTSV, DBF_MENU) { + pp(TRUE) + interest(1) + promptgroup("72 - Alarm 8-15") + prompt("State Fourteen Sevr") + menu(menuAlarmSevr) + } + field(FFSV, DBF_MENU) { + pp(TRUE) + prompt("State Fifteen Severity") + interest(1) + promptgroup("72 - Alarm 8-15") + menu(menuAlarmSevr) + } + field(AFTC, DBF_DOUBLE) { + prompt("Alarm Filter Time Constant") + interest(1) + promptgroup("70 - Alarm") + } + field(AFVL, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Alarm Filter Value") + } + field(UNSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Unknown State Severity") + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(COSV, DBF_MENU) { + pp(TRUE) + prompt("Change of State Svr") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + } + field(RVAL, DBF_ULONG) { + prompt("Raw Value") + pp(TRUE) + } + field(ORAW, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Raw Value") + } + field(MASK, DBF_ULONG) { + special(SPC_NOMOD) + interest(1) + prompt("Hardware Mask") + } + field(MLST, DBF_USHORT) { + interest(3) + special(SPC_NOMOD) + prompt("Last Value Monitored") + } + field(LALM, DBF_USHORT) { + interest(3) + special(SPC_NOMOD) + prompt("Last Value Alarmed") + } + field(SDEF, DBF_SHORT) { + prompt("States Defined") + interest(3) + special(SPC_NOMOD) + } + field(SHFT, DBF_USHORT) { + interest(1) + promptgroup("40 - Input") + prompt("Shift") + } + field(SIOL, DBF_INLINK) { + prompt("Simulation Input Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SVAL, DBF_ULONG) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + interest(1) + promptgroup("90 - Simulate") + } + field(SIMM, DBF_MENU) { + menu(menuSimm) + interest(1) + special(SPC_MOD) + prompt("Simulation Mode") + } + field(SIMS, DBF_MENU) { + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + interest(1) + promptgroup("90 - Simulate") + prompt("Sim. Mode Scan") + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + promptgroup("90 - Simulate") + interest(2) + prompt("Sim. Mode Async Delay") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + prompt("Sim. Mode Private") + interest(4) + special(SPC_NOMOD) + extra("CALLBACK *simpvt") + } +} +device(mbbi, CONSTANT, devMbbiSoft, "Soft Channel") +device(mbbi, CONSTANT, devMbbiSoftRaw, "Raw Soft Channel") +device(mbbi, CONSTANT, devMbbiSoftCallback, "Async Soft Channel") +device(mbbi, INST_IO, asynMbbiInt32, "asynInt32") +device(mbbi, INST_IO, asynMbbiUInt32Digital, "asynUInt32Digital") +device(mbbi, INST_IO, devmbbiStream, "stream") +device(mbbi, INST_IO, devMbbiTPG261, "asyn TPG261") +recordtype(swait) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + size(61) + special(SPC_NOMOD) + prompt("Record Name") + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + promptgroup("20 - Scan") + interest(1) + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + } + field(BKLNK, DBF_NOACCESS) { + prompt("Backwards link tracking") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + interest(3) + prompt("Force Processing") + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + initial("UDF") + } + field(SEVR, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Severity") + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + menu(menuYesNo) + prompt("Alarm Ack Transient") + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + special(SPC_NOMOD) + interest(4) + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scheduling Priority") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + initial("INVALID") + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + interest(2) + special(SPC_NOMOD) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VERS, DBF_FLOAT) { + initial("1") + special(SPC_NOMOD) + prompt("Code Version") + } + field(HOPR, DBF_FLOAT) { + asl(ASL0) + interest(1) + promptgroup("70 - Alarm") + prompt("High Operating Range") + } + field(LOPR, DBF_FLOAT) { + promptgroup("41 - Bits (1)") + interest(1) + prompt("Low Operating Range") + asl(ASL0) + } + field(INIT, DBF_SHORT) { + special(SPC_NOMOD) + interest(3) + prompt("Initialized?") + } + field(CBST, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Pointer to cbStruct") + extra("void * cbst") + size(4) + } + field(INAN, DBF_STRING) { + size(40) + asl(ASL0) + prompt("INPA PV Name") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + } + field(INBN, DBF_STRING) { + asl(ASL0) + prompt("INPB PV Name") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + size(40) + } + field(INCN, DBF_STRING) { + size(40) + prompt("INPC PV Name") + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + asl(ASL0) + } + field(INDN, DBF_STRING) { + prompt("INPD PV Name") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + asl(ASL0) + size(40) + } + field(INEN, DBF_STRING) { + prompt("INPE PV Name") + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + asl(ASL0) + size(40) + } + field(INFN, DBF_STRING) { + size(40) + asl(ASL0) + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("INPF PV Name") + } + field(INGN, DBF_STRING) { + size(40) + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("INPG PV Name") + asl(ASL0) + } + field(INHN, DBF_STRING) { + prompt("INPH PV Name") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + asl(ASL0) + size(40) + } + field(ININ, DBF_STRING) { + asl(ASL0) + prompt("INPI PV Name") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + size(40) + } + field(INJN, DBF_STRING) { + size(40) + asl(ASL0) + prompt("INPJ PV Name") + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + } + field(INKN, DBF_STRING) { + size(40) + asl(ASL0) + interest(1) + promptgroup("30 - Action") + special(SPC_MOD) + prompt("INPK PV Name") + } + field(INLN, DBF_STRING) { + size(40) + special(SPC_MOD) + interest(1) + promptgroup("30 - Action") + prompt("INPL PV Name") + asl(ASL0) + } + field(DOLN, DBF_STRING) { + asl(ASL0) + prompt("DOL PV Name") + promptgroup("30 - Action") + interest(1) + special(SPC_MOD) + size(40) + } + field(OUTN, DBF_STRING) { + size(40) + prompt("OUT PV Name") + interest(1) + special(SPC_MOD) + promptgroup("30 - Action") + asl(ASL0) + } + field(INAV, DBF_MENU) { + menu(swaitINAV) + prompt("INPA PV Status") + special(SPC_NOMOD) + interest(1) + } + field(INBV, DBF_MENU) { + menu(swaitINAV) + special(SPC_NOMOD) + interest(1) + prompt("INPB PV Status") + } + field(INCV, DBF_MENU) { + interest(1) + special(SPC_NOMOD) + prompt("INPC PV Status") + menu(swaitINAV) + } + field(INDV, DBF_MENU) { + prompt("INPD PV Status") + interest(1) + special(SPC_NOMOD) + menu(swaitINAV) + } + field(INEV, DBF_MENU) { + menu(swaitINAV) + prompt("INPE PV Status") + special(SPC_NOMOD) + interest(1) + } + field(INFV, DBF_MENU) { + prompt("INPF PV Status") + special(SPC_NOMOD) + interest(1) + menu(swaitINAV) + } + field(INGV, DBF_MENU) { + prompt("INPG PV Status") + special(SPC_NOMOD) + interest(1) + menu(swaitINAV) + } + field(INHV, DBF_MENU) { + prompt("INPH PV Status") + special(SPC_NOMOD) + interest(1) + menu(swaitINAV) + } + field(INIV, DBF_MENU) { + menu(swaitINAV) + interest(1) + special(SPC_NOMOD) + prompt("INPI PV Status") + } + field(INJV, DBF_MENU) { + prompt("INPJ PV Status") + interest(1) + special(SPC_NOMOD) + menu(swaitINAV) + } + field(INKV, DBF_MENU) { + menu(swaitINAV) + prompt("INPK PV Status") + special(SPC_NOMOD) + interest(1) + } + field(INLV, DBF_MENU) { + prompt("INPL PV Status") + special(SPC_NOMOD) + interest(1) + menu(swaitINAV) + } + field(DOLV, DBF_MENU) { + prompt("DOL PV Status") + interest(1) + special(SPC_NOMOD) + menu(swaitINAV) + } + field(OUTV, DBF_MENU) { + menu(swaitINAV) + interest(1) + special(SPC_NOMOD) + prompt("OUT PV Status") + } + field(A, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input A") + } + field(B, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input B") + } + field(C, DBF_DOUBLE) { + prompt("Value of Input C") + pp(TRUE) + } + field(D, DBF_DOUBLE) { + prompt("Value of Input D") + pp(TRUE) + } + field(E, DBF_DOUBLE) { + prompt("Value of Input E") + pp(TRUE) + } + field(F, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input F") + } + field(G, DBF_DOUBLE) { + prompt("Value of Input G") + pp(TRUE) + } + field(H, DBF_DOUBLE) { + prompt("Value of Input H") + pp(TRUE) + } + field(I, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input I") + } + field(J, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input J") + } + field(K, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input K") + } + field(L, DBF_DOUBLE) { + pp(TRUE) + prompt("Value of Input L") + } + field(LA, DBF_DOUBLE) { + prompt("Last Val of Input A") + } + field(LB, DBF_DOUBLE) { + prompt("Last Val of Input B") + } + field(LC, DBF_DOUBLE) { + prompt("Last Val of Input C") + } + field(LD, DBF_DOUBLE) { + prompt("Last Val of Input D") + } + field(LE, DBF_DOUBLE) { + prompt("Last Val of Input E") + } + field(LF, DBF_DOUBLE) { + prompt("Last Val of Input F") + } + field(LG, DBF_DOUBLE) { + prompt("Last Val of Input G") + } + field(LH, DBF_DOUBLE) { + prompt("Last Val of Input H") + } + field(LI, DBF_DOUBLE) { + prompt("Last Val of Input I") + } + field(LJ, DBF_DOUBLE) { + prompt("Last Val of Input J") + } + field(LK, DBF_DOUBLE) { + prompt("Last Val of Input K") + } + field(LL, DBF_DOUBLE) { + prompt("Last Val of Input L") + } + field(INAP, DBF_MENU) { + initial("Yes") + menu(swaitINAP) + interest(1) + promptgroup("30 - Action") + prompt("INPA causes I/O INTR") + } + field(INBP, DBF_MENU) { + menu(swaitINAP) + interest(1) + promptgroup("30 - Action") + prompt("INPB causes I/O INTR") + initial("Yes") + } + field(INCP, DBF_MENU) { + prompt("INPC causes I/O INTR") + promptgroup("30 - Action") + interest(1) + menu(swaitINAP) + initial("Yes") + } + field(INDP, DBF_MENU) { + initial("Yes") + prompt("INPD causes I/O INTR") + promptgroup("30 - Action") + interest(1) + menu(swaitINAP) + } + field(INEP, DBF_MENU) { + initial("Yes") + interest(1) + promptgroup("30 - Action") + prompt("INPE causes I/O INTR") + menu(swaitINAP) + } + field(INFP, DBF_MENU) { + menu(swaitINAP) + prompt("INPF causes I/O INTR") + promptgroup("30 - Action") + interest(1) + initial("Yes") + } + field(INGP, DBF_MENU) { + initial("Yes") + menu(swaitINAP) + prompt("INPG causes I/O INTR") + interest(1) + promptgroup("30 - Action") + } + field(INHP, DBF_MENU) { + menu(swaitINAP) + interest(1) + promptgroup("30 - Action") + prompt("INPH causes I/O INTR") + initial("Yes") + } + field(INIP, DBF_MENU) { + initial("Yes") + menu(swaitINAP) + interest(1) + promptgroup("30 - Action") + prompt("INPI causes I/O INTR") + } + field(INJP, DBF_MENU) { + initial("Yes") + prompt("INPJ causes I/O INTR") + promptgroup("30 - Action") + interest(1) + menu(swaitINAP) + } + field(INKP, DBF_MENU) { + prompt("INPK causes I/O INTR") + promptgroup("30 - Action") + interest(1) + menu(swaitINAP) + initial("Yes") + } + field(INLP, DBF_MENU) { + interest(1) + promptgroup("30 - Action") + prompt("INPL causes I/O INTR") + menu(swaitINAP) + initial("Yes") + } + field(CALC, DBF_STRING) { + initial("0") + size(36) + promptgroup("30 - Action") + special(SPC_CALC) + prompt("Calculation") + asl(ASL0) + } + field(RPCL, DBF_NOACCESS) { + extra("char rpcl[184]") + size(184) + interest(4) + special(SPC_NOMOD) + prompt("Reverse Polish Calc") + } + field(CLCV, DBF_LONG) { + prompt("CALC Valid") + interest(1) + } + field(VAL, DBF_DOUBLE) { + prompt("Value Field") + } + field(OVAL, DBF_DOUBLE) { + prompt("Old Value") + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + promptgroup("10 - Common") + interest(1) + } + field(OOPT, DBF_MENU) { + menu(swaitOOPT) + promptgroup("30 - Action") + interest(1) + prompt("Output Execute Opt") + } + field(ODLY, DBF_FLOAT) { + prompt("Output Execute Delay") + promptgroup("70 - Alarm") + interest(1) + asl(ASL0) + } + field(DOPT, DBF_MENU) { + menu(swaitDOPT) + interest(1) + promptgroup("30 - Action") + prompt("Output Data Option") + } + field(DOLD, DBF_DOUBLE) { + interest(1) + promptgroup("30 - Action") + prompt("Desired Output Data") + asl(ASL0) + } + field(OEVT, DBF_USHORT) { + prompt("Event To Issue") + promptgroup("30 - Action") + asl(ASL0) + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("30 - Action") + } + field(MDEL, DBF_DOUBLE) { + promptgroup("30 - Action") + interest(1) + prompt("Monitor Deadband") + } + field(ALST, DBF_DOUBLE) { + prompt("Last Value Archived") + interest(3) + special(SPC_NOMOD) + } + field(MLST, DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(SIOL, DBF_INLINK) { + prompt("Sim Input Specifctn") + interest(1) + promptgroup("30 - Action") + } + field(SVAL, DBF_DOUBLE) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup("30 - Action") + interest(1) + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + interest(1) + prompt("Simulation Mode") + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Sim mode Alarm Svrty") + interest(2) + promptgroup("40 - Input") + } +} +device(swait, CONSTANT, devSWaitIoEvent, "Soft Channel") +recordtype(ai) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + menu(menuPini) + promptgroup("20 - Scan") + interest(1) + prompt("Process at iocInit") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + size(40) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + prompt("Disable Value") + promptgroup("20 - Scan") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + prompt("Monitor lock") + interest(4) + special(SPC_NOMOD) + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + menu(menuAlarmStat) + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + } + field(NSEV, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + interest(2) + promptgroup("70 - Alarm") + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + interest(1) + promptgroup("70 - Alarm") + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + interest(4) + special(SPC_NOMOD) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + interest(4) + special(SPC_NOMOD) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + } + field(DSET, DBF_NOACCESS) { + prompt("DSET address") + interest(4) + special(SPC_NOMOD) + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + interest(4) + special(SPC_NOMOD) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + special(SPC_NOMOD) + interest(2) + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_DOUBLE) { + pp(TRUE) + promptgroup("40 - Input") + prompt("Current EGU Value") + asl(ASL0) + } + field(INP, DBF_INLINK) { + prompt("Input Specification") + interest(1) + promptgroup("40 - Input") + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + interest(1) + prop(YES) + promptgroup("80 - Display") + } + field(LINR, DBF_MENU) { + pp(TRUE) + interest(1) + special(SPC_LINCONV) + promptgroup("60 - Convert") + prompt("Linearization") + menu(menuConvert) + } + field(EGUF, DBF_DOUBLE) { + pp(TRUE) + prompt("Engineer Units Full") + interest(1) + special(SPC_LINCONV) + promptgroup("60 - Convert") + } + field(EGUL, DBF_DOUBLE) { + interest(1) + promptgroup("60 - Convert") + special(SPC_LINCONV) + prompt("Engineer Units Low") + pp(TRUE) + } + field(EGU, DBF_STRING) { + size(16) + prop(YES) + promptgroup("80 - Display") + interest(1) + prompt("Engineering Units") + } + field(HOPR, DBF_DOUBLE) { + promptgroup("80 - Display") + prop(YES) + interest(1) + prompt("High Operating Range") + } + field(LOPR, DBF_DOUBLE) { + prompt("Low Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(AOFF, DBF_DOUBLE) { + interest(1) + promptgroup("60 - Convert") + prompt("Adjustment Offset") + pp(TRUE) + } + field(ASLO, DBF_DOUBLE) { + pp(TRUE) + initial("1") + prompt("Adjustment Slope") + interest(1) + promptgroup("60 - Convert") + } + field(SMOO, DBF_DOUBLE) { + prompt("Smoothing") + interest(1) + promptgroup("60 - Convert") + } + field(HIHI, DBF_DOUBLE) { + pp(TRUE) + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("Hihi Alarm Limit") + } + field(LOLO, DBF_DOUBLE) { + pp(TRUE) + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("Lolo Alarm Limit") + } + field(HIGH, DBF_DOUBLE) { + pp(TRUE) + prompt("High Alarm Limit") + interest(1) + prop(YES) + promptgroup("70 - Alarm") + } + field(LOW, DBF_DOUBLE) { + prop(YES) + interest(1) + promptgroup("70 - Alarm") + prompt("Low Alarm Limit") + pp(TRUE) + } + field(HHSV, DBF_MENU) { + pp(TRUE) + prompt("Hihi Severity") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(LLSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("Lolo Severity") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(HSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prop(YES) + promptgroup("70 - Alarm") + interest(1) + prompt("High Severity") + } + field(LSV, DBF_MENU) { + pp(TRUE) + prompt("Low Severity") + interest(1) + prop(YES) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(HYST, DBF_DOUBLE) { + interest(1) + promptgroup("70 - Alarm") + prompt("Alarm Deadband") + } + field(AFTC, DBF_DOUBLE) { + interest(1) + promptgroup("70 - Alarm") + prompt("Alarm Filter Time Constant") + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + prompt("Monitor Deadband") + interest(1) + promptgroup("80 - Display") + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(AFVL, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Alarm Filter Value") + } + field(ALST, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Archived") + } + field(MLST, DBF_DOUBLE) { + special(SPC_NOMOD) + interest(3) + prompt("Last Val Monitored") + } + field(ESLO, DBF_DOUBLE) { + prompt("Raw to EGU Slope") + promptgroup("60 - Convert") + interest(2) + initial("1") + pp(TRUE) + } + field(EOFF, DBF_DOUBLE) { + promptgroup("60 - Convert") + interest(2) + prompt("Raw to EGU Offset") + pp(TRUE) + } + field(ROFF, DBF_ULONG) { + prompt("Raw Offset") + interest(2) + pp(TRUE) + } + field(PBRK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Ptrto brkTable") + extra("void * pbrk") + } + field(INIT, DBF_SHORT) { + interest(3) + special(SPC_NOMOD) + prompt("Initialized?") + } + field(LBRK, DBF_SHORT) { + special(SPC_NOMOD) + interest(3) + prompt("LastBreak Point") + } + field(RVAL, DBF_LONG) { + pp(TRUE) + prompt("Current Raw Value") + } + field(ORAW, DBF_LONG) { + prompt("Previous Raw Value") + interest(3) + special(SPC_NOMOD) + } + field(SIOL, DBF_INLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Input Link") + } + field(SVAL, DBF_DOUBLE) { + prompt("Simulation Value") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + menu(menuSimm) + prompt("Simulation Mode") + interest(1) + special(SPC_MOD) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("90 - Simulate") + interest(2) + prompt("Simulation Mode Severity") + } + field(OLDSIMM, DBF_MENU) { + menu(menuSimm) + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + } + field(SSCN, DBF_MENU) { + initial("65535") + prompt("Sim. Mode Scan") + promptgroup("90 - Simulate") + interest(1) + menu(menuScan) + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + interest(2) + promptgroup("90 - Simulate") + prompt("Sim. Mode Async Delay") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + interest(4) + special(SPC_NOMOD) + prompt("Sim. Mode Private") + } +} +device(ai, CONSTANT, devAiSoft, "Soft Channel") +device(ai, CONSTANT, devAiSoftRaw, "Raw Soft Channel") +device(ai, CONSTANT, devAiSoftCallback, "Async Soft Channel") +device(ai, INST_IO, devTimestampAI, "Soft Timestamp") +device(ai, INST_IO, devAiGeneralTime, "General Time") +device(ai, INST_IO, asynAiInt32, "asynInt32") +device(ai, INST_IO, asynAiInt32Average, "asynInt32Average") +device(ai, INST_IO, asynAiFloat64, "asynFloat64") +device(ai, INST_IO, asynAiFloat64Average, "asynFloat64Average") +device(ai, INST_IO, devaiStream, "stream") +device(ai, INST_IO, devAiStrParm, "asyn ai stringParm") +device(ai, INST_IO, devAiHeidND261, "asyn ai HeidND261") +device(ai, INST_IO, devAiMKS, "HPS SensaVac 937") +device(ai, INST_IO, devAiMPC, "asyn MPC") +device(ai, GPIB_IO, devAiGP307Gpib, "Vg307 GPIB Instrument") +device(ai, BBGPIB_IO, devAiAX301, "PZT Bug") +device(ai, INST_IO, devAiTelevac, "asyn Televac") +device(ai, INST_IO, devAiTPG261, "asyn TPG261") +recordtype(dfanout) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + } + field(SCAN, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + interest(1) + promptgroup("20 - Scan") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + } + field(BKLNK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + } + field(DISS, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Disable Alarm Sevrty") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + special(SPC_NOMOD) + interest(4) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + interest(4) + special(SPC_NOMOD) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + prompt("Scheduling Priority") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + } + field(UDFS, DBF_MENU) { + initial("INVALID") + interest(1) + promptgroup("70 - Alarm") + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + special(SPC_NOMOD) + interest(2) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Forward Process Link") + } + field(VAL, DBF_DOUBLE) { + pp(TRUE) + asl(ASL0) + promptgroup("40 - Input") + prompt("Desired Output") + } + field(SELM, DBF_MENU) { + promptgroup("30 - Action") + interest(1) + prompt("Select Mechanism") + menu(dfanoutSELM) + } + field(SELN, DBF_USHORT) { + prompt("Link Selection") + interest(1) + initial("1") + } + field(SELL, DBF_INLINK) { + promptgroup("30 - Action") + interest(1) + prompt("Link Selection Loc") + } + field(OUTA, DBF_OUTLINK) { + prompt("Output Spec A") + promptgroup("50 - Output") + interest(1) + } + field(OUTB, DBF_OUTLINK) { + prompt("Output Spec B") + interest(1) + promptgroup("50 - Output") + } + field(OUTC, DBF_OUTLINK) { + prompt("Output Spec C") + promptgroup("50 - Output") + interest(1) + } + field(OUTD, DBF_OUTLINK) { + prompt("Output Spec D") + interest(1) + promptgroup("50 - Output") + } + field(OUTE, DBF_OUTLINK) { + prompt("Output Spec E") + promptgroup("50 - Output") + interest(1) + } + field(OUTF, DBF_OUTLINK) { + interest(1) + promptgroup("50 - Output") + prompt("Output Spec F") + } + field(OUTG, DBF_OUTLINK) { + promptgroup("50 - Output") + interest(1) + prompt("Output Spec G") + } + field(OUTH, DBF_OUTLINK) { + prompt("Output Spec H") + promptgroup("50 - Output") + interest(1) + } + field(DOL, DBF_INLINK) { + interest(1) + promptgroup("40 - Input") + prompt("Desired Output Loc") + } + field(OMSL, DBF_MENU) { + promptgroup("50 - Output") + interest(1) + prompt("Output Mode Select") + menu(menuOmsl) + } + field(EGU, DBF_STRING) { + prompt("Engineering Units") + promptgroup("80 - Display") + prop(YES) + interest(1) + size(16) + } + field(PREC, DBF_SHORT) { + promptgroup("80 - Display") + prop(YES) + interest(1) + prompt("Display Precision") + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(LOPR, DBF_DOUBLE) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Low Operating Range") + } + field(HIHI, DBF_DOUBLE) { + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("Hihi Alarm Limit") + pp(TRUE) + } + field(LOLO, DBF_DOUBLE) { + pp(TRUE) + prompt("Lolo Alarm Limit") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(HIGH, DBF_DOUBLE) { + pp(TRUE) + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("High Alarm Limit") + } + field(LOW, DBF_DOUBLE) { + pp(TRUE) + prompt("Low Alarm Limit") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + } + field(HHSV, DBF_MENU) { + pp(TRUE) + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("Hihi Severity") + menu(menuAlarmSevr) + } + field(LLSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("Lolo Severity") + prop(YES) + promptgroup("70 - Alarm") + interest(1) + } + field(HSV, DBF_MENU) { + pp(TRUE) + prompt("High Severity") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + menu(menuAlarmSevr) + } + field(LSV, DBF_MENU) { + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("Low Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(HYST, DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup("70 - Alarm") + interest(1) + } + field(ADEL, DBF_DOUBLE) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup("80 - Display") + interest(1) + } + field(LALM, DBF_DOUBLE) { + prompt("Last Value Alarmed") + interest(3) + special(SPC_NOMOD) + } + field(ALST, DBF_DOUBLE) { + prompt("Last Value Archived") + interest(3) + special(SPC_NOMOD) + } + field(MLST, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Last Val Monitored") + } +} +recordtype(compress) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + special(SPC_AS) + promptgroup("10 - Common") + } + field(SCAN, DBF_MENU) { + menu(menuScan) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + interest(1) + promptgroup("20 - Scan") + prompt("Process at iocInit") + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + } + field(EVNT, DBF_STRING) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + promptgroup("10 - Common") + interest(1) + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + interest(4) + special(SPC_NOMOD) + prompt("Monitor lock") + } + field(MLIS, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + prompt("Force Processing") + interest(3) + } + field(STAT, DBF_MENU) { + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + initial("UDF") + } + field(SEVR, DBF_MENU) { + prompt("Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + } + field(ACKT, DBF_MENU) { + initial("YES") + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + menu(menuYesNo) + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + prompt("Record active") + special(SPC_NOMOD) + interest(1) + } + field(PUTF, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("dbPutField process") + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + } + field(PPN, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + interest(4) + special(SPC_NOMOD) + } + field(SPVT, DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + extra("struct scan_element *spvt") + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + interest(4) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + interest(4) + special(SPC_NOMOD) + prompt("Lock Set") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + } + field(UDFS, DBF_MENU) { + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(2) + prompt("Time") + extra("epicsTimeStamp time") + } + field(FLNK, DBF_FWDLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Forward Process Link") + } + field(VAL, DBF_NOACCESS) { + extra("void * val") + pp(TRUE) + special(SPC_DBADDR) + prompt("Value") + asl(ASL0) + } + field(INP, DBF_INLINK) { + prompt("Input Specification") + promptgroup("40 - Input") + interest(1) + } + field(RES, DBF_SHORT) { + prompt("Reset") + interest(3) + special(SPC_RESET) + asl(ASL0) + } + field(ALG, DBF_MENU) { + promptgroup("30 - Action") + interest(1) + special(SPC_RESET) + prompt("Compression Algorithm") + menu(compressALG) + } + field(BALG, DBF_MENU) { + interest(1) + promptgroup("30 - Action") + special(SPC_RESET) + prompt("Buffering Algorithm") + menu(bufferingALG) + } + field(NSAM, DBF_ULONG) { + prompt("Number of Values") + promptgroup("30 - Action") + interest(1) + special(SPC_NOMOD) + initial("1") + } + field(N, DBF_ULONG) { + initial("1") + interest(1) + promptgroup("30 - Action") + special(SPC_RESET) + prompt("N to 1 Compression") + } + field(IHIL, DBF_DOUBLE) { + interest(1) + promptgroup("30 - Action") + prompt("Init High Interest Lim") + } + field(ILIL, DBF_DOUBLE) { + prompt("Init Low Interest Lim") + promptgroup("30 - Action") + interest(1) + } + field(HOPR, DBF_DOUBLE) { + prompt("High Operating Range") + prop(YES) + promptgroup("80 - Display") + interest(1) + } + field(LOPR, DBF_DOUBLE) { + prop(YES) + interest(1) + promptgroup("80 - Display") + prompt("Low Operating Range") + } + field(PREC, DBF_SHORT) { + prompt("Display Precision") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(EGU, DBF_STRING) { + size(16) + promptgroup("80 - Display") + prop(YES) + interest(1) + prompt("Engineering Units") + } + field(OFF, DBF_ULONG) { + special(SPC_NOMOD) + prompt("Offset") + } + field(NUSE, DBF_ULONG) { + prompt("Number Used") + special(SPC_NOMOD) + } + field(OUSE, DBF_ULONG) { + special(SPC_NOMOD) + prompt("Old Number Used") + } + field(BPTR, DBF_NOACCESS) { + prompt("Buffer Pointer") + special(SPC_NOMOD) + interest(4) + extra("double *bptr") + } + field(SPTR, DBF_NOACCESS) { + prompt("Summing Buffer Ptr") + special(SPC_NOMOD) + interest(4) + extra("double *sptr") + } + field(WPTR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Working Buffer Ptr") + extra("double *wptr") + } + field(INPN, DBF_LONG) { + interest(4) + special(SPC_NOMOD) + prompt("Number of elements in Working Buffer") + } + field(CVB, DBF_DOUBLE) { + interest(3) + special(SPC_NOMOD) + prompt("Compress Value Buffer") + } + field(INX, DBF_ULONG) { + prompt("Compressed Array Inx") + interest(3) + special(SPC_NOMOD) + } +} +recordtype(fanout) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + field(NAME, DBF_STRING) { + special(SPC_NOMOD) + prompt("Record Name") + size(61) + } + field(DESC, DBF_STRING) { + prompt("Descriptor") + promptgroup("10 - Common") + size(41) + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + size(29) + } + field(SCAN, DBF_MENU) { + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + prompt("Scan Mechanism") + menu(menuScan) + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup("20 - Scan") + interest(1) + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + initial("1") + prompt("Disable Value") + promptgroup("20 - Scan") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + promptgroup("20 - Scan") + interest(1) + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + special(SPC_NOMOD) + interest(4) + } + field(MLIS, DBF_NOACCESS) { + extra("ELLLIST mlis") + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + prompt("Force Processing") + interest(3) + pp(TRUE) + } + field(STAT, DBF_MENU) { + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + initial("UDF") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + prompt("Disable Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + menu(menuAlarmSevr) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + prompt("Access Security Pvt") + interest(4) + special(SPC_NOMOD) + } + field(PPN, DBF_NOACCESS) { + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + prompt("pprocessNotifyRecord") + interest(4) + special(SPC_NOMOD) + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + } + field(RSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + special(SPC_NOMOD) + interest(4) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + extra("void *dpvt") + interest(4) + special(SPC_NOMOD) + prompt("Device Private") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Lock Set") + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + prompt("Scheduling Priority") + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + menu(menuPriority) + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + extra("char bkpt") + prompt("Break Point") + special(SPC_NOMOD) + interest(1) + } + field(UDF, DBF_UCHAR) { + initial("1") + pp(TRUE) + prompt("Undefined") + interest(1) + promptgroup("10 - Common") + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + interest(1) + promptgroup("70 - Alarm") + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + interest(2) + special(SPC_NOMOD) + } + field(FLNK, DBF_FWDLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Forward Process Link") + } + field(VAL, DBF_LONG) { + pp(TRUE) + asl(ASL0) + prompt("Used to trigger") + } + field(SELM, DBF_MENU) { + prompt("Select Mechanism") + promptgroup("30 - Action") + interest(1) + menu(fanoutSELM) + } + field(SELN, DBF_USHORT) { + interest(1) + prompt("Link Selection") + initial("1") + } + field(SELL, DBF_INLINK) { + interest(1) + promptgroup("30 - Action") + prompt("Link Selection Loc") + } + field(OFFS, DBF_SHORT) { + initial("0") + prompt("Offset for Specified") + interest(1) + promptgroup("30 - Action") + } + field(SHFT, DBF_SHORT) { + promptgroup("30 - Action") + interest(1) + prompt("Shift for Mask mode") + initial("-1") + } + field(LNK0, DBF_FWDLINK) { + promptgroup("51 - Output 0-7") + interest(1) + prompt("Forward Link 0") + } + field(LNK1, DBF_FWDLINK) { + interest(1) + promptgroup("51 - Output 0-7") + prompt("Forward Link 1") + } + field(LNK2, DBF_FWDLINK) { + prompt("Forward Link 2") + interest(1) + promptgroup("51 - Output 0-7") + } + field(LNK3, DBF_FWDLINK) { + prompt("Forward Link 3") + interest(1) + promptgroup("51 - Output 0-7") + } + field(LNK4, DBF_FWDLINK) { + interest(1) + promptgroup("51 - Output 0-7") + prompt("Forward Link 4") + } + field(LNK5, DBF_FWDLINK) { + interest(1) + promptgroup("51 - Output 0-7") + prompt("Forward Link 5") + } + field(LNK6, DBF_FWDLINK) { + promptgroup("51 - Output 0-7") + interest(1) + prompt("Forward Link 6") + } + field(LNK7, DBF_FWDLINK) { + prompt("Forward Link 7") + promptgroup("51 - Output 0-7") + interest(1) + } + field(LNK8, DBF_FWDLINK) { + promptgroup("52 - Output 8-F") + interest(1) + prompt("Forward Link 8") + } + field(LNK9, DBF_FWDLINK) { + prompt("Forward Link 9") + promptgroup("52 - Output 8-F") + interest(1) + } + field(LNKA, DBF_FWDLINK) { + promptgroup("52 - Output 8-F") + interest(1) + prompt("Forward Link 10") + } + field(LNKB, DBF_FWDLINK) { + promptgroup("52 - Output 8-F") + interest(1) + prompt("Forward Link 11") + } + field(LNKC, DBF_FWDLINK) { + interest(1) + promptgroup("52 - Output 8-F") + prompt("Forward Link 12") + } + field(LNKD, DBF_FWDLINK) { + interest(1) + promptgroup("52 - Output 8-F") + prompt("Forward Link 13") + } + field(LNKE, DBF_FWDLINK) { + promptgroup("52 - Output 8-F") + interest(1) + prompt("Forward Link 14") + } + field(LNKF, DBF_FWDLINK) { + promptgroup("52 - Output 8-F") + interest(1) + prompt("Forward Link 15") + } +} +recordtype(longout) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + special(SPC_NOMOD) + prompt("Record Name") + size(61) + } + field(DESC, DBF_STRING) { + promptgroup("10 - Common") + prompt("Descriptor") + size(41) + } + field(ASG, DBF_STRING) { + promptgroup("10 - Common") + special(SPC_AS) + prompt("Access Security Group") + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + interest(1) + promptgroup("20 - Scan") + } + field(PHAS, DBF_SHORT) { + prompt("Scan Phase") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(EVNT, DBF_STRING) { + prompt("Event Name") + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + size(40) + } + field(TSE, DBF_SHORT) { + promptgroup("20 - Scan") + interest(1) + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Link") + } + field(DTYP, DBF_DEVICE) { + interest(1) + promptgroup("10 - Common") + prompt("Device Type") + } + field(DISV, DBF_SHORT) { + promptgroup("20 - Scan") + prompt("Disable Value") + initial("1") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + interest(1) + promptgroup("20 - Scan") + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Monitor lock") + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Monitor List") + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + pp(TRUE) + prompt("Force Processing") + interest(3) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + special(SPC_NOMOD) + prompt("Alarm Status") + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Severity") + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + interest(2) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + special(SPC_NOMOD) + interest(2) + } + field(PACT, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + prompt("Reprocess ") + interest(1) + special(SPC_NOMOD) + } + field(ASP, DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + interest(4) + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + interest(4) + special(SPC_NOMOD) + } + field(RSET, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Address of RSET") + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + interest(4) + special(SPC_NOMOD) + prompt("DSET address") + } + field(DPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + special(SPC_NOMOD) + interest(4) + prompt("Address of dbRecordType") + } + field(LSET, DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + interest(4) + extra("struct lockRecord *lset") + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(1) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + initial("1") + pp(TRUE) + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + } + field(UDFS, DBF_MENU) { + initial("INVALID") + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + special(SPC_NOMOD) + interest(2) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Forward Process Link") + } + field(VAL, DBF_LONG) { + pp(TRUE) + prompt("Desired Output") + promptgroup("50 - Output") + asl(ASL0) + } + field(OUT, DBF_OUTLINK) { + prompt("Output Specification") + interest(1) + promptgroup("50 - Output") + } + field(DOL, DBF_INLINK) { + prompt("Desired Output Loc") + interest(1) + promptgroup("40 - Input") + } + field(OMSL, DBF_MENU) { + prompt("Output Mode Select") + interest(1) + promptgroup("50 - Output") + menu(menuOmsl) + } + field(EGU, DBF_STRING) { + prompt("Engineering Units") + prop(YES) + promptgroup("80 - Display") + interest(1) + size(16) + } + field(DRVH, DBF_LONG) { + pp(TRUE) + prop(YES) + promptgroup("30 - Action") + interest(1) + prompt("Drive High Limit") + } + field(DRVL, DBF_LONG) { + pp(TRUE) + promptgroup("30 - Action") + prop(YES) + interest(1) + prompt("Drive Low Limit") + } + field(HOPR, DBF_LONG) { + prompt("High Operating Range") + prop(YES) + interest(1) + promptgroup("80 - Display") + } + field(LOPR, DBF_LONG) { + prompt("Low Operating Range") + prop(YES) + promptgroup("80 - Display") + interest(1) + } + field(HIHI, DBF_LONG) { + interest(1) + prop(YES) + promptgroup("70 - Alarm") + prompt("Hihi Alarm Limit") + pp(TRUE) + } + field(LOLO, DBF_LONG) { + pp(TRUE) + prompt("Lolo Alarm Limit") + promptgroup("70 - Alarm") + prop(YES) + interest(1) + } + field(HIGH, DBF_LONG) { + prompt("High Alarm Limit") + prop(YES) + interest(1) + promptgroup("70 - Alarm") + pp(TRUE) + } + field(LOW, DBF_LONG) { + pp(TRUE) + promptgroup("70 - Alarm") + prop(YES) + interest(1) + prompt("Low Alarm Limit") + } + field(HHSV, DBF_MENU) { + pp(TRUE) + promptgroup("70 - Alarm") + interest(1) + prompt("Hihi Severity") + menu(menuAlarmSevr) + } + field(LLSV, DBF_MENU) { + pp(TRUE) + menu(menuAlarmSevr) + prompt("Lolo Severity") + interest(1) + promptgroup("70 - Alarm") + } + field(HSV, DBF_MENU) { + menu(menuAlarmSevr) + prompt("High Severity") + promptgroup("70 - Alarm") + interest(1) + pp(TRUE) + } + field(LSV, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Low Severity") + menu(menuAlarmSevr) + pp(TRUE) + } + field(HYST, DBF_LONG) { + promptgroup("70 - Alarm") + interest(1) + prompt("Alarm Deadband") + } + field(ADEL, DBF_LONG) { + prompt("Archive Deadband") + interest(1) + promptgroup("80 - Display") + } + field(MDEL, DBF_LONG) { + interest(1) + promptgroup("80 - Display") + prompt("Monitor Deadband") + } + field(LALM, DBF_LONG) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Alarmed") + } + field(ALST, DBF_LONG) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST, DBF_LONG) { + special(SPC_NOMOD) + interest(3) + prompt("Last Val Monitored") + } + field(SIOL, DBF_OUTLINK) { + interest(1) + promptgroup("90 - Simulate") + prompt("Simulation Output Link") + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + prompt("Simulation Mode") + special(SPC_MOD) + interest(1) + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + } + field(OLDSIMM, DBF_MENU) { + special(SPC_NOMOD) + interest(4) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + prompt("Sim. Mode Scan") + promptgroup("90 - Simulate") + interest(1) + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + prompt("Sim. Mode Async Delay") + promptgroup("90 - Simulate") + interest(2) + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + prompt("Sim. Mode Private") + interest(4) + special(SPC_NOMOD) + } + field(IVOA, DBF_MENU) { + prompt("INVALID output action") + promptgroup("50 - Output") + interest(2) + menu(menuIvoa) + } + field(IVOV, DBF_LONG) { + interest(2) + promptgroup("50 - Output") + prompt("INVALID output value") + } +} +device(longout, CONSTANT, devLoSoft, "Soft Channel") +device(longout, CONSTANT, devLoSoftCallback, "Async Soft Channel") +device(longout, INST_IO, asynLoInt32, "asynInt32") +device(longout, INST_IO, asynLoUInt32Digital, "asynUInt32Digital") +device(longout, INST_IO, devlongoutStream, "stream") +device(longout, INST_IO, devLoStrParm, "asyn lo stringParm") +device(longout, BBGPIB_IO, devLoAX301, "PZT Bug") +recordtype(lso) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "devSup.h" + % + %/* Declare Device Support Entry Table */ + %typedef struct lsodset { + % long number; + % DEVSUPFUN report; + % DEVSUPFUN init; + % DEVSUPFUN init_record; + % DEVSUPFUN get_ioint_info; + % DEVSUPFUN write_string; + %} lsodset; + % + %#include "callback.h" + field(NAME, DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC, DBF_STRING) { + size(41) + prompt("Descriptor") + promptgroup("10 - Common") + } + field(ASG, DBF_STRING) { + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + size(29) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + prompt("Scan Mechanism") + } + field(PINI, DBF_MENU) { + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + menu(menuPini) + } + field(PHAS, DBF_SHORT) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + size(40) + prompt("Event Name") + promptgroup("20 - Scan") + interest(1) + special(SPC_SCAN) + } + field(TSE, DBF_SHORT) { + interest(1) + promptgroup("20 - Scan") + prompt("Time Stamp Event") + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + interest(1) + promptgroup("20 - Scan") + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + promptgroup("10 - Common") + interest(1) + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Scanning Disable") + } + field(MLOK, DBF_NOACCESS) { + extra("epicsMutexId mlok") + prompt("Monitor lock") + special(SPC_NOMOD) + interest(4) + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + extra("ELLLIST bklnk") + prompt("Backwards link tracking") + interest(4) + special(SPC_NOMOD) + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + menu(menuAlarmStat) + prompt("Alarm Status") + special(SPC_NOMOD) + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + special(SPC_NOMOD) + prompt("Alarm Severity") + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + interest(2) + special(SPC_NOMOD) + prompt("New Alarm Severity") + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + prompt("Alarm Ack Severity") + interest(2) + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(ACKT, DBF_MENU) { + promptgroup("70 - Alarm") + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Transient") + menu(menuYesNo) + initial("YES") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(LCNT, DBF_UCHAR) { + interest(2) + special(SPC_NOMOD) + prompt("Lock Count") + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + interest(1) + special(SPC_NOMOD) + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + extra("struct asgMember *asp") + special(SPC_NOMOD) + interest(4) + prompt("Access Security Pvt") + } + field(PPN, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("pprocessNotify") + extra("struct processNotify *ppn") + } + field(PPNR, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("pprocessNotifyRecord") + extra("struct processNotifyRecord *ppnr") + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + prompt("Scan Private") + special(SPC_NOMOD) + interest(4) + } + field(RSET, DBF_NOACCESS) { + prompt("Address of RSET") + interest(4) + special(SPC_NOMOD) + extra("struct typed_rset *rset") + } + field(DSET, DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + interest(4) + extra("struct dset *dset") + } + field(DPVT, DBF_NOACCESS) { + special(SPC_NOMOD) + interest(4) + prompt("Device Private") + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + extra("struct dbRecordType *rdes") + prompt("Address of dbRecordType") + interest(4) + special(SPC_NOMOD) + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + pp(TRUE) + initial("1") + interest(1) + promptgroup("10 - Common") + prompt("Undefined") + } + field(UDFS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Undefined Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + special(SPC_NOMOD) + interest(2) + prompt("Time") + } + field(FLNK, DBF_FWDLINK) { + prompt("Forward Process Link") + interest(1) + promptgroup("20 - Scan") + } + field(VAL, DBF_NOACCESS) { + asl(ASL0) + prompt("Current Value") + special(SPC_DBADDR) + pp(TRUE) + extra("char *val") + } + field(OVAL, DBF_NOACCESS) { + special(SPC_DBADDR) + interest(3) + prompt("Previous Value") + extra("char *oval") + } + field(SIZV, DBF_USHORT) { + prompt("Size of buffers") + interest(1) + promptgroup("50 - Output") + special(SPC_NOMOD) + initial("41") + } + field(LEN, DBF_ULONG) { + prompt("Length of VAL") + special(SPC_NOMOD) + } + field(OLEN, DBF_ULONG) { + special(SPC_NOMOD) + interest(3) + prompt("Length of OVAL") + } + field(DOL, DBF_INLINK) { + interest(1) + promptgroup("40 - Input") + prompt("Desired Output Link") + } + field(IVOA, DBF_MENU) { + menu(menuIvoa) + prompt("INVALID Output Action") + interest(2) + promptgroup("50 - Output") + } + field(IVOV, DBF_STRING) { + size(40) + prompt("INVALID Output Value") + interest(2) + promptgroup("50 - Output") + } + field(OMSL, DBF_MENU) { + promptgroup("50 - Output") + interest(1) + prompt("Output Mode Select") + menu(menuOmsl) + } + field(OUT, DBF_OUTLINK) { + promptgroup("50 - Output") + interest(1) + prompt("Output Specification") + } + field(MPST, DBF_MENU) { + menu(menuPost) + promptgroup("80 - Display") + interest(1) + prompt("Post Value Monitors") + } + field(APST, DBF_MENU) { + interest(1) + promptgroup("80 - Display") + prompt("Post Archive Monitors") + menu(menuPost) + } + field(SIML, DBF_INLINK) { + promptgroup("90 - Simulate") + interest(1) + prompt("Simulation Mode link") + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + special(SPC_MOD) + interest(1) + prompt("Simulation Mode") + } + field(SIMS, DBF_MENU) { + menu(menuAlarmSevr) + promptgroup("90 - Simulate") + interest(2) + prompt("Simulation Mode Severity") + } + field(SIOL, DBF_OUTLINK) { + prompt("Simulation Output Link") + promptgroup("90 - Simulate") + interest(1) + } + field(OLDSIMM, DBF_MENU) { + prompt("Prev. Simulation Mode") + interest(4) + special(SPC_NOMOD) + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + prompt("Sim. Mode Scan") + promptgroup("90 - Simulate") + interest(1) + menu(menuScan) + initial("65535") + } + field(SDLY, DBF_DOUBLE) { + initial("-1.0") + prompt("Sim. Mode Async Delay") + promptgroup("90 - Simulate") + interest(2) + } + field(SIMPVT, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Sim. Mode Private") + extra("CALLBACK *simpvt") + } +} +device(lso, CONSTANT, devLsoSoft, "Soft Channel") +device(lso, CONSTANT, devLsoSoftCallback, "Async Soft Channel") +device(lso, INST_IO, devLsoStdio, "stdio") +recordtype(mbboDirect) { + %#include "epicsTypes.h" + %#include "link.h" + %#include "epicsMutex.h" + %#include "ellLib.h" + %#include "epicsTime.h" + %#include "callback.h" + field(NAME, DBF_STRING) { + size(61) + prompt("Record Name") + special(SPC_NOMOD) + } + field(DESC, DBF_STRING) { + size(41) + promptgroup("10 - Common") + prompt("Descriptor") + } + field(ASG, DBF_STRING) { + size(29) + prompt("Access Security Group") + promptgroup("10 - Common") + special(SPC_AS) + } + field(SCAN, DBF_MENU) { + menu(menuScan) + prompt("Scan Mechanism") + interest(1) + promptgroup("20 - Scan") + special(SPC_SCAN) + } + field(PINI, DBF_MENU) { + menu(menuPini) + prompt("Process at iocInit") + promptgroup("20 - Scan") + interest(1) + } + field(PHAS, DBF_SHORT) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Scan Phase") + } + field(EVNT, DBF_STRING) { + interest(1) + special(SPC_SCAN) + promptgroup("20 - Scan") + prompt("Event Name") + size(40) + } + field(TSE, DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup("20 - Scan") + interest(1) + } + field(TSEL, DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup("20 - Scan") + interest(1) + } + field(DTYP, DBF_DEVICE) { + prompt("Device Type") + interest(1) + promptgroup("10 - Common") + } + field(DISV, DBF_SHORT) { + initial("1") + promptgroup("20 - Scan") + prompt("Disable Value") + } + field(DISA, DBF_SHORT) { + prompt("Disable") + } + field(SDIS, DBF_INLINK) { + prompt("Scanning Disable") + interest(1) + promptgroup("20 - Scan") + } + field(MLOK, DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + interest(4) + extra("epicsMutexId mlok") + } + field(MLIS, DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + interest(4) + extra("ELLLIST mlis") + } + field(BKLNK, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Backwards link tracking") + extra("ELLLIST bklnk") + } + field(DISP, DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC, DBF_UCHAR) { + interest(3) + prompt("Force Processing") + pp(TRUE) + } + field(STAT, DBF_MENU) { + initial("UDF") + special(SPC_NOMOD) + prompt("Alarm Status") + menu(menuAlarmStat) + } + field(SEVR, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Alarm Severity") + special(SPC_NOMOD) + } + field(NSTA, DBF_MENU) { + special(SPC_NOMOD) + interest(2) + prompt("New Alarm Status") + menu(menuAlarmStat) + } + field(NSEV, DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + interest(2) + menu(menuAlarmSevr) + } + field(ACKS, DBF_MENU) { + menu(menuAlarmSevr) + interest(2) + special(SPC_NOMOD) + prompt("Alarm Ack Severity") + } + field(ACKT, DBF_MENU) { + initial("YES") + menu(menuYesNo) + interest(2) + special(SPC_NOMOD) + promptgroup("70 - Alarm") + prompt("Alarm Ack Transient") + } + field(DISS, DBF_MENU) { + menu(menuAlarmSevr) + prompt("Disable Alarm Sevrty") + promptgroup("70 - Alarm") + interest(1) + } + field(LCNT, DBF_UCHAR) { + prompt("Lock Count") + interest(2) + special(SPC_NOMOD) + } + field(PACT, DBF_UCHAR) { + special(SPC_NOMOD) + interest(1) + prompt("Record active") + } + field(PUTF, DBF_UCHAR) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO, DBF_UCHAR) { + interest(1) + special(SPC_NOMOD) + prompt("Reprocess ") + } + field(ASP, DBF_NOACCESS) { + interest(4) + special(SPC_NOMOD) + prompt("Access Security Pvt") + extra("struct asgMember *asp") + } + field(PPN, DBF_NOACCESS) { + extra("struct processNotify *ppn") + prompt("pprocessNotify") + special(SPC_NOMOD) + interest(4) + } + field(PPNR, DBF_NOACCESS) { + extra("struct processNotifyRecord *ppnr") + prompt("pprocessNotifyRecord") + special(SPC_NOMOD) + interest(4) + } + field(SPVT, DBF_NOACCESS) { + extra("struct scan_element *spvt") + interest(4) + special(SPC_NOMOD) + prompt("Scan Private") + } + field(RSET, DBF_NOACCESS) { + extra("struct typed_rset *rset") + special(SPC_NOMOD) + interest(4) + prompt("Address of RSET") + } + field(DSET, DBF_NOACCESS) { + extra("struct dset *dset") + prompt("DSET address") + special(SPC_NOMOD) + interest(4) + } + field(DPVT, DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + interest(4) + extra("void *dpvt") + } + field(RDES, DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + interest(4) + extra("struct dbRecordType *rdes") + } + field(LSET, DBF_NOACCESS) { + extra("struct lockRecord *lset") + prompt("Lock Set") + interest(4) + special(SPC_NOMOD) + } + field(PRIO, DBF_MENU) { + menu(menuPriority) + special(SPC_SCAN) + interest(1) + promptgroup("20 - Scan") + prompt("Scheduling Priority") + } + field(TPRO, DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT, DBF_NOACCESS) { + interest(1) + special(SPC_NOMOD) + prompt("Break Point") + extra("char bkpt") + } + field(UDF, DBF_UCHAR) { + prompt("Undefined") + promptgroup("10 - Common") + interest(1) + initial("1") + pp(TRUE) + } + field(UDFS, DBF_MENU) { + promptgroup("70 - Alarm") + interest(1) + prompt("Undefined Alarm Sevrty") + menu(menuAlarmSevr) + initial("INVALID") + } + field(TIME, DBF_NOACCESS) { + extra("epicsTimeStamp time") + prompt("Time") + interest(2) + special(SPC_NOMOD) + } + field(FLNK, DBF_FWDLINK) { + promptgroup("20 - Scan") + interest(1) + prompt("Forward Process Link") + } + field(VAL, DBF_LONG) { + asl(ASL0) + promptgroup("50 - Output") + prompt("Word") + pp(TRUE) + } + field(OMSL, DBF_MENU) { + pp(TRUE) + prompt("Output Mode Select") + special(SPC_RESET) + interest(1) + promptgroup("50 - Output") + menu(menuOmsl) + } + field(NOBT, DBF_SHORT) { + interest(1) + promptgroup("50 - Output") + special(SPC_NOMOD) + prompt("Number of Bits") + } + field(DOL, DBF_INLINK) { + interest(1) + promptgroup("40 - Input") + prompt("Desired Output Loc") + } + field(OUT, DBF_OUTLINK) { + promptgroup("50 - Output") + interest(1) + prompt("Output Specification") + } + field(RVAL, DBF_ULONG) { + pp(TRUE) + special(SPC_NOMOD) + prompt("Raw Value") + } + field(ORAW, DBF_ULONG) { + prompt("Prev Raw Value") + interest(3) + special(SPC_NOMOD) + } + field(RBV, DBF_ULONG) { + special(SPC_NOMOD) + prompt("Readback Value") + } + field(ORBV, DBF_ULONG) { + interest(3) + special(SPC_NOMOD) + prompt("Prev Readback Value") + } + field(MASK, DBF_ULONG) { + prompt("Hardware Mask") + interest(1) + special(SPC_NOMOD) + } + field(MLST, DBF_LONG) { + special(SPC_NOMOD) + interest(3) + prompt("Last Value Monitored") + } + field(SHFT, DBF_USHORT) { + prompt("Shift") + promptgroup("50 - Output") + interest(1) + } + field(SIOL, DBF_OUTLINK) { + prompt("Simulation Output Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIML, DBF_INLINK) { + prompt("Simulation Mode Link") + promptgroup("90 - Simulate") + interest(1) + } + field(SIMM, DBF_MENU) { + menu(menuYesNo) + interest(1) + special(SPC_MOD) + prompt("Simulation Mode") + } + field(SIMS, DBF_MENU) { + prompt("Simulation Mode Severity") + interest(2) + promptgroup("90 - Simulate") + menu(menuAlarmSevr) + } + field(OLDSIMM, DBF_MENU) { + interest(4) + special(SPC_NOMOD) + prompt("Prev. Simulation Mode") + menu(menuSimm) + } + field(SSCN, DBF_MENU) { + initial("65535") + menu(menuScan) + prompt("Sim. Mode Scan") + promptgroup("90 - Simulate") + interest(1) + } + field(SDLY, DBF_DOUBLE) { + promptgroup("90 - Simulate") + interest(2) + prompt("Sim. Mode Async Delay") + initial("-1.0") + } + field(SIMPVT, DBF_NOACCESS) { + extra("CALLBACK *simpvt") + special(SPC_NOMOD) + interest(4) + prompt("Sim. Mode Private") + } + field(IVOA, DBF_MENU) { + prompt("INVALID outpt action") + interest(2) + promptgroup("50 - Output") + menu(menuIvoa) + } + field(IVOV, DBF_LONG) { + prompt("INVALID output value") + promptgroup("50 - Output") + interest(2) + } + field(B0, DBF_UCHAR) { + pp(TRUE) + promptgroup("51 - Output 0-7") + interest(1) + special(SPC_MOD) + prompt("Bit 0") + } + field(B1, DBF_UCHAR) { + prompt("Bit 1") + special(SPC_MOD) + interest(1) + promptgroup("51 - Output 0-7") + pp(TRUE) + } + field(B2, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 2") + promptgroup("51 - Output 0-7") + interest(1) + special(SPC_MOD) + } + field(B3, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 3") + interest(1) + promptgroup("51 - Output 0-7") + special(SPC_MOD) + } + field(B4, DBF_UCHAR) { + prompt("Bit 4") + interest(1) + special(SPC_MOD) + promptgroup("51 - Output 0-7") + pp(TRUE) + } + field(B5, DBF_UCHAR) { + prompt("Bit 5") + special(SPC_MOD) + interest(1) + promptgroup("51 - Output 0-7") + pp(TRUE) + } + field(B6, DBF_UCHAR) { + pp(TRUE) + interest(1) + promptgroup("51 - Output 0-7") + special(SPC_MOD) + prompt("Bit 6") + } + field(B7, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 7") + promptgroup("51 - Output 0-7") + interest(1) + special(SPC_MOD) + } + field(B8, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 8") + interest(1) + special(SPC_MOD) + promptgroup("52 - Output 8-15") + } + field(B9, DBF_UCHAR) { + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + prompt("Bit 9") + pp(TRUE) + } + field(BA, DBF_UCHAR) { + special(SPC_MOD) + interest(1) + promptgroup("52 - Output 8-15") + prompt("Bit 10") + pp(TRUE) + } + field(BB, DBF_UCHAR) { + prompt("Bit 11") + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + pp(TRUE) + } + field(BC, DBF_UCHAR) { + pp(TRUE) + special(SPC_MOD) + interest(1) + promptgroup("52 - Output 8-15") + prompt("Bit 12") + } + field(BD, DBF_UCHAR) { + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + prompt("Bit 13") + pp(TRUE) + } + field(BE, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 14") + promptgroup("52 - Output 8-15") + interest(1) + special(SPC_MOD) + } + field(BF, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 15") + interest(1) + promptgroup("52 - Output 8-15") + special(SPC_MOD) + } + field(B10, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 16") + special(SPC_MOD) + interest(1) + promptgroup("53 - Output 16-23") + } + field(B11, DBF_UCHAR) { + prompt("Bit 17") + interest(1) + promptgroup("53 - Output 16-23") + special(SPC_MOD) + pp(TRUE) + } + field(B12, DBF_UCHAR) { + interest(1) + special(SPC_MOD) + promptgroup("53 - Output 16-23") + prompt("Bit 18") + pp(TRUE) + } + field(B13, DBF_UCHAR) { + interest(1) + promptgroup("53 - Output 16-23") + special(SPC_MOD) + prompt("Bit 19") + pp(TRUE) + } + field(B14, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 20") + interest(1) + promptgroup("53 - Output 16-23") + special(SPC_MOD) + } + field(B15, DBF_UCHAR) { + promptgroup("53 - Output 16-23") + interest(1) + special(SPC_MOD) + prompt("Bit 21") + pp(TRUE) + } + field(B16, DBF_UCHAR) { + prompt("Bit 22") + special(SPC_MOD) + interest(1) + promptgroup("53 - Output 16-23") + pp(TRUE) + } + field(B17, DBF_UCHAR) { + prompt("Bit 23") + interest(1) + promptgroup("53 - Output 16-23") + special(SPC_MOD) + pp(TRUE) + } + field(B18, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 24") + interest(1) + special(SPC_MOD) + promptgroup("54 - Output 24-31") + } + field(B19, DBF_UCHAR) { + interest(1) + promptgroup("54 - Output 24-31") + special(SPC_MOD) + prompt("Bit 25") + pp(TRUE) + } + field(B1A, DBF_UCHAR) { + interest(1) + special(SPC_MOD) + promptgroup("54 - Output 24-31") + prompt("Bit 26") + pp(TRUE) + } + field(B1B, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 27") + special(SPC_MOD) + interest(1) + promptgroup("54 - Output 24-31") + } + field(B1C, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 28") + special(SPC_MOD) + interest(1) + promptgroup("54 - Output 24-31") + } + field(B1D, DBF_UCHAR) { + pp(TRUE) + prompt("Bit 29") + promptgroup("54 - Output 24-31") + interest(1) + special(SPC_MOD) + } + field(B1E, DBF_UCHAR) { + pp(TRUE) + interest(1) + promptgroup("54 - Output 24-31") + special(SPC_MOD) + prompt("Bit 30") + } + field(B1F, DBF_UCHAR) { + prompt("Bit 31") + interest(1) + promptgroup("54 - Output 24-31") + special(SPC_MOD) + pp(TRUE) + } +} +device(mbboDirect, CONSTANT, devMbboDirectSoft, "Soft Channel") +device(mbboDirect, CONSTANT, devMbboDirectSoftRaw, "Raw Soft Channel") +device(mbboDirect, CONSTANT, devMbboDirectSoftCallback, "Async Soft Channel") +device(mbboDirect, INST_IO, asynMbboDirectUInt32Digital, "asynUInt32Digital") +device(mbboDirect, INST_IO, devmbboDirectStream, "stream") +driver(drvAsyn) +driver(stream) +link(calc, lnkCalcIf) +link(const, lnkConstIf) +registrar(arrInitialize) +registrar(arrayTestRegister) +registrar(syncInitialize) +registrar(asynInterposeEosRegister) +registrar(asynRegister) +registrar(Keithley65xxEMRegistrar) +registrar(Keithley2kDMM_mf40Registrar) +registrar(aCalcMonitorMemRegister) +registrar(drvAsynIPPortRegisterCommands) +registrar(subAveRegister) +registrar(rsrvRegistrar) +registrar(tsInitialize) +registrar(acalcTotalAllocatedMemoryRegister) +registrar(dbndInitialize) +registrar(Keithley2kDMMRegistrar) +registrar(editSseqRegistrar) +registrar(asynInterposeFlushRegister) +registrar(drvAsynIPServerPortRegisterCommands) +registrar(asSub) +registrar(streamRegistrar) +registrar(interpRegister) +variable(sCalcStackHW, int) +variable(dbRecordsOnceOnly, int) +variable(dbQuietMacroWarnings, int) +variable(streamDebug, int) +variable(sseqRecDebug, int) +variable(transformRecordDebug, int) +variable(aCalcMonitorMem_debug, int) +variable(dbTemplateMaxVars, int) +variable(callbackParallelThreadsDefault, int) +variable(aCalcoutRecordDebug, int) +variable(sCalcPerformDebug, int) +variable(atExitDebug, int) +variable(interpDebug, int) +variable(CASDEBUG, int) +variable(dbBptNotMonotonic, int) +variable(sCalcoutRecordDebug, int) +variable(aCalcLoopMax, int) +variable(sCalcPostfixDebug, int) +variable(calcoutODLYprecision, int) +variable(sCalcStackLW, int) +variable(devsCalcoutSoftDebug, int) +variable(aCalcPerformDebug, int) +variable(sCalcLoopMax, int) +variable(calcoutODLYlimit, double) +variable(histogramSDELprecision, int) +variable(seqDLYlimit, double) +variable(arrayTestDebug, int) +variable(aCalcPostfixDebug, int) +variable(debugSubAve, int) +variable(boHIGHprecision, int) +variable(boHIGHlimit, double) +variable(asCaDebug, int) +variable(dbRecordsAbcSorted, int) +variable(dbThreadRealtimeLock, int) +variable(swaitRecordDebug, int) +variable(aCalcAsyncThreshold, int) +variable(seqDLYprecision, int) +variable(dbConvertStrict, int) +variable(devaCalcoutSoftDebug, int) diff -r 000000000000 -r 77d8eafe2a07 iocBoot/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iocBoot/Makefile Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,6 @@ +TOP = .. +include $(TOP)/configure/CONFIG +DIRS += $(wildcard *ioc*) +DIRS += $(wildcard as*) +include $(CONFIG)/RULES_DIRS + diff -r 000000000000 -r 77d8eafe2a07 iocBoot/iocIOCINFRA/Makefile --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iocBoot/iocIOCINFRA/Makefile Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,5 @@ +TOP = ../.. +include $(TOP)/configure/CONFIG +ARCH = $(EPICS_HOST_ARCH) +TARGETS = envPaths +include $(TOP)/configure/RULES.ioc diff -r 000000000000 -r 77d8eafe2a07 iocBoot/iocIOCINFRA/st.cmd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/iocBoot/iocIOCINFRA/st.cmd Thu Mar 07 09:23:26 2019 +0100 @@ -0,0 +1,91 @@ +#!../../bin/linux-x86_64/IOCINFRA + +#- You may have to change IOCINFRA to something else +#- everywhere it appears in this file + +epicsEnvSet("ARCH","linux-x86_64") +epicsEnvSet("IOC","IOCINFRA") +epicsEnvSet("TOP","/epics/iocs/sys/infra") + +#iocStat stuff on softIOCs +epicsEnvSet("ENGINEER","Heinz") +epicsEnvSet("LOCATION","trARPES") +epicsEnvSet("STARTUP","${TOP}") +epicsEnvSet("ST_CMD","st.cmd") + +#not fully understood :-( +epicsEnvSet ("EPICS_CAS_INTF_ADDR_LIST","172.24.192.27") + +< envPaths +epicsEnvSet "STREAM_PROTOCOL_PATH" "$(TOP)/db" + +#used by autosave +epicsEnvSet ("LOG_DIR", "/epics/iocs/log") + +cd "${TOP}" +epicsEnvSet "XGS-600" "_trarpes_vac_xgs600_1" + +## Register all support components +dbLoadDatabase "dbd/IOCINFRA.dbd" +IOCINFRA_registerRecordDeviceDriver pdbbase + +## Load record instances +#dbLoadRecords("db/xxx.db","user=epics") + +# Configure asyn communication port, first +drvAsynIPPortConfigure(${XGS-600}, "172.24.192.29:4001", 0, 0, 0 ) +dbLoadTemplate("db/XGS600.substitutions") + +drvAsynIPPortConfigure("MOXA_2", "172.24.192.29:4002", 0, 0, 0) +#asynSetTraceIOMask("MOXA_2", -1, 0x2) +#asynSetTraceMask("MOXA_2", -1, 0x9) +dbLoadTemplate("db/SATECO_lakeshore.substitution") + +drvAsynIPPortConfigure("MOXA_3", "172.24.192.29:4003", 0, 0, 0) +#asynSetTraceIOMask("MOXA_3", 0, 0x5) +#asynSetTraceMask("MOXA_3", 0, 0xB) +dbLoadRecords("db/TPG26x.db", "P=trARPES:PIC_PRE:, IFPRESSUR1=, IFPRESSUR2=, PORT=MOXA_3") + +#drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0) +#asynSetTraceIOMask("MOXA_4", 0, 0x2) +#asynSetTraceMask("MOXA_4", 0, 0x9) +#dbLoadRecords "db/devKeithley6487.db", "P=trARPES:, R=Sample:, PORT=MOXA_4, A=-1,NELM=1000") +#dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=KeithleyIO") + +drvAsynIPPortConfigure("MOXA_4", "172.24.192.29:4004", 0, 0, 0) +asynOctetSetInputEos("MOXA_4",0,"\n") +asynOctetSetOutputEos("MOXA_4",0,"\n") +drvAsynKeithley648x("6485", "Keithley6485", "MOXA_4",0) +#asynSetTraceIOMask("MOXA_4", 0, 0x2) +#asynSetTraceMask("MOXA_4", 0, 0x9) +dbLoadRecords("db/Keithley6485.db", "P=trARPES:, CA=Sample:, PORT=Keithley6485") + + +drvAsynIPPortConfigure("MOXA_5", "172.24.192.29:4005", 0, 0, 0) +dbLoadRecords("db/TPG26x.db", "P=trARPES:LL:, IFPRESSUR1=, IFPRESSUR2=#, PORT=MOXA_5") + +drvAsynIPPortConfigure("MOXA_9", "172.24.192.29:4009", 0, 0, 0) +dbLoadRecords("db/TPG26x.db", "P=trARPES:HHG:, IFPRESSUR1=, IFPRESSUR2=#, PORT=MOXA_9") + +drvAsynIPPortConfigure("MOXA_11", "172.24.192.29:4011", 0, 0, 0) +#asynSetTraceIOMask("MOXA_11", -1, 0x2) +#asynSetTraceMask("MOXA_11", -1, 0x9) +dbLoadTemplate("db/Bronkhorst.substitution") + +dbLoadRecords "db/asynRecord.db", "P=trARPES,R=asyn,PORT=MOXA_4,ADDR=-1,OMAX=0,IMAX=0") + +cd "${TOP}/iocBoot/${IOC}" +iocInit + +################################################# Create autosave monitor sets + +create_monitor_set("${IOC}_0.req", 5, "P=${IOC}:") +create_monitor_set("${IOC}_1.req", 30, "P=${IOC}:") + +## Report Installed and Configured I/O-Hardware Information +dbior 0 1 > ${LOG_DIR}/Database/${IOC}.dbior +dbhcr > ${LOG_DIR}/Database/${IOC}.dbhcr +dbl > ${LOG_DIR}/Database/${IOC}.dbl + +## Start any sequence programs +#seq sncxxx,"user=epics"