--- /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__")
+}
--- /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"}
+}
--- /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")
+}
+
--- /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")
+}
--- /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: <string>
+# INTYPE? <input> - Input Type Parameter Query
+# return: n,n,n,n,n <sensorType>,<autorange>,<range>,<compensation>,<units>
+# HTR? <output> - Heater Output Query
+# return: +nnn.n
+# HTRSET? <output> - Heater Setup Query
+# return: n,n,+n.nnn,n <htrResistance>,<maxCurrent>,<maxUserCurrent>,<current/power>
+# HTRST? <output> - Heater Status Query
+# return: n<error code>
+# <C/K/S>RDG? <input> - Celcius/Kevin/Sensor Input Reading Query
+# return: +nnn.n
+# RDGST? <input> - Input Reading Status Query
+# return: n <status byte>
+# SETP <output>,<value> - Control Setpoint Command
+# SETP? <value> - Control Setpoint Query
+# return: +nnn.nnn
+# RANGE <output>,<range> - Heater Range Command
+# RANGE? <value> - Heater Range Query
+# return: <0=Off, 1=Low(On), 2=Medium, 3=High
+# PID <output>,<P>,<I>,<D> - Control Loop Parameters Command
+# PID? <output> - Control Loop Query
+# return: <nnn.n>,<nnn.n>,<nnn.n>
+# RAMP <output>,<off(0)/on(1)>,<rate> - Control Setpoint Ramp Cmd
+# RAMP? <output> - Control Setpoint Ramp Query
+# return: <off(0)/on(1)>,<rate>
+#
+
+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";
+ }
+
+
+
--- /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 <anyname>.db template is not named <anyname>*.template add
+# <anyname>_TEMPLATE = <templatename>
+
+include $(TOP)/configure/RULES
+#----------------------------------------
+# ADD EXTRA GNUMAKE RULES BELOW HERE
+
--- /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")
+}
--- /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" }
+}
--- /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")
+}
+
--- /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";}
+
--- /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")
+}
--- /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}";
+}
--- /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";
+}
+
+
+
--- /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" }
+}
--- /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")
+}
--- /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")
+}
+
+
--- /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)")
+}
+
--- /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";
+}
--- /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")
+}
--- /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;
+}
+
--- /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; }
+}
--- /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
+
--- /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 <stddef.h>
+#include <stdlib.h>
+#include <stddef.h>
+#include <string.h>
+#include <stdio.h>
+
+#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);
+}
--- /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
+
--- /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 <stdio.h>
+#include <aSubRecord.h>
+#include <registryFunction.h>
+#include <epicsExport.h>
+
+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);
+
+
+
--- /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)
--- /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 <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* EPICS system related include files */
+#include <iocsh.h>
+#include <epicsStdio.h>
+#include <cantProceed.h>
+#include <epicsString.h>
+#include <epicsExport.h>
+#include <errlog.h>
+
+/* EPICS synApps/Asyn related include files */
+#include <asynDriver.h>
+#include <asynDrvUser.h>
+#include <asynInt32.h>
+#include <asynFloat64.h>
+#include <asynOctet.h>
+#include <asynOctetSyncIO.h>
+#include <asynStandardInterfaces.h>
+
+/* 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 );
--- /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)
--- /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
Binary file bin/linux-x86_64/IOCINFRA has changed
--- /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
+
--- /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 = </IOC's/absolute/path/to/install/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
+
--- /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
--- /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
--- /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
--- /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
--- /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
--- /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
+
--- /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; }
+}
--- /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")
+}
+
+
--- /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";
+}
+
+
+
--- /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" }
+}
--- /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")
+}
--- /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")
+}
+
+
--- /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)
--- /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
+
--- /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
--- /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"