From 13273acd1ae365b9e4b0db5f48e4ccd8c29388d1 Mon Sep 17 00:00:00 2001 From: hadaq Date: Fri, 25 Apr 2008 16:56:09 +0000 Subject: [PATCH] Initial revision --- ebctrl/ioc/Makefile | 9 + ebctrl/ioc/bin/linux-x86/ebctrl | Bin 0 -> 104181 bytes ebctrl/ioc/configure/CONFIG | 26 + ebctrl/ioc/configure/CONFIG_SITE | 26 + ebctrl/ioc/configure/Makefile | 19 + .../configure/O.linux-x86/CONFIG_APP_INCLUDE | 13 + ebctrl/ioc/configure/O.linux-x86/Makefile | 10 + .../ioc/configure/O.linux-x86/RULES_INCLUDE | 3 + ebctrl/ioc/configure/RELEASE | 30 + ebctrl/ioc/configure/RULES | 6 + ebctrl/ioc/configure/RULES.ioc | 2 + ebctrl/ioc/configure/RULES_DIRS | 2 + ebctrl/ioc/configure/RULES_TOP | 3 + ebctrl/ioc/db/dbExample1.db | 62 + ebctrl/ioc/db/dbExample2.db | 38 + ebctrl/ioc/db/dbSubExample.db | 5 + ebctrl/ioc/db/evtbuild.db | 124 + ebctrl/ioc/db/user.substitutions | 12 + ebctrl/ioc/db/userHost.substitutions | 12 + ebctrl/ioc/dbd/ebctrl.dbd | 13320 ++++++++++++++++ ebctrl/ioc/dbd/genSubRecord.dbd | 1875 +++ ebctrl/ioc/dbd/xxxRecord.dbd | 117 + ebctrl/ioc/dbd/xxxSupport.dbd | 2 + ebctrl/ioc/ebctrlApp/Db/Makefile | 24 + ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile | 10 + ebctrl/ioc/ebctrlApp/Db/dbExample1.db | 62 + ebctrl/ioc/ebctrlApp/Db/dbExample2.db | 38 + ebctrl/ioc/ebctrlApp/Db/dbSubExample.db | 5 + ebctrl/ioc/ebctrlApp/Db/evtbuild.db | 124 + ebctrl/ioc/ebctrlApp/Db/user.substitutions | 12 + .../ioc/ebctrlApp/Db/userHost.substitutions | 12 + ebctrl/ioc/ebctrlApp/Makefile | 8 + ebctrl/ioc/ebctrlApp/src/Makefile | 86 + ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd | 13320 ++++++++++++++++ .../ebctrlApp/src/O.Common/ebctrl.dbd.depends | 51 + .../ebctrlApp/src/O.Common/ebctrlInclude.dbd | 6 + .../ioc/ebctrlApp/src/O.Common/genSubRecord.h | 1275 ++ ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h | 278 + ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile | 10 + .../ebctrlApp/src/O.linux-x86/MakefileInclude | 359 + .../src/O.linux-x86/devXxxSoft.depends | 34 + ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl | Bin 0 -> 104181 bytes .../src/O.linux-x86/ebctrlMain.depends | 15 + .../ebctrl_registerRecordDeviceDriver.cpp | 293 + .../ebctrl_registerRecordDeviceDriver.depends | 35 + .../src/O.linux-x86/evtbuild.depends | 23 + .../src/O.linux-x86/genSubRecord.depends | 40 + .../src/O.linux-x86/genrunid.depends | 20 + .../src/O.linux-x86/writerunid.depends | 22 + .../src/O.linux-x86/xxxRecord.depends | 39 + ebctrl/ioc/ebctrlApp/src/dbSubExample.c | 32 + ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd | 3 + ebctrl/ioc/ebctrlApp/src/devXxxSoft.c | 58 + ebctrl/ioc/ebctrlApp/src/ebctrlHello.c | 31 + ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd | 1 + ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp | 23 + ebctrl/ioc/ebctrlApp/src/evtbuild.c | 93 + ebctrl/ioc/ebctrlApp/src/evtbuild.dbd | 3 + ebctrl/ioc/ebctrlApp/src/genSubRecord.c | 1355 ++ ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd | 1875 +++ ebctrl/ioc/ebctrlApp/src/genrunid.c | 109 + ebctrl/ioc/ebctrlApp/src/genrunid.dbd | 3 + ebctrl/ioc/ebctrlApp/src/sncExample.dbd | 1 + ebctrl/ioc/ebctrlApp/src/sncExample.stt | 22 + ebctrl/ioc/ebctrlApp/src/sncProgram.st | 1 + ebctrl/ioc/ebctrlApp/src/writerunid.c | 52 + ebctrl/ioc/ebctrlApp/src/writerunid.dbd | 3 + ebctrl/ioc/ebctrlApp/src/xxxRecord.c | 272 + ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd | 117 + ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd | 2 + ebctrl/ioc/include/genSubRecord.h | 1275 ++ ebctrl/ioc/include/hadtu.h | 156 + ebctrl/ioc/include/hadtuqueue.h | 31 + ebctrl/ioc/include/hardware.h | 71 + ebctrl/ioc/include/psxshm.h | 19 + ebctrl/ioc/include/shmtrans.h | 47 + ebctrl/ioc/include/subevt.h | 127 + ebctrl/ioc/include/worker.h | 50 + ebctrl/ioc/include/xxxRecord.h | 278 + ebctrl/ioc/iocBoot/Makefile | 6 + ebctrl/ioc/iocBoot/iocebctrl/Makefile | 5 + ebctrl/ioc/iocBoot/iocebctrl/README | 9 + ebctrl/ioc/iocBoot/iocebctrl/envPaths | 4 + ebctrl/ioc/iocBoot/iocebctrl/st.cmd | 27 + 84 files changed, 38078 insertions(+) create mode 100644 ebctrl/ioc/Makefile create mode 100755 ebctrl/ioc/bin/linux-x86/ebctrl create mode 100644 ebctrl/ioc/configure/CONFIG create mode 100644 ebctrl/ioc/configure/CONFIG_SITE create mode 100644 ebctrl/ioc/configure/Makefile create mode 100644 ebctrl/ioc/configure/O.linux-x86/CONFIG_APP_INCLUDE create mode 100644 ebctrl/ioc/configure/O.linux-x86/Makefile create mode 100644 ebctrl/ioc/configure/O.linux-x86/RULES_INCLUDE create mode 100644 ebctrl/ioc/configure/RELEASE create mode 100644 ebctrl/ioc/configure/RULES create mode 100644 ebctrl/ioc/configure/RULES.ioc create mode 100644 ebctrl/ioc/configure/RULES_DIRS create mode 100644 ebctrl/ioc/configure/RULES_TOP create mode 100644 ebctrl/ioc/db/dbExample1.db create mode 100644 ebctrl/ioc/db/dbExample2.db create mode 100644 ebctrl/ioc/db/dbSubExample.db create mode 100644 ebctrl/ioc/db/evtbuild.db create mode 100644 ebctrl/ioc/db/user.substitutions create mode 100644 ebctrl/ioc/db/userHost.substitutions create mode 100644 ebctrl/ioc/dbd/ebctrl.dbd create mode 100644 ebctrl/ioc/dbd/genSubRecord.dbd create mode 100644 ebctrl/ioc/dbd/xxxRecord.dbd create mode 100644 ebctrl/ioc/dbd/xxxSupport.dbd create mode 100644 ebctrl/ioc/ebctrlApp/Db/Makefile create mode 100644 ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile create mode 100644 ebctrl/ioc/ebctrlApp/Db/dbExample1.db create mode 100644 ebctrl/ioc/ebctrlApp/Db/dbExample2.db create mode 100644 ebctrl/ioc/ebctrlApp/Db/dbSubExample.db create mode 100755 ebctrl/ioc/ebctrlApp/Db/evtbuild.db create mode 100644 ebctrl/ioc/ebctrlApp/Db/user.substitutions create mode 100644 ebctrl/ioc/ebctrlApp/Db/userHost.substitutions create mode 100644 ebctrl/ioc/ebctrlApp/Makefile create mode 100644 ebctrl/ioc/ebctrlApp/src/Makefile create mode 100644 ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/O.Common/ebctrlInclude.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/O.Common/genSubRecord.h create mode 100644 ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/MakefileInclude create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/devXxxSoft.depends create mode 100755 ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrlMain.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.cpp create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl_registerRecordDeviceDriver.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/evtbuild.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/genSubRecord.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/genrunid.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/writerunid.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/O.linux-x86/xxxRecord.depends create mode 100644 ebctrl/ioc/ebctrlApp/src/dbSubExample.c create mode 100644 ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/devXxxSoft.c create mode 100644 ebctrl/ioc/ebctrlApp/src/ebctrlHello.c create mode 100644 ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp create mode 100644 ebctrl/ioc/ebctrlApp/src/evtbuild.c create mode 100644 ebctrl/ioc/ebctrlApp/src/evtbuild.dbd create mode 100755 ebctrl/ioc/ebctrlApp/src/genSubRecord.c create mode 100755 ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/genrunid.c create mode 100644 ebctrl/ioc/ebctrlApp/src/genrunid.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/sncExample.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/sncExample.stt create mode 100644 ebctrl/ioc/ebctrlApp/src/sncProgram.st create mode 100644 ebctrl/ioc/ebctrlApp/src/writerunid.c create mode 100644 ebctrl/ioc/ebctrlApp/src/writerunid.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/xxxRecord.c create mode 100644 ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd create mode 100644 ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd create mode 100644 ebctrl/ioc/include/genSubRecord.h create mode 100644 ebctrl/ioc/include/hadtu.h create mode 100644 ebctrl/ioc/include/hadtuqueue.h create mode 100644 ebctrl/ioc/include/hardware.h create mode 100644 ebctrl/ioc/include/psxshm.h create mode 100644 ebctrl/ioc/include/shmtrans.h create mode 100644 ebctrl/ioc/include/subevt.h create mode 100644 ebctrl/ioc/include/worker.h create mode 100644 ebctrl/ioc/include/xxxRecord.h create mode 100644 ebctrl/ioc/iocBoot/Makefile create mode 100644 ebctrl/ioc/iocBoot/iocebctrl/Makefile create mode 100644 ebctrl/ioc/iocBoot/iocebctrl/README create mode 100644 ebctrl/ioc/iocBoot/iocebctrl/envPaths create mode 100644 ebctrl/ioc/iocBoot/iocebctrl/st.cmd diff --git a/ebctrl/ioc/Makefile b/ebctrl/ioc/Makefile new file mode 100644 index 0000000..bb27ec0 --- /dev/null +++ b/ebctrl/ioc/Makefile @@ -0,0 +1,9 @@ +#Makefile at top of application tree +TOP = . +include $(TOP)/configure/CONFIG +DIRS := $(DIRS) $(filter-out $(DIRS), configure) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *App)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard *app)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocBoot)) +DIRS := $(DIRS) $(filter-out $(DIRS), $(wildcard iocboot)) +include $(TOP)/configure/RULES_TOP diff --git a/ebctrl/ioc/bin/linux-x86/ebctrl b/ebctrl/ioc/bin/linux-x86/ebctrl new file mode 100755 index 0000000000000000000000000000000000000000..71b0b6ad63ca0b7dadd40f0484871f8f731ab784 GIT binary patch literal 104181 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 + +# If you don't want to install into $(TOP) then +# define INSTALL_LOCATION here +#INSTALL_LOCATION= + diff --git a/ebctrl/ioc/configure/Makefile b/ebctrl/ioc/configure/Makefile new file mode 100644 index 0000000..0052e7e --- /dev/null +++ b/ebctrl/ioc/configure/Makefile @@ -0,0 +1,19 @@ +# Makefile + +TOP=.. + +include $(TOP)/configure/CONFIG + +# CHECK_RELEASE controls the consistency checking of the support +# applications defined in the $(TOP)/configure/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 the build even if conflicts are found. +CHECK_RELEASE = YES + +TARGETS = $(CONFIG_TARGETS) +CONFIGS += $(subst ../,,$(wildcard $(CONFIG_INSTALLS))) + +include $(TOP)/configure/RULES + diff --git a/ebctrl/ioc/configure/O.linux-x86/CONFIG_APP_INCLUDE b/ebctrl/ioc/configure/O.linux-x86/CONFIG_APP_INCLUDE new file mode 100644 index 0000000..a8aea2d --- /dev/null +++ b/ebctrl/ioc/configure/O.linux-x86/CONFIG_APP_INCLUDE @@ -0,0 +1,13 @@ +# Do not modify this file, changes made here will +# be lost when the application is next rebuilt. + +export TOP +export EPICS_BASE +EPICS_BASE_HOST_BIN = $(strip $(EPICS_BASE))/bin/$(EPICS_HOST_ARCH) +EPICS_BASE_HOST_LIB = $(strip $(EPICS_BASE))/bin/$(EPICS_HOST_ARCH) +EPICS_BASE_BIN = $(strip $(EPICS_BASE))/bin/linux-x86 +EPICS_BASE_LIB = $(strip $(EPICS_BASE))/lib/linux-x86 +SHRLIB_SEARCH_DIRS += $(EPICS_BASE_LIB) +RELEASE_INCLUDES += -I$(strip $(EPICS_BASE))/include/os/$(OS_CLASS) +RELEASE_INCLUDES += -I$(strip $(EPICS_BASE))/include +RELEASE_DBDFLAGS += -I $(strip $(EPICS_BASE))/dbd diff --git a/ebctrl/ioc/configure/O.linux-x86/Makefile b/ebctrl/ioc/configure/O.linux-x86/Makefile new file mode 100644 index 0000000..96ef7b7 --- /dev/null +++ b/ebctrl/ioc/configure/O.linux-x86/Makefile @@ -0,0 +1,10 @@ +#This Makefile created by makeMakefile.pl + + +all : + $(MAKE) -f ../Makefile TOP=../.. T_A=linux-x86 $@ + +.DEFAULT: force + $(MAKE) -f ../Makefile TOP=../.. T_A=linux-x86 $@ + +force: ; diff --git a/ebctrl/ioc/configure/O.linux-x86/RULES_INCLUDE b/ebctrl/ioc/configure/O.linux-x86/RULES_INCLUDE new file mode 100644 index 0000000..73d9ca4 --- /dev/null +++ b/ebctrl/ioc/configure/O.linux-x86/RULES_INCLUDE @@ -0,0 +1,3 @@ +# Do not modify this file, changes made here will +# be lost when the application is next rebuilt. + diff --git a/ebctrl/ioc/configure/RELEASE b/ebctrl/ioc/configure/RELEASE new file mode 100644 index 0000000..be96e63 --- /dev/null +++ b/ebctrl/ioc/configure/RELEASE @@ -0,0 +1,30 @@ +#RELEASE Location of external products +# +# IF YOU MAKE ANY CHANGES to this file you MUST at least run +# "gnumake" in this directory afterwards; you usually need +# to run "gnumake rebuild" in the application's top level +# directory each time this file is changed. +# +# NOTE: The build does not check dependencies against files +# that are outside this application, thus you should run +# "gnumake distclean install" in the top directory each time +# EPICS_BASE, SNCSEQ, or any other external module defined +# in the RELEASE file is rebuilt. +# +# Host/target specific settings can be specified in files named +# RELEASE.$(EPICS_HOST_ARCH).Common +# RELEASE.Common.$(T_A) +# RELEASE.$(EPICS_HOST_ARCH).$(T_A) + +TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top + +#If using the sequencer, point SNCSEQ at its top directory: +#SNCSEQ=$(EPICS_BASE)/../modules/soft/seq + +# EPICS_BASE usually appears last so other apps can override stuff: +EPICS_BASE=/home/scs/base-3.14.9 + +#Capfast users may need the following definitions +#CAPFAST_TEMPLATES= +#SCH2EDIF_PATH= + diff --git a/ebctrl/ioc/configure/RULES b/ebctrl/ioc/configure/RULES new file mode 100644 index 0000000..1f2cb5d --- /dev/null +++ b/ebctrl/ioc/configure/RULES @@ -0,0 +1,6 @@ +# RULES + +include $(EPICS_BASE)/configure/RULES + +# Library should be rebuilt because LIBOBJS may have changed. +$(LIBNAME): ../Makefile diff --git a/ebctrl/ioc/configure/RULES.ioc b/ebctrl/ioc/configure/RULES.ioc new file mode 100644 index 0000000..5ba1013 --- /dev/null +++ b/ebctrl/ioc/configure/RULES.ioc @@ -0,0 +1,2 @@ +#RULES.ioc +include $(EPICS_BASE)/configure/RULES.ioc diff --git a/ebctrl/ioc/configure/RULES_DIRS b/ebctrl/ioc/configure/RULES_DIRS new file mode 100644 index 0000000..804faee --- /dev/null +++ b/ebctrl/ioc/configure/RULES_DIRS @@ -0,0 +1,2 @@ +#RULES_DIRS +include $(EPICS_BASE)/configure/RULES_DIRS diff --git a/ebctrl/ioc/configure/RULES_TOP b/ebctrl/ioc/configure/RULES_TOP new file mode 100644 index 0000000..0620f08 --- /dev/null +++ b/ebctrl/ioc/configure/RULES_TOP @@ -0,0 +1,3 @@ +#RULES_TOP +include $(EPICS_BASE)/configure/RULES_TOP + diff --git a/ebctrl/ioc/db/dbExample1.db b/ebctrl/ioc/db/dbExample1.db new file mode 100644 index 0000000..4f16ada --- /dev/null +++ b/ebctrl/ioc/db/dbExample1.db @@ -0,0 +1,62 @@ +record(ai, "$(user):aiExample") +{ + field(DESC, "Analog input") + field(INP, "$(user):calcExample.VAL NPP NMS") + field(EGUF, "10") + field(EGU, "Counts") + field(HOPR, "10") + field(LOPR, "0") + field(HIHI, "8") + field(HIGH, "6") + field(LOW, "4") + field(LOLO, "2") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") +} +record(calc, "$(user):calcExample") +{ + field(DESC, "Counter") + field(SCAN,"1 second") + field(FLNK, "$(user):aiExample") + field(CALC, "(A.db template is not named *.template add +# _TEMPLATE = + +include $(TOP)/configure/RULES +#---------------------------------------- +# ADD RULES AFTER THIS LINE + diff --git a/ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile b/ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile new file mode 100644 index 0000000..da5269a --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/Db/O.linux-x86/Makefile @@ -0,0 +1,10 @@ +#This Makefile created by makeMakefile.pl + + +all : + $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86 $@ + +.DEFAULT: force + $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86 $@ + +force: ; diff --git a/ebctrl/ioc/ebctrlApp/Db/dbExample1.db b/ebctrl/ioc/ebctrlApp/Db/dbExample1.db new file mode 100644 index 0000000..4f16ada --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/Db/dbExample1.db @@ -0,0 +1,62 @@ +record(ai, "$(user):aiExample") +{ + field(DESC, "Analog input") + field(INP, "$(user):calcExample.VAL NPP NMS") + field(EGUF, "10") + field(EGU, "Counts") + field(HOPR, "10") + field(LOPR, "0") + field(HIHI, "8") + field(HIGH, "6") + field(LOW, "4") + field(LOLO, "2") + field(HHSV, "MAJOR") + field(HSV, "MINOR") + field(LSV, "MINOR") + field(LLSV, "MAJOR") +} +record(calc, "$(user):calcExample") +{ + field(DESC, "Counter") + field(SCAN,"1 second") + field(FLNK, "$(user):aiExample") + field(CALC, "(A/dbd +DBD += xxxSupport.dbd + +# The following are compiled and added to the Support library +xxxSupport_SRCS += xxxRecord.c +xxxSupport_SRCS += devXxxSoft.c + +xxxSupport_LIBS += $(EPICS_BASE_IOC_LIBS) + +LIBRARY_IOC += genSub + +DBDINC += genSubRecord.h +DBD += genSubRecord.dbd + +#============================= +# build an ioc application + +PROD_IOC = ebctrl +# ebctrl.dbd will be created and installed +DBD += ebctrl.dbd + +# ebctrl.dbd will be made up from these files: +ebctrl_DBD += base.dbd +ebctrl_DBD += xxxSupport.dbd +ebctrl_DBD += genSubRecord.dbd +ebctrl_DBD += evtbuild.dbd +ebctrl_DBD += genrunid.dbd +ebctrl_DBD += writerunid.dbd + +# _registerRecordDeviceDriver.cpp will be created from .dbd +ebctrl_SRCS += ebctrl_registerRecordDeviceDriver.cpp +ebctrl_SRCS_DEFAULT += ebctrlMain.cpp +ebctrl_SRCS_vxWorks += -nil- + +# Add locally compiled object code +ebctrl_SRCS += genSubRecord.c +ebctrl_SRCS += evtbuild.c +ebctrl_SRCS += genrunid.c +ebctrl_SRCS += writerunid.c + +# The following adds support from base/src/vxWorks +ebctrl_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary + +ebctrl_LIBS += xxxSupport +ebctrl_LIBS += hadaq + +# NOTE: To build SNL programs, SNCSEQ must be defined +# in the /configure/RELEASE file + +ifneq ($(SNCSEQ),) + # This builds sncExample as a component of ebctrl + ebctrl_SNCFLAGS += +r + ebctrl_DBD += sncExample.dbd + ebctrl_SRCS += sncExample.stt + ebctrl_LIBS += seq pv + + # The following builds sncProgram as a standalone application + PROD_HOST += sncProgram + sncProgram_SNCFLAGS += +m + sncProgram_SRCS += sncProgram.st + sncProgram_LIBS += seq pv + sncProgram_LIBS += $(EPICS_BASE_HOST_LIBS) +endif + +ebctrl_LIBS += $(EPICS_BASE_IOC_LIBS) + +#=========================== + +include $(TOP)/configure/RULES +#---------------------------------------- +# ADD RULES AFTER THIS LINE + diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd new file mode 100644 index 0000000..ebabb25 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd @@ -0,0 +1,13320 @@ +menu(stringoutPOST) { + choice(stringoutPOST_OnChange,"On Change") + choice(stringoutPOST_Always,"Always") +} +menu(stringinPOST) { + choice(stringinPOST_OnChange,"On Change") + choice(stringinPOST_Always,"Always") +} +menu(seqSELM) { + choice(seqSELM_All,"All") + choice(seqSELM_Specified,"Specified") + choice(seqSELM_Mask,"Mask") +} +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(menuYesNo) { + choice(menuYesNoNO,"NO") + choice(menuYesNoYES,"YES") +} +menu(menuSimm) { + choice(menuSimmNO,"NO") + choice(menuSimmYES,"YES") + choice(menuSimmRAW,"RAW") +} +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(menuPriority) { + choice(menuPriorityLOW,"LOW") + choice(menuPriorityMEDIUM,"MEDIUM") + choice(menuPriorityHIGH,"HIGH") +} +menu(menuOmsl) { + choice(menuOmslsupervisory,"supervisory") + choice(menuOmslclosed_loop,"closed_loop") +} +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(menuFtype) { + choice(menuFtypeSTRING,"STRING") + choice(menuFtypeCHAR,"CHAR") + choice(menuFtypeUCHAR,"UCHAR") + choice(menuFtypeSHORT,"SHORT") + choice(menuFtypeUSHORT,"USHORT") + choice(menuFtypeLONG,"LONG") + choice(menuFtypeULONG,"ULONG") + choice(menuFtypeFLOAT,"FLOAT") + choice(menuFtypeDOUBLE,"DOUBLE") + choice(menuFtypeENUM,"ENUM") +} +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(menuCompress) { + choice(menuCompressN_to_1_First_Value,"N to 1 First Value") + choice(menuCompressN_to_1_Low_Value,"N to 1 Low Value") + choice(menuCompressN_to_1_High_Value,"N to 1 High Value") + choice(menuCompressN_to_1_Average,"N to 1 Average") +} +menu(menuArrType) { + choice(menuArrType8_bit_integers,"8 bit integers") + choice(menuArrType16_bit_integers,"16 bit integers") + choice(menuArrType32_bit_integers,"32 bit integers") + choice(menuArrTypeIEEE_floating_point,"IEEE floating point") +} +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(menuAlarmSevr) { + choice(menuAlarmSevrNO_ALARM,"NO_ALARM") + choice(menuAlarmSevrMINOR,"MINOR") + choice(menuAlarmSevrMAJOR,"MAJOR") + choice(menuAlarmSevrINVALID,"INVALID") +} +menu(genSubLFLG) { + choice(genSubLFLG_IGNORE,"IGNORE") + choice(genSubLFLG_READ,"READ") +} +menu(genSubEFLG) { + choice(genSubEFLG_NEVER,"NEVER") + choice(genSubEFLG_ON_CHANGE,"ON CHANGE") + choice(genSubEFLG_ALWAYS,"ALWAYS") +} +menu(fanoutSELM) { + choice(fanoutSELM_All,"All") + choice(fanoutSELM_Specified,"Specified") + choice(fanoutSELM_Mask,"Mask") +} +menu(dfanoutSELM) { + choice(dfanoutSELM_All,"All") + choice(dfanoutSELM_Specified,"Specified") + choice(dfanoutSELM_Mask,"Mask") +} +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(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(calcoutINAV) { + choice(calcoutINAV_EXT_NC,"Ext PV NC") + choice(calcoutINAV_EXT,"Ext PV OK") + choice(calcoutINAV_LOC,"Local PV") + choice(calcoutINAV_CON,"Constant") +} +menu(calcoutINAP) { + choice(calcoutINAP_No,"No PROC on Change") + choice(calcoutINAP_Yes,"PROC on Change") +} +menu(calcoutDOPT) { + choice(calcoutDOPT_Use_VAL,"Use CALC") + choice(calcoutDOPT_Use_OVAL,"Use OCAL") +} +menu(aoOIF) { + choice(aoOIF_Full,"Full") + choice(aoOIF_Incremental,"Incremental") +} +recordtype(ai) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_DOUBLE) { + prompt("Current EGU Value") + promptgroup(GUI_INPUTS) + pp(TRUE) + asl(ASL0) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LINR,DBF_MENU) { + prompt("Linearization") + promptgroup(GUI_CONVERT) + special(102) + menu(menuConvert) + pp(TRUE) + interest(1) + } + field(EGUF,DBF_DOUBLE) { + prompt("Engineer Units Full") + promptgroup(GUI_CONVERT) + special(102) + pp(TRUE) + interest(1) + } + field(EGUL,DBF_DOUBLE) { + prompt("Engineer Units Low") + promptgroup(GUI_CONVERT) + special(102) + pp(TRUE) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Engineering Units") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(AOFF,DBF_DOUBLE) { + prompt("Adjustment Offset") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(1) + } + field(ASLO,DBF_DOUBLE) { + prompt("Adjustment Slope") + initial("1") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(1) + } + field(SMOO,DBF_DOUBLE) { + prompt("Smoothing") + promptgroup(GUI_CONVERT) + interest(1) + } + field(HIHI,DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_DOUBLE) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(ESLO,DBF_DOUBLE) { + prompt("Raw to EGU Slope") + initial("1") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(2) + } + field(EOFF,DBF_DOUBLE) { + prompt("Raw to EGU Offset") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(2) + } + field(ROFF,DBF_LONG) { + prompt("Raw Offset, obsolete") + pp(TRUE) + interest(2) + } + field(PBRK,DBF_NOACCESS) { + prompt("Ptrto brkTable") + special(SPC_NOMOD) + extra("void * pbrk") + interest(4) + } + field(INIT,DBF_SHORT) { + prompt("Initialized?") + special(SPC_NOMOD) + interest(3) + } + field(LBRK,DBF_SHORT) { + prompt("LastBreak Point") + special(SPC_NOMOD) + interest(3) + } + field(RVAL,DBF_LONG) { + prompt("Current Raw Value") + pp(TRUE) + } + field(ORAW,DBF_LONG) { + prompt("Previous Raw Value") + special(SPC_NOMOD) + interest(3) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SVAL,DBF_DOUBLE) { + prompt("Simulation Value") + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuSimm) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } +} +recordtype(ao) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_DOUBLE) { + prompt("Desired Output") + promptgroup(GUI_OUTPUT) + pp(TRUE) + asl(ASL0) + } + field(OVAL,DBF_DOUBLE) { + prompt("Output Value") + } + field(OUT,DBF_OUTLINK) { + prompt("Output Specification") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OROC,DBF_DOUBLE) { + prompt("Output Rate of Chang") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(DOL,DBF_INLINK) { + prompt("Desired Output Loc") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OMSL,DBF_MENU) { + prompt("Output Mode Select") + promptgroup(GUI_OUTPUT) + menu(menuOmsl) + interest(1) + } + field(OIF,DBF_MENU) { + prompt("Out Full/Incremental") + promptgroup(GUI_OUTPUT) + menu(aoOIF) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LINR,DBF_MENU) { + prompt("Linearization") + promptgroup(GUI_CONVERT) + special(102) + menu(menuConvert) + pp(TRUE) + interest(1) + } + field(EGUF,DBF_DOUBLE) { + prompt("Eng Units Full") + promptgroup(GUI_CONVERT) + special(102) + pp(TRUE) + interest(1) + } + field(EGUL,DBF_DOUBLE) { + prompt("Eng Units Low") + promptgroup(GUI_CONVERT) + special(102) + pp(TRUE) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Engineering Units") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(ROFF,DBF_LONG) { + prompt("Raw Offset, obsolete") + pp(TRUE) + interest(2) + } + field(EOFF,DBF_DOUBLE) { + prompt("EGU to Raw Offset") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(2) + } + field(ESLO,DBF_DOUBLE) { + prompt("EGU to Raw Slope") + initial("1") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(2) + } + field(DRVH,DBF_DOUBLE) { + prompt("Drive High Limit") + promptgroup(GUI_OUTPUT) + pp(TRUE) + interest(1) + } + field(DRVL,DBF_DOUBLE) { + prompt("Drive Low Limit") + promptgroup(GUI_OUTPUT) + pp(TRUE) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(AOFF,DBF_DOUBLE) { + prompt("Adjustment Offset") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(1) + } + field(ASLO,DBF_DOUBLE) { + prompt("Adjustment Slope") + promptgroup(GUI_CONVERT) + pp(TRUE) + interest(1) + } + field(HIHI,DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_DOUBLE) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(RVAL,DBF_LONG) { + prompt("Current Raw Value") + pp(TRUE) + } + field(ORAW,DBF_LONG) { + prompt("Previous Raw Value") + special(SPC_NOMOD) + interest(3) + } + 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) { + prompt("Previous value") + special(SPC_NOMOD) + interest(3) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(PBRK,DBF_NOACCESS) { + prompt("Ptrto brkTable") + special(SPC_NOMOD) + extra("void * pbrk") + interest(4) + } + field(INIT,DBF_SHORT) { + prompt("Initialized?") + special(SPC_NOMOD) + interest(3) + } + field(LBRK,DBF_SHORT) { + prompt("LastBreak Point") + special(SPC_NOMOD) + interest(3) + } + field(SIOL,DBF_OUTLINK) { + prompt("Sim Output Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } + field(IVOA,DBF_MENU) { + prompt("INVALID output action") + promptgroup(GUI_OUTPUT) + menu(menuIvoa) + interest(2) + } + field(IVOV,DBF_DOUBLE) { + prompt("INVALID output value") + promptgroup(GUI_OUTPUT) + interest(2) + } + field(OMOD,DBF_UCHAR) { + prompt("Was OVAL modified?") + special(SPC_NOMOD) + } +} +recordtype(bi) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + interest(1) + } + field(VAL,DBF_ENUM) { + prompt("Current Value") + promptgroup(GUI_INPUTS) + pp(TRUE) + asl(ASL0) + } + field(ZSV,DBF_MENU) { + prompt("Zero Error Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(OSV,DBF_MENU) { + prompt("One Error Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(COSV,DBF_MENU) { + prompt("Change of State Svr") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(ZNAM,DBF_STRING) { + prompt("Zero Name") + promptgroup(GUI_CALC) + size(20) + pp(TRUE) + interest(1) + } + field(ONAM,DBF_STRING) { + prompt("One Name") + promptgroup(GUI_CLOCK) + size(20) + pp(TRUE) + interest(1) + } + field(RVAL,DBF_ULONG) { + prompt("Raw Value") + pp(TRUE) + } + field(ORAW,DBF_ULONG) { + prompt("prev Raw Value") + special(SPC_NOMOD) + interest(3) + } + field(MASK,DBF_ULONG) { + prompt("Hardware Mask") + special(SPC_NOMOD) + interest(1) + } + field(LALM,DBF_USHORT) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_USHORT) { + prompt("Last Value Monitored") + special(SPC_NOMOD) + interest(3) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SVAL,DBF_ULONG) { + prompt("Simulation Value") + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuSimm) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } +} +recordtype(bo) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_ENUM) { + prompt("Current Value") + promptgroup(GUI_OUTPUT) + pp(TRUE) + asl(ASL0) + } + field(OMSL,DBF_MENU) { + prompt("Output Mode Select") + promptgroup(GUI_OUTPUT) + menu(menuOmsl) + interest(1) + } + field(DOL,DBF_INLINK) { + prompt("Desired Output Loc") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUT,DBF_OUTLINK) { + prompt("Output Specification") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("Seconds to Hold High") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(ZNAM,DBF_STRING) { + prompt("Zero Name") + promptgroup(GUI_DISPLAY) + size(20) + pp(TRUE) + interest(1) + } + field(ONAM,DBF_STRING) { + prompt("One Name") + promptgroup(GUI_DISPLAY) + size(20) + pp(TRUE) + interest(1) + } + field(RVAL,DBF_ULONG) { + prompt("Raw Value") + pp(TRUE) + } + field(ORAW,DBF_ULONG) { + prompt("prev Raw Value") + special(SPC_NOMOD) + interest(3) + } + field(MASK,DBF_ULONG) { + prompt("Hardware Mask") + special(SPC_NOMOD) + interest(1) + } + field(RPVT,DBF_NOACCESS) { + prompt("Record Private") + special(SPC_NOMOD) + extra("void * rpvt") + interest(4) + } + field(WDPT,DBF_NOACCESS) { + prompt("Watch Dog Timer ID") + special(SPC_NOMOD) + extra("void * wdpt") + interest(4) + } + field(ZSV,DBF_MENU) { + prompt("Zero Error Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(OSV,DBF_MENU) { + prompt("One Error Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(COSV,DBF_MENU) { + prompt("Change of State Sevr") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(RBV,DBF_ULONG) { + prompt("Readback Value") + special(SPC_NOMOD) + } + field(ORBV,DBF_ULONG) { + prompt("Prev Readback Value") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_USHORT) { + prompt("Last Value Monitored") + special(SPC_NOMOD) + interest(3) + } + field(LALM,DBF_USHORT) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(SIOL,DBF_OUTLINK) { + prompt("Sim Output Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } + field(IVOA,DBF_MENU) { + prompt("INVALID outpt action") + promptgroup(GUI_OUTPUT) + menu(menuIvoa) + interest(2) + } + field(IVOV,DBF_USHORT) { + prompt("INVALID output value") + promptgroup(GUI_OUTPUT) + interest(2) + } +} +recordtype(calc) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_DOUBLE) { + prompt("Result") + asl(ASL0) + } + field(CALC,DBF_STRING) { + prompt("Calculation") + initial("0") + promptgroup(GUI_CALC) + special(103) + size(40) + pp(TRUE) + } + field(INPA,DBF_INLINK) { + prompt("Input A") + promptgroup(GUI_CALC) + interest(1) + } + field(INPB,DBF_INLINK) { + prompt("Input B") + promptgroup(GUI_CALC) + interest(1) + } + field(INPC,DBF_INLINK) { + prompt("Input C") + promptgroup(GUI_CALC) + interest(1) + } + field(INPD,DBF_INLINK) { + prompt("Input D") + promptgroup(GUI_CALC) + interest(1) + } + field(INPE,DBF_INLINK) { + prompt("Input E") + promptgroup(GUI_CALC) + interest(1) + } + field(INPF,DBF_INLINK) { + prompt("Input F") + promptgroup(GUI_CALC) + interest(1) + } + field(INPG,DBF_INLINK) { + prompt("Input G") + promptgroup(GUI_CALC) + interest(1) + } + field(INPH,DBF_INLINK) { + prompt("Input H") + promptgroup(GUI_CALC) + interest(1) + } + field(INPI,DBF_INLINK) { + prompt("Input I") + promptgroup(GUI_CALC) + interest(1) + } + field(INPJ,DBF_INLINK) { + prompt("Input J") + promptgroup(GUI_CALC) + interest(1) + } + field(INPK,DBF_INLINK) { + prompt("Input K") + promptgroup(GUI_CALC) + interest(1) + } + field(INPL,DBF_INLINK) { + prompt("Input L") + promptgroup(GUI_CALC) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Units Name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Rng") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_DOUBLE) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_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) { + 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) { + prompt("Value of Input F") + pp(TRUE) + } + 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) { + 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") + 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") + special(SPC_NOMOD) + interest(3) + } + field(LD,DBF_DOUBLE) { + prompt("Prev Value of D") + special(SPC_NOMOD) + interest(3) + } + field(LE,DBF_DOUBLE) { + prompt("Prev Value of E") + special(SPC_NOMOD) + interest(3) + } + field(LF,DBF_DOUBLE) { + prompt("Prev Value of F") + special(SPC_NOMOD) + interest(3) + } + field(LG,DBF_DOUBLE) { + prompt("Prev Value of G") + special(SPC_NOMOD) + interest(3) + } + field(LH,DBF_DOUBLE) { + prompt("Prev Value of H") + special(SPC_NOMOD) + interest(3) + } + 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) { + prompt("Prev Value of K") + special(SPC_NOMOD) + interest(3) + } + field(LL,DBF_DOUBLE) { + prompt("Prev Value of L") + special(SPC_NOMOD) + interest(3) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(RPCL,DBF_NOACCESS) { + prompt("Reverse Polish Calc") + special(SPC_NOMOD) + extra("char rpcl[INFIX_TO_POSTFIX_SIZE(40)]") + interest(4) + } +} +recordtype(calcout) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VERS,DBF_DOUBLE) { + prompt("Code Version") + initial("1") + special(SPC_NOMOD) + } + field(RPVT,DBF_NOACCESS) { + prompt("Record Private") + special(SPC_NOMOD) + extra("struct rpvtStruct *rpvt") + interest(4) + } + field(VAL,DBF_DOUBLE) { + prompt("Result") + promptgroup(GUI_OUTPUT) + asl(ASL0) + } + field(PVAL,DBF_DOUBLE) { + prompt("Previous Value") + } + field(CALC,DBF_STRING) { + prompt("Calculation") + initial("0") + promptgroup(GUI_CALC) + special(103) + size(40) + pp(TRUE) + } + field(CLCV,DBF_LONG) { + prompt("CALC Valid") + interest(1) + } + field(INPA,DBF_INLINK) { + prompt("Input A") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPB,DBF_INLINK) { + prompt("Input B") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPC,DBF_INLINK) { + prompt("Input C") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPD,DBF_INLINK) { + prompt("Input D") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPE,DBF_INLINK) { + prompt("Input E") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPF,DBF_INLINK) { + prompt("Input F") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPG,DBF_INLINK) { + prompt("Input G") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPH,DBF_INLINK) { + prompt("Input H") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPI,DBF_INLINK) { + prompt("Input I") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPJ,DBF_INLINK) { + prompt("Input J") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPK,DBF_INLINK) { + prompt("Input K") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(INPL,DBF_INLINK) { + prompt("Input L") + promptgroup(GUI_CALC) + special(100) + interest(1) + } + field(OUT,DBF_OUTLINK) { + prompt("Output Specification") + promptgroup(GUI_OUTPUT) + special(100) + interest(1) + } + field(INAV,DBF_MENU) { + prompt("INPA PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INBV,DBF_MENU) { + prompt("INPB PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INCV,DBF_MENU) { + prompt("INPC PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INDV,DBF_MENU) { + prompt("INPD PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INEV,DBF_MENU) { + prompt("INPE PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INFV,DBF_MENU) { + prompt("INPF PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INGV,DBF_MENU) { + prompt("INPG PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INHV,DBF_MENU) { + prompt("INPH PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INIV,DBF_MENU) { + prompt("INPI PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INJV,DBF_MENU) { + prompt("INPJ PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INKV,DBF_MENU) { + prompt("INPK PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(INLV,DBF_MENU) { + prompt("INPL PV Status") + initial("1") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(OUTV,DBF_MENU) { + prompt("OUT PV Status") + special(SPC_NOMOD) + menu(calcoutINAV) + interest(1) + } + field(OOPT,DBF_MENU) { + prompt("Output Execute Opt") + promptgroup(GUI_CALC) + menu(calcoutOOPT) + interest(1) + } + field(ODLY,DBF_DOUBLE) { + prompt("Output Execute Delay") + promptgroup(GUI_ALARMS) + interest(1) + asl(ASL0) + } + field(DLYA,DBF_USHORT) { + prompt("Output Delay Active") + special(SPC_NOMOD) + asl(ASL0) + } + field(DOPT,DBF_MENU) { + prompt("Output Data Opt") + promptgroup(GUI_CALC) + menu(calcoutDOPT) + interest(1) + } + field(OCAL,DBF_STRING) { + prompt("Output Calculation") + initial("0") + promptgroup(GUI_CALC) + special(103) + size(40) + pp(TRUE) + } + field(OCLV,DBF_LONG) { + prompt("OCAL Valid") + interest(1) + } + field(OEVT,DBF_USHORT) { + prompt("Event To Issue") + promptgroup(GUI_CLOCK) + asl(ASL0) + } + field(IVOA,DBF_MENU) { + prompt("INVALID output action") + promptgroup(GUI_OUTPUT) + menu(menuIvoa) + interest(2) + } + field(IVOV,DBF_DOUBLE) { + prompt("INVALID output value") + promptgroup(GUI_OUTPUT) + interest(2) + } + field(EGU,DBF_STRING) { + prompt("Units Name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Rng") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_DOUBLE) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_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) { + 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) { + prompt("Value of Input F") + pp(TRUE) + } + 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) { + 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) { + 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") + special(SPC_NOMOD) + interest(3) + } + field(LD,DBF_DOUBLE) { + prompt("Prev Value of D") + special(SPC_NOMOD) + interest(3) + } + field(LE,DBF_DOUBLE) { + prompt("Prev Value of E") + special(SPC_NOMOD) + interest(3) + } + field(LF,DBF_DOUBLE) { + prompt("Prev Value of F") + special(SPC_NOMOD) + interest(3) + } + field(LG,DBF_DOUBLE) { + prompt("Prev Value of G") + special(SPC_NOMOD) + interest(3) + } + field(LH,DBF_DOUBLE) { + prompt("Prev Value of H") + special(SPC_NOMOD) + interest(3) + } + 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) { + prompt("Prev Value of K") + special(SPC_NOMOD) + interest(3) + } + 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) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(RPCL,DBF_NOACCESS) { + prompt("Reverse Polish Calc") + special(SPC_NOMOD) + extra("char rpcl[INFIX_TO_POSTFIX_SIZE(40)]") + interest(4) + } + field(ORPC,DBF_NOACCESS) { + prompt("Reverse Polish OCalc") + special(SPC_NOMOD) + extra("char orpc[INFIX_TO_POSTFIX_SIZE(40)]") + interest(4) + } +} +recordtype(compress) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_NOACCESS) { + prompt("Value") + special(SPC_DBADDR) + extra("void * val") + pp(TRUE) + asl(ASL0) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_COMPRESS) + interest(1) + } + field(RES,DBF_SHORT) { + prompt("Reset") + special(101) + interest(3) + asl(ASL0) + } + field(ALG,DBF_MENU) { + prompt("Compression Algorithm") + promptgroup(GUI_ALARMS) + special(101) + menu(compressALG) + interest(1) + } + field(NSAM,DBF_ULONG) { + prompt("Number of Values") + initial("1") + promptgroup(GUI_COMPRESS) + special(SPC_NOMOD) + interest(1) + } + field(N,DBF_ULONG) { + prompt("N to 1 Compression") + initial("1") + promptgroup(GUI_COMPRESS) + special(101) + interest(1) + } + field(IHIL,DBF_DOUBLE) { + prompt("Init High Interest Lim") + promptgroup(GUI_COMPRESS) + interest(1) + } + field(ILIL,DBF_DOUBLE) { + prompt("Init Low Interest Lim") + promptgroup(GUI_COMPRESS) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("EngineeringUnits") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(OFF,DBF_ULONG) { + prompt("Offset") + special(SPC_NOMOD) + } + field(NUSE,DBF_ULONG) { + prompt("Number Used") + special(SPC_NOMOD) + } + field(BPTR,DBF_NOACCESS) { + prompt("Buffer Pointer") + special(SPC_NOMOD) + extra("double *bptr") + interest(4) + } + field(SPTR,DBF_NOACCESS) { + prompt("Summing Buffer Ptr") + special(SPC_NOMOD) + extra("double *sptr") + interest(4) + } + field(WPTR,DBF_NOACCESS) { + prompt("Working Buffer Ptr") + special(SPC_NOMOD) + extra("double *wptr") + interest(4) + } + field(INPN,DBF_LONG) { + prompt("Number of elements in Working Buffer") + special(SPC_NOMOD) + interest(4) + } + field(CVB,DBF_DOUBLE) { + prompt("Compress Value Buffer") + special(SPC_NOMOD) + interest(3) + } + field(INX,DBF_ULONG) { + prompt("Compressed Array Inx") + special(SPC_NOMOD) + interest(3) + } +} +recordtype(dfanout) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_DOUBLE) { + prompt("Desired Output") + pp(TRUE) + asl(ASL0) + } + field(SELM,DBF_MENU) { + prompt("Select Mechanism") + promptgroup(GUI_LINKS) + menu(dfanoutSELM) + interest(1) + } + field(SELN,DBF_USHORT) { + prompt("Link Selection") + initial("1") + interest(1) + } + field(SELL,DBF_INLINK) { + prompt("Link Selection Loc") + promptgroup(GUI_LINKS) + interest(1) + } + field(OUTA,DBF_OUTLINK) { + prompt("Output Spec A") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUTB,DBF_OUTLINK) { + prompt("Output Spec B") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUTC,DBF_OUTLINK) { + prompt("Output Spec C") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUTD,DBF_OUTLINK) { + prompt("Output Spec D") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUTE,DBF_OUTLINK) { + prompt("Output Spec E") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUTF,DBF_OUTLINK) { + prompt("Output Spec F") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUTG,DBF_OUTLINK) { + prompt("Output Spec G") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OUTH,DBF_OUTLINK) { + prompt("Output Spec H") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(DOL,DBF_INLINK) { + prompt("Desired Output Loc") + promptgroup(GUI_INPUTS) + interest(1) + } + field(OMSL,DBF_MENU) { + prompt("Output Mode Select") + promptgroup(GUI_OUTPUT) + menu(menuOmsl) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Units name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_DOUBLE) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } +} +recordtype(event) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_USHORT) { + prompt("Event Number To Post") + promptgroup(GUI_INPUTS) + asl(ASL0) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SVAL,DBF_USHORT) { + prompt("Simulation Value") + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } +} +recordtype(fanout) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_LONG) { + prompt("Used to trigger") + pp(TRUE) + asl(ASL0) + } + field(SELM,DBF_MENU) { + prompt("Select Mechanism") + promptgroup(GUI_LINKS) + menu(fanoutSELM) + interest(1) + } + field(SELN,DBF_USHORT) { + prompt("Link Selection") + initial("1") + interest(1) + } + field(SELL,DBF_INLINK) { + prompt("Link Selection Loc") + promptgroup(GUI_LINKS) + interest(1) + } + field(LNK1,DBF_FWDLINK) { + prompt("Forward Link 1") + promptgroup(GUI_LINKS) + interest(1) + } + field(LNK2,DBF_FWDLINK) { + prompt("Forward Link 2") + promptgroup(GUI_LINKS) + interest(1) + } + field(LNK3,DBF_FWDLINK) { + prompt("Forward Link 3") + promptgroup(GUI_LINKS) + interest(1) + } + field(LNK4,DBF_FWDLINK) { + prompt("Forward Link 4") + promptgroup(GUI_LINKS) + interest(1) + } + field(LNK5,DBF_FWDLINK) { + prompt("Forward Link 5") + promptgroup(GUI_LINKS) + interest(1) + } + field(LNK6,DBF_FWDLINK) { + prompt("Forward Link 6") + promptgroup(GUI_LINKS) + interest(1) + } +} +recordtype(longin) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_LONG) { + prompt("Current value") + promptgroup(GUI_INPUTS) + pp(TRUE) + asl(ASL0) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Units name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(HOPR,DBF_LONG) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_LONG) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_LONG) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_LONG) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_LONG) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_LONG) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_LONG) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_LONG) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_LONG) { + prompt("Monitor Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LALM,DBF_LONG) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_LONG) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_LONG) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SVAL,DBF_LONG) { + prompt("Simulation Value") + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } +} +recordtype(longout) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_LONG) { + prompt("Desired Output") + promptgroup(GUI_OUTPUT) + pp(TRUE) + asl(ASL0) + } + field(OUT,DBF_OUTLINK) { + prompt("Output Specification") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(DOL,DBF_INLINK) { + prompt("Desired Output Loc") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OMSL,DBF_MENU) { + prompt("Output Mode Select") + promptgroup(GUI_OUTPUT) + menu(menuOmsl) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Units name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(DRVH,DBF_LONG) { + prompt("Drive High Limit") + promptgroup(GUI_OUTPUT) + pp(TRUE) + interest(1) + } + field(DRVL,DBF_LONG) { + prompt("Drive Low Limit") + promptgroup(GUI_OUTPUT) + pp(TRUE) + interest(1) + } + field(HOPR,DBF_LONG) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_LONG) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_LONG) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_LONG) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_LONG) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_LONG) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_LONG) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_LONG) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_LONG) { + prompt("Monitor Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LALM,DBF_LONG) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_LONG) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_LONG) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(SIOL,DBF_OUTLINK) { + prompt("Sim Output Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } + field(IVOA,DBF_MENU) { + prompt("INVALID output action") + promptgroup(GUI_OUTPUT) + menu(menuIvoa) + interest(2) + } + field(IVOV,DBF_LONG) { + prompt("INVALID output value") + promptgroup(GUI_OUTPUT) + interest(2) + } +} +recordtype(mbbi) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_ENUM) { + prompt("Current Value") + promptgroup(GUI_INPUTS) + pp(TRUE) + asl(ASL0) + } + field(NOBT,DBF_SHORT) { + prompt("Number of Bits") + promptgroup(GUI_MBB) + special(SPC_NOMOD) + interest(1) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_MBB) + interest(1) + } + field(ZRVL,DBF_ULONG) { + prompt("Zero Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(ONVL,DBF_ULONG) { + prompt("One Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TWVL,DBF_ULONG) { + prompt("Two Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(THVL,DBF_ULONG) { + prompt("Three Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FRVL,DBF_ULONG) { + prompt("Four Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FVVL,DBF_ULONG) { + prompt("Five Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(SXVL,DBF_ULONG) { + prompt("Six Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(SVVL,DBF_ULONG) { + prompt("Seven Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(EIVL,DBF_ULONG) { + prompt("Eight Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(NIVL,DBF_ULONG) { + prompt("Nine Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TEVL,DBF_ULONG) { + prompt("Ten Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(ELVL,DBF_ULONG) { + prompt("Eleven Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TVVL,DBF_ULONG) { + prompt("Twelve Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TTVL,DBF_ULONG) { + prompt("Thirteen Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FTVL,DBF_ULONG) { + prompt("Fourteen Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FFVL,DBF_ULONG) { + prompt("Fifteen Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(ZRST,DBF_STRING) { + prompt("Zero String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(ONST,DBF_STRING) { + prompt("One String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TWST,DBF_STRING) { + prompt("Two String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(THST,DBF_STRING) { + prompt("Three String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FRST,DBF_STRING) { + prompt("Four String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FVST,DBF_STRING) { + prompt("Five String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(SXST,DBF_STRING) { + prompt("Six String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(SVST,DBF_STRING) { + prompt("Seven String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(EIST,DBF_STRING) { + prompt("Eight String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(NIST,DBF_STRING) { + prompt("Nine String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TEST,DBF_STRING) { + prompt("Ten String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(ELST,DBF_STRING) { + prompt("Eleven String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TVST,DBF_STRING) { + prompt("Twelve String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TTST,DBF_STRING) { + prompt("Thirteen String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FTST,DBF_STRING) { + prompt("Fourteen String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FFST,DBF_STRING) { + prompt("Fifteen String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(ZRSV,DBF_MENU) { + prompt("State Zero Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(ONSV,DBF_MENU) { + prompt("State One Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TWSV,DBF_MENU) { + prompt("State Two Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(THSV,DBF_MENU) { + prompt("State Three Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FRSV,DBF_MENU) { + prompt("State Four Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FVSV,DBF_MENU) { + prompt("State Five Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(SXSV,DBF_MENU) { + prompt("State Six Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(SVSV,DBF_MENU) { + prompt("State Seven Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(EISV,DBF_MENU) { + prompt("State Eight Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(NISV,DBF_MENU) { + prompt("State Nine Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TESV,DBF_MENU) { + prompt("State Ten Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(ELSV,DBF_MENU) { + prompt("State Eleven Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TVSV,DBF_MENU) { + prompt("State Twelve Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TTSV,DBF_MENU) { + prompt("State Thirteen Sevr") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FTSV,DBF_MENU) { + prompt("State Fourteen Sevr") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FFSV,DBF_MENU) { + prompt("State Fifteen Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(UNSV,DBF_MENU) { + prompt("Unknown State Severity") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(COSV,DBF_MENU) { + prompt("Change of State Svr") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(RVAL,DBF_ULONG) { + prompt("Raw Value") + pp(TRUE) + } + field(ORAW,DBF_ULONG) { + prompt("Prev Raw 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") + special(SPC_NOMOD) + interest(3) + } + field(SDEF,DBF_SHORT) { + prompt("States Defined") + special(SPC_NOMOD) + interest(3) + } + field(SHFT,DBF_USHORT) { + prompt("Shift") + promptgroup(GUI_MBB) + interest(1) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_MBB) + interest(1) + } + field(SVAL,DBF_ULONG) { + prompt("Simulation Value") + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_MBB) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuSimm) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + interest(2) + } +} +recordtype(mbbiDirect) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_USHORT) { + prompt("Current Value") + promptgroup(GUI_INPUTS) + pp(TRUE) + asl(ASL0) + } + field(NOBT,DBF_SHORT) { + prompt("Number of Bits") + promptgroup(GUI_MBB) + special(SPC_NOMOD) + interest(1) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_MBB) + interest(1) + } + field(RVAL,DBF_ULONG) { + prompt("Raw Value") + pp(TRUE) + } + field(ORAW,DBF_ULONG) { + prompt("Prev Raw 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") + special(SPC_NOMOD) + interest(3) + } + field(SDEF,DBF_SHORT) { + prompt("States Defined") + special(SPC_NOMOD) + interest(3) + } + field(SHFT,DBF_USHORT) { + prompt("Shift") + promptgroup(GUI_MBB) + interest(1) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_MBB) + interest(1) + } + field(SVAL,DBF_ULONG) { + prompt("Simulation Value") + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_MBB) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuSimm) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + interest(2) + } + field(B0,DBF_UCHAR) { + prompt("Bit 0") + pp(TRUE) + interest(1) + } + field(B1,DBF_UCHAR) { + prompt("Bit 1") + pp(TRUE) + interest(1) + } + field(B2,DBF_UCHAR) { + prompt("Bit 2") + pp(TRUE) + interest(1) + } + field(B3,DBF_UCHAR) { + prompt("Bit 3") + pp(TRUE) + interest(1) + } + field(B4,DBF_UCHAR) { + prompt("Bit 4") + pp(TRUE) + interest(1) + } + field(B5,DBF_UCHAR) { + prompt("Bit 5") + pp(TRUE) + interest(1) + } + field(B6,DBF_UCHAR) { + prompt("Bit 6") + pp(TRUE) + interest(1) + } + field(B7,DBF_UCHAR) { + prompt("Bit 7") + pp(TRUE) + interest(1) + } + field(B8,DBF_UCHAR) { + prompt("Bit 8") + pp(TRUE) + interest(1) + } + field(B9,DBF_UCHAR) { + prompt("Bit 9") + pp(TRUE) + interest(1) + } + field(BA,DBF_UCHAR) { + prompt("Bit A") + pp(TRUE) + interest(1) + } + field(BB,DBF_UCHAR) { + prompt("Bit B") + pp(TRUE) + interest(1) + } + field(BC,DBF_UCHAR) { + prompt("Bit C") + pp(TRUE) + interest(1) + } + field(BD,DBF_UCHAR) { + prompt("Bit D") + pp(TRUE) + interest(1) + } + field(BE,DBF_UCHAR) { + prompt("Bit E") + pp(TRUE) + interest(1) + } + field(BF,DBF_UCHAR) { + prompt("Bit F") + pp(TRUE) + interest(1) + } +} +recordtype(mbbo) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_ENUM) { + prompt("Desired Value") + promptgroup(GUI_OUTPUT) + special(SPC_DBADDR) + pp(TRUE) + asl(ASL0) + } + field(DOL,DBF_INLINK) { + prompt("Desired Output Loc") + promptgroup(GUI_MBB) + interest(1) + } + field(OMSL,DBF_MENU) { + prompt("Output Mode Select") + promptgroup(GUI_MBB) + menu(menuOmsl) + interest(1) + } + field(NOBT,DBF_SHORT) { + prompt("Number of Bits") + promptgroup(GUI_MBB) + special(SPC_NOMOD) + interest(1) + } + field(OUT,DBF_OUTLINK) { + prompt("Output Specification") + promptgroup(GUI_MBB) + interest(1) + } + field(ZRVL,DBF_ULONG) { + prompt("Zero Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(ONVL,DBF_ULONG) { + prompt("One Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TWVL,DBF_ULONG) { + prompt("Two Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(THVL,DBF_ULONG) { + prompt("Three Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FRVL,DBF_ULONG) { + prompt("Four Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FVVL,DBF_ULONG) { + prompt("Five Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(SXVL,DBF_ULONG) { + prompt("Six Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(SVVL,DBF_ULONG) { + prompt("Seven Value") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(EIVL,DBF_ULONG) { + prompt("Eight Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(NIVL,DBF_ULONG) { + prompt("Nine Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TEVL,DBF_ULONG) { + prompt("Ten Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(ELVL,DBF_ULONG) { + prompt("Eleven Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TVVL,DBF_ULONG) { + prompt("Twelve Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(TTVL,DBF_ULONG) { + prompt("Thirteen Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FTVL,DBF_ULONG) { + prompt("Fourteen Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(FFVL,DBF_ULONG) { + prompt("Fifteen Value") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + base(HEX) + interest(1) + } + field(ZRST,DBF_STRING) { + prompt("Zero String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(ONST,DBF_STRING) { + prompt("One String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TWST,DBF_STRING) { + prompt("Two String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(THST,DBF_STRING) { + prompt("Three String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FRST,DBF_STRING) { + prompt("Four String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FVST,DBF_STRING) { + prompt("Five String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(SXST,DBF_STRING) { + prompt("Six String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(SVST,DBF_STRING) { + prompt("Seven String") + promptgroup(GUI_BITS1) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(EIST,DBF_STRING) { + prompt("Eight String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(NIST,DBF_STRING) { + prompt("Nine String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TEST,DBF_STRING) { + prompt("Ten String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(ELST,DBF_STRING) { + prompt("Eleven String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TVST,DBF_STRING) { + prompt("Twelve String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(TTST,DBF_STRING) { + prompt("Thirteen String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FTST,DBF_STRING) { + prompt("Fourteen String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(FFST,DBF_STRING) { + prompt("Fifteen String") + promptgroup(GUI_BITS2) + special(100) + size(16) + pp(TRUE) + interest(1) + } + field(ZRSV,DBF_MENU) { + prompt("State Zero Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(ONSV,DBF_MENU) { + prompt("State One Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TWSV,DBF_MENU) { + prompt("State Two Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(THSV,DBF_MENU) { + prompt("State Three Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FRSV,DBF_MENU) { + prompt("State Four Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FVSV,DBF_MENU) { + prompt("State Five Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(SXSV,DBF_MENU) { + prompt("State Six Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(SVSV,DBF_MENU) { + prompt("State Seven Severity") + promptgroup(GUI_BITS1) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(EISV,DBF_MENU) { + prompt("State Eight Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(NISV,DBF_MENU) { + prompt("State Nine Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TESV,DBF_MENU) { + prompt("State Ten Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(ELSV,DBF_MENU) { + prompt("State Eleven Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TVSV,DBF_MENU) { + prompt("State Twelve Severity") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(TTSV,DBF_MENU) { + prompt("State Thirteen Sevr") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FTSV,DBF_MENU) { + prompt("State Fourteen Sevr") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(FFSV,DBF_MENU) { + prompt("State Fifteen Sevr") + promptgroup(GUI_BITS2) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(UNSV,DBF_MENU) { + prompt("Unknown State Sevr") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(COSV,DBF_MENU) { + prompt("Change of State Sevr") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(RVAL,DBF_ULONG) { + prompt("Raw Value") + pp(TRUE) + } + field(ORAW,DBF_ULONG) { + prompt("Prev Raw Value") + special(SPC_NOMOD) + interest(3) + } + field(RBV,DBF_ULONG) { + prompt("Readback Value") + special(SPC_NOMOD) + } + 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") + special(SPC_NOMOD) + interest(3) + } + field(SDEF,DBF_SHORT) { + prompt("States Defined") + special(SPC_NOMOD) + interest(3) + } + field(SHFT,DBF_USHORT) { + prompt("Shift") + promptgroup(GUI_MBB) + interest(1) + } + field(SIOL,DBF_OUTLINK) { + prompt("Sim Output Specifctn") + promptgroup(GUI_MBB) + interest(1) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_MBB) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + interest(2) + } + field(IVOA,DBF_MENU) { + prompt("INVALID outpt action") + promptgroup(GUI_MBB) + menu(menuIvoa) + interest(2) + } + field(IVOV,DBF_USHORT) { + prompt("INVALID output value") + promptgroup(GUI_MBB) + interest(2) + } +} +recordtype(mbboDirect) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_USHORT) { + prompt("Word") + promptgroup(GUI_OUTPUT) + pp(TRUE) + asl(ASL0) + } + field(OMSL,DBF_MENU) { + prompt("Output Mode Select") + promptgroup(GUI_MBB) + special(101) + menu(menuOmsl) + pp(TRUE) + interest(1) + } + field(NOBT,DBF_SHORT) { + prompt("Number of Bits") + promptgroup(GUI_MBB) + special(SPC_NOMOD) + interest(1) + } + field(DOL,DBF_INLINK) { + prompt("Desired Output Loc") + promptgroup(GUI_MBB) + interest(1) + } + field(OUT,DBF_OUTLINK) { + prompt("Output Specification") + promptgroup(GUI_MBB) + interest(1) + } + field(B0,DBF_UCHAR) { + prompt("Bit 0") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B1,DBF_UCHAR) { + prompt("Bit 1") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B2,DBF_UCHAR) { + prompt("Bit 2") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B3,DBF_UCHAR) { + prompt("Bit 3") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B4,DBF_UCHAR) { + prompt("Bit 4") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B5,DBF_UCHAR) { + prompt("Bit 5") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B6,DBF_UCHAR) { + prompt("Bit 6") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B7,DBF_UCHAR) { + prompt("Bit 7") + promptgroup(GUI_BITS1) + special(100) + pp(TRUE) + interest(1) + } + field(B8,DBF_UCHAR) { + prompt("Bit 8") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(B9,DBF_UCHAR) { + prompt("Bit 9") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(BA,DBF_UCHAR) { + prompt("Bit 10") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(BB,DBF_UCHAR) { + prompt("Bit 11") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(BC,DBF_UCHAR) { + prompt("Bit 12") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(BD,DBF_UCHAR) { + prompt("Bit 13") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(BE,DBF_UCHAR) { + prompt("Bit 14") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(BF,DBF_UCHAR) { + prompt("Bit 15") + promptgroup(GUI_BITS2) + special(100) + pp(TRUE) + interest(1) + } + field(RVAL,DBF_ULONG) { + prompt("Raw Value") + special(SPC_NOMOD) + pp(TRUE) + } + field(ORAW,DBF_ULONG) { + prompt("Prev Raw Value") + special(SPC_NOMOD) + interest(3) + } + field(RBV,DBF_ULONG) { + prompt("Readback Value") + special(SPC_NOMOD) + } + 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_ULONG) { + prompt("Last Value Monitored") + special(SPC_NOMOD) + interest(3) + } + field(LALM,DBF_ULONG) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(SHFT,DBF_ULONG) { + prompt("Shift") + promptgroup(GUI_MBB) + interest(1) + } + field(SIOL,DBF_OUTLINK) { + prompt("Sim Output Specifctn") + promptgroup(GUI_MBB) + interest(1) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_MBB) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_MBB) + menu(menuAlarmSevr) + interest(2) + } + field(IVOA,DBF_MENU) { + prompt("INVALID outpt action") + promptgroup(GUI_MBB) + menu(menuIvoa) + interest(2) + } + field(IVOV,DBF_USHORT) { + prompt("INVALID output value") + promptgroup(GUI_MBB) + interest(2) + } +} +recordtype(permissive) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(LABL,DBF_STRING) { + prompt("Button Label") + promptgroup(GUI_DISPLAY) + size(20) + pp(TRUE) + interest(1) + } + field(VAL,DBF_USHORT) { + prompt("Status") + pp(TRUE) + asl(ASL0) + } + field(OVAL,DBF_USHORT) { + prompt("Old Status") + special(SPC_NOMOD) + interest(3) + } + field(WFLG,DBF_USHORT) { + prompt("Wait Flag") + pp(TRUE) + } + field(OFLG,DBF_USHORT) { + prompt("Old Flag") + special(SPC_NOMOD) + interest(3) + } +} +recordtype(sel) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_DOUBLE) { + prompt("Result") + special(SPC_NOMOD) + asl(ASL0) + } + field(SELM,DBF_MENU) { + prompt("Select Mechanism") + promptgroup(GUI_INPUTS) + menu(selSELM) + } + field(SELN,DBF_USHORT) { + prompt("Index value") + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(NVL,DBF_INLINK) { + prompt("Index Value Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPA,DBF_INLINK) { + prompt("Input A") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPB,DBF_INLINK) { + prompt("Input B") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPC,DBF_INLINK) { + prompt("Input C") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPD,DBF_INLINK) { + prompt("Input D") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPE,DBF_INLINK) { + prompt("Input E") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPF,DBF_INLINK) { + prompt("Input F") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPG,DBF_INLINK) { + prompt("Input G") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPH,DBF_INLINK) { + prompt("Input H") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPI,DBF_INLINK) { + prompt("Input I") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPJ,DBF_INLINK) { + prompt("Input J") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPK,DBF_INLINK) { + prompt("Input K") + promptgroup(GUI_SELECT) + interest(1) + } + field(INPL,DBF_INLINK) { + prompt("Input L") + promptgroup(GUI_SELECT) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Units Name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Rng") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_DOUBLE) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_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) { + 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) { + prompt("Value of Input F") + pp(TRUE) + } + 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) { + 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") + 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") + special(SPC_NOMOD) + interest(3) + } + field(LD,DBF_DOUBLE) { + prompt("Prev Value of D") + special(SPC_NOMOD) + interest(3) + } + field(LE,DBF_DOUBLE) { + prompt("Prev Value of E") + special(SPC_NOMOD) + interest(3) + } + field(LF,DBF_DOUBLE) { + prompt("Prev Value of F") + special(SPC_NOMOD) + interest(3) + } + field(LG,DBF_DOUBLE) { + prompt("Prev Value of G") + special(SPC_NOMOD) + interest(3) + } + field(LH,DBF_DOUBLE) { + prompt("Prev Value of H") + special(SPC_NOMOD) + interest(3) + } + 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) { + prompt("Prev Value of K") + special(SPC_NOMOD) + interest(3) + } + field(LL,DBF_DOUBLE) { + prompt("Prev Value of L") + special(SPC_NOMOD) + interest(3) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } + field(NLST,DBF_USHORT) { + prompt("Last Index Monitored") + special(SPC_NOMOD) + interest(3) + } +} +recordtype(seq) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_LONG) { + prompt("Used to trigger") + pp(TRUE) + asl(ASL0) + } + field(SELM,DBF_MENU) { + prompt("Select Mechanism") + promptgroup(GUI_INPUTS) + menu(seqSELM) + interest(1) + } + field(SELN,DBF_USHORT) { + prompt("Link Selection") + initial("1") + interest(1) + } + field(SELL,DBF_INLINK) { + prompt("Link Selection Loc") + promptgroup(GUI_INPUTS) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(DLY1,DBF_DOUBLE) { + prompt("Delay 1") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DOL1,DBF_INLINK) { + prompt("Input link1") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DO1,DBF_DOUBLE) { + prompt("Constant input 1") + interest(1) + } + field(LNK1,DBF_OUTLINK) { + prompt("Output Link 1") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DLY2,DBF_DOUBLE) { + prompt("Delay 2") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DOL2,DBF_INLINK) { + prompt("Input link 2") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DO2,DBF_DOUBLE) { + prompt("Constant input 2") + interest(1) + } + field(LNK2,DBF_OUTLINK) { + prompt("Output Link 2") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DLY3,DBF_DOUBLE) { + prompt("Delay 3") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DOL3,DBF_INLINK) { + prompt("Input link 3") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DO3,DBF_DOUBLE) { + prompt("Constant input 3") + interest(1) + } + field(LNK3,DBF_OUTLINK) { + prompt("Output Link 3") + promptgroup(GUI_SEQ1) + interest(1) + } + field(DLY4,DBF_DOUBLE) { + prompt("Delay 4") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DOL4,DBF_INLINK) { + prompt("Input link 4") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DO4,DBF_DOUBLE) { + prompt("Constant input 4") + interest(1) + } + field(LNK4,DBF_OUTLINK) { + prompt("Output Link 4") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DLY5,DBF_DOUBLE) { + prompt("Delay 5") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DOL5,DBF_INLINK) { + prompt("Input link 5") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DO5,DBF_DOUBLE) { + prompt("Constant input 5") + interest(1) + } + field(LNK5,DBF_OUTLINK) { + prompt("Output Link 5") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DLY6,DBF_DOUBLE) { + prompt("Delay 6") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DOL6,DBF_INLINK) { + prompt("Input link 6") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DO6,DBF_DOUBLE) { + prompt("Constant input 6") + interest(1) + } + field(LNK6,DBF_OUTLINK) { + prompt("Output Link 6") + promptgroup(GUI_SEQ2) + interest(1) + } + field(DLY7,DBF_DOUBLE) { + prompt("Delay 7") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DOL7,DBF_INLINK) { + prompt("Input link 7") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DO7,DBF_DOUBLE) { + prompt("Constant input 7") + interest(1) + } + field(LNK7,DBF_OUTLINK) { + prompt("Output Link 7") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DLY8,DBF_DOUBLE) { + prompt("Delay 8") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DOL8,DBF_INLINK) { + prompt("Input link 8") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DO8,DBF_DOUBLE) { + prompt("Constant input 8") + interest(1) + } + field(LNK8,DBF_OUTLINK) { + prompt("Output Link 8") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DLY9,DBF_DOUBLE) { + prompt("Delay 9") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DOL9,DBF_INLINK) { + prompt("Input link 9") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DO9,DBF_DOUBLE) { + prompt("Constant input 9") + interest(1) + } + field(LNK9,DBF_OUTLINK) { + prompt("Output Link 9") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DLYA,DBF_DOUBLE) { + prompt("Delay 10") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DOLA,DBF_INLINK) { + prompt("Input link 10") + promptgroup(GUI_SEQ3) + interest(1) + } + field(DOA,DBF_DOUBLE) { + prompt("Constant input 10") + interest(1) + } + field(LNKA,DBF_OUTLINK) { + prompt("Output Link 10") + promptgroup(GUI_SEQ3) + interest(1) + } +} +recordtype(state) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_STRING) { + prompt("Value") + promptgroup(GUI_DISPLAY) + size(20) + pp(TRUE) + asl(ASL0) + } + field(OVAL,DBF_STRING) { + prompt("Prev Value") + special(SPC_NOMOD) + size(20) + interest(3) + } +} +recordtype(stringin) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_STRING) { + prompt("Current Value") + promptgroup(GUI_INPUTS) + size(40) + pp(TRUE) + asl(ASL0) + } + field(OVAL,DBF_STRING) { + prompt("Previous Value") + special(SPC_NOMOD) + size(40) + interest(3) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + interest(1) + } + field(MPST,DBF_MENU) { + prompt("Post Value Monitors") + promptgroup(GUI_DISPLAY) + menu(stringinPOST) + interest(1) + } + field(APST,DBF_MENU) { + prompt("Post Archive Monitors") + promptgroup(GUI_DISPLAY) + menu(stringinPOST) + interest(1) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SVAL,DBF_STRING) { + prompt("Simulation Value") + size(40) + pp(TRUE) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } +} +recordtype(stringout) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_STRING) { + prompt("Current Value") + promptgroup(GUI_OUTPUT) + size(40) + pp(TRUE) + asl(ASL0) + } + field(OVAL,DBF_STRING) { + prompt("Previous Value") + special(SPC_NOMOD) + size(40) + interest(3) + } + field(DOL,DBF_INLINK) { + prompt("Desired Output Loc") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(OMSL,DBF_MENU) { + prompt("Output Mode Select") + promptgroup(GUI_OUTPUT) + menu(menuOmsl) + interest(1) + } + field(OUT,DBF_OUTLINK) { + prompt("Output Specification") + promptgroup(GUI_OUTPUT) + interest(1) + } + field(MPST,DBF_MENU) { + prompt("Post Value Monitors") + promptgroup(GUI_DISPLAY) + menu(stringoutPOST) + interest(1) + } + field(APST,DBF_MENU) { + prompt("Post Archive Monitors") + promptgroup(GUI_DISPLAY) + menu(stringoutPOST) + interest(1) + } + field(SIOL,DBF_OUTLINK) { + prompt("Sim Output Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } + field(IVOA,DBF_MENU) { + prompt("INVALID output action") + promptgroup(GUI_OUTPUT) + menu(menuIvoa) + interest(2) + } + field(IVOV,DBF_STRING) { + prompt("INVALID output value") + promptgroup(GUI_OUTPUT) + size(40) + interest(2) + } +} +recordtype(sub) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_DOUBLE) { + prompt("Result") + pp(TRUE) + asl(ASL0) + } + field(INAM,DBF_STRING) { + prompt("Init Routine Name") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(SNAM,DBF_STRING) { + prompt("Subroutine Name") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(SADR,DBF_NOACCESS) { + prompt("Subroutine Address") + special(SPC_NOMOD) + extra("void * sadr") + interest(4) + } + field(INPA,DBF_INLINK) { + prompt("Input A") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPB,DBF_INLINK) { + prompt("Input B") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPC,DBF_INLINK) { + prompt("Input C") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPD,DBF_INLINK) { + prompt("Input D") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPE,DBF_INLINK) { + prompt("Input E") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPF,DBF_INLINK) { + prompt("Input F") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPG,DBF_INLINK) { + prompt("Input G") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPH,DBF_INLINK) { + prompt("Input H") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPI,DBF_INLINK) { + prompt("Input I") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPJ,DBF_INLINK) { + prompt("Input J") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPK,DBF_INLINK) { + prompt("Input K") + promptgroup(GUI_INPUTS) + interest(1) + } + field(INPL,DBF_INLINK) { + prompt("Input L") + promptgroup(GUI_INPUTS) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Units Name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Rng") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_DOUBLE) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_DOUBLE) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_DOUBLE) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_DOUBLE) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(BRSV,DBF_MENU) { + prompt("Bad Return Severity") + promptgroup(GUI_SUB) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_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) { + 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) { + prompt("Value of Input F") + pp(TRUE) + } + 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) { + 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") + 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") + special(SPC_NOMOD) + interest(3) + } + field(LD,DBF_DOUBLE) { + prompt("Prev Value of D") + special(SPC_NOMOD) + interest(3) + } + field(LE,DBF_DOUBLE) { + prompt("Prev Value of E") + special(SPC_NOMOD) + interest(3) + } + field(LF,DBF_DOUBLE) { + prompt("Prev Value of F") + special(SPC_NOMOD) + interest(3) + } + field(LG,DBF_DOUBLE) { + prompt("Prev Value of G") + special(SPC_NOMOD) + interest(3) + } + field(LH,DBF_DOUBLE) { + prompt("Prev Value of H") + special(SPC_NOMOD) + interest(3) + } + 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) { + prompt("Prev Value of K") + special(SPC_NOMOD) + interest(3) + } + field(LL,DBF_DOUBLE) { + prompt("Prev Value of L") + special(SPC_NOMOD) + interest(3) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Value Monitored") + special(SPC_NOMOD) + interest(3) + } +} +recordtype(subArray) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_NOACCESS) { + prompt("Value") + special(SPC_DBADDR) + extra("void * val") + pp(TRUE) + asl(ASL0) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_COMMON) + interest(1) + } + field(FTVL,DBF_MENU) { + prompt("Field Type of Value") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_BITS1) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Engineering Units Name") + promptgroup(GUI_BITS2) + size(16) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Range") + promptgroup(GUI_CALC) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_CLOCK) + interest(1) + } + field(MALM,DBF_ULONG) { + prompt("Maximum Elements ") + initial("1") + promptgroup(GUI_CLOCK) + special(SPC_NOMOD) + interest(1) + } + field(NELM,DBF_ULONG) { + prompt("Number of Elements") + initial("1") + promptgroup(GUI_COMPRESS) + pp(TRUE) + } + field(INDX,DBF_ULONG) { + prompt("Substring Index") + promptgroup(GUI_CONVERT) + pp(TRUE) + } + field(BUSY,DBF_SHORT) { + prompt("Busy Indicator") + special(SPC_NOMOD) + } + field(NORD,DBF_LONG) { + prompt("Number elements read") + special(SPC_NOMOD) + } + field(BPTR,DBF_NOACCESS) { + prompt("Buffer Pointer") + special(SPC_NOMOD) + extra("void * bptr") + interest(4) + } +} +recordtype(waveform) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_NOACCESS) { + prompt("Value") + special(SPC_DBADDR) + extra("void * val") + pp(TRUE) + asl(ASL0) + } + field(RARM,DBF_SHORT) { + prompt("Rearm the waveform") + promptgroup(GUI_WAVE) + pp(TRUE) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Engineering Units Name") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(HOPR,DBF_DOUBLE) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_DOUBLE) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(NELM,DBF_ULONG) { + prompt("Number of Elements") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(FTVL,DBF_MENU) { + prompt("Field Type of Value") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(BUSY,DBF_SHORT) { + prompt("Busy Indicator") + special(SPC_NOMOD) + } + field(NORD,DBF_ULONG) { + prompt("Number elements read") + special(SPC_NOMOD) + } + field(BPTR,DBF_NOACCESS) { + prompt("Buffer Pointer") + special(SPC_NOMOD) + extra("void * bptr") + interest(4) + } + field(SIOL,DBF_INLINK) { + prompt("Sim Input Specifctn") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIML,DBF_INLINK) { + prompt("Sim Mode Location") + promptgroup(GUI_INPUTS) + interest(1) + } + field(SIMM,DBF_MENU) { + prompt("Simulation Mode") + menu(menuYesNo) + interest(1) + } + field(SIMS,DBF_MENU) { + prompt("Sim mode Alarm Svrty") + promptgroup(GUI_INPUTS) + menu(menuAlarmSevr) + interest(2) + } +} +recordtype(xxx) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VAL,DBF_DOUBLE) { + prompt("Current EGU Value") + pp(TRUE) + asl(ASL0) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Engineering Units") + promptgroup(GUI_DISPLAY) + size(16) + interest(1) + } + field(HOPR,DBF_FLOAT) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_FLOAT) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_FLOAT) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_FLOAT) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_FLOAT) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_FLOAT) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } +} +recordtype(genSub) { + field(NAME,DBF_STRING) { + prompt("Record Name") + special(SPC_NOMOD) + size(61) + } + field(DESC,DBF_STRING) { + prompt("Descriptor") + promptgroup(GUI_COMMON) + size(29) + } + field(ASG,DBF_STRING) { + prompt("Access Security Group") + promptgroup(GUI_COMMON) + special(SPC_AS) + size(29) + } + field(SCAN,DBF_MENU) { + prompt("Scan Mechanism") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuScan) + interest(1) + } + field(PINI,DBF_MENU) { + prompt("Process at iocInit") + promptgroup(GUI_SCAN) + menu(menuYesNo) + interest(1) + } + field(PHAS,DBF_SHORT) { + prompt("Scan Phase") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(EVNT,DBF_SHORT) { + prompt("Event Number") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + interest(1) + } + field(TSE,DBF_SHORT) { + prompt("Time Stamp Event") + promptgroup(GUI_SCAN) + interest(1) + } + field(TSEL,DBF_INLINK) { + prompt("Time Stamp Link") + promptgroup(GUI_SCAN) + interest(1) + } + field(DTYP,DBF_DEVICE) { + prompt("Device Type") + promptgroup(GUI_LINKS) + interest(1) + } + field(DISV,DBF_SHORT) { + prompt("Disable Value") + initial("1") + promptgroup(GUI_SCAN) + } + field(DISA,DBF_SHORT) { + prompt("Disable") + } + field(SDIS,DBF_INLINK) { + prompt("Scanning Disable") + promptgroup(GUI_SCAN) + interest(1) + } + field(MLOK,DBF_NOACCESS) { + prompt("Monitor lock") + special(SPC_NOMOD) + extra("epicsMutexId mlok") + interest(4) + } + field(MLIS,DBF_NOACCESS) { + prompt("Monitor List") + special(SPC_NOMOD) + extra("ELLLIST mlis") + interest(4) + } + field(DISP,DBF_UCHAR) { + prompt("Disable putField") + } + field(PROC,DBF_UCHAR) { + prompt("Force Processing") + pp(TRUE) + interest(3) + } + field(STAT,DBF_MENU) { + prompt("Alarm Status") + initial("UDF") + special(SPC_NOMOD) + menu(menuAlarmStat) + } + field(SEVR,DBF_MENU) { + prompt("Alarm Severity") + initial("INVALID") + special(SPC_NOMOD) + menu(menuAlarmSevr) + } + field(NSTA,DBF_MENU) { + prompt("New Alarm Status") + special(SPC_NOMOD) + menu(menuAlarmStat) + interest(2) + } + field(NSEV,DBF_MENU) { + prompt("New Alarm Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKS,DBF_MENU) { + prompt("Alarm Ack Severity") + special(SPC_NOMOD) + menu(menuAlarmSevr) + interest(2) + } + field(ACKT,DBF_MENU) { + prompt("Alarm Ack Transient") + initial("YES") + promptgroup(GUI_ALARMS) + special(SPC_NOMOD) + menu(menuYesNo) + interest(2) + } + field(DISS,DBF_MENU) { + prompt("Disable Alarm Sevrty") + promptgroup(GUI_SCAN) + menu(menuAlarmSevr) + interest(1) + } + 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) { + prompt("dbPutField process") + special(SPC_NOMOD) + interest(1) + } + field(RPRO,DBF_UCHAR) { + prompt("Reprocess ") + special(SPC_NOMOD) + interest(1) + } + field(ASP,DBF_NOACCESS) { + prompt("Access Security Pvt") + special(SPC_NOMOD) + extra("void *asp") + interest(4) + } + field(PPN,DBF_NOACCESS) { + prompt("addr of PUTNOTIFY") + special(SPC_NOMOD) + extra("struct putNotify *ppn") + interest(4) + } + field(PPNR,DBF_NOACCESS) { + prompt("pputNotifyRecord") + special(SPC_NOMOD) + extra("struct putNotifyRecord *ppnr") + interest(4) + } + field(SPVT,DBF_NOACCESS) { + prompt("Scan Private") + special(SPC_NOMOD) + extra("struct scan_element *spvt") + interest(4) + } + field(RSET,DBF_NOACCESS) { + prompt("Address of RSET") + special(SPC_NOMOD) + extra("struct rset *rset") + interest(4) + } + field(DSET,DBF_NOACCESS) { + prompt("DSET address") + special(SPC_NOMOD) + extra("struct dset *dset") + interest(4) + } + field(DPVT,DBF_NOACCESS) { + prompt("Device Private") + special(SPC_NOMOD) + extra("void *dpvt") + interest(4) + } + field(RDES,DBF_NOACCESS) { + prompt("Address of dbRecordType") + special(SPC_NOMOD) + extra("struct dbRecordType *rdes") + interest(4) + } + field(LSET,DBF_NOACCESS) { + prompt("Lock Set") + special(SPC_NOMOD) + extra("struct lockRecord *lset") + interest(4) + } + field(PRIO,DBF_MENU) { + prompt("Scheduling Priority") + promptgroup(GUI_SCAN) + special(SPC_SCAN) + menu(menuPriority) + interest(1) + } + field(TPRO,DBF_UCHAR) { + prompt("Trace Processing") + } + field(BKPT,DBF_NOACCESS) { + prompt("Break Point") + special(SPC_NOMOD) + extra("char bkpt") + interest(1) + } + field(UDF,DBF_UCHAR) { + prompt("Undefined") + initial("1") + promptgroup(GUI_COMMON) + pp(TRUE) + interest(1) + } + field(TIME,DBF_NOACCESS) { + prompt("Time") + special(SPC_NOMOD) + extra("epicsTimeStamp time") + interest(2) + } + field(FLNK,DBF_FWDLINK) { + prompt("Forward Process Link") + promptgroup(GUI_LINKS) + interest(1) + } + field(VERS,DBF_DOUBLE) { + prompt("Version Number") + promptgroup(GUI_DISPLAY) + special(SPC_NOMOD) + interest(1) + } + field(VAL,DBF_LONG) { + prompt("Subr. return value") + asl(ASL0) + } + field(OVAL,DBF_LONG) { + prompt("Old return value") + special(SPC_NOMOD) + interest(1) + } + field(SADR,DBF_LONG) { + prompt("Subroutine Address") + special(SPC_NOMOD) + interest(1) + } + field(OSAD,DBF_LONG) { + prompt("Old Subr. Address") + special(SPC_NOMOD) + interest(1) + } + field(LFLG,DBF_MENU) { + prompt("Link Flag") + promptgroup(GUI_OUTPUT) + menu(genSubLFLG) + interest(1) + } + field(EFLG,DBF_MENU) { + prompt("Event Flag") + promptgroup(GUI_OUTPUT) + menu(genSubEFLG) + interest(1) + } + field(SUBL,DBF_INLINK) { + prompt("Subroutine Input Link") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INAM,DBF_STRING) { + prompt("Init Routine Name") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(SNAM,DBF_STRING) { + prompt("Process Subr. Name") + promptgroup(GUI_SUB) + special(100) + size(40) + interest(1) + } + field(ONAM,DBF_STRING) { + prompt("Old Subroutine Name") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(BRSV,DBF_MENU) { + prompt("Bad Return Severity") + promptgroup(GUI_SUB) + menu(menuAlarmSevr) + pp(TRUE) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(INPA,DBF_INLINK) { + prompt("Input Link A") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPB,DBF_INLINK) { + prompt("Input Link B") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPC,DBF_INLINK) { + prompt("Input Link C") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPD,DBF_INLINK) { + prompt("Input Link D") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPE,DBF_INLINK) { + prompt("Input Link E") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPF,DBF_INLINK) { + prompt("Input Link F") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPG,DBF_INLINK) { + prompt("Input Link G") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPH,DBF_INLINK) { + prompt("Input Link H") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPI,DBF_INLINK) { + prompt("Input Link I") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPJ,DBF_INLINK) { + prompt("Input Link J") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPK,DBF_INLINK) { + prompt("Input Link K") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPL,DBF_INLINK) { + prompt("Input Link L") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPM,DBF_INLINK) { + prompt("Input Link M") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPN,DBF_INLINK) { + prompt("Input Link N") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPO,DBF_INLINK) { + prompt("Input Link O") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPP,DBF_INLINK) { + prompt("Input Link P") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPQ,DBF_INLINK) { + prompt("Input Link Q") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPR,DBF_INLINK) { + prompt("Input Link R") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPS,DBF_INLINK) { + prompt("Input Link S") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPT,DBF_INLINK) { + prompt("Input Link T") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPU,DBF_INLINK) { + prompt("Input Link U") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(UFA,DBF_STRING) { + prompt("Input Structure A") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFB,DBF_STRING) { + prompt("Input Structure B") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFC,DBF_STRING) { + prompt("Input Structure C") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFD,DBF_STRING) { + prompt("Input Structure D") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFE,DBF_STRING) { + prompt("Input Structure E") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFF,DBF_STRING) { + prompt("Input Structure F") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFG,DBF_STRING) { + prompt("Input Structure G") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFH,DBF_STRING) { + prompt("Input Structure H") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFI,DBF_STRING) { + prompt("Input Structure I") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFJ,DBF_STRING) { + prompt("Input Structure J") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFK,DBF_STRING) { + prompt("Input Structure K") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFL,DBF_STRING) { + prompt("Input Structure L") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFM,DBF_STRING) { + prompt("Input Structure M") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFN,DBF_STRING) { + prompt("Input Structure N") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFO,DBF_STRING) { + prompt("Input Structure O") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFP,DBF_STRING) { + prompt("Input Structure P") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFQ,DBF_STRING) { + prompt("Input Structure Q") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFR,DBF_STRING) { + prompt("Input Structure R") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFS,DBF_STRING) { + prompt("Input Structure S") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFT,DBF_STRING) { + prompt("Input Structure T") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFU,DBF_STRING) { + prompt("Input Structure U") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(A,DBF_NOACCESS) { + prompt("Value of Input A") + special(SPC_DBADDR) + extra("void *a") + interest(1) + asl(ASL0) + } + field(B,DBF_NOACCESS) { + prompt("Value of Input B") + special(SPC_DBADDR) + extra("void *b") + interest(1) + asl(ASL0) + } + field(C,DBF_NOACCESS) { + prompt("Value of Input C") + special(SPC_DBADDR) + extra("void *c") + interest(1) + asl(ASL0) + } + field(D,DBF_NOACCESS) { + prompt("Value of Input D") + special(SPC_DBADDR) + extra("void *d") + interest(1) + asl(ASL0) + } + field(E,DBF_NOACCESS) { + prompt("Value of Input E") + special(SPC_DBADDR) + extra("void *e") + interest(1) + asl(ASL0) + } + field(F,DBF_NOACCESS) { + prompt("Value of Input F") + special(SPC_DBADDR) + extra("void *f") + interest(1) + asl(ASL0) + } + field(G,DBF_NOACCESS) { + prompt("Value of Input G") + special(SPC_DBADDR) + extra("void *g") + interest(1) + asl(ASL0) + } + field(H,DBF_NOACCESS) { + prompt("Value of Input H") + special(SPC_DBADDR) + extra("void *h") + interest(1) + asl(ASL0) + } + field(I,DBF_NOACCESS) { + prompt("Value of Input I") + special(SPC_DBADDR) + extra("void *i") + interest(1) + asl(ASL0) + } + field(J,DBF_NOACCESS) { + prompt("Value of Input J") + special(SPC_DBADDR) + extra("void *j") + pp(TRUE) + interest(1) + asl(ASL0) + } + field(K,DBF_NOACCESS) { + prompt("Value of Input K") + special(SPC_DBADDR) + extra("void *k") + interest(1) + asl(ASL0) + } + field(L,DBF_NOACCESS) { + prompt("Value of Input L") + special(SPC_DBADDR) + extra("void *l") + interest(1) + asl(ASL0) + } + field(M,DBF_NOACCESS) { + prompt("Value of Input M") + special(SPC_DBADDR) + extra("void *m") + interest(1) + asl(ASL0) + } + field(N,DBF_NOACCESS) { + prompt("Value of Input N") + special(SPC_DBADDR) + extra("void *n") + interest(1) + asl(ASL0) + } + field(O,DBF_NOACCESS) { + prompt("Value of Input O") + special(SPC_DBADDR) + extra("void *o") + interest(1) + asl(ASL0) + } + field(P,DBF_NOACCESS) { + prompt("Value of Input P") + special(SPC_DBADDR) + extra("void *p") + interest(1) + asl(ASL0) + } + field(Q,DBF_NOACCESS) { + prompt("Value of Input Q") + special(SPC_DBADDR) + extra("void *q") + interest(1) + asl(ASL0) + } + field(R,DBF_NOACCESS) { + prompt("Value of Input R") + special(SPC_DBADDR) + extra("void *r") + interest(1) + asl(ASL0) + } + field(S,DBF_NOACCESS) { + prompt("Value of Input S") + special(SPC_DBADDR) + extra("void *s") + interest(1) + asl(ASL0) + } + field(T,DBF_NOACCESS) { + prompt("Value of Input T") + special(SPC_DBADDR) + extra("void *t") + interest(1) + asl(ASL0) + } + field(U,DBF_NOACCESS) { + prompt("Value of Input U") + special(SPC_DBADDR) + extra("void *u") + interest(1) + asl(ASL0) + } + field(FTA,DBF_MENU) { + prompt("Type of A") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTB,DBF_MENU) { + prompt("Type of B") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTC,DBF_MENU) { + prompt("Type of C") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTD,DBF_MENU) { + prompt("Type of D") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTE,DBF_MENU) { + prompt("Type of E") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTF,DBF_MENU) { + prompt("Type of F") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTG,DBF_MENU) { + prompt("Type of G") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTH,DBF_MENU) { + prompt("Type of H") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTI,DBF_MENU) { + prompt("Type of I") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTJ,DBF_MENU) { + prompt("Type of J") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTK,DBF_MENU) { + prompt("Type of K") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTL,DBF_MENU) { + prompt("Type of L") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTM,DBF_MENU) { + prompt("Type of M") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTN,DBF_MENU) { + prompt("Type of N") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTO,DBF_MENU) { + prompt("Type of O") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTP,DBF_MENU) { + prompt("Type of P") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTQ,DBF_MENU) { + prompt("Type of Q") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTR,DBF_MENU) { + prompt("Type of R") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTS,DBF_MENU) { + prompt("Type of S") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTT,DBF_MENU) { + prompt("Type of T") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTU,DBF_MENU) { + prompt("Type of U") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(NOA,DBF_ULONG) { + prompt("No. in A") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOB,DBF_ULONG) { + prompt("No. in B") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOC,DBF_ULONG) { + prompt("No. in C") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOD,DBF_ULONG) { + prompt("No. in D") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOE,DBF_ULONG) { + prompt("No. in E") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOF,DBF_ULONG) { + prompt("No. in F") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOG,DBF_ULONG) { + prompt("No. in G") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOH,DBF_ULONG) { + prompt("No. in H") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOI,DBF_ULONG) { + prompt("No. in I") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOJ,DBF_ULONG) { + prompt("No. in J") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOK,DBF_ULONG) { + prompt("No. in K") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOL,DBF_ULONG) { + prompt("No. in L") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOM,DBF_ULONG) { + prompt("No. in M") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NON,DBF_ULONG) { + prompt("No. in N") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOO,DBF_ULONG) { + prompt("No. in O") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOP,DBF_ULONG) { + prompt("No. in P") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOQ,DBF_ULONG) { + prompt("No. in Q") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOR,DBF_ULONG) { + prompt("No. in R") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOS,DBF_ULONG) { + prompt("No. in S") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOT,DBF_ULONG) { + prompt("No. in T") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOU,DBF_ULONG) { + prompt("No. in U") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(OUTA,DBF_OUTLINK) { + prompt("Output Link A") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTB,DBF_OUTLINK) { + prompt("Output Link B") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTC,DBF_OUTLINK) { + prompt("Output Link C") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTD,DBF_OUTLINK) { + prompt("Output Link D") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTE,DBF_OUTLINK) { + prompt("Output Link E") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTF,DBF_OUTLINK) { + prompt("Output Link F") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTG,DBF_OUTLINK) { + prompt("Output Link G") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTH,DBF_OUTLINK) { + prompt("Output Link H") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTI,DBF_OUTLINK) { + prompt("Output Link I") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTJ,DBF_OUTLINK) { + prompt("Output Link J") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTK,DBF_OUTLINK) { + prompt("Output Link K") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTL,DBF_OUTLINK) { + prompt("Output Link L") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTM,DBF_OUTLINK) { + prompt("Output Link M") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTN,DBF_OUTLINK) { + prompt("Output Link N") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTO,DBF_OUTLINK) { + prompt("Output Link O") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTP,DBF_OUTLINK) { + prompt("Output Link P") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTQ,DBF_OUTLINK) { + prompt("Output Link Q") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTR,DBF_OUTLINK) { + prompt("Output Link R") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTS,DBF_OUTLINK) { + prompt("Output Link S") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTT,DBF_OUTLINK) { + prompt("Output Link T") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTU,DBF_OUTLINK) { + prompt("Output Link U") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(UFVA,DBF_STRING) { + prompt("Output Structure A") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVB,DBF_STRING) { + prompt("Output Structure B") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVC,DBF_STRING) { + prompt("Output Structure C") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVD,DBF_STRING) { + prompt("Output Structure D") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVE,DBF_STRING) { + prompt("Output Structure E") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVF,DBF_STRING) { + prompt("Output Structure F") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVG,DBF_STRING) { + prompt("Output Structure G") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVH,DBF_STRING) { + prompt("Output Structure H") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVI,DBF_STRING) { + prompt("Output Structure I") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVJ,DBF_STRING) { + prompt("Output Structure J") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVK,DBF_STRING) { + prompt("Output Structure K") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVL,DBF_STRING) { + prompt("Output Structure L") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVM,DBF_STRING) { + prompt("Output Structure M") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVN,DBF_STRING) { + prompt("Output Structure N") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVO,DBF_STRING) { + prompt("Output Structure O") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVP,DBF_STRING) { + prompt("Output Structure P") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVQ,DBF_STRING) { + prompt("Output Structure Q") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVR,DBF_STRING) { + prompt("Output Structure R") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVS,DBF_STRING) { + prompt("Output Structure S") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVT,DBF_STRING) { + prompt("Output Structure T") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(UFVU,DBF_STRING) { + prompt("Output Structure U") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + size(40) + interest(1) + } + field(VALA,DBF_NOACCESS) { + prompt("Value of Output A") + special(SPC_DBADDR) + extra("void *vala") + interest(1) + asl(ASL0) + } + field(VALB,DBF_NOACCESS) { + prompt("Value of Output B") + special(SPC_DBADDR) + extra("void *valb") + interest(1) + asl(ASL0) + } + field(VALC,DBF_NOACCESS) { + prompt("Value of Output C") + special(SPC_DBADDR) + extra("void *valc") + interest(1) + asl(ASL0) + } + field(VALD,DBF_NOACCESS) { + prompt("Value of Output D") + special(SPC_DBADDR) + extra("void *vald") + interest(1) + asl(ASL0) + } + field(VALE,DBF_NOACCESS) { + prompt("Value of Output E") + special(SPC_DBADDR) + extra("void *vale") + interest(1) + asl(ASL0) + } + field(VALF,DBF_NOACCESS) { + prompt("Value of Output F") + special(SPC_DBADDR) + extra("void *valf") + interest(1) + asl(ASL0) + } + field(VALG,DBF_NOACCESS) { + prompt("Value of Output G") + special(SPC_DBADDR) + extra("void *valg") + interest(1) + asl(ASL0) + } + field(VALH,DBF_NOACCESS) { + prompt("Value of Output H") + special(SPC_DBADDR) + extra("void *valh") + interest(1) + asl(ASL0) + } + field(VALI,DBF_NOACCESS) { + prompt("Value of Output I") + special(SPC_DBADDR) + extra("void *vali") + interest(1) + asl(ASL0) + } + field(VALJ,DBF_NOACCESS) { + prompt("Value of Output J") + special(SPC_DBADDR) + extra("void *valj") + interest(1) + asl(ASL0) + } + field(VALK,DBF_NOACCESS) { + prompt("Value of Output K") + special(SPC_DBADDR) + extra("void *valk") + interest(1) + asl(ASL0) + } + field(VALL,DBF_NOACCESS) { + prompt("Value of Output L") + special(SPC_DBADDR) + extra("void *vall") + interest(1) + asl(ASL0) + } + field(VALM,DBF_NOACCESS) { + prompt("Value of Output M") + special(SPC_DBADDR) + extra("void *valm") + interest(1) + asl(ASL0) + } + field(VALN,DBF_NOACCESS) { + prompt("Value of Output N") + special(SPC_DBADDR) + extra("void *valn") + interest(1) + asl(ASL0) + } + field(VALO,DBF_NOACCESS) { + prompt("Value of Output O") + special(SPC_DBADDR) + extra("void *valo") + interest(1) + asl(ASL0) + } + field(VALP,DBF_NOACCESS) { + prompt("Value of Output P") + special(SPC_DBADDR) + extra("void *valp") + interest(1) + asl(ASL0) + } + field(VALQ,DBF_NOACCESS) { + prompt("Value of Output Q") + special(SPC_DBADDR) + extra("void *valq") + interest(1) + asl(ASL0) + } + field(VALR,DBF_NOACCESS) { + prompt("Value of Output R") + special(SPC_DBADDR) + extra("void *valr") + interest(1) + asl(ASL0) + } + field(VALS,DBF_NOACCESS) { + prompt("Value of Output S") + special(SPC_DBADDR) + extra("void *vals") + interest(1) + asl(ASL0) + } + field(VALT,DBF_NOACCESS) { + prompt("Value of Output T") + special(SPC_DBADDR) + extra("void *valt") + interest(1) + asl(ASL0) + } + field(VALU,DBF_NOACCESS) { + prompt("Value of Output U") + special(SPC_DBADDR) + extra("void *valu") + interest(1) + asl(ASL0) + } + field(OVLA,DBF_NOACCESS) { + prompt("Old Output A") + special(SPC_NOMOD) + extra("void *ovla") + interest(1) + asl(ASL0) + } + field(OVLB,DBF_NOACCESS) { + prompt("Old Output B") + special(SPC_NOMOD) + extra("void *ovlb") + interest(1) + asl(ASL0) + } + field(OVLC,DBF_NOACCESS) { + prompt("Old Output C") + special(SPC_NOMOD) + extra("void *ovlc") + interest(1) + asl(ASL0) + } + field(OVLD,DBF_NOACCESS) { + prompt("Old Output D") + special(SPC_NOMOD) + extra("void *ovld") + interest(1) + asl(ASL0) + } + field(OVLE,DBF_NOACCESS) { + prompt("Old Output E") + special(SPC_NOMOD) + extra("void *ovle") + interest(1) + asl(ASL0) + } + field(OVLF,DBF_NOACCESS) { + prompt("Old Output F") + special(SPC_NOMOD) + extra("void *ovlf") + interest(1) + asl(ASL0) + } + field(OVLG,DBF_NOACCESS) { + prompt("Old Output G") + special(SPC_NOMOD) + extra("void *ovlg") + interest(1) + asl(ASL0) + } + field(OVLH,DBF_NOACCESS) { + prompt("Old Output H") + special(SPC_NOMOD) + extra("void *ovlh") + interest(1) + asl(ASL0) + } + field(OVLI,DBF_NOACCESS) { + prompt("Old Output I") + special(SPC_NOMOD) + extra("void *ovli") + interest(1) + asl(ASL0) + } + field(OVLJ,DBF_NOACCESS) { + prompt("Old Output J") + special(SPC_NOMOD) + extra("void *ovlj") + interest(1) + asl(ASL0) + } + field(OVLK,DBF_NOACCESS) { + prompt("Old Output K") + special(SPC_NOMOD) + extra("void *ovlk") + interest(1) + asl(ASL0) + } + field(OVLL,DBF_NOACCESS) { + prompt("Old Output L") + special(SPC_NOMOD) + extra("void *ovll") + interest(1) + asl(ASL0) + } + field(OVLM,DBF_NOACCESS) { + prompt("Old Output M") + special(SPC_NOMOD) + extra("void *ovlm") + interest(1) + asl(ASL0) + } + field(OVLN,DBF_NOACCESS) { + prompt("Old Output N") + special(SPC_NOMOD) + extra("void *ovln") + interest(1) + asl(ASL0) + } + field(OVLO,DBF_NOACCESS) { + prompt("Old Output O") + special(SPC_NOMOD) + extra("void *ovlo") + interest(1) + asl(ASL0) + } + field(OVLP,DBF_NOACCESS) { + prompt("Old Output P") + special(SPC_NOMOD) + extra("void *ovlp") + interest(1) + asl(ASL0) + } + field(OVLQ,DBF_NOACCESS) { + prompt("Old Output Q") + special(SPC_NOMOD) + extra("void *ovlq") + interest(1) + asl(ASL0) + } + field(OVLR,DBF_NOACCESS) { + prompt("Old Output R") + special(SPC_NOMOD) + extra("void *ovlr") + interest(1) + asl(ASL0) + } + field(OVLS,DBF_NOACCESS) { + prompt("Old Output S") + special(SPC_NOMOD) + extra("void *ovls") + interest(1) + asl(ASL0) + } + field(OVLT,DBF_NOACCESS) { + prompt("Old Output T") + special(SPC_NOMOD) + extra("void *ovlt") + interest(1) + asl(ASL0) + } + field(OVLU,DBF_NOACCESS) { + prompt("Old Output U") + special(SPC_NOMOD) + extra("void *ovlu") + interest(1) + asl(ASL0) + } + field(FTVA,DBF_MENU) { + prompt("Type of VALA") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVB,DBF_MENU) { + prompt("Type of VALB") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVC,DBF_MENU) { + prompt("Type of VALC") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVD,DBF_MENU) { + prompt("Type of VALD") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVE,DBF_MENU) { + prompt("Type of VALE") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVF,DBF_MENU) { + prompt("Type of VALF") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVG,DBF_MENU) { + prompt("Type of VALG") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVH,DBF_MENU) { + prompt("Type of VALH") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVI,DBF_MENU) { + prompt("Type of VALI") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVJ,DBF_MENU) { + prompt("Type of VALJ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVK,DBF_MENU) { + prompt("Type of VALK") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVL,DBF_MENU) { + prompt("Type of VALL") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVM,DBF_MENU) { + prompt("Type of VALM") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVN,DBF_MENU) { + prompt("Type of VALN") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVO,DBF_MENU) { + prompt("Type of VALO") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVP,DBF_MENU) { + prompt("Type of VALP") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVQ,DBF_MENU) { + prompt("Type of VALQ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVR,DBF_MENU) { + prompt("Type of VALR") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVS,DBF_MENU) { + prompt("Type of VALS") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVT,DBF_MENU) { + prompt("Type of VALT") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(FTVU,DBF_MENU) { + prompt("Type of VALU") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + menu(menuFtype) + interest(1) + } + field(NOVA,DBF_ULONG) { + prompt("No. in VALA") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVB,DBF_ULONG) { + prompt("No. in VALB") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVC,DBF_ULONG) { + prompt("No. in VALC") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVD,DBF_ULONG) { + prompt("No. in VALD") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVE,DBF_ULONG) { + prompt("No. in VALE") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVF,DBF_ULONG) { + prompt("No. in VALF") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVG,DBF_ULONG) { + prompt("No. in VALG") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVH,DBF_ULONG) { + prompt("No. in VAlH") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVI,DBF_ULONG) { + prompt("No. in VALI") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVJ,DBF_ULONG) { + prompt("No. in VALJ") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVK,DBF_ULONG) { + prompt("No. in VALK") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVL,DBF_ULONG) { + prompt("No. in VALL") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVM,DBF_ULONG) { + prompt("No. in VALM") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVN,DBF_ULONG) { + prompt("No. in VALN") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVO,DBF_ULONG) { + prompt("No. in VALO") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVP,DBF_ULONG) { + prompt("No. in VALP") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVQ,DBF_ULONG) { + prompt("No. in VALQ") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVR,DBF_ULONG) { + prompt("No. in VALR") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVS,DBF_ULONG) { + prompt("No. in VALS") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVT,DBF_ULONG) { + prompt("No. in VALT") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(NOVU,DBF_ULONG) { + prompt("No. in VALU") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVA,DBF_ULONG) { + prompt("Total bytes for VALA") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVB,DBF_ULONG) { + prompt("Total bytes for VALB") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVC,DBF_ULONG) { + prompt("Total bytes for VALC") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVD,DBF_ULONG) { + prompt("Total bytes for VALD") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVE,DBF_ULONG) { + prompt("Total bytes for VALE") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVF,DBF_ULONG) { + prompt("Total bytes for VALF") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVG,DBF_ULONG) { + prompt("Total bytes for VALG") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVH,DBF_ULONG) { + prompt("Total bytes for VAlH") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVI,DBF_ULONG) { + prompt("Total bytes for VALI") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVJ,DBF_ULONG) { + prompt("Total bytes for VALJ") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVK,DBF_ULONG) { + prompt("Total bytes for VALK") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVL,DBF_ULONG) { + prompt("Total bytes for VALL") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVM,DBF_ULONG) { + prompt("Total bytes for VALM") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVN,DBF_ULONG) { + prompt("Total bytes for VALN") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVO,DBF_ULONG) { + prompt("Total bytes for VALO") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVP,DBF_ULONG) { + prompt("Total bytes for VALP") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVQ,DBF_ULONG) { + prompt("Total bytes for VALQ") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVR,DBF_ULONG) { + prompt("Total bytes for VALR") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVS,DBF_ULONG) { + prompt("Total bytes for VALS") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVT,DBF_ULONG) { + prompt("Total bytes for VALT") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } + field(TOVU,DBF_ULONG) { + prompt("Total bytes for VALU") + initial("1") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + } +} +device(ai,CONSTANT,devAiSoft,"Soft Channel") +device(ai,CONSTANT,devAiSoftRaw,"Raw Soft Channel") +device(ao,CONSTANT,devAoSoft,"Soft Channel") +device(ao,CONSTANT,devAoSoftRaw,"Raw Soft Channel") +device(ao,CONSTANT,devAoSoftCallback,"Async Soft Channel") +device(bi,CONSTANT,devBiSoft,"Soft Channel") +device(bi,CONSTANT,devBiSoftRaw,"Raw Soft Channel") +device(bo,CONSTANT,devBoSoft,"Soft Channel") +device(bo,CONSTANT,devBoSoftRaw,"Raw Soft Channel") +device(bo,CONSTANT,devBoSoftCallback,"Async Soft Channel") +device(calcout,CONSTANT,devCalcoutSoft,"Soft Channel") +device(calcout,CONSTANT,devCalcoutSoftCallback,"Async Soft Channel") +device(event,CONSTANT,devEventSoft,"Soft Channel") +device(longin,CONSTANT,devLiSoft,"Soft Channel") +device(longout,CONSTANT,devLoSoft,"Soft Channel") +device(longout,CONSTANT,devLoSoftCallback,"Async Soft Channel") +device(mbbi,CONSTANT,devMbbiSoft,"Soft Channel") +device(mbbi,CONSTANT,devMbbiSoftRaw,"Raw Soft Channel") +device(mbbiDirect,CONSTANT,devMbbiDirectSoft,"Soft Channel") +device(mbbiDirect,CONSTANT,devMbbiDirectSoftRaw,"Raw Soft Channel") +device(mbbo,CONSTANT,devMbboSoft,"Soft Channel") +device(mbbo,CONSTANT,devMbboSoftRaw,"Raw Soft Channel") +device(mbbo,CONSTANT,devMbboSoftCallback,"Async Soft Channel") +device(mbboDirect,CONSTANT,devMbboDirectSoft,"Soft Channel") +device(mbboDirect,CONSTANT,devMbboDirectSoftRaw,"Raw Soft Channel") +device(mbboDirect,CONSTANT,devMbboDirectSoftCallback,"Async Soft Channel") +device(stringin,CONSTANT,devSiSoft,"Soft Channel") +device(stringin,INST_IO,devTimestampSI,"Soft Timestamp") +device(stringout,CONSTANT,devSoSoft,"Soft Channel") +device(stringout,CONSTANT,devSoSoftCallback,"Async Soft Channel") +device(subArray,CONSTANT,devSASoft,"Soft Channel") +device(waveform,CONSTANT,devWfSoft,"Soft Channel") +device(xxx,CONSTANT,devXxxSoft,"SoftChannel") +registrar(asSub) +function(evtbuild_init) +function(evtbuild_proc) +function(genRunId_init) +function(genRunId_proc) +function(writeRunId_init) +function(writeRunId_proc) +variable(asCaDebug,int) +variable(dbRecordsOnceOnly,int) +variable(evtbuildDebug,int) +variable(genrunidDebug,int) +variable(writerunidDebug,int) diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd.depends b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd.depends new file mode 100644 index 0000000..b43649a --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrl.dbd.depends @@ -0,0 +1,51 @@ +# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ + +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/base.dbd +../O.Common/ebctrl.dbd : ../xxxSupport.dbd +../O.Common/ebctrl.dbd : ../genSubRecord.dbd +../O.Common/ebctrl.dbd : ../evtbuild.dbd +../O.Common/ebctrl.dbd : ../genrunid.dbd +../O.Common/ebctrl.dbd : ../writerunid.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuGlobal.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuConvert.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/aiRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/aoRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/biRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/boRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/calcRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/calcoutRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/compressRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/dfanoutRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/eventRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/fanoutRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/longinRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/longoutRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbbiRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbbiDirectRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbboRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/mbboDirectRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/permissiveRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/selRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/seqRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/stateRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/stringinRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/stringoutRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/subRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/subArrayRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/waveformRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/devSoft.dbd +../O.Common/ebctrl.dbd : ../xxxRecord.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/dbCommon.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuAlarmSevr.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuAlarmStat.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuArrType.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuCompress.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuFtype.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuIvoa.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuOmsl.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuPriority.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuScan.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuYesNo.dbd +../O.Common/ebctrl.dbd : /home/scs/base-3.14.9/dbd/menuSimm.dbd + + diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrlInclude.dbd b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrlInclude.dbd new file mode 100644 index 0000000..6032334 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.Common/ebctrlInclude.dbd @@ -0,0 +1,6 @@ +include "base.dbd" +include "xxxSupport.dbd" +include "genSubRecord.dbd" +include "evtbuild.dbd" +include "genrunid.dbd" +include "writerunid.dbd" diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/genSubRecord.h b/ebctrl/ioc/ebctrlApp/src/O.Common/genSubRecord.h new file mode 100644 index 0000000..857cb7c --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.Common/genSubRecord.h @@ -0,0 +1,1275 @@ +#include "ellLib.h" +#include "epicsMutex.h" +#include "link.h" +#include "epicsTime.h" +#include "epicsTypes.h" + +#ifndef INCgenSubLFLGH +#define INCgenSubLFLGH +typedef enum { + genSubLFLG_IGNORE, + genSubLFLG_READ +}genSubLFLG; +#endif /*INCgenSubLFLGH*/ + +#ifndef INCgenSubEFLGH +#define INCgenSubEFLGH +typedef enum { + genSubEFLG_NEVER, + genSubEFLG_ON_CHANGE, + genSubEFLG_ALWAYS +}genSubEFLG; +#endif /*INCgenSubEFLGH*/ +#ifndef INCgenSubH +#define INCgenSubH +typedef struct genSubRecord { + char name[61]; /*Record Name*/ + char desc[29]; /*Descriptor*/ + char asg[29]; /*Access Security Group*/ + epicsEnum16 scan; /*Scan Mechanism*/ + epicsEnum16 pini; /*Process at iocInit*/ + short phas; /*Scan Phase*/ + short evnt; /*Event Number*/ + short tse; /*Time Stamp Event*/ + DBLINK tsel; /*Time Stamp Link*/ + epicsEnum16 dtyp; /*Device Type*/ + short disv; /*Disable Value*/ + short disa; /*Disable*/ + DBLINK sdis; /*Scanning Disable*/ + epicsMutexId mlok; /*Monitor lock*/ + ELLLIST mlis; /*Monitor List*/ + unsigned char disp; /*Disable putField*/ + unsigned char proc; /*Force Processing*/ + epicsEnum16 stat; /*Alarm Status*/ + epicsEnum16 sevr; /*Alarm Severity*/ + epicsEnum16 nsta; /*New Alarm Status*/ + epicsEnum16 nsev; /*New Alarm Severity*/ + epicsEnum16 acks; /*Alarm Ack Severity*/ + epicsEnum16 ackt; /*Alarm Ack Transient*/ + epicsEnum16 diss; /*Disable Alarm Sevrty*/ + unsigned char lcnt; /*Lock Count*/ + unsigned char pact; /*Record active*/ + unsigned char putf; /*dbPutField process*/ + unsigned char rpro; /*Reprocess */ + void *asp; /*Access Security Pvt*/ + struct putNotify *ppn; /*addr of PUTNOTIFY*/ + struct putNotifyRecord *ppnr; /*pputNotifyRecord*/ + struct scan_element *spvt; /*Scan Private*/ + struct rset *rset; /*Address of RSET*/ + struct dset *dset; /*DSET address*/ + void *dpvt; /*Device Private*/ + struct dbRecordType *rdes; /*Address of dbRecordType*/ + struct lockRecord *lset; /*Lock Set*/ + epicsEnum16 prio; /*Scheduling Priority*/ + unsigned char tpro; /*Trace Processing*/ + char bkpt; /*Break Point*/ + unsigned char udf; /*Undefined*/ + epicsTimeStamp time; /*Time*/ + DBLINK flnk; /*Forward Process Link*/ + double vers; /*Version Number*/ + epicsInt32 val; /*Subr. return value*/ + epicsInt32 oval; /*Old return value*/ + epicsInt32 sadr; /*Subroutine Address*/ + epicsInt32 osad; /*Old Subr. Address*/ + epicsEnum16 lflg; /*Link Flag*/ + epicsEnum16 eflg; /*Event Flag*/ + DBLINK subl; /*Subroutine Input Link*/ + char inam[40]; /*Init Routine Name*/ + char snam[40]; /*Process Subr. Name*/ + char onam[40]; /*Old Subroutine Name*/ + epicsEnum16 brsv; /*Bad Return Severity*/ + short prec; /*Display Precision*/ + DBLINK inpa; /*Input Link A*/ + DBLINK inpb; /*Input Link B*/ + DBLINK inpc; /*Input Link C*/ + DBLINK inpd; /*Input Link D*/ + DBLINK inpe; /*Input Link E*/ + DBLINK inpf; /*Input Link F*/ + DBLINK inpg; /*Input Link G*/ + DBLINK inph; /*Input Link H*/ + DBLINK inpi; /*Input Link I*/ + DBLINK inpj; /*Input Link J*/ + DBLINK inpk; /*Input Link K*/ + DBLINK inpl; /*Input Link L*/ + DBLINK inpm; /*Input Link M*/ + DBLINK inpn; /*Input Link N*/ + DBLINK inpo; /*Input Link O*/ + DBLINK inpp; /*Input Link P*/ + DBLINK inpq; /*Input Link Q*/ + DBLINK inpr; /*Input Link R*/ + DBLINK inps; /*Input Link S*/ + DBLINK inpt; /*Input Link T*/ + DBLINK inpu; /*Input Link U*/ + char ufa[40]; /*Input Structure A*/ + char ufb[40]; /*Input Structure B*/ + char ufc[40]; /*Input Structure C*/ + char ufd[40]; /*Input Structure D*/ + char ufe[40]; /*Input Structure E*/ + char uff[40]; /*Input Structure F*/ + char ufg[40]; /*Input Structure G*/ + char ufh[40]; /*Input Structure H*/ + char ufi[40]; /*Input Structure I*/ + char ufj[40]; /*Input Structure J*/ + char ufk[40]; /*Input Structure K*/ + char ufl[40]; /*Input Structure L*/ + char ufm[40]; /*Input Structure M*/ + char ufn[40]; /*Input Structure N*/ + char ufo[40]; /*Input Structure O*/ + char ufp[40]; /*Input Structure P*/ + char ufq[40]; /*Input Structure Q*/ + char ufr[40]; /*Input Structure R*/ + char ufs[40]; /*Input Structure S*/ + char uft[40]; /*Input Structure T*/ + char ufu[40]; /*Input Structure U*/ + void *a; /*Value of Input A*/ + void *b; /*Value of Input B*/ + void *c; /*Value of Input C*/ + void *d; /*Value of Input D*/ + void *e; /*Value of Input E*/ + void *f; /*Value of Input F*/ + void *g; /*Value of Input G*/ + void *h; /*Value of Input H*/ + void *i; /*Value of Input I*/ + void *j; /*Value of Input J*/ + void *k; /*Value of Input K*/ + void *l; /*Value of Input L*/ + void *m; /*Value of Input M*/ + void *n; /*Value of Input N*/ + void *o; /*Value of Input O*/ + void *p; /*Value of Input P*/ + void *q; /*Value of Input Q*/ + void *r; /*Value of Input R*/ + void *s; /*Value of Input S*/ + void *t; /*Value of Input T*/ + void *u; /*Value of Input U*/ + epicsEnum16 fta; /*Type of A*/ + epicsEnum16 ftb; /*Type of B*/ + epicsEnum16 ftc; /*Type of C*/ + epicsEnum16 ftd; /*Type of D*/ + epicsEnum16 fte; /*Type of E*/ + epicsEnum16 ftf; /*Type of F*/ + epicsEnum16 ftg; /*Type of G*/ + epicsEnum16 fth; /*Type of H*/ + epicsEnum16 fti; /*Type of I*/ + epicsEnum16 ftj; /*Type of J*/ + epicsEnum16 ftk; /*Type of K*/ + epicsEnum16 ftl; /*Type of L*/ + epicsEnum16 ftm; /*Type of M*/ + epicsEnum16 ftn; /*Type of N*/ + epicsEnum16 fto; /*Type of O*/ + epicsEnum16 ftp; /*Type of P*/ + epicsEnum16 ftq; /*Type of Q*/ + epicsEnum16 ftr; /*Type of R*/ + epicsEnum16 fts; /*Type of S*/ + epicsEnum16 ftt; /*Type of T*/ + epicsEnum16 ftu; /*Type of U*/ + unsigned long noa; /*No. in A*/ + unsigned long nob; /*No. in B*/ + unsigned long noc; /*No. in C*/ + unsigned long nod; /*No. in D*/ + unsigned long noe; /*No. in E*/ + unsigned long nof; /*No. in F*/ + unsigned long nog; /*No. in G*/ + unsigned long noh; /*No. in H*/ + unsigned long noi; /*No. in I*/ + unsigned long noj; /*No. in J*/ + unsigned long nok; /*No. in K*/ + unsigned long nol; /*No. in L*/ + unsigned long nom; /*No. in M*/ + unsigned long non; /*No. in N*/ + unsigned long noo; /*No. in O*/ + unsigned long nop; /*No. in P*/ + unsigned long noq; /*No. in Q*/ + unsigned long nor; /*No. in R*/ + unsigned long nos; /*No. in S*/ + unsigned long not; /*No. in T*/ + unsigned long nou; /*No. in U*/ + DBLINK outa; /*Output Link A*/ + DBLINK outb; /*Output Link B*/ + DBLINK outc; /*Output Link C*/ + DBLINK outd; /*Output Link D*/ + DBLINK oute; /*Output Link E*/ + DBLINK outf; /*Output Link F*/ + DBLINK outg; /*Output Link G*/ + DBLINK outh; /*Output Link H*/ + DBLINK outi; /*Output Link I*/ + DBLINK outj; /*Output Link J*/ + DBLINK outk; /*Output Link K*/ + DBLINK outl; /*Output Link L*/ + DBLINK outm; /*Output Link M*/ + DBLINK outn; /*Output Link N*/ + DBLINK outo; /*Output Link O*/ + DBLINK outp; /*Output Link P*/ + DBLINK outq; /*Output Link Q*/ + DBLINK outr; /*Output Link R*/ + DBLINK outs; /*Output Link S*/ + DBLINK outt; /*Output Link T*/ + DBLINK outu; /*Output Link U*/ + char ufva[40]; /*Output Structure A*/ + char ufvb[40]; /*Output Structure B*/ + char ufvc[40]; /*Output Structure C*/ + char ufvd[40]; /*Output Structure D*/ + char ufve[40]; /*Output Structure E*/ + char ufvf[40]; /*Output Structure F*/ + char ufvg[40]; /*Output Structure G*/ + char ufvh[40]; /*Output Structure H*/ + char ufvi[40]; /*Output Structure I*/ + char ufvj[40]; /*Output Structure J*/ + char ufvk[40]; /*Output Structure K*/ + char ufvl[40]; /*Output Structure L*/ + char ufvm[40]; /*Output Structure M*/ + char ufvn[40]; /*Output Structure N*/ + char ufvo[40]; /*Output Structure O*/ + char ufvp[40]; /*Output Structure P*/ + char ufvq[40]; /*Output Structure Q*/ + char ufvr[40]; /*Output Structure R*/ + char ufvs[40]; /*Output Structure S*/ + char ufvt[40]; /*Output Structure T*/ + char ufvu[40]; /*Output Structure U*/ + void *vala; /*Value of Output A*/ + void *valb; /*Value of Output B*/ + void *valc; /*Value of Output C*/ + void *vald; /*Value of Output D*/ + void *vale; /*Value of Output E*/ + void *valf; /*Value of Output F*/ + void *valg; /*Value of Output G*/ + void *valh; /*Value of Output H*/ + void *vali; /*Value of Output I*/ + void *valj; /*Value of Output J*/ + void *valk; /*Value of Output K*/ + void *vall; /*Value of Output L*/ + void *valm; /*Value of Output M*/ + void *valn; /*Value of Output N*/ + void *valo; /*Value of Output O*/ + void *valp; /*Value of Output P*/ + void *valq; /*Value of Output Q*/ + void *valr; /*Value of Output R*/ + void *vals; /*Value of Output S*/ + void *valt; /*Value of Output T*/ + void *valu; /*Value of Output U*/ + void *ovla; /*Old Output A*/ + void *ovlb; /*Old Output B*/ + void *ovlc; /*Old Output C*/ + void *ovld; /*Old Output D*/ + void *ovle; /*Old Output E*/ + void *ovlf; /*Old Output F*/ + void *ovlg; /*Old Output G*/ + void *ovlh; /*Old Output H*/ + void *ovli; /*Old Output I*/ + void *ovlj; /*Old Output J*/ + void *ovlk; /*Old Output K*/ + void *ovll; /*Old Output L*/ + void *ovlm; /*Old Output M*/ + void *ovln; /*Old Output N*/ + void *ovlo; /*Old Output O*/ + void *ovlp; /*Old Output P*/ + void *ovlq; /*Old Output Q*/ + void *ovlr; /*Old Output R*/ + void *ovls; /*Old Output S*/ + void *ovlt; /*Old Output T*/ + void *ovlu; /*Old Output U*/ + epicsEnum16 ftva; /*Type of VALA*/ + epicsEnum16 ftvb; /*Type of VALB*/ + epicsEnum16 ftvc; /*Type of VALC*/ + epicsEnum16 ftvd; /*Type of VALD*/ + epicsEnum16 ftve; /*Type of VALE*/ + epicsEnum16 ftvf; /*Type of VALF*/ + epicsEnum16 ftvg; /*Type of VALG*/ + epicsEnum16 ftvh; /*Type of VALH*/ + epicsEnum16 ftvi; /*Type of VALI*/ + epicsEnum16 ftvj; /*Type of VALJ*/ + epicsEnum16 ftvk; /*Type of VALK*/ + epicsEnum16 ftvl; /*Type of VALL*/ + epicsEnum16 ftvm; /*Type of VALM*/ + epicsEnum16 ftvn; /*Type of VALN*/ + epicsEnum16 ftvo; /*Type of VALO*/ + epicsEnum16 ftvp; /*Type of VALP*/ + epicsEnum16 ftvq; /*Type of VALQ*/ + epicsEnum16 ftvr; /*Type of VALR*/ + epicsEnum16 ftvs; /*Type of VALS*/ + epicsEnum16 ftvt; /*Type of VALT*/ + epicsEnum16 ftvu; /*Type of VALU*/ + unsigned long nova; /*No. in VALA*/ + unsigned long novb; /*No. in VALB*/ + unsigned long novc; /*No. in VALC*/ + unsigned long novd; /*No. in VALD*/ + unsigned long nove; /*No. in VALE*/ + unsigned long novf; /*No. in VALF*/ + unsigned long novg; /*No. in VALG*/ + unsigned long novh; /*No. in VAlH*/ + unsigned long novi; /*No. in VALI*/ + unsigned long novj; /*No. in VALJ*/ + unsigned long novk; /*No. in VALK*/ + unsigned long novl; /*No. in VALL*/ + unsigned long novm; /*No. in VALM*/ + unsigned long novn; /*No. in VALN*/ + unsigned long novo; /*No. in VALO*/ + unsigned long novp; /*No. in VALP*/ + unsigned long novq; /*No. in VALQ*/ + unsigned long novr; /*No. in VALR*/ + unsigned long novs; /*No. in VALS*/ + unsigned long novt; /*No. in VALT*/ + unsigned long novu; /*No. in VALU*/ + unsigned long tova; /*Total bytes for VALA*/ + unsigned long tovb; /*Total bytes for VALB*/ + unsigned long tovc; /*Total bytes for VALC*/ + unsigned long tovd; /*Total bytes for VALD*/ + unsigned long tove; /*Total bytes for VALE*/ + unsigned long tovf; /*Total bytes for VALF*/ + unsigned long tovg; /*Total bytes for VALG*/ + unsigned long tovh; /*Total bytes for VAlH*/ + unsigned long tovi; /*Total bytes for VALI*/ + unsigned long tovj; /*Total bytes for VALJ*/ + unsigned long tovk; /*Total bytes for VALK*/ + unsigned long tovl; /*Total bytes for VALL*/ + unsigned long tovm; /*Total bytes for VALM*/ + unsigned long tovn; /*Total bytes for VALN*/ + unsigned long tovo; /*Total bytes for VALO*/ + unsigned long tovp; /*Total bytes for VALP*/ + unsigned long tovq; /*Total bytes for VALQ*/ + unsigned long tovr; /*Total bytes for VALR*/ + unsigned long tovs; /*Total bytes for VALS*/ + unsigned long tovt; /*Total bytes for VALT*/ + unsigned long tovu; /*Total bytes for VALU*/ +} genSubRecord; +#define genSubRecordNAME 0 +#define genSubRecordDESC 1 +#define genSubRecordASG 2 +#define genSubRecordSCAN 3 +#define genSubRecordPINI 4 +#define genSubRecordPHAS 5 +#define genSubRecordEVNT 6 +#define genSubRecordTSE 7 +#define genSubRecordTSEL 8 +#define genSubRecordDTYP 9 +#define genSubRecordDISV 10 +#define genSubRecordDISA 11 +#define genSubRecordSDIS 12 +#define genSubRecordMLOK 13 +#define genSubRecordMLIS 14 +#define genSubRecordDISP 15 +#define genSubRecordPROC 16 +#define genSubRecordSTAT 17 +#define genSubRecordSEVR 18 +#define genSubRecordNSTA 19 +#define genSubRecordNSEV 20 +#define genSubRecordACKS 21 +#define genSubRecordACKT 22 +#define genSubRecordDISS 23 +#define genSubRecordLCNT 24 +#define genSubRecordPACT 25 +#define genSubRecordPUTF 26 +#define genSubRecordRPRO 27 +#define genSubRecordASP 28 +#define genSubRecordPPN 29 +#define genSubRecordPPNR 30 +#define genSubRecordSPVT 31 +#define genSubRecordRSET 32 +#define genSubRecordDSET 33 +#define genSubRecordDPVT 34 +#define genSubRecordRDES 35 +#define genSubRecordLSET 36 +#define genSubRecordPRIO 37 +#define genSubRecordTPRO 38 +#define genSubRecordBKPT 39 +#define genSubRecordUDF 40 +#define genSubRecordTIME 41 +#define genSubRecordFLNK 42 +#define genSubRecordVERS 43 +#define genSubRecordVAL 44 +#define genSubRecordOVAL 45 +#define genSubRecordSADR 46 +#define genSubRecordOSAD 47 +#define genSubRecordLFLG 48 +#define genSubRecordEFLG 49 +#define genSubRecordSUBL 50 +#define genSubRecordINAM 51 +#define genSubRecordSNAM 52 +#define genSubRecordONAM 53 +#define genSubRecordBRSV 54 +#define genSubRecordPREC 55 +#define genSubRecordINPA 56 +#define genSubRecordINPB 57 +#define genSubRecordINPC 58 +#define genSubRecordINPD 59 +#define genSubRecordINPE 60 +#define genSubRecordINPF 61 +#define genSubRecordINPG 62 +#define genSubRecordINPH 63 +#define genSubRecordINPI 64 +#define genSubRecordINPJ 65 +#define genSubRecordINPK 66 +#define genSubRecordINPL 67 +#define genSubRecordINPM 68 +#define genSubRecordINPN 69 +#define genSubRecordINPO 70 +#define genSubRecordINPP 71 +#define genSubRecordINPQ 72 +#define genSubRecordINPR 73 +#define genSubRecordINPS 74 +#define genSubRecordINPT 75 +#define genSubRecordINPU 76 +#define genSubRecordUFA 77 +#define genSubRecordUFB 78 +#define genSubRecordUFC 79 +#define genSubRecordUFD 80 +#define genSubRecordUFE 81 +#define genSubRecordUFF 82 +#define genSubRecordUFG 83 +#define genSubRecordUFH 84 +#define genSubRecordUFI 85 +#define genSubRecordUFJ 86 +#define genSubRecordUFK 87 +#define genSubRecordUFL 88 +#define genSubRecordUFM 89 +#define genSubRecordUFN 90 +#define genSubRecordUFO 91 +#define genSubRecordUFP 92 +#define genSubRecordUFQ 93 +#define genSubRecordUFR 94 +#define genSubRecordUFS 95 +#define genSubRecordUFT 96 +#define genSubRecordUFU 97 +#define genSubRecordA 98 +#define genSubRecordB 99 +#define genSubRecordC 100 +#define genSubRecordD 101 +#define genSubRecordE 102 +#define genSubRecordF 103 +#define genSubRecordG 104 +#define genSubRecordH 105 +#define genSubRecordI 106 +#define genSubRecordJ 107 +#define genSubRecordK 108 +#define genSubRecordL 109 +#define genSubRecordM 110 +#define genSubRecordN 111 +#define genSubRecordO 112 +#define genSubRecordP 113 +#define genSubRecordQ 114 +#define genSubRecordR 115 +#define genSubRecordS 116 +#define genSubRecordT 117 +#define genSubRecordU 118 +#define genSubRecordFTA 119 +#define genSubRecordFTB 120 +#define genSubRecordFTC 121 +#define genSubRecordFTD 122 +#define genSubRecordFTE 123 +#define genSubRecordFTF 124 +#define genSubRecordFTG 125 +#define genSubRecordFTH 126 +#define genSubRecordFTI 127 +#define genSubRecordFTJ 128 +#define genSubRecordFTK 129 +#define genSubRecordFTL 130 +#define genSubRecordFTM 131 +#define genSubRecordFTN 132 +#define genSubRecordFTO 133 +#define genSubRecordFTP 134 +#define genSubRecordFTQ 135 +#define genSubRecordFTR 136 +#define genSubRecordFTS 137 +#define genSubRecordFTT 138 +#define genSubRecordFTU 139 +#define genSubRecordNOA 140 +#define genSubRecordNOB 141 +#define genSubRecordNOC 142 +#define genSubRecordNOD 143 +#define genSubRecordNOE 144 +#define genSubRecordNOF 145 +#define genSubRecordNOG 146 +#define genSubRecordNOH 147 +#define genSubRecordNOI 148 +#define genSubRecordNOJ 149 +#define genSubRecordNOK 150 +#define genSubRecordNOL 151 +#define genSubRecordNOM 152 +#define genSubRecordNON 153 +#define genSubRecordNOO 154 +#define genSubRecordNOP 155 +#define genSubRecordNOQ 156 +#define genSubRecordNOR 157 +#define genSubRecordNOS 158 +#define genSubRecordNOT 159 +#define genSubRecordNOU 160 +#define genSubRecordOUTA 161 +#define genSubRecordOUTB 162 +#define genSubRecordOUTC 163 +#define genSubRecordOUTD 164 +#define genSubRecordOUTE 165 +#define genSubRecordOUTF 166 +#define genSubRecordOUTG 167 +#define genSubRecordOUTH 168 +#define genSubRecordOUTI 169 +#define genSubRecordOUTJ 170 +#define genSubRecordOUTK 171 +#define genSubRecordOUTL 172 +#define genSubRecordOUTM 173 +#define genSubRecordOUTN 174 +#define genSubRecordOUTO 175 +#define genSubRecordOUTP 176 +#define genSubRecordOUTQ 177 +#define genSubRecordOUTR 178 +#define genSubRecordOUTS 179 +#define genSubRecordOUTT 180 +#define genSubRecordOUTU 181 +#define genSubRecordUFVA 182 +#define genSubRecordUFVB 183 +#define genSubRecordUFVC 184 +#define genSubRecordUFVD 185 +#define genSubRecordUFVE 186 +#define genSubRecordUFVF 187 +#define genSubRecordUFVG 188 +#define genSubRecordUFVH 189 +#define genSubRecordUFVI 190 +#define genSubRecordUFVJ 191 +#define genSubRecordUFVK 192 +#define genSubRecordUFVL 193 +#define genSubRecordUFVM 194 +#define genSubRecordUFVN 195 +#define genSubRecordUFVO 196 +#define genSubRecordUFVP 197 +#define genSubRecordUFVQ 198 +#define genSubRecordUFVR 199 +#define genSubRecordUFVS 200 +#define genSubRecordUFVT 201 +#define genSubRecordUFVU 202 +#define genSubRecordVALA 203 +#define genSubRecordVALB 204 +#define genSubRecordVALC 205 +#define genSubRecordVALD 206 +#define genSubRecordVALE 207 +#define genSubRecordVALF 208 +#define genSubRecordVALG 209 +#define genSubRecordVALH 210 +#define genSubRecordVALI 211 +#define genSubRecordVALJ 212 +#define genSubRecordVALK 213 +#define genSubRecordVALL 214 +#define genSubRecordVALM 215 +#define genSubRecordVALN 216 +#define genSubRecordVALO 217 +#define genSubRecordVALP 218 +#define genSubRecordVALQ 219 +#define genSubRecordVALR 220 +#define genSubRecordVALS 221 +#define genSubRecordVALT 222 +#define genSubRecordVALU 223 +#define genSubRecordOVLA 224 +#define genSubRecordOVLB 225 +#define genSubRecordOVLC 226 +#define genSubRecordOVLD 227 +#define genSubRecordOVLE 228 +#define genSubRecordOVLF 229 +#define genSubRecordOVLG 230 +#define genSubRecordOVLH 231 +#define genSubRecordOVLI 232 +#define genSubRecordOVLJ 233 +#define genSubRecordOVLK 234 +#define genSubRecordOVLL 235 +#define genSubRecordOVLM 236 +#define genSubRecordOVLN 237 +#define genSubRecordOVLO 238 +#define genSubRecordOVLP 239 +#define genSubRecordOVLQ 240 +#define genSubRecordOVLR 241 +#define genSubRecordOVLS 242 +#define genSubRecordOVLT 243 +#define genSubRecordOVLU 244 +#define genSubRecordFTVA 245 +#define genSubRecordFTVB 246 +#define genSubRecordFTVC 247 +#define genSubRecordFTVD 248 +#define genSubRecordFTVE 249 +#define genSubRecordFTVF 250 +#define genSubRecordFTVG 251 +#define genSubRecordFTVH 252 +#define genSubRecordFTVI 253 +#define genSubRecordFTVJ 254 +#define genSubRecordFTVK 255 +#define genSubRecordFTVL 256 +#define genSubRecordFTVM 257 +#define genSubRecordFTVN 258 +#define genSubRecordFTVO 259 +#define genSubRecordFTVP 260 +#define genSubRecordFTVQ 261 +#define genSubRecordFTVR 262 +#define genSubRecordFTVS 263 +#define genSubRecordFTVT 264 +#define genSubRecordFTVU 265 +#define genSubRecordNOVA 266 +#define genSubRecordNOVB 267 +#define genSubRecordNOVC 268 +#define genSubRecordNOVD 269 +#define genSubRecordNOVE 270 +#define genSubRecordNOVF 271 +#define genSubRecordNOVG 272 +#define genSubRecordNOVH 273 +#define genSubRecordNOVI 274 +#define genSubRecordNOVJ 275 +#define genSubRecordNOVK 276 +#define genSubRecordNOVL 277 +#define genSubRecordNOVM 278 +#define genSubRecordNOVN 279 +#define genSubRecordNOVO 280 +#define genSubRecordNOVP 281 +#define genSubRecordNOVQ 282 +#define genSubRecordNOVR 283 +#define genSubRecordNOVS 284 +#define genSubRecordNOVT 285 +#define genSubRecordNOVU 286 +#define genSubRecordTOVA 287 +#define genSubRecordTOVB 288 +#define genSubRecordTOVC 289 +#define genSubRecordTOVD 290 +#define genSubRecordTOVE 291 +#define genSubRecordTOVF 292 +#define genSubRecordTOVG 293 +#define genSubRecordTOVH 294 +#define genSubRecordTOVI 295 +#define genSubRecordTOVJ 296 +#define genSubRecordTOVK 297 +#define genSubRecordTOVL 298 +#define genSubRecordTOVM 299 +#define genSubRecordTOVN 300 +#define genSubRecordTOVO 301 +#define genSubRecordTOVP 302 +#define genSubRecordTOVQ 303 +#define genSubRecordTOVR 304 +#define genSubRecordTOVS 305 +#define genSubRecordTOVT 306 +#define genSubRecordTOVU 307 +#endif /*INCgenSubH*/ +#ifdef GEN_SIZE_OFFSET +#ifdef __cplusplus +extern "C" { +#endif +#include +static int genSubRecordSizeOffset(dbRecordType *pdbRecordType) +{ + genSubRecord *prec = 0; + pdbRecordType->papFldDes[0]->size=sizeof(prec->name); + pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec); + pdbRecordType->papFldDes[1]->size=sizeof(prec->desc); + pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec); + pdbRecordType->papFldDes[2]->size=sizeof(prec->asg); + pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec); + pdbRecordType->papFldDes[3]->size=sizeof(prec->scan); + pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec); + pdbRecordType->papFldDes[4]->size=sizeof(prec->pini); + pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec); + pdbRecordType->papFldDes[5]->size=sizeof(prec->phas); + pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec); + pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt); + pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec); + pdbRecordType->papFldDes[7]->size=sizeof(prec->tse); + pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec); + pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel); + pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec); + pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp); + pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec); + pdbRecordType->papFldDes[10]->size=sizeof(prec->disv); + pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec); + pdbRecordType->papFldDes[11]->size=sizeof(prec->disa); + pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec); + pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis); + pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec); + pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok); + pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec); + pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis); + pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec); + pdbRecordType->papFldDes[15]->size=sizeof(prec->disp); + pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec); + pdbRecordType->papFldDes[16]->size=sizeof(prec->proc); + pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec); + pdbRecordType->papFldDes[17]->size=sizeof(prec->stat); + pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec); + pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr); + pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec); + pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta); + pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec); + pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev); + pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec); + pdbRecordType->papFldDes[21]->size=sizeof(prec->acks); + pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec); + pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt); + pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec); + pdbRecordType->papFldDes[23]->size=sizeof(prec->diss); + pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec); + pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt); + pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec); + pdbRecordType->papFldDes[25]->size=sizeof(prec->pact); + pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec); + pdbRecordType->papFldDes[26]->size=sizeof(prec->putf); + pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec); + pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro); + pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec); + pdbRecordType->papFldDes[28]->size=sizeof(prec->asp); + pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec); + pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn); + pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec); + pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr); + pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec); + pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt); + pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec); + pdbRecordType->papFldDes[32]->size=sizeof(prec->rset); + pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec); + pdbRecordType->papFldDes[33]->size=sizeof(prec->dset); + pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec); + pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt); + pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec); + pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes); + pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec); + pdbRecordType->papFldDes[36]->size=sizeof(prec->lset); + pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec); + pdbRecordType->papFldDes[37]->size=sizeof(prec->prio); + pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec); + pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro); + pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec); + pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt); + pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec); + pdbRecordType->papFldDes[40]->size=sizeof(prec->udf); + pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec); + pdbRecordType->papFldDes[41]->size=sizeof(prec->time); + pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec); + pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk); + pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec); + pdbRecordType->papFldDes[43]->size=sizeof(prec->vers); + pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->vers - (char *)prec); + pdbRecordType->papFldDes[44]->size=sizeof(prec->val); + pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->val - (char *)prec); + pdbRecordType->papFldDes[45]->size=sizeof(prec->oval); + pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->oval - (char *)prec); + pdbRecordType->papFldDes[46]->size=sizeof(prec->sadr); + pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->sadr - (char *)prec); + pdbRecordType->papFldDes[47]->size=sizeof(prec->osad); + pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->osad - (char *)prec); + pdbRecordType->papFldDes[48]->size=sizeof(prec->lflg); + pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lflg - (char *)prec); + pdbRecordType->papFldDes[49]->size=sizeof(prec->eflg); + pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->eflg - (char *)prec); + pdbRecordType->papFldDes[50]->size=sizeof(prec->subl); + pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->subl - (char *)prec); + pdbRecordType->papFldDes[51]->size=sizeof(prec->inam); + pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->inam - (char *)prec); + pdbRecordType->papFldDes[52]->size=sizeof(prec->snam); + pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->snam - (char *)prec); + pdbRecordType->papFldDes[53]->size=sizeof(prec->onam); + pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->onam - (char *)prec); + pdbRecordType->papFldDes[54]->size=sizeof(prec->brsv); + pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->brsv - (char *)prec); + pdbRecordType->papFldDes[55]->size=sizeof(prec->prec); + pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->prec - (char *)prec); + pdbRecordType->papFldDes[56]->size=sizeof(prec->inpa); + pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->inpa - (char *)prec); + pdbRecordType->papFldDes[57]->size=sizeof(prec->inpb); + pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->inpb - (char *)prec); + pdbRecordType->papFldDes[58]->size=sizeof(prec->inpc); + pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->inpc - (char *)prec); + pdbRecordType->papFldDes[59]->size=sizeof(prec->inpd); + pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->inpd - (char *)prec); + pdbRecordType->papFldDes[60]->size=sizeof(prec->inpe); + pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->inpe - (char *)prec); + pdbRecordType->papFldDes[61]->size=sizeof(prec->inpf); + pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->inpf - (char *)prec); + pdbRecordType->papFldDes[62]->size=sizeof(prec->inpg); + pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->inpg - (char *)prec); + pdbRecordType->papFldDes[63]->size=sizeof(prec->inph); + pdbRecordType->papFldDes[63]->offset=(short)((char *)&prec->inph - (char *)prec); + pdbRecordType->papFldDes[64]->size=sizeof(prec->inpi); + pdbRecordType->papFldDes[64]->offset=(short)((char *)&prec->inpi - (char *)prec); + pdbRecordType->papFldDes[65]->size=sizeof(prec->inpj); + pdbRecordType->papFldDes[65]->offset=(short)((char *)&prec->inpj - (char *)prec); + pdbRecordType->papFldDes[66]->size=sizeof(prec->inpk); + pdbRecordType->papFldDes[66]->offset=(short)((char *)&prec->inpk - (char *)prec); + pdbRecordType->papFldDes[67]->size=sizeof(prec->inpl); + pdbRecordType->papFldDes[67]->offset=(short)((char *)&prec->inpl - (char *)prec); + pdbRecordType->papFldDes[68]->size=sizeof(prec->inpm); + pdbRecordType->papFldDes[68]->offset=(short)((char *)&prec->inpm - (char *)prec); + pdbRecordType->papFldDes[69]->size=sizeof(prec->inpn); + pdbRecordType->papFldDes[69]->offset=(short)((char *)&prec->inpn - (char *)prec); + pdbRecordType->papFldDes[70]->size=sizeof(prec->inpo); + pdbRecordType->papFldDes[70]->offset=(short)((char *)&prec->inpo - (char *)prec); + pdbRecordType->papFldDes[71]->size=sizeof(prec->inpp); + pdbRecordType->papFldDes[71]->offset=(short)((char *)&prec->inpp - (char *)prec); + pdbRecordType->papFldDes[72]->size=sizeof(prec->inpq); + pdbRecordType->papFldDes[72]->offset=(short)((char *)&prec->inpq - (char *)prec); + pdbRecordType->papFldDes[73]->size=sizeof(prec->inpr); + pdbRecordType->papFldDes[73]->offset=(short)((char *)&prec->inpr - (char *)prec); + pdbRecordType->papFldDes[74]->size=sizeof(prec->inps); + pdbRecordType->papFldDes[74]->offset=(short)((char *)&prec->inps - (char *)prec); + pdbRecordType->papFldDes[75]->size=sizeof(prec->inpt); + pdbRecordType->papFldDes[75]->offset=(short)((char *)&prec->inpt - (char *)prec); + pdbRecordType->papFldDes[76]->size=sizeof(prec->inpu); + pdbRecordType->papFldDes[76]->offset=(short)((char *)&prec->inpu - (char *)prec); + pdbRecordType->papFldDes[77]->size=sizeof(prec->ufa); + pdbRecordType->papFldDes[77]->offset=(short)((char *)&prec->ufa - (char *)prec); + pdbRecordType->papFldDes[78]->size=sizeof(prec->ufb); + pdbRecordType->papFldDes[78]->offset=(short)((char *)&prec->ufb - (char *)prec); + pdbRecordType->papFldDes[79]->size=sizeof(prec->ufc); + pdbRecordType->papFldDes[79]->offset=(short)((char *)&prec->ufc - (char *)prec); + pdbRecordType->papFldDes[80]->size=sizeof(prec->ufd); + pdbRecordType->papFldDes[80]->offset=(short)((char *)&prec->ufd - (char *)prec); + pdbRecordType->papFldDes[81]->size=sizeof(prec->ufe); + pdbRecordType->papFldDes[81]->offset=(short)((char *)&prec->ufe - (char *)prec); + pdbRecordType->papFldDes[82]->size=sizeof(prec->uff); + pdbRecordType->papFldDes[82]->offset=(short)((char *)&prec->uff - (char *)prec); + pdbRecordType->papFldDes[83]->size=sizeof(prec->ufg); + pdbRecordType->papFldDes[83]->offset=(short)((char *)&prec->ufg - (char *)prec); + pdbRecordType->papFldDes[84]->size=sizeof(prec->ufh); + pdbRecordType->papFldDes[84]->offset=(short)((char *)&prec->ufh - (char *)prec); + pdbRecordType->papFldDes[85]->size=sizeof(prec->ufi); + pdbRecordType->papFldDes[85]->offset=(short)((char *)&prec->ufi - (char *)prec); + pdbRecordType->papFldDes[86]->size=sizeof(prec->ufj); + pdbRecordType->papFldDes[86]->offset=(short)((char *)&prec->ufj - (char *)prec); + pdbRecordType->papFldDes[87]->size=sizeof(prec->ufk); + pdbRecordType->papFldDes[87]->offset=(short)((char *)&prec->ufk - (char *)prec); + pdbRecordType->papFldDes[88]->size=sizeof(prec->ufl); + pdbRecordType->papFldDes[88]->offset=(short)((char *)&prec->ufl - (char *)prec); + pdbRecordType->papFldDes[89]->size=sizeof(prec->ufm); + pdbRecordType->papFldDes[89]->offset=(short)((char *)&prec->ufm - (char *)prec); + pdbRecordType->papFldDes[90]->size=sizeof(prec->ufn); + pdbRecordType->papFldDes[90]->offset=(short)((char *)&prec->ufn - (char *)prec); + pdbRecordType->papFldDes[91]->size=sizeof(prec->ufo); + pdbRecordType->papFldDes[91]->offset=(short)((char *)&prec->ufo - (char *)prec); + pdbRecordType->papFldDes[92]->size=sizeof(prec->ufp); + pdbRecordType->papFldDes[92]->offset=(short)((char *)&prec->ufp - (char *)prec); + pdbRecordType->papFldDes[93]->size=sizeof(prec->ufq); + pdbRecordType->papFldDes[93]->offset=(short)((char *)&prec->ufq - (char *)prec); + pdbRecordType->papFldDes[94]->size=sizeof(prec->ufr); + pdbRecordType->papFldDes[94]->offset=(short)((char *)&prec->ufr - (char *)prec); + pdbRecordType->papFldDes[95]->size=sizeof(prec->ufs); + pdbRecordType->papFldDes[95]->offset=(short)((char *)&prec->ufs - (char *)prec); + pdbRecordType->papFldDes[96]->size=sizeof(prec->uft); + pdbRecordType->papFldDes[96]->offset=(short)((char *)&prec->uft - (char *)prec); + pdbRecordType->papFldDes[97]->size=sizeof(prec->ufu); + pdbRecordType->papFldDes[97]->offset=(short)((char *)&prec->ufu - (char *)prec); + pdbRecordType->papFldDes[98]->size=sizeof(prec->a); + pdbRecordType->papFldDes[98]->offset=(short)((char *)&prec->a - (char *)prec); + pdbRecordType->papFldDes[99]->size=sizeof(prec->b); + pdbRecordType->papFldDes[99]->offset=(short)((char *)&prec->b - (char *)prec); + pdbRecordType->papFldDes[100]->size=sizeof(prec->c); + pdbRecordType->papFldDes[100]->offset=(short)((char *)&prec->c - (char *)prec); + pdbRecordType->papFldDes[101]->size=sizeof(prec->d); + pdbRecordType->papFldDes[101]->offset=(short)((char *)&prec->d - (char *)prec); + pdbRecordType->papFldDes[102]->size=sizeof(prec->e); + pdbRecordType->papFldDes[102]->offset=(short)((char *)&prec->e - (char *)prec); + pdbRecordType->papFldDes[103]->size=sizeof(prec->f); + pdbRecordType->papFldDes[103]->offset=(short)((char *)&prec->f - (char *)prec); + pdbRecordType->papFldDes[104]->size=sizeof(prec->g); + pdbRecordType->papFldDes[104]->offset=(short)((char *)&prec->g - (char *)prec); + pdbRecordType->papFldDes[105]->size=sizeof(prec->h); + pdbRecordType->papFldDes[105]->offset=(short)((char *)&prec->h - (char *)prec); + pdbRecordType->papFldDes[106]->size=sizeof(prec->i); + pdbRecordType->papFldDes[106]->offset=(short)((char *)&prec->i - (char *)prec); + pdbRecordType->papFldDes[107]->size=sizeof(prec->j); + pdbRecordType->papFldDes[107]->offset=(short)((char *)&prec->j - (char *)prec); + pdbRecordType->papFldDes[108]->size=sizeof(prec->k); + pdbRecordType->papFldDes[108]->offset=(short)((char *)&prec->k - (char *)prec); + pdbRecordType->papFldDes[109]->size=sizeof(prec->l); + pdbRecordType->papFldDes[109]->offset=(short)((char *)&prec->l - (char *)prec); + pdbRecordType->papFldDes[110]->size=sizeof(prec->m); + pdbRecordType->papFldDes[110]->offset=(short)((char *)&prec->m - (char *)prec); + pdbRecordType->papFldDes[111]->size=sizeof(prec->n); + pdbRecordType->papFldDes[111]->offset=(short)((char *)&prec->n - (char *)prec); + pdbRecordType->papFldDes[112]->size=sizeof(prec->o); + pdbRecordType->papFldDes[112]->offset=(short)((char *)&prec->o - (char *)prec); + pdbRecordType->papFldDes[113]->size=sizeof(prec->p); + pdbRecordType->papFldDes[113]->offset=(short)((char *)&prec->p - (char *)prec); + pdbRecordType->papFldDes[114]->size=sizeof(prec->q); + pdbRecordType->papFldDes[114]->offset=(short)((char *)&prec->q - (char *)prec); + pdbRecordType->papFldDes[115]->size=sizeof(prec->r); + pdbRecordType->papFldDes[115]->offset=(short)((char *)&prec->r - (char *)prec); + pdbRecordType->papFldDes[116]->size=sizeof(prec->s); + pdbRecordType->papFldDes[116]->offset=(short)((char *)&prec->s - (char *)prec); + pdbRecordType->papFldDes[117]->size=sizeof(prec->t); + pdbRecordType->papFldDes[117]->offset=(short)((char *)&prec->t - (char *)prec); + pdbRecordType->papFldDes[118]->size=sizeof(prec->u); + pdbRecordType->papFldDes[118]->offset=(short)((char *)&prec->u - (char *)prec); + pdbRecordType->papFldDes[119]->size=sizeof(prec->fta); + pdbRecordType->papFldDes[119]->offset=(short)((char *)&prec->fta - (char *)prec); + pdbRecordType->papFldDes[120]->size=sizeof(prec->ftb); + pdbRecordType->papFldDes[120]->offset=(short)((char *)&prec->ftb - (char *)prec); + pdbRecordType->papFldDes[121]->size=sizeof(prec->ftc); + pdbRecordType->papFldDes[121]->offset=(short)((char *)&prec->ftc - (char *)prec); + pdbRecordType->papFldDes[122]->size=sizeof(prec->ftd); + pdbRecordType->papFldDes[122]->offset=(short)((char *)&prec->ftd - (char *)prec); + pdbRecordType->papFldDes[123]->size=sizeof(prec->fte); + pdbRecordType->papFldDes[123]->offset=(short)((char *)&prec->fte - (char *)prec); + pdbRecordType->papFldDes[124]->size=sizeof(prec->ftf); + pdbRecordType->papFldDes[124]->offset=(short)((char *)&prec->ftf - (char *)prec); + pdbRecordType->papFldDes[125]->size=sizeof(prec->ftg); + pdbRecordType->papFldDes[125]->offset=(short)((char *)&prec->ftg - (char *)prec); + pdbRecordType->papFldDes[126]->size=sizeof(prec->fth); + pdbRecordType->papFldDes[126]->offset=(short)((char *)&prec->fth - (char *)prec); + pdbRecordType->papFldDes[127]->size=sizeof(prec->fti); + pdbRecordType->papFldDes[127]->offset=(short)((char *)&prec->fti - (char *)prec); + pdbRecordType->papFldDes[128]->size=sizeof(prec->ftj); + pdbRecordType->papFldDes[128]->offset=(short)((char *)&prec->ftj - (char *)prec); + pdbRecordType->papFldDes[129]->size=sizeof(prec->ftk); + pdbRecordType->papFldDes[129]->offset=(short)((char *)&prec->ftk - (char *)prec); + pdbRecordType->papFldDes[130]->size=sizeof(prec->ftl); + pdbRecordType->papFldDes[130]->offset=(short)((char *)&prec->ftl - (char *)prec); + pdbRecordType->papFldDes[131]->size=sizeof(prec->ftm); + pdbRecordType->papFldDes[131]->offset=(short)((char *)&prec->ftm - (char *)prec); + pdbRecordType->papFldDes[132]->size=sizeof(prec->ftn); + pdbRecordType->papFldDes[132]->offset=(short)((char *)&prec->ftn - (char *)prec); + pdbRecordType->papFldDes[133]->size=sizeof(prec->fto); + pdbRecordType->papFldDes[133]->offset=(short)((char *)&prec->fto - (char *)prec); + pdbRecordType->papFldDes[134]->size=sizeof(prec->ftp); + pdbRecordType->papFldDes[134]->offset=(short)((char *)&prec->ftp - (char *)prec); + pdbRecordType->papFldDes[135]->size=sizeof(prec->ftq); + pdbRecordType->papFldDes[135]->offset=(short)((char *)&prec->ftq - (char *)prec); + pdbRecordType->papFldDes[136]->size=sizeof(prec->ftr); + pdbRecordType->papFldDes[136]->offset=(short)((char *)&prec->ftr - (char *)prec); + pdbRecordType->papFldDes[137]->size=sizeof(prec->fts); + pdbRecordType->papFldDes[137]->offset=(short)((char *)&prec->fts - (char *)prec); + pdbRecordType->papFldDes[138]->size=sizeof(prec->ftt); + pdbRecordType->papFldDes[138]->offset=(short)((char *)&prec->ftt - (char *)prec); + pdbRecordType->papFldDes[139]->size=sizeof(prec->ftu); + pdbRecordType->papFldDes[139]->offset=(short)((char *)&prec->ftu - (char *)prec); + pdbRecordType->papFldDes[140]->size=sizeof(prec->noa); + pdbRecordType->papFldDes[140]->offset=(short)((char *)&prec->noa - (char *)prec); + pdbRecordType->papFldDes[141]->size=sizeof(prec->nob); + pdbRecordType->papFldDes[141]->offset=(short)((char *)&prec->nob - (char *)prec); + pdbRecordType->papFldDes[142]->size=sizeof(prec->noc); + pdbRecordType->papFldDes[142]->offset=(short)((char *)&prec->noc - (char *)prec); + pdbRecordType->papFldDes[143]->size=sizeof(prec->nod); + pdbRecordType->papFldDes[143]->offset=(short)((char *)&prec->nod - (char *)prec); + pdbRecordType->papFldDes[144]->size=sizeof(prec->noe); + pdbRecordType->papFldDes[144]->offset=(short)((char *)&prec->noe - (char *)prec); + pdbRecordType->papFldDes[145]->size=sizeof(prec->nof); + pdbRecordType->papFldDes[145]->offset=(short)((char *)&prec->nof - (char *)prec); + pdbRecordType->papFldDes[146]->size=sizeof(prec->nog); + pdbRecordType->papFldDes[146]->offset=(short)((char *)&prec->nog - (char *)prec); + pdbRecordType->papFldDes[147]->size=sizeof(prec->noh); + pdbRecordType->papFldDes[147]->offset=(short)((char *)&prec->noh - (char *)prec); + pdbRecordType->papFldDes[148]->size=sizeof(prec->noi); + pdbRecordType->papFldDes[148]->offset=(short)((char *)&prec->noi - (char *)prec); + pdbRecordType->papFldDes[149]->size=sizeof(prec->noj); + pdbRecordType->papFldDes[149]->offset=(short)((char *)&prec->noj - (char *)prec); + pdbRecordType->papFldDes[150]->size=sizeof(prec->nok); + pdbRecordType->papFldDes[150]->offset=(short)((char *)&prec->nok - (char *)prec); + pdbRecordType->papFldDes[151]->size=sizeof(prec->nol); + pdbRecordType->papFldDes[151]->offset=(short)((char *)&prec->nol - (char *)prec); + pdbRecordType->papFldDes[152]->size=sizeof(prec->nom); + pdbRecordType->papFldDes[152]->offset=(short)((char *)&prec->nom - (char *)prec); + pdbRecordType->papFldDes[153]->size=sizeof(prec->non); + pdbRecordType->papFldDes[153]->offset=(short)((char *)&prec->non - (char *)prec); + pdbRecordType->papFldDes[154]->size=sizeof(prec->noo); + pdbRecordType->papFldDes[154]->offset=(short)((char *)&prec->noo - (char *)prec); + pdbRecordType->papFldDes[155]->size=sizeof(prec->nop); + pdbRecordType->papFldDes[155]->offset=(short)((char *)&prec->nop - (char *)prec); + pdbRecordType->papFldDes[156]->size=sizeof(prec->noq); + pdbRecordType->papFldDes[156]->offset=(short)((char *)&prec->noq - (char *)prec); + pdbRecordType->papFldDes[157]->size=sizeof(prec->nor); + pdbRecordType->papFldDes[157]->offset=(short)((char *)&prec->nor - (char *)prec); + pdbRecordType->papFldDes[158]->size=sizeof(prec->nos); + pdbRecordType->papFldDes[158]->offset=(short)((char *)&prec->nos - (char *)prec); + pdbRecordType->papFldDes[159]->size=sizeof(prec->not); + pdbRecordType->papFldDes[159]->offset=(short)((char *)&prec->not - (char *)prec); + pdbRecordType->papFldDes[160]->size=sizeof(prec->nou); + pdbRecordType->papFldDes[160]->offset=(short)((char *)&prec->nou - (char *)prec); + pdbRecordType->papFldDes[161]->size=sizeof(prec->outa); + pdbRecordType->papFldDes[161]->offset=(short)((char *)&prec->outa - (char *)prec); + pdbRecordType->papFldDes[162]->size=sizeof(prec->outb); + pdbRecordType->papFldDes[162]->offset=(short)((char *)&prec->outb - (char *)prec); + pdbRecordType->papFldDes[163]->size=sizeof(prec->outc); + pdbRecordType->papFldDes[163]->offset=(short)((char *)&prec->outc - (char *)prec); + pdbRecordType->papFldDes[164]->size=sizeof(prec->outd); + pdbRecordType->papFldDes[164]->offset=(short)((char *)&prec->outd - (char *)prec); + pdbRecordType->papFldDes[165]->size=sizeof(prec->oute); + pdbRecordType->papFldDes[165]->offset=(short)((char *)&prec->oute - (char *)prec); + pdbRecordType->papFldDes[166]->size=sizeof(prec->outf); + pdbRecordType->papFldDes[166]->offset=(short)((char *)&prec->outf - (char *)prec); + pdbRecordType->papFldDes[167]->size=sizeof(prec->outg); + pdbRecordType->papFldDes[167]->offset=(short)((char *)&prec->outg - (char *)prec); + pdbRecordType->papFldDes[168]->size=sizeof(prec->outh); + pdbRecordType->papFldDes[168]->offset=(short)((char *)&prec->outh - (char *)prec); + pdbRecordType->papFldDes[169]->size=sizeof(prec->outi); + pdbRecordType->papFldDes[169]->offset=(short)((char *)&prec->outi - (char *)prec); + pdbRecordType->papFldDes[170]->size=sizeof(prec->outj); + pdbRecordType->papFldDes[170]->offset=(short)((char *)&prec->outj - (char *)prec); + pdbRecordType->papFldDes[171]->size=sizeof(prec->outk); + pdbRecordType->papFldDes[171]->offset=(short)((char *)&prec->outk - (char *)prec); + pdbRecordType->papFldDes[172]->size=sizeof(prec->outl); + pdbRecordType->papFldDes[172]->offset=(short)((char *)&prec->outl - (char *)prec); + pdbRecordType->papFldDes[173]->size=sizeof(prec->outm); + pdbRecordType->papFldDes[173]->offset=(short)((char *)&prec->outm - (char *)prec); + pdbRecordType->papFldDes[174]->size=sizeof(prec->outn); + pdbRecordType->papFldDes[174]->offset=(short)((char *)&prec->outn - (char *)prec); + pdbRecordType->papFldDes[175]->size=sizeof(prec->outo); + pdbRecordType->papFldDes[175]->offset=(short)((char *)&prec->outo - (char *)prec); + pdbRecordType->papFldDes[176]->size=sizeof(prec->outp); + pdbRecordType->papFldDes[176]->offset=(short)((char *)&prec->outp - (char *)prec); + pdbRecordType->papFldDes[177]->size=sizeof(prec->outq); + pdbRecordType->papFldDes[177]->offset=(short)((char *)&prec->outq - (char *)prec); + pdbRecordType->papFldDes[178]->size=sizeof(prec->outr); + pdbRecordType->papFldDes[178]->offset=(short)((char *)&prec->outr - (char *)prec); + pdbRecordType->papFldDes[179]->size=sizeof(prec->outs); + pdbRecordType->papFldDes[179]->offset=(short)((char *)&prec->outs - (char *)prec); + pdbRecordType->papFldDes[180]->size=sizeof(prec->outt); + pdbRecordType->papFldDes[180]->offset=(short)((char *)&prec->outt - (char *)prec); + pdbRecordType->papFldDes[181]->size=sizeof(prec->outu); + pdbRecordType->papFldDes[181]->offset=(short)((char *)&prec->outu - (char *)prec); + pdbRecordType->papFldDes[182]->size=sizeof(prec->ufva); + pdbRecordType->papFldDes[182]->offset=(short)((char *)&prec->ufva - (char *)prec); + pdbRecordType->papFldDes[183]->size=sizeof(prec->ufvb); + pdbRecordType->papFldDes[183]->offset=(short)((char *)&prec->ufvb - (char *)prec); + pdbRecordType->papFldDes[184]->size=sizeof(prec->ufvc); + pdbRecordType->papFldDes[184]->offset=(short)((char *)&prec->ufvc - (char *)prec); + pdbRecordType->papFldDes[185]->size=sizeof(prec->ufvd); + pdbRecordType->papFldDes[185]->offset=(short)((char *)&prec->ufvd - (char *)prec); + pdbRecordType->papFldDes[186]->size=sizeof(prec->ufve); + pdbRecordType->papFldDes[186]->offset=(short)((char *)&prec->ufve - (char *)prec); + pdbRecordType->papFldDes[187]->size=sizeof(prec->ufvf); + pdbRecordType->papFldDes[187]->offset=(short)((char *)&prec->ufvf - (char *)prec); + pdbRecordType->papFldDes[188]->size=sizeof(prec->ufvg); + pdbRecordType->papFldDes[188]->offset=(short)((char *)&prec->ufvg - (char *)prec); + pdbRecordType->papFldDes[189]->size=sizeof(prec->ufvh); + pdbRecordType->papFldDes[189]->offset=(short)((char *)&prec->ufvh - (char *)prec); + pdbRecordType->papFldDes[190]->size=sizeof(prec->ufvi); + pdbRecordType->papFldDes[190]->offset=(short)((char *)&prec->ufvi - (char *)prec); + pdbRecordType->papFldDes[191]->size=sizeof(prec->ufvj); + pdbRecordType->papFldDes[191]->offset=(short)((char *)&prec->ufvj - (char *)prec); + pdbRecordType->papFldDes[192]->size=sizeof(prec->ufvk); + pdbRecordType->papFldDes[192]->offset=(short)((char *)&prec->ufvk - (char *)prec); + pdbRecordType->papFldDes[193]->size=sizeof(prec->ufvl); + pdbRecordType->papFldDes[193]->offset=(short)((char *)&prec->ufvl - (char *)prec); + pdbRecordType->papFldDes[194]->size=sizeof(prec->ufvm); + pdbRecordType->papFldDes[194]->offset=(short)((char *)&prec->ufvm - (char *)prec); + pdbRecordType->papFldDes[195]->size=sizeof(prec->ufvn); + pdbRecordType->papFldDes[195]->offset=(short)((char *)&prec->ufvn - (char *)prec); + pdbRecordType->papFldDes[196]->size=sizeof(prec->ufvo); + pdbRecordType->papFldDes[196]->offset=(short)((char *)&prec->ufvo - (char *)prec); + pdbRecordType->papFldDes[197]->size=sizeof(prec->ufvp); + pdbRecordType->papFldDes[197]->offset=(short)((char *)&prec->ufvp - (char *)prec); + pdbRecordType->papFldDes[198]->size=sizeof(prec->ufvq); + pdbRecordType->papFldDes[198]->offset=(short)((char *)&prec->ufvq - (char *)prec); + pdbRecordType->papFldDes[199]->size=sizeof(prec->ufvr); + pdbRecordType->papFldDes[199]->offset=(short)((char *)&prec->ufvr - (char *)prec); + pdbRecordType->papFldDes[200]->size=sizeof(prec->ufvs); + pdbRecordType->papFldDes[200]->offset=(short)((char *)&prec->ufvs - (char *)prec); + pdbRecordType->papFldDes[201]->size=sizeof(prec->ufvt); + pdbRecordType->papFldDes[201]->offset=(short)((char *)&prec->ufvt - (char *)prec); + pdbRecordType->papFldDes[202]->size=sizeof(prec->ufvu); + pdbRecordType->papFldDes[202]->offset=(short)((char *)&prec->ufvu - (char *)prec); + pdbRecordType->papFldDes[203]->size=sizeof(prec->vala); + pdbRecordType->papFldDes[203]->offset=(short)((char *)&prec->vala - (char *)prec); + pdbRecordType->papFldDes[204]->size=sizeof(prec->valb); + pdbRecordType->papFldDes[204]->offset=(short)((char *)&prec->valb - (char *)prec); + pdbRecordType->papFldDes[205]->size=sizeof(prec->valc); + pdbRecordType->papFldDes[205]->offset=(short)((char *)&prec->valc - (char *)prec); + pdbRecordType->papFldDes[206]->size=sizeof(prec->vald); + pdbRecordType->papFldDes[206]->offset=(short)((char *)&prec->vald - (char *)prec); + pdbRecordType->papFldDes[207]->size=sizeof(prec->vale); + pdbRecordType->papFldDes[207]->offset=(short)((char *)&prec->vale - (char *)prec); + pdbRecordType->papFldDes[208]->size=sizeof(prec->valf); + pdbRecordType->papFldDes[208]->offset=(short)((char *)&prec->valf - (char *)prec); + pdbRecordType->papFldDes[209]->size=sizeof(prec->valg); + pdbRecordType->papFldDes[209]->offset=(short)((char *)&prec->valg - (char *)prec); + pdbRecordType->papFldDes[210]->size=sizeof(prec->valh); + pdbRecordType->papFldDes[210]->offset=(short)((char *)&prec->valh - (char *)prec); + pdbRecordType->papFldDes[211]->size=sizeof(prec->vali); + pdbRecordType->papFldDes[211]->offset=(short)((char *)&prec->vali - (char *)prec); + pdbRecordType->papFldDes[212]->size=sizeof(prec->valj); + pdbRecordType->papFldDes[212]->offset=(short)((char *)&prec->valj - (char *)prec); + pdbRecordType->papFldDes[213]->size=sizeof(prec->valk); + pdbRecordType->papFldDes[213]->offset=(short)((char *)&prec->valk - (char *)prec); + pdbRecordType->papFldDes[214]->size=sizeof(prec->vall); + pdbRecordType->papFldDes[214]->offset=(short)((char *)&prec->vall - (char *)prec); + pdbRecordType->papFldDes[215]->size=sizeof(prec->valm); + pdbRecordType->papFldDes[215]->offset=(short)((char *)&prec->valm - (char *)prec); + pdbRecordType->papFldDes[216]->size=sizeof(prec->valn); + pdbRecordType->papFldDes[216]->offset=(short)((char *)&prec->valn - (char *)prec); + pdbRecordType->papFldDes[217]->size=sizeof(prec->valo); + pdbRecordType->papFldDes[217]->offset=(short)((char *)&prec->valo - (char *)prec); + pdbRecordType->papFldDes[218]->size=sizeof(prec->valp); + pdbRecordType->papFldDes[218]->offset=(short)((char *)&prec->valp - (char *)prec); + pdbRecordType->papFldDes[219]->size=sizeof(prec->valq); + pdbRecordType->papFldDes[219]->offset=(short)((char *)&prec->valq - (char *)prec); + pdbRecordType->papFldDes[220]->size=sizeof(prec->valr); + pdbRecordType->papFldDes[220]->offset=(short)((char *)&prec->valr - (char *)prec); + pdbRecordType->papFldDes[221]->size=sizeof(prec->vals); + pdbRecordType->papFldDes[221]->offset=(short)((char *)&prec->vals - (char *)prec); + pdbRecordType->papFldDes[222]->size=sizeof(prec->valt); + pdbRecordType->papFldDes[222]->offset=(short)((char *)&prec->valt - (char *)prec); + pdbRecordType->papFldDes[223]->size=sizeof(prec->valu); + pdbRecordType->papFldDes[223]->offset=(short)((char *)&prec->valu - (char *)prec); + pdbRecordType->papFldDes[224]->size=sizeof(prec->ovla); + pdbRecordType->papFldDes[224]->offset=(short)((char *)&prec->ovla - (char *)prec); + pdbRecordType->papFldDes[225]->size=sizeof(prec->ovlb); + pdbRecordType->papFldDes[225]->offset=(short)((char *)&prec->ovlb - (char *)prec); + pdbRecordType->papFldDes[226]->size=sizeof(prec->ovlc); + pdbRecordType->papFldDes[226]->offset=(short)((char *)&prec->ovlc - (char *)prec); + pdbRecordType->papFldDes[227]->size=sizeof(prec->ovld); + pdbRecordType->papFldDes[227]->offset=(short)((char *)&prec->ovld - (char *)prec); + pdbRecordType->papFldDes[228]->size=sizeof(prec->ovle); + pdbRecordType->papFldDes[228]->offset=(short)((char *)&prec->ovle - (char *)prec); + pdbRecordType->papFldDes[229]->size=sizeof(prec->ovlf); + pdbRecordType->papFldDes[229]->offset=(short)((char *)&prec->ovlf - (char *)prec); + pdbRecordType->papFldDes[230]->size=sizeof(prec->ovlg); + pdbRecordType->papFldDes[230]->offset=(short)((char *)&prec->ovlg - (char *)prec); + pdbRecordType->papFldDes[231]->size=sizeof(prec->ovlh); + pdbRecordType->papFldDes[231]->offset=(short)((char *)&prec->ovlh - (char *)prec); + pdbRecordType->papFldDes[232]->size=sizeof(prec->ovli); + pdbRecordType->papFldDes[232]->offset=(short)((char *)&prec->ovli - (char *)prec); + pdbRecordType->papFldDes[233]->size=sizeof(prec->ovlj); + pdbRecordType->papFldDes[233]->offset=(short)((char *)&prec->ovlj - (char *)prec); + pdbRecordType->papFldDes[234]->size=sizeof(prec->ovlk); + pdbRecordType->papFldDes[234]->offset=(short)((char *)&prec->ovlk - (char *)prec); + pdbRecordType->papFldDes[235]->size=sizeof(prec->ovll); + pdbRecordType->papFldDes[235]->offset=(short)((char *)&prec->ovll - (char *)prec); + pdbRecordType->papFldDes[236]->size=sizeof(prec->ovlm); + pdbRecordType->papFldDes[236]->offset=(short)((char *)&prec->ovlm - (char *)prec); + pdbRecordType->papFldDes[237]->size=sizeof(prec->ovln); + pdbRecordType->papFldDes[237]->offset=(short)((char *)&prec->ovln - (char *)prec); + pdbRecordType->papFldDes[238]->size=sizeof(prec->ovlo); + pdbRecordType->papFldDes[238]->offset=(short)((char *)&prec->ovlo - (char *)prec); + pdbRecordType->papFldDes[239]->size=sizeof(prec->ovlp); + pdbRecordType->papFldDes[239]->offset=(short)((char *)&prec->ovlp - (char *)prec); + pdbRecordType->papFldDes[240]->size=sizeof(prec->ovlq); + pdbRecordType->papFldDes[240]->offset=(short)((char *)&prec->ovlq - (char *)prec); + pdbRecordType->papFldDes[241]->size=sizeof(prec->ovlr); + pdbRecordType->papFldDes[241]->offset=(short)((char *)&prec->ovlr - (char *)prec); + pdbRecordType->papFldDes[242]->size=sizeof(prec->ovls); + pdbRecordType->papFldDes[242]->offset=(short)((char *)&prec->ovls - (char *)prec); + pdbRecordType->papFldDes[243]->size=sizeof(prec->ovlt); + pdbRecordType->papFldDes[243]->offset=(short)((char *)&prec->ovlt - (char *)prec); + pdbRecordType->papFldDes[244]->size=sizeof(prec->ovlu); + pdbRecordType->papFldDes[244]->offset=(short)((char *)&prec->ovlu - (char *)prec); + pdbRecordType->papFldDes[245]->size=sizeof(prec->ftva); + pdbRecordType->papFldDes[245]->offset=(short)((char *)&prec->ftva - (char *)prec); + pdbRecordType->papFldDes[246]->size=sizeof(prec->ftvb); + pdbRecordType->papFldDes[246]->offset=(short)((char *)&prec->ftvb - (char *)prec); + pdbRecordType->papFldDes[247]->size=sizeof(prec->ftvc); + pdbRecordType->papFldDes[247]->offset=(short)((char *)&prec->ftvc - (char *)prec); + pdbRecordType->papFldDes[248]->size=sizeof(prec->ftvd); + pdbRecordType->papFldDes[248]->offset=(short)((char *)&prec->ftvd - (char *)prec); + pdbRecordType->papFldDes[249]->size=sizeof(prec->ftve); + pdbRecordType->papFldDes[249]->offset=(short)((char *)&prec->ftve - (char *)prec); + pdbRecordType->papFldDes[250]->size=sizeof(prec->ftvf); + pdbRecordType->papFldDes[250]->offset=(short)((char *)&prec->ftvf - (char *)prec); + pdbRecordType->papFldDes[251]->size=sizeof(prec->ftvg); + pdbRecordType->papFldDes[251]->offset=(short)((char *)&prec->ftvg - (char *)prec); + pdbRecordType->papFldDes[252]->size=sizeof(prec->ftvh); + pdbRecordType->papFldDes[252]->offset=(short)((char *)&prec->ftvh - (char *)prec); + pdbRecordType->papFldDes[253]->size=sizeof(prec->ftvi); + pdbRecordType->papFldDes[253]->offset=(short)((char *)&prec->ftvi - (char *)prec); + pdbRecordType->papFldDes[254]->size=sizeof(prec->ftvj); + pdbRecordType->papFldDes[254]->offset=(short)((char *)&prec->ftvj - (char *)prec); + pdbRecordType->papFldDes[255]->size=sizeof(prec->ftvk); + pdbRecordType->papFldDes[255]->offset=(short)((char *)&prec->ftvk - (char *)prec); + pdbRecordType->papFldDes[256]->size=sizeof(prec->ftvl); + pdbRecordType->papFldDes[256]->offset=(short)((char *)&prec->ftvl - (char *)prec); + pdbRecordType->papFldDes[257]->size=sizeof(prec->ftvm); + pdbRecordType->papFldDes[257]->offset=(short)((char *)&prec->ftvm - (char *)prec); + pdbRecordType->papFldDes[258]->size=sizeof(prec->ftvn); + pdbRecordType->papFldDes[258]->offset=(short)((char *)&prec->ftvn - (char *)prec); + pdbRecordType->papFldDes[259]->size=sizeof(prec->ftvo); + pdbRecordType->papFldDes[259]->offset=(short)((char *)&prec->ftvo - (char *)prec); + pdbRecordType->papFldDes[260]->size=sizeof(prec->ftvp); + pdbRecordType->papFldDes[260]->offset=(short)((char *)&prec->ftvp - (char *)prec); + pdbRecordType->papFldDes[261]->size=sizeof(prec->ftvq); + pdbRecordType->papFldDes[261]->offset=(short)((char *)&prec->ftvq - (char *)prec); + pdbRecordType->papFldDes[262]->size=sizeof(prec->ftvr); + pdbRecordType->papFldDes[262]->offset=(short)((char *)&prec->ftvr - (char *)prec); + pdbRecordType->papFldDes[263]->size=sizeof(prec->ftvs); + pdbRecordType->papFldDes[263]->offset=(short)((char *)&prec->ftvs - (char *)prec); + pdbRecordType->papFldDes[264]->size=sizeof(prec->ftvt); + pdbRecordType->papFldDes[264]->offset=(short)((char *)&prec->ftvt - (char *)prec); + pdbRecordType->papFldDes[265]->size=sizeof(prec->ftvu); + pdbRecordType->papFldDes[265]->offset=(short)((char *)&prec->ftvu - (char *)prec); + pdbRecordType->papFldDes[266]->size=sizeof(prec->nova); + pdbRecordType->papFldDes[266]->offset=(short)((char *)&prec->nova - (char *)prec); + pdbRecordType->papFldDes[267]->size=sizeof(prec->novb); + pdbRecordType->papFldDes[267]->offset=(short)((char *)&prec->novb - (char *)prec); + pdbRecordType->papFldDes[268]->size=sizeof(prec->novc); + pdbRecordType->papFldDes[268]->offset=(short)((char *)&prec->novc - (char *)prec); + pdbRecordType->papFldDes[269]->size=sizeof(prec->novd); + pdbRecordType->papFldDes[269]->offset=(short)((char *)&prec->novd - (char *)prec); + pdbRecordType->papFldDes[270]->size=sizeof(prec->nove); + pdbRecordType->papFldDes[270]->offset=(short)((char *)&prec->nove - (char *)prec); + pdbRecordType->papFldDes[271]->size=sizeof(prec->novf); + pdbRecordType->papFldDes[271]->offset=(short)((char *)&prec->novf - (char *)prec); + pdbRecordType->papFldDes[272]->size=sizeof(prec->novg); + pdbRecordType->papFldDes[272]->offset=(short)((char *)&prec->novg - (char *)prec); + pdbRecordType->papFldDes[273]->size=sizeof(prec->novh); + pdbRecordType->papFldDes[273]->offset=(short)((char *)&prec->novh - (char *)prec); + pdbRecordType->papFldDes[274]->size=sizeof(prec->novi); + pdbRecordType->papFldDes[274]->offset=(short)((char *)&prec->novi - (char *)prec); + pdbRecordType->papFldDes[275]->size=sizeof(prec->novj); + pdbRecordType->papFldDes[275]->offset=(short)((char *)&prec->novj - (char *)prec); + pdbRecordType->papFldDes[276]->size=sizeof(prec->novk); + pdbRecordType->papFldDes[276]->offset=(short)((char *)&prec->novk - (char *)prec); + pdbRecordType->papFldDes[277]->size=sizeof(prec->novl); + pdbRecordType->papFldDes[277]->offset=(short)((char *)&prec->novl - (char *)prec); + pdbRecordType->papFldDes[278]->size=sizeof(prec->novm); + pdbRecordType->papFldDes[278]->offset=(short)((char *)&prec->novm - (char *)prec); + pdbRecordType->papFldDes[279]->size=sizeof(prec->novn); + pdbRecordType->papFldDes[279]->offset=(short)((char *)&prec->novn - (char *)prec); + pdbRecordType->papFldDes[280]->size=sizeof(prec->novo); + pdbRecordType->papFldDes[280]->offset=(short)((char *)&prec->novo - (char *)prec); + pdbRecordType->papFldDes[281]->size=sizeof(prec->novp); + pdbRecordType->papFldDes[281]->offset=(short)((char *)&prec->novp - (char *)prec); + pdbRecordType->papFldDes[282]->size=sizeof(prec->novq); + pdbRecordType->papFldDes[282]->offset=(short)((char *)&prec->novq - (char *)prec); + pdbRecordType->papFldDes[283]->size=sizeof(prec->novr); + pdbRecordType->papFldDes[283]->offset=(short)((char *)&prec->novr - (char *)prec); + pdbRecordType->papFldDes[284]->size=sizeof(prec->novs); + pdbRecordType->papFldDes[284]->offset=(short)((char *)&prec->novs - (char *)prec); + pdbRecordType->papFldDes[285]->size=sizeof(prec->novt); + pdbRecordType->papFldDes[285]->offset=(short)((char *)&prec->novt - (char *)prec); + pdbRecordType->papFldDes[286]->size=sizeof(prec->novu); + pdbRecordType->papFldDes[286]->offset=(short)((char *)&prec->novu - (char *)prec); + pdbRecordType->papFldDes[287]->size=sizeof(prec->tova); + pdbRecordType->papFldDes[287]->offset=(short)((char *)&prec->tova - (char *)prec); + pdbRecordType->papFldDes[288]->size=sizeof(prec->tovb); + pdbRecordType->papFldDes[288]->offset=(short)((char *)&prec->tovb - (char *)prec); + pdbRecordType->papFldDes[289]->size=sizeof(prec->tovc); + pdbRecordType->papFldDes[289]->offset=(short)((char *)&prec->tovc - (char *)prec); + pdbRecordType->papFldDes[290]->size=sizeof(prec->tovd); + pdbRecordType->papFldDes[290]->offset=(short)((char *)&prec->tovd - (char *)prec); + pdbRecordType->papFldDes[291]->size=sizeof(prec->tove); + pdbRecordType->papFldDes[291]->offset=(short)((char *)&prec->tove - (char *)prec); + pdbRecordType->papFldDes[292]->size=sizeof(prec->tovf); + pdbRecordType->papFldDes[292]->offset=(short)((char *)&prec->tovf - (char *)prec); + pdbRecordType->papFldDes[293]->size=sizeof(prec->tovg); + pdbRecordType->papFldDes[293]->offset=(short)((char *)&prec->tovg - (char *)prec); + pdbRecordType->papFldDes[294]->size=sizeof(prec->tovh); + pdbRecordType->papFldDes[294]->offset=(short)((char *)&prec->tovh - (char *)prec); + pdbRecordType->papFldDes[295]->size=sizeof(prec->tovi); + pdbRecordType->papFldDes[295]->offset=(short)((char *)&prec->tovi - (char *)prec); + pdbRecordType->papFldDes[296]->size=sizeof(prec->tovj); + pdbRecordType->papFldDes[296]->offset=(short)((char *)&prec->tovj - (char *)prec); + pdbRecordType->papFldDes[297]->size=sizeof(prec->tovk); + pdbRecordType->papFldDes[297]->offset=(short)((char *)&prec->tovk - (char *)prec); + pdbRecordType->papFldDes[298]->size=sizeof(prec->tovl); + pdbRecordType->papFldDes[298]->offset=(short)((char *)&prec->tovl - (char *)prec); + pdbRecordType->papFldDes[299]->size=sizeof(prec->tovm); + pdbRecordType->papFldDes[299]->offset=(short)((char *)&prec->tovm - (char *)prec); + pdbRecordType->papFldDes[300]->size=sizeof(prec->tovn); + pdbRecordType->papFldDes[300]->offset=(short)((char *)&prec->tovn - (char *)prec); + pdbRecordType->papFldDes[301]->size=sizeof(prec->tovo); + pdbRecordType->papFldDes[301]->offset=(short)((char *)&prec->tovo - (char *)prec); + pdbRecordType->papFldDes[302]->size=sizeof(prec->tovp); + pdbRecordType->papFldDes[302]->offset=(short)((char *)&prec->tovp - (char *)prec); + pdbRecordType->papFldDes[303]->size=sizeof(prec->tovq); + pdbRecordType->papFldDes[303]->offset=(short)((char *)&prec->tovq - (char *)prec); + pdbRecordType->papFldDes[304]->size=sizeof(prec->tovr); + pdbRecordType->papFldDes[304]->offset=(short)((char *)&prec->tovr - (char *)prec); + pdbRecordType->papFldDes[305]->size=sizeof(prec->tovs); + pdbRecordType->papFldDes[305]->offset=(short)((char *)&prec->tovs - (char *)prec); + pdbRecordType->papFldDes[306]->size=sizeof(prec->tovt); + pdbRecordType->papFldDes[306]->offset=(short)((char *)&prec->tovt - (char *)prec); + pdbRecordType->papFldDes[307]->size=sizeof(prec->tovu); + pdbRecordType->papFldDes[307]->offset=(short)((char *)&prec->tovu - (char *)prec); + pdbRecordType->rec_size = sizeof(*prec); + return(0); +} +epicsExportRegistrar(genSubRecordSizeOffset); +#ifdef __cplusplus +} +#endif +#endif /*GEN_SIZE_OFFSET*/ diff --git a/ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h b/ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h new file mode 100644 index 0000000..93fabce --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.Common/xxxRecord.h @@ -0,0 +1,278 @@ +#include "ellLib.h" +#include "epicsMutex.h" +#include "link.h" +#include "epicsTime.h" +#include "epicsTypes.h" +#ifndef INCxxxH +#define INCxxxH +typedef struct xxxRecord { + char name[61]; /*Record Name*/ + char desc[29]; /*Descriptor*/ + char asg[29]; /*Access Security Group*/ + epicsEnum16 scan; /*Scan Mechanism*/ + epicsEnum16 pini; /*Process at iocInit*/ + short phas; /*Scan Phase*/ + short evnt; /*Event Number*/ + short tse; /*Time Stamp Event*/ + DBLINK tsel; /*Time Stamp Link*/ + epicsEnum16 dtyp; /*Device Type*/ + short disv; /*Disable Value*/ + short disa; /*Disable*/ + DBLINK sdis; /*Scanning Disable*/ + epicsMutexId mlok; /*Monitor lock*/ + ELLLIST mlis; /*Monitor List*/ + unsigned char disp; /*Disable putField*/ + unsigned char proc; /*Force Processing*/ + epicsEnum16 stat; /*Alarm Status*/ + epicsEnum16 sevr; /*Alarm Severity*/ + epicsEnum16 nsta; /*New Alarm Status*/ + epicsEnum16 nsev; /*New Alarm Severity*/ + epicsEnum16 acks; /*Alarm Ack Severity*/ + epicsEnum16 ackt; /*Alarm Ack Transient*/ + epicsEnum16 diss; /*Disable Alarm Sevrty*/ + unsigned char lcnt; /*Lock Count*/ + unsigned char pact; /*Record active*/ + unsigned char putf; /*dbPutField process*/ + unsigned char rpro; /*Reprocess */ + void *asp; /*Access Security Pvt*/ + struct putNotify *ppn; /*addr of PUTNOTIFY*/ + struct putNotifyRecord *ppnr; /*pputNotifyRecord*/ + struct scan_element *spvt; /*Scan Private*/ + struct rset *rset; /*Address of RSET*/ + struct dset *dset; /*DSET address*/ + void *dpvt; /*Device Private*/ + struct dbRecordType *rdes; /*Address of dbRecordType*/ + struct lockRecord *lset; /*Lock Set*/ + epicsEnum16 prio; /*Scheduling Priority*/ + unsigned char tpro; /*Trace Processing*/ + char bkpt; /*Break Point*/ + unsigned char udf; /*Undefined*/ + epicsTimeStamp time; /*Time*/ + DBLINK flnk; /*Forward Process Link*/ + double val; /*Current EGU Value*/ + DBLINK inp; /*Input Specification*/ + short prec; /*Display Precision*/ + char egu[16]; /*Engineering Units*/ + float hopr; /*High Operating Range*/ + float lopr; /*Low Operating Range*/ + float hihi; /*Hihi Alarm Limit*/ + float lolo; /*Lolo Alarm Limit*/ + float high; /*High Alarm Limit*/ + float low; /*Low Alarm Limit*/ + epicsEnum16 hhsv; /*Hihi Severity*/ + epicsEnum16 llsv; /*Lolo Severity*/ + epicsEnum16 hsv; /*High Severity*/ + epicsEnum16 lsv; /*Low Severity*/ + double hyst; /*Alarm Deadband*/ + double adel; /*Archive Deadband*/ + double mdel; /*Monitor Deadband*/ + double lalm; /*Last Value Alarmed*/ + double alst; /*Last Value Archived*/ + double mlst; /*Last Val Monitored*/ +} xxxRecord; +#define xxxRecordNAME 0 +#define xxxRecordDESC 1 +#define xxxRecordASG 2 +#define xxxRecordSCAN 3 +#define xxxRecordPINI 4 +#define xxxRecordPHAS 5 +#define xxxRecordEVNT 6 +#define xxxRecordTSE 7 +#define xxxRecordTSEL 8 +#define xxxRecordDTYP 9 +#define xxxRecordDISV 10 +#define xxxRecordDISA 11 +#define xxxRecordSDIS 12 +#define xxxRecordMLOK 13 +#define xxxRecordMLIS 14 +#define xxxRecordDISP 15 +#define xxxRecordPROC 16 +#define xxxRecordSTAT 17 +#define xxxRecordSEVR 18 +#define xxxRecordNSTA 19 +#define xxxRecordNSEV 20 +#define xxxRecordACKS 21 +#define xxxRecordACKT 22 +#define xxxRecordDISS 23 +#define xxxRecordLCNT 24 +#define xxxRecordPACT 25 +#define xxxRecordPUTF 26 +#define xxxRecordRPRO 27 +#define xxxRecordASP 28 +#define xxxRecordPPN 29 +#define xxxRecordPPNR 30 +#define xxxRecordSPVT 31 +#define xxxRecordRSET 32 +#define xxxRecordDSET 33 +#define xxxRecordDPVT 34 +#define xxxRecordRDES 35 +#define xxxRecordLSET 36 +#define xxxRecordPRIO 37 +#define xxxRecordTPRO 38 +#define xxxRecordBKPT 39 +#define xxxRecordUDF 40 +#define xxxRecordTIME 41 +#define xxxRecordFLNK 42 +#define xxxRecordVAL 43 +#define xxxRecordINP 44 +#define xxxRecordPREC 45 +#define xxxRecordEGU 46 +#define xxxRecordHOPR 47 +#define xxxRecordLOPR 48 +#define xxxRecordHIHI 49 +#define xxxRecordLOLO 50 +#define xxxRecordHIGH 51 +#define xxxRecordLOW 52 +#define xxxRecordHHSV 53 +#define xxxRecordLLSV 54 +#define xxxRecordHSV 55 +#define xxxRecordLSV 56 +#define xxxRecordHYST 57 +#define xxxRecordADEL 58 +#define xxxRecordMDEL 59 +#define xxxRecordLALM 60 +#define xxxRecordALST 61 +#define xxxRecordMLST 62 +#endif /*INCxxxH*/ +#ifdef GEN_SIZE_OFFSET +#ifdef __cplusplus +extern "C" { +#endif +#include +static int xxxRecordSizeOffset(dbRecordType *pdbRecordType) +{ + xxxRecord *prec = 0; + pdbRecordType->papFldDes[0]->size=sizeof(prec->name); + pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec); + pdbRecordType->papFldDes[1]->size=sizeof(prec->desc); + pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec); + pdbRecordType->papFldDes[2]->size=sizeof(prec->asg); + pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec); + pdbRecordType->papFldDes[3]->size=sizeof(prec->scan); + pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec); + pdbRecordType->papFldDes[4]->size=sizeof(prec->pini); + pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec); + pdbRecordType->papFldDes[5]->size=sizeof(prec->phas); + pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec); + pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt); + pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec); + pdbRecordType->papFldDes[7]->size=sizeof(prec->tse); + pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec); + pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel); + pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec); + pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp); + pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec); + pdbRecordType->papFldDes[10]->size=sizeof(prec->disv); + pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec); + pdbRecordType->papFldDes[11]->size=sizeof(prec->disa); + pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec); + pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis); + pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec); + pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok); + pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec); + pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis); + pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec); + pdbRecordType->papFldDes[15]->size=sizeof(prec->disp); + pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec); + pdbRecordType->papFldDes[16]->size=sizeof(prec->proc); + pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec); + pdbRecordType->papFldDes[17]->size=sizeof(prec->stat); + pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec); + pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr); + pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec); + pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta); + pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec); + pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev); + pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec); + pdbRecordType->papFldDes[21]->size=sizeof(prec->acks); + pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec); + pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt); + pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec); + pdbRecordType->papFldDes[23]->size=sizeof(prec->diss); + pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec); + pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt); + pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec); + pdbRecordType->papFldDes[25]->size=sizeof(prec->pact); + pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec); + pdbRecordType->papFldDes[26]->size=sizeof(prec->putf); + pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec); + pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro); + pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec); + pdbRecordType->papFldDes[28]->size=sizeof(prec->asp); + pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec); + pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn); + pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec); + pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr); + pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec); + pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt); + pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec); + pdbRecordType->papFldDes[32]->size=sizeof(prec->rset); + pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec); + pdbRecordType->papFldDes[33]->size=sizeof(prec->dset); + pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec); + pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt); + pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec); + pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes); + pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec); + pdbRecordType->papFldDes[36]->size=sizeof(prec->lset); + pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec); + pdbRecordType->papFldDes[37]->size=sizeof(prec->prio); + pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec); + pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro); + pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec); + pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt); + pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec); + pdbRecordType->papFldDes[40]->size=sizeof(prec->udf); + pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec); + pdbRecordType->papFldDes[41]->size=sizeof(prec->time); + pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec); + pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk); + pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec); + pdbRecordType->papFldDes[43]->size=sizeof(prec->val); + pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->val - (char *)prec); + pdbRecordType->papFldDes[44]->size=sizeof(prec->inp); + pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->inp - (char *)prec); + pdbRecordType->papFldDes[45]->size=sizeof(prec->prec); + pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->prec - (char *)prec); + pdbRecordType->papFldDes[46]->size=sizeof(prec->egu); + pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->egu - (char *)prec); + pdbRecordType->papFldDes[47]->size=sizeof(prec->hopr); + pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->hopr - (char *)prec); + pdbRecordType->papFldDes[48]->size=sizeof(prec->lopr); + pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lopr - (char *)prec); + pdbRecordType->papFldDes[49]->size=sizeof(prec->hihi); + pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->hihi - (char *)prec); + pdbRecordType->papFldDes[50]->size=sizeof(prec->lolo); + pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->lolo - (char *)prec); + pdbRecordType->papFldDes[51]->size=sizeof(prec->high); + pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->high - (char *)prec); + pdbRecordType->papFldDes[52]->size=sizeof(prec->low); + pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->low - (char *)prec); + pdbRecordType->papFldDes[53]->size=sizeof(prec->hhsv); + pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->hhsv - (char *)prec); + pdbRecordType->papFldDes[54]->size=sizeof(prec->llsv); + pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->llsv - (char *)prec); + pdbRecordType->papFldDes[55]->size=sizeof(prec->hsv); + pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->hsv - (char *)prec); + pdbRecordType->papFldDes[56]->size=sizeof(prec->lsv); + pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->lsv - (char *)prec); + pdbRecordType->papFldDes[57]->size=sizeof(prec->hyst); + pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->hyst - (char *)prec); + pdbRecordType->papFldDes[58]->size=sizeof(prec->adel); + pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->adel - (char *)prec); + pdbRecordType->papFldDes[59]->size=sizeof(prec->mdel); + pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->mdel - (char *)prec); + pdbRecordType->papFldDes[60]->size=sizeof(prec->lalm); + pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->lalm - (char *)prec); + pdbRecordType->papFldDes[61]->size=sizeof(prec->alst); + pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->alst - (char *)prec); + pdbRecordType->papFldDes[62]->size=sizeof(prec->mlst); + pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->mlst - (char *)prec); + pdbRecordType->rec_size = sizeof(*prec); + return(0); +} +epicsExportRegistrar(xxxRecordSizeOffset); +#ifdef __cplusplus +} +#endif +#endif /*GEN_SIZE_OFFSET*/ diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile new file mode 100644 index 0000000..da5269a --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/Makefile @@ -0,0 +1,10 @@ +#This Makefile created by makeMakefile.pl + + +all : + $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86 $@ + +.DEFAULT: force + $(MAKE) -f ../Makefile TOP=../../.. T_A=linux-x86 $@ + +force: ; diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/MakefileInclude b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/MakefileInclude new file mode 100644 index 0000000..b78ba4a --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/MakefileInclude @@ -0,0 +1,359 @@ +#Do not modify this file. +#This file is created during the build. + +ifneq ($(strip $(ebctrl_SRCS_$(OS_CLASS))),) +ebctrl_SRCS+=$(subst -nil-,,$(ebctrl_SRCS_$(OS_CLASS))) +else +ifdef ebctrl_SRCS_DEFAULT +ebctrl_SRCS+=$(ebctrl_SRCS_DEFAULT) +endif +endif +ifneq ($(strip $(ebctrl_RCS_$(OS_CLASS))),) +ebctrl_RCS+=$(subst -nil-,,$(ebctrl_RCS_$(OS_CLASS))) +else +ifdef ebctrl_RCS_DEFAULT +ebctrl_RCS+=$(ebctrl_RCS_DEFAULT) +endif +endif +ifneq ($(strip $(ebctrl_OBJS_$(OS_CLASS))),) +ebctrl_OBJS+=$(subst -nil-,,$(ebctrl_OBJS_$(OS_CLASS))) +else +ifdef ebctrl_OBJS_DEFAULT +ebctrl_OBJS+=$(ebctrl_OBJS_DEFAULT) +endif +endif +ifneq ($(strip $(ebctrl_LDFLAGS_$(OS_CLASS))),) +ebctrl_LDFLAGS+=$(subst -nil-,,$(ebctrl_LDFLAGS_$(OS_CLASS))) +else +ifdef ebctrl_LDFLAGS_DEFAULT +ebctrl_LDFLAGS+=$(ebctrl_LDFLAGS_DEFAULT) +endif +endif +ifneq ($(strip $(ebctrl_OBJLIBS_$(OS_CLASS))),) +ebctrl_OBJLIBS+=$(subst -nil-,,$(ebctrl_OBJLIBS_$(OS_CLASS))) +else +ifdef ebctrl_OBJLIBS_DEFAULT +ebctrl_OBJLIBS+=$(ebctrl_OBJLIBS_DEFAULT) +endif +endif +ifneq ($(strip $(ebctrl_LDOBJS_$(OS_CLASS))),) +ebctrl_LDOBJS+=$(subst -nil-,,$(ebctrl_LDOBJS_$(OS_CLASS))) +else +ifdef ebctrl_LDOBJS_DEFAULT +ebctrl_LDOBJS+=$(ebctrl_LDOBJS_DEFAULT) +endif +endif +ebctrl_LDLIBS+=$(ebctrl_LIBS) +ifneq ($(strip $(ebctrl_LIBS_$(OS_CLASS))),) +ebctrl_LDLIBS+=$(subst -nil-,,$(ebctrl_LIBS_$(OS_CLASS))) +else +ifdef ebctrl_LIBS_DEFAULT +ebctrl_LDLIBS+=$(ebctrl_LIBS_DEFAULT) +endif +endif +ifneq ($(strip $(ebctrl_SYS_LIBS_$(OS_CLASS))),) +ebctrl_SYS_LIBS+=$(subst -nil-,,$(ebctrl_SYS_LIBS_$(OS_CLASS))) +else +ifdef ebctrl_SYS_LIBS_DEFAULT +ebctrl_SYS_LIBS+=$(ebctrl_SYS_LIBS_DEFAULT) +endif +endif +ebctrl_OBJS+=$(addsuffix $(OBJ),$(basename $(ebctrl_SRCS))) + +ifeq ($(filter ebctrl,$(TESTPROD) $(PROD)),ebctrl) +ifeq (,$(strip $(ebctrl_OBJS) $(PRODUCT_OBJS))) +ebctrl_OBJS+=ebctrl$(OBJ) +endif +ebctrl_RESS+=$(addsuffix $(RES),$(basename $(ebctrl_RCS))) +ebctrl_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(ebctrl_OBJS))) +ebctrl_DEPLIBS=$(foreach lib, $(ebctrl_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +ebctrl$(EXE): $(ebctrl_OBJSNAME) $(ebctrl_RESS) $(ebctrl_DEPLIBS) +endif + +ifeq ($(filter ebctrl,$(LIBRARY)),ebctrl) +ifneq ($(filter ebctrl,$(LOADABLE_LIBRARY)),ebctrl) +ifneq (,$(strip $(ebctrl_OBJS) $(LIBRARY_OBJS))) +BUILD_LIBRARY += ebctrl +endif +ebctrl_RESS+=$(addsuffix $(RES),$(basename $(ebctrl_RCS))) +ebctrl_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(ebctrl_OBJS))) +ebctrl_DEPLIBS=$(foreach lib, $(ebctrl_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +ebctrl_DLL_DEPLIBS=$(foreach lib, $(ebctrl_DLL_LIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +$(LIB_PREFIX)ebctrl$(LIB_SUFFIX):$(ebctrl_OBJSNAME) $(ebctrl_RESS) +$(LIB_PREFIX)ebctrl$(LIB_SUFFIX):$(ebctrl_DEPLIBS) +$(LIB_PREFIX)ebctrl$(SHRLIB_SUFFIX):$(ebctrl_OBJSNAME) $(ebctrl_RESS) +$(LIB_PREFIX)ebctrl$(SHRLIB_SUFFIX):$(ebctrl_DEPLIBS) +$(LIB_PREFIX)ebctrl$(SHRLIB_SUFFIX):$(ebctrl_DLL_DEPLIBS) +endif +endif +ifeq ($(filter ebctrl,$(LOADABLE_LIBRARY)),ebctrl) +ifneq (,$(strip $(ebctrl_OBJS) $(LIBRARY_OBJS))) +LOADABLE_BUILD_LIBRARY += ebctrl +endif +ebctrl_RESS+=$(addsuffix $(RES),$(basename $(ebctrl_RCS))) +ebctrl_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(ebctrl_OBJS))) +ebctrl_DEPLIBS=$(foreach lib, $(ebctrl_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +ebctrl_DLL_DEPLIBS=$(foreach lib, $(ebctrl_DLL_LIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +$(LOADABLE_SHRLIB_PREFIX)ebctrl$(LOADABLE_SHRLIB_SUFFIX):$(ebctrl_OBJSNAME) $(ebctrl_RESS) +$(LOADABLE_SHRLIB_PREFIX)ebctrl$(LOADABLE_SHRLIB_SUFFIX):$(ebctrl_DEPLIBS) +$(LOADABLE_SHRLIB_PREFIX)ebctrl$(LOADABLE_SHRLIB_SUFFIX):$(ebctrl_DLL_DEPLIBS) +endif + + +ifneq ($(strip $(xxxSupport_SRCS_$(OS_CLASS))),) +xxxSupport_SRCS+=$(subst -nil-,,$(xxxSupport_SRCS_$(OS_CLASS))) +else +ifdef xxxSupport_SRCS_DEFAULT +xxxSupport_SRCS+=$(xxxSupport_SRCS_DEFAULT) +endif +endif +ifneq ($(strip $(xxxSupport_RCS_$(OS_CLASS))),) +xxxSupport_RCS+=$(subst -nil-,,$(xxxSupport_RCS_$(OS_CLASS))) +else +ifdef xxxSupport_RCS_DEFAULT +xxxSupport_RCS+=$(xxxSupport_RCS_DEFAULT) +endif +endif +ifneq ($(strip $(xxxSupport_OBJS_$(OS_CLASS))),) +xxxSupport_OBJS+=$(subst -nil-,,$(xxxSupport_OBJS_$(OS_CLASS))) +else +ifdef xxxSupport_OBJS_DEFAULT +xxxSupport_OBJS+=$(xxxSupport_OBJS_DEFAULT) +endif +endif +ifneq ($(strip $(xxxSupport_LDFLAGS_$(OS_CLASS))),) +xxxSupport_LDFLAGS+=$(subst -nil-,,$(xxxSupport_LDFLAGS_$(OS_CLASS))) +else +ifdef xxxSupport_LDFLAGS_DEFAULT +xxxSupport_LDFLAGS+=$(xxxSupport_LDFLAGS_DEFAULT) +endif +endif +ifneq ($(strip $(xxxSupport_OBJLIBS_$(OS_CLASS))),) +xxxSupport_OBJLIBS+=$(subst -nil-,,$(xxxSupport_OBJLIBS_$(OS_CLASS))) +else +ifdef xxxSupport_OBJLIBS_DEFAULT +xxxSupport_OBJLIBS+=$(xxxSupport_OBJLIBS_DEFAULT) +endif +endif +ifneq ($(strip $(xxxSupport_LDOBJS_$(OS_CLASS))),) +xxxSupport_LDOBJS+=$(subst -nil-,,$(xxxSupport_LDOBJS_$(OS_CLASS))) +else +ifdef xxxSupport_LDOBJS_DEFAULT +xxxSupport_LDOBJS+=$(xxxSupport_LDOBJS_DEFAULT) +endif +endif +xxxSupport_LDLIBS+=$(xxxSupport_LIBS) +ifneq ($(strip $(xxxSupport_LIBS_$(OS_CLASS))),) +xxxSupport_LDLIBS+=$(subst -nil-,,$(xxxSupport_LIBS_$(OS_CLASS))) +else +ifdef xxxSupport_LIBS_DEFAULT +xxxSupport_LDLIBS+=$(xxxSupport_LIBS_DEFAULT) +endif +endif +ifneq ($(strip $(xxxSupport_SYS_LIBS_$(OS_CLASS))),) +xxxSupport_SYS_LIBS+=$(subst -nil-,,$(xxxSupport_SYS_LIBS_$(OS_CLASS))) +else +ifdef xxxSupport_SYS_LIBS_DEFAULT +xxxSupport_SYS_LIBS+=$(xxxSupport_SYS_LIBS_DEFAULT) +endif +endif +xxxSupport_OBJS+=$(addsuffix $(OBJ),$(basename $(xxxSupport_SRCS))) + +ifeq ($(filter xxxSupport,$(TESTPROD) $(PROD)),xxxSupport) +ifeq (,$(strip $(xxxSupport_OBJS) $(PRODUCT_OBJS))) +xxxSupport_OBJS+=xxxSupport$(OBJ) +endif +xxxSupport_RESS+=$(addsuffix $(RES),$(basename $(xxxSupport_RCS))) +xxxSupport_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(xxxSupport_OBJS))) +xxxSupport_DEPLIBS=$(foreach lib, $(xxxSupport_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +xxxSupport$(EXE): $(xxxSupport_OBJSNAME) $(xxxSupport_RESS) $(xxxSupport_DEPLIBS) +endif + +ifeq ($(filter xxxSupport,$(LIBRARY)),xxxSupport) +ifneq ($(filter xxxSupport,$(LOADABLE_LIBRARY)),xxxSupport) +ifneq (,$(strip $(xxxSupport_OBJS) $(LIBRARY_OBJS))) +BUILD_LIBRARY += xxxSupport +endif +xxxSupport_RESS+=$(addsuffix $(RES),$(basename $(xxxSupport_RCS))) +xxxSupport_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(xxxSupport_OBJS))) +xxxSupport_DEPLIBS=$(foreach lib, $(xxxSupport_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +xxxSupport_DLL_DEPLIBS=$(foreach lib, $(xxxSupport_DLL_LIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +$(LIB_PREFIX)xxxSupport$(LIB_SUFFIX):$(xxxSupport_OBJSNAME) $(xxxSupport_RESS) +$(LIB_PREFIX)xxxSupport$(LIB_SUFFIX):$(xxxSupport_DEPLIBS) +$(LIB_PREFIX)xxxSupport$(SHRLIB_SUFFIX):$(xxxSupport_OBJSNAME) $(xxxSupport_RESS) +$(LIB_PREFIX)xxxSupport$(SHRLIB_SUFFIX):$(xxxSupport_DEPLIBS) +$(LIB_PREFIX)xxxSupport$(SHRLIB_SUFFIX):$(xxxSupport_DLL_DEPLIBS) +endif +endif +ifeq ($(filter xxxSupport,$(LOADABLE_LIBRARY)),xxxSupport) +ifneq (,$(strip $(xxxSupport_OBJS) $(LIBRARY_OBJS))) +LOADABLE_BUILD_LIBRARY += xxxSupport +endif +xxxSupport_RESS+=$(addsuffix $(RES),$(basename $(xxxSupport_RCS))) +xxxSupport_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(xxxSupport_OBJS))) +xxxSupport_DEPLIBS=$(foreach lib, $(xxxSupport_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +xxxSupport_DLL_DEPLIBS=$(foreach lib, $(xxxSupport_DLL_LIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +$(LOADABLE_SHRLIB_PREFIX)xxxSupport$(LOADABLE_SHRLIB_SUFFIX):$(xxxSupport_OBJSNAME) $(xxxSupport_RESS) +$(LOADABLE_SHRLIB_PREFIX)xxxSupport$(LOADABLE_SHRLIB_SUFFIX):$(xxxSupport_DEPLIBS) +$(LOADABLE_SHRLIB_PREFIX)xxxSupport$(LOADABLE_SHRLIB_SUFFIX):$(xxxSupport_DLL_DEPLIBS) +endif + + +ifneq ($(strip $(genSub_SRCS_$(OS_CLASS))),) +genSub_SRCS+=$(subst -nil-,,$(genSub_SRCS_$(OS_CLASS))) +else +ifdef genSub_SRCS_DEFAULT +genSub_SRCS+=$(genSub_SRCS_DEFAULT) +endif +endif +ifneq ($(strip $(genSub_RCS_$(OS_CLASS))),) +genSub_RCS+=$(subst -nil-,,$(genSub_RCS_$(OS_CLASS))) +else +ifdef genSub_RCS_DEFAULT +genSub_RCS+=$(genSub_RCS_DEFAULT) +endif +endif +ifneq ($(strip $(genSub_OBJS_$(OS_CLASS))),) +genSub_OBJS+=$(subst -nil-,,$(genSub_OBJS_$(OS_CLASS))) +else +ifdef genSub_OBJS_DEFAULT +genSub_OBJS+=$(genSub_OBJS_DEFAULT) +endif +endif +ifneq ($(strip $(genSub_LDFLAGS_$(OS_CLASS))),) +genSub_LDFLAGS+=$(subst -nil-,,$(genSub_LDFLAGS_$(OS_CLASS))) +else +ifdef genSub_LDFLAGS_DEFAULT +genSub_LDFLAGS+=$(genSub_LDFLAGS_DEFAULT) +endif +endif +ifneq ($(strip $(genSub_OBJLIBS_$(OS_CLASS))),) +genSub_OBJLIBS+=$(subst -nil-,,$(genSub_OBJLIBS_$(OS_CLASS))) +else +ifdef genSub_OBJLIBS_DEFAULT +genSub_OBJLIBS+=$(genSub_OBJLIBS_DEFAULT) +endif +endif +ifneq ($(strip $(genSub_LDOBJS_$(OS_CLASS))),) +genSub_LDOBJS+=$(subst -nil-,,$(genSub_LDOBJS_$(OS_CLASS))) +else +ifdef genSub_LDOBJS_DEFAULT +genSub_LDOBJS+=$(genSub_LDOBJS_DEFAULT) +endif +endif +genSub_LDLIBS+=$(genSub_LIBS) +ifneq ($(strip $(genSub_LIBS_$(OS_CLASS))),) +genSub_LDLIBS+=$(subst -nil-,,$(genSub_LIBS_$(OS_CLASS))) +else +ifdef genSub_LIBS_DEFAULT +genSub_LDLIBS+=$(genSub_LIBS_DEFAULT) +endif +endif +ifneq ($(strip $(genSub_SYS_LIBS_$(OS_CLASS))),) +genSub_SYS_LIBS+=$(subst -nil-,,$(genSub_SYS_LIBS_$(OS_CLASS))) +else +ifdef genSub_SYS_LIBS_DEFAULT +genSub_SYS_LIBS+=$(genSub_SYS_LIBS_DEFAULT) +endif +endif +genSub_OBJS+=$(addsuffix $(OBJ),$(basename $(genSub_SRCS))) + +ifeq ($(filter genSub,$(TESTPROD) $(PROD)),genSub) +ifeq (,$(strip $(genSub_OBJS) $(PRODUCT_OBJS))) +genSub_OBJS+=genSub$(OBJ) +endif +genSub_RESS+=$(addsuffix $(RES),$(basename $(genSub_RCS))) +genSub_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(genSub_OBJS))) +genSub_DEPLIBS=$(foreach lib, $(genSub_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +genSub$(EXE): $(genSub_OBJSNAME) $(genSub_RESS) $(genSub_DEPLIBS) +endif + +ifeq ($(filter genSub,$(LIBRARY)),genSub) +ifneq ($(filter genSub,$(LOADABLE_LIBRARY)),genSub) +ifneq (,$(strip $(genSub_OBJS) $(LIBRARY_OBJS))) +BUILD_LIBRARY += genSub +endif +genSub_RESS+=$(addsuffix $(RES),$(basename $(genSub_RCS))) +genSub_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(genSub_OBJS))) +genSub_DEPLIBS=$(foreach lib, $(genSub_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +genSub_DLL_DEPLIBS=$(foreach lib, $(genSub_DLL_LIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +$(LIB_PREFIX)genSub$(LIB_SUFFIX):$(genSub_OBJSNAME) $(genSub_RESS) +$(LIB_PREFIX)genSub$(LIB_SUFFIX):$(genSub_DEPLIBS) +$(LIB_PREFIX)genSub$(SHRLIB_SUFFIX):$(genSub_OBJSNAME) $(genSub_RESS) +$(LIB_PREFIX)genSub$(SHRLIB_SUFFIX):$(genSub_DEPLIBS) +$(LIB_PREFIX)genSub$(SHRLIB_SUFFIX):$(genSub_DLL_DEPLIBS) +endif +endif +ifeq ($(filter genSub,$(LOADABLE_LIBRARY)),genSub) +ifneq (,$(strip $(genSub_OBJS) $(LIBRARY_OBJS))) +LOADABLE_BUILD_LIBRARY += genSub +endif +genSub_RESS+=$(addsuffix $(RES),$(basename $(genSub_RCS))) +genSub_OBJSNAME+=$(addsuffix $(OBJ),$(basename $(genSub_OBJS))) +genSub_DEPLIBS=$(foreach lib, $(genSub_LDLIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +genSub_DLL_DEPLIBS=$(foreach lib, $(genSub_DLL_LIBS),\ + $(firstword $(wildcard $(addsuffix /$(LIB_PREFIX)$(lib).*,\ + $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)))\ + $(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX),\ + $(firstword $($(lib)_DIR) $(SHRLIB_SEARCH_DIRS))/))) +$(LOADABLE_SHRLIB_PREFIX)genSub$(LOADABLE_SHRLIB_SUFFIX):$(genSub_OBJSNAME) $(genSub_RESS) +$(LOADABLE_SHRLIB_PREFIX)genSub$(LOADABLE_SHRLIB_SUFFIX):$(genSub_DEPLIBS) +$(LOADABLE_SHRLIB_PREFIX)genSub$(LOADABLE_SHRLIB_SUFFIX):$(genSub_DLL_DEPLIBS) +endif + diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/devXxxSoft.depends b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/devXxxSoft.depends new file mode 100644 index 0000000..b328cc4 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/devXxxSoft.depends @@ -0,0 +1,34 @@ +# DO NOT EDIT: This file created by mkmf.pl,v 1.5 2002/03/25 21:33:24 jba Exp $ + +devXxxSoft.o : /home/scs/base-3.14.9/include/alarm.h +devXxxSoft.o : /home/scs/base-3.14.9/include/cvtTable.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbDefs.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbAccess.h +devXxxSoft.o : /home/scs/base-3.14.9/include/recGbl.h +devXxxSoft.o : /home/scs/base-3.14.9/include/recSup.h +devXxxSoft.o : /home/scs/base-3.14.9/include/devSup.h +devXxxSoft.o : /home/scs/base-3.14.9/include/link.h +devXxxSoft.o : ../../../include/xxxRecord.h +devXxxSoft.o : /home/scs/base-3.14.9/include/epicsExport.h +devXxxSoft.o : /home/scs/base-3.14.9/include/shareLib.h +devXxxSoft.o : /home/scs/base-3.14.9/include/epicsTypes.h +devXxxSoft.o : /home/scs/base-3.14.9/include/errMdef.h +devXxxSoft.o : /home/scs/base-3.14.9/include/epicsTime.h +devXxxSoft.o : /home/scs/base-3.14.9/include/caeventmask.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbFldTypes.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbBase.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbAddr.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbLock.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbAccessDefs.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbCa.h +devXxxSoft.o : /home/scs/base-3.14.9/include/dbCommon.h +devXxxSoft.o : /home/scs/base-3.14.9/include/db_field_log.h +devXxxSoft.o : /home/scs/base-3.14.9/include/ellLib.h +devXxxSoft.o : /home/scs/base-3.14.9/include/epicsMutex.h +devXxxSoft.o : /home/scs/base-3.14.9/include/errlog.h +devXxxSoft.o : /home/scs/base-3.14.9/include/os/Linux/osdTime.h +devXxxSoft.o : /home/scs/base-3.14.9/include/epicsAssert.h +devXxxSoft.o : /home/scs/base-3.14.9/include/compilerDependencies.h +devXxxSoft.o : /home/scs/base-3.14.9/include/os/Linux/osdMutex.h + + diff --git a/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl b/ebctrl/ioc/ebctrlApp/src/O.linux-x86/ebctrl new file mode 100755 index 0000000000000000000000000000000000000000..71b0b6ad63ca0b7dadd40f0484871f8f731ab784 GIT binary patch literal 104181 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 + +#include +#include +#include +#include + +int mySubDebug; + +typedef long (*processMethod)(subRecord *precord); + +static long mySubInit(subRecord *precord,processMethod process) +{ + if (mySubDebug) + printf("Record %s called mySubInit(%p, %p)\n", + precord->name, (void*) precord, (void*) process); + return(0); +} + +static long mySubProcess(subRecord *precord) +{ + if (mySubDebug) + printf("Record %s called mySubProcess(%p)\n", + precord->name, (void*) precord); + return(0); +} + +/* Register these symbols for use by IOC code: */ + +epicsExportAddress(int, mySubDebug); +epicsRegisterFunction(mySubInit); +epicsRegisterFunction(mySubProcess); diff --git a/ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd b/ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd new file mode 100644 index 0000000..a907fb7 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/dbSubExample.dbd @@ -0,0 +1,3 @@ +variable(mySubDebug) +function(mySubInit) +function(mySubProcess) diff --git a/ebctrl/ioc/ebctrlApp/src/devXxxSoft.c b/ebctrl/ioc/ebctrlApp/src/devXxxSoft.c new file mode 100644 index 0000000..0507fdf --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/devXxxSoft.c @@ -0,0 +1,58 @@ +/* devXxxSoft.c */ +/* Example device support module */ + +#include +#include +#include +#include + +#include "alarm.h" +#include "cvtTable.h" +#include "dbDefs.h" +#include "dbAccess.h" +#include "recGbl.h" +#include "recSup.h" +#include "devSup.h" +#include "link.h" +#include "xxxRecord.h" +#include "epicsExport.h" + +/*Create the dset for devXxxSoft */ +static long init_record(); +static long read_xxx(); +struct { + long number; + DEVSUPFUN report; + DEVSUPFUN init; + DEVSUPFUN init_record; + DEVSUPFUN get_ioint_info; + DEVSUPFUN read_xxx; +}devXxxSoft={ + 5, + NULL, + NULL, + init_record, + NULL, + read_xxx, +}; +epicsExportAddress(dset,devXxxSoft); + + +static long init_record(pxxx) + struct xxxRecord *pxxx; +{ + if(recGblInitConstantLink(&pxxx->inp,DBF_DOUBLE,&pxxx->val)) + pxxx->udf = FALSE; + return(0); +} + +static long read_xxx(pxxx) + struct xxxRecord *pxxx; +{ + long status; + + status = dbGetLink(&(pxxx->inp),DBF_DOUBLE, &(pxxx->val),0,0); + /*If return was succesful then set undefined false*/ + if(!status) pxxx->udf = FALSE; + return(0); +} diff --git a/ebctrl/ioc/ebctrlApp/src/ebctrlHello.c b/ebctrl/ioc/ebctrlApp/src/ebctrlHello.c new file mode 100644 index 0000000..9b4418a --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/ebctrlHello.c @@ -0,0 +1,31 @@ +/* Example showing how to register a new command with iocsh */ + +#include + +#include +#include + +/* This is the command, which the vxWorks shell will call directly */ +void hello(const char *name) { + if (name) { + printf("Hello %s, from ebctrl\n", name); + } else { + puts("Hello from ebctrl"); + } +} + +/* Information needed by iocsh */ +static const iocshArg helloArg0 = {"name", iocshArgString}; +static const iocshArg *helloArgs[] = {&helloArg0}; +static const iocshFuncDef helloFuncDef = {"hello", 1, helloArgs}; + +/* Wrapper called by iocsh, selects the argument types that hello needs */ +static void helloCallFunc(const iocshArgBuf *args) { + hello(args[0].sval); +} + +/* Registration routine, runs at startup */ +static void helloRegister(void) { + iocshRegister(&helloFuncDef, helloCallFunc); +} +epicsExportRegistrar(helloRegister); diff --git a/ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd b/ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd new file mode 100644 index 0000000..64eb038 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/ebctrlHello.dbd @@ -0,0 +1 @@ +registrar(helloRegister) diff --git a/ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp b/ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp new file mode 100644 index 0000000..43a48f6 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/ebctrlMain.cpp @@ -0,0 +1,23 @@ +/* ebctrlMain.cpp */ +/* Author: Marty Kraimer Date: 17MAR2000 */ + +#include +#include +#include +#include +#include + +#include "epicsExit.h" +#include "epicsThread.h" +#include "iocsh.h" + +int main(int argc,char *argv[]) +{ + if(argc>=2) { + iocsh(argv[1]); + epicsThreadSleep(.2); + } + iocsh(NULL); + epicsExit(0); + return(0); +} diff --git a/ebctrl/ioc/ebctrlApp/src/evtbuild.c b/ebctrl/ioc/ebctrlApp/src/evtbuild.c new file mode 100644 index 0000000..b0a9baa --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/evtbuild.c @@ -0,0 +1,93 @@ +#include +#include + +#include +#include +#include +#include +#include + +#include "worker.h" + +int evtbuildDebug; + +long evtbuild_init( struct genSubRecord *pgsub ) +{ + return(0); +} + +long evtbuild_proc( struct genSubRecord *pgsub ) +{ + + unsigned long *out[7]; + unsigned long *temp; + int i; + + out[0] = (unsigned long *)pgsub->vala; + out[1] = (unsigned long *)pgsub->valb; + out[2] = (unsigned long *)pgsub->valc; + out[3] = (unsigned long *)pgsub->vald; + out[4] = (unsigned long *)pgsub->vale; + out[5] = (unsigned long *)pgsub->valf; + out[6] = (unsigned long *)pgsub->valg; + out[7] = (unsigned long *)pgsub->valh; + + for( i=0; i<7; i++ ) + *out[i] = 0; + + if( Worker_getStatistic( "daq_evtbuild", "nrOfMsgs", out[0] ) == -1) { + *out[7] = 0; /* status: Event Builder is off */ + if(evtbuildDebug) + printf("Worker_getStatistic failed for nrOfMsgs!\n"); + } + else { + *out[7] = 1; /* status: Event Builder is on */ + if(evtbuildDebug) + printf("Worker_getStatistic::nrOfMsgs = %lu\n", (*out[0])); + } + + if( Worker_getStatistic( "daq_evtbuild", "bytesWritten", out[1] ) == -1) + if(evtbuildDebug) + printf("Worker_getStatistic failed for bytesWritten!\n"); + + if( Worker_getStatistic( "daq_evtbuild", "evtsComplete", out[2] ) == -1) + if(evtbuildDebug) + printf("Worker_getStatistic failed for evtsComplete!\n"); + + if( Worker_getStatistic( "daq_evtbuild", "evtsDiscarded", out[3] ) == -1) + if(evtbuildDebug) + printf("Worker_getStatistic failed for evtsDiscarded!\n"); + + if( Worker_getStatistic( "daq_evtbuild", "evtsDataError", out[4] ) == -1) + if(evtbuildDebug) + printf("Worker_getStatistic failed for evtsDataError!\n"); + + if( Worker_getStatistic( "daq_evtbuild", "evtsTagError", out[5] ) == -1) + if(evtbuildDebug) + printf("Worker_getStatistic failed for evtsTagError!\n"); + + char buf[100]; + for( i=0; i<(*out[0]); i++ ) { + + sprintf( buf, "evtbuildBuff%d", i ); + + if( Worker_getStatistic( "daq_evtbuild", buf, out[6] ) == -1) { + if(evtbuildDebug) + printf("Worker_getStatistic failed for %s!\n", buf); + } + else { + if(evtbuildDebug) + printf("%s = %lu\n", buf, *out[6]); + + out[6]++; + } + } + + return(0); +} + +/* Register these symbols for use by IOC code: */ + +epicsExportAddress(int, evtbuildDebug); +epicsRegisterFunction(evtbuild_init); +epicsRegisterFunction(evtbuild_proc); diff --git a/ebctrl/ioc/ebctrlApp/src/evtbuild.dbd b/ebctrl/ioc/ebctrlApp/src/evtbuild.dbd new file mode 100644 index 0000000..7a19465 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/evtbuild.dbd @@ -0,0 +1,3 @@ +variable(evtbuildDebug) +function(evtbuild_init) +function(evtbuild_proc) \ No newline at end of file diff --git a/ebctrl/ioc/ebctrlApp/src/genSubRecord.c b/ebctrl/ioc/ebctrlApp/src/genSubRecord.c new file mode 100755 index 0000000..4b5583c --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/genSubRecord.c @@ -0,0 +1,1355 @@ +/* genSubRecord.c - Record Support Routines for + * General Subroutine Records + * + * Author: Andy Foster + * + * History + * ------- + * Version 1.0 12/11/96 ajf Created. + * Version 1.1 18/04/97 ajf Fixed get_value, pvdes->pvalue, field. + * Version 1.2 18/06/97 ajf Changed number of fields from 10 to 21. + * Version 1.3 05/04/00 cjm Fixed bug where fldnames was defined as + * a static array. Cannot do this since there + * are many instances of the genSub record. + * Version 1.4 15/03/01 ajf Changes for 3.13. + * Set precision of VERS field to 1. + * Initialise "string" constants to 0. + * Replace "symFindbyName" by "symFindbyNameEPICS" + * for architectures which do not prepend an + * "_" (i.e. PPC). + * Version 1.5 11/12/03 ajf Changes to comply with the new macro for + * "dbGetLink" in EPICS 3.13.9. + * Version 1.6 16/03/04 wen Convert to R3.14. + * + */ + +#define DEBUG 0 +#define VERSION 1.6 + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define GEN_SIZE_OFFSET +#include +#undef GEN_SIZE_OFFSET + +typedef long (*SUBFUNCPTR)(genSubRecord *); + +/* Create RSET - Record Support Entry Table*/ + +static long init_record(); +static long process(); +static long get_value(); +static long get_precision(); +static long cvt_dbaddr(); +static long get_array_info(); +static long put_array_info(); +static long special(); +#define report NULL +#define initialize NULL +#define get_units NULL +#define get_graphic_double NULL +#define get_control_double NULL +#define get_alarm_double NULL +#define get_enum_str NULL +#define get_enum_strs NULL +#define put_enum_str NULL + +rset genSubRSET={ + RSETNUMBER, + report, + initialize, + init_record, + process, + special, + get_value, + cvt_dbaddr, + get_array_info, + put_array_info, + get_units, + get_precision, + get_enum_str, + get_enum_strs, + put_enum_str, + get_graphic_double, + get_control_double, + get_alarm_double }; +epicsExportAddress(rset,genSubRSET); + +static void monitor( genSubRecord *, int ); +static long do_sub( genSubRecord * ); +static long findField( int, struct dbAddr *, long *, long ); + +#define ARG_MAX 21 +#define MAX_ARRAY_SIZE 10000000 +#ifndef FLDNAME_SZ +# define FLDNAME_SZ 4 +#endif + +/* These are the names of the Input fields */ +static char Ifldnames[ARG_MAX][FLDNAME_SZ+1] = + { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", + "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U" }; + +/* These are the names of the Output fields */ +static char Ofldnames[ARG_MAX][FLDNAME_SZ+1] = + { "VALA", "VALB", "VALC", "VALD", "VALE", "VALF", "VALG", + "VALH", "VALI", "VALJ", "VALK", "VALL", "VALM", "VALN", + "VALO", "VALP", "VALQ", "VALR", "VALS", "VALT", "VALU" }; + +/* Sizes of field types */ +static int sizeofTypes[] = {0, 1, 1, 2, 2, 4, 4, 4, 8, 2}; + +/* This is here so that input link checking can be switched on from the shell */ +int CHECKgensubLINKS = 0; + + +static long init_record( genSubRecord *pgsub, int pass ) +{ + SUBFUNCPTR psubroutine; + SUBFUNCPTR sub_addr; + long status; + long error; + int i; + int j; + char *ufunct; + unsigned short *typptr; + void **valptr; + void **ovlptr; + unsigned long *nelptr; + unsigned long *totptr; + unsigned long num; + struct link *plinkin; + struct link *plinkout; + char fldnames[ARG_MAX][FLDNAME_SZ+1]; + + status = 0; + if( pass == 0 ) + { + pgsub->vers = VERSION; + for( j=0; j<2; j++ ) + { + if( j == 0 ) /* Input fields */ + { + ufunct = pgsub->ufa; + typptr = &pgsub->fta; + valptr = &pgsub->a; + ovlptr = NULL; + nelptr = &pgsub->noa; + memcpy( fldnames, Ifldnames, ARG_MAX*(FLDNAME_SZ+1) ); + } + else /* Output fields */ + { + ufunct = pgsub->ufva; + typptr = &pgsub->ftva; + valptr = &pgsub->vala; + ovlptr = &pgsub->ovla; + nelptr = &pgsub->nova; + memcpy( fldnames, Ofldnames, ARG_MAX*(FLDNAME_SZ+1) ); + } + totptr = &pgsub->tova; + + for( i=0; i MAX_ARRAY_SIZE ) + { + printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num); + status = S_db_errArg; + } + else + { + *valptr = (char *)calloc( *nelptr, *totptr ); + if( j == 1 ) + *ovlptr = (char *)calloc( *nelptr, *totptr ); + *nelptr = num; + *totptr = num; +#if DEBUG + printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr ); +#endif + } + } + } + else + { + if( *typptr == DBF_STRING ) + { + num = (*nelptr)*MAX_STRING_SIZE; + if( num > MAX_ARRAY_SIZE ) + { + printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num); + status = S_db_errArg; + } + else + { + *valptr = (char *)calloc( *nelptr, MAX_STRING_SIZE ); + if( j == 1 ) + *ovlptr = (char *)calloc( *nelptr, MAX_STRING_SIZE ); + *totptr = num; +#if DEBUG + printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr); +#endif + } + } + else + { + if( *typptr > DBF_ENUM ) + *typptr = 2; + num = (*nelptr)*sizeofTypes[*typptr]; + if( num > MAX_ARRAY_SIZE ) + { + printf("Link %s - Array too large! %ld Bytes\n", fldnames[i], num); + status = S_db_errArg; + } + else + { + *valptr = (char *)calloc( *nelptr, sizeofTypes[*typptr] ); + if( j == 1 ) + *ovlptr = (char *)calloc( *nelptr, sizeofTypes[*typptr] ); + *totptr = num; +#if DEBUG + printf("Link(%s): Address = 0x%x, Bytes = %d\n", fldnames[i], (unsigned int)(*valptr), *totptr); +#endif + } + } + } + if( j == 1 ) + ovlptr++; + } + if( status ) + return(status); + } + return(status); + } + else if( pass == 1 ) + { + /* Deal with the Subroutine Input Link */ + + switch( pgsub->subl.type ) + { + case (CONSTANT): + if( pgsub->lflg == genSubLFLG_READ ) + { + recGblInitConstantLink( &pgsub->subl, DBF_STRING, pgsub->snam ); + if( !strncmp(pgsub->snam, "0.0", 3) ) + strcpy(pgsub->snam, " "); + } + break; + + case (PV_LINK): + case (DB_LINK): + case (CA_LINK): + break; + + default: + recGblRecordError( S_db_badField, (void *)pgsub, + "genSubRecord(init_record) Illegal SUBROUTINE LINK" ); + status = S_db_badField; + break; + } + + if( !status ) + { + /* Initialise Input Links */ + + plinkin = &pgsub->inpa; + typptr = &pgsub->fta; + valptr = &pgsub->a; + nelptr = &pgsub->noa; + for( i=0; iudf = FALSE; + } + else + pgsub->udf = TRUE; + } + break; + + case (PV_LINK): +#if DEBUG + printf("Input Link %s is a PV_LINK\n", Ifldnames[i] ); +#endif + break; + + case (CA_LINK): +#if DEBUG + printf("Input Link %s is a CA_LINK\n", Ifldnames[i] ); +#endif + break; + + case (DB_LINK): +#if DEBUG + printf("Input Link %s is a DB_LINK\n", Ifldnames[i] ); +#endif + break; + + default: + recGblRecordError( S_db_badField, (void *)pgsub, + "genSubRecord(init_record) Illegal INPUT LINK" ); + status = S_db_badField; + break; + } + } + + if( status ) + return(status); + + /* Initialise Output Links */ + + plinkout = &pgsub->outa; + typptr = &pgsub->ftva; + valptr = &pgsub->vala; + for( i=0; iinam[0] != '\0' ) + { + sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->inam); + if( sub_addr == NULL ) + { + recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)"); + status = S_db_BadSub; + } + else + { + psubroutine = sub_addr; + error = psubroutine(pgsub); + } + } + } + + if( !status ) + { + if( pgsub->lflg == genSubLFLG_IGNORE ) + { + if( pgsub->snam[0] != '\0' ) + { + sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->snam); +#if DEBUG + printf("Calling registryFunctionFind from init_record\n"); +#endif + if( sub_addr == NULL ) + { + recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(init_record)"); + status = S_db_BadSub; + } + else + pgsub->sadr = (long)sub_addr; + } + } + } + } + } + return( status ); +} + + +static long process( genSubRecord *pgsub ) +{ + int i; + int j; + int len; + SUBFUNCPTR sub_addr; + long status; + struct link *plinkin; + struct link *plinkout; + unsigned short *typptr; + unsigned long *nelptr; + long nRequest; + long options; + void **valptr; + + pgsub->pact = TRUE; + status = 0; + + if( pgsub->lflg == genSubLFLG_READ ) + { + /* Get the Subroutine Name from the Link and look it up */ + + nRequest = 1; + options = 0; + status = dbGetLink( &(pgsub->subl), DBR_STRING, pgsub->snam, &options, &nRequest ); + if( !status ) + { + if( pgsub->snam[0] != '\0' ) + { + if( strcmp(pgsub->snam, pgsub->onam) ) + { + /* To save time, only look up the routine if it has a different name */ + + strcpy(pgsub->onam, pgsub->snam); + sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->snam); +#if DEBUG + printf("Calling registryFunctionFind from process\n"); +#endif + if( sub_addr == NULL) + { + recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(process) registryFunctionFind failed"); + status = S_db_BadSub; + } + else + pgsub->sadr = (long)sub_addr; + } + } + } + } + + /* Get the Values from the input links */ + + if( !status ) + { + plinkin = &pgsub->inpa; + valptr = &pgsub->a; + nelptr = &pgsub->noa; + typptr = &pgsub->fta; + for( i=0; iname); + printf("genSub=\"%s\"", pgsub->name); + for( j=0; jvalue.pv_link.pvname ); + } + } + break; + } + } + } + + /* From EPICS 3.13.8, dbGetLink returns -1 if the link is */ + /* a disconnected CA link. This means that the user routine */ + /* will no longer be called in this case. Neither will the */ + /* values be placed on the output links. This is consistent */ + /* with the records in EPICS base. */ + + if( !status ) + pgsub->val = do_sub(pgsub); + + /* Put the values on the output links */ + + if( !status ) + { + plinkout = &pgsub->outa; + valptr = &pgsub->vala; + nelptr = &pgsub->nova; + typptr = &pgsub->ftva; + for( i=0; ipact = FALSE; + + return(0); +} + + +static long get_precision( struct dbAddr *paddr, long *precision ) +{ + genSubRecord *pgsub; + int fieldIndex; + + fieldIndex = dbGetFieldIndex(paddr); + if( fieldIndex == genSubRecordVERS ) + { + *precision = 1; + return 0; + } + + pgsub = (genSubRecord *)paddr->precord; + *precision = pgsub->prec; + if( paddr->pfield == (void *)&pgsub->val ) + return(0); + recGblGetPrec(paddr,precision); + return(0); +} + + +static long get_value( genSubRecord *pgsub, struct valueDes *pvdes ) +{ +#if DEBUG + printf("Calling get_value...\n"); +#endif + pvdes->no_elements = 1; + pvdes->pvalue = (void *)(&pgsub->val); + pvdes->field_type = DBF_LONG; + return(0); +} + + +static void monitor( genSubRecord *pgsub, int reset ) +{ + int i; + unsigned short monitor_mask; + unsigned long *totptr; + void **valptr; + void **ovlptr; + + if( reset ) + monitor_mask = recGblResetAlarms(pgsub); + else + monitor_mask = 0; + + monitor_mask |= DBE_VALUE | DBE_LOG; + + /* Post events for SADR (subroutine address) whenever this routine is called */ + + if( monitor_mask ) + { + if( pgsub->sadr != pgsub->osad ) + { + db_post_events(pgsub, &pgsub->sadr, monitor_mask); + pgsub->osad = pgsub->sadr; + } + } + + /* Post events for VAL and output fields when this routine called from process */ + /* Event posting on output arrays depends on the setting of pgsub->eflg */ + + if( reset ) + { + if( monitor_mask ) + { + if( pgsub->val != pgsub->oval ) + { + db_post_events(pgsub, &pgsub->val, monitor_mask); + pgsub->oval = pgsub->val; + } + } + if( pgsub->eflg == genSubEFLG_NEVER ) + return; + else if( pgsub->eflg == genSubEFLG_ON_CHANGE ) + { + if(monitor_mask) + { + valptr = &pgsub->vala; + ovlptr = &pgsub->ovla; + totptr = &pgsub->tova; + for( i=0; ieflg == genSubEFLG_ALWAYS ) + { + if(monitor_mask) + { + valptr = &pgsub->vala; + for( i=0; isnam[0] != '\0' ) + { + psubroutine = (SUBFUNCPTR)((void *)pgsub->sadr); + if( psubroutine == NULL) + { + recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(process) NO SUBROUTINE"); + status = S_db_BadSub; + } + else + { + status = psubroutine(pgsub); + if( status < 0 ) + recGblSetSevr(pgsub, SOFT_ALARM, pgsub->brsv); + else + pgsub->udf = FALSE; + } + } + else + status = 0; + + return( status ); +} + + +static long cvt_dbaddr( struct dbAddr *paddr ) +{ + int error; + int flag; + long no_elements; + long nNew; + +#if DEBUG + printf("Calling cvt_dbaddr...\n"); +#endif + + flag = 1; + nNew = 0; + error = findField( flag, paddr, &no_elements, nNew ); + if( error ) + printf("cvt_dbaddr: Could not find field\n"); + return(0); +} + + +static long get_array_info( struct dbAddr *paddr, long *no_elements, long *offset ) +{ + int error; + int flag; + long nNew; + +#if DEBUG + printf("Calling get_array_info...\n"); +#endif + *offset = 0; + nNew = 0; + flag = 2; + error = findField( flag, paddr, no_elements, nNew ); + if( error ) + printf("get_array_info: Could not find field\n"); + return(0); +} + + +static long put_array_info( struct dbAddr *paddr, long nNew ) +{ + int error; + int flag; + long no_elements; + +#if DEBUG + printf("Calling put_array_info...\n"); +#endif + flag = 3; + error = findField( flag, paddr, &no_elements, nNew ); + if( error ) + printf("put_array_info: Could not find field\n"); + return(0); +} + + +static long special( struct dbAddr *paddr, int after ) +{ + genSubRecord *pgsub; + SUBFUNCPTR sub_addr; + + pgsub = (genSubRecord *)paddr->precord; + if( after ) + { + if( pgsub->lflg == genSubLFLG_IGNORE ) + { + if( pgsub->snam[0] != '\0' ) + { + sub_addr = (SUBFUNCPTR)registryFunctionFind(pgsub->snam); +#if DEBUG + printf("Calling registryFunctionFind from special\n"); +#endif + if( sub_addr == NULL) + { + recGblRecordError(S_db_BadSub,(void *)pgsub,"genSubRecord(special) registryFunctionFind failed"); + return(S_db_BadSub); + } + else + { + pgsub->sadr = (long)sub_addr; + monitor(pgsub, 0); + } + } + } + } + return(0); +} + + +static long findField( int flag, struct dbAddr *paddr, long *no_elements, long nNew ) +{ + long error; + int fieldIndex; + genSubRecord *pgsub; + + pgsub = (genSubRecord *)paddr->precord; + error = 0; + fieldIndex = dbGetFieldIndex(paddr); + switch( fieldIndex ) + { + case genSubRecordA: + if( flag == 1 ) + { + paddr->pfield = pgsub->a; + paddr->no_elements = pgsub->noa; + paddr->field_type = pgsub->fta; + } + else if( flag == 2 ) + *no_elements = pgsub->noa; + else if( flag == 3 ) + pgsub->noa = nNew; + break; + + case genSubRecordB: + if( flag == 1 ) + { + paddr->pfield = pgsub->b; + paddr->no_elements = pgsub->nob; + paddr->field_type = pgsub->ftb; + } + else if( flag == 2 ) + *no_elements = pgsub->nob; + else if( flag == 3 ) + pgsub->nob = nNew; + break; + + case genSubRecordC: + if( flag == 1 ) + { + paddr->pfield = pgsub->c; + paddr->no_elements = pgsub->noc; + paddr->field_type = pgsub->ftc; + } + else if( flag == 2 ) + *no_elements = pgsub->noc; + else if( flag == 3 ) + pgsub->noc = nNew; + break; + + case genSubRecordD: + if( flag == 1 ) + { + paddr->pfield = pgsub->d; + paddr->no_elements = pgsub->nod; + paddr->field_type = pgsub->ftd; + } + else if( flag == 2 ) + *no_elements = pgsub->nod; + else if( flag == 3 ) + pgsub->nod = nNew; + break; + + case genSubRecordE: + if( flag == 1 ) + { + paddr->pfield = pgsub->e; + paddr->no_elements = pgsub->noe; + paddr->field_type = pgsub->fte; + } + else if( flag == 2 ) + *no_elements = pgsub->noe; + else if( flag == 3 ) + pgsub->noe = nNew; + break; + + case genSubRecordF: + if( flag == 1 ) + { + paddr->pfield = pgsub->f; + paddr->no_elements = pgsub->nof; + paddr->field_type = pgsub->ftf; + } + else if( flag == 2 ) + *no_elements = pgsub->nof; + else if( flag == 3 ) + pgsub->nof = nNew; + break; + + case genSubRecordG: + if( flag == 1 ) + { + paddr->pfield = pgsub->g; + paddr->no_elements = pgsub->nog; + paddr->field_type = pgsub->ftg; + } + else if( flag == 2 ) + *no_elements = pgsub->nog; + else if( flag == 3 ) + pgsub->nog = nNew; + break; + + case genSubRecordH: + if( flag == 1 ) + { + paddr->pfield = pgsub->h; + paddr->no_elements = pgsub->noh; + paddr->field_type = pgsub->fth; + } + else if( flag == 2 ) + *no_elements = pgsub->noh; + else if( flag == 3 ) + pgsub->noh = nNew; + break; + + case genSubRecordI: + if( flag == 1 ) + { + paddr->pfield = pgsub->i; + paddr->no_elements = pgsub->noi; + paddr->field_type = pgsub->fti; + } + else if( flag == 2 ) + *no_elements = pgsub->noi; + else if( flag == 3 ) + pgsub->noi = nNew; + break; + + case genSubRecordJ: + if( flag == 1 ) + { + paddr->pfield = pgsub->j; + paddr->no_elements = pgsub->noj; + paddr->field_type = pgsub->ftj; + } + else if( flag == 2 ) + *no_elements = pgsub->noj; + else if( flag == 3 ) + pgsub->noj = nNew; + break; + + case genSubRecordK: + if( flag == 1 ) + { + paddr->pfield = pgsub->k; + paddr->no_elements = pgsub->nok; + paddr->field_type = pgsub->ftk; + } + else if( flag == 2 ) + *no_elements = pgsub->nok; + else if( flag == 3 ) + pgsub->nok = nNew; + break; + + case genSubRecordL: + if( flag == 1 ) + { + paddr->pfield = pgsub->l; + paddr->no_elements = pgsub->nol; + paddr->field_type = pgsub->ftl; + } + else if( flag == 2 ) + *no_elements = pgsub->nol; + else if( flag == 3 ) + pgsub->nol = nNew; + break; + + case genSubRecordM: + if( flag == 1 ) + { + paddr->pfield = pgsub->m; + paddr->no_elements = pgsub->nom; + paddr->field_type = pgsub->ftm; + } + else if( flag == 2 ) + *no_elements = pgsub->nom; + else if( flag == 3 ) + pgsub->nom = nNew; + break; + + case genSubRecordN: + if( flag == 1 ) + { + paddr->pfield = pgsub->n; + paddr->no_elements = pgsub->non; + paddr->field_type = pgsub->ftn; + } + else if( flag == 2 ) + *no_elements = pgsub->non; + else if( flag == 3 ) + pgsub->non = nNew; + break; + + case genSubRecordO: + if( flag == 1 ) + { + paddr->pfield = pgsub->o; + paddr->no_elements = pgsub->noo; + paddr->field_type = pgsub->fto; + } + else if( flag == 2 ) + *no_elements = pgsub->noo; + else if( flag == 3 ) + pgsub->noo = nNew; + break; + + case genSubRecordP: + if( flag == 1 ) + { + paddr->pfield = pgsub->p; + paddr->no_elements = pgsub->nop; + paddr->field_type = pgsub->ftp; + } + else if( flag == 2 ) + *no_elements = pgsub->nop; + else if( flag == 3 ) + pgsub->nop = nNew; + break; + + case genSubRecordQ: + if( flag == 1 ) + { + paddr->pfield = pgsub->q; + paddr->no_elements = pgsub->noq; + paddr->field_type = pgsub->ftq; + } + else if( flag == 2 ) + *no_elements = pgsub->noq; + else if( flag == 3 ) + pgsub->noq = nNew; + break; + + case genSubRecordR: + if( flag == 1 ) + { + paddr->pfield = pgsub->r; + paddr->no_elements = pgsub->nor; + paddr->field_type = pgsub->ftr; + } + else if( flag == 2 ) + *no_elements = pgsub->nor; + else if( flag == 3 ) + pgsub->nor = nNew; + break; + + case genSubRecordS: + if( flag == 1 ) + { + paddr->pfield = pgsub->s; + paddr->no_elements = pgsub->nos; + paddr->field_type = pgsub->fts; + } + else if( flag == 2 ) + *no_elements = pgsub->nos; + else if( flag == 3 ) + pgsub->nos = nNew; + break; + + case genSubRecordT: + if( flag == 1 ) + { + paddr->pfield = pgsub->t; + paddr->no_elements = pgsub->not; + paddr->field_type = pgsub->ftt; + } + else if( flag == 2 ) + *no_elements = pgsub->not; + else if( flag == 3 ) + pgsub->not = nNew; + break; + + case genSubRecordU: + if( flag == 1 ) + { + paddr->pfield = pgsub->u; + paddr->no_elements = pgsub->nou; + paddr->field_type = pgsub->ftu; + } + else if( flag == 2 ) + *no_elements = pgsub->nou; + else if( flag == 3 ) + pgsub->nou = nNew; + break; + + case genSubRecordVALA: + if( flag == 1 ) + { + paddr->pfield = pgsub->vala; + paddr->no_elements = pgsub->nova; + paddr->field_type = pgsub->ftva; + } + else if( flag == 2 ) + *no_elements = pgsub->nova; + else if( flag == 3 ) + pgsub->nova = nNew; + break; + + case genSubRecordVALB: + if( flag == 1 ) + { + paddr->pfield = pgsub->valb; + paddr->no_elements = pgsub->novb; + paddr->field_type = pgsub->ftvb; + } + else if( flag == 2 ) + *no_elements = pgsub->novb; + else if( flag == 3 ) + pgsub->novb = nNew; + break; + + case genSubRecordVALC: + if( flag == 1 ) + { + paddr->pfield = pgsub->valc; + paddr->no_elements = pgsub->novc; + paddr->field_type = pgsub->ftvc; + } + else if( flag == 2 ) + *no_elements = pgsub->novc; + else if( flag == 3 ) + pgsub->novc = nNew; + break; + + case genSubRecordVALD: + if( flag == 1 ) + { + paddr->pfield = pgsub->vald; + paddr->no_elements = pgsub->novd; + paddr->field_type = pgsub->ftvd; + } + else if( flag == 2 ) + *no_elements = pgsub->novd; + else if( flag == 3 ) + pgsub->novd = nNew; + break; + + case genSubRecordVALE: + if( flag == 1 ) + { + paddr->pfield = pgsub->vale; + paddr->no_elements = pgsub->nove; + paddr->field_type = pgsub->ftve; + } + else if( flag == 2 ) + *no_elements = pgsub->nove; + else if( flag == 3 ) + pgsub->nove = nNew; + break; + + case genSubRecordVALF: + if( flag == 1 ) + { + paddr->pfield = pgsub->valf; + paddr->no_elements = pgsub->novf; + paddr->field_type = pgsub->ftvf; + } + else if( flag == 2 ) + *no_elements = pgsub->novf; + else if( flag == 3 ) + pgsub->novf = nNew; + break; + + case genSubRecordVALG: + if( flag == 1 ) + { + paddr->pfield = pgsub->valg; + paddr->no_elements = pgsub->novg; + paddr->field_type = pgsub->ftvg; + } + else if( flag == 2 ) + *no_elements = pgsub->novg; + else if( flag == 3 ) + pgsub->novg = nNew; + break; + + case genSubRecordVALH: + if( flag == 1 ) + { + paddr->pfield = pgsub->valh; + paddr->no_elements = pgsub->novh; + paddr->field_type = pgsub->ftvh; + } + else if( flag == 2 ) + *no_elements = pgsub->novh; + else if( flag == 3 ) + pgsub->novh = nNew; + break; + + case genSubRecordVALI: + if( flag == 1 ) + { + paddr->pfield = pgsub->vali; + paddr->no_elements = pgsub->novi; + paddr->field_type = pgsub->ftvi; + } + else if( flag == 2 ) + *no_elements = pgsub->novi; + else if( flag == 3 ) + pgsub->novi = nNew; + break; + + case genSubRecordVALJ: + if( flag == 1 ) + { + paddr->pfield = pgsub->valj; + paddr->no_elements = pgsub->novj; + paddr->field_type = pgsub->ftvj; + } + else if( flag == 2 ) + *no_elements = pgsub->novj; + else if( flag == 3 ) + pgsub->novj = nNew; + break; + + case genSubRecordVALK: + if( flag == 1 ) + { + paddr->pfield = pgsub->valk; + paddr->no_elements = pgsub->novk; + paddr->field_type = pgsub->ftvk; + } + else if( flag == 2 ) + *no_elements = pgsub->novk; + else if( flag == 3 ) + pgsub->novk = nNew; + break; + + case genSubRecordVALL: + if( flag == 1 ) + { + paddr->pfield = pgsub->vall; + paddr->no_elements = pgsub->novl; + paddr->field_type = pgsub->ftvl; + } + else if( flag == 2 ) + *no_elements = pgsub->novl; + else if( flag == 3 ) + pgsub->novl = nNew; + break; + + case genSubRecordVALM: + if( flag == 1 ) + { + paddr->pfield = pgsub->valm; + paddr->no_elements = pgsub->novm; + paddr->field_type = pgsub->ftvm; + } + else if( flag == 2 ) + *no_elements = pgsub->novm; + else if( flag == 3 ) + pgsub->novm = nNew; + break; + + case genSubRecordVALN: + if( flag == 1 ) + { + paddr->pfield = pgsub->valn; + paddr->no_elements = pgsub->novn; + paddr->field_type = pgsub->ftvn; + } + else if( flag == 2 ) + *no_elements = pgsub->novn; + else if( flag == 3 ) + pgsub->novn = nNew; + break; + + case genSubRecordVALO: + if( flag == 1 ) + { + paddr->pfield = pgsub->valo; + paddr->no_elements = pgsub->novo; + paddr->field_type = pgsub->ftvo; + } + else if( flag == 2 ) + *no_elements = pgsub->novo; + else if( flag == 3 ) + pgsub->novo = nNew; + break; + + case genSubRecordVALP: + if( flag == 1 ) + { + paddr->pfield = pgsub->valp; + paddr->no_elements = pgsub->novp; + paddr->field_type = pgsub->ftvp; + } + else if( flag == 2 ) + *no_elements = pgsub->novp; + else if( flag == 3 ) + pgsub->novp = nNew; + break; + + case genSubRecordVALQ: + if( flag == 1 ) + { + paddr->pfield = pgsub->valq; + paddr->no_elements = pgsub->novq; + paddr->field_type = pgsub->ftvq; + } + else if( flag == 2 ) + *no_elements = pgsub->novq; + else if( flag == 3 ) + pgsub->novq = nNew; + break; + + case genSubRecordVALR: + if( flag == 1 ) + { + paddr->pfield = pgsub->valr; + paddr->no_elements = pgsub->novr; + paddr->field_type = pgsub->ftvr; + } + else if( flag == 2 ) + *no_elements = pgsub->novr; + else if( flag == 3 ) + pgsub->novr = nNew; + break; + + case genSubRecordVALS: + if( flag == 1 ) + { + paddr->pfield = pgsub->vals; + paddr->no_elements = pgsub->novs; + paddr->field_type = pgsub->ftvs; + } + else if( flag == 2 ) + *no_elements = pgsub->novs; + else if( flag == 3 ) + pgsub->novs = nNew; + break; + + case genSubRecordVALT: + if( flag == 1 ) + { + paddr->pfield = pgsub->valt; + paddr->no_elements = pgsub->novt; + paddr->field_type = pgsub->ftvt; + } + else if( flag == 2 ) + *no_elements = pgsub->novt; + else if( flag == 3 ) + pgsub->novt = nNew; + break; + + case genSubRecordVALU: + if( flag == 1 ) + { + paddr->pfield = pgsub->valu; + paddr->no_elements = pgsub->novu; + paddr->field_type = pgsub->ftvu; + } + else if( flag == 2 ) + *no_elements = pgsub->novu; + else if( flag == 3 ) + pgsub->novu = nNew; + break; + + default: + error = 1; + break; + } + + if( !error && flag == 1 ) + { + paddr->dbr_field_type = paddr->field_type; + if( paddr->field_type == DBF_STRING ) + paddr->field_size = MAX_STRING_SIZE; + else + paddr->field_size = sizeofTypes[paddr->field_type]; + } + + return(error); +} diff --git a/ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd b/ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd new file mode 100755 index 0000000..909bd69 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/genSubRecord.dbd @@ -0,0 +1,1875 @@ +menu(genSubLFLG) { + choice(genSubLFLG_IGNORE,"IGNORE") + choice(genSubLFLG_READ,"READ") +} + +menu(genSubEFLG) { + choice(genSubEFLG_NEVER,"NEVER") + choice(genSubEFLG_ON_CHANGE,"ON CHANGE") + choice(genSubEFLG_ALWAYS,"ALWAYS") +} +recordtype(genSub) { + include "dbCommon.dbd" + field(VERS,DBF_DOUBLE) { + prompt("Version Number") + promptgroup(GUI_DISPLAY) + special(SPC_NOMOD) + interest(1) + } + field(VAL,DBF_LONG) { + prompt("Subr. return value") + asl(ASL0) + } + field(OVAL,DBF_LONG) { + prompt("Old return value") + special(SPC_NOMOD) + interest(1) + } + field(SADR,DBF_LONG) { + prompt("Subroutine Address") + special(SPC_NOMOD) + interest(1) + } + field(OSAD,DBF_LONG) { + prompt("Old Subr. Address") + special(SPC_NOMOD) + interest(1) + } + field(LFLG,DBF_MENU) { + prompt("Link Flag") + promptgroup(GUI_OUTPUT) + interest(1) + menu(genSubLFLG) + } + field(EFLG,DBF_MENU) { + prompt("Event Flag") + promptgroup(GUI_OUTPUT) + interest(1) + menu(genSubEFLG) + } + field(SUBL,DBF_INLINK) { + prompt("Subroutine Input Link") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INAM,DBF_STRING) { + prompt("Init Routine Name") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(SNAM,DBF_STRING) { + prompt("Process Subr. Name") + promptgroup(GUI_SUB) + special(SPC_MOD) + interest(1) + size(40) + } + field(ONAM,DBF_STRING) { + prompt("Old Subroutine Name") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(BRSV,DBF_MENU) { + prompt("Bad Return Severity") + promptgroup(GUI_SUB) + pp(TRUE) + interest(1) + menu(menuAlarmSevr) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(INPA,DBF_INLINK) { + prompt("Input Link A") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPB,DBF_INLINK) { + prompt("Input Link B") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPC,DBF_INLINK) { + prompt("Input Link C") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPD,DBF_INLINK) { + prompt("Input Link D") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPE,DBF_INLINK) { + prompt("Input Link E") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPF,DBF_INLINK) { + prompt("Input Link F") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPG,DBF_INLINK) { + prompt("Input Link G") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPH,DBF_INLINK) { + prompt("Input Link H") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPI,DBF_INLINK) { + prompt("Input Link I") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPJ,DBF_INLINK) { + prompt("Input Link J") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPK,DBF_INLINK) { + prompt("Input Link K") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPL,DBF_INLINK) { + prompt("Input Link L") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPM,DBF_INLINK) { + prompt("Input Link M") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPN,DBF_INLINK) { + prompt("Input Link N") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPO,DBF_INLINK) { + prompt("Input Link O") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPP,DBF_INLINK) { + prompt("Input Link P") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPQ,DBF_INLINK) { + prompt("Input Link Q") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPR,DBF_INLINK) { + prompt("Input Link R") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPS,DBF_INLINK) { + prompt("Input Link S") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPT,DBF_INLINK) { + prompt("Input Link T") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(INPU,DBF_INLINK) { + prompt("Input Link U") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(UFA,DBF_STRING) { + prompt("Input Structure A") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFB,DBF_STRING) { + prompt("Input Structure B") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFC,DBF_STRING) { + prompt("Input Structure C") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFD,DBF_STRING) { + prompt("Input Structure D") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFE,DBF_STRING) { + prompt("Input Structure E") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFF,DBF_STRING) { + prompt("Input Structure F") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFG,DBF_STRING) { + prompt("Input Structure G") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFH,DBF_STRING) { + prompt("Input Structure H") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFI,DBF_STRING) { + prompt("Input Structure I") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFJ,DBF_STRING) { + prompt("Input Structure J") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFK,DBF_STRING) { + prompt("Input Structure K") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFL,DBF_STRING) { + prompt("Input Structure L") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFM,DBF_STRING) { + prompt("Input Structure M") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFN,DBF_STRING) { + prompt("Input Structure N") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFO,DBF_STRING) { + prompt("Input Structure O") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFP,DBF_STRING) { + prompt("Input Structure P") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFQ,DBF_STRING) { + prompt("Input Structure Q") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFR,DBF_STRING) { + prompt("Input Structure R") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFS,DBF_STRING) { + prompt("Input Structure S") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFT,DBF_STRING) { + prompt("Input Structure T") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFU,DBF_STRING) { + prompt("Input Structure U") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(A,DBF_NOACCESS) { + prompt("Value of Input A") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *a") + } + field(B,DBF_NOACCESS) { + prompt("Value of Input B") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *b") + } + field(C,DBF_NOACCESS) { + prompt("Value of Input C") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *c") + } + field(D,DBF_NOACCESS) { + prompt("Value of Input D") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *d") + } + field(E,DBF_NOACCESS) { + prompt("Value of Input E") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *e") + } + field(F,DBF_NOACCESS) { + prompt("Value of Input F") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *f") + } + field(G,DBF_NOACCESS) { + prompt("Value of Input G") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *g") + } + field(H,DBF_NOACCESS) { + prompt("Value of Input H") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *h") + } + field(I,DBF_NOACCESS) { + prompt("Value of Input I") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *i") + } + field(J,DBF_NOACCESS) { + prompt("Value of Input J") + asl(ASL0) + special(SPC_DBADDR) + pp(TRUE) + interest(1) + size(4) + extra("void *j") + } + field(K,DBF_NOACCESS) { + prompt("Value of Input K") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *k") + } + field(L,DBF_NOACCESS) { + prompt("Value of Input L") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *l") + } + field(M,DBF_NOACCESS) { + prompt("Value of Input M") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *m") + } + field(N,DBF_NOACCESS) { + prompt("Value of Input N") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *n") + } + field(O,DBF_NOACCESS) { + prompt("Value of Input O") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *o") + } + field(P,DBF_NOACCESS) { + prompt("Value of Input P") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *p") + } + field(Q,DBF_NOACCESS) { + prompt("Value of Input Q") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *q") + } + field(R,DBF_NOACCESS) { + prompt("Value of Input R") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *r") + } + field(S,DBF_NOACCESS) { + prompt("Value of Input S") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *s") + } + field(T,DBF_NOACCESS) { + prompt("Value of Input T") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *t") + } + field(U,DBF_NOACCESS) { + prompt("Value of Input U") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *u") + } + field(FTA,DBF_MENU) { + prompt("Type of A") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTB,DBF_MENU) { + prompt("Type of B") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTC,DBF_MENU) { + prompt("Type of C") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTD,DBF_MENU) { + prompt("Type of D") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTE,DBF_MENU) { + prompt("Type of E") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTF,DBF_MENU) { + prompt("Type of F") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTG,DBF_MENU) { + prompt("Type of G") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTH,DBF_MENU) { + prompt("Type of H") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTI,DBF_MENU) { + prompt("Type of I") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTJ,DBF_MENU) { + prompt("Type of J") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTK,DBF_MENU) { + prompt("Type of K") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTL,DBF_MENU) { + prompt("Type of L") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTM,DBF_MENU) { + prompt("Type of M") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTN,DBF_MENU) { + prompt("Type of N") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTO,DBF_MENU) { + prompt("Type of O") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTP,DBF_MENU) { + prompt("Type of P") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTQ,DBF_MENU) { + prompt("Type of Q") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTR,DBF_MENU) { + prompt("Type of R") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTS,DBF_MENU) { + prompt("Type of S") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTT,DBF_MENU) { + prompt("Type of T") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTU,DBF_MENU) { + prompt("Type of U") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(NOA,DBF_ULONG) { + prompt("No. in A") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOB,DBF_ULONG) { + prompt("No. in B") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOC,DBF_ULONG) { + prompt("No. in C") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOD,DBF_ULONG) { + prompt("No. in D") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOE,DBF_ULONG) { + prompt("No. in E") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOF,DBF_ULONG) { + prompt("No. in F") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOG,DBF_ULONG) { + prompt("No. in G") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOH,DBF_ULONG) { + prompt("No. in H") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOI,DBF_ULONG) { + prompt("No. in I") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOJ,DBF_ULONG) { + prompt("No. in J") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOK,DBF_ULONG) { + prompt("No. in K") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOL,DBF_ULONG) { + prompt("No. in L") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOM,DBF_ULONG) { + prompt("No. in M") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NON,DBF_ULONG) { + prompt("No. in N") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOO,DBF_ULONG) { + prompt("No. in O") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOP,DBF_ULONG) { + prompt("No. in P") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOQ,DBF_ULONG) { + prompt("No. in Q") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOR,DBF_ULONG) { + prompt("No. in R") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOS,DBF_ULONG) { + prompt("No. in S") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOT,DBF_ULONG) { + prompt("No. in T") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOU,DBF_ULONG) { + prompt("No. in U") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(OUTA,DBF_OUTLINK) { + prompt("Output Link A") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTB,DBF_OUTLINK) { + prompt("Output Link B") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTC,DBF_OUTLINK) { + prompt("Output Link C") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTD,DBF_OUTLINK) { + prompt("Output Link D") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTE,DBF_OUTLINK) { + prompt("Output Link E") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTF,DBF_OUTLINK) { + prompt("Output Link F") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTG,DBF_OUTLINK) { + prompt("Output Link G") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTH,DBF_OUTLINK) { + prompt("Output Link H") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTI,DBF_OUTLINK) { + prompt("Output Link I") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTJ,DBF_OUTLINK) { + prompt("Output Link J") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTK,DBF_OUTLINK) { + prompt("Output Link K") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTL,DBF_OUTLINK) { + prompt("Output Link L") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTM,DBF_OUTLINK) { + prompt("Output Link M") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTN,DBF_OUTLINK) { + prompt("Output Link N") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTO,DBF_OUTLINK) { + prompt("Output Link O") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTP,DBF_OUTLINK) { + prompt("Output Link P") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTQ,DBF_OUTLINK) { + prompt("Output Link Q") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTR,DBF_OUTLINK) { + prompt("Output Link R") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTS,DBF_OUTLINK) { + prompt("Output Link S") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTT,DBF_OUTLINK) { + prompt("Output Link T") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(OUTU,DBF_OUTLINK) { + prompt("Output Link U") + promptgroup(GUI_OUTPUT) + special(SPC_NOMOD) + interest(1) + } + field(UFVA,DBF_STRING) { + prompt("Output Structure A") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVB,DBF_STRING) { + prompt("Output Structure B") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVC,DBF_STRING) { + prompt("Output Structure C") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVD,DBF_STRING) { + prompt("Output Structure D") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVE,DBF_STRING) { + prompt("Output Structure E") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVF,DBF_STRING) { + prompt("Output Structure F") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVG,DBF_STRING) { + prompt("Output Structure G") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVH,DBF_STRING) { + prompt("Output Structure H") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVI,DBF_STRING) { + prompt("Output Structure I") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVJ,DBF_STRING) { + prompt("Output Structure J") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVK,DBF_STRING) { + prompt("Output Structure K") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVL,DBF_STRING) { + prompt("Output Structure L") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVM,DBF_STRING) { + prompt("Output Structure M") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVN,DBF_STRING) { + prompt("Output Structure N") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVO,DBF_STRING) { + prompt("Output Structure O") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVP,DBF_STRING) { + prompt("Output Structure P") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVQ,DBF_STRING) { + prompt("Output Structure Q") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVR,DBF_STRING) { + prompt("Output Structure R") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVS,DBF_STRING) { + prompt("Output Structure S") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVT,DBF_STRING) { + prompt("Output Structure T") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(UFVU,DBF_STRING) { + prompt("Output Structure U") + promptgroup(GUI_SUB) + special(SPC_NOMOD) + interest(1) + size(40) + } + field(VALA,DBF_NOACCESS) { + prompt("Value of Output A") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *vala") + } + field(VALB,DBF_NOACCESS) { + prompt("Value of Output B") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valb") + } + field(VALC,DBF_NOACCESS) { + prompt("Value of Output C") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valc") + } + field(VALD,DBF_NOACCESS) { + prompt("Value of Output D") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *vald") + } + field(VALE,DBF_NOACCESS) { + prompt("Value of Output E") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *vale") + } + field(VALF,DBF_NOACCESS) { + prompt("Value of Output F") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valf") + } + field(VALG,DBF_NOACCESS) { + prompt("Value of Output G") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valg") + } + field(VALH,DBF_NOACCESS) { + prompt("Value of Output H") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valh") + } + field(VALI,DBF_NOACCESS) { + prompt("Value of Output I") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *vali") + } + field(VALJ,DBF_NOACCESS) { + prompt("Value of Output J") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valj") + } + field(VALK,DBF_NOACCESS) { + prompt("Value of Output K") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valk") + } + field(VALL,DBF_NOACCESS) { + prompt("Value of Output L") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *vall") + } + field(VALM,DBF_NOACCESS) { + prompt("Value of Output M") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valm") + } + field(VALN,DBF_NOACCESS) { + prompt("Value of Output N") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valn") + } + field(VALO,DBF_NOACCESS) { + prompt("Value of Output O") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valo") + } + field(VALP,DBF_NOACCESS) { + prompt("Value of Output P") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valp") + } + field(VALQ,DBF_NOACCESS) { + prompt("Value of Output Q") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valq") + } + field(VALR,DBF_NOACCESS) { + prompt("Value of Output R") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valr") + } + field(VALS,DBF_NOACCESS) { + prompt("Value of Output S") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *vals") + } + field(VALT,DBF_NOACCESS) { + prompt("Value of Output T") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valt") + } + field(VALU,DBF_NOACCESS) { + prompt("Value of Output U") + asl(ASL0) + special(SPC_DBADDR) + interest(1) + size(4) + extra("void *valu") + } + field(OVLA,DBF_NOACCESS) { + prompt("Old Output A") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovla") + } + field(OVLB,DBF_NOACCESS) { + prompt("Old Output B") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlb") + } + field(OVLC,DBF_NOACCESS) { + prompt("Old Output C") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlc") + } + field(OVLD,DBF_NOACCESS) { + prompt("Old Output D") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovld") + } + field(OVLE,DBF_NOACCESS) { + prompt("Old Output E") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovle") + } + field(OVLF,DBF_NOACCESS) { + prompt("Old Output F") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlf") + } + field(OVLG,DBF_NOACCESS) { + prompt("Old Output G") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlg") + } + field(OVLH,DBF_NOACCESS) { + prompt("Old Output H") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlh") + } + field(OVLI,DBF_NOACCESS) { + prompt("Old Output I") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovli") + } + field(OVLJ,DBF_NOACCESS) { + prompt("Old Output J") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlj") + } + field(OVLK,DBF_NOACCESS) { + prompt("Old Output K") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlk") + } + field(OVLL,DBF_NOACCESS) { + prompt("Old Output L") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovll") + } + field(OVLM,DBF_NOACCESS) { + prompt("Old Output M") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlm") + } + field(OVLN,DBF_NOACCESS) { + prompt("Old Output N") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovln") + } + field(OVLO,DBF_NOACCESS) { + prompt("Old Output O") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlo") + } + field(OVLP,DBF_NOACCESS) { + prompt("Old Output P") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlp") + } + field(OVLQ,DBF_NOACCESS) { + prompt("Old Output Q") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlq") + } + field(OVLR,DBF_NOACCESS) { + prompt("Old Output R") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlr") + } + field(OVLS,DBF_NOACCESS) { + prompt("Old Output S") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovls") + } + field(OVLT,DBF_NOACCESS) { + prompt("Old Output T") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlt") + } + field(OVLU,DBF_NOACCESS) { + prompt("Old Output U") + asl(ASL0) + special(SPC_NOMOD) + interest(1) + size(4) + extra("void *ovlu") + } + field(FTVA,DBF_MENU) { + prompt("Type of VALA") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVB,DBF_MENU) { + prompt("Type of VALB") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVC,DBF_MENU) { + prompt("Type of VALC") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVD,DBF_MENU) { + prompt("Type of VALD") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVE,DBF_MENU) { + prompt("Type of VALE") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVF,DBF_MENU) { + prompt("Type of VALF") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVG,DBF_MENU) { + prompt("Type of VALG") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVH,DBF_MENU) { + prompt("Type of VALH") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVI,DBF_MENU) { + prompt("Type of VALI") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVJ,DBF_MENU) { + prompt("Type of VALJ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVK,DBF_MENU) { + prompt("Type of VALK") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVL,DBF_MENU) { + prompt("Type of VALL") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVM,DBF_MENU) { + prompt("Type of VALM") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVN,DBF_MENU) { + prompt("Type of VALN") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVO,DBF_MENU) { + prompt("Type of VALO") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVP,DBF_MENU) { + prompt("Type of VALP") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVQ,DBF_MENU) { + prompt("Type of VALQ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVR,DBF_MENU) { + prompt("Type of VALR") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVS,DBF_MENU) { + prompt("Type of VALS") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVT,DBF_MENU) { + prompt("Type of VALT") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(FTVU,DBF_MENU) { + prompt("Type of VALU") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + menu(menuFtype) + } + field(NOVA,DBF_ULONG) { + prompt("No. in VALA") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVB,DBF_ULONG) { + prompt("No. in VALB") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVC,DBF_ULONG) { + prompt("No. in VALC") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVD,DBF_ULONG) { + prompt("No. in VALD") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVE,DBF_ULONG) { + prompt("No. in VALE") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVF,DBF_ULONG) { + prompt("No. in VALF") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVG,DBF_ULONG) { + prompt("No. in VALG") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVH,DBF_ULONG) { + prompt("No. in VAlH") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVI,DBF_ULONG) { + prompt("No. in VALI") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVJ,DBF_ULONG) { + prompt("No. in VALJ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVK,DBF_ULONG) { + prompt("No. in VALK") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVL,DBF_ULONG) { + prompt("No. in VALL") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVM,DBF_ULONG) { + prompt("No. in VALM") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVN,DBF_ULONG) { + prompt("No. in VALN") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVO,DBF_ULONG) { + prompt("No. in VALO") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVP,DBF_ULONG) { + prompt("No. in VALP") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVQ,DBF_ULONG) { + prompt("No. in VALQ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVR,DBF_ULONG) { + prompt("No. in VALR") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVS,DBF_ULONG) { + prompt("No. in VALS") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVT,DBF_ULONG) { + prompt("No. in VALT") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(NOVU,DBF_ULONG) { + prompt("No. in VALU") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVA,DBF_ULONG) { + prompt("Total bytes for VALA") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVB,DBF_ULONG) { + prompt("Total bytes for VALB") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVC,DBF_ULONG) { + prompt("Total bytes for VALC") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVD,DBF_ULONG) { + prompt("Total bytes for VALD") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVE,DBF_ULONG) { + prompt("Total bytes for VALE") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVF,DBF_ULONG) { + prompt("Total bytes for VALF") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVG,DBF_ULONG) { + prompt("Total bytes for VALG") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVH,DBF_ULONG) { + prompt("Total bytes for VAlH") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVI,DBF_ULONG) { + prompt("Total bytes for VALI") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVJ,DBF_ULONG) { + prompt("Total bytes for VALJ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVK,DBF_ULONG) { + prompt("Total bytes for VALK") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVL,DBF_ULONG) { + prompt("Total bytes for VALL") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVM,DBF_ULONG) { + prompt("Total bytes for VALM") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVN,DBF_ULONG) { + prompt("Total bytes for VALN") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVO,DBF_ULONG) { + prompt("Total bytes for VALO") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVP,DBF_ULONG) { + prompt("Total bytes for VALP") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVQ,DBF_ULONG) { + prompt("Total bytes for VALQ") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVR,DBF_ULONG) { + prompt("Total bytes for VALR") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVS,DBF_ULONG) { + prompt("Total bytes for VALS") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVT,DBF_ULONG) { + prompt("Total bytes for VALT") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } + field(TOVU,DBF_ULONG) { + prompt("Total bytes for VALU") + promptgroup(GUI_WAVE) + special(SPC_NOMOD) + interest(1) + initial("1") + } +} diff --git a/ebctrl/ioc/ebctrlApp/src/genrunid.c b/ebctrl/ioc/ebctrlApp/src/genrunid.c new file mode 100644 index 0000000..4b44a75 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/genrunid.c @@ -0,0 +1,109 @@ +#include +#include +#include +#include + +#include +#include +#include +#include + +int genrunidDebug; + +long genRunId_init( struct subRecord *pgsub ) +{ + return(0); +} + +long genRunId_proc( struct subRecord *psub ) +{ + + static long runId = 0; + static long runIdOld = 0; + long timeoffset = 1200000000; /* seconds */ + long sizelimit = 500*1024*1024; /* bytes */ + int fileSize = 0; + int status = 0; + struct timeval tv; + + /* Get HOSTNAME (name of a local machine) and + * EBMASTER (name of the Event Builder Master). + * The Event Builder Master synchronizes other Event Builders, + * which means that only the Master should generate the runId. + */ + + char* hostname = getenv( "HOSTNAME" ); + if( hostname == NULL ) { + hostname = "HOST_UNDEFINED"; + if(genrunidDebug) + fprintf( stderr, " genrunid.c: env variable HOSTNAME is undefined!\n"); + } + + char* ebmaster = getenv( "EBMASTER" ); + if( ebmaster == NULL ) { + ebmaster = "MASTER_UNDEFINED"; + if(genrunidDebug) + fprintf( stderr, " genrunid.c: env variable EBMASTER is undefined!\n"); + } + + /* If a local machine name is the name of the Event Builder Master, + * generate the runId and put it to a VAL (to be read by other IOCs). + */ + + if( strcmp(ebmaster,hostname) != 0 ) { + if(genrunidDebug) + printf( " genrunid.c: %s is not a master (%s).\n", hostname, ebmaster); + } + else{ + + fileSize = psub->a; /* size of the data file written by event builder */ + status = (int) psub->b; /* status of the event buidler (1=on/0=off) */ + + if( status == 0 ) { + if( genrunidDebug ) { + printf( "genrunid.c: Event Builder is off, status: %d\n", status ); + /* + * One of the reasons for this message might be closed permissions + * for (/dev/shm/daq_evtbuild.shm) shared memory access. + */ + } + runId = 0; + } + + if( genrunidDebug ) + printf( "genrunid.c: received file size: %d\n", fileSize ); + + if( fileSize < sizelimit ){ + runIdOld = runId; + } + + /* Generate RUN Id: time (in sec from 1970) minus timeoffset */ + if( (runId == 0 && status) || + (fileSize > sizelimit && runIdOld == runId && runId > 0 && status) ) { + + /* + * The following line is executed only ONCE + * either at the beginning when runId == 0 + * or when the file size becomes bigger than the size limit. + */ + gettimeofday( &tv, NULL ); + runId = tv.tv_sec - timeoffset; + + if( genrunidDebug ) + printf( " genrunid.c: RUN Id was generated: runId = %lu \n", runId ); + } + + psub->val = runId; + + if( genrunidDebug ) + printf( " genrunid.c: runId = %lu runIdOld = %lu\n", runId, runIdOld ); + } /* end of EBMASTER condition */ + + return(0); +} + +/* Register these symbols for use by IOC code: */ + +epicsExportAddress(int, genrunidDebug); +epicsRegisterFunction(genRunId_init); +epicsRegisterFunction(genRunId_proc); diff --git a/ebctrl/ioc/ebctrlApp/src/genrunid.dbd b/ebctrl/ioc/ebctrlApp/src/genrunid.dbd new file mode 100644 index 0000000..51b2d06 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/genrunid.dbd @@ -0,0 +1,3 @@ +variable(genrunidDebug) +function(genRunId_init) +function(genRunId_proc) \ No newline at end of file diff --git a/ebctrl/ioc/ebctrlApp/src/sncExample.dbd b/ebctrl/ioc/ebctrlApp/src/sncExample.dbd new file mode 100644 index 0000000..df61066 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/sncExample.dbd @@ -0,0 +1 @@ +registrar(sncExampleRegistrar) diff --git a/ebctrl/ioc/ebctrlApp/src/sncExample.stt b/ebctrl/ioc/ebctrlApp/src/sncExample.stt new file mode 100644 index 0000000..235f3f4 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/sncExample.stt @@ -0,0 +1,22 @@ +program sncExample +double v; +assign v to "{user}:aiExample"; +monitor v; + +ss ss1 { + state init { + when (delay(10)) { + printf("sncExample: Startup delay over\n"); + } state low + } + state low { + when (v > 5.0) { + printf("sncExample: Changing to high\n"); + } state high + } + state high { + when (v <= 5.0) { + printf("sncExample: Changing to low\n"); + } state low + } +} diff --git a/ebctrl/ioc/ebctrlApp/src/sncProgram.st b/ebctrl/ioc/ebctrlApp/src/sncProgram.st new file mode 100644 index 0000000..1ba2989 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/sncProgram.st @@ -0,0 +1 @@ +#include "../sncExample.stt" diff --git a/ebctrl/ioc/ebctrlApp/src/writerunid.c b/ebctrl/ioc/ebctrlApp/src/writerunid.c new file mode 100644 index 0000000..6e4cf4f --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/writerunid.c @@ -0,0 +1,52 @@ +#include +#include +#include + +#include +#include +#include +#include + +#include "worker.h" + +int writerunidDebug; + +long writeRunId_init( struct subRecord *pgsub ) +{ + return(0); +} + +long writeRunId_proc( struct subRecord *psub ) +{ + + /* Get a distributed runId and write it to + * a shared memory of a local Event Builder. + */ + + static unsigned long runId = 0; + + runId = (unsigned long) psub->a; + + if( Worker_setStatistic( "daq_evtbuild", "runId", &runId ) == -1 ) { + if(writerunidDebug) { + fprintf( stderr, " writerunid.c: Worker_setStatistic failed for runId! Either shared memory daq_evtbuild was not created or statistic runId was not added by the event builder.\n"); + } + } + else + if(writerunidDebug) { + printf(" writerunid.c: Worker_setStatistic runId = %lu\n", runId); + + unsigned long runId_check; + if( Worker_getStatistic( "daq_evtbuild", "runId", &runId_check ) == -1 ) + printf(" writerunid.c: check: Worker_getStatistic cannot access runId!\n"); + else + printf(" writerunid.c: check: Worker_getStatistic runId = %lu\n", runId_check); + } + return(0); +} + +/* Register these symbols for use by IOC code: */ + +epicsExportAddress(int, writerunidDebug); +epicsRegisterFunction(writeRunId_init); +epicsRegisterFunction(writeRunId_proc); diff --git a/ebctrl/ioc/ebctrlApp/src/writerunid.dbd b/ebctrl/ioc/ebctrlApp/src/writerunid.dbd new file mode 100644 index 0000000..e174287 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/writerunid.dbd @@ -0,0 +1,3 @@ +variable(writerunidDebug) +function(writeRunId_init) +function(writeRunId_proc) \ No newline at end of file diff --git a/ebctrl/ioc/ebctrlApp/src/xxxRecord.c b/ebctrl/ioc/ebctrlApp/src/xxxRecord.c new file mode 100644 index 0000000..6fb1472 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/xxxRecord.c @@ -0,0 +1,272 @@ +/* xxxRecord.c */ +/* Example record support module */ + +#include +#include +#include +#include + +#include "alarm.h" +#include "dbAccess.h" +#include "recGbl.h" +#include "dbEvent.h" +#include "dbDefs.h" +#include "dbAccess.h" +#include "devSup.h" +#include "errMdef.h" +#include "recSup.h" +#include "special.h" +#define GEN_SIZE_OFFSET +#include "xxxRecord.h" +#undef GEN_SIZE_OFFSET +#include "epicsExport.h" + +/* Create RSET - Record Support Entry Table */ +#define report NULL +#define initialize NULL +static long init_record(); +static long process(); +#define special NULL +#define get_value NULL +#define cvt_dbaddr NULL +#define get_array_info NULL +#define put_array_info NULL +static long get_units(); +static long get_precision(); +#define get_enum_str NULL +#define get_enum_strs NULL +#define put_enum_str NULL +static long get_graphic_double(); +static long get_control_double(); +static long get_alarm_double(); + +rset xxxRSET={ + RSETNUMBER, + report, + initialize, + init_record, + process, + special, + get_value, + cvt_dbaddr, + get_array_info, + put_array_info, + get_units, + get_precision, + get_enum_str, + get_enum_strs, + put_enum_str, + get_graphic_double, + get_control_double, + get_alarm_double +}; +epicsExportAddress(rset,xxxRSET); + +typedef struct xxxset { /* xxx input dset */ + long number; + DEVSUPFUN dev_report; + DEVSUPFUN init; + DEVSUPFUN init_record; /*returns: (-1,0)=>(failure,success)*/ + DEVSUPFUN get_ioint_info; + DEVSUPFUN read_xxx; +}xxxdset; + +static void checkAlarms(xxxRecord *pxxx); +static void monitor(xxxRecord *pxxx); + +static long init_record(void *precord,int pass) +{ + xxxRecord *pxxx = (xxxRecord *)precord; + xxxdset *pdset; + long status; + + if (pass==0) return(0); + + if(!(pdset = (xxxdset *)(pxxx->dset))) { + recGblRecordError(S_dev_noDSET,(void *)pxxx,"xxx: init_record"); + return(S_dev_noDSET); + } + /* must have read_xxx function defined */ + if( (pdset->number < 5) || (pdset->read_xxx == NULL) ) { + recGblRecordError(S_dev_missingSup,(void *)pxxx,"xxx: init_record"); + return(S_dev_missingSup); + } + + if( pdset->init_record ) { + if((status=(*pdset->init_record)(pxxx))) return(status); + } + return(0); +} + +static long process(void *precord) +{ + xxxRecord *pxxx = (xxxRecord *)precord; + xxxdset *pdset = (xxxdset *)(pxxx->dset); + long status; + unsigned char pact=pxxx->pact; + + if( (pdset==NULL) || (pdset->read_xxx==NULL) ) { + pxxx->pact=TRUE; + recGblRecordError(S_dev_missingSup,(void *)pxxx,"read_xxx"); + return(S_dev_missingSup); + } + + /* pact must not be set until after calling device support */ + status=(*pdset->read_xxx)(pxxx); + /* check if device support set pact */ + if ( !pact && pxxx->pact ) return(0); + pxxx->pact = TRUE; + + recGblGetTimeStamp(pxxx); + /* check for alarms */ + checkAlarms(pxxx); + /* check event list */ + monitor(pxxx); + /* process the forward scan link record */ + recGblFwdLink(pxxx); + + pxxx->pact=FALSE; + return(status); +} + +static long get_units(DBADDR *paddr, char *units) +{ + xxxRecord *pxxx=(xxxRecord *)paddr->precord; + + strncpy(units,pxxx->egu,DB_UNITS_SIZE); + return(0); +} + +static long get_precision(DBADDR *paddr, long *precision) +{ + xxxRecord *pxxx=(xxxRecord *)paddr->precord; + + *precision = pxxx->prec; + if(paddr->pfield == (void *)&pxxx->val) return(0); + recGblGetPrec(paddr,precision); + return(0); +} + +static long get_graphic_double(DBADDR *paddr,struct dbr_grDouble *pgd) +{ + xxxRecord *pxxx=(xxxRecord *)paddr->precord; + int fieldIndex = dbGetFieldIndex(paddr); + + if(fieldIndex == xxxRecordVAL + || fieldIndex == xxxRecordHIHI + || fieldIndex == xxxRecordHIGH + || fieldIndex == xxxRecordLOW + || fieldIndex == xxxRecordLOLO + || fieldIndex == xxxRecordHOPR + || fieldIndex == xxxRecordLOPR) { + pgd->upper_disp_limit = pxxx->hopr; + pgd->lower_disp_limit = pxxx->lopr; + } else recGblGetGraphicDouble(paddr,pgd); + return(0); +} + +static long get_control_double(DBADDR *paddr,struct dbr_ctrlDouble *pcd) +{ + xxxRecord *pxxx=(xxxRecord *)paddr->precord; + int fieldIndex = dbGetFieldIndex(paddr); + + if(fieldIndex == xxxRecordVAL + || fieldIndex == xxxRecordHIHI + || fieldIndex == xxxRecordHIGH + || fieldIndex == xxxRecordLOW + || fieldIndex == xxxRecordLOLO) { + pcd->upper_ctrl_limit = pxxx->hopr; + pcd->lower_ctrl_limit = pxxx->lopr; + } else recGblGetControlDouble(paddr,pcd); + return(0); +} + +static long get_alarm_double(DBADDR *paddr,struct dbr_alDouble *pad) +{ + xxxRecord *pxxx=(xxxRecord *)paddr->precord; + int fieldIndex = dbGetFieldIndex(paddr); + + if(fieldIndex == xxxRecordVAL) { + pad->upper_alarm_limit = pxxx->hihi; + pad->upper_warning_limit = pxxx->high; + pad->lower_warning_limit = pxxx->low; + pad->lower_alarm_limit = pxxx->lolo; + } else recGblGetAlarmDouble(paddr,pad); + return(0); +} + +static void checkAlarms(xxxRecord *pxxx) +{ + double val; + float hyst, lalm, hihi, high, low, lolo; + unsigned short hhsv, llsv, hsv, lsv; + + if(pxxx->udf == TRUE ){ + recGblSetSevr(pxxx,UDF_ALARM,INVALID_ALARM); + return; + } + hihi = pxxx->hihi; lolo = pxxx->lolo; high = pxxx->high; low = pxxx->low; + hhsv = pxxx->hhsv; llsv = pxxx->llsv; hsv = pxxx->hsv; lsv = pxxx->lsv; + val = pxxx->val; hyst = pxxx->hyst; lalm = pxxx->lalm; + + /* alarm condition hihi */ + if (hhsv && (val >= hihi || ((lalm==hihi) && (val >= hihi-hyst)))){ + if (recGblSetSevr(pxxx,HIHI_ALARM,pxxx->hhsv)) pxxx->lalm = hihi; + return; + } + + /* alarm condition lolo */ + if (llsv && (val <= lolo || ((lalm==lolo) && (val <= lolo+hyst)))){ + if (recGblSetSevr(pxxx,LOLO_ALARM,pxxx->llsv)) pxxx->lalm = lolo; + return; + } + + /* alarm condition high */ + if (hsv && (val >= high || ((lalm==high) && (val >= high-hyst)))){ + if (recGblSetSevr(pxxx,HIGH_ALARM,pxxx->hsv)) pxxx->lalm = high; + return; + } + + /* alarm condition low */ + if (lsv && (val <= low || ((lalm==low) && (val <= low+hyst)))){ + if (recGblSetSevr(pxxx,LOW_ALARM,pxxx->lsv)) pxxx->lalm = low; + return; + } + + /* we get here only if val is out of alarm by at least hyst */ + pxxx->lalm = val; + return; +} + +static void monitor(xxxRecord *pxxx) +{ + unsigned short monitor_mask; + double delta; + + monitor_mask = recGblResetAlarms(pxxx); + /* check for value change */ + delta = pxxx->mlst - pxxx->val; + if(delta<0.0) delta = -delta; + if (delta > pxxx->mdel) { + /* post events for value change */ + monitor_mask |= DBE_VALUE; + /* update last value monitored */ + pxxx->mlst = pxxx->val; + } + + /* check for archive change */ + delta = pxxx->alst - pxxx->val; + if(delta<0.0) delta = -delta; + if (delta > pxxx->adel) { + /* post events on value field for archive change */ + monitor_mask |= DBE_LOG; + /* update last archive value monitored */ + pxxx->alst = pxxx->val; + } + + /* send out monitors connected to the value field */ + if (monitor_mask){ + db_post_events(pxxx,&pxxx->val,monitor_mask); + } + return; +} diff --git a/ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd b/ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd new file mode 100644 index 0000000..4a71c54 --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/xxxRecord.dbd @@ -0,0 +1,117 @@ +recordtype(xxx) { + include "dbCommon.dbd" + field(VAL,DBF_DOUBLE) { + prompt("Current EGU Value") + asl(ASL0) + pp(TRUE) + } + field(INP,DBF_INLINK) { + prompt("Input Specification") + promptgroup(GUI_INPUTS) + special(SPC_NOMOD) + interest(1) + } + field(PREC,DBF_SHORT) { + prompt("Display Precision") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(EGU,DBF_STRING) { + prompt("Engineering Units") + promptgroup(GUI_DISPLAY) + interest(1) + size(16) + } + field(HOPR,DBF_FLOAT) { + prompt("High Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LOPR,DBF_FLOAT) { + prompt("Low Operating Range") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(HIHI,DBF_FLOAT) { + prompt("Hihi Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOLO,DBF_FLOAT) { + prompt("Lolo Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HIGH,DBF_FLOAT) { + prompt("High Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(LOW,DBF_FLOAT) { + prompt("Low Alarm Limit") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + } + field(HHSV,DBF_MENU) { + prompt("Hihi Severity") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + menu(menuAlarmSevr) + } + field(LLSV,DBF_MENU) { + prompt("Lolo Severity") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + menu(menuAlarmSevr) + } + field(HSV,DBF_MENU) { + prompt("High Severity") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + menu(menuAlarmSevr) + } + field(LSV,DBF_MENU) { + prompt("Low Severity") + promptgroup(GUI_ALARMS) + pp(TRUE) + interest(1) + menu(menuAlarmSevr) + } + field(HYST,DBF_DOUBLE) { + prompt("Alarm Deadband") + promptgroup(GUI_ALARMS) + interest(1) + } + field(ADEL,DBF_DOUBLE) { + prompt("Archive Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(MDEL,DBF_DOUBLE) { + prompt("Monitor Deadband") + promptgroup(GUI_DISPLAY) + interest(1) + } + field(LALM,DBF_DOUBLE) { + prompt("Last Value Alarmed") + special(SPC_NOMOD) + interest(3) + } + field(ALST,DBF_DOUBLE) { + prompt("Last Value Archived") + special(SPC_NOMOD) + interest(3) + } + field(MLST,DBF_DOUBLE) { + prompt("Last Val Monitored") + special(SPC_NOMOD) + interest(3) + } +} diff --git a/ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd b/ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd new file mode 100644 index 0000000..8094bdd --- /dev/null +++ b/ebctrl/ioc/ebctrlApp/src/xxxSupport.dbd @@ -0,0 +1,2 @@ +include "xxxRecord.dbd" +device(xxx,CONSTANT,devXxxSoft,"SoftChannel") diff --git a/ebctrl/ioc/include/genSubRecord.h b/ebctrl/ioc/include/genSubRecord.h new file mode 100644 index 0000000..857cb7c --- /dev/null +++ b/ebctrl/ioc/include/genSubRecord.h @@ -0,0 +1,1275 @@ +#include "ellLib.h" +#include "epicsMutex.h" +#include "link.h" +#include "epicsTime.h" +#include "epicsTypes.h" + +#ifndef INCgenSubLFLGH +#define INCgenSubLFLGH +typedef enum { + genSubLFLG_IGNORE, + genSubLFLG_READ +}genSubLFLG; +#endif /*INCgenSubLFLGH*/ + +#ifndef INCgenSubEFLGH +#define INCgenSubEFLGH +typedef enum { + genSubEFLG_NEVER, + genSubEFLG_ON_CHANGE, + genSubEFLG_ALWAYS +}genSubEFLG; +#endif /*INCgenSubEFLGH*/ +#ifndef INCgenSubH +#define INCgenSubH +typedef struct genSubRecord { + char name[61]; /*Record Name*/ + char desc[29]; /*Descriptor*/ + char asg[29]; /*Access Security Group*/ + epicsEnum16 scan; /*Scan Mechanism*/ + epicsEnum16 pini; /*Process at iocInit*/ + short phas; /*Scan Phase*/ + short evnt; /*Event Number*/ + short tse; /*Time Stamp Event*/ + DBLINK tsel; /*Time Stamp Link*/ + epicsEnum16 dtyp; /*Device Type*/ + short disv; /*Disable Value*/ + short disa; /*Disable*/ + DBLINK sdis; /*Scanning Disable*/ + epicsMutexId mlok; /*Monitor lock*/ + ELLLIST mlis; /*Monitor List*/ + unsigned char disp; /*Disable putField*/ + unsigned char proc; /*Force Processing*/ + epicsEnum16 stat; /*Alarm Status*/ + epicsEnum16 sevr; /*Alarm Severity*/ + epicsEnum16 nsta; /*New Alarm Status*/ + epicsEnum16 nsev; /*New Alarm Severity*/ + epicsEnum16 acks; /*Alarm Ack Severity*/ + epicsEnum16 ackt; /*Alarm Ack Transient*/ + epicsEnum16 diss; /*Disable Alarm Sevrty*/ + unsigned char lcnt; /*Lock Count*/ + unsigned char pact; /*Record active*/ + unsigned char putf; /*dbPutField process*/ + unsigned char rpro; /*Reprocess */ + void *asp; /*Access Security Pvt*/ + struct putNotify *ppn; /*addr of PUTNOTIFY*/ + struct putNotifyRecord *ppnr; /*pputNotifyRecord*/ + struct scan_element *spvt; /*Scan Private*/ + struct rset *rset; /*Address of RSET*/ + struct dset *dset; /*DSET address*/ + void *dpvt; /*Device Private*/ + struct dbRecordType *rdes; /*Address of dbRecordType*/ + struct lockRecord *lset; /*Lock Set*/ + epicsEnum16 prio; /*Scheduling Priority*/ + unsigned char tpro; /*Trace Processing*/ + char bkpt; /*Break Point*/ + unsigned char udf; /*Undefined*/ + epicsTimeStamp time; /*Time*/ + DBLINK flnk; /*Forward Process Link*/ + double vers; /*Version Number*/ + epicsInt32 val; /*Subr. return value*/ + epicsInt32 oval; /*Old return value*/ + epicsInt32 sadr; /*Subroutine Address*/ + epicsInt32 osad; /*Old Subr. Address*/ + epicsEnum16 lflg; /*Link Flag*/ + epicsEnum16 eflg; /*Event Flag*/ + DBLINK subl; /*Subroutine Input Link*/ + char inam[40]; /*Init Routine Name*/ + char snam[40]; /*Process Subr. Name*/ + char onam[40]; /*Old Subroutine Name*/ + epicsEnum16 brsv; /*Bad Return Severity*/ + short prec; /*Display Precision*/ + DBLINK inpa; /*Input Link A*/ + DBLINK inpb; /*Input Link B*/ + DBLINK inpc; /*Input Link C*/ + DBLINK inpd; /*Input Link D*/ + DBLINK inpe; /*Input Link E*/ + DBLINK inpf; /*Input Link F*/ + DBLINK inpg; /*Input Link G*/ + DBLINK inph; /*Input Link H*/ + DBLINK inpi; /*Input Link I*/ + DBLINK inpj; /*Input Link J*/ + DBLINK inpk; /*Input Link K*/ + DBLINK inpl; /*Input Link L*/ + DBLINK inpm; /*Input Link M*/ + DBLINK inpn; /*Input Link N*/ + DBLINK inpo; /*Input Link O*/ + DBLINK inpp; /*Input Link P*/ + DBLINK inpq; /*Input Link Q*/ + DBLINK inpr; /*Input Link R*/ + DBLINK inps; /*Input Link S*/ + DBLINK inpt; /*Input Link T*/ + DBLINK inpu; /*Input Link U*/ + char ufa[40]; /*Input Structure A*/ + char ufb[40]; /*Input Structure B*/ + char ufc[40]; /*Input Structure C*/ + char ufd[40]; /*Input Structure D*/ + char ufe[40]; /*Input Structure E*/ + char uff[40]; /*Input Structure F*/ + char ufg[40]; /*Input Structure G*/ + char ufh[40]; /*Input Structure H*/ + char ufi[40]; /*Input Structure I*/ + char ufj[40]; /*Input Structure J*/ + char ufk[40]; /*Input Structure K*/ + char ufl[40]; /*Input Structure L*/ + char ufm[40]; /*Input Structure M*/ + char ufn[40]; /*Input Structure N*/ + char ufo[40]; /*Input Structure O*/ + char ufp[40]; /*Input Structure P*/ + char ufq[40]; /*Input Structure Q*/ + char ufr[40]; /*Input Structure R*/ + char ufs[40]; /*Input Structure S*/ + char uft[40]; /*Input Structure T*/ + char ufu[40]; /*Input Structure U*/ + void *a; /*Value of Input A*/ + void *b; /*Value of Input B*/ + void *c; /*Value of Input C*/ + void *d; /*Value of Input D*/ + void *e; /*Value of Input E*/ + void *f; /*Value of Input F*/ + void *g; /*Value of Input G*/ + void *h; /*Value of Input H*/ + void *i; /*Value of Input I*/ + void *j; /*Value of Input J*/ + void *k; /*Value of Input K*/ + void *l; /*Value of Input L*/ + void *m; /*Value of Input M*/ + void *n; /*Value of Input N*/ + void *o; /*Value of Input O*/ + void *p; /*Value of Input P*/ + void *q; /*Value of Input Q*/ + void *r; /*Value of Input R*/ + void *s; /*Value of Input S*/ + void *t; /*Value of Input T*/ + void *u; /*Value of Input U*/ + epicsEnum16 fta; /*Type of A*/ + epicsEnum16 ftb; /*Type of B*/ + epicsEnum16 ftc; /*Type of C*/ + epicsEnum16 ftd; /*Type of D*/ + epicsEnum16 fte; /*Type of E*/ + epicsEnum16 ftf; /*Type of F*/ + epicsEnum16 ftg; /*Type of G*/ + epicsEnum16 fth; /*Type of H*/ + epicsEnum16 fti; /*Type of I*/ + epicsEnum16 ftj; /*Type of J*/ + epicsEnum16 ftk; /*Type of K*/ + epicsEnum16 ftl; /*Type of L*/ + epicsEnum16 ftm; /*Type of M*/ + epicsEnum16 ftn; /*Type of N*/ + epicsEnum16 fto; /*Type of O*/ + epicsEnum16 ftp; /*Type of P*/ + epicsEnum16 ftq; /*Type of Q*/ + epicsEnum16 ftr; /*Type of R*/ + epicsEnum16 fts; /*Type of S*/ + epicsEnum16 ftt; /*Type of T*/ + epicsEnum16 ftu; /*Type of U*/ + unsigned long noa; /*No. in A*/ + unsigned long nob; /*No. in B*/ + unsigned long noc; /*No. in C*/ + unsigned long nod; /*No. in D*/ + unsigned long noe; /*No. in E*/ + unsigned long nof; /*No. in F*/ + unsigned long nog; /*No. in G*/ + unsigned long noh; /*No. in H*/ + unsigned long noi; /*No. in I*/ + unsigned long noj; /*No. in J*/ + unsigned long nok; /*No. in K*/ + unsigned long nol; /*No. in L*/ + unsigned long nom; /*No. in M*/ + unsigned long non; /*No. in N*/ + unsigned long noo; /*No. in O*/ + unsigned long nop; /*No. in P*/ + unsigned long noq; /*No. in Q*/ + unsigned long nor; /*No. in R*/ + unsigned long nos; /*No. in S*/ + unsigned long not; /*No. in T*/ + unsigned long nou; /*No. in U*/ + DBLINK outa; /*Output Link A*/ + DBLINK outb; /*Output Link B*/ + DBLINK outc; /*Output Link C*/ + DBLINK outd; /*Output Link D*/ + DBLINK oute; /*Output Link E*/ + DBLINK outf; /*Output Link F*/ + DBLINK outg; /*Output Link G*/ + DBLINK outh; /*Output Link H*/ + DBLINK outi; /*Output Link I*/ + DBLINK outj; /*Output Link J*/ + DBLINK outk; /*Output Link K*/ + DBLINK outl; /*Output Link L*/ + DBLINK outm; /*Output Link M*/ + DBLINK outn; /*Output Link N*/ + DBLINK outo; /*Output Link O*/ + DBLINK outp; /*Output Link P*/ + DBLINK outq; /*Output Link Q*/ + DBLINK outr; /*Output Link R*/ + DBLINK outs; /*Output Link S*/ + DBLINK outt; /*Output Link T*/ + DBLINK outu; /*Output Link U*/ + char ufva[40]; /*Output Structure A*/ + char ufvb[40]; /*Output Structure B*/ + char ufvc[40]; /*Output Structure C*/ + char ufvd[40]; /*Output Structure D*/ + char ufve[40]; /*Output Structure E*/ + char ufvf[40]; /*Output Structure F*/ + char ufvg[40]; /*Output Structure G*/ + char ufvh[40]; /*Output Structure H*/ + char ufvi[40]; /*Output Structure I*/ + char ufvj[40]; /*Output Structure J*/ + char ufvk[40]; /*Output Structure K*/ + char ufvl[40]; /*Output Structure L*/ + char ufvm[40]; /*Output Structure M*/ + char ufvn[40]; /*Output Structure N*/ + char ufvo[40]; /*Output Structure O*/ + char ufvp[40]; /*Output Structure P*/ + char ufvq[40]; /*Output Structure Q*/ + char ufvr[40]; /*Output Structure R*/ + char ufvs[40]; /*Output Structure S*/ + char ufvt[40]; /*Output Structure T*/ + char ufvu[40]; /*Output Structure U*/ + void *vala; /*Value of Output A*/ + void *valb; /*Value of Output B*/ + void *valc; /*Value of Output C*/ + void *vald; /*Value of Output D*/ + void *vale; /*Value of Output E*/ + void *valf; /*Value of Output F*/ + void *valg; /*Value of Output G*/ + void *valh; /*Value of Output H*/ + void *vali; /*Value of Output I*/ + void *valj; /*Value of Output J*/ + void *valk; /*Value of Output K*/ + void *vall; /*Value of Output L*/ + void *valm; /*Value of Output M*/ + void *valn; /*Value of Output N*/ + void *valo; /*Value of Output O*/ + void *valp; /*Value of Output P*/ + void *valq; /*Value of Output Q*/ + void *valr; /*Value of Output R*/ + void *vals; /*Value of Output S*/ + void *valt; /*Value of Output T*/ + void *valu; /*Value of Output U*/ + void *ovla; /*Old Output A*/ + void *ovlb; /*Old Output B*/ + void *ovlc; /*Old Output C*/ + void *ovld; /*Old Output D*/ + void *ovle; /*Old Output E*/ + void *ovlf; /*Old Output F*/ + void *ovlg; /*Old Output G*/ + void *ovlh; /*Old Output H*/ + void *ovli; /*Old Output I*/ + void *ovlj; /*Old Output J*/ + void *ovlk; /*Old Output K*/ + void *ovll; /*Old Output L*/ + void *ovlm; /*Old Output M*/ + void *ovln; /*Old Output N*/ + void *ovlo; /*Old Output O*/ + void *ovlp; /*Old Output P*/ + void *ovlq; /*Old Output Q*/ + void *ovlr; /*Old Output R*/ + void *ovls; /*Old Output S*/ + void *ovlt; /*Old Output T*/ + void *ovlu; /*Old Output U*/ + epicsEnum16 ftva; /*Type of VALA*/ + epicsEnum16 ftvb; /*Type of VALB*/ + epicsEnum16 ftvc; /*Type of VALC*/ + epicsEnum16 ftvd; /*Type of VALD*/ + epicsEnum16 ftve; /*Type of VALE*/ + epicsEnum16 ftvf; /*Type of VALF*/ + epicsEnum16 ftvg; /*Type of VALG*/ + epicsEnum16 ftvh; /*Type of VALH*/ + epicsEnum16 ftvi; /*Type of VALI*/ + epicsEnum16 ftvj; /*Type of VALJ*/ + epicsEnum16 ftvk; /*Type of VALK*/ + epicsEnum16 ftvl; /*Type of VALL*/ + epicsEnum16 ftvm; /*Type of VALM*/ + epicsEnum16 ftvn; /*Type of VALN*/ + epicsEnum16 ftvo; /*Type of VALO*/ + epicsEnum16 ftvp; /*Type of VALP*/ + epicsEnum16 ftvq; /*Type of VALQ*/ + epicsEnum16 ftvr; /*Type of VALR*/ + epicsEnum16 ftvs; /*Type of VALS*/ + epicsEnum16 ftvt; /*Type of VALT*/ + epicsEnum16 ftvu; /*Type of VALU*/ + unsigned long nova; /*No. in VALA*/ + unsigned long novb; /*No. in VALB*/ + unsigned long novc; /*No. in VALC*/ + unsigned long novd; /*No. in VALD*/ + unsigned long nove; /*No. in VALE*/ + unsigned long novf; /*No. in VALF*/ + unsigned long novg; /*No. in VALG*/ + unsigned long novh; /*No. in VAlH*/ + unsigned long novi; /*No. in VALI*/ + unsigned long novj; /*No. in VALJ*/ + unsigned long novk; /*No. in VALK*/ + unsigned long novl; /*No. in VALL*/ + unsigned long novm; /*No. in VALM*/ + unsigned long novn; /*No. in VALN*/ + unsigned long novo; /*No. in VALO*/ + unsigned long novp; /*No. in VALP*/ + unsigned long novq; /*No. in VALQ*/ + unsigned long novr; /*No. in VALR*/ + unsigned long novs; /*No. in VALS*/ + unsigned long novt; /*No. in VALT*/ + unsigned long novu; /*No. in VALU*/ + unsigned long tova; /*Total bytes for VALA*/ + unsigned long tovb; /*Total bytes for VALB*/ + unsigned long tovc; /*Total bytes for VALC*/ + unsigned long tovd; /*Total bytes for VALD*/ + unsigned long tove; /*Total bytes for VALE*/ + unsigned long tovf; /*Total bytes for VALF*/ + unsigned long tovg; /*Total bytes for VALG*/ + unsigned long tovh; /*Total bytes for VAlH*/ + unsigned long tovi; /*Total bytes for VALI*/ + unsigned long tovj; /*Total bytes for VALJ*/ + unsigned long tovk; /*Total bytes for VALK*/ + unsigned long tovl; /*Total bytes for VALL*/ + unsigned long tovm; /*Total bytes for VALM*/ + unsigned long tovn; /*Total bytes for VALN*/ + unsigned long tovo; /*Total bytes for VALO*/ + unsigned long tovp; /*Total bytes for VALP*/ + unsigned long tovq; /*Total bytes for VALQ*/ + unsigned long tovr; /*Total bytes for VALR*/ + unsigned long tovs; /*Total bytes for VALS*/ + unsigned long tovt; /*Total bytes for VALT*/ + unsigned long tovu; /*Total bytes for VALU*/ +} genSubRecord; +#define genSubRecordNAME 0 +#define genSubRecordDESC 1 +#define genSubRecordASG 2 +#define genSubRecordSCAN 3 +#define genSubRecordPINI 4 +#define genSubRecordPHAS 5 +#define genSubRecordEVNT 6 +#define genSubRecordTSE 7 +#define genSubRecordTSEL 8 +#define genSubRecordDTYP 9 +#define genSubRecordDISV 10 +#define genSubRecordDISA 11 +#define genSubRecordSDIS 12 +#define genSubRecordMLOK 13 +#define genSubRecordMLIS 14 +#define genSubRecordDISP 15 +#define genSubRecordPROC 16 +#define genSubRecordSTAT 17 +#define genSubRecordSEVR 18 +#define genSubRecordNSTA 19 +#define genSubRecordNSEV 20 +#define genSubRecordACKS 21 +#define genSubRecordACKT 22 +#define genSubRecordDISS 23 +#define genSubRecordLCNT 24 +#define genSubRecordPACT 25 +#define genSubRecordPUTF 26 +#define genSubRecordRPRO 27 +#define genSubRecordASP 28 +#define genSubRecordPPN 29 +#define genSubRecordPPNR 30 +#define genSubRecordSPVT 31 +#define genSubRecordRSET 32 +#define genSubRecordDSET 33 +#define genSubRecordDPVT 34 +#define genSubRecordRDES 35 +#define genSubRecordLSET 36 +#define genSubRecordPRIO 37 +#define genSubRecordTPRO 38 +#define genSubRecordBKPT 39 +#define genSubRecordUDF 40 +#define genSubRecordTIME 41 +#define genSubRecordFLNK 42 +#define genSubRecordVERS 43 +#define genSubRecordVAL 44 +#define genSubRecordOVAL 45 +#define genSubRecordSADR 46 +#define genSubRecordOSAD 47 +#define genSubRecordLFLG 48 +#define genSubRecordEFLG 49 +#define genSubRecordSUBL 50 +#define genSubRecordINAM 51 +#define genSubRecordSNAM 52 +#define genSubRecordONAM 53 +#define genSubRecordBRSV 54 +#define genSubRecordPREC 55 +#define genSubRecordINPA 56 +#define genSubRecordINPB 57 +#define genSubRecordINPC 58 +#define genSubRecordINPD 59 +#define genSubRecordINPE 60 +#define genSubRecordINPF 61 +#define genSubRecordINPG 62 +#define genSubRecordINPH 63 +#define genSubRecordINPI 64 +#define genSubRecordINPJ 65 +#define genSubRecordINPK 66 +#define genSubRecordINPL 67 +#define genSubRecordINPM 68 +#define genSubRecordINPN 69 +#define genSubRecordINPO 70 +#define genSubRecordINPP 71 +#define genSubRecordINPQ 72 +#define genSubRecordINPR 73 +#define genSubRecordINPS 74 +#define genSubRecordINPT 75 +#define genSubRecordINPU 76 +#define genSubRecordUFA 77 +#define genSubRecordUFB 78 +#define genSubRecordUFC 79 +#define genSubRecordUFD 80 +#define genSubRecordUFE 81 +#define genSubRecordUFF 82 +#define genSubRecordUFG 83 +#define genSubRecordUFH 84 +#define genSubRecordUFI 85 +#define genSubRecordUFJ 86 +#define genSubRecordUFK 87 +#define genSubRecordUFL 88 +#define genSubRecordUFM 89 +#define genSubRecordUFN 90 +#define genSubRecordUFO 91 +#define genSubRecordUFP 92 +#define genSubRecordUFQ 93 +#define genSubRecordUFR 94 +#define genSubRecordUFS 95 +#define genSubRecordUFT 96 +#define genSubRecordUFU 97 +#define genSubRecordA 98 +#define genSubRecordB 99 +#define genSubRecordC 100 +#define genSubRecordD 101 +#define genSubRecordE 102 +#define genSubRecordF 103 +#define genSubRecordG 104 +#define genSubRecordH 105 +#define genSubRecordI 106 +#define genSubRecordJ 107 +#define genSubRecordK 108 +#define genSubRecordL 109 +#define genSubRecordM 110 +#define genSubRecordN 111 +#define genSubRecordO 112 +#define genSubRecordP 113 +#define genSubRecordQ 114 +#define genSubRecordR 115 +#define genSubRecordS 116 +#define genSubRecordT 117 +#define genSubRecordU 118 +#define genSubRecordFTA 119 +#define genSubRecordFTB 120 +#define genSubRecordFTC 121 +#define genSubRecordFTD 122 +#define genSubRecordFTE 123 +#define genSubRecordFTF 124 +#define genSubRecordFTG 125 +#define genSubRecordFTH 126 +#define genSubRecordFTI 127 +#define genSubRecordFTJ 128 +#define genSubRecordFTK 129 +#define genSubRecordFTL 130 +#define genSubRecordFTM 131 +#define genSubRecordFTN 132 +#define genSubRecordFTO 133 +#define genSubRecordFTP 134 +#define genSubRecordFTQ 135 +#define genSubRecordFTR 136 +#define genSubRecordFTS 137 +#define genSubRecordFTT 138 +#define genSubRecordFTU 139 +#define genSubRecordNOA 140 +#define genSubRecordNOB 141 +#define genSubRecordNOC 142 +#define genSubRecordNOD 143 +#define genSubRecordNOE 144 +#define genSubRecordNOF 145 +#define genSubRecordNOG 146 +#define genSubRecordNOH 147 +#define genSubRecordNOI 148 +#define genSubRecordNOJ 149 +#define genSubRecordNOK 150 +#define genSubRecordNOL 151 +#define genSubRecordNOM 152 +#define genSubRecordNON 153 +#define genSubRecordNOO 154 +#define genSubRecordNOP 155 +#define genSubRecordNOQ 156 +#define genSubRecordNOR 157 +#define genSubRecordNOS 158 +#define genSubRecordNOT 159 +#define genSubRecordNOU 160 +#define genSubRecordOUTA 161 +#define genSubRecordOUTB 162 +#define genSubRecordOUTC 163 +#define genSubRecordOUTD 164 +#define genSubRecordOUTE 165 +#define genSubRecordOUTF 166 +#define genSubRecordOUTG 167 +#define genSubRecordOUTH 168 +#define genSubRecordOUTI 169 +#define genSubRecordOUTJ 170 +#define genSubRecordOUTK 171 +#define genSubRecordOUTL 172 +#define genSubRecordOUTM 173 +#define genSubRecordOUTN 174 +#define genSubRecordOUTO 175 +#define genSubRecordOUTP 176 +#define genSubRecordOUTQ 177 +#define genSubRecordOUTR 178 +#define genSubRecordOUTS 179 +#define genSubRecordOUTT 180 +#define genSubRecordOUTU 181 +#define genSubRecordUFVA 182 +#define genSubRecordUFVB 183 +#define genSubRecordUFVC 184 +#define genSubRecordUFVD 185 +#define genSubRecordUFVE 186 +#define genSubRecordUFVF 187 +#define genSubRecordUFVG 188 +#define genSubRecordUFVH 189 +#define genSubRecordUFVI 190 +#define genSubRecordUFVJ 191 +#define genSubRecordUFVK 192 +#define genSubRecordUFVL 193 +#define genSubRecordUFVM 194 +#define genSubRecordUFVN 195 +#define genSubRecordUFVO 196 +#define genSubRecordUFVP 197 +#define genSubRecordUFVQ 198 +#define genSubRecordUFVR 199 +#define genSubRecordUFVS 200 +#define genSubRecordUFVT 201 +#define genSubRecordUFVU 202 +#define genSubRecordVALA 203 +#define genSubRecordVALB 204 +#define genSubRecordVALC 205 +#define genSubRecordVALD 206 +#define genSubRecordVALE 207 +#define genSubRecordVALF 208 +#define genSubRecordVALG 209 +#define genSubRecordVALH 210 +#define genSubRecordVALI 211 +#define genSubRecordVALJ 212 +#define genSubRecordVALK 213 +#define genSubRecordVALL 214 +#define genSubRecordVALM 215 +#define genSubRecordVALN 216 +#define genSubRecordVALO 217 +#define genSubRecordVALP 218 +#define genSubRecordVALQ 219 +#define genSubRecordVALR 220 +#define genSubRecordVALS 221 +#define genSubRecordVALT 222 +#define genSubRecordVALU 223 +#define genSubRecordOVLA 224 +#define genSubRecordOVLB 225 +#define genSubRecordOVLC 226 +#define genSubRecordOVLD 227 +#define genSubRecordOVLE 228 +#define genSubRecordOVLF 229 +#define genSubRecordOVLG 230 +#define genSubRecordOVLH 231 +#define genSubRecordOVLI 232 +#define genSubRecordOVLJ 233 +#define genSubRecordOVLK 234 +#define genSubRecordOVLL 235 +#define genSubRecordOVLM 236 +#define genSubRecordOVLN 237 +#define genSubRecordOVLO 238 +#define genSubRecordOVLP 239 +#define genSubRecordOVLQ 240 +#define genSubRecordOVLR 241 +#define genSubRecordOVLS 242 +#define genSubRecordOVLT 243 +#define genSubRecordOVLU 244 +#define genSubRecordFTVA 245 +#define genSubRecordFTVB 246 +#define genSubRecordFTVC 247 +#define genSubRecordFTVD 248 +#define genSubRecordFTVE 249 +#define genSubRecordFTVF 250 +#define genSubRecordFTVG 251 +#define genSubRecordFTVH 252 +#define genSubRecordFTVI 253 +#define genSubRecordFTVJ 254 +#define genSubRecordFTVK 255 +#define genSubRecordFTVL 256 +#define genSubRecordFTVM 257 +#define genSubRecordFTVN 258 +#define genSubRecordFTVO 259 +#define genSubRecordFTVP 260 +#define genSubRecordFTVQ 261 +#define genSubRecordFTVR 262 +#define genSubRecordFTVS 263 +#define genSubRecordFTVT 264 +#define genSubRecordFTVU 265 +#define genSubRecordNOVA 266 +#define genSubRecordNOVB 267 +#define genSubRecordNOVC 268 +#define genSubRecordNOVD 269 +#define genSubRecordNOVE 270 +#define genSubRecordNOVF 271 +#define genSubRecordNOVG 272 +#define genSubRecordNOVH 273 +#define genSubRecordNOVI 274 +#define genSubRecordNOVJ 275 +#define genSubRecordNOVK 276 +#define genSubRecordNOVL 277 +#define genSubRecordNOVM 278 +#define genSubRecordNOVN 279 +#define genSubRecordNOVO 280 +#define genSubRecordNOVP 281 +#define genSubRecordNOVQ 282 +#define genSubRecordNOVR 283 +#define genSubRecordNOVS 284 +#define genSubRecordNOVT 285 +#define genSubRecordNOVU 286 +#define genSubRecordTOVA 287 +#define genSubRecordTOVB 288 +#define genSubRecordTOVC 289 +#define genSubRecordTOVD 290 +#define genSubRecordTOVE 291 +#define genSubRecordTOVF 292 +#define genSubRecordTOVG 293 +#define genSubRecordTOVH 294 +#define genSubRecordTOVI 295 +#define genSubRecordTOVJ 296 +#define genSubRecordTOVK 297 +#define genSubRecordTOVL 298 +#define genSubRecordTOVM 299 +#define genSubRecordTOVN 300 +#define genSubRecordTOVO 301 +#define genSubRecordTOVP 302 +#define genSubRecordTOVQ 303 +#define genSubRecordTOVR 304 +#define genSubRecordTOVS 305 +#define genSubRecordTOVT 306 +#define genSubRecordTOVU 307 +#endif /*INCgenSubH*/ +#ifdef GEN_SIZE_OFFSET +#ifdef __cplusplus +extern "C" { +#endif +#include +static int genSubRecordSizeOffset(dbRecordType *pdbRecordType) +{ + genSubRecord *prec = 0; + pdbRecordType->papFldDes[0]->size=sizeof(prec->name); + pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec); + pdbRecordType->papFldDes[1]->size=sizeof(prec->desc); + pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec); + pdbRecordType->papFldDes[2]->size=sizeof(prec->asg); + pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec); + pdbRecordType->papFldDes[3]->size=sizeof(prec->scan); + pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec); + pdbRecordType->papFldDes[4]->size=sizeof(prec->pini); + pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec); + pdbRecordType->papFldDes[5]->size=sizeof(prec->phas); + pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec); + pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt); + pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec); + pdbRecordType->papFldDes[7]->size=sizeof(prec->tse); + pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec); + pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel); + pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec); + pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp); + pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec); + pdbRecordType->papFldDes[10]->size=sizeof(prec->disv); + pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec); + pdbRecordType->papFldDes[11]->size=sizeof(prec->disa); + pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec); + pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis); + pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec); + pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok); + pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec); + pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis); + pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec); + pdbRecordType->papFldDes[15]->size=sizeof(prec->disp); + pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec); + pdbRecordType->papFldDes[16]->size=sizeof(prec->proc); + pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec); + pdbRecordType->papFldDes[17]->size=sizeof(prec->stat); + pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec); + pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr); + pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec); + pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta); + pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec); + pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev); + pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec); + pdbRecordType->papFldDes[21]->size=sizeof(prec->acks); + pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec); + pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt); + pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec); + pdbRecordType->papFldDes[23]->size=sizeof(prec->diss); + pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec); + pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt); + pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec); + pdbRecordType->papFldDes[25]->size=sizeof(prec->pact); + pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec); + pdbRecordType->papFldDes[26]->size=sizeof(prec->putf); + pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec); + pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro); + pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec); + pdbRecordType->papFldDes[28]->size=sizeof(prec->asp); + pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec); + pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn); + pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec); + pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr); + pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec); + pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt); + pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec); + pdbRecordType->papFldDes[32]->size=sizeof(prec->rset); + pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec); + pdbRecordType->papFldDes[33]->size=sizeof(prec->dset); + pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec); + pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt); + pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec); + pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes); + pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec); + pdbRecordType->papFldDes[36]->size=sizeof(prec->lset); + pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec); + pdbRecordType->papFldDes[37]->size=sizeof(prec->prio); + pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec); + pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro); + pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec); + pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt); + pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec); + pdbRecordType->papFldDes[40]->size=sizeof(prec->udf); + pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec); + pdbRecordType->papFldDes[41]->size=sizeof(prec->time); + pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec); + pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk); + pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec); + pdbRecordType->papFldDes[43]->size=sizeof(prec->vers); + pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->vers - (char *)prec); + pdbRecordType->papFldDes[44]->size=sizeof(prec->val); + pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->val - (char *)prec); + pdbRecordType->papFldDes[45]->size=sizeof(prec->oval); + pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->oval - (char *)prec); + pdbRecordType->papFldDes[46]->size=sizeof(prec->sadr); + pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->sadr - (char *)prec); + pdbRecordType->papFldDes[47]->size=sizeof(prec->osad); + pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->osad - (char *)prec); + pdbRecordType->papFldDes[48]->size=sizeof(prec->lflg); + pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lflg - (char *)prec); + pdbRecordType->papFldDes[49]->size=sizeof(prec->eflg); + pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->eflg - (char *)prec); + pdbRecordType->papFldDes[50]->size=sizeof(prec->subl); + pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->subl - (char *)prec); + pdbRecordType->papFldDes[51]->size=sizeof(prec->inam); + pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->inam - (char *)prec); + pdbRecordType->papFldDes[52]->size=sizeof(prec->snam); + pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->snam - (char *)prec); + pdbRecordType->papFldDes[53]->size=sizeof(prec->onam); + pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->onam - (char *)prec); + pdbRecordType->papFldDes[54]->size=sizeof(prec->brsv); + pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->brsv - (char *)prec); + pdbRecordType->papFldDes[55]->size=sizeof(prec->prec); + pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->prec - (char *)prec); + pdbRecordType->papFldDes[56]->size=sizeof(prec->inpa); + pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->inpa - (char *)prec); + pdbRecordType->papFldDes[57]->size=sizeof(prec->inpb); + pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->inpb - (char *)prec); + pdbRecordType->papFldDes[58]->size=sizeof(prec->inpc); + pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->inpc - (char *)prec); + pdbRecordType->papFldDes[59]->size=sizeof(prec->inpd); + pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->inpd - (char *)prec); + pdbRecordType->papFldDes[60]->size=sizeof(prec->inpe); + pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->inpe - (char *)prec); + pdbRecordType->papFldDes[61]->size=sizeof(prec->inpf); + pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->inpf - (char *)prec); + pdbRecordType->papFldDes[62]->size=sizeof(prec->inpg); + pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->inpg - (char *)prec); + pdbRecordType->papFldDes[63]->size=sizeof(prec->inph); + pdbRecordType->papFldDes[63]->offset=(short)((char *)&prec->inph - (char *)prec); + pdbRecordType->papFldDes[64]->size=sizeof(prec->inpi); + pdbRecordType->papFldDes[64]->offset=(short)((char *)&prec->inpi - (char *)prec); + pdbRecordType->papFldDes[65]->size=sizeof(prec->inpj); + pdbRecordType->papFldDes[65]->offset=(short)((char *)&prec->inpj - (char *)prec); + pdbRecordType->papFldDes[66]->size=sizeof(prec->inpk); + pdbRecordType->papFldDes[66]->offset=(short)((char *)&prec->inpk - (char *)prec); + pdbRecordType->papFldDes[67]->size=sizeof(prec->inpl); + pdbRecordType->papFldDes[67]->offset=(short)((char *)&prec->inpl - (char *)prec); + pdbRecordType->papFldDes[68]->size=sizeof(prec->inpm); + pdbRecordType->papFldDes[68]->offset=(short)((char *)&prec->inpm - (char *)prec); + pdbRecordType->papFldDes[69]->size=sizeof(prec->inpn); + pdbRecordType->papFldDes[69]->offset=(short)((char *)&prec->inpn - (char *)prec); + pdbRecordType->papFldDes[70]->size=sizeof(prec->inpo); + pdbRecordType->papFldDes[70]->offset=(short)((char *)&prec->inpo - (char *)prec); + pdbRecordType->papFldDes[71]->size=sizeof(prec->inpp); + pdbRecordType->papFldDes[71]->offset=(short)((char *)&prec->inpp - (char *)prec); + pdbRecordType->papFldDes[72]->size=sizeof(prec->inpq); + pdbRecordType->papFldDes[72]->offset=(short)((char *)&prec->inpq - (char *)prec); + pdbRecordType->papFldDes[73]->size=sizeof(prec->inpr); + pdbRecordType->papFldDes[73]->offset=(short)((char *)&prec->inpr - (char *)prec); + pdbRecordType->papFldDes[74]->size=sizeof(prec->inps); + pdbRecordType->papFldDes[74]->offset=(short)((char *)&prec->inps - (char *)prec); + pdbRecordType->papFldDes[75]->size=sizeof(prec->inpt); + pdbRecordType->papFldDes[75]->offset=(short)((char *)&prec->inpt - (char *)prec); + pdbRecordType->papFldDes[76]->size=sizeof(prec->inpu); + pdbRecordType->papFldDes[76]->offset=(short)((char *)&prec->inpu - (char *)prec); + pdbRecordType->papFldDes[77]->size=sizeof(prec->ufa); + pdbRecordType->papFldDes[77]->offset=(short)((char *)&prec->ufa - (char *)prec); + pdbRecordType->papFldDes[78]->size=sizeof(prec->ufb); + pdbRecordType->papFldDes[78]->offset=(short)((char *)&prec->ufb - (char *)prec); + pdbRecordType->papFldDes[79]->size=sizeof(prec->ufc); + pdbRecordType->papFldDes[79]->offset=(short)((char *)&prec->ufc - (char *)prec); + pdbRecordType->papFldDes[80]->size=sizeof(prec->ufd); + pdbRecordType->papFldDes[80]->offset=(short)((char *)&prec->ufd - (char *)prec); + pdbRecordType->papFldDes[81]->size=sizeof(prec->ufe); + pdbRecordType->papFldDes[81]->offset=(short)((char *)&prec->ufe - (char *)prec); + pdbRecordType->papFldDes[82]->size=sizeof(prec->uff); + pdbRecordType->papFldDes[82]->offset=(short)((char *)&prec->uff - (char *)prec); + pdbRecordType->papFldDes[83]->size=sizeof(prec->ufg); + pdbRecordType->papFldDes[83]->offset=(short)((char *)&prec->ufg - (char *)prec); + pdbRecordType->papFldDes[84]->size=sizeof(prec->ufh); + pdbRecordType->papFldDes[84]->offset=(short)((char *)&prec->ufh - (char *)prec); + pdbRecordType->papFldDes[85]->size=sizeof(prec->ufi); + pdbRecordType->papFldDes[85]->offset=(short)((char *)&prec->ufi - (char *)prec); + pdbRecordType->papFldDes[86]->size=sizeof(prec->ufj); + pdbRecordType->papFldDes[86]->offset=(short)((char *)&prec->ufj - (char *)prec); + pdbRecordType->papFldDes[87]->size=sizeof(prec->ufk); + pdbRecordType->papFldDes[87]->offset=(short)((char *)&prec->ufk - (char *)prec); + pdbRecordType->papFldDes[88]->size=sizeof(prec->ufl); + pdbRecordType->papFldDes[88]->offset=(short)((char *)&prec->ufl - (char *)prec); + pdbRecordType->papFldDes[89]->size=sizeof(prec->ufm); + pdbRecordType->papFldDes[89]->offset=(short)((char *)&prec->ufm - (char *)prec); + pdbRecordType->papFldDes[90]->size=sizeof(prec->ufn); + pdbRecordType->papFldDes[90]->offset=(short)((char *)&prec->ufn - (char *)prec); + pdbRecordType->papFldDes[91]->size=sizeof(prec->ufo); + pdbRecordType->papFldDes[91]->offset=(short)((char *)&prec->ufo - (char *)prec); + pdbRecordType->papFldDes[92]->size=sizeof(prec->ufp); + pdbRecordType->papFldDes[92]->offset=(short)((char *)&prec->ufp - (char *)prec); + pdbRecordType->papFldDes[93]->size=sizeof(prec->ufq); + pdbRecordType->papFldDes[93]->offset=(short)((char *)&prec->ufq - (char *)prec); + pdbRecordType->papFldDes[94]->size=sizeof(prec->ufr); + pdbRecordType->papFldDes[94]->offset=(short)((char *)&prec->ufr - (char *)prec); + pdbRecordType->papFldDes[95]->size=sizeof(prec->ufs); + pdbRecordType->papFldDes[95]->offset=(short)((char *)&prec->ufs - (char *)prec); + pdbRecordType->papFldDes[96]->size=sizeof(prec->uft); + pdbRecordType->papFldDes[96]->offset=(short)((char *)&prec->uft - (char *)prec); + pdbRecordType->papFldDes[97]->size=sizeof(prec->ufu); + pdbRecordType->papFldDes[97]->offset=(short)((char *)&prec->ufu - (char *)prec); + pdbRecordType->papFldDes[98]->size=sizeof(prec->a); + pdbRecordType->papFldDes[98]->offset=(short)((char *)&prec->a - (char *)prec); + pdbRecordType->papFldDes[99]->size=sizeof(prec->b); + pdbRecordType->papFldDes[99]->offset=(short)((char *)&prec->b - (char *)prec); + pdbRecordType->papFldDes[100]->size=sizeof(prec->c); + pdbRecordType->papFldDes[100]->offset=(short)((char *)&prec->c - (char *)prec); + pdbRecordType->papFldDes[101]->size=sizeof(prec->d); + pdbRecordType->papFldDes[101]->offset=(short)((char *)&prec->d - (char *)prec); + pdbRecordType->papFldDes[102]->size=sizeof(prec->e); + pdbRecordType->papFldDes[102]->offset=(short)((char *)&prec->e - (char *)prec); + pdbRecordType->papFldDes[103]->size=sizeof(prec->f); + pdbRecordType->papFldDes[103]->offset=(short)((char *)&prec->f - (char *)prec); + pdbRecordType->papFldDes[104]->size=sizeof(prec->g); + pdbRecordType->papFldDes[104]->offset=(short)((char *)&prec->g - (char *)prec); + pdbRecordType->papFldDes[105]->size=sizeof(prec->h); + pdbRecordType->papFldDes[105]->offset=(short)((char *)&prec->h - (char *)prec); + pdbRecordType->papFldDes[106]->size=sizeof(prec->i); + pdbRecordType->papFldDes[106]->offset=(short)((char *)&prec->i - (char *)prec); + pdbRecordType->papFldDes[107]->size=sizeof(prec->j); + pdbRecordType->papFldDes[107]->offset=(short)((char *)&prec->j - (char *)prec); + pdbRecordType->papFldDes[108]->size=sizeof(prec->k); + pdbRecordType->papFldDes[108]->offset=(short)((char *)&prec->k - (char *)prec); + pdbRecordType->papFldDes[109]->size=sizeof(prec->l); + pdbRecordType->papFldDes[109]->offset=(short)((char *)&prec->l - (char *)prec); + pdbRecordType->papFldDes[110]->size=sizeof(prec->m); + pdbRecordType->papFldDes[110]->offset=(short)((char *)&prec->m - (char *)prec); + pdbRecordType->papFldDes[111]->size=sizeof(prec->n); + pdbRecordType->papFldDes[111]->offset=(short)((char *)&prec->n - (char *)prec); + pdbRecordType->papFldDes[112]->size=sizeof(prec->o); + pdbRecordType->papFldDes[112]->offset=(short)((char *)&prec->o - (char *)prec); + pdbRecordType->papFldDes[113]->size=sizeof(prec->p); + pdbRecordType->papFldDes[113]->offset=(short)((char *)&prec->p - (char *)prec); + pdbRecordType->papFldDes[114]->size=sizeof(prec->q); + pdbRecordType->papFldDes[114]->offset=(short)((char *)&prec->q - (char *)prec); + pdbRecordType->papFldDes[115]->size=sizeof(prec->r); + pdbRecordType->papFldDes[115]->offset=(short)((char *)&prec->r - (char *)prec); + pdbRecordType->papFldDes[116]->size=sizeof(prec->s); + pdbRecordType->papFldDes[116]->offset=(short)((char *)&prec->s - (char *)prec); + pdbRecordType->papFldDes[117]->size=sizeof(prec->t); + pdbRecordType->papFldDes[117]->offset=(short)((char *)&prec->t - (char *)prec); + pdbRecordType->papFldDes[118]->size=sizeof(prec->u); + pdbRecordType->papFldDes[118]->offset=(short)((char *)&prec->u - (char *)prec); + pdbRecordType->papFldDes[119]->size=sizeof(prec->fta); + pdbRecordType->papFldDes[119]->offset=(short)((char *)&prec->fta - (char *)prec); + pdbRecordType->papFldDes[120]->size=sizeof(prec->ftb); + pdbRecordType->papFldDes[120]->offset=(short)((char *)&prec->ftb - (char *)prec); + pdbRecordType->papFldDes[121]->size=sizeof(prec->ftc); + pdbRecordType->papFldDes[121]->offset=(short)((char *)&prec->ftc - (char *)prec); + pdbRecordType->papFldDes[122]->size=sizeof(prec->ftd); + pdbRecordType->papFldDes[122]->offset=(short)((char *)&prec->ftd - (char *)prec); + pdbRecordType->papFldDes[123]->size=sizeof(prec->fte); + pdbRecordType->papFldDes[123]->offset=(short)((char *)&prec->fte - (char *)prec); + pdbRecordType->papFldDes[124]->size=sizeof(prec->ftf); + pdbRecordType->papFldDes[124]->offset=(short)((char *)&prec->ftf - (char *)prec); + pdbRecordType->papFldDes[125]->size=sizeof(prec->ftg); + pdbRecordType->papFldDes[125]->offset=(short)((char *)&prec->ftg - (char *)prec); + pdbRecordType->papFldDes[126]->size=sizeof(prec->fth); + pdbRecordType->papFldDes[126]->offset=(short)((char *)&prec->fth - (char *)prec); + pdbRecordType->papFldDes[127]->size=sizeof(prec->fti); + pdbRecordType->papFldDes[127]->offset=(short)((char *)&prec->fti - (char *)prec); + pdbRecordType->papFldDes[128]->size=sizeof(prec->ftj); + pdbRecordType->papFldDes[128]->offset=(short)((char *)&prec->ftj - (char *)prec); + pdbRecordType->papFldDes[129]->size=sizeof(prec->ftk); + pdbRecordType->papFldDes[129]->offset=(short)((char *)&prec->ftk - (char *)prec); + pdbRecordType->papFldDes[130]->size=sizeof(prec->ftl); + pdbRecordType->papFldDes[130]->offset=(short)((char *)&prec->ftl - (char *)prec); + pdbRecordType->papFldDes[131]->size=sizeof(prec->ftm); + pdbRecordType->papFldDes[131]->offset=(short)((char *)&prec->ftm - (char *)prec); + pdbRecordType->papFldDes[132]->size=sizeof(prec->ftn); + pdbRecordType->papFldDes[132]->offset=(short)((char *)&prec->ftn - (char *)prec); + pdbRecordType->papFldDes[133]->size=sizeof(prec->fto); + pdbRecordType->papFldDes[133]->offset=(short)((char *)&prec->fto - (char *)prec); + pdbRecordType->papFldDes[134]->size=sizeof(prec->ftp); + pdbRecordType->papFldDes[134]->offset=(short)((char *)&prec->ftp - (char *)prec); + pdbRecordType->papFldDes[135]->size=sizeof(prec->ftq); + pdbRecordType->papFldDes[135]->offset=(short)((char *)&prec->ftq - (char *)prec); + pdbRecordType->papFldDes[136]->size=sizeof(prec->ftr); + pdbRecordType->papFldDes[136]->offset=(short)((char *)&prec->ftr - (char *)prec); + pdbRecordType->papFldDes[137]->size=sizeof(prec->fts); + pdbRecordType->papFldDes[137]->offset=(short)((char *)&prec->fts - (char *)prec); + pdbRecordType->papFldDes[138]->size=sizeof(prec->ftt); + pdbRecordType->papFldDes[138]->offset=(short)((char *)&prec->ftt - (char *)prec); + pdbRecordType->papFldDes[139]->size=sizeof(prec->ftu); + pdbRecordType->papFldDes[139]->offset=(short)((char *)&prec->ftu - (char *)prec); + pdbRecordType->papFldDes[140]->size=sizeof(prec->noa); + pdbRecordType->papFldDes[140]->offset=(short)((char *)&prec->noa - (char *)prec); + pdbRecordType->papFldDes[141]->size=sizeof(prec->nob); + pdbRecordType->papFldDes[141]->offset=(short)((char *)&prec->nob - (char *)prec); + pdbRecordType->papFldDes[142]->size=sizeof(prec->noc); + pdbRecordType->papFldDes[142]->offset=(short)((char *)&prec->noc - (char *)prec); + pdbRecordType->papFldDes[143]->size=sizeof(prec->nod); + pdbRecordType->papFldDes[143]->offset=(short)((char *)&prec->nod - (char *)prec); + pdbRecordType->papFldDes[144]->size=sizeof(prec->noe); + pdbRecordType->papFldDes[144]->offset=(short)((char *)&prec->noe - (char *)prec); + pdbRecordType->papFldDes[145]->size=sizeof(prec->nof); + pdbRecordType->papFldDes[145]->offset=(short)((char *)&prec->nof - (char *)prec); + pdbRecordType->papFldDes[146]->size=sizeof(prec->nog); + pdbRecordType->papFldDes[146]->offset=(short)((char *)&prec->nog - (char *)prec); + pdbRecordType->papFldDes[147]->size=sizeof(prec->noh); + pdbRecordType->papFldDes[147]->offset=(short)((char *)&prec->noh - (char *)prec); + pdbRecordType->papFldDes[148]->size=sizeof(prec->noi); + pdbRecordType->papFldDes[148]->offset=(short)((char *)&prec->noi - (char *)prec); + pdbRecordType->papFldDes[149]->size=sizeof(prec->noj); + pdbRecordType->papFldDes[149]->offset=(short)((char *)&prec->noj - (char *)prec); + pdbRecordType->papFldDes[150]->size=sizeof(prec->nok); + pdbRecordType->papFldDes[150]->offset=(short)((char *)&prec->nok - (char *)prec); + pdbRecordType->papFldDes[151]->size=sizeof(prec->nol); + pdbRecordType->papFldDes[151]->offset=(short)((char *)&prec->nol - (char *)prec); + pdbRecordType->papFldDes[152]->size=sizeof(prec->nom); + pdbRecordType->papFldDes[152]->offset=(short)((char *)&prec->nom - (char *)prec); + pdbRecordType->papFldDes[153]->size=sizeof(prec->non); + pdbRecordType->papFldDes[153]->offset=(short)((char *)&prec->non - (char *)prec); + pdbRecordType->papFldDes[154]->size=sizeof(prec->noo); + pdbRecordType->papFldDes[154]->offset=(short)((char *)&prec->noo - (char *)prec); + pdbRecordType->papFldDes[155]->size=sizeof(prec->nop); + pdbRecordType->papFldDes[155]->offset=(short)((char *)&prec->nop - (char *)prec); + pdbRecordType->papFldDes[156]->size=sizeof(prec->noq); + pdbRecordType->papFldDes[156]->offset=(short)((char *)&prec->noq - (char *)prec); + pdbRecordType->papFldDes[157]->size=sizeof(prec->nor); + pdbRecordType->papFldDes[157]->offset=(short)((char *)&prec->nor - (char *)prec); + pdbRecordType->papFldDes[158]->size=sizeof(prec->nos); + pdbRecordType->papFldDes[158]->offset=(short)((char *)&prec->nos - (char *)prec); + pdbRecordType->papFldDes[159]->size=sizeof(prec->not); + pdbRecordType->papFldDes[159]->offset=(short)((char *)&prec->not - (char *)prec); + pdbRecordType->papFldDes[160]->size=sizeof(prec->nou); + pdbRecordType->papFldDes[160]->offset=(short)((char *)&prec->nou - (char *)prec); + pdbRecordType->papFldDes[161]->size=sizeof(prec->outa); + pdbRecordType->papFldDes[161]->offset=(short)((char *)&prec->outa - (char *)prec); + pdbRecordType->papFldDes[162]->size=sizeof(prec->outb); + pdbRecordType->papFldDes[162]->offset=(short)((char *)&prec->outb - (char *)prec); + pdbRecordType->papFldDes[163]->size=sizeof(prec->outc); + pdbRecordType->papFldDes[163]->offset=(short)((char *)&prec->outc - (char *)prec); + pdbRecordType->papFldDes[164]->size=sizeof(prec->outd); + pdbRecordType->papFldDes[164]->offset=(short)((char *)&prec->outd - (char *)prec); + pdbRecordType->papFldDes[165]->size=sizeof(prec->oute); + pdbRecordType->papFldDes[165]->offset=(short)((char *)&prec->oute - (char *)prec); + pdbRecordType->papFldDes[166]->size=sizeof(prec->outf); + pdbRecordType->papFldDes[166]->offset=(short)((char *)&prec->outf - (char *)prec); + pdbRecordType->papFldDes[167]->size=sizeof(prec->outg); + pdbRecordType->papFldDes[167]->offset=(short)((char *)&prec->outg - (char *)prec); + pdbRecordType->papFldDes[168]->size=sizeof(prec->outh); + pdbRecordType->papFldDes[168]->offset=(short)((char *)&prec->outh - (char *)prec); + pdbRecordType->papFldDes[169]->size=sizeof(prec->outi); + pdbRecordType->papFldDes[169]->offset=(short)((char *)&prec->outi - (char *)prec); + pdbRecordType->papFldDes[170]->size=sizeof(prec->outj); + pdbRecordType->papFldDes[170]->offset=(short)((char *)&prec->outj - (char *)prec); + pdbRecordType->papFldDes[171]->size=sizeof(prec->outk); + pdbRecordType->papFldDes[171]->offset=(short)((char *)&prec->outk - (char *)prec); + pdbRecordType->papFldDes[172]->size=sizeof(prec->outl); + pdbRecordType->papFldDes[172]->offset=(short)((char *)&prec->outl - (char *)prec); + pdbRecordType->papFldDes[173]->size=sizeof(prec->outm); + pdbRecordType->papFldDes[173]->offset=(short)((char *)&prec->outm - (char *)prec); + pdbRecordType->papFldDes[174]->size=sizeof(prec->outn); + pdbRecordType->papFldDes[174]->offset=(short)((char *)&prec->outn - (char *)prec); + pdbRecordType->papFldDes[175]->size=sizeof(prec->outo); + pdbRecordType->papFldDes[175]->offset=(short)((char *)&prec->outo - (char *)prec); + pdbRecordType->papFldDes[176]->size=sizeof(prec->outp); + pdbRecordType->papFldDes[176]->offset=(short)((char *)&prec->outp - (char *)prec); + pdbRecordType->papFldDes[177]->size=sizeof(prec->outq); + pdbRecordType->papFldDes[177]->offset=(short)((char *)&prec->outq - (char *)prec); + pdbRecordType->papFldDes[178]->size=sizeof(prec->outr); + pdbRecordType->papFldDes[178]->offset=(short)((char *)&prec->outr - (char *)prec); + pdbRecordType->papFldDes[179]->size=sizeof(prec->outs); + pdbRecordType->papFldDes[179]->offset=(short)((char *)&prec->outs - (char *)prec); + pdbRecordType->papFldDes[180]->size=sizeof(prec->outt); + pdbRecordType->papFldDes[180]->offset=(short)((char *)&prec->outt - (char *)prec); + pdbRecordType->papFldDes[181]->size=sizeof(prec->outu); + pdbRecordType->papFldDes[181]->offset=(short)((char *)&prec->outu - (char *)prec); + pdbRecordType->papFldDes[182]->size=sizeof(prec->ufva); + pdbRecordType->papFldDes[182]->offset=(short)((char *)&prec->ufva - (char *)prec); + pdbRecordType->papFldDes[183]->size=sizeof(prec->ufvb); + pdbRecordType->papFldDes[183]->offset=(short)((char *)&prec->ufvb - (char *)prec); + pdbRecordType->papFldDes[184]->size=sizeof(prec->ufvc); + pdbRecordType->papFldDes[184]->offset=(short)((char *)&prec->ufvc - (char *)prec); + pdbRecordType->papFldDes[185]->size=sizeof(prec->ufvd); + pdbRecordType->papFldDes[185]->offset=(short)((char *)&prec->ufvd - (char *)prec); + pdbRecordType->papFldDes[186]->size=sizeof(prec->ufve); + pdbRecordType->papFldDes[186]->offset=(short)((char *)&prec->ufve - (char *)prec); + pdbRecordType->papFldDes[187]->size=sizeof(prec->ufvf); + pdbRecordType->papFldDes[187]->offset=(short)((char *)&prec->ufvf - (char *)prec); + pdbRecordType->papFldDes[188]->size=sizeof(prec->ufvg); + pdbRecordType->papFldDes[188]->offset=(short)((char *)&prec->ufvg - (char *)prec); + pdbRecordType->papFldDes[189]->size=sizeof(prec->ufvh); + pdbRecordType->papFldDes[189]->offset=(short)((char *)&prec->ufvh - (char *)prec); + pdbRecordType->papFldDes[190]->size=sizeof(prec->ufvi); + pdbRecordType->papFldDes[190]->offset=(short)((char *)&prec->ufvi - (char *)prec); + pdbRecordType->papFldDes[191]->size=sizeof(prec->ufvj); + pdbRecordType->papFldDes[191]->offset=(short)((char *)&prec->ufvj - (char *)prec); + pdbRecordType->papFldDes[192]->size=sizeof(prec->ufvk); + pdbRecordType->papFldDes[192]->offset=(short)((char *)&prec->ufvk - (char *)prec); + pdbRecordType->papFldDes[193]->size=sizeof(prec->ufvl); + pdbRecordType->papFldDes[193]->offset=(short)((char *)&prec->ufvl - (char *)prec); + pdbRecordType->papFldDes[194]->size=sizeof(prec->ufvm); + pdbRecordType->papFldDes[194]->offset=(short)((char *)&prec->ufvm - (char *)prec); + pdbRecordType->papFldDes[195]->size=sizeof(prec->ufvn); + pdbRecordType->papFldDes[195]->offset=(short)((char *)&prec->ufvn - (char *)prec); + pdbRecordType->papFldDes[196]->size=sizeof(prec->ufvo); + pdbRecordType->papFldDes[196]->offset=(short)((char *)&prec->ufvo - (char *)prec); + pdbRecordType->papFldDes[197]->size=sizeof(prec->ufvp); + pdbRecordType->papFldDes[197]->offset=(short)((char *)&prec->ufvp - (char *)prec); + pdbRecordType->papFldDes[198]->size=sizeof(prec->ufvq); + pdbRecordType->papFldDes[198]->offset=(short)((char *)&prec->ufvq - (char *)prec); + pdbRecordType->papFldDes[199]->size=sizeof(prec->ufvr); + pdbRecordType->papFldDes[199]->offset=(short)((char *)&prec->ufvr - (char *)prec); + pdbRecordType->papFldDes[200]->size=sizeof(prec->ufvs); + pdbRecordType->papFldDes[200]->offset=(short)((char *)&prec->ufvs - (char *)prec); + pdbRecordType->papFldDes[201]->size=sizeof(prec->ufvt); + pdbRecordType->papFldDes[201]->offset=(short)((char *)&prec->ufvt - (char *)prec); + pdbRecordType->papFldDes[202]->size=sizeof(prec->ufvu); + pdbRecordType->papFldDes[202]->offset=(short)((char *)&prec->ufvu - (char *)prec); + pdbRecordType->papFldDes[203]->size=sizeof(prec->vala); + pdbRecordType->papFldDes[203]->offset=(short)((char *)&prec->vala - (char *)prec); + pdbRecordType->papFldDes[204]->size=sizeof(prec->valb); + pdbRecordType->papFldDes[204]->offset=(short)((char *)&prec->valb - (char *)prec); + pdbRecordType->papFldDes[205]->size=sizeof(prec->valc); + pdbRecordType->papFldDes[205]->offset=(short)((char *)&prec->valc - (char *)prec); + pdbRecordType->papFldDes[206]->size=sizeof(prec->vald); + pdbRecordType->papFldDes[206]->offset=(short)((char *)&prec->vald - (char *)prec); + pdbRecordType->papFldDes[207]->size=sizeof(prec->vale); + pdbRecordType->papFldDes[207]->offset=(short)((char *)&prec->vale - (char *)prec); + pdbRecordType->papFldDes[208]->size=sizeof(prec->valf); + pdbRecordType->papFldDes[208]->offset=(short)((char *)&prec->valf - (char *)prec); + pdbRecordType->papFldDes[209]->size=sizeof(prec->valg); + pdbRecordType->papFldDes[209]->offset=(short)((char *)&prec->valg - (char *)prec); + pdbRecordType->papFldDes[210]->size=sizeof(prec->valh); + pdbRecordType->papFldDes[210]->offset=(short)((char *)&prec->valh - (char *)prec); + pdbRecordType->papFldDes[211]->size=sizeof(prec->vali); + pdbRecordType->papFldDes[211]->offset=(short)((char *)&prec->vali - (char *)prec); + pdbRecordType->papFldDes[212]->size=sizeof(prec->valj); + pdbRecordType->papFldDes[212]->offset=(short)((char *)&prec->valj - (char *)prec); + pdbRecordType->papFldDes[213]->size=sizeof(prec->valk); + pdbRecordType->papFldDes[213]->offset=(short)((char *)&prec->valk - (char *)prec); + pdbRecordType->papFldDes[214]->size=sizeof(prec->vall); + pdbRecordType->papFldDes[214]->offset=(short)((char *)&prec->vall - (char *)prec); + pdbRecordType->papFldDes[215]->size=sizeof(prec->valm); + pdbRecordType->papFldDes[215]->offset=(short)((char *)&prec->valm - (char *)prec); + pdbRecordType->papFldDes[216]->size=sizeof(prec->valn); + pdbRecordType->papFldDes[216]->offset=(short)((char *)&prec->valn - (char *)prec); + pdbRecordType->papFldDes[217]->size=sizeof(prec->valo); + pdbRecordType->papFldDes[217]->offset=(short)((char *)&prec->valo - (char *)prec); + pdbRecordType->papFldDes[218]->size=sizeof(prec->valp); + pdbRecordType->papFldDes[218]->offset=(short)((char *)&prec->valp - (char *)prec); + pdbRecordType->papFldDes[219]->size=sizeof(prec->valq); + pdbRecordType->papFldDes[219]->offset=(short)((char *)&prec->valq - (char *)prec); + pdbRecordType->papFldDes[220]->size=sizeof(prec->valr); + pdbRecordType->papFldDes[220]->offset=(short)((char *)&prec->valr - (char *)prec); + pdbRecordType->papFldDes[221]->size=sizeof(prec->vals); + pdbRecordType->papFldDes[221]->offset=(short)((char *)&prec->vals - (char *)prec); + pdbRecordType->papFldDes[222]->size=sizeof(prec->valt); + pdbRecordType->papFldDes[222]->offset=(short)((char *)&prec->valt - (char *)prec); + pdbRecordType->papFldDes[223]->size=sizeof(prec->valu); + pdbRecordType->papFldDes[223]->offset=(short)((char *)&prec->valu - (char *)prec); + pdbRecordType->papFldDes[224]->size=sizeof(prec->ovla); + pdbRecordType->papFldDes[224]->offset=(short)((char *)&prec->ovla - (char *)prec); + pdbRecordType->papFldDes[225]->size=sizeof(prec->ovlb); + pdbRecordType->papFldDes[225]->offset=(short)((char *)&prec->ovlb - (char *)prec); + pdbRecordType->papFldDes[226]->size=sizeof(prec->ovlc); + pdbRecordType->papFldDes[226]->offset=(short)((char *)&prec->ovlc - (char *)prec); + pdbRecordType->papFldDes[227]->size=sizeof(prec->ovld); + pdbRecordType->papFldDes[227]->offset=(short)((char *)&prec->ovld - (char *)prec); + pdbRecordType->papFldDes[228]->size=sizeof(prec->ovle); + pdbRecordType->papFldDes[228]->offset=(short)((char *)&prec->ovle - (char *)prec); + pdbRecordType->papFldDes[229]->size=sizeof(prec->ovlf); + pdbRecordType->papFldDes[229]->offset=(short)((char *)&prec->ovlf - (char *)prec); + pdbRecordType->papFldDes[230]->size=sizeof(prec->ovlg); + pdbRecordType->papFldDes[230]->offset=(short)((char *)&prec->ovlg - (char *)prec); + pdbRecordType->papFldDes[231]->size=sizeof(prec->ovlh); + pdbRecordType->papFldDes[231]->offset=(short)((char *)&prec->ovlh - (char *)prec); + pdbRecordType->papFldDes[232]->size=sizeof(prec->ovli); + pdbRecordType->papFldDes[232]->offset=(short)((char *)&prec->ovli - (char *)prec); + pdbRecordType->papFldDes[233]->size=sizeof(prec->ovlj); + pdbRecordType->papFldDes[233]->offset=(short)((char *)&prec->ovlj - (char *)prec); + pdbRecordType->papFldDes[234]->size=sizeof(prec->ovlk); + pdbRecordType->papFldDes[234]->offset=(short)((char *)&prec->ovlk - (char *)prec); + pdbRecordType->papFldDes[235]->size=sizeof(prec->ovll); + pdbRecordType->papFldDes[235]->offset=(short)((char *)&prec->ovll - (char *)prec); + pdbRecordType->papFldDes[236]->size=sizeof(prec->ovlm); + pdbRecordType->papFldDes[236]->offset=(short)((char *)&prec->ovlm - (char *)prec); + pdbRecordType->papFldDes[237]->size=sizeof(prec->ovln); + pdbRecordType->papFldDes[237]->offset=(short)((char *)&prec->ovln - (char *)prec); + pdbRecordType->papFldDes[238]->size=sizeof(prec->ovlo); + pdbRecordType->papFldDes[238]->offset=(short)((char *)&prec->ovlo - (char *)prec); + pdbRecordType->papFldDes[239]->size=sizeof(prec->ovlp); + pdbRecordType->papFldDes[239]->offset=(short)((char *)&prec->ovlp - (char *)prec); + pdbRecordType->papFldDes[240]->size=sizeof(prec->ovlq); + pdbRecordType->papFldDes[240]->offset=(short)((char *)&prec->ovlq - (char *)prec); + pdbRecordType->papFldDes[241]->size=sizeof(prec->ovlr); + pdbRecordType->papFldDes[241]->offset=(short)((char *)&prec->ovlr - (char *)prec); + pdbRecordType->papFldDes[242]->size=sizeof(prec->ovls); + pdbRecordType->papFldDes[242]->offset=(short)((char *)&prec->ovls - (char *)prec); + pdbRecordType->papFldDes[243]->size=sizeof(prec->ovlt); + pdbRecordType->papFldDes[243]->offset=(short)((char *)&prec->ovlt - (char *)prec); + pdbRecordType->papFldDes[244]->size=sizeof(prec->ovlu); + pdbRecordType->papFldDes[244]->offset=(short)((char *)&prec->ovlu - (char *)prec); + pdbRecordType->papFldDes[245]->size=sizeof(prec->ftva); + pdbRecordType->papFldDes[245]->offset=(short)((char *)&prec->ftva - (char *)prec); + pdbRecordType->papFldDes[246]->size=sizeof(prec->ftvb); + pdbRecordType->papFldDes[246]->offset=(short)((char *)&prec->ftvb - (char *)prec); + pdbRecordType->papFldDes[247]->size=sizeof(prec->ftvc); + pdbRecordType->papFldDes[247]->offset=(short)((char *)&prec->ftvc - (char *)prec); + pdbRecordType->papFldDes[248]->size=sizeof(prec->ftvd); + pdbRecordType->papFldDes[248]->offset=(short)((char *)&prec->ftvd - (char *)prec); + pdbRecordType->papFldDes[249]->size=sizeof(prec->ftve); + pdbRecordType->papFldDes[249]->offset=(short)((char *)&prec->ftve - (char *)prec); + pdbRecordType->papFldDes[250]->size=sizeof(prec->ftvf); + pdbRecordType->papFldDes[250]->offset=(short)((char *)&prec->ftvf - (char *)prec); + pdbRecordType->papFldDes[251]->size=sizeof(prec->ftvg); + pdbRecordType->papFldDes[251]->offset=(short)((char *)&prec->ftvg - (char *)prec); + pdbRecordType->papFldDes[252]->size=sizeof(prec->ftvh); + pdbRecordType->papFldDes[252]->offset=(short)((char *)&prec->ftvh - (char *)prec); + pdbRecordType->papFldDes[253]->size=sizeof(prec->ftvi); + pdbRecordType->papFldDes[253]->offset=(short)((char *)&prec->ftvi - (char *)prec); + pdbRecordType->papFldDes[254]->size=sizeof(prec->ftvj); + pdbRecordType->papFldDes[254]->offset=(short)((char *)&prec->ftvj - (char *)prec); + pdbRecordType->papFldDes[255]->size=sizeof(prec->ftvk); + pdbRecordType->papFldDes[255]->offset=(short)((char *)&prec->ftvk - (char *)prec); + pdbRecordType->papFldDes[256]->size=sizeof(prec->ftvl); + pdbRecordType->papFldDes[256]->offset=(short)((char *)&prec->ftvl - (char *)prec); + pdbRecordType->papFldDes[257]->size=sizeof(prec->ftvm); + pdbRecordType->papFldDes[257]->offset=(short)((char *)&prec->ftvm - (char *)prec); + pdbRecordType->papFldDes[258]->size=sizeof(prec->ftvn); + pdbRecordType->papFldDes[258]->offset=(short)((char *)&prec->ftvn - (char *)prec); + pdbRecordType->papFldDes[259]->size=sizeof(prec->ftvo); + pdbRecordType->papFldDes[259]->offset=(short)((char *)&prec->ftvo - (char *)prec); + pdbRecordType->papFldDes[260]->size=sizeof(prec->ftvp); + pdbRecordType->papFldDes[260]->offset=(short)((char *)&prec->ftvp - (char *)prec); + pdbRecordType->papFldDes[261]->size=sizeof(prec->ftvq); + pdbRecordType->papFldDes[261]->offset=(short)((char *)&prec->ftvq - (char *)prec); + pdbRecordType->papFldDes[262]->size=sizeof(prec->ftvr); + pdbRecordType->papFldDes[262]->offset=(short)((char *)&prec->ftvr - (char *)prec); + pdbRecordType->papFldDes[263]->size=sizeof(prec->ftvs); + pdbRecordType->papFldDes[263]->offset=(short)((char *)&prec->ftvs - (char *)prec); + pdbRecordType->papFldDes[264]->size=sizeof(prec->ftvt); + pdbRecordType->papFldDes[264]->offset=(short)((char *)&prec->ftvt - (char *)prec); + pdbRecordType->papFldDes[265]->size=sizeof(prec->ftvu); + pdbRecordType->papFldDes[265]->offset=(short)((char *)&prec->ftvu - (char *)prec); + pdbRecordType->papFldDes[266]->size=sizeof(prec->nova); + pdbRecordType->papFldDes[266]->offset=(short)((char *)&prec->nova - (char *)prec); + pdbRecordType->papFldDes[267]->size=sizeof(prec->novb); + pdbRecordType->papFldDes[267]->offset=(short)((char *)&prec->novb - (char *)prec); + pdbRecordType->papFldDes[268]->size=sizeof(prec->novc); + pdbRecordType->papFldDes[268]->offset=(short)((char *)&prec->novc - (char *)prec); + pdbRecordType->papFldDes[269]->size=sizeof(prec->novd); + pdbRecordType->papFldDes[269]->offset=(short)((char *)&prec->novd - (char *)prec); + pdbRecordType->papFldDes[270]->size=sizeof(prec->nove); + pdbRecordType->papFldDes[270]->offset=(short)((char *)&prec->nove - (char *)prec); + pdbRecordType->papFldDes[271]->size=sizeof(prec->novf); + pdbRecordType->papFldDes[271]->offset=(short)((char *)&prec->novf - (char *)prec); + pdbRecordType->papFldDes[272]->size=sizeof(prec->novg); + pdbRecordType->papFldDes[272]->offset=(short)((char *)&prec->novg - (char *)prec); + pdbRecordType->papFldDes[273]->size=sizeof(prec->novh); + pdbRecordType->papFldDes[273]->offset=(short)((char *)&prec->novh - (char *)prec); + pdbRecordType->papFldDes[274]->size=sizeof(prec->novi); + pdbRecordType->papFldDes[274]->offset=(short)((char *)&prec->novi - (char *)prec); + pdbRecordType->papFldDes[275]->size=sizeof(prec->novj); + pdbRecordType->papFldDes[275]->offset=(short)((char *)&prec->novj - (char *)prec); + pdbRecordType->papFldDes[276]->size=sizeof(prec->novk); + pdbRecordType->papFldDes[276]->offset=(short)((char *)&prec->novk - (char *)prec); + pdbRecordType->papFldDes[277]->size=sizeof(prec->novl); + pdbRecordType->papFldDes[277]->offset=(short)((char *)&prec->novl - (char *)prec); + pdbRecordType->papFldDes[278]->size=sizeof(prec->novm); + pdbRecordType->papFldDes[278]->offset=(short)((char *)&prec->novm - (char *)prec); + pdbRecordType->papFldDes[279]->size=sizeof(prec->novn); + pdbRecordType->papFldDes[279]->offset=(short)((char *)&prec->novn - (char *)prec); + pdbRecordType->papFldDes[280]->size=sizeof(prec->novo); + pdbRecordType->papFldDes[280]->offset=(short)((char *)&prec->novo - (char *)prec); + pdbRecordType->papFldDes[281]->size=sizeof(prec->novp); + pdbRecordType->papFldDes[281]->offset=(short)((char *)&prec->novp - (char *)prec); + pdbRecordType->papFldDes[282]->size=sizeof(prec->novq); + pdbRecordType->papFldDes[282]->offset=(short)((char *)&prec->novq - (char *)prec); + pdbRecordType->papFldDes[283]->size=sizeof(prec->novr); + pdbRecordType->papFldDes[283]->offset=(short)((char *)&prec->novr - (char *)prec); + pdbRecordType->papFldDes[284]->size=sizeof(prec->novs); + pdbRecordType->papFldDes[284]->offset=(short)((char *)&prec->novs - (char *)prec); + pdbRecordType->papFldDes[285]->size=sizeof(prec->novt); + pdbRecordType->papFldDes[285]->offset=(short)((char *)&prec->novt - (char *)prec); + pdbRecordType->papFldDes[286]->size=sizeof(prec->novu); + pdbRecordType->papFldDes[286]->offset=(short)((char *)&prec->novu - (char *)prec); + pdbRecordType->papFldDes[287]->size=sizeof(prec->tova); + pdbRecordType->papFldDes[287]->offset=(short)((char *)&prec->tova - (char *)prec); + pdbRecordType->papFldDes[288]->size=sizeof(prec->tovb); + pdbRecordType->papFldDes[288]->offset=(short)((char *)&prec->tovb - (char *)prec); + pdbRecordType->papFldDes[289]->size=sizeof(prec->tovc); + pdbRecordType->papFldDes[289]->offset=(short)((char *)&prec->tovc - (char *)prec); + pdbRecordType->papFldDes[290]->size=sizeof(prec->tovd); + pdbRecordType->papFldDes[290]->offset=(short)((char *)&prec->tovd - (char *)prec); + pdbRecordType->papFldDes[291]->size=sizeof(prec->tove); + pdbRecordType->papFldDes[291]->offset=(short)((char *)&prec->tove - (char *)prec); + pdbRecordType->papFldDes[292]->size=sizeof(prec->tovf); + pdbRecordType->papFldDes[292]->offset=(short)((char *)&prec->tovf - (char *)prec); + pdbRecordType->papFldDes[293]->size=sizeof(prec->tovg); + pdbRecordType->papFldDes[293]->offset=(short)((char *)&prec->tovg - (char *)prec); + pdbRecordType->papFldDes[294]->size=sizeof(prec->tovh); + pdbRecordType->papFldDes[294]->offset=(short)((char *)&prec->tovh - (char *)prec); + pdbRecordType->papFldDes[295]->size=sizeof(prec->tovi); + pdbRecordType->papFldDes[295]->offset=(short)((char *)&prec->tovi - (char *)prec); + pdbRecordType->papFldDes[296]->size=sizeof(prec->tovj); + pdbRecordType->papFldDes[296]->offset=(short)((char *)&prec->tovj - (char *)prec); + pdbRecordType->papFldDes[297]->size=sizeof(prec->tovk); + pdbRecordType->papFldDes[297]->offset=(short)((char *)&prec->tovk - (char *)prec); + pdbRecordType->papFldDes[298]->size=sizeof(prec->tovl); + pdbRecordType->papFldDes[298]->offset=(short)((char *)&prec->tovl - (char *)prec); + pdbRecordType->papFldDes[299]->size=sizeof(prec->tovm); + pdbRecordType->papFldDes[299]->offset=(short)((char *)&prec->tovm - (char *)prec); + pdbRecordType->papFldDes[300]->size=sizeof(prec->tovn); + pdbRecordType->papFldDes[300]->offset=(short)((char *)&prec->tovn - (char *)prec); + pdbRecordType->papFldDes[301]->size=sizeof(prec->tovo); + pdbRecordType->papFldDes[301]->offset=(short)((char *)&prec->tovo - (char *)prec); + pdbRecordType->papFldDes[302]->size=sizeof(prec->tovp); + pdbRecordType->papFldDes[302]->offset=(short)((char *)&prec->tovp - (char *)prec); + pdbRecordType->papFldDes[303]->size=sizeof(prec->tovq); + pdbRecordType->papFldDes[303]->offset=(short)((char *)&prec->tovq - (char *)prec); + pdbRecordType->papFldDes[304]->size=sizeof(prec->tovr); + pdbRecordType->papFldDes[304]->offset=(short)((char *)&prec->tovr - (char *)prec); + pdbRecordType->papFldDes[305]->size=sizeof(prec->tovs); + pdbRecordType->papFldDes[305]->offset=(short)((char *)&prec->tovs - (char *)prec); + pdbRecordType->papFldDes[306]->size=sizeof(prec->tovt); + pdbRecordType->papFldDes[306]->offset=(short)((char *)&prec->tovt - (char *)prec); + pdbRecordType->papFldDes[307]->size=sizeof(prec->tovu); + pdbRecordType->papFldDes[307]->offset=(short)((char *)&prec->tovu - (char *)prec); + pdbRecordType->rec_size = sizeof(*prec); + return(0); +} +epicsExportRegistrar(genSubRecordSizeOffset); +#ifdef __cplusplus +} +#endif +#endif /*GEN_SIZE_OFFSET*/ diff --git a/ebctrl/ioc/include/hadtu.h b/ebctrl/ioc/include/hadtu.h new file mode 100644 index 0000000..f7c0878 --- /dev/null +++ b/ebctrl/ioc/include/hadtu.h @@ -0,0 +1,156 @@ + +#ifndef HADTU_H +#define HADTU_H + +#include +#include + + +enum HadTu_Decoding { + HadTu_queueDecoding = 3 << 16 | 99 +}; + +static uint32_t *HadTu_hdr(const void *my); +static size_t HadTu_hdrLen(void); +static size_t HadTu_hdrSize(void); +static int HadTu_isSwapped(const void *my); +static uint32_t HadTu_hdrValue(const void *my, unsigned idx); +static void HadTu_setHdrValue(const void *my, unsigned idx, uint32_t value); +static uint32_t HadTu_decoding(const void *my); +static void HadTu_setDecoding(void *my, uint32_t decoding); +static unsigned HadTu_alignment(const void *my); +static uint32_t HadTu_size(const void *my); +static void HadTu_setSize(void *my, uint32_t size); +static size_t HadTu_paddedSize(const void *my); +static void *HadTu_begin(const void *my); +static void *HadTu_end(const void *my); +static size_t HadTu_dataSize(const void *my); +static void *HadTu_data(const void *my); +static void *HadTu_next(const void *my, const void *hadTu); +char *HadTu_2charP(const void *my); + +enum HadTuIdx { + HadTuIdx_size, + HadTuIdx_decoding, + HadTuIdx_data +}; + +static uint32_t *HadTu_hdr(const void *my) +{ + return (uint32_t *) my; +} + +static size_t HadTu_hdrLen(void) +{ + return HadTuIdx_data; +} + +static size_t HadTu_hdrSize(void) +{ + return HadTu_hdrLen() * sizeof(uint32_t); +} + +static int HadTu_isSwapped(const void *my) +{ + uint32_t *hdr = HadTu_hdr(my); + + return hdr[HadTuIdx_decoding] > 0xffffff; +} + +static uint32_t HadTu_hdrValue(const void *my, unsigned idx) +{ + uint32_t *hdr = HadTu_hdr(my); + + if (HadTu_isSwapped(my)) { + uint32_t tmp0; + uint32_t tmp1; + + tmp0 = hdr[idx]; + ((char *) &tmp1)[0] = ((char *) &tmp0)[3]; + ((char *) &tmp1)[1] = ((char *) &tmp0)[2]; + ((char *) &tmp1)[2] = ((char *) &tmp0)[1]; + ((char *) &tmp1)[3] = ((char *) &tmp0)[0]; + return tmp1; + } else { + return hdr[idx]; + } +} + +static void HadTu_setHdrValue(const void *my, unsigned idx, uint32_t value) +{ + uint32_t *hdr = HadTu_hdr(my); + + hdr[idx] = value; +} + +static uint32_t HadTu_decoding(const void *my) +{ + return HadTu_hdrValue(my, HadTuIdx_decoding); +} + +static void HadTu_setDecoding(void *my, uint32_t decoding) +{ + HadTu_setHdrValue(my, HadTuIdx_decoding, decoding); +} + +static unsigned HadTu_alignment(const void *my) +{ + return 1 << (HadTu_decoding(my) >> 16 & 0xff); +} + +static uint32_t HadTu_size(const void *my) +{ + return HadTu_hdrValue(my, HadTuIdx_size); +} + +static void HadTu_setSize(void *my, uint32_t size) +{ + HadTu_setHdrValue(my, HadTuIdx_size, size); +} + +static size_t HadTu_paddedSize(const void *my) +{ + uint32_t size; + uint32_t alignment; + + size = HadTu_size(my); + alignment = HadTu_alignment(my); + return (size & (alignment - 1)) + ? (size & ~(alignment - 1)) + alignment : size; +} + +static void *HadTu_begin(const void *my) +{ + return (void *) my; +} + +static void *HadTu_end(const void *my) +{ + return (void *) ((char *) my + HadTu_paddedSize(my)); +} + +static size_t HadTu_dataSize(const void *my) +{ + return HadTu_size(my) - HadTu_hdrSize(); +} + +static void *HadTu_data(const void *my) +{ + return (void *) ((char *) my + HadTu_hdrSize()); +} + +static void *HadTu_next(const void *my, const void *hadTu) +{ + uint32_t size; + uint32_t alignment; + size_t paddedSize; + + size = HadTu_size(hadTu); + alignment = HadTu_alignment(my); + paddedSize = (size & (alignment - 1)) + ? (size & ~(alignment - 1)) + alignment : size; + + return (void *) ((char *) hadTu + paddedSize); +} + +#endif diff --git a/ebctrl/ioc/include/hadtuqueue.h b/ebctrl/ioc/include/hadtuqueue.h new file mode 100644 index 0000000..5f44bfc --- /dev/null +++ b/ebctrl/ioc/include/hadtuqueue.h @@ -0,0 +1,31 @@ + +#ifndef HADTUQUEUE_H +#define HADTUQUEUE_H + +#include +#include "hadtu.h" + +typedef struct HadTuQueueS HadTuQueue; + +typedef enum HadTuQueueProtE { + HadTuQueueProt_read, + HadTuQueueProt_write +} HadTuQueueProt; + +void conHadTuQueue(HadTuQueue *my, void *mem, size_t size); +void conHadTuQueue_voidP(HadTuQueue *my, void *mem); +void desHadTuQueue(HadTuQueue *my); +size_t HadTuQueue_sizeOf(void); +void HadTuQueue_cntl(HadTuQueue *my, int flag); +void HadTuQueue_clear(HadTuQueue *my); +int HadTuQueue_invariant(const HadTuQueue *my); + +int HadTuQueue_empty(const HadTuQueue *my); +size_t HadTuQueue_size(const HadTuQueue *my); +void *HadTuQueue_alloc(const HadTuQueue *my, size_t size); +void HadTuQueue_push(HadTuQueue *my); +void *HadTuQueue_2voidP(const HadTuQueue *my); +void *HadTuQueue_front(const HadTuQueue *my); +void HadTuQueue_pop(HadTuQueue *my); + +#endif diff --git a/ebctrl/ioc/include/hardware.h b/ebctrl/ioc/include/hardware.h new file mode 100644 index 0000000..420a0dd --- /dev/null +++ b/ebctrl/ioc/include/hardware.h @@ -0,0 +1,71 @@ + +#ifndef HARDWARE_H +#define HARDWARE_H + +#include + +typedef struct HardwareS Hardware; + +int readoutMain(int argc, char *argv[]); + +Hardware *newHardware(); /* allowed as newHardware(void) and newHardware(const char *subsystem) UFN */ +void deleteHardware(Hardware *my); +int Hardware_inSpill(const Hardware *my); +size_t Hardware_maxSubEvtSize(const Hardware *my); +void Hardware_waitForTrigger(Hardware *my, void *subEvt); +void Hardware_readout(Hardware *my, void *subEvt); + +static int getCards(Param *param, const char *subsystem, const char *cardtype, int *nCards, char **cards) +{ + int getCardsR; + int i; + char unitsS[PARAM_MAX_ARRAY_LEN][PARAM_MAX_VALUE_LEN]; + char *units[PARAM_MAX_ARRAY_LEN]; + int r; + + for (i = 0; i < PARAM_MAX_ARRAY_LEN; i++) { + units[i] = unitsS[i]; + } + + if (0 > Param_getStringArray(param, subsystem, "unit", PARAM_MAX_ARRAY_LEN, &r, units) || r == 0) { + getCardsR = -1; + syslog(LOG_ERR, "Parameter %s(unit) not found, unknown list of VME modules", subsystem); + } else { + int unit; + int card; + + + getCardsR = 0; + card = 0; + /*= printf("units: %d\n", r); */ + for (unit = 0; unit < r; unit++) { + char ct[PARAM_MAX_VALUE_LEN]; + int r2; + + /*printf("before getString: %s, unit %d\n", units[unit], unit);*/ + if (Param_getString(param, units[unit], "cardtype", &r2, ct) || r2 == 0) { + syslog(LOG_ERR, "Parameter %s(cardtype) not found", units[unit]); + getCardsR = -1; + } else { + /*printf("before strcpy: %s: %s, unit %d\n", units[unit], ct, unit);*/ + if (strcmp(cardtype, ct) == 0) { + strcpy(cards[card++], units[unit]); + /*printf("strcpy: %s, unit %d\n", units[unit], unit);*/ + } + } + } + *nCards = card; + } + + if (0 == getCardsR) { + int card; + + syslog(LOG_INFO, "List of matching cards for subsystem %s, cardtype %s", subsystem, cardtype); + for (card = 0; card < *nCards; card++) { + syslog(LOG_INFO, "%s", cards[card]); + } + } + return getCardsR; +} + +#endif diff --git a/ebctrl/ioc/include/psxshm.h b/ebctrl/ioc/include/psxshm.h new file mode 100644 index 0000000..d350cf0 --- /dev/null +++ b/ebctrl/ioc/include/psxshm.h @@ -0,0 +1,19 @@ + +#ifndef PSXSHM_H +#define PSXSHM_H + +#include + +typedef struct PsxShmS { + int fd; + void *addr; + off_t size; +} + +PsxShm; + +PsxShm *PsxShm_open(const char *name, int oflag, mode_t mode, off_t size); +int PsxShm_close(PsxShm *my); +int PsxShm_unlink(const char *name); + +#endif diff --git a/ebctrl/ioc/include/shmtrans.h b/ebctrl/ioc/include/shmtrans.h new file mode 100644 index 0000000..f8548f2 --- /dev/null +++ b/ebctrl/ioc/include/shmtrans.h @@ -0,0 +1,47 @@ + +#ifndef SHMTRANS_H +#define SHMTRANS_H + +#ifndef _POSIX_SEMAPHORES +#error POSIX_SEMAPHORES not available on this OS +#endif + +#include +#include +#include + + +#include "psxshm.h" + +#include "hadtuqueue.h" + + + +typedef struct ShmTransS { + char name[_POSIX_PATH_MAX]; + PsxShm *shm; + HadTuQueue *rdQueue; + HadTuQueue *wrQueue; + sem_t *switchRequest; + sem_t *switchComplete; +} + +ShmTrans; + +ShmTrans *ShmTrans_create(const char *name, size_t size); +ShmTrans *ShmTrans_open(const char *name, size_t size); +void ShmTrans_close(ShmTrans *my); +void ShmTrans_remove(ShmTrans *my); + +void *ShmTrans_alloc(ShmTrans *my, size_t size); +void *ShmTrans_tryAlloc(ShmTrans *my, size_t size); +void ShmTrans_requestSpace(ShmTrans *my); +void ShmTrans_send(ShmTrans *my); +void *ShmTrans_recv(ShmTrans *my); +void *ShmTrans_recvWhole(ShmTrans *my); +void *ShmTrans_tryRecv(ShmTrans *my); +void ShmTrans_requestData(ShmTrans *my); +void ShmTrans_free(ShmTrans *my); +void ShmTrans_freeWhole(ShmTrans *my); + +#endif diff --git a/ebctrl/ioc/include/subevt.h b/ebctrl/ioc/include/subevt.h new file mode 100644 index 0000000..d66ac29 --- /dev/null +++ b/ebctrl/ioc/include/subevt.h @@ -0,0 +1,127 @@ + +#ifndef SUBEVT_H +#define SUBEVT_H + +#include + + +#include "hadtu.h" + +enum SubEvtId { + SubEvtId_invalid = 0, + SubEvtId_test1 = 1, + SubEvtId_slow = 2, + SubEvtId_test2 = 3, + SubEvtId_mdc = 6, + SubEvtId_shower = 7, + SubEvtId_rich = 8, + SubEvtId_tof = 9, + SubEvtId_start = 10, + SubEvtId_veto = 11, + SubEvtId_richPed = 12, + SubEvtId_tofTest = 400, + SubEvtId_trigCode = 500, + SubEvtId_trigInfo = 501, + SubEvtId_slowTest = 600 +}; + +enum SubEvtDecoding { + SubEvtDecoding_8bitData = 1, + SubEvtDecoding_16bitData = (1 << 16) | 1, + SubEvtDecoding_32bitData = (2 << 16) | 1, + SubEvtDecoding_text = 2, + SubEvtDecoding_SubEvts = (3 << 16) | 3 +}; + +#define SubEvt_hdr HadTu_hdr +#define SubEvt_isSwapped HadTu_isSwapped +#define SubEvt_hdrValue HadTu_hdrValue +#define SubEvt_setHdrValue HadTu_setHdrValue +#define SubEvt_decoding HadTu_decoding +#define SubEvt_setDecoding HadTu_setDecoding +#define SubEvt_alignment HadTu_alignment +#define SubEvt_size HadTu_size +#define SubEvt_setSize HadTu_setSize +#define SubEvt_paddedSize HadTu_paddedSize +#define SubEvt_begin HadTu_begin +#define SubEvt_end HadTu_end +#define SubEvt_next HadTu_next + + +enum SubEvtIdx { + SubEvtIdx_size, + SubEvtIdx_decoding, + SubEvtIdx_id, + SubEvtIdx_trigNr, + SubEvtIdx_data +}; + +static size_t SubEvt_hdrLen(void) +{ + return SubEvtIdx_data; +} + +static size_t SubEvt_hdrSize(void) +{ + return SubEvt_hdrLen() * sizeof(uint32_t); +} + +static size_t SubEvt_dataSize(const void *my) +{ + return SubEvt_size(my) - SubEvt_hdrSize(); +} + +static void *SubEvt_data(const void *my) +{ + return (void *) ((char *) my + SubEvt_hdrSize()); +} + +uint32_t SubEvt_dataValue(const void *my, unsigned idx); +char *SubEvt_2charP(const void *my); + + +static uint32_t SubEvt_id(const void *my) +{ + return SubEvt_hdrValue(my, SubEvtIdx_id); +} + +static uint32_t SubEvt_pureId(const void *my) +{ + return SubEvt_id(my) & 0x7fffffffUL; +} + +static int SubEvt_dataError(const void *my) +{ + return (SubEvt_id(my) & 0x80000000UL) != 0; +} + +static void SubEvt_setId(void *my, uint32_t id) +{ + SubEvt_setHdrValue(my, SubEvtIdx_id, id); +} + +static int SubEvt_setDataError(void *my) +{ + SubEvt_setId(my, SubEvt_id(my) | 0x80000000UL); +} + +static int SubEvt_clrDataError(void *my) +{ + SubEvt_setId(my, SubEvt_id(my) & ~0x80000000UL); +} + +static uint32_t SubEvt_trigNr(const void *my) +{ + return SubEvt_hdrValue(my, SubEvtIdx_trigNr); +} + +static void SubEvt_setTrigNr(void *my, uint32_t trigNr) +{ + SubEvt_setHdrValue(my, SubEvtIdx_trigNr, trigNr); +} + +void *newSubEvt(uint32_t decoding, uint32_t id, uint32_t trigNr); +void deleteSubEvt(void *my); +void *SubEvt_appendData(void *my, const void *data, size_t size); + +#endif diff --git a/ebctrl/ioc/include/worker.h b/ebctrl/ioc/include/worker.h new file mode 100644 index 0000000..161d9a7 --- /dev/null +++ b/ebctrl/ioc/include/worker.h @@ -0,0 +1,50 @@ + +#ifndef WORKER_H +#define WORKER_H + +#include +#include + +#include "psxshm.h" + +#define WORKER_MAX_NUM_STATS 550 +#define WORKER_MAX_NAME_LEN 32 + +typedef struct StatisticS { + char name[WORKER_MAX_NAME_LEN]; + unsigned long value; +} + +Statistic; + +typedef struct WorkerS { + char name[_POSIX_PATH_MAX]; + int signal0; + int signal1; + int signal2; + struct sigaction oldSigAction0S; + struct sigaction *oldSigAction0; + struct sigaction oldSigAction1S; + struct sigaction *oldSigAction1; + struct sigaction oldSigAction2S; + struct sigaction *oldSigAction2; + PsxShm *shm; + Statistic *statistics; + pid_t pid; + int isStandalone; +} + +Worker; + +int Worker_start(const char *path, char *const argv[]); +char *Worker_status(const char *name); +void Worker_stop(const char *name, int timeout); +Worker *Worker_initBegin(const char *name, void (*sigHandler) (int), int priority, int isStandalone); +void Worker_initEnd(Worker *my); +void Worker_fini(Worker *my); +unsigned long *Worker_addStatistic(Worker *my, const char *name); +void Worker_dump(Worker *my, time_t interval); +int Worker_getStatistic(const char *name, const char *stat, unsigned long int *value); +int Worker_setStatistic(const char *name, const char *stat, unsigned long int *value); + +#endif diff --git a/ebctrl/ioc/include/xxxRecord.h b/ebctrl/ioc/include/xxxRecord.h new file mode 100644 index 0000000..93fabce --- /dev/null +++ b/ebctrl/ioc/include/xxxRecord.h @@ -0,0 +1,278 @@ +#include "ellLib.h" +#include "epicsMutex.h" +#include "link.h" +#include "epicsTime.h" +#include "epicsTypes.h" +#ifndef INCxxxH +#define INCxxxH +typedef struct xxxRecord { + char name[61]; /*Record Name*/ + char desc[29]; /*Descriptor*/ + char asg[29]; /*Access Security Group*/ + epicsEnum16 scan; /*Scan Mechanism*/ + epicsEnum16 pini; /*Process at iocInit*/ + short phas; /*Scan Phase*/ + short evnt; /*Event Number*/ + short tse; /*Time Stamp Event*/ + DBLINK tsel; /*Time Stamp Link*/ + epicsEnum16 dtyp; /*Device Type*/ + short disv; /*Disable Value*/ + short disa; /*Disable*/ + DBLINK sdis; /*Scanning Disable*/ + epicsMutexId mlok; /*Monitor lock*/ + ELLLIST mlis; /*Monitor List*/ + unsigned char disp; /*Disable putField*/ + unsigned char proc; /*Force Processing*/ + epicsEnum16 stat; /*Alarm Status*/ + epicsEnum16 sevr; /*Alarm Severity*/ + epicsEnum16 nsta; /*New Alarm Status*/ + epicsEnum16 nsev; /*New Alarm Severity*/ + epicsEnum16 acks; /*Alarm Ack Severity*/ + epicsEnum16 ackt; /*Alarm Ack Transient*/ + epicsEnum16 diss; /*Disable Alarm Sevrty*/ + unsigned char lcnt; /*Lock Count*/ + unsigned char pact; /*Record active*/ + unsigned char putf; /*dbPutField process*/ + unsigned char rpro; /*Reprocess */ + void *asp; /*Access Security Pvt*/ + struct putNotify *ppn; /*addr of PUTNOTIFY*/ + struct putNotifyRecord *ppnr; /*pputNotifyRecord*/ + struct scan_element *spvt; /*Scan Private*/ + struct rset *rset; /*Address of RSET*/ + struct dset *dset; /*DSET address*/ + void *dpvt; /*Device Private*/ + struct dbRecordType *rdes; /*Address of dbRecordType*/ + struct lockRecord *lset; /*Lock Set*/ + epicsEnum16 prio; /*Scheduling Priority*/ + unsigned char tpro; /*Trace Processing*/ + char bkpt; /*Break Point*/ + unsigned char udf; /*Undefined*/ + epicsTimeStamp time; /*Time*/ + DBLINK flnk; /*Forward Process Link*/ + double val; /*Current EGU Value*/ + DBLINK inp; /*Input Specification*/ + short prec; /*Display Precision*/ + char egu[16]; /*Engineering Units*/ + float hopr; /*High Operating Range*/ + float lopr; /*Low Operating Range*/ + float hihi; /*Hihi Alarm Limit*/ + float lolo; /*Lolo Alarm Limit*/ + float high; /*High Alarm Limit*/ + float low; /*Low Alarm Limit*/ + epicsEnum16 hhsv; /*Hihi Severity*/ + epicsEnum16 llsv; /*Lolo Severity*/ + epicsEnum16 hsv; /*High Severity*/ + epicsEnum16 lsv; /*Low Severity*/ + double hyst; /*Alarm Deadband*/ + double adel; /*Archive Deadband*/ + double mdel; /*Monitor Deadband*/ + double lalm; /*Last Value Alarmed*/ + double alst; /*Last Value Archived*/ + double mlst; /*Last Val Monitored*/ +} xxxRecord; +#define xxxRecordNAME 0 +#define xxxRecordDESC 1 +#define xxxRecordASG 2 +#define xxxRecordSCAN 3 +#define xxxRecordPINI 4 +#define xxxRecordPHAS 5 +#define xxxRecordEVNT 6 +#define xxxRecordTSE 7 +#define xxxRecordTSEL 8 +#define xxxRecordDTYP 9 +#define xxxRecordDISV 10 +#define xxxRecordDISA 11 +#define xxxRecordSDIS 12 +#define xxxRecordMLOK 13 +#define xxxRecordMLIS 14 +#define xxxRecordDISP 15 +#define xxxRecordPROC 16 +#define xxxRecordSTAT 17 +#define xxxRecordSEVR 18 +#define xxxRecordNSTA 19 +#define xxxRecordNSEV 20 +#define xxxRecordACKS 21 +#define xxxRecordACKT 22 +#define xxxRecordDISS 23 +#define xxxRecordLCNT 24 +#define xxxRecordPACT 25 +#define xxxRecordPUTF 26 +#define xxxRecordRPRO 27 +#define xxxRecordASP 28 +#define xxxRecordPPN 29 +#define xxxRecordPPNR 30 +#define xxxRecordSPVT 31 +#define xxxRecordRSET 32 +#define xxxRecordDSET 33 +#define xxxRecordDPVT 34 +#define xxxRecordRDES 35 +#define xxxRecordLSET 36 +#define xxxRecordPRIO 37 +#define xxxRecordTPRO 38 +#define xxxRecordBKPT 39 +#define xxxRecordUDF 40 +#define xxxRecordTIME 41 +#define xxxRecordFLNK 42 +#define xxxRecordVAL 43 +#define xxxRecordINP 44 +#define xxxRecordPREC 45 +#define xxxRecordEGU 46 +#define xxxRecordHOPR 47 +#define xxxRecordLOPR 48 +#define xxxRecordHIHI 49 +#define xxxRecordLOLO 50 +#define xxxRecordHIGH 51 +#define xxxRecordLOW 52 +#define xxxRecordHHSV 53 +#define xxxRecordLLSV 54 +#define xxxRecordHSV 55 +#define xxxRecordLSV 56 +#define xxxRecordHYST 57 +#define xxxRecordADEL 58 +#define xxxRecordMDEL 59 +#define xxxRecordLALM 60 +#define xxxRecordALST 61 +#define xxxRecordMLST 62 +#endif /*INCxxxH*/ +#ifdef GEN_SIZE_OFFSET +#ifdef __cplusplus +extern "C" { +#endif +#include +static int xxxRecordSizeOffset(dbRecordType *pdbRecordType) +{ + xxxRecord *prec = 0; + pdbRecordType->papFldDes[0]->size=sizeof(prec->name); + pdbRecordType->papFldDes[0]->offset=(short)((char *)&prec->name - (char *)prec); + pdbRecordType->papFldDes[1]->size=sizeof(prec->desc); + pdbRecordType->papFldDes[1]->offset=(short)((char *)&prec->desc - (char *)prec); + pdbRecordType->papFldDes[2]->size=sizeof(prec->asg); + pdbRecordType->papFldDes[2]->offset=(short)((char *)&prec->asg - (char *)prec); + pdbRecordType->papFldDes[3]->size=sizeof(prec->scan); + pdbRecordType->papFldDes[3]->offset=(short)((char *)&prec->scan - (char *)prec); + pdbRecordType->papFldDes[4]->size=sizeof(prec->pini); + pdbRecordType->papFldDes[4]->offset=(short)((char *)&prec->pini - (char *)prec); + pdbRecordType->papFldDes[5]->size=sizeof(prec->phas); + pdbRecordType->papFldDes[5]->offset=(short)((char *)&prec->phas - (char *)prec); + pdbRecordType->papFldDes[6]->size=sizeof(prec->evnt); + pdbRecordType->papFldDes[6]->offset=(short)((char *)&prec->evnt - (char *)prec); + pdbRecordType->papFldDes[7]->size=sizeof(prec->tse); + pdbRecordType->papFldDes[7]->offset=(short)((char *)&prec->tse - (char *)prec); + pdbRecordType->papFldDes[8]->size=sizeof(prec->tsel); + pdbRecordType->papFldDes[8]->offset=(short)((char *)&prec->tsel - (char *)prec); + pdbRecordType->papFldDes[9]->size=sizeof(prec->dtyp); + pdbRecordType->papFldDes[9]->offset=(short)((char *)&prec->dtyp - (char *)prec); + pdbRecordType->papFldDes[10]->size=sizeof(prec->disv); + pdbRecordType->papFldDes[10]->offset=(short)((char *)&prec->disv - (char *)prec); + pdbRecordType->papFldDes[11]->size=sizeof(prec->disa); + pdbRecordType->papFldDes[11]->offset=(short)((char *)&prec->disa - (char *)prec); + pdbRecordType->papFldDes[12]->size=sizeof(prec->sdis); + pdbRecordType->papFldDes[12]->offset=(short)((char *)&prec->sdis - (char *)prec); + pdbRecordType->papFldDes[13]->size=sizeof(prec->mlok); + pdbRecordType->papFldDes[13]->offset=(short)((char *)&prec->mlok - (char *)prec); + pdbRecordType->papFldDes[14]->size=sizeof(prec->mlis); + pdbRecordType->papFldDes[14]->offset=(short)((char *)&prec->mlis - (char *)prec); + pdbRecordType->papFldDes[15]->size=sizeof(prec->disp); + pdbRecordType->papFldDes[15]->offset=(short)((char *)&prec->disp - (char *)prec); + pdbRecordType->papFldDes[16]->size=sizeof(prec->proc); + pdbRecordType->papFldDes[16]->offset=(short)((char *)&prec->proc - (char *)prec); + pdbRecordType->papFldDes[17]->size=sizeof(prec->stat); + pdbRecordType->papFldDes[17]->offset=(short)((char *)&prec->stat - (char *)prec); + pdbRecordType->papFldDes[18]->size=sizeof(prec->sevr); + pdbRecordType->papFldDes[18]->offset=(short)((char *)&prec->sevr - (char *)prec); + pdbRecordType->papFldDes[19]->size=sizeof(prec->nsta); + pdbRecordType->papFldDes[19]->offset=(short)((char *)&prec->nsta - (char *)prec); + pdbRecordType->papFldDes[20]->size=sizeof(prec->nsev); + pdbRecordType->papFldDes[20]->offset=(short)((char *)&prec->nsev - (char *)prec); + pdbRecordType->papFldDes[21]->size=sizeof(prec->acks); + pdbRecordType->papFldDes[21]->offset=(short)((char *)&prec->acks - (char *)prec); + pdbRecordType->papFldDes[22]->size=sizeof(prec->ackt); + pdbRecordType->papFldDes[22]->offset=(short)((char *)&prec->ackt - (char *)prec); + pdbRecordType->papFldDes[23]->size=sizeof(prec->diss); + pdbRecordType->papFldDes[23]->offset=(short)((char *)&prec->diss - (char *)prec); + pdbRecordType->papFldDes[24]->size=sizeof(prec->lcnt); + pdbRecordType->papFldDes[24]->offset=(short)((char *)&prec->lcnt - (char *)prec); + pdbRecordType->papFldDes[25]->size=sizeof(prec->pact); + pdbRecordType->papFldDes[25]->offset=(short)((char *)&prec->pact - (char *)prec); + pdbRecordType->papFldDes[26]->size=sizeof(prec->putf); + pdbRecordType->papFldDes[26]->offset=(short)((char *)&prec->putf - (char *)prec); + pdbRecordType->papFldDes[27]->size=sizeof(prec->rpro); + pdbRecordType->papFldDes[27]->offset=(short)((char *)&prec->rpro - (char *)prec); + pdbRecordType->papFldDes[28]->size=sizeof(prec->asp); + pdbRecordType->papFldDes[28]->offset=(short)((char *)&prec->asp - (char *)prec); + pdbRecordType->papFldDes[29]->size=sizeof(prec->ppn); + pdbRecordType->papFldDes[29]->offset=(short)((char *)&prec->ppn - (char *)prec); + pdbRecordType->papFldDes[30]->size=sizeof(prec->ppnr); + pdbRecordType->papFldDes[30]->offset=(short)((char *)&prec->ppnr - (char *)prec); + pdbRecordType->papFldDes[31]->size=sizeof(prec->spvt); + pdbRecordType->papFldDes[31]->offset=(short)((char *)&prec->spvt - (char *)prec); + pdbRecordType->papFldDes[32]->size=sizeof(prec->rset); + pdbRecordType->papFldDes[32]->offset=(short)((char *)&prec->rset - (char *)prec); + pdbRecordType->papFldDes[33]->size=sizeof(prec->dset); + pdbRecordType->papFldDes[33]->offset=(short)((char *)&prec->dset - (char *)prec); + pdbRecordType->papFldDes[34]->size=sizeof(prec->dpvt); + pdbRecordType->papFldDes[34]->offset=(short)((char *)&prec->dpvt - (char *)prec); + pdbRecordType->papFldDes[35]->size=sizeof(prec->rdes); + pdbRecordType->papFldDes[35]->offset=(short)((char *)&prec->rdes - (char *)prec); + pdbRecordType->papFldDes[36]->size=sizeof(prec->lset); + pdbRecordType->papFldDes[36]->offset=(short)((char *)&prec->lset - (char *)prec); + pdbRecordType->papFldDes[37]->size=sizeof(prec->prio); + pdbRecordType->papFldDes[37]->offset=(short)((char *)&prec->prio - (char *)prec); + pdbRecordType->papFldDes[38]->size=sizeof(prec->tpro); + pdbRecordType->papFldDes[38]->offset=(short)((char *)&prec->tpro - (char *)prec); + pdbRecordType->papFldDes[39]->size=sizeof(prec->bkpt); + pdbRecordType->papFldDes[39]->offset=(short)((char *)&prec->bkpt - (char *)prec); + pdbRecordType->papFldDes[40]->size=sizeof(prec->udf); + pdbRecordType->papFldDes[40]->offset=(short)((char *)&prec->udf - (char *)prec); + pdbRecordType->papFldDes[41]->size=sizeof(prec->time); + pdbRecordType->papFldDes[41]->offset=(short)((char *)&prec->time - (char *)prec); + pdbRecordType->papFldDes[42]->size=sizeof(prec->flnk); + pdbRecordType->papFldDes[42]->offset=(short)((char *)&prec->flnk - (char *)prec); + pdbRecordType->papFldDes[43]->size=sizeof(prec->val); + pdbRecordType->papFldDes[43]->offset=(short)((char *)&prec->val - (char *)prec); + pdbRecordType->papFldDes[44]->size=sizeof(prec->inp); + pdbRecordType->papFldDes[44]->offset=(short)((char *)&prec->inp - (char *)prec); + pdbRecordType->papFldDes[45]->size=sizeof(prec->prec); + pdbRecordType->papFldDes[45]->offset=(short)((char *)&prec->prec - (char *)prec); + pdbRecordType->papFldDes[46]->size=sizeof(prec->egu); + pdbRecordType->papFldDes[46]->offset=(short)((char *)&prec->egu - (char *)prec); + pdbRecordType->papFldDes[47]->size=sizeof(prec->hopr); + pdbRecordType->papFldDes[47]->offset=(short)((char *)&prec->hopr - (char *)prec); + pdbRecordType->papFldDes[48]->size=sizeof(prec->lopr); + pdbRecordType->papFldDes[48]->offset=(short)((char *)&prec->lopr - (char *)prec); + pdbRecordType->papFldDes[49]->size=sizeof(prec->hihi); + pdbRecordType->papFldDes[49]->offset=(short)((char *)&prec->hihi - (char *)prec); + pdbRecordType->papFldDes[50]->size=sizeof(prec->lolo); + pdbRecordType->papFldDes[50]->offset=(short)((char *)&prec->lolo - (char *)prec); + pdbRecordType->papFldDes[51]->size=sizeof(prec->high); + pdbRecordType->papFldDes[51]->offset=(short)((char *)&prec->high - (char *)prec); + pdbRecordType->papFldDes[52]->size=sizeof(prec->low); + pdbRecordType->papFldDes[52]->offset=(short)((char *)&prec->low - (char *)prec); + pdbRecordType->papFldDes[53]->size=sizeof(prec->hhsv); + pdbRecordType->papFldDes[53]->offset=(short)((char *)&prec->hhsv - (char *)prec); + pdbRecordType->papFldDes[54]->size=sizeof(prec->llsv); + pdbRecordType->papFldDes[54]->offset=(short)((char *)&prec->llsv - (char *)prec); + pdbRecordType->papFldDes[55]->size=sizeof(prec->hsv); + pdbRecordType->papFldDes[55]->offset=(short)((char *)&prec->hsv - (char *)prec); + pdbRecordType->papFldDes[56]->size=sizeof(prec->lsv); + pdbRecordType->papFldDes[56]->offset=(short)((char *)&prec->lsv - (char *)prec); + pdbRecordType->papFldDes[57]->size=sizeof(prec->hyst); + pdbRecordType->papFldDes[57]->offset=(short)((char *)&prec->hyst - (char *)prec); + pdbRecordType->papFldDes[58]->size=sizeof(prec->adel); + pdbRecordType->papFldDes[58]->offset=(short)((char *)&prec->adel - (char *)prec); + pdbRecordType->papFldDes[59]->size=sizeof(prec->mdel); + pdbRecordType->papFldDes[59]->offset=(short)((char *)&prec->mdel - (char *)prec); + pdbRecordType->papFldDes[60]->size=sizeof(prec->lalm); + pdbRecordType->papFldDes[60]->offset=(short)((char *)&prec->lalm - (char *)prec); + pdbRecordType->papFldDes[61]->size=sizeof(prec->alst); + pdbRecordType->papFldDes[61]->offset=(short)((char *)&prec->alst - (char *)prec); + pdbRecordType->papFldDes[62]->size=sizeof(prec->mlst); + pdbRecordType->papFldDes[62]->offset=(short)((char *)&prec->mlst - (char *)prec); + pdbRecordType->rec_size = sizeof(*prec); + return(0); +} +epicsExportRegistrar(xxxRecordSizeOffset); +#ifdef __cplusplus +} +#endif +#endif /*GEN_SIZE_OFFSET*/ diff --git a/ebctrl/ioc/iocBoot/Makefile b/ebctrl/ioc/iocBoot/Makefile new file mode 100644 index 0000000..d097ef0 --- /dev/null +++ b/ebctrl/ioc/iocBoot/Makefile @@ -0,0 +1,6 @@ +TOP = .. +include $(TOP)/configure/CONFIG +DIRS += $(wildcard *ioc*) +DIRS += $(wildcard as*) +include $(EPICS_BASE)/configure/RULES_DIRS + diff --git a/ebctrl/ioc/iocBoot/iocebctrl/Makefile b/ebctrl/ioc/iocBoot/iocebctrl/Makefile new file mode 100644 index 0000000..cec9156 --- /dev/null +++ b/ebctrl/ioc/iocBoot/iocebctrl/Makefile @@ -0,0 +1,5 @@ +TOP = ../.. +include $(TOP)/configure/CONFIG +ARCH = linux-x86 +TARGETS = envPaths +include $(TOP)/configure/RULES.ioc diff --git a/ebctrl/ioc/iocBoot/iocebctrl/README b/ebctrl/ioc/iocBoot/iocebctrl/README new file mode 100644 index 0000000..65c4835 --- /dev/null +++ b/ebctrl/ioc/iocBoot/iocebctrl/README @@ -0,0 +1,9 @@ +To start the ioc from this directory execute the command + ../../bin/linux-x86/ st.cmd + +Alternatively make the st.cmd file directly executable with + chmod +x st.cmd +and check the executable name on the first line of the st.cmd file + +You may need to change the name of the .dbd file given in the +st.cmd's dbLoadDatabase() command before starting the ioc. diff --git a/ebctrl/ioc/iocBoot/iocebctrl/envPaths b/ebctrl/ioc/iocBoot/iocebctrl/envPaths new file mode 100644 index 0000000..dc00b19 --- /dev/null +++ b/ebctrl/ioc/iocBoot/iocebctrl/envPaths @@ -0,0 +1,4 @@ +epicsEnvSet(ARCH,"linux-x86") +epicsEnvSet(IOC,"iocebctrl") +epicsEnvSet(TOP,"/home/scs/play_2/ebctrl/ioc") +epicsEnvSet(EPICS_BASE,"/home/scs/base-3.14.9") diff --git a/ebctrl/ioc/iocBoot/iocebctrl/st.cmd b/ebctrl/ioc/iocBoot/iocebctrl/st.cmd new file mode 100644 index 0000000..25e36ea --- /dev/null +++ b/ebctrl/ioc/iocBoot/iocebctrl/st.cmd @@ -0,0 +1,27 @@ +#!../../bin/linux-x86/ebctrl + +## You may have to change ebctrl to something else +## everywhere it appears in this file + +< envPaths + +cd ${TOP} + +## Register all support components +dbLoadDatabase("dbd/ebctrl.dbd") +ebctrl_registerRecordDeviceDriver(pdbbase) + +## Load record instances +dbLoadTemplate "db/userHost.substitutions" +dbLoadRecords("db/evtbuild.db","eb=eb01") + +## Set this to see messages from mySub +var evtbuildDebug 0 +var genrunidDebug 1 +var writerunidDebug 1 + +cd ${TOP}/iocBoot/${IOC} +iocInit() + +## Start any sequence programs +#seq sncExample,"user=scsHost" -- 2.43.0