Compare commits
79 Commits
calinkplug
...
R3.15.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
65574b5971 | ||
|
|
4284222b54 | ||
|
|
54bab1e2f0 | ||
|
|
df200de27f | ||
|
|
22d6ebe7e1 | ||
|
|
9c3ed1bfe2 | ||
|
|
23fd4e202b | ||
|
|
a5b8b0b890 | ||
|
|
988614ae8a | ||
|
|
fe887b4f83 | ||
|
|
7be7ad2768 | ||
|
|
6c9555310a | ||
|
|
4ccc2e9d3a | ||
|
|
122fb6c731 | ||
|
|
3b8fd13152 | ||
|
|
04a9fdb4e3 | ||
|
|
3c61880d79 | ||
|
|
8081d3ada4 | ||
|
|
6d35ee9c3c | ||
|
|
b5a0657adc | ||
|
|
b87f3eaaee | ||
|
|
6db0e13809 | ||
|
|
0f6c997288 | ||
|
|
704c748fbd | ||
|
|
82456f83ee | ||
|
|
e98a6bbafa | ||
|
|
9b51444fb7 | ||
|
|
3be97865b3 | ||
|
|
67097456e3 | ||
|
|
3c8af4c571 | ||
|
|
26c04844cf | ||
|
|
a3d981ad0a | ||
|
|
924aa2f93b | ||
|
|
457fb8fa13 | ||
|
|
b8b259de6f | ||
|
|
7ce8e5ea01 | ||
|
|
496414c88c | ||
|
|
2acde8bac7 | ||
|
|
2c69ddbee5 | ||
|
|
ba0d5f9443 | ||
|
|
08fd987c60 | ||
|
|
5a605fa0c3 | ||
|
|
0e5dc2a21c | ||
|
|
230603f4ac | ||
|
|
396ff3c484 | ||
|
|
09fbeaf6d3 | ||
|
|
b4a8a1ac98 | ||
|
|
ee87aecd6e | ||
|
|
054a234c70 | ||
|
|
24ddcd2524 | ||
|
|
2226f3acb9 | ||
|
|
f0f89b4b1c | ||
|
|
fdda079b8f | ||
|
|
1f36670175 | ||
|
|
1ede873200 | ||
|
|
51dd371784 | ||
|
|
72745d7b0c | ||
|
|
c933d77963 | ||
|
|
93597e20d5 | ||
|
|
f0453faf36 | ||
|
|
473992cfb9 | ||
|
|
6a362f467d | ||
|
|
af07e0fd51 | ||
|
|
de38b80795 | ||
|
|
7bb27ad3e7 | ||
|
|
1e1799c30e | ||
|
|
8358580190 | ||
|
|
24e39b252d | ||
|
|
ce7044c711 | ||
|
|
177090e35e | ||
|
|
430da57a35 | ||
|
|
d2d637d0c2 | ||
|
|
106fae3b26 | ||
|
|
3179e65791 | ||
|
|
6b9bfb09a5 | ||
|
|
4e312b9f64 | ||
|
|
59fea64390 | ||
|
|
f260124733 | ||
|
|
113076a009 |
@@ -29,14 +29,14 @@ EPICS_VERSION = 3
|
||||
EPICS_REVISION = 15
|
||||
|
||||
# EPICS_MODIFICATION must be a number >=0 and <256
|
||||
EPICS_MODIFICATION = 3
|
||||
EPICS_MODIFICATION = 4
|
||||
|
||||
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
||||
# Not included if zero
|
||||
EPICS_PATCH_LEVEL = 0
|
||||
|
||||
# This will end in -DEV between official releases
|
||||
EPICS_DEV_SNAPSHOT=-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-pre1
|
||||
#EPICS_DEV_SNAPSHOT=-pre1-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-pre2
|
||||
@@ -45,7 +45,7 @@ EPICS_DEV_SNAPSHOT=-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-rc1-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-rc2
|
||||
#EPICS_DEV_SNAPSHOT=-rc2-DEV
|
||||
#EPICS_DEV_SNAPSHOT=
|
||||
EPICS_DEV_SNAPSHOT=
|
||||
|
||||
# No changes should be needed below here
|
||||
|
||||
|
||||
@@ -118,6 +118,13 @@ CROSS_COMPILER_TARGET_ARCHS=
|
||||
# configure/os/CONFIG_SITE.<host>.Common files instead.
|
||||
CROSS_COMPILER_HOST_ARCHS=
|
||||
|
||||
# The 'make runtests' and 'make tapfiles' build targets normally only run
|
||||
# self-tests for the EPICS_HOST_ARCH architecture. If the host can execute
|
||||
# the self-test programs for any other cross-built architectures such as
|
||||
# a -debug architecture, those architectures can be named here.
|
||||
#
|
||||
CROSS_COMPILER_RUNTEST_ARCHS=
|
||||
|
||||
# Build shared libraries (DLLs on Windows).
|
||||
# Must be either YES or NO. Definitions in the target-specific
|
||||
# os/CONFIG.Common.<target> and os/CONFIG_SITE.Common.<target> files may
|
||||
|
||||
@@ -30,10 +30,8 @@
|
||||
# local timezone info for vxWorks and RTEMS IOCs. The format is
|
||||
# <name>::<minutesWest>:<start daylight>:<end daylight>
|
||||
# where the start and end are mmddhh - that is month,day,hour
|
||||
# e.g. for ANL in 2015: EPICS_TIMEZONE=CST/CDT::360:030802:110102
|
||||
# e.g. for ANL in 2016: EPICS_TIMEZONE=CST/CDT::360:031302:110602
|
||||
#
|
||||
# DST for 2015 US: Mar 08 - Nov 01
|
||||
# EU: Mar 29 - Oct 25
|
||||
# DST for 2016 US: Mar 13 - Nov 06
|
||||
# EU: Mar 27 - Oct 30
|
||||
# DST for 2017 US: Mar 12 - Nov 05
|
||||
@@ -42,11 +40,15 @@
|
||||
# EU: Mar 25 - Oct 28
|
||||
# DST for 2019 US: Mar 10 - Nov 03
|
||||
# EU: Mar 31 - Oct 27
|
||||
# (see: http://www.timeanddate.com/time/map/)
|
||||
# DST for 2020 US: Mar 08 - Nov 01
|
||||
# EU: Mar 29 - Oct 25
|
||||
# DST for 2021 US: Mar 14 - Nov 07
|
||||
# EU: Mar 28 - Oct 31
|
||||
# (see: http://www.timeanddate.com/time/dst/2016.html etc. )
|
||||
#
|
||||
# These values are for 2015:
|
||||
EPICS_TIMEZONE=CST/CDT::360:030802:110102
|
||||
#EPICS_TIMEZONE=CET/CEST::-60:032902:102502
|
||||
# These values are for 2016:
|
||||
EPICS_TIMEZONE=CST/CDT::360:031302:110602
|
||||
#EPICS_TIMEZONE=CET/CEST::-60:032702:103002
|
||||
|
||||
# EPICS_TS_NTP_INET
|
||||
# NTP time server ip address. Uses boot host if not set.
|
||||
|
||||
@@ -24,11 +24,15 @@ else
|
||||
clean$(DIVIDER)$(ARCH) clean:
|
||||
endif
|
||||
|
||||
cdCommands envPaths dllPath.bat relPaths.sh: \
|
||||
cdCommands dllPath.bat relPaths.sh: \
|
||||
$(wildcard $(TOP)/configure/RELEASE*) \
|
||||
$(wildcard $(TOP)/configure/CONFIG_SITE*) $(INSTALL_BIN)
|
||||
$(wildcard $(TOP)/configure/CONFIG_SITE*) | $(INSTALL_BIN)
|
||||
$(CONVERTRELEASE) -a $(ARCH) -t $(IOCS_APPL_TOP) $@
|
||||
|
||||
envPaths: $(wildcard $(TOP)/configure/RELEASE*) \
|
||||
$(wildcard $(TOP)/configure/CONFIG_SITE*) | $(INSTALL_BIN)
|
||||
$(CONVERTRELEASE) -t $(IOCS_APPL_TOP) $@
|
||||
|
||||
realclean:
|
||||
$(RM) cdCommands envPaths dllPath.bat relPaths.sh
|
||||
|
||||
|
||||
@@ -170,7 +170,13 @@ endif
|
||||
$(DIRECTORY_TARGETS) :
|
||||
$(MKDIR) -p $@
|
||||
|
||||
$(PRODNAME): $(INSTALL_LIB_INSTALLS)
|
||||
# Install LIB_INSTALLS libraries before linking executables
|
||||
$(TESTPRODNAME) $(PRODNAME): | $(INSTALL_LIB_INSTALLS)
|
||||
|
||||
# Install built libraries too, unless Makefile says to wait
|
||||
ifneq ($(DELAY_INSTALL_LIBS),YES)
|
||||
$(TESTPRODNAME) $(PRODNAME): | $(INSTALL_LIBS) $(INSTALL_DLLSTUB_LIBS)
|
||||
endif
|
||||
|
||||
# RELEASE file consistency checking
|
||||
checkRelease:
|
||||
@@ -319,7 +325,9 @@ $(MODNAME): %$(MODEXT): %$(EXE)
|
||||
# Automated testing
|
||||
|
||||
runtests: $(TESTSCRIPTS)
|
||||
ifneq (,$(findstring $(T_A),$(EPICS_HOST_ARCH) $(CROSS_COMPILER_RUNTEST_ARCHS)))
|
||||
-$(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
|
||||
endif
|
||||
|
||||
testspec: $(TESTSCRIPTS)
|
||||
@$(RM) $@
|
||||
@@ -333,7 +341,9 @@ tapfiles: $(TESTSCRIPTS) $(TAPFILES)
|
||||
|
||||
# A .tap file is the output from running the associated test script
|
||||
%.tap: %.t
|
||||
ifneq (,$(findstring $(T_A),$(EPICS_HOST_ARCH) $(CROSS_COMPILER_RUNTEST_ARCHS)))
|
||||
-$(PERL) $< -tap > $@
|
||||
endif
|
||||
|
||||
# If there's a perl test script (.plt) available, use it
|
||||
%.t: ../%.plt
|
||||
|
||||
@@ -57,7 +57,7 @@ SHRLIB_LDLIBS = $(addprefix -l, $($*_LDLIBS) $(LIB_LIBS) $(USR_LIBS)) \
|
||||
$(LDLIBS)
|
||||
|
||||
SHRLIB_DEPLIB_DIRS = $(foreach word, \
|
||||
$(sort $(dir $($*_DEPLIBS) $(SHRLIB_DEPLIBS))), \
|
||||
$(sort $(INSTALL_LIB)/ $(dir $($*_DEPLIBS) $(SHRLIB_DEPLIBS))), \
|
||||
$(shell $(FULLPATHNAME) $(word)))
|
||||
|
||||
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-L%)
|
||||
@@ -86,7 +86,7 @@ PROD_LDLIBS += $($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
|
||||
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
|
||||
|
||||
PROD_DEPLIB_DIRS = $(foreach word, \
|
||||
$(sort $(dir $($*_DEPLIBS) $(PROD_DEPLIBS))), \
|
||||
$(sort $(INSTALL_LIB)/ $(dir $($*_DEPLIBS) $(PROD_DEPLIBS))), \
|
||||
$(shell $(FULLPATHNAME) $(word)))
|
||||
|
||||
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-L%)
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
# CONFIG_SITE.Common.cygwin-x86_64
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for cygwin-x86_64 target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# If readline is installed uncomment the following line
|
||||
# to add command-line editing and history support
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
# Uncomment the following line if readline has problems
|
||||
#LDLIBS_READLINE = -lreadline -lcurses
|
||||
|
||||
|
||||
# It makes sense to include debugging symbols even in optimized builds
|
||||
# in case you want to attach gdb to the process or examine a core-dump.
|
||||
# This does cost disk space, but not memory as debug symbols are not
|
||||
# loaded into RAM when the binary is loaded.
|
||||
OPT_CFLAGS_YES += -g
|
||||
OPT_CXXFLAGS_YES += -g
|
||||
|
||||
# CONFIG_SITE.Common.cygwin-x86_64
|
||||
#
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for cygwin-x86_64 target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# If readline is installed uncomment the following line
|
||||
# to add command-line editing and history support
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
# Uncomment the following line if readline has problems
|
||||
#LDLIBS_READLINE = -lreadline -lcurses
|
||||
|
||||
|
||||
# It makes sense to include debugging symbols even in optimized builds
|
||||
# in case you want to attach gdb to the process or examine a core-dump.
|
||||
# This does cost disk space, but not memory as debug symbols are not
|
||||
# loaded into RAM when the binary is loaded.
|
||||
OPT_CFLAGS_YES += -g
|
||||
OPT_CXXFLAGS_YES += -g
|
||||
|
||||
|
||||
@@ -9,12 +9,58 @@
|
||||
<body lang="en">
|
||||
<h1 align="center">EPICS Base Release 3.15.4</h1>
|
||||
|
||||
<p style="color:red">This version of EPICS Base has not been released yet.</p>
|
||||
|
||||
|
||||
<h2 align="center">Changes made on the 3.15 branch since 3.15.3</h2>
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
<h3>New string input device support "getenv"</h3>
|
||||
|
||||
<p>A new "getenv" device support for both the stringin and lsi (long string
|
||||
input) record types can be used to read the value of an environment variable
|
||||
from the IOC at runtime. See base/db/softIocExit.db for sample usage.</p>
|
||||
|
||||
<h3>Build rules and DELAY_INSTALL_LIBS</h3>
|
||||
|
||||
<p>A new order-only prerequisite build rule has been added to ensure that
|
||||
library files (and DLL stubs on Windows) get installed before linking any
|
||||
executables, which resolves parallel build problems on high-powered CPUs. There
|
||||
are some (rare) cases though where a Makefile has to build an executable and run
|
||||
it to be able to compile code for a library built by the same Makefile. With
|
||||
this new build rule GNUmake will complain about a circular dependency and the
|
||||
build will probably fail in those cases. To avoid this problem the failing
|
||||
Makefile should set <tt>DELAY_INSTALL_LIBS = YES</tt> before including the
|
||||
<tt>$(TOP)/configure/RULES</tt> file, disabling the new build rule.</p>
|
||||
|
||||
<h3>IOC environment variables and build parameters</h3>
|
||||
|
||||
<p>The IOC now sets a number of environment variables at startup that provide
|
||||
the version of EPICS Base it was built against (EPICS_VERSION_...) and its build
|
||||
architecture (ARCH). In some cases this allows a single iocBoot/ioc directory to
|
||||
be used to run the same IOC on several different architectures without any
|
||||
changes.</p>
|
||||
|
||||
<p>There are also 3 new environment parameters (EPICS_BUILD_...) available that
|
||||
C/C++ code can use to find out the target architecture, OS class and compiler
|
||||
class it was built with. These may be useful when writing interfaces to other
|
||||
languages.</p>
|
||||
|
||||
<h3>New implementation of promptgroup/gui_group field property</h3>
|
||||
|
||||
<p>The mechanism behind the "promptgroup()" field property inside a record type
|
||||
definition has been changed. Instead of using a fixed set of choices,
|
||||
the static database access library now collects the used gui group names
|
||||
while parsing DBD information. Group names should start with a two-digit number
|
||||
plus space-dash-space to allow proper sorting of groups.</p>
|
||||
|
||||
<p>The include file <tt>guigroup.h</tt> that defined the fixed set of choices
|
||||
has been deprecated. Instead, use the conversion functions between index number
|
||||
and group string that have been added to dbStaticLib.</p>
|
||||
|
||||
<p>When a DBD file containing record-type descriptions is expanded, any
|
||||
old-style <tt>GUI_xxx</tt> group names will be replaced by a new-style
|
||||
string for use by the IOC. This permits an older record type to be used with
|
||||
the 3.15.4 release, although eventually record types should be converted by
|
||||
hand with better group names used.</p>
|
||||
|
||||
<h3>CA server configuration changes</h3>
|
||||
|
||||
<p>RSRV now honors EPICS_CAS_INTF_ADDR_LIST and binds only to the provided list
|
||||
@@ -72,6 +118,81 @@ dbQuietMacroWarnings=1 <i>VxWorks</i>
|
||||
<h2 align="center">Changes pulled from the 3.14 branch since 3.15.3</h2>
|
||||
<!-- Insert inherited items immediately below here ... -->
|
||||
|
||||
<h3>Making IOC ca_get operations atomic</h3>
|
||||
|
||||
<p>When a CA client gets data from an IOC record using a compound data type such
|
||||
as <tt>DBR_TIME_DOUBLE</tt> the value field is fetched from the database in a
|
||||
separate call than the other metadata, without keeping the record locked. This
|
||||
allows some other thread such as a periodic scan thread a chance to interrupt
|
||||
the get operation and process the record in between. CA monitors have always
|
||||
been atomic as long as the value data isn't a string or an array, but this race
|
||||
condition in the CA get path has now been fixed so the record will stay locked
|
||||
between the two fetch operations.</p>
|
||||
|
||||
<p>This fixes <a href="https://bugs.launchpad.net/epics-base/+bug/1581212">
|
||||
Launchpad bug #1581212</a>, thanks to Till Strauman and Dehong Zhang.</p>
|
||||
|
||||
<h3>New CONFIG_SITE variable for running self-tests</h3>
|
||||
|
||||
<p>The 'make runtests' and 'make tapfiles' build targets normally only run the
|
||||
self-tests for the main <tt>EPICS_HOST_ARCH</tt> architecture. If the host is
|
||||
able to execute self-test programs for other target architectures that are being
|
||||
built by the host, such as when building a <tt>-debug</tt> version of the host
|
||||
architecture for example, the names of those other architectures can be added to
|
||||
the new <tt>CROSS_COMPILER_RUNTEST_ARCHS</tt> variable in either the
|
||||
<tt>configure/CONFIG_SITE</tt> file or in an appropriate
|
||||
<tt>configure/os/CONFIG_SITE.<host>.Common</tt> file to have the test
|
||||
programs for those targets be run as well.</p>
|
||||
|
||||
<h3>Additional RELEASE file checks</h3>
|
||||
|
||||
<p>An additional check has been added at build-time for the contents of the
|
||||
configure/RELEASE file(s), which will mostly only affect users of the Debian
|
||||
EPICS packages published by NSLS-2. Support modules may share an install path,
|
||||
but all such modules must be listed adjacent to each other in any RELEASE files
|
||||
that point to them. For example the following will fail the new checks:</p>
|
||||
|
||||
<blockquote><pre>
|
||||
AUTOSAVE = /usr/lib/epics
|
||||
ASYN = /home/mdavidsaver/asyn
|
||||
EPICS_BASE = /usr/lib/epics
|
||||
</pre></blockquote>
|
||||
|
||||
<p>giving the compile-time error</p>
|
||||
|
||||
<blockquote><pre>
|
||||
This application's RELEASE file(s) define
|
||||
EPICS_BASE = /usr/lib/epics
|
||||
after but not adjacent to
|
||||
AUTOSAVE = /usr/lib/epics
|
||||
Module definitions that share paths must be grouped together.
|
||||
Either remove a definition, or move it to a line immediately
|
||||
above or below the other(s).
|
||||
Any non-module definitions belong in configure/CONFIG_SITE.
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
<p>In many cases such as the one above the order of the <tt>AUTOSAVE</tt> and
|
||||
<tt>ASYN</tt> lines can be swapped to let the checks pass, but if the
|
||||
<tt>AUTOSAVE</tt> module depended on <tt>ASYN</tt> and hence had to appear
|
||||
before it in the list this error indicates that <tt>AUTOSAVE</tt> should also be
|
||||
built in its own private area; a shared copy would likely be incompatible with
|
||||
the version of <tt>ASYN</tt> built in the home directory.</p>
|
||||
|
||||
<h3>String field buffer overflows</h3>
|
||||
|
||||
<p>Two buffer overflow bugs that can crash the IOC have been fixed, caused by
|
||||
initializing a string field with a value larger than the field size
|
||||
(<a href="https://bugs.launchpad.net/bugs/1563191">Launchpad bug
|
||||
#1563191</a>).</p>
|
||||
|
||||
<h3>Fixed stack corruption bug in epicsThread C++ API</h3>
|
||||
|
||||
<p>The C++ interface to the epicsThread API could corrupt the stack on thread
|
||||
exit in some rare circumstances, usually at program exit. This bug has been
|
||||
fixed (<a href="https://bugs.launchpad.net/bugs/1558206">Launchpad bug
|
||||
#1558206</a>).</p>
|
||||
|
||||
<h3>RTEMS NTP Support Issue</h3>
|
||||
|
||||
<p>On RTEMS the NTP Time Provider could in some circumstances get out of sync
|
||||
|
||||
@@ -333,6 +333,12 @@ cac::~cac ()
|
||||
|
||||
this->ipToAEngine.release ();
|
||||
|
||||
// clean-up the list of un-notified msg objects
|
||||
while ( msgForMultiplyDefinedPV * msg = this->msgMultiPVList.get() ) {
|
||||
msg->~msgForMultiplyDefinedPV ();
|
||||
this->mdpvFreeList.release ( msg );
|
||||
}
|
||||
|
||||
errlogFlush ();
|
||||
|
||||
osiSockRelease ();
|
||||
@@ -606,6 +612,8 @@ void cac::transferChanToVirtCircuit (
|
||||
msgForMultiplyDefinedPV * pMsg = new ( this->mdpvFreeList )
|
||||
msgForMultiplyDefinedPV ( this->ipToAEngine,
|
||||
*this, pChan->pName ( guard ), acc );
|
||||
// cac keeps a list of these objects for proper clean-up in ~cac
|
||||
this->msgMultiPVList.add ( *pMsg );
|
||||
// It is possible for the ioInitiate call below to
|
||||
// call the callback directly if queue quota is exceeded.
|
||||
// This callback takes the callback lock and therefore we
|
||||
@@ -1297,6 +1305,8 @@ void cac::pvMultiplyDefinedNotify ( msgForMultiplyDefinedPV & mfmdpv,
|
||||
epicsGuard < epicsMutex > guard ( this->mutex );
|
||||
this->exception ( mgr.cbGuard, guard, ECA_DBLCHNL, buf, __FILE__, __LINE__ );
|
||||
}
|
||||
// remove from the list and delete msg object
|
||||
this->msgMultiPVList.remove ( mfmdpv );
|
||||
mfmdpv.~msgForMultiplyDefinedPV ();
|
||||
this->mdpvFreeList.release ( & mfmdpv );
|
||||
}
|
||||
|
||||
@@ -237,6 +237,7 @@ private:
|
||||
resTable < tcpiiu, caServerID > serverTable;
|
||||
tsDLList < tcpiiu > circuitList;
|
||||
tsDLList < SearchDest > searchDestList;
|
||||
tsDLList < msgForMultiplyDefinedPV > msgMultiPVList;
|
||||
tsFreeList
|
||||
< class tcpiiu, 32, epicsMutexNOOP >
|
||||
freeListVirtualCircuit;
|
||||
|
||||
@@ -55,8 +55,10 @@ msgForMultiplyDefinedPV::~msgForMultiplyDefinedPV ()
|
||||
|
||||
void msgForMultiplyDefinedPV::transactionComplete ( const char * pHostNameRej )
|
||||
{
|
||||
// calls into cac for the notification
|
||||
// the msg object (= this) is being deleted as part of the notification
|
||||
this->cb.pvMultiplyDefinedNotify ( *this, this->channel, this->acc, pHostNameRej );
|
||||
// !! dont touch this pointer after this point because object has been deleted !!
|
||||
// !! dont touch 'this' pointer after this point because object has been deleted !!
|
||||
}
|
||||
|
||||
void * msgForMultiplyDefinedPV::operator new ( size_t size,
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
#include "ipAddrToAsciiAsynchronous.h"
|
||||
#include "tsFreeList.h"
|
||||
#include "tsDLList.h"
|
||||
#include "compilerDependencies.h"
|
||||
|
||||
#ifdef msgForMultiplyDefinedPVh_epicsExportSharedSymbols
|
||||
@@ -47,7 +48,9 @@ public:
|
||||
const char * pAcc, const char * pRej ) = 0;
|
||||
};
|
||||
|
||||
class msgForMultiplyDefinedPV : public ipAddrToAsciiCallBack {
|
||||
class msgForMultiplyDefinedPV :
|
||||
public ipAddrToAsciiCallBack,
|
||||
public tsDLNode < msgForMultiplyDefinedPV > {
|
||||
public:
|
||||
msgForMultiplyDefinedPV ( ipAddrToAsciiEngine & engine,
|
||||
callbackForMultiplyDefinedPV &, const char * pChannelName,
|
||||
@@ -62,8 +65,8 @@ private:
|
||||
ipAddrToAsciiTransaction & dnsTransaction;
|
||||
callbackForMultiplyDefinedPV & cb;
|
||||
void transactionComplete ( const char * pHostName );
|
||||
msgForMultiplyDefinedPV ( const msgForMultiplyDefinedPV & );
|
||||
msgForMultiplyDefinedPV & operator = ( const msgForMultiplyDefinedPV & );
|
||||
msgForMultiplyDefinedPV ( const msgForMultiplyDefinedPV & );
|
||||
msgForMultiplyDefinedPV & operator = ( const msgForMultiplyDefinedPV & );
|
||||
void operator delete ( void * );
|
||||
};
|
||||
|
||||
|
||||
@@ -1138,6 +1138,20 @@ void CA_add_exception_event(const char *class, SV *sub) {
|
||||
static
|
||||
SV * printf_sub = NULL;
|
||||
|
||||
#ifndef va_copy
|
||||
# ifdef __GNUC__
|
||||
# define va_copy(d, s) __va_copy(d, s)
|
||||
# else
|
||||
# define va_copy(d, s) ((d) = (s))
|
||||
/* The above macro is NOT PORTABLE but works on Windows when
|
||||
* stdarg.h doesn't provide va_copy(). Some architectures need
|
||||
* define va_copy(d, s) ((*d) = (*s))
|
||||
* while others may be even more complicated, but hopefully the
|
||||
* system stdarg.h header defines va_copy() in those cases.
|
||||
*/
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static
|
||||
int printf_handler(const char *format, va_list args) {
|
||||
if (! printf_sub)
|
||||
@@ -1152,11 +1166,7 @@ int printf_handler(const char *format, va_list args) {
|
||||
ENTER;
|
||||
SAVETMPS;
|
||||
|
||||
#ifdef __GNUC__
|
||||
__va_copy(argcopy, args);
|
||||
#else
|
||||
va_copy(argcopy, args);
|
||||
#endif
|
||||
|
||||
printf_str = NEWSV(0, strlen(format) + 32);
|
||||
sv_vsetpvf(printf_str, format, &argcopy);
|
||||
|
||||
@@ -20,10 +20,19 @@ ifeq ($(OS_CLASS),Darwin)
|
||||
LOADABLE_SHRLIB_SUFFIX = .$(shell $(PERL) ../perlConfig.pl dlext)
|
||||
endif
|
||||
|
||||
PERL_VERSION = $(shell $(PERL) ../perlConfig.pl version)
|
||||
PERL_ARCHNAME = $(shell $(PERL) ../perlConfig.pl archname)
|
||||
PERL_ARCHPATH = $(PERL_VERSION)/$(PERL_ARCHNAME)
|
||||
ifdef T_A
|
||||
PERL_VERSION = $(shell $(PERL) ../perlConfig.pl version)
|
||||
PERL_ARCHNAME = $(shell $(PERL) ../perlConfig.pl archname)
|
||||
PERL_ARCHPATH := $(PERL_VERSION)/$(PERL_ARCHNAME)
|
||||
|
||||
EXTUTILS := $(shell $(PERL) ../perlConfig.pl privlib)/ExtUtils
|
||||
PERLBIN := $(shell $(PERL) ../perlConfig.pl bin)
|
||||
XSUBPP := $(firstword $(wildcard $(PERLBIN)/xsubpp $(EXTUTILS)/xsubpp))
|
||||
|
||||
ifeq ($(strip $(XSUBPP)),)
|
||||
$(warning Perl's xsubpp program was not found.)
|
||||
$(warning The Perl CA module will not be built.)
|
||||
else
|
||||
ifeq ($(T_A),$(EPICS_HOST_ARCH)) # No cross-builds (wrong Perl!)
|
||||
ifeq ($(findstring $(OS_CLASS),WIN32 cygwin32),) # Doesn't build on WIN32
|
||||
LOADABLE_LIBRARY_HOST = Cap5
|
||||
@@ -41,6 +50,8 @@ ifeq ($(findstring $(OS_CLASS),WIN32 cygwin32),) # Doesn't build on WIN32
|
||||
HTMLS = CA.html
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
Cap5_SRCS = Cap5.xs
|
||||
Cap5_LIBS = ca Com
|
||||
@@ -52,10 +63,6 @@ CLEANS += Cap5.c pod2htmd.tmp pod2htmi.tmp
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
ifdef T_A
|
||||
EXTUTILS = $(shell $(PERL) ../perlConfig.pl privlib)/ExtUtils
|
||||
PERLBIN = $(shell $(PERL) ../perlConfig.pl bin)
|
||||
XSUBPP = $(firstword $(wildcard $(PERLBIN)/xsubpp $(EXTUTILS)/xsubpp))
|
||||
|
||||
%.c: ../%.xs
|
||||
$(RM) $@ $@_new
|
||||
$(PERL) $(XSUBPP) -typemap $(EXTUTILS)/typemap $< > $@_new && $(MV) $@_new $@
|
||||
|
||||
@@ -3,7 +3,13 @@
|
||||
# This script is used to extract information about the Perl build
|
||||
# configuration, so the EPICS build system uses the same settings.
|
||||
|
||||
use strict;
|
||||
use Config;
|
||||
|
||||
my $arg = shift;
|
||||
print $Config{$arg};
|
||||
my $val = $Config{$arg};
|
||||
|
||||
$val =~ s{\\}{/}go
|
||||
if $^O eq 'MSWin32';
|
||||
|
||||
print $val;
|
||||
|
||||
@@ -492,14 +492,13 @@ int main (int argc, char *argv[])
|
||||
} else { /* Not an ENUM */
|
||||
|
||||
if (charArrAsStr) {
|
||||
count = len;
|
||||
dbrType = DBR_CHAR;
|
||||
ebuf = calloc(strlen(cbuf)+1, sizeof(char));
|
||||
ebuf = calloc(len, sizeof(char));
|
||||
if(!ebuf) {
|
||||
fprintf(stderr, "Memory allocation failed\n");
|
||||
return 1;
|
||||
}
|
||||
epicsStrnRawFromEscaped(ebuf, strlen(cbuf)+1, cbuf, strlen(cbuf));
|
||||
count = epicsStrnRawFromEscaped(ebuf, len, cbuf, len-1) + 1;
|
||||
} else {
|
||||
for (i = 0; i < count; ++i) {
|
||||
epicsStrnRawFromEscaped(sbuf[i], sizeof(EpicsStr), *(argv+optind+i), sizeof(EpicsStr));
|
||||
|
||||
@@ -69,6 +69,11 @@ CLEANS += $(COMMON_DIR)/aitConvertGenerated.cc
|
||||
USR_CXXFLAGS_Linux = -fno-strict-aliasing
|
||||
USR_CXXFLAGS_RTEMS = -fno-strict-aliasing
|
||||
|
||||
ifeq ($(T_A),$(EPICS_HOST_ARCH))
|
||||
# genApps and aitGen are needed to finish libgdd
|
||||
DELAY_INSTALL_LIBS = YES
|
||||
endif
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
# Manual dependencies
|
||||
|
||||
@@ -348,10 +348,8 @@ caStatus casDGClient::searchResponse ( const caHdrLargeArray & msg,
|
||||
//
|
||||
caStatus casDGClient::searchFailResponse ( const caHdrLargeArray * mp )
|
||||
{
|
||||
int status;
|
||||
|
||||
epicsGuard < epicsMutex > guard ( this->mutex );
|
||||
status = this->out.copyInHeader ( CA_PROTO_NOT_FOUND, 0,
|
||||
this->out.copyInHeader ( CA_PROTO_NOT_FOUND, 0,
|
||||
mp->m_dataType, mp->m_count, mp->m_cid, mp->m_available, 0 );
|
||||
|
||||
this->out.commitMsg ();
|
||||
|
||||
@@ -402,19 +402,29 @@ struct rset * dbGetRset(const struct dbAddr *paddr)
|
||||
}
|
||||
|
||||
long dbPutAttribute(
|
||||
const char *recordTypename,const char *name,const char*value)
|
||||
const char *recordTypename, const char *name, const char *value)
|
||||
{
|
||||
DBENTRY dbEntry;
|
||||
DBENTRY *pdbEntry = &dbEntry;
|
||||
long status=0;
|
||||
DBENTRY dbEntry;
|
||||
DBENTRY *pdbEntry = &dbEntry;
|
||||
long status = 0;
|
||||
|
||||
if(!pdbbase) return(S_db_notFound);
|
||||
dbInitEntry(pdbbase,pdbEntry);
|
||||
status = dbFindRecordType(pdbEntry,recordTypename);
|
||||
if(!status) status = dbPutRecordAttribute(pdbEntry,name,value);
|
||||
dbFinishEntry(pdbEntry);
|
||||
if(status) errMessage(status,"dbPutAttribute failure");
|
||||
return(status);
|
||||
if (!pdbbase)
|
||||
return S_db_notFound;
|
||||
if (!name) {
|
||||
status = S_db_badField;
|
||||
goto done;
|
||||
}
|
||||
if (!value)
|
||||
value = "";
|
||||
dbInitEntry(pdbbase, pdbEntry);
|
||||
status = dbFindRecordType(pdbEntry, recordTypename);
|
||||
if (!status)
|
||||
status = dbPutRecordAttribute(pdbEntry, name, value);
|
||||
dbFinishEntry(pdbEntry);
|
||||
done:
|
||||
if (status)
|
||||
errMessage(status, "dbPutAttribute failure");
|
||||
return status;
|
||||
}
|
||||
|
||||
int dbIsValueField(const struct dbFldDes *pdbFldDes)
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
%#include "epicsTypes.h"
|
||||
%#include "link.h"
|
||||
@@ -15,59 +15,59 @@
|
||||
}
|
||||
field(DESC,DBF_STRING) {
|
||||
prompt("Descriptor")
|
||||
promptgroup(GUI_COMMON)
|
||||
promptgroup("10 - Common")
|
||||
size(41)
|
||||
}
|
||||
field(ASG,DBF_STRING) {
|
||||
prompt("Access Security Group")
|
||||
promptgroup(GUI_COMMON)
|
||||
promptgroup("10 - Common")
|
||||
special(SPC_AS)
|
||||
size(29)
|
||||
}
|
||||
field(SCAN,DBF_MENU) {
|
||||
prompt("Scan Mechanism")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
special(SPC_SCAN)
|
||||
interest(1)
|
||||
menu(menuScan)
|
||||
}
|
||||
field(PINI,DBF_MENU) {
|
||||
prompt("Process at iocInit")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
interest(1)
|
||||
menu(menuPini)
|
||||
}
|
||||
field(PHAS,DBF_SHORT) {
|
||||
prompt("Scan Phase")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
special(SPC_SCAN)
|
||||
interest(1)
|
||||
}
|
||||
field(EVNT,DBF_STRING) {
|
||||
prompt("Event Name")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
special(SPC_SCAN)
|
||||
size(40)
|
||||
interest(1)
|
||||
}
|
||||
field(TSE,DBF_SHORT) {
|
||||
prompt("Time Stamp Event")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
interest(1)
|
||||
}
|
||||
field(TSEL,DBF_INLINK) {
|
||||
prompt("Time Stamp Link")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
interest(1)
|
||||
}
|
||||
field(DTYP,DBF_DEVICE) {
|
||||
prompt("Device Type")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("10 - Common")
|
||||
interest(1)
|
||||
}
|
||||
field(DISV,DBF_SHORT) {
|
||||
prompt("Disable Value")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
initial("1")
|
||||
}
|
||||
field(DISA,DBF_SHORT) {
|
||||
@@ -75,7 +75,7 @@
|
||||
}
|
||||
field(SDIS,DBF_INLINK) {
|
||||
prompt("Scanning Disable")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
interest(1)
|
||||
}
|
||||
%#include "epicsMutex.h"
|
||||
@@ -131,7 +131,7 @@
|
||||
}
|
||||
field(ACKT,DBF_MENU) {
|
||||
prompt("Alarm Ack Transient")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
special(SPC_NOMOD)
|
||||
interest(2)
|
||||
menu(menuYesNo)
|
||||
@@ -139,7 +139,7 @@
|
||||
}
|
||||
field(DISS,DBF_MENU) {
|
||||
prompt("Disable Alarm Sevrty")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
@@ -219,7 +219,7 @@
|
||||
}
|
||||
field(PRIO,DBF_MENU) {
|
||||
prompt("Scheduling Priority")
|
||||
promptgroup(GUI_SCAN)
|
||||
promptgroup("20 - Scan")
|
||||
special(SPC_SCAN)
|
||||
interest(1)
|
||||
menu(menuPriority)
|
||||
@@ -235,14 +235,14 @@
|
||||
}
|
||||
field(UDF,DBF_UCHAR) {
|
||||
prompt("Undefined")
|
||||
promptgroup(GUI_COMMON)
|
||||
promptgroup("10 - Common")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(UDFS,DBF_MENU) {
|
||||
prompt("Undefined Alarm Sevrty")
|
||||
promptgroup(GUI_COMMON)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
initial("INVALID")
|
||||
@@ -256,6 +256,6 @@
|
||||
}
|
||||
field(FLNK,DBF_FWDLINK) {
|
||||
prompt("Forward Process Link")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("20 - Scan")
|
||||
interest(1)
|
||||
}
|
||||
|
||||
@@ -224,6 +224,7 @@ static long dbDbGetValue(struct link *plink, short dbrType, void *pbuffer,
|
||||
return S_db_badDbrtype;
|
||||
|
||||
if (paddr->no_elements == 1 && (!pnRequest || *pnRequest == 1)
|
||||
&& paddr->special != SPC_DBADDR
|
||||
&& paddr->special != SPC_ATTRIBUTE) {
|
||||
ppv_link->getCvt = dbFastGetConvertRoutine[dbfType][dbrType];
|
||||
status = ppv_link->getCvt(paddr->pfield, pbuffer, paddr);
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
#include "dbChannel.h"
|
||||
#include "dbCommon.h"
|
||||
#include "dbEvent.h"
|
||||
#include "dbLock.h"
|
||||
#include "dbNotify.h"
|
||||
#include "dbStaticLib.h"
|
||||
#include "recSup.h"
|
||||
@@ -153,28 +154,30 @@ int dbChannel_get_count(
|
||||
* in the dbAccess.c dbGet() and getOptions() routines.
|
||||
*/
|
||||
|
||||
dbScanLock(dbChannelRecord(chan));
|
||||
|
||||
switch(buffer_type) {
|
||||
case(oldDBR_STRING):
|
||||
status = dbChannelGetField(chan, DBR_STRING, pbuffer, &zero, nRequest, pfl);
|
||||
status = dbChannelGet(chan, DBR_STRING, pbuffer, &zero, nRequest, pfl);
|
||||
break;
|
||||
/* case(oldDBR_INT): */
|
||||
case(oldDBR_SHORT):
|
||||
status = dbChannelGetField(chan, DBR_SHORT, pbuffer, &zero, nRequest, pfl);
|
||||
status = dbChannelGet(chan, DBR_SHORT, pbuffer, &zero, nRequest, pfl);
|
||||
break;
|
||||
case(oldDBR_FLOAT):
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, pbuffer, &zero, nRequest, pfl);
|
||||
status = dbChannelGet(chan, DBR_FLOAT, pbuffer, &zero, nRequest, pfl);
|
||||
break;
|
||||
case(oldDBR_ENUM):
|
||||
status = dbChannelGetField(chan, DBR_ENUM, pbuffer, &zero, nRequest, pfl);
|
||||
status = dbChannelGet(chan, DBR_ENUM, pbuffer, &zero, nRequest, pfl);
|
||||
break;
|
||||
case(oldDBR_CHAR):
|
||||
status = dbChannelGetField(chan, DBR_CHAR, pbuffer, &zero, nRequest, pfl);
|
||||
status = dbChannelGet(chan, DBR_CHAR, pbuffer, &zero, nRequest, pfl);
|
||||
break;
|
||||
case(oldDBR_LONG):
|
||||
status = dbChannelGetField(chan, DBR_LONG, pbuffer, &zero, nRequest, pfl);
|
||||
status = dbChannelGet(chan, DBR_LONG, pbuffer, &zero, nRequest, pfl);
|
||||
break;
|
||||
case(oldDBR_DOUBLE):
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, pbuffer, &zero, nRequest, pfl);
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, pbuffer, &zero, nRequest, pfl);
|
||||
break;
|
||||
|
||||
case(oldDBR_STS_STRING):
|
||||
@@ -187,10 +190,10 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_STRING, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_STRING, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
status = dbChannelGetField(chan, DBR_STRING, pold->value, &zero,
|
||||
status = dbChannelGet(chan, DBR_STRING, pold->value, &zero,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -203,10 +206,10 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &pold->value, &zero,
|
||||
status = dbChannelGet(chan, DBR_SHORT, &pold->value, &zero,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -218,10 +221,10 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &pold->value, &zero,
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &pold->value, &zero,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -233,10 +236,10 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_ENUM, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_ENUM, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
status = dbChannelGetField(chan, DBR_ENUM, &pold->value, &zero,
|
||||
status = dbChannelGet(chan, DBR_ENUM, &pold->value, &zero,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -248,10 +251,10 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_UCHAR, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_UCHAR, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
status = dbChannelGetField(chan, DBR_UCHAR, &pold->value, &zero,
|
||||
status = dbChannelGet(chan, DBR_UCHAR, &pold->value, &zero,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -263,10 +266,10 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &pold->value, &zero,
|
||||
status = dbChannelGet(chan, DBR_LONG, &pold->value, &zero,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -278,11 +281,11 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -296,12 +299,12 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_TIME;
|
||||
status = dbChannelGetField(chan, DBR_STRING, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_STRING, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->stamp = newSt.time; /* structure copy */
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_STRING, pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_STRING, pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -315,12 +318,12 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_TIME;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->stamp = newSt.time; /* structure copy */
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_SHORT, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -333,12 +336,12 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_TIME;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->stamp = newSt.time; /* structure copy */
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -351,12 +354,12 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_TIME;
|
||||
status = dbChannelGetField(chan, DBR_ENUM, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_ENUM, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->stamp = newSt.time; /* structure copy */
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_ENUM, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_ENUM, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -369,12 +372,12 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_TIME;
|
||||
status = dbChannelGetField(chan, DBR_CHAR, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_CHAR, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->stamp = newSt.time; /* structure copy */
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_CHAR, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_CHAR, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -387,12 +390,12 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_TIME;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->stamp = newSt.time; /* structure copy */
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_LONG, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -405,12 +408,12 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_TIME;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->stamp = newSt.time; /* structure copy */
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -428,7 +431,7 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_GR_LONG | DBR_AL_LONG;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
strncpy(pold->units, newSt.units, MAX_UNITS_SIZE);
|
||||
@@ -440,7 +443,7 @@ int dbChannel_get_count(
|
||||
pold->lower_warning_limit = newSt.lower_warning_limit;
|
||||
pold->lower_alarm_limit = newSt.lower_alarm_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_SHORT, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -457,7 +460,7 @@ int dbChannel_get_count(
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_PRECISION | DBR_GR_DOUBLE |
|
||||
DBR_AL_DOUBLE;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->precision = (dbr_short_t) newSt.precision.dp;
|
||||
@@ -470,7 +473,7 @@ int dbChannel_get_count(
|
||||
pold->upper_warning_limit = epicsConvertDoubleToFloat(newSt.upper_warning_limit);
|
||||
pold->lower_warning_limit = epicsConvertDoubleToFloat(newSt.lower_warning_limit);
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -486,7 +489,7 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_GR_LONG | DBR_AL_LONG;
|
||||
status = dbChannelGetField(chan, DBR_UCHAR, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_UCHAR, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
strncpy(pold->units, newSt.units, MAX_UNITS_SIZE);
|
||||
@@ -498,7 +501,7 @@ int dbChannel_get_count(
|
||||
pold->lower_warning_limit = newSt.lower_warning_limit;
|
||||
pold->lower_alarm_limit = newSt.lower_alarm_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_UCHAR, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_UCHAR, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -513,7 +516,7 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_GR_LONG | DBR_AL_LONG;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
strncpy(pold->units, newSt.units, MAX_UNITS_SIZE);
|
||||
@@ -525,7 +528,7 @@ int dbChannel_get_count(
|
||||
pold->lower_warning_limit = newSt.lower_warning_limit;
|
||||
pold->lower_alarm_limit = newSt.lower_alarm_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_LONG, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -542,7 +545,7 @@ int dbChannel_get_count(
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_PRECISION | DBR_GR_DOUBLE |
|
||||
DBR_AL_DOUBLE;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->precision = (dbr_short_t) newSt.precision.dp;
|
||||
@@ -555,7 +558,7 @@ int dbChannel_get_count(
|
||||
pold->lower_warning_limit = newSt.lower_warning_limit;
|
||||
pold->lower_alarm_limit = newSt.lower_alarm_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -574,7 +577,7 @@ int dbChannel_get_count(
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_GR_LONG | DBR_CTRL_LONG |
|
||||
DBR_AL_LONG;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_SHORT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
strncpy(pold->units, newSt.units, MAX_UNITS_SIZE);
|
||||
@@ -588,7 +591,7 @@ int dbChannel_get_count(
|
||||
pold->upper_ctrl_limit = newSt.upper_ctrl_limit;
|
||||
pold->lower_ctrl_limit = newSt.lower_ctrl_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_SHORT, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_SHORT, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -606,7 +609,7 @@ int dbChannel_get_count(
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_PRECISION | DBR_GR_DOUBLE |
|
||||
DBR_CTRL_DOUBLE | DBR_AL_DOUBLE;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->precision = (dbr_short_t) newSt.precision.dp;
|
||||
@@ -621,7 +624,7 @@ int dbChannel_get_count(
|
||||
pold->upper_ctrl_limit = epicsConvertDoubleToFloat(newSt.upper_ctrl_limit);
|
||||
pold->lower_ctrl_limit = epicsConvertDoubleToFloat(newSt.lower_ctrl_limit);
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_FLOAT, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_FLOAT, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -638,7 +641,7 @@ int dbChannel_get_count(
|
||||
memset(pold, '\0', sizeof(struct dbr_ctrl_enum));
|
||||
/* first get status and severity */
|
||||
options = DBR_STATUS | DBR_ENUM_STRS;
|
||||
status = dbChannelGetField(chan, DBR_ENUM, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_ENUM, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
no_str = newSt.no_str;
|
||||
@@ -648,7 +651,7 @@ int dbChannel_get_count(
|
||||
strncpy(pold->strs[i], newSt.strs[i], sizeof(pold->strs[i]));
|
||||
/*now get values*/
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_ENUM, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_ENUM, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -665,7 +668,7 @@ int dbChannel_get_count(
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_GR_LONG | DBR_CTRL_LONG |
|
||||
DBR_AL_LONG;
|
||||
status = dbChannelGetField(chan, DBR_UCHAR, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_UCHAR, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
strncpy(pold->units, newSt.units, MAX_UNITS_SIZE);
|
||||
@@ -679,7 +682,7 @@ int dbChannel_get_count(
|
||||
pold->upper_ctrl_limit = newSt.upper_ctrl_limit;
|
||||
pold->lower_ctrl_limit = newSt.lower_ctrl_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_UCHAR, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_UCHAR, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -696,7 +699,7 @@ int dbChannel_get_count(
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_GR_LONG | DBR_CTRL_LONG |
|
||||
DBR_AL_LONG;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_LONG, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
strncpy(pold->units, newSt.units, MAX_UNITS_SIZE);
|
||||
@@ -710,7 +713,7 @@ int dbChannel_get_count(
|
||||
pold->upper_ctrl_limit = newSt.upper_ctrl_limit;
|
||||
pold->lower_ctrl_limit = newSt.lower_ctrl_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_LONG, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_LONG, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -728,7 +731,7 @@ int dbChannel_get_count(
|
||||
|
||||
options = DBR_STATUS | DBR_UNITS | DBR_PRECISION | DBR_GR_DOUBLE |
|
||||
DBR_CTRL_DOUBLE | DBR_AL_DOUBLE;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->precision = (dbr_short_t) newSt.precision.dp;
|
||||
@@ -743,7 +746,7 @@ int dbChannel_get_count(
|
||||
pold->upper_ctrl_limit = newSt.upper_ctrl_limit;
|
||||
pold->lower_ctrl_limit = newSt.lower_ctrl_limit;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
status = dbChannelGet(chan, DBR_DOUBLE, &pold->value, &options,
|
||||
nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -756,13 +759,13 @@ int dbChannel_get_count(
|
||||
} newSt;
|
||||
|
||||
options = DBR_STATUS;
|
||||
status = dbChannelGetField(chan, DBR_STRING, &newSt, &options, &zero, pfl);
|
||||
status = dbChannelGet(chan, DBR_STRING, &newSt, &options, &zero, pfl);
|
||||
pold->status = newSt.status;
|
||||
pold->severity = newSt.severity;
|
||||
pold->ackt = newSt.ackt;
|
||||
pold->acks = newSt.acks;
|
||||
options = 0;
|
||||
status = dbChannelGetField(chan, DBR_STRING, pold->value,
|
||||
status = dbChannelGet(chan, DBR_STRING, pold->value,
|
||||
&options, nRequest, pfl);
|
||||
}
|
||||
break;
|
||||
@@ -791,8 +794,12 @@ int dbChannel_get_count(
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
status = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
dbScanUnlock(dbChannelRecord(chan));
|
||||
|
||||
if (status) return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -19,7 +19,8 @@
|
||||
#ifndef INCLdb_field_logh
|
||||
#define INCLdb_field_logh
|
||||
|
||||
#include "epicsTime.h"
|
||||
#include <epicsTime.h>
|
||||
#include <epicsTypes.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -32,18 +33,20 @@ extern "C" {
|
||||
* priority task pending on the event queue wakes up). Strings would slow down
|
||||
* events for more reasonable size values. DB fields of native type string
|
||||
* will most likely change infrequently.
|
||||
*
|
||||
*
|
||||
* Strings can be added to the set of types for which updates will be queued
|
||||
* by defining the macro DB_EVENT_LOG_STRINGS. The code in db_add_event()
|
||||
* will adjust automatically, it just compares field sizes.
|
||||
*/
|
||||
union native_value {
|
||||
short dbf_int;
|
||||
short dbf_short;
|
||||
float dbf_float;
|
||||
short dbf_enum;
|
||||
char dbf_char;
|
||||
long dbf_long;
|
||||
double dbf_double;
|
||||
epicsInt8 dbf_char;
|
||||
epicsInt16 dbf_short;
|
||||
epicsEnum16 dbf_enum;
|
||||
epicsInt32 dbf_long;
|
||||
epicsFloat32 dbf_float;
|
||||
epicsFloat64 dbf_double;
|
||||
#ifdef DB_EVENT_LOG_STRINGS
|
||||
char dbf_string[MAX_STRING_SIZE];
|
||||
char dbf_string[MAX_STRING_SIZE];
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ dbTestIoc_SRCS += dbLinkdset.c
|
||||
dbTestIoc_LIBS = dbCore ca Com
|
||||
|
||||
TARGETS += $(COMMON_DIR)/dbTestIoc.dbd
|
||||
DBDDEPENDS_FILES += dbTestIoc.dbd$(DEP)
|
||||
dbTestIoc_DBD += menuGlobal.dbd
|
||||
dbTestIoc_DBD += menuConvert.dbd
|
||||
dbTestIoc_DBD += menuScan.dbd
|
||||
@@ -78,6 +79,7 @@ TESTS += dbCaStatsTest
|
||||
TESTFILES += ../dbCaStatsTest.db
|
||||
|
||||
TARGETS += $(COMMON_DIR)/scanIoTest.dbd
|
||||
DBDDEPENDS_FILES += scanIoTest.dbd$(DEP)
|
||||
scanIoTest_DBD += menuGlobal.dbd
|
||||
scanIoTest_DBD += menuConvert.dbd
|
||||
scanIoTest_DBD += menuScan.dbd
|
||||
@@ -98,6 +100,7 @@ testHarness_SRCS += dbChannelTest.c
|
||||
TESTS += dbChannelTest
|
||||
|
||||
TARGETS += $(COMMON_DIR)/dbChArrTest.dbd
|
||||
DBDDEPENDS_FILES += dbChArrTest.dbd$(DEP)
|
||||
dbChArrTest_DBD += arrRecord.dbd
|
||||
TESTPROD_HOST += dbChArrTest
|
||||
dbChArrTest_SRCS += dbChArrTest.cpp
|
||||
@@ -148,4 +151,3 @@ arrRecord$(DEP): $(COMMON_DIR)/arrRecord.h
|
||||
xRecord$(DEP): $(COMMON_DIR)/xRecord.h
|
||||
dbPutLinkTest$(DEP): $(COMMON_DIR)/xRecord.h
|
||||
scanIoTest$(DEP): $(COMMON_DIR)/yRecord.h
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ MAIN(callbackParallelTest)
|
||||
myPvt *pcbt[NCALLBACKS];
|
||||
epicsTimeStamp start;
|
||||
int noCpus = epicsThreadGetCPUs();
|
||||
int i, j;
|
||||
int i, j, slowups, faults;
|
||||
/* Statistics: min/max/sum/sum^2/n for each priority */
|
||||
double setupError[NUM_CALLBACK_PRIORITIES][5];
|
||||
double timeError[NUM_CALLBACK_PRIORITIES][5];
|
||||
@@ -109,7 +109,7 @@ MAIN(callbackParallelTest)
|
||||
for (j = 0; j < 5; j++)
|
||||
setupError[i][j] = timeError[i][j] = defaultError[j];
|
||||
|
||||
testPlan(NCALLBACKS * 2 + 1);
|
||||
testPlan(4);
|
||||
|
||||
testDiag("Starting %d parallel callback threads", noCpus);
|
||||
|
||||
@@ -138,7 +138,7 @@ MAIN(callbackParallelTest)
|
||||
pcbt[NCALLBACKS-1]->delay = TEST_DELAY(NCALLBACKS) + 1.0;
|
||||
pcbt[NCALLBACKS-1]->pass = 0;
|
||||
|
||||
testOk1(epicsTimeGetCurrent(&start)==epicsTimeOK);
|
||||
testOk(epicsTimeGetCurrent(&start)==epicsTimeOK, "Time-of-day clock Ok");
|
||||
|
||||
for (i = 0; i < NCALLBACKS ; i++) {
|
||||
callbackRequest(&pcbt[i]->cb1);
|
||||
@@ -147,28 +147,43 @@ MAIN(callbackParallelTest)
|
||||
testDiag("Waiting %.02f sec", pcbt[NCALLBACKS-1]->delay);
|
||||
|
||||
epicsEventWait(finished);
|
||||
|
||||
slowups = 0;
|
||||
faults = 0;
|
||||
|
||||
for (i = 0; i < NCALLBACKS ; i++) {
|
||||
if(pcbt[i]->resultFail || pcbt[i]->pass!=2)
|
||||
testFail("pass = %d for delay = %f", pcbt[i]->pass, pcbt[i]->delay);
|
||||
testDiag("callback setup fault #%d: pass = %d for delay = %.02f",
|
||||
++faults, pcbt[i]->pass, pcbt[i]->delay);
|
||||
else {
|
||||
double delta = epicsTimeDiffInSeconds(&pcbt[i]->pass1Time, &start);
|
||||
testOk(fabs(delta) < 0.05, "callback %.02f setup time |%f| < 0.05",
|
||||
|
||||
if (fabs(delta) >= 0.05) {
|
||||
slowups++;
|
||||
testDiag("callback %.02f setup time |%f| >= 0.05 seconds",
|
||||
pcbt[i]->delay, delta);
|
||||
}
|
||||
updateStats(setupError[i%NUM_CALLBACK_PRIORITIES], delta);
|
||||
}
|
||||
}
|
||||
testOk(faults == 0, "%d faults during callback setup", faults);
|
||||
testOk(slowups <= 1, "%d slowups during callback setup", slowups);
|
||||
|
||||
slowups = 0;
|
||||
for (i = 0; i < NCALLBACKS ; i++) {
|
||||
double delta, error;
|
||||
|
||||
if(pcbt[i]->resultFail || pcbt[i]->pass!=2)
|
||||
continue;
|
||||
delta = epicsTimeDiffInSeconds(&pcbt[i]->pass2Time, &pcbt[i]->pass1Time);
|
||||
error = delta - pcbt[i]->delay;
|
||||
testOk(fabs(error) < 0.05, "delay %.02f seconds, callback time error |%.04f| < 0.05",
|
||||
if (fabs(error) >= 0.05) {
|
||||
slowups++;
|
||||
testDiag("delay %.02f seconds, delay error |%.04f| >= 0.05",
|
||||
pcbt[i]->delay, error);
|
||||
}
|
||||
updateStats(timeError[i%NUM_CALLBACK_PRIORITIES], error);
|
||||
}
|
||||
testOk(slowups < 5, "%d slowups during callbacks", slowups);
|
||||
|
||||
testDiag("Setup time statistics");
|
||||
printStats(setupError[0], "LOW");
|
||||
|
||||
@@ -99,7 +99,7 @@ MAIN(callbackTest)
|
||||
{
|
||||
myPvt *pcbt[NCALLBACKS];
|
||||
epicsTimeStamp start;
|
||||
int i, j;
|
||||
int i, j, slowups, faults;
|
||||
/* Statistics: min/max/sum/sum^2/n for each priority */
|
||||
double setupError[NUM_CALLBACK_PRIORITIES][5];
|
||||
double timeError[NUM_CALLBACK_PRIORITIES][5];
|
||||
@@ -109,7 +109,7 @@ MAIN(callbackTest)
|
||||
for (j = 0; j < 5; j++)
|
||||
setupError[i][j] = timeError[i][j] = defaultError[j];
|
||||
|
||||
testPlan(NCALLBACKS * 2 + 1);
|
||||
testPlan(4);
|
||||
|
||||
callbackInit();
|
||||
epicsThreadSleep(1.0);
|
||||
@@ -135,7 +135,7 @@ MAIN(callbackTest)
|
||||
pcbt[NCALLBACKS-1]->delay = TEST_DELAY(NCALLBACKS) + 1.0;
|
||||
pcbt[NCALLBACKS-1]->pass = 0;
|
||||
|
||||
testOk1(epicsTimeGetCurrent(&start)==epicsTimeOK);
|
||||
testOk(epicsTimeGetCurrent(&start)==epicsTimeOK, "Time-of-day clock Ok");
|
||||
|
||||
for (i = 0; i < NCALLBACKS ; i++) {
|
||||
callbackRequest(&pcbt[i]->cb1);
|
||||
@@ -144,28 +144,43 @@ MAIN(callbackTest)
|
||||
testDiag("Waiting %.02f sec", pcbt[NCALLBACKS-1]->delay);
|
||||
|
||||
epicsEventWait(finished);
|
||||
|
||||
slowups = 0;
|
||||
faults = 0;
|
||||
|
||||
for (i = 0; i < NCALLBACKS ; i++) {
|
||||
if(pcbt[i]->resultFail || pcbt[i]->pass!=2)
|
||||
testFail("pass = %d for delay = %f", pcbt[i]->pass, pcbt[i]->delay);
|
||||
testDiag("callback setup fault #%d: pass = %d for delay = %.02f",
|
||||
++faults, pcbt[i]->pass, pcbt[i]->delay);
|
||||
else {
|
||||
double delta = epicsTimeDiffInSeconds(&pcbt[i]->pass1Time, &start);
|
||||
testOk(fabs(delta) < 0.05, "callback %.02f setup time |%f| < 0.05",
|
||||
|
||||
if (fabs(delta) >= 0.05) {
|
||||
slowups++;
|
||||
testDiag("callback %.02f setup time |%f| >= 0.05 seconds",
|
||||
pcbt[i]->delay, delta);
|
||||
}
|
||||
updateStats(setupError[i%NUM_CALLBACK_PRIORITIES], delta);
|
||||
}
|
||||
}
|
||||
testOk(faults == 0, "%d faults during callback setup", faults);
|
||||
testOk(slowups <= 1, "%d slowups during callback setup", slowups);
|
||||
|
||||
slowups = 0;
|
||||
for (i = 0; i < NCALLBACKS ; i++) {
|
||||
double delta, error;
|
||||
|
||||
if(pcbt[i]->resultFail || pcbt[i]->pass!=2)
|
||||
continue;
|
||||
delta = epicsTimeDiffInSeconds(&pcbt[i]->pass2Time, &pcbt[i]->pass1Time);
|
||||
error = delta - pcbt[i]->delay;
|
||||
testOk(fabs(error) < 0.05, "delay %.02f seconds, callback time error |%.04f| < 0.05",
|
||||
if (fabs(error) >= 0.05) {
|
||||
slowups++;
|
||||
testDiag("delay %.02f seconds, delay error |%.04f| >= 0.05",
|
||||
pcbt[i]->delay, error);
|
||||
}
|
||||
updateStats(timeError[i%NUM_CALLBACK_PRIORITIES], error);
|
||||
}
|
||||
testOk(slowups < 5, "%d slowups during callbacks", slowups);
|
||||
|
||||
testDiag("Setup time statistics");
|
||||
printStats(setupError[0], "LOW");
|
||||
|
||||
@@ -165,8 +165,9 @@ typedef struct dbBase {
|
||||
ELLLIST functionList;
|
||||
ELLLIST variableList;
|
||||
ELLLIST bptList;
|
||||
ELLLIST filterList;
|
||||
void *pathPvt;
|
||||
ELLLIST filterList;
|
||||
ELLLIST guiGroupList;
|
||||
void *pathPvt;
|
||||
struct dbPvd *ppvd;
|
||||
struct gphPvt *pgpHash;
|
||||
short ignoreMissingMenus;
|
||||
|
||||
@@ -34,7 +34,6 @@
|
||||
#include "dbStaticLib.h"
|
||||
#include "dbStaticPvt.h"
|
||||
#include "epicsExport.h"
|
||||
#include "guigroup.h"
|
||||
#include "link.h"
|
||||
#include "special.h"
|
||||
|
||||
@@ -71,6 +70,7 @@ static void dbRecordtypeEmpty(void);
|
||||
static void dbRecordtypeBody(void);
|
||||
static void dbRecordtypeFieldHead(char *name,char *type);
|
||||
static void dbRecordtypeFieldItem(char *name,char *value);
|
||||
static short findOrAddGuiGroup(const char *name);
|
||||
|
||||
static void dbDevice(char *recordtype,char *linktype,
|
||||
char *dsetname,char *choicestring);
|
||||
@@ -495,7 +495,23 @@ static void dbRecordtypeFieldHead(char *name,char *type)
|
||||
yyerrorAbort("Illegal Field Type");
|
||||
pdbFldDes->field_type = i;
|
||||
}
|
||||
|
||||
|
||||
static short findOrAddGuiGroup(const char *name)
|
||||
{
|
||||
dbGuiGroup *pdbGuiGroup;
|
||||
GPHENTRY *pgphentry;
|
||||
pgphentry = gphFind(pdbbase->pgpHash, name, &pdbbase->guiGroupList);
|
||||
if (!pgphentry) {
|
||||
pdbGuiGroup = dbCalloc(1,sizeof(dbGuiGroup));
|
||||
pdbGuiGroup->name = epicsStrDup(name);
|
||||
ellAdd(&pdbbase->guiGroupList, &pdbGuiGroup->node);
|
||||
pdbGuiGroup->key = ellCount(&pdbbase->guiGroupList);
|
||||
pgphentry = gphAdd(pdbbase->pgpHash, pdbGuiGroup->name, &pdbbase->guiGroupList);
|
||||
pgphentry->userPvt = pdbGuiGroup;
|
||||
}
|
||||
return ((dbGuiGroup *)pgphentry->userPvt)->key;
|
||||
}
|
||||
|
||||
static void dbRecordtypeFieldItem(char *name,char *value)
|
||||
{
|
||||
dbFldDes *pdbFldDes;
|
||||
@@ -517,14 +533,7 @@ static void dbRecordtypeFieldItem(char *name,char *value)
|
||||
return;
|
||||
}
|
||||
if(strcmp(name,"promptgroup")==0) {
|
||||
int i;
|
||||
for(i=0; i<GUI_NTYPES; i++) {
|
||||
if(strcmp(value,pamapguiGroup[i].strvalue)==0) {
|
||||
pdbFldDes->promptgroup = pamapguiGroup[i].value;
|
||||
return;
|
||||
}
|
||||
}
|
||||
yyerror("Illegal promptgroup. See guigroup.h for legal values");
|
||||
pdbFldDes->promptgroup = findOrAddGuiGroup(value);
|
||||
return;
|
||||
}
|
||||
if(strcmp(name,"prompt")==0) {
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#include "postfix.h"
|
||||
|
||||
#define DBFLDTYPES_GBLSOURCE
|
||||
#define GUIGROUPS_GBLSOURCE
|
||||
#define SPECIAL_GBLSOURCE
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
@@ -41,7 +40,6 @@
|
||||
#include "dbStaticPvt.h"
|
||||
#include "devSup.h"
|
||||
#include "drvSup.h"
|
||||
#include "guigroup.h"
|
||||
#include "link.h"
|
||||
#include "special.h"
|
||||
|
||||
@@ -417,6 +415,7 @@ dbBase * dbAllocBase(void)
|
||||
ellInit(&pdbbase->variableList);
|
||||
ellInit(&pdbbase->bptList);
|
||||
ellInit(&pdbbase->filterList);
|
||||
ellInit(&pdbbase->guiGroupList);
|
||||
gphInitPvt(&pdbbase->pgpHash,256);
|
||||
dbPvdInitPvt(pdbbase);
|
||||
return (pdbbase);
|
||||
@@ -442,8 +441,10 @@ void dbFreeBase(dbBase *pdbbase)
|
||||
drvSup *pdrvSupNext;
|
||||
brkTable *pbrkTable;
|
||||
brkTable *pbrkTableNext;
|
||||
chFilterPlugin *pfilt;
|
||||
chFilterPlugin *pfiltNext;
|
||||
chFilterPlugin *pfilt;
|
||||
chFilterPlugin *pfiltNext;
|
||||
dbGuiGroup *pguiGroup;
|
||||
dbGuiGroup *pguiGroupNext;
|
||||
int i;
|
||||
DBENTRY dbentry;
|
||||
|
||||
@@ -584,6 +585,15 @@ void dbFreeBase(dbBase *pdbbase)
|
||||
free(pfilt);
|
||||
pfilt = pfiltNext;
|
||||
}
|
||||
pguiGroup = (dbGuiGroup *)ellFirst(&pdbbase->guiGroupList);
|
||||
while (pguiGroup) {
|
||||
pguiGroupNext = (dbGuiGroup *)ellNext(&pguiGroup->node);
|
||||
gphDelete(pdbbase->pgpHash, pguiGroup->name, &pdbbase->guiGroupList);
|
||||
ellDelete(&pdbbase->guiGroupList, &pguiGroup->node);
|
||||
free(pguiGroup->name);
|
||||
free((void *)pguiGroup);
|
||||
pguiGroup = pguiGroupNext;
|
||||
}
|
||||
gphFreeMem(pdbbase->pgpHash);
|
||||
dbPvdFreeMem(pdbbase);
|
||||
dbFreePath(pdbbase);
|
||||
@@ -738,6 +748,31 @@ static long dbAddOnePath (DBBASE *pdbbase, const char *path, unsigned length)
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *dbGetPromptGroupNameFromKey(DBBASE *pdbbase, const short key)
|
||||
{
|
||||
dbGuiGroup *pdbGuiGroup;
|
||||
|
||||
if (!pdbbase) return NULL;
|
||||
for (pdbGuiGroup = (dbGuiGroup *)ellFirst(&pdbbase->guiGroupList);
|
||||
pdbGuiGroup; pdbGuiGroup = (dbGuiGroup *)ellNext(&pdbGuiGroup->node)) {
|
||||
if (pdbGuiGroup->key == key) return pdbGuiGroup->name;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
short dbGetPromptGroupKeyFromName(DBBASE *pdbbase, const char *name)
|
||||
{
|
||||
GPHENTRY *pgphentry;
|
||||
|
||||
if (!pdbbase) return 0;
|
||||
pgphentry = gphFind(pdbbase->pgpHash, name, &pdbbase->guiGroupList);
|
||||
if (!pgphentry) {
|
||||
return 0;
|
||||
} else {
|
||||
return ((dbGuiGroup*)pgphentry->userPvt)->key;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
long dbWriteRecord(DBBASE *ppdbbase,const char *filename,
|
||||
const char *precordTypename,int level)
|
||||
@@ -937,16 +972,11 @@ long dbWriteRecordTypeFP(
|
||||
fprintf(fp,"\t\tprompt(\"%s\")\n",pdbFldDes->prompt);
|
||||
if(pdbFldDes->initial)
|
||||
fprintf(fp,"\t\tinitial(\"%s\")\n",pdbFldDes->initial);
|
||||
if(pdbFldDes->promptgroup) {
|
||||
for(j=0; j<GUI_NTYPES; j++) {
|
||||
if(pamapguiGroup[j].value == pdbFldDes->promptgroup) {
|
||||
fprintf(fp,"\t\tpromptgroup(%s)\n",
|
||||
pamapguiGroup[j].strvalue);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(pdbFldDes->special) {
|
||||
if (pdbFldDes->promptgroup) {
|
||||
fprintf(fp,"\t\tpromptgroup(\"%s\")\n",
|
||||
dbGetPromptGroupNameFromKey(pdbbase, pdbFldDes->promptgroup));
|
||||
}
|
||||
if(pdbFldDes->special) {
|
||||
if(pdbFldDes->special >= SPC_NTYPES) {
|
||||
fprintf(fp,"\t\tspecial(%d)\n",pdbFldDes->special);
|
||||
} else for(j=0; j<SPC_NTYPES; j++) {
|
||||
@@ -2051,7 +2081,10 @@ long dbPutString(DBENTRY *pdbentry,const char *pstring)
|
||||
switch (pflddes->field_type) {
|
||||
case DBF_STRING:
|
||||
if(!pfield) return(S_dbLib_fieldNotFound);
|
||||
strncpy((char *)pfield, pstring,pflddes->size);
|
||||
if(strlen(pstring) >= (size_t)pflddes->size) return S_dbLib_strLen;
|
||||
strncpy((char *)pfield, pstring, pflddes->size-1);
|
||||
((char *)pfield)[pflddes->size-1] = 0;
|
||||
|
||||
if((pflddes->special == SPC_CALC) && !stringHasMacro) {
|
||||
char rpcl[RPCL_LEN];
|
||||
short err;
|
||||
@@ -2062,7 +2095,6 @@ long dbPutString(DBENTRY *pdbentry,const char *pstring)
|
||||
calcErrorStr(err), pstring);
|
||||
}
|
||||
}
|
||||
if((short)strlen(pstring) >= pflddes->size) status = S_dbLib_strLen;
|
||||
break;
|
||||
|
||||
case DBF_CHAR:
|
||||
@@ -3181,14 +3213,9 @@ void dbDumpField(
|
||||
if(!pdbFldDes->promptgroup) {
|
||||
printf("\t promptgroup: %d\n",pdbFldDes->promptgroup);
|
||||
} else {
|
||||
for(j=0; j<GUI_NTYPES; j++) {
|
||||
if(pamapguiGroup[j].value == pdbFldDes->promptgroup) {
|
||||
printf("\t promptgroup: %s\n",
|
||||
pamapguiGroup[j].strvalue);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("\t promptgroup: %s\n",
|
||||
dbGetPromptGroupNameFromKey(pdbbase, pdbFldDes->promptgroup));
|
||||
}
|
||||
printf("\t interest: %hd\n", pdbFldDes->interest);
|
||||
printf("\t as_level: %d\n",pdbFldDes->as_level);
|
||||
printf("\t initial: %s\n",
|
||||
|
||||
@@ -81,6 +81,10 @@ epicsShareFunc long dbReadDatabaseFP(DBBASE **ppdbbase,
|
||||
FILE *fp, const char *path, const char *substitutions);
|
||||
epicsShareFunc long dbPath(DBBASE *pdbbase, const char *path);
|
||||
epicsShareFunc long dbAddPath(DBBASE *pdbbase, const char *path);
|
||||
epicsShareFunc char * dbGetPromptGroupNameFromKey(DBBASE *pdbbase,
|
||||
const short key);
|
||||
epicsShareFunc short dbGetPromptGroupKeyFromName(DBBASE *pdbbase,
|
||||
const char *name);
|
||||
epicsShareFunc long dbWriteRecord(DBBASE *ppdbbase,
|
||||
const char *filename, const char *precordTypename, int level);
|
||||
epicsShareFunc long dbWriteRecordFP(DBBASE *ppdbbase,
|
||||
|
||||
@@ -42,6 +42,13 @@ typedef struct dbPathNode {
|
||||
char *directory;
|
||||
} dbPathNode;
|
||||
|
||||
/* Element of the global gui group list */
|
||||
typedef struct dbGuiGroup {
|
||||
ELLNODE node;
|
||||
short key;
|
||||
char *name;
|
||||
} dbGuiGroup;
|
||||
|
||||
/*The following are in dbPvdLib.c*/
|
||||
/*directory*/
|
||||
typedef struct{
|
||||
|
||||
@@ -16,68 +16,11 @@
|
||||
#ifndef __gui_group_h__
|
||||
#define __gui_group_h__
|
||||
|
||||
#define GUI_COMMON 1
|
||||
#define GUI_ALARMS 2
|
||||
#define GUI_BITS1 3
|
||||
#define GUI_BITS2 4
|
||||
#define GUI_CALC 5
|
||||
#define GUI_CLOCK 6
|
||||
#define GUI_COMPRESS 7
|
||||
#define GUI_CONVERT 8
|
||||
#define GUI_DISPLAY 9
|
||||
#define GUI_HIST 10
|
||||
#define GUI_INPUTS 11
|
||||
#define GUI_LINKS 12
|
||||
#define GUI_MBB 13
|
||||
#define GUI_MOTOR 14
|
||||
#define GUI_OUTPUT 15
|
||||
#define GUI_PID 16
|
||||
#define GUI_PULSE 17
|
||||
#define GUI_SELECT 18
|
||||
#define GUI_SEQ1 19
|
||||
#define GUI_SEQ2 20
|
||||
#define GUI_SEQ3 21
|
||||
#define GUI_SUB 22
|
||||
#define GUI_TIMER 23
|
||||
#define GUI_WAVE 24
|
||||
#define GUI_SCAN 25
|
||||
#define GUI_NTYPES 25
|
||||
|
||||
typedef struct mapguiGroup{
|
||||
char *strvalue;
|
||||
int value;
|
||||
}mapguiGroup;
|
||||
|
||||
#ifndef GUIGROUPS_GBLSOURCE
|
||||
extern mapguiGroup pamapguiGroup[];
|
||||
#else
|
||||
mapguiGroup pamapguiGroup[GUI_NTYPES] = {
|
||||
{"GUI_COMMON",GUI_COMMON},
|
||||
{"GUI_ALARMS",GUI_ALARMS},
|
||||
{"GUI_BITS1",GUI_BITS1},
|
||||
{"GUI_BITS2",GUI_BITS2},
|
||||
{"GUI_CALC",GUI_CALC},
|
||||
{"GUI_CLOCK",GUI_CLOCK},
|
||||
{"GUI_COMPRESS",GUI_COMPRESS},
|
||||
{"GUI_CONVERT",GUI_CONVERT},
|
||||
{"GUI_DISPLAY",GUI_DISPLAY},
|
||||
{"GUI_HIST",GUI_HIST},
|
||||
{"GUI_INPUTS",GUI_INPUTS},
|
||||
{"GUI_LINKS",GUI_LINKS},
|
||||
{"GUI_MBB",GUI_MBB},
|
||||
{"GUI_MOTOR",GUI_MOTOR},
|
||||
{"GUI_OUTPUT",GUI_OUTPUT},
|
||||
{"GUI_PID",GUI_PID},
|
||||
{"GUI_PULSE",GUI_PULSE},
|
||||
{"GUI_SELECT",GUI_SELECT},
|
||||
{"GUI_SEQ1",GUI_SEQ1},
|
||||
{"GUI_SEQ2",GUI_SEQ2},
|
||||
{"GUI_SEQ3",GUI_SEQ3},
|
||||
{"GUI_SUB",GUI_SUB},
|
||||
{"GUI_TIMER",GUI_TIMER},
|
||||
{"GUI_WAVE",GUI_WAVE},
|
||||
{"GUI_SCAN",GUI_SCAN}
|
||||
};
|
||||
#endif /*GUIGROUPS_GBLSOURCE*/
|
||||
#error As of Base 3.15.4, the promptgroup implementation has changed. \
|
||||
This header file (guigroup.h) is invalid and will be removed shortly. \
|
||||
Instead, you should include dbStaticLib.h, parse the DBD, \
|
||||
and use dbGetPromptGroupNameFromKey() and dbGetPromptGroupKeyFromName() \
|
||||
that have been added to dbStaticLib. \
|
||||
More details in the 3.15.4 release notes and the AppDev Guide.
|
||||
|
||||
#endif /*__gui_group_h__*/
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
#include "envDefs.h"
|
||||
#include "epicsVersion.h"
|
||||
#include "iocsh.h"
|
||||
#include "libComRegister.h"
|
||||
|
||||
@@ -21,10 +23,29 @@
|
||||
#include "registryIocRegister.h"
|
||||
#include "rsrvIocRegister.h"
|
||||
|
||||
#define quote(v) #v
|
||||
#define str(v) quote(v)
|
||||
|
||||
void iocshRegisterCommon(void)
|
||||
{
|
||||
const char *targetArch = envGetConfigParamPtr(&EPICS_BUILD_TARGET_ARCH);
|
||||
iocshPpdbbase = &pdbbase;
|
||||
|
||||
/* This uses a config param so the user can override it */
|
||||
if (targetArch) {
|
||||
epicsEnvSet("ARCH", targetArch);
|
||||
}
|
||||
|
||||
/* Base build version variables */
|
||||
epicsEnvSet("EPICS_VERSION_MAJOR", str(EPICS_VERSION));
|
||||
epicsEnvSet("EPICS_VERSION_MIDDLE", str(EPICS_REVISION));
|
||||
epicsEnvSet("EPICS_VERSION_MINOR", str(EPICS_MODIFICATION));
|
||||
epicsEnvSet("EPICS_VERSION_PATCH", str(EPICS_PATCH_LEVEL));
|
||||
epicsEnvSet("EPICS_VERSION_SNAPSHOT", EPICS_DEV_SNAPSHOT);
|
||||
epicsEnvSet("EPICS_VERSION_SITE", EPICS_SITE_VERSION);
|
||||
epicsEnvSet("EPICS_VERSION_SHORT", EPICS_VERSION_SHORT);
|
||||
epicsEnvSet("EPICS_VERSION_FULL", EPICS_VERSION_FULL);
|
||||
|
||||
dbStaticIocRegister();
|
||||
registryIocRegister();
|
||||
dbIocRegister();
|
||||
|
||||
@@ -1112,7 +1112,7 @@ unsigned cid
|
||||
* casAccessRightsCB()
|
||||
*
|
||||
* If access right state changes then inform the client.
|
||||
*
|
||||
* asLock is held
|
||||
*/
|
||||
static void casAccessRightsCB(ASCLIENTPVT ascpvt, asClientStatus type)
|
||||
{
|
||||
@@ -1568,6 +1568,9 @@ static void sendAllUpdateAS ( struct client *client )
|
||||
else if ( pciu->state == rsrvCS_inServiceUpdatePendAR ) {
|
||||
access_rights_reply ( pciu );
|
||||
}
|
||||
else if ( pciu->state == rsrvCS_shutdown ) {
|
||||
/* no-op */
|
||||
}
|
||||
else {
|
||||
errlogPrintf (
|
||||
"%s at %d: corrupt channel state detected durring AR update\n",
|
||||
@@ -2047,10 +2050,15 @@ static int clear_channel_reply ( caHdrLargeArray *mp,
|
||||
if ( pciu->state == rsrvCS_inService ||
|
||||
pciu->state == rsrvCS_pendConnectResp ) {
|
||||
ellDelete ( &client->chanList, &pciu->node );
|
||||
pciu->state = rsrvCS_shutdown;
|
||||
}
|
||||
else if ( pciu->state == rsrvCS_inServiceUpdatePendAR ||
|
||||
pciu->state == rsrvCS_pendConnectRespUpdatePendAR ) {
|
||||
ellDelete ( &client->chanPendingUpdateARList, &pciu->node );
|
||||
pciu->state = rsrvCS_shutdown;
|
||||
}
|
||||
else if ( pciu->state == rsrvCS_shutdown ) {
|
||||
/* no-op */
|
||||
}
|
||||
else {
|
||||
epicsMutexUnlock( client->chanListLock );
|
||||
|
||||
@@ -1134,6 +1134,7 @@ static void destroyAllChannels (
|
||||
|
||||
epicsMutexMustLock ( client->chanListLock );
|
||||
pciu = (struct channel_in_use *) ellGet ( pList );
|
||||
if(pciu) pciu->state = rsrvCS_shutdown;
|
||||
epicsMutexUnlock ( client->chanListLock );
|
||||
|
||||
if ( ! pciu ) {
|
||||
|
||||
@@ -99,12 +99,25 @@ typedef struct client {
|
||||
char disconnect; /* disconnect detected */
|
||||
} client;
|
||||
|
||||
/* Channel state shows which struct client list a
|
||||
* channel_in_us::node is in.
|
||||
*
|
||||
* client::chanList
|
||||
* rsrvCS_pendConnectResp, rsrvCS_inService
|
||||
* client::chanPendingUpdateARList
|
||||
* rsrvCS_pendConnectRespUpdatePendAR, rsrvCS_inServiceUpdatePendAR
|
||||
* Not in any list
|
||||
* rsrvCS_shutdown
|
||||
*
|
||||
* rsrvCS_invalid is not used
|
||||
*/
|
||||
enum rsrvChanState {
|
||||
rsrvCS_invalid,
|
||||
rsrvCS_pendConnectResp,
|
||||
rsrvCS_inService,
|
||||
rsrvCS_pendConnectRespUpdatePendAR,
|
||||
rsrvCS_inServiceUpdatePendAR
|
||||
rsrvCS_inServiceUpdatePendAR,
|
||||
rsrvCS_shutdown
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -45,6 +45,11 @@ Com_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
|
||||
|
||||
Com_RCS = Com.rc
|
||||
|
||||
ifeq ($(T_A),$(EPICS_HOST_ARCH))
|
||||
# Antelope & flex are needed to finish libCom
|
||||
DELAY_INSTALL_LIBS = YES
|
||||
endif
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
include $(LIBCOM)/as/RULES
|
||||
|
||||
@@ -529,6 +529,12 @@ Init (rtems_task_argument ignored)
|
||||
putenv ("TERM=xterm");
|
||||
putenv ("IOCSH_HISTSIZE=20");
|
||||
|
||||
/*
|
||||
* Display some OS information
|
||||
*/
|
||||
printf("\n***** RTEMS Version: %s *****\n",
|
||||
rtems_get_version_string());
|
||||
|
||||
/*
|
||||
* Start network
|
||||
*/
|
||||
|
||||
@@ -155,7 +155,7 @@ epicsShareFunc long
|
||||
break;
|
||||
|
||||
case ABS_VAL:
|
||||
if (*ptop < 0.0) *ptop = - *ptop;
|
||||
*ptop = fabs(*ptop);
|
||||
break;
|
||||
|
||||
case EXP:
|
||||
|
||||
6
src/libCom/env/RULES
vendored
6
src/libCom/env/RULES
vendored
@@ -8,5 +8,7 @@
|
||||
# This is a Makefile fragment, see src/libCom/Makefile.
|
||||
|
||||
envData.c: $(LIBCOM)/env/envDefs.h $(LIBCOM)/env/bldEnvData.pl \
|
||||
$(CONFIG)/CONFIG_ENV $(CONFIG)/CONFIG_SITE_ENV
|
||||
$(PERL) $(LIBCOM)/env/bldEnvData.pl $(INSTALL_QUIETLY) $(CONFIG)
|
||||
$(CONFIG)/CONFIG_ENV $(CONFIG)/CONFIG_SITE_ENV \
|
||||
$(wildcard $(CONFIG)/os/CONFIG_SITE_ENV.$(T_A))
|
||||
$(PERL) $(LIBCOM)/env/bldEnvData.pl $(INSTALL_QUIETLY) -t $(T_A) \
|
||||
-c $(CMPLR_CLASS) -s $(OS_CLASS) $(CONFIG)
|
||||
|
||||
57
src/libCom/env/bldEnvData.pl
vendored
57
src/libCom/env/bldEnvData.pl
vendored
@@ -26,13 +26,13 @@ use Text::Wrap;
|
||||
|
||||
my $tool = basename($0);
|
||||
|
||||
our ($opt_h, $opt_q);
|
||||
our ($opt_h, $opt_q, $opt_t, $opt_s, $opt_c);
|
||||
our $opt_o = 'envData.c';
|
||||
|
||||
$Getopt::Std::OUTPUT_HELP_VERSION = 1;
|
||||
$Text::Wrap::columns = 75;
|
||||
|
||||
&HELP_MESSAGE unless getopts('ho:q') && @ARGV == 1;
|
||||
&HELP_MESSAGE unless getopts('ho:qt:s:c:') && @ARGV == 1;
|
||||
&HELP_MESSAGE if $opt_h;
|
||||
|
||||
my $config = AbsPath(shift);
|
||||
@@ -52,16 +52,31 @@ while (<SRC>) {
|
||||
}
|
||||
close SRC;
|
||||
|
||||
# Read the values from the CONFIG_ENV and CONFIG_SITE_ENV files
|
||||
# A list of configure/CONFIG_* files to read
|
||||
#
|
||||
my $config_env = "$config/CONFIG_ENV";
|
||||
my $config_site_env = "$config/CONFIG_SITE_ENV";
|
||||
my @configs = ("$config/CONFIG_ENV", "$config/CONFIG_SITE_ENV");
|
||||
|
||||
my %values;
|
||||
readReleaseFiles($config_env, \%values);
|
||||
readReleaseFiles($config_site_env, \%values);
|
||||
if ($opt_t) {
|
||||
my $config_arch_env = "$config/os/CONFIG_SITE_ENV.$opt_t";
|
||||
push @configs, $config_arch_env
|
||||
if -f $config_arch_env;
|
||||
}
|
||||
|
||||
# Warn about any vars with no value
|
||||
my @sources = ($env_defs, @configs);
|
||||
|
||||
# Get values from the config files
|
||||
#
|
||||
my (%values, @dummy);
|
||||
readRelease($_, \%values, \@dummy) foreach @configs;
|
||||
expandRelease(\%values);
|
||||
|
||||
# Get values from the command-line
|
||||
#
|
||||
$values{EPICS_BUILD_COMPILER_CLASS} = $opt_c if $opt_c;
|
||||
$values{EPICS_BUILD_OS_CLASS} = $opt_s if $opt_s;
|
||||
$values{EPICS_BUILD_TARGET_ARCH} = $opt_t if $opt_t;
|
||||
|
||||
# Warn about vars with no configured value
|
||||
#
|
||||
my @undefs = grep {!exists $values{$_}} @vars;
|
||||
warn "$tool: No value given for $_\n" foreach @undefs;
|
||||
@@ -73,13 +88,13 @@ print "Generating $opt_o\n" unless $opt_q;
|
||||
open OUT, '>', $opt_o
|
||||
or die "$tool: Cannot create $opt_o: $!\n";
|
||||
|
||||
my $sources = join "\n", map {" * $_"} @sources;
|
||||
|
||||
print OUT << "END";
|
||||
/* Generated file $opt_o
|
||||
*
|
||||
* Created from
|
||||
* $env_defs
|
||||
* $config_env
|
||||
* $config_site_env
|
||||
$sources
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
@@ -88,18 +103,23 @@ print OUT << "END";
|
||||
|
||||
END
|
||||
|
||||
# Define all parameters, giving variable name and default value
|
||||
# Define a default value for each named parameter
|
||||
#
|
||||
foreach my $var (@vars) {
|
||||
my $default = $values{$var} || '';
|
||||
$default =~ s/^"//;
|
||||
$default =~ s/"$//;
|
||||
my $default = $values{$var};
|
||||
if (defined $default) {
|
||||
$default =~ s/^"//;
|
||||
$default =~ s/"$//;
|
||||
}
|
||||
else {
|
||||
$default = '';
|
||||
}
|
||||
|
||||
print OUT "epicsShareDef const ENV_PARAM $var =\n",
|
||||
" {\"$var\", \"$default\"};\n";
|
||||
}
|
||||
|
||||
# Now create a list of all those parameters
|
||||
# Also provide a list of all defined parameters
|
||||
#
|
||||
print OUT "\n",
|
||||
"epicsShareDef const ENV_PARAM* env_param_list[] = {\n",
|
||||
@@ -112,6 +132,9 @@ sub HELP_MESSAGE {
|
||||
" -h Help: Print this message\n",
|
||||
" -q Quiet: Only print errors\n",
|
||||
" -o file Output filename, default is $opt_o\n",
|
||||
" -t arch Target architecture \$(T_A) name\n",
|
||||
" -s os Operating system \$(OS_CLASS)\n",
|
||||
" -c comp Compiler class \$(CMPLR_CLASS)\n",
|
||||
"\n";
|
||||
|
||||
exit 1;
|
||||
|
||||
5
src/libCom/env/envDefs.h
vendored
5
src/libCom/env/envDefs.h
vendored
@@ -40,7 +40,7 @@ typedef struct envParam {
|
||||
} ENV_PARAM;
|
||||
|
||||
/*
|
||||
* bldEnvData looks for "epicsShareExtern const ENV_PARAM"
|
||||
* bldEnvData.pl looks for "epicsShareExtern const ENV_PARAM <name>;"
|
||||
*/
|
||||
epicsShareExtern const ENV_PARAM EPICS_CA_ADDR_LIST;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CA_CONN_TMO;
|
||||
@@ -58,6 +58,9 @@ epicsShareExtern const ENV_PARAM EPICS_CAS_SERVER_PORT;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CA_BEACON_PERIOD; /* deprecated */
|
||||
epicsShareExtern const ENV_PARAM EPICS_CAS_BEACON_PERIOD;
|
||||
epicsShareExtern const ENV_PARAM EPICS_CAS_BEACON_PORT;
|
||||
epicsShareExtern const ENV_PARAM EPICS_BUILD_COMPILER_CLASS;
|
||||
epicsShareExtern const ENV_PARAM EPICS_BUILD_OS_CLASS;
|
||||
epicsShareExtern const ENV_PARAM EPICS_BUILD_TARGET_ARCH;
|
||||
epicsShareExtern const ENV_PARAM EPICS_TIMEZONE;
|
||||
epicsShareExtern const ENV_PARAM EPICS_TS_NTP_INET;
|
||||
epicsShareExtern const ENV_PARAM EPICS_IOC_LOG_PORT;
|
||||
|
||||
@@ -70,12 +70,12 @@ epicsShareFunc int
|
||||
/* These macros return 1 if successful, 0 on failure.
|
||||
* This is analagous to the return value from sscanf()
|
||||
*/
|
||||
#define epicsScanLong(str, to, base) !epicsParseLong(str, to, base, NULL)
|
||||
#define epicsScanULong(str, to, base) !epicsParseULong(str, to, base, NULL)
|
||||
#define epicsScanLLong(str, to, base) !epicsParseLLong(str, to, base, NULL)
|
||||
#define epicsScanULLong(str, to, base) !epicsParseULLong(str, to, base, NULL)
|
||||
#define epicsScanFloat(str, to) !epicsParseFloat(str, to, NULL)
|
||||
#define epicsScanDouble(str, to) !epicsParseDouble(str, to, NULL)
|
||||
#define epicsScanLong(str, to, base) (!epicsParseLong(str, to, base, NULL))
|
||||
#define epicsScanULong(str, to, base) (!epicsParseULong(str, to, base, NULL))
|
||||
#define epicsScanLLong(str, to, base) (!epicsParseLLong(str, to, base, NULL))
|
||||
#define epicsScanULLong(str, to, base) (!epicsParseULLong(str, to, base, NULL))
|
||||
#define epicsScanFloat(str, to) (!epicsParseFloat(str, to, NULL))
|
||||
#define epicsScanDouble(str, to) (!epicsParseDouble(str, to, NULL))
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
@@ -265,12 +265,16 @@ void ipAddrToAsciiEnginePrivate::run ()
|
||||
continue;
|
||||
}
|
||||
|
||||
// fix for lp:1580623
|
||||
// a destructing cac sets pCurrent to NULL, so
|
||||
// make local copy to avoid race when releasing the guard
|
||||
ipAddrToAsciiTransactionPrivate *pCur = this->pCurrent;
|
||||
this->callbackInProgress = true;
|
||||
|
||||
{
|
||||
epicsGuardRelease < epicsMutex > unguard ( guard );
|
||||
// dont call callback with lock applied
|
||||
this->pCurrent->pCB->transactionComplete ( this->nameTmp );
|
||||
pCur->pCB->transactionComplete ( this->nameTmp );
|
||||
}
|
||||
|
||||
this->callbackInProgress = false;
|
||||
|
||||
@@ -47,8 +47,11 @@ map {
|
||||
die "$tool: Variable missing from $infile" unless defined $_;
|
||||
} $ver, $rev, $mod, $patch, $snapshot, $commit_date;
|
||||
|
||||
$commit_date =~ s/^\$\$Date$\$$/\1/;
|
||||
|
||||
my $ver_str = "$ver.$rev.$mod";
|
||||
$ver_str .= ".$patch" if $patch > 0;
|
||||
my $ver_short = $ver_str;
|
||||
$ver_str .= $snapshot if $snapshot ne '';
|
||||
$ver_str .= "-$opt_v" if $opt_v;
|
||||
|
||||
@@ -71,10 +74,15 @@ print $OUT <<"END";
|
||||
#define EPICS_PATCH_LEVEL $patch
|
||||
#define EPICS_DEV_SNAPSHOT "$snapshot"
|
||||
#define EPICS_SITE_VERSION "$opt_v"
|
||||
|
||||
#define EPICS_VERSION_SHORT "$ver_short"
|
||||
#define EPICS_VERSION_FULL "$ver_str"
|
||||
#define EPICS_VERSION_STRING "EPICS $ver_str"
|
||||
#define epicsReleaseVersion "EPICS R$ver_str $commit_date"
|
||||
|
||||
#define VERSION_INT(V,R,M,P) ( ((V)<<24) | ((R)<<16) | ((M)<<8) | (P))
|
||||
#ifndef VERSION_INT
|
||||
# define VERSION_INT(V,R,M,P) ( ((V)<<24) | ((R)<<16) | ((M)<<8) | (P))
|
||||
#endif
|
||||
#define EPICS_VERSION_INT VERSION_INT($ver, $rev, $mod, $patch)
|
||||
|
||||
#endif /* INC_${obase}_H */
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* Copyright (c) 2002 The Regents of the University of California, as
|
||||
* Operator of Los Alamos National Laboratory.
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
//
|
||||
// $Revision-Id$
|
||||
@@ -37,22 +37,22 @@ epicsThreadRunable::~epicsThreadRunable () {}
|
||||
void epicsThreadRunable::run () {}
|
||||
void epicsThreadRunable::show ( unsigned int ) const {}
|
||||
|
||||
class epicsThread :: unableToCreateThread :
|
||||
class epicsThread :: unableToCreateThread :
|
||||
public std :: exception {
|
||||
public:
|
||||
const char * what () const throw ();
|
||||
};
|
||||
|
||||
const char * epicsThread ::
|
||||
const char * epicsThread ::
|
||||
unableToCreateThread :: what () const throw ()
|
||||
{
|
||||
return "unable to create thread";
|
||||
}
|
||||
|
||||
void epicsThread :: printLastChanceExceptionMessage (
|
||||
void epicsThread :: printLastChanceExceptionMessage (
|
||||
const char * pExceptionTypeName,
|
||||
const char * pExceptionContext )
|
||||
{
|
||||
{
|
||||
char date[64];
|
||||
try {
|
||||
epicsTime cur = epicsTime :: getCurrent ();
|
||||
@@ -63,51 +63,52 @@ void epicsThread :: printLastChanceExceptionMessage (
|
||||
}
|
||||
char name [128];
|
||||
epicsThreadGetName ( this->id, name, sizeof ( name ) );
|
||||
errlogPrintf (
|
||||
errlogPrintf (
|
||||
"epicsThread: Unexpected C++ exception \"%s\" "
|
||||
"with type \"%s\" in thread \"%s\" at %s\n",
|
||||
pExceptionContext, pExceptionTypeName, name, date );
|
||||
errlogFlush ();
|
||||
// this should behave as the C++ implementation intends when an
|
||||
// exception isnt handled. If users dont like this behavior, they
|
||||
// can install an application specific unexpected handler.
|
||||
// This behavior matches the C++ implementation when an exception
|
||||
// isn't handled by the thread code. Users can install their own
|
||||
// application-specific unexpected handler if preferred.
|
||||
std::unexpected ();
|
||||
}
|
||||
|
||||
extern "C" void epicsThreadCallEntryPoint ( void * pPvt )
|
||||
{
|
||||
epicsThread * pThread =
|
||||
epicsThread * pThread =
|
||||
static_cast <epicsThread *> ( pPvt );
|
||||
bool waitRelease = false;
|
||||
bool threadDestroyed = false;
|
||||
try {
|
||||
pThread->pWaitReleaseFlag = & waitRelease;
|
||||
pThread->pThreadDestroyed = & threadDestroyed;
|
||||
if ( pThread->beginWait () ) {
|
||||
pThread->runable.run ();
|
||||
// current thread may have run the destructor
|
||||
// so must not touch the this pointer from
|
||||
// here on down if waitRelease is true
|
||||
// The run() routine may have destroyed the epicsThread
|
||||
// object by now; pThread can only be used below here
|
||||
// when the threadDestroyed flag is false.
|
||||
}
|
||||
}
|
||||
catch ( const epicsThread::exitException & ) {
|
||||
}
|
||||
catch ( std :: exception & except ) {
|
||||
if ( ! waitRelease ) {
|
||||
pThread->printLastChanceExceptionMessage (
|
||||
if ( ! threadDestroyed ) {
|
||||
pThread->printLastChanceExceptionMessage (
|
||||
typeid ( except ).name (), except.what () );
|
||||
}
|
||||
}
|
||||
catch ( ... ) {
|
||||
if ( ! waitRelease ) {
|
||||
pThread->printLastChanceExceptionMessage (
|
||||
if ( ! threadDestroyed ) {
|
||||
pThread->printLastChanceExceptionMessage (
|
||||
"catch ( ... )", "Non-standard C++ exception" );
|
||||
}
|
||||
}
|
||||
if ( ! waitRelease ) {
|
||||
if ( ! threadDestroyed ) {
|
||||
epicsGuard < epicsMutex > guard ( pThread->mutex );
|
||||
pThread->pThreadDestroyed = NULL;
|
||||
pThread->terminated = true;
|
||||
pThread->exitEvent.signal ();
|
||||
// once the terminated flag is set and we release the lock
|
||||
// then the "this" pointer must not be touched again
|
||||
// After the terminated flag is set and guard's destructor
|
||||
// releases the lock, pThread must never be used again.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -135,12 +136,12 @@ void epicsThread::exitWait () throw ()
|
||||
bool epicsThread::exitWait ( const double delay ) throw ()
|
||||
{
|
||||
try {
|
||||
// if destructor is running in managed thread then of
|
||||
// course we will not wait for the managed thread to
|
||||
// exit
|
||||
// When called (usually by a destructor) in the context of
|
||||
// the managed thread we can't wait for the thread to exit.
|
||||
// Set the threadDestroyed flag and return success.
|
||||
if ( this->isCurrentThread() ) {
|
||||
if ( this->pWaitReleaseFlag ) {
|
||||
*this->pWaitReleaseFlag = true;
|
||||
if ( this->pThreadDestroyed ) {
|
||||
*this->pThreadDestroyed = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -157,14 +158,14 @@ bool epicsThread::exitWait ( const double delay ) throw ()
|
||||
}
|
||||
}
|
||||
catch ( std :: exception & except ) {
|
||||
errlogPrintf (
|
||||
errlogPrintf (
|
||||
"epicsThread::exitWait(): Unexpected exception "
|
||||
" \"%s\"\n",
|
||||
" \"%s\"\n",
|
||||
except.what () );
|
||||
epicsThreadSleep ( epicsMin ( delay, 5.0 ) );
|
||||
}
|
||||
catch ( ... ) {
|
||||
errlogPrintf (
|
||||
errlogPrintf (
|
||||
"Non-standard unexpected exception in "
|
||||
"epicsThread::exitWait()\n" );
|
||||
epicsThreadSleep ( epicsMin ( delay, 5.0 ) );
|
||||
@@ -174,14 +175,14 @@ bool epicsThread::exitWait ( const double delay ) throw ()
|
||||
return this->terminated;
|
||||
}
|
||||
|
||||
epicsThread::epicsThread (
|
||||
epicsThread::epicsThread (
|
||||
epicsThreadRunable & runableIn, const char * pName,
|
||||
unsigned stackSize, unsigned priority ) :
|
||||
runable ( runableIn ), id ( 0 ), pWaitReleaseFlag ( 0 ),
|
||||
runable ( runableIn ), id ( 0 ), pThreadDestroyed ( 0 ),
|
||||
begin ( false ), cancel ( false ), terminated ( false )
|
||||
{
|
||||
this->id = epicsThreadCreate (
|
||||
pName, priority, stackSize, epicsThreadCallEntryPoint,
|
||||
this->id = epicsThreadCreate (
|
||||
pName, priority, stackSize, epicsThreadCallEntryPoint,
|
||||
static_cast < void * > ( this ) );
|
||||
if ( ! this->id ) {
|
||||
throw unableToCreateThread ();
|
||||
@@ -193,11 +194,11 @@ epicsThread::~epicsThread () throw ()
|
||||
while ( ! this->exitWait ( 10.0 ) ) {
|
||||
char nameBuf [256];
|
||||
this->getName ( nameBuf, sizeof ( nameBuf ) );
|
||||
fprintf ( stderr,
|
||||
fprintf ( stderr,
|
||||
"epicsThread::~epicsThread(): "
|
||||
"blocking for thread \"%s\" to exit\n",
|
||||
"blocking for thread \"%s\" to exit\n",
|
||||
nameBuf );
|
||||
fprintf ( stderr,
|
||||
fprintf ( stderr,
|
||||
"was epicsThread object destroyed before thread exit ?\n");
|
||||
}
|
||||
}
|
||||
@@ -272,11 +273,6 @@ void epicsThread::sleep (double seconds) throw ()
|
||||
epicsThreadSleep (seconds);
|
||||
}
|
||||
|
||||
//epicsThread & epicsThread::getSelf ()
|
||||
//{
|
||||
// return * static_cast<epicsThread *> ( epicsThreadGetIdSelf () );
|
||||
//}
|
||||
|
||||
const char *epicsThread::getNameSelf () throw ()
|
||||
{
|
||||
return epicsThreadGetNameSelf ();
|
||||
@@ -303,7 +299,7 @@ void epicsThread :: show ( unsigned level ) const throw ()
|
||||
if ( level > 0u ) {
|
||||
epicsThreadShow ( this->id, level - 1 );
|
||||
if ( level > 1u ) {
|
||||
::printf ( "pWaitReleaseFlag = %p\n", this->pWaitReleaseFlag );
|
||||
::printf ( "pThreadDestroyed = %p\n", this->pThreadDestroyed );
|
||||
::printf ( "begin = %c, cancel = %c, terminated = %c\n",
|
||||
this->begin ? 'T' : 'F',
|
||||
this->cancel ? 'T' : 'F',
|
||||
@@ -323,12 +319,12 @@ extern "C" {
|
||||
epicsThreadPrivateId okToBlockPrivate;
|
||||
static const int okToBlockNo = 0;
|
||||
static const int okToBlockYes = 1;
|
||||
|
||||
|
||||
static void epicsThreadOnceIdInit(void *)
|
||||
{
|
||||
okToBlockPrivate = epicsThreadPrivateCreate();
|
||||
}
|
||||
|
||||
|
||||
int epicsShareAPI epicsThreadIsOkToBlock(void)
|
||||
{
|
||||
const int *pokToBlock;
|
||||
@@ -336,7 +332,7 @@ extern "C" {
|
||||
pokToBlock = (int *) epicsThreadPrivateGet(okToBlockPrivate);
|
||||
return (pokToBlock ? *pokToBlock : 0);
|
||||
}
|
||||
|
||||
|
||||
void epicsShareAPI epicsThreadSetOkToBlock(int isOkToBlock)
|
||||
{
|
||||
const int *pokToBlock;
|
||||
@@ -344,12 +340,12 @@ extern "C" {
|
||||
pokToBlock = (isOkToBlock) ? &okToBlockYes : &okToBlockNo;
|
||||
epicsThreadPrivateSet(okToBlockPrivate, (void *)pokToBlock);
|
||||
}
|
||||
|
||||
|
||||
epicsThreadId epicsShareAPI epicsThreadMustCreate (
|
||||
const char *name, unsigned int priority, unsigned int stackSize,
|
||||
EPICSTHREADFUNC funptr,void *parm)
|
||||
EPICSTHREADFUNC funptr,void *parm)
|
||||
{
|
||||
epicsThreadId id = epicsThreadCreate (
|
||||
epicsThreadId id = epicsThreadCreate (
|
||||
name, priority, stackSize, funptr, parm );
|
||||
assert ( id );
|
||||
return id;
|
||||
|
||||
@@ -158,10 +158,10 @@ public:
|
||||
bool isCurrentThread () const throw ();
|
||||
bool operator == ( const epicsThread & ) const throw ();
|
||||
void show ( unsigned level ) const throw ();
|
||||
|
||||
/* these operate on the current thread */
|
||||
static void suspendSelf () throw ();
|
||||
static void sleep (double seconds) throw ();
|
||||
/* static epicsThread & getSelf (); */
|
||||
static const char * getNameSelf () throw ();
|
||||
static bool isOkToBlock () throw ();
|
||||
static void setOkToBlock ( bool isOkToBlock ) throw ();
|
||||
@@ -174,7 +174,7 @@ private:
|
||||
epicsMutex mutex;
|
||||
epicsEvent event;
|
||||
epicsEvent exitEvent;
|
||||
bool * pWaitReleaseFlag;
|
||||
bool * pThreadDestroyed;
|
||||
bool begin;
|
||||
bool cancel;
|
||||
bool terminated;
|
||||
|
||||
@@ -73,6 +73,21 @@ epicsShareFunc void epicsShareAPI osiSockDiscoverBroadcastAddresses
|
||||
struct ifreq *pifreq;
|
||||
struct ifreq *pnextifreq;
|
||||
osiSockAddrNode *pNewNode;
|
||||
|
||||
if ( pMatchAddr->sa.sa_family == AF_INET ) {
|
||||
if ( pMatchAddr->ia.sin_addr.s_addr == htonl (INADDR_LOOPBACK) ) {
|
||||
pNewNode = (osiSockAddrNode *) calloc (1, sizeof (*pNewNode) );
|
||||
if ( pNewNode == NULL ) {
|
||||
errlogPrintf ( "osiSockDiscoverBroadcastAddresses(): no memory available for configuration\n" );
|
||||
return;
|
||||
}
|
||||
pNewNode->addr.ia.sin_family = AF_INET;
|
||||
pNewNode->addr.ia.sin_port = htons ( 0 );
|
||||
pNewNode->addr.ia.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
|
||||
ellAdd ( pList, &pNewNode->node );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* use pool so that we avoid using too much stack space
|
||||
@@ -100,7 +115,6 @@ epicsShareFunc void epicsShareAPI osiSockDiscoverBroadcastAddresses
|
||||
|
||||
for ( pifreq = pIfreqList; pifreq <= pIfreqListEnd; pifreq = pnextifreq ) {
|
||||
uint32_t current_ifreqsize;
|
||||
struct sockaddr_in if_addr;
|
||||
|
||||
/*
|
||||
* find the next ifreq
|
||||
@@ -124,7 +138,6 @@ epicsShareFunc void epicsShareAPI osiSockDiscoverBroadcastAddresses
|
||||
ifDepenDebugPrintf ( ("osiSockDiscoverBroadcastAddresses(): interface \"%s\" was not AF_INET\n", pIfreqList->ifr_name) );
|
||||
continue;
|
||||
}
|
||||
if_addr = *(struct sockaddr_in *)&pIfreqList->ifr_addr;
|
||||
|
||||
/*
|
||||
* if it isnt a wildcarded interface then look for
|
||||
@@ -135,7 +148,8 @@ epicsShareFunc void epicsShareAPI osiSockDiscoverBroadcastAddresses
|
||||
continue;
|
||||
}
|
||||
if ( pMatchAddr->ia.sin_addr.s_addr != htonl (INADDR_ANY) ) {
|
||||
if ( if_addr.sin_addr.s_addr != pMatchAddr->ia.sin_addr.s_addr ) {
|
||||
struct sockaddr_in *pInetAddr = (struct sockaddr_in *) &pIfreqList->ifr_addr;
|
||||
if ( pInetAddr->sin_addr.s_addr != pMatchAddr->ia.sin_addr.s_addr ) {
|
||||
ifDepenDebugPrintf ( ("osiSockDiscoverBroadcastAddresses(): net intf \"%s\" didnt match\n", pIfreqList->ifr_name) );
|
||||
continue;
|
||||
}
|
||||
@@ -156,6 +170,14 @@ epicsShareFunc void epicsShareAPI osiSockDiscoverBroadcastAddresses
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* dont use the loop back interface
|
||||
*/
|
||||
if ( pIfreqList->ifr_flags & IFF_LOOPBACK ) {
|
||||
ifDepenDebugPrintf ( ("osiSockDiscoverBroadcastAddresses(): ignoring loopback interface: \"%s\"\n", pIfreqList->ifr_name) );
|
||||
continue;
|
||||
}
|
||||
|
||||
pNewNode = (osiSockAddrNode *) calloc (1, sizeof (*pNewNode) );
|
||||
if ( pNewNode == NULL ) {
|
||||
errlogPrintf ( "osiSockDiscoverBroadcastAddresses(): no memory available for configuration\n" );
|
||||
@@ -174,14 +196,22 @@ epicsShareFunc void epicsShareAPI osiSockDiscoverBroadcastAddresses
|
||||
* interface.
|
||||
*/
|
||||
if ( pIfreqList->ifr_flags & IFF_BROADCAST ) {
|
||||
osiSockAddr baddr;
|
||||
status = socket_ioctl (socket, SIOCGIFBRDADDR, pIfreqList);
|
||||
if ( status ) {
|
||||
errlogPrintf ("osiSockDiscoverBroadcastAddresses(): net intf \"%s\": bcast addr fetch fail\n", pIfreqList->ifr_name);
|
||||
free ( pNewNode );
|
||||
continue;
|
||||
}
|
||||
pNewNode->addr.sa = pIfreqList->ifr_broadaddr;
|
||||
ifDepenDebugPrintf ( ( "found broadcast addr = %x\n", ntohl ( pNewNode->addr.ia.sin_addr.s_addr ) ) );
|
||||
baddr.sa = pIfreqList->ifr_broadaddr;
|
||||
if (baddr.ia.sin_family==AF_INET && baddr.ia.sin_addr.s_addr != INADDR_ANY) {
|
||||
pNewNode->addr.sa = pIfreqList->ifr_broadaddr;
|
||||
ifDepenDebugPrintf ( ( "found broadcast addr = %x\n", ntohl ( baddr.ia.sin_addr.s_addr ) ) );
|
||||
} else {
|
||||
ifDepenDebugPrintf ( ( "Ignoring broadcast addr = \n", ntohl ( baddr.ia.sin_addr.s_addr ) ) );
|
||||
free ( pNewNode );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
#if defined (IFF_POINTOPOINT)
|
||||
else if ( pIfreqList->ifr_flags & IFF_POINTOPOINT ) {
|
||||
@@ -193,22 +223,6 @@ epicsShareFunc void epicsShareAPI osiSockDiscoverBroadcastAddresses
|
||||
}
|
||||
pNewNode->addr.sa = pIfreqList->ifr_dstaddr;
|
||||
}
|
||||
#endif
|
||||
#if defined(__linux__)
|
||||
/* On Linux, even though the 'lo' interface doesn't set IFF_BROADCAST
|
||||
* a broadcast route often exists. Assume that sending to 127.255.255.255
|
||||
* reaches all local listeners.
|
||||
*
|
||||
* $ ip route show table local scope link dev lo
|
||||
* broadcast 127.0.0.0 proto kernel src 127.0.0.1
|
||||
* broadcast 127.255.255.255 proto kernel src 127.0.0.1
|
||||
*/
|
||||
else if ( pIfreqList->ifr_flags & IFF_LOOPBACK && if_addr.sin_addr.s_addr == htonl(INADDR_LOOPBACK) ) {
|
||||
memset(&pNewNode->addr.ia, 0, sizeof(pNewNode->addr.ia));
|
||||
pNewNode->addr.ia.sin_family = AF_INET;
|
||||
pNewNode->addr.ia.sin_addr.s_addr = htonl(0x7fffffff);
|
||||
ifDepenDebugPrintf ( ( "assume loopback broadcast addr = %x\n", ntohl ( pNewNode->addr.ia.sin_addr.s_addr ) ) );
|
||||
}
|
||||
#endif
|
||||
else {
|
||||
ifDepenDebugPrintf ( ( "osiSockDiscoverBroadcastAddresses(): net intf \"%s\": not point to point or bcast?\n", pIfreqList->ifr_name ) );
|
||||
|
||||
@@ -19,7 +19,7 @@ extern "C" {
|
||||
|
||||
#ifdef isfinite
|
||||
# undef finite
|
||||
# define finite(x) isfinite(x)
|
||||
# define finite(x) isfinite((double)(x))
|
||||
#endif
|
||||
|
||||
epicsShareExtern float epicsNAN;
|
||||
|
||||
@@ -98,6 +98,7 @@ TESTS += epicsTimeTest
|
||||
|
||||
TESTPROD_HOST += epicsTimeZoneTest
|
||||
epicsTimeZoneTest_SRCS += epicsTimeZoneTest.c
|
||||
libComTestHarness_SRCS_RTEMS += epicsTimeZoneTest.c
|
||||
TESTS += epicsTimeZoneTest
|
||||
|
||||
TESTPROD_HOST += epicsThreadTest
|
||||
|
||||
@@ -47,6 +47,9 @@ int epicsTimeTest(void);
|
||||
int epicsTypesTest(void);
|
||||
int epicsInlineTest(void);
|
||||
int macDefExpandTest(void);
|
||||
#ifdef __rtems__
|
||||
int epicsTimeZoneTest(void);
|
||||
#endif
|
||||
int macLibTest(void);
|
||||
int ringBytesTest(void);
|
||||
int ringPointerTest(void);
|
||||
@@ -97,6 +100,11 @@ void epicsRunLibComTests(void)
|
||||
runTest(epicsTypesTest);
|
||||
runTest(epicsInlineTest);
|
||||
runTest(macDefExpandTest);
|
||||
|
||||
#ifdef __rtems__
|
||||
runTest(epicsTimeZoneTest);
|
||||
#endif
|
||||
|
||||
runTest(macLibTest);
|
||||
runTest(ringBytesTest);
|
||||
runTest(ringPointerTest);
|
||||
|
||||
@@ -17,15 +17,9 @@
|
||||
#endif
|
||||
|
||||
static
|
||||
void setTZ(const char *base, const char *dst, int offset)
|
||||
void setTZ(const char *tz)
|
||||
{
|
||||
char tz[20];
|
||||
if(offset!=0 || dst)
|
||||
sprintf(tz, "%s%d%s", base, offset/3600, dst);
|
||||
else
|
||||
sprintf(tz, "%s", base);
|
||||
testDiag("TZ=\"%s\"", tz);
|
||||
|
||||
testDiag("TZ = \"%s\"", tz);
|
||||
epicsEnvSet("TZ", tz);
|
||||
tzset();
|
||||
}
|
||||
@@ -86,32 +80,52 @@ void test_gmtime(time_t T, int sec, int min, int hour,
|
||||
|
||||
MAIN(epicsTimeZoneTest)
|
||||
{
|
||||
testPlan(80);
|
||||
testPlan(160);
|
||||
/* 1445259616
|
||||
* Mon Oct 19 09:00:16 2015 EDT
|
||||
* Mon Oct 19 08:00:16 2015 CDT
|
||||
* Mon Oct 19 03:00:16 2015 HST (no dst)
|
||||
* Mon Oct 19 13:00:16 2015 UTC
|
||||
*/
|
||||
testDiag("POSIX 1445259616");
|
||||
setTZ("EST", "EDT", 5*3600);
|
||||
test_localtime(1445259616ul, 16, 0, 9, 19, 9, 2015, 1, 291, 1);
|
||||
setTZ("CST", "CDT", 6*3600);
|
||||
test_localtime(1445259616ul, 16, 0, 8, 19, 9, 2015, 1, 291, 1);
|
||||
setTZ("UTC", NULL, 0);
|
||||
setTZ("EST5EDT");
|
||||
test_localtime(1445259616ul, 16, 0, 9, 19, 9, 2015, 1, 291, 1);
|
||||
test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0);
|
||||
setTZ("CST6CDT");
|
||||
test_localtime(1445259616ul, 16, 0, 8, 19, 9, 2015, 1, 291, 1);
|
||||
test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0);
|
||||
#if defined(__rtems__)
|
||||
setTZ("HST10HST10");
|
||||
#else
|
||||
setTZ("HST10");
|
||||
#endif
|
||||
test_localtime(1445259616ul, 16, 0, 3, 19, 9, 2015, 1, 291, 0);
|
||||
test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0);
|
||||
setTZ("UTC0");
|
||||
test_localtime(1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0);
|
||||
test_gmtime(1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0);
|
||||
test_gmtime (1445259616ul, 16, 0, 13, 19, 9, 2015, 1, 291, 0);
|
||||
/* 1421244931
|
||||
* Wed Jan 14 09:15:31 2015 EST
|
||||
* Wed Jan 14 08:15:31 2015 CST
|
||||
* Wed Jan 14 04:15:31 2015 HST
|
||||
* Wed Jan 14 14:15:31 2015 UTC
|
||||
*/
|
||||
testDiag("POSIX 1421244931");
|
||||
setTZ("EST", "EDT", 5*3600);
|
||||
test_localtime(1421244931ul, 31, 15, 9, 14, 0, 2015, 3, 13, 0);
|
||||
setTZ("CST", "CDT", 6*3600);
|
||||
test_localtime(1421244931ul, 31, 15, 8, 14, 0, 2015, 3, 13, 0);
|
||||
setTZ("UTC", NULL, 0);
|
||||
setTZ("EST5EDT");
|
||||
test_localtime(1421244931ul, 31, 15, 9, 14, 0, 2015, 3, 13, 0);
|
||||
test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0);
|
||||
setTZ("CST6CDT");
|
||||
test_localtime(1421244931ul, 31, 15, 8, 14, 0, 2015, 3, 13, 0);
|
||||
test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0);
|
||||
#if defined(__rtems__)
|
||||
setTZ("HST10HST10");
|
||||
#else
|
||||
setTZ("HST10");
|
||||
#endif
|
||||
test_localtime(1421244931ul, 31, 15, 4, 14, 0, 2015, 3, 13, 0);
|
||||
test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0);
|
||||
setTZ("UTC0");
|
||||
test_localtime(1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0);
|
||||
test_gmtime(1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0);
|
||||
test_gmtime (1421244931ul, 31, 15, 14, 14, 0, 2015, 3, 13, 0);
|
||||
return testDone();
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ dbRecStd_SRCS += devSoSoftCallback.c
|
||||
|
||||
dbRecStd_SRCS += devTimestamp.c
|
||||
dbRecStd_SRCS += devStdio.c
|
||||
dbRecStd_SRCS += devEnviron.c
|
||||
|
||||
dbRecStd_SRCS += asSubRecordFunctions.c
|
||||
|
||||
|
||||
128
src/std/dev/devEnviron.c
Normal file
128
src/std/dev/devEnviron.c
Normal file
@@ -0,0 +1,128 @@
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2016 UChicago Argonne LLC, as Operator of Argonne
|
||||
* National Laboratory.
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
/* devEnviron.c */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "alarm.h"
|
||||
#include "dbCommon.h"
|
||||
#include "devSup.h"
|
||||
#include "errlog.h"
|
||||
#include "recGbl.h"
|
||||
#include "recSup.h"
|
||||
|
||||
#include "lsiRecord.h"
|
||||
#include "stringinRecord.h"
|
||||
#include "epicsExport.h"
|
||||
|
||||
/* lsi device support */
|
||||
|
||||
static long add_lsi(dbCommon *pcommon) {
|
||||
lsiRecord *prec = (lsiRecord *) pcommon;
|
||||
|
||||
if (prec->inp.type != INST_IO)
|
||||
return S_dev_badInpType;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long del_lsi(dbCommon *pcommon) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dsxt dsxtLsiEnviron = {
|
||||
add_lsi, del_lsi
|
||||
};
|
||||
|
||||
static long init_lsi(int pass)
|
||||
{
|
||||
if (pass == 0)
|
||||
devExtend(&dsxtLsiEnviron);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long read_lsi(lsiRecord *prec)
|
||||
{
|
||||
const char *val = getenv(prec->inp.value.instio.string);
|
||||
|
||||
if (val) {
|
||||
strncpy(prec->val, val, prec->sizv);
|
||||
prec->val[prec->sizv - 1] = 0;
|
||||
prec->len = strlen(prec->val);
|
||||
prec->udf = FALSE;
|
||||
}
|
||||
else {
|
||||
prec->val[0] = 0;
|
||||
prec->len = 1;
|
||||
prec->udf = TRUE;
|
||||
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
lsidset devLsiEnviron = {
|
||||
5, NULL, init_lsi, NULL, NULL, read_lsi
|
||||
};
|
||||
epicsExportAddress(dset, devLsiEnviron);
|
||||
|
||||
|
||||
/* stringin device support */
|
||||
|
||||
static long add_stringin(dbCommon *pcommon) {
|
||||
stringinRecord *prec = (stringinRecord *) pcommon;
|
||||
|
||||
if (prec->inp.type != INST_IO)
|
||||
return S_dev_badInpType;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long del_stringin(dbCommon *pcommon) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct dsxt dsxtSiEnviron = {
|
||||
add_stringin, del_stringin
|
||||
};
|
||||
|
||||
static long init_stringin(int pass)
|
||||
{
|
||||
if (pass == 0)
|
||||
devExtend(&dsxtSiEnviron);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static long read_stringin(stringinRecord *prec)
|
||||
{
|
||||
const char *val = getenv(prec->inp.value.instio.string);
|
||||
|
||||
if (val) {
|
||||
strncpy(prec->val, val, MAX_STRING_SIZE);
|
||||
prec->val[MAX_STRING_SIZE - 1] = 0;
|
||||
prec->udf = FALSE;
|
||||
}
|
||||
else {
|
||||
prec->val[0] = 0;
|
||||
prec->udf = TRUE;
|
||||
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct {
|
||||
dset common;
|
||||
DEVSUPFUN read;
|
||||
} devSiEnviron = {
|
||||
{5, NULL, init_stringin, NULL, NULL}, read_stringin
|
||||
};
|
||||
epicsExportAddress(dset, devSiEnviron);
|
||||
@@ -58,5 +58,8 @@ device(lso,INST_IO,devLsoStdio,"stdio")
|
||||
device(printf,INST_IO,devPrintfStdio,"stdio")
|
||||
device(stringout,INST_IO,devSoStdio,"stdio")
|
||||
|
||||
device(lsi,INST_IO,devLsiEnviron,"getenv")
|
||||
device(stringin,INST_IO,devSiEnviron,"getenv")
|
||||
|
||||
device(bi, INST_IO, devBiDbState, "Db State")
|
||||
device(bo, INST_IO, devBoDbState, "Db State")
|
||||
|
||||
@@ -19,6 +19,7 @@ Recs_LIBS += dbCore Com
|
||||
PROD_LIBS = Recs dbRecStd dbCore ca Com
|
||||
|
||||
TARGETS += $(COMMON_DIR)/tsTest.dbd
|
||||
DBDDEPENDS_FILES += tsTest.dbd$(DEP)
|
||||
tsTest_DBD += xRecord.dbd
|
||||
TESTPROD_HOST += tsTest
|
||||
tsTest_SRCS += tsTest.c
|
||||
@@ -29,6 +30,7 @@ TESTFILES += $(COMMON_DIR)/tsTest.dbd ../xRecord.db
|
||||
TESTS += tsTest
|
||||
|
||||
TARGETS += $(COMMON_DIR)/dbndTest.dbd
|
||||
DBDDEPENDS_FILES += dbndTest.dbd$(DEP)
|
||||
dbndTest_DBD += xRecord.dbd
|
||||
TESTPROD_HOST += dbndTest
|
||||
dbndTest_SRCS += dbndTest.c
|
||||
@@ -39,6 +41,7 @@ TESTFILES += $(COMMON_DIR)/dbndTest.dbd
|
||||
TESTS += dbndTest
|
||||
|
||||
TARGETS += $(COMMON_DIR)/arrTest.dbd
|
||||
DBDDEPENDS_FILES += arrTest.dbd$(DEP)
|
||||
arrTest_DBD += arrRecord.dbd
|
||||
TESTPROD_HOST += arrTest
|
||||
arrTest_SRCS += arrTest.cpp
|
||||
@@ -49,6 +52,7 @@ TESTFILES += $(COMMON_DIR)/arrTest.dbd ../arrTest.db
|
||||
TESTS += arrTest
|
||||
|
||||
TARGETS += $(COMMON_DIR)/syncTest.dbd
|
||||
DBDDEPENDS_FILES += syncTest.dbd$(DEP)
|
||||
syncTest_DBD += xRecord.dbd
|
||||
TESTPROD_HOST += syncTest
|
||||
syncTest_SRCS += syncTest.c
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,13 +3,12 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
menu(aaiPOST) {
|
||||
choice(aaiPOST_Always,"Always")
|
||||
choice(aaiPOST_OnChange,"On Change")
|
||||
choice(aaiPOST_Always,"Always")
|
||||
choice(aaiPOST_OnChange,"On Change")
|
||||
}
|
||||
recordtype(aai) {
|
||||
include "dbCommon.dbd"
|
||||
@@ -25,44 +24,44 @@ recordtype(aai) {
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Engineering Units Name")
|
||||
promptgroup(GUI_BITS2)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_CLOCK)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(NELM,DBF_ULONG) {
|
||||
prompt("Number of Elements")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(FTVL,DBF_MENU) {
|
||||
prompt("Field Type of Value")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
menu(menuFtype)
|
||||
@@ -79,7 +78,7 @@ recordtype(aai) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_HIST)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -89,27 +88,27 @@ recordtype(aai) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(MPST,DBF_MENU) {
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
interest(1)
|
||||
menu(aaiPOST)
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(aaiPOST)
|
||||
}
|
||||
field(APST,DBF_MENU) {
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
interest(1)
|
||||
menu(aaiPOST)
|
||||
}
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(aaiPOST)
|
||||
}
|
||||
field(HASH,DBF_ULONG) {
|
||||
prompt("Hash of OnChange data.")
|
||||
interest(3)
|
||||
|
||||
@@ -3,13 +3,12 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
menu(aaoPOST) {
|
||||
choice(aaoPOST_Always,"Always")
|
||||
choice(aaoPOST_OnChange,"On Change")
|
||||
choice(aaoPOST_Always,"Always")
|
||||
choice(aaoPOST_OnChange,"On Change")
|
||||
}
|
||||
recordtype(aao) {
|
||||
include "dbCommon.dbd"
|
||||
@@ -25,44 +24,44 @@ recordtype(aao) {
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Engineering Units Name")
|
||||
promptgroup(GUI_BITS2)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_CLOCK)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(NELM,DBF_ULONG) {
|
||||
prompt("Number of Elements")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(FTVL,DBF_MENU) {
|
||||
prompt("Field Type of Value")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
menu(menuFtype)
|
||||
@@ -79,7 +78,7 @@ recordtype(aao) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_HIST)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -89,27 +88,27 @@ recordtype(aao) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(MPST,DBF_MENU) {
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
interest(1)
|
||||
menu(aaoPOST)
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(aaoPOST)
|
||||
}
|
||||
field(APST,DBF_MENU) {
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
interest(1)
|
||||
menu(aaoPOST)
|
||||
}
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(aaoPOST)
|
||||
}
|
||||
field(HASH,DBF_ULONG) {
|
||||
prompt("Hash of OnChange data.")
|
||||
interest(3)
|
||||
|
||||
@@ -217,24 +217,24 @@ monitoring functionality.
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Current EGU Value")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LINR,DBF_MENU) {
|
||||
prompt("Linearization")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
special(SPC_LINCONV)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -242,133 +242,133 @@ monitoring functionality.
|
||||
}
|
||||
field(EGUF,DBF_DOUBLE) {
|
||||
prompt("Engineer Units Full")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
special(SPC_LINCONV)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(EGUL,DBF_DOUBLE) {
|
||||
prompt("Engineer Units Low")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
special(SPC_LINCONV)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Engineering Units")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(AOFF,DBF_DOUBLE) {
|
||||
prompt("Adjustment Offset")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(ASLO,DBF_DOUBLE) {
|
||||
prompt("Adjustment Slope")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(SMOO,DBF_DOUBLE) {
|
||||
prompt("Smoothing")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
interest(1)
|
||||
}
|
||||
field(HIHI,DBF_DOUBLE) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_DOUBLE) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_DOUBLE) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(AFTC,DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Time Constant")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(LALM,DBF_DOUBLE) {
|
||||
@@ -393,14 +393,14 @@ monitoring functionality.
|
||||
}
|
||||
field(ESLO,DBF_DOUBLE) {
|
||||
prompt("Raw to EGU Slope")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(2)
|
||||
initial("1")
|
||||
}
|
||||
field(EOFF,DBF_DOUBLE) {
|
||||
prompt("Raw to EGU Offset")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(2)
|
||||
}
|
||||
@@ -469,7 +469,7 @@ simulation mode.
|
||||
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim. Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_DOUBLE) {
|
||||
@@ -477,7 +477,7 @@ simulation mode.
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim. Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -487,7 +487,7 @@ simulation mode.
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Simulation Mode Severity")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
@@ -610,7 +610,7 @@ values that the C<read_ai()> routine can put in the RVAL field.
|
||||
When RVAL is set to I<RVAL_max> the VAL field will be set to EGUF, and when RVAL
|
||||
is set to I<RVAL_min> the VAL field will become EGUL.
|
||||
|
||||
The fomulae to use are:
|
||||
The formulae to use are:
|
||||
|
||||
=over
|
||||
|
||||
|
||||
@@ -273,7 +273,7 @@ information on these fields.
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Desired Output")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
@@ -282,40 +282,40 @@ information on these fields.
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OROC,DBF_DOUBLE) {
|
||||
prompt("Output Rate of Change")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Loc")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(menuOmsl)
|
||||
}
|
||||
field(OIF,DBF_MENU) {
|
||||
prompt("Out Full/Incremental")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(aoOIF)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LINR,DBF_MENU) {
|
||||
prompt("Linearization")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
special(SPC_LINCONV)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -323,24 +323,24 @@ information on these fields.
|
||||
}
|
||||
field(EGUF,DBF_DOUBLE) {
|
||||
prompt("Eng Units Full")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
special(SPC_LINCONV)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(EGUL,DBF_DOUBLE) {
|
||||
prompt("Eng Units Low")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
special(SPC_LINCONV)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Engineering Units")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(ROFF,DBF_ULONG) {
|
||||
prompt("Raw Offset")
|
||||
@@ -349,128 +349,128 @@ information on these fields.
|
||||
}
|
||||
field(EOFF,DBF_DOUBLE) {
|
||||
prompt("EGU to Raw Offset")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(2)
|
||||
}
|
||||
field(ESLO,DBF_DOUBLE) {
|
||||
prompt("EGU to Raw Slope")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(2)
|
||||
initial("1")
|
||||
}
|
||||
field(DRVH,DBF_DOUBLE) {
|
||||
prompt("Drive High Limit")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(DRVL,DBF_DOUBLE) {
|
||||
prompt("Drive Low Limit")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(AOFF,DBF_DOUBLE) {
|
||||
prompt("Adjustment Offset")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(ASLO,DBF_DOUBLE) {
|
||||
prompt("Adjustment Slope")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("60 - Convert")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(HIHI,DBF_DOUBLE) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_DOUBLE) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_DOUBLE) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(RVAL,DBF_LONG) {
|
||||
@@ -529,12 +529,12 @@ information on these fields.
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -544,19 +544,19 @@ information on these fields.
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID output action")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_DOUBLE) {
|
||||
prompt("INVALID output value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
}
|
||||
field(OMOD,DBF_UCHAR) {
|
||||
|
||||
@@ -3,47 +3,46 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(bi) {
|
||||
include "dbCommon.dbd"
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(VAL,DBF_ENUM) {
|
||||
prompt("Current Value")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(ZSV,DBF_MENU) {
|
||||
prompt("Zero Error Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(OSV,DBF_MENU) {
|
||||
prompt("One Error Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(COSV,DBF_MENU) {
|
||||
prompt("Change of State Svr")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(ZNAM,DBF_STRING) {
|
||||
prompt("Zero Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
size(26)
|
||||
@@ -51,7 +50,7 @@ recordtype(bi) {
|
||||
}
|
||||
field(ONAM,DBF_STRING) {
|
||||
prompt("One Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
size(26)
|
||||
@@ -83,7 +82,7 @@ recordtype(bi) {
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_ULONG) {
|
||||
@@ -91,7 +90,7 @@ recordtype(bi) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -101,7 +100,7 @@ recordtype(bi) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
|
||||
@@ -3,42 +3,41 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(bo) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_ENUM) {
|
||||
prompt("Current Value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(menuOmsl)
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Loc")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("Seconds to Hold High")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
}
|
||||
field(ZNAM,DBF_STRING) {
|
||||
prompt("Zero Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
size(26)
|
||||
@@ -46,7 +45,7 @@ recordtype(bo) {
|
||||
}
|
||||
field(ONAM,DBF_STRING) {
|
||||
prompt("One Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
size(26)
|
||||
@@ -80,21 +79,21 @@ recordtype(bo) {
|
||||
}
|
||||
field(ZSV,DBF_MENU) {
|
||||
prompt("Zero Error Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(OSV,DBF_MENU) {
|
||||
prompt("One Error Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(COSV,DBF_MENU) {
|
||||
prompt("Change of State Sevr")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
@@ -120,12 +119,12 @@ recordtype(bo) {
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -135,19 +134,19 @@ recordtype(bo) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID outpt action")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_USHORT) {
|
||||
prompt("INVALID output value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,11 +10,12 @@ recordtype(calc) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Result")
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
}
|
||||
field(CALC,DBF_STRING) {
|
||||
prompt("Calculation")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_CALC)
|
||||
pp(TRUE)
|
||||
size(80)
|
||||
@@ -22,120 +23,120 @@ recordtype(calc) {
|
||||
}
|
||||
field(INPA,DBF_INLINK) {
|
||||
prompt("Input A")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPB,DBF_INLINK) {
|
||||
prompt("Input B")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPC,DBF_INLINK) {
|
||||
prompt("Input C")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPD,DBF_INLINK) {
|
||||
prompt("Input D")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPE,DBF_INLINK) {
|
||||
prompt("Input E")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPF,DBF_INLINK) {
|
||||
prompt("Input F")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPG,DBF_INLINK) {
|
||||
prompt("Input G")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPH,DBF_INLINK) {
|
||||
prompt("Input H")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPI,DBF_INLINK) {
|
||||
prompt("Input I")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPJ,DBF_INLINK) {
|
||||
prompt("Input J")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPK,DBF_INLINK) {
|
||||
prompt("Input K")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPL,DBF_INLINK) {
|
||||
prompt("Input L")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Units Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Rng")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIHI,DBF_DOUBLE) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_DOUBLE) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_DOUBLE) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -143,7 +144,7 @@ recordtype(calc) {
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -151,7 +152,7 @@ recordtype(calc) {
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -159,35 +160,35 @@ recordtype(calc) {
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(AFTC, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Time Constant")
|
||||
promptgroup(GUI_ALARMS)
|
||||
interest(1)
|
||||
}
|
||||
field(AFVL, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Value")
|
||||
special(SPC_NOMOD)
|
||||
interest(3)
|
||||
}
|
||||
field(AFTC, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Time Constant")
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(AFVL, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Value")
|
||||
special(SPC_NOMOD)
|
||||
interest(3)
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(A,DBF_DOUBLE) {
|
||||
|
||||
@@ -34,7 +34,7 @@ recordtype(calcout) {
|
||||
}
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Result")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
}
|
||||
field(PVAL,DBF_DOUBLE) {
|
||||
@@ -42,7 +42,7 @@ recordtype(calcout) {
|
||||
}
|
||||
field(CALC,DBF_STRING) {
|
||||
prompt("Calculation")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_CALC)
|
||||
pp(TRUE)
|
||||
size(80)
|
||||
@@ -55,79 +55,79 @@ recordtype(calcout) {
|
||||
field(INPA,DBF_INLINK) {
|
||||
prompt("Input A")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPB,DBF_INLINK) {
|
||||
prompt("Input B")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPC,DBF_INLINK) {
|
||||
prompt("Input C")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPD,DBF_INLINK) {
|
||||
prompt("Input D")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPE,DBF_INLINK) {
|
||||
prompt("Input E")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPF,DBF_INLINK) {
|
||||
prompt("Input F")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPG,DBF_INLINK) {
|
||||
prompt("Input G")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPH,DBF_INLINK) {
|
||||
prompt("Input H")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPI,DBF_INLINK) {
|
||||
prompt("Input I")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPJ,DBF_INLINK) {
|
||||
prompt("Input J")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPK,DBF_INLINK) {
|
||||
prompt("Input K")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPL,DBF_INLINK) {
|
||||
prompt("Input L")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
special(SPC_MOD)
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(INAV,DBF_MENU) {
|
||||
@@ -222,13 +222,13 @@ recordtype(calcout) {
|
||||
}
|
||||
field(OOPT,DBF_MENU) {
|
||||
prompt("Output Execute Opt")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(calcoutOOPT)
|
||||
}
|
||||
field(ODLY,DBF_DOUBLE) {
|
||||
prompt("Output Execute Delay")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
interest(1)
|
||||
}
|
||||
@@ -239,13 +239,13 @@ recordtype(calcout) {
|
||||
}
|
||||
field(DOPT,DBF_MENU) {
|
||||
prompt("Output Data Opt")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
menu(calcoutDOPT)
|
||||
}
|
||||
field(OCAL,DBF_STRING) {
|
||||
prompt("Output Calculation")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_CALC)
|
||||
pp(TRUE)
|
||||
size(80)
|
||||
@@ -257,7 +257,7 @@ recordtype(calcout) {
|
||||
}
|
||||
field(OEVT,DBF_STRING) {
|
||||
prompt("Event To Issue")
|
||||
promptgroup(GUI_CLOCK)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_MOD)
|
||||
asl(ASL0)
|
||||
size(40)
|
||||
@@ -271,71 +271,71 @@ recordtype(calcout) {
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID output action")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_DOUBLE) {
|
||||
prompt("INVALID output value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Units Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Rng")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIHI,DBF_DOUBLE) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_DOUBLE) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_DOUBLE) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -343,7 +343,7 @@ recordtype(calcout) {
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -351,7 +351,7 @@ recordtype(calcout) {
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -359,7 +359,7 @@ recordtype(calcout) {
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -367,17 +367,17 @@ recordtype(calcout) {
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(A,DBF_DOUBLE) {
|
||||
|
||||
@@ -60,7 +60,7 @@ recordtype(compress) {
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(RES,DBF_SHORT) {
|
||||
@@ -71,56 +71,56 @@ recordtype(compress) {
|
||||
}
|
||||
field(ALG,DBF_MENU) {
|
||||
prompt("Compression Algorithm")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_RESET)
|
||||
interest(1)
|
||||
menu(compressALG)
|
||||
}
|
||||
field(NSAM,DBF_ULONG) {
|
||||
prompt("Number of Values")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(N,DBF_ULONG) {
|
||||
prompt("N to 1 Compression")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_RESET)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(IHIL,DBF_DOUBLE) {
|
||||
prompt("Init High Interest Lim")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
}
|
||||
field(ILIL,DBF_DOUBLE) {
|
||||
prompt("Init Low Interest Lim")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("EngineeringUnits")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
|
||||
@@ -3,145 +3,145 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
menu(dfanoutSELM) {
|
||||
choice(dfanoutSELM_All,"All")
|
||||
choice(dfanoutSELM_Specified,"Specified")
|
||||
choice(dfanoutSELM_Mask,"Mask")
|
||||
choice(dfanoutSELM_All,"All")
|
||||
choice(dfanoutSELM_Specified,"Specified")
|
||||
choice(dfanoutSELM_Mask,"Mask")
|
||||
}
|
||||
recordtype(dfanout) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Desired Output")
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(SELM,DBF_MENU) {
|
||||
prompt("Select Mechanism")
|
||||
promptgroup(GUI_LINKS)
|
||||
interest(1)
|
||||
menu(dfanoutSELM)
|
||||
}
|
||||
field(SELN,DBF_USHORT) {
|
||||
prompt("Link Selection")
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(SELL,DBF_INLINK) {
|
||||
prompt("Link Selection Loc")
|
||||
promptgroup(GUI_LINKS)
|
||||
interest(1)
|
||||
}
|
||||
field(SELM,DBF_MENU) {
|
||||
prompt("Select Mechanism")
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
menu(dfanoutSELM)
|
||||
}
|
||||
field(SELN,DBF_USHORT) {
|
||||
prompt("Link Selection")
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(SELL,DBF_INLINK) {
|
||||
prompt("Link Selection Loc")
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTA,DBF_OUTLINK) {
|
||||
prompt("Output Spec A")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTB,DBF_OUTLINK) {
|
||||
prompt("Output Spec B")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTC,DBF_OUTLINK) {
|
||||
prompt("Output Spec C")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTD,DBF_OUTLINK) {
|
||||
prompt("Output Spec D")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTE,DBF_OUTLINK) {
|
||||
prompt("Output Spec E")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTF,DBF_OUTLINK) {
|
||||
prompt("Output Spec F")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTG,DBF_OUTLINK) {
|
||||
prompt("Output Spec G")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(OUTH,DBF_OUTLINK) {
|
||||
prompt("Output Spec H")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Loc")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(menuOmsl)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Units name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
interest(1)
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIHI,DBF_DOUBLE) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_DOUBLE) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_DOUBLE) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -149,7 +149,7 @@ recordtype(dfanout) {
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -157,7 +157,7 @@ recordtype(dfanout) {
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -165,7 +165,7 @@ recordtype(dfanout) {
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -173,17 +173,17 @@ recordtype(dfanout) {
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(LALM,DBF_DOUBLE) {
|
||||
|
||||
@@ -3,15 +3,14 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(event) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_STRING) {
|
||||
prompt("Event Name To Post")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
special(SPC_MOD)
|
||||
asl(ASL0)
|
||||
size(40)
|
||||
@@ -25,12 +24,12 @@ recordtype(event) {
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_STRING) {
|
||||
@@ -39,7 +38,7 @@ recordtype(event) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -49,7 +48,7 @@ recordtype(event) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ recordtype(fanout) {
|
||||
}
|
||||
field(SELM,DBF_MENU) {
|
||||
prompt("Select Mechanism")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
menu(fanoutSELM)
|
||||
}
|
||||
@@ -31,7 +31,7 @@ recordtype(fanout) {
|
||||
}
|
||||
field(SELL,DBF_INLINK) {
|
||||
prompt("Link Selection Loc")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
}
|
||||
field(OFFS,DBF_SHORT) {
|
||||
@@ -46,82 +46,82 @@ recordtype(fanout) {
|
||||
}
|
||||
field(LNK0,DBF_FWDLINK) {
|
||||
prompt("Forward Link 0")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK1,DBF_FWDLINK) {
|
||||
prompt("Forward Link 1")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK2,DBF_FWDLINK) {
|
||||
prompt("Forward Link 2")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK3,DBF_FWDLINK) {
|
||||
prompt("Forward Link 3")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK4,DBF_FWDLINK) {
|
||||
prompt("Forward Link 4")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK5,DBF_FWDLINK) {
|
||||
prompt("Forward Link 5")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK6,DBF_FWDLINK) {
|
||||
prompt("Forward Link 6")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK7,DBF_FWDLINK) {
|
||||
prompt("Forward Link 7")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("51 - Output 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK8,DBF_FWDLINK) {
|
||||
prompt("Forward Link 8")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(LNK9,DBF_FWDLINK) {
|
||||
prompt("Forward Link 9")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(LNKA,DBF_FWDLINK) {
|
||||
prompt("Forward Link 10")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(LNKB,DBF_FWDLINK) {
|
||||
prompt("Forward Link 11")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(LNKC,DBF_FWDLINK) {
|
||||
prompt("Forward Link 12")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(LNKD,DBF_FWDLINK) {
|
||||
prompt("Forward Link 13")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(LNKE,DBF_FWDLINK) {
|
||||
prompt("Forward Link 14")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(LNKF,DBF_FWDLINK) {
|
||||
prompt("Forward Link 15")
|
||||
promptgroup(GUI_LINKS)
|
||||
promptgroup("52 - Output 8-F")
|
||||
interest(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
menu(histogramCMD) {
|
||||
choice(histogramCMD_Read,"Read")
|
||||
@@ -26,7 +25,7 @@ recordtype(histogram) {
|
||||
}
|
||||
field(NELM,DBF_USHORT) {
|
||||
prompt("Num of Array Elements")
|
||||
promptgroup(GUI_HIST)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("1")
|
||||
@@ -46,14 +45,14 @@ recordtype(histogram) {
|
||||
}
|
||||
field(ULIM,DBF_DOUBLE) {
|
||||
prompt("Upper Signal Limit")
|
||||
promptgroup(GUI_HIST)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_RESET)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LLIM,DBF_DOUBLE) {
|
||||
prompt("Lower Signal Limit ")
|
||||
promptgroup(GUI_HIST)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_RESET)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -69,13 +68,13 @@ recordtype(histogram) {
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(SVL,DBF_INLINK) {
|
||||
prompt("Signal Value Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(BPTR,DBF_NOACCESS) {
|
||||
@@ -92,7 +91,7 @@ recordtype(histogram) {
|
||||
}
|
||||
field(MDEL,DBF_SHORT) {
|
||||
prompt("Monitor Count Deadband")
|
||||
promptgroup(GUI_HIST)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MCNT,DBF_SHORT) {
|
||||
@@ -102,13 +101,13 @@ recordtype(histogram) {
|
||||
}
|
||||
field(SDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Seconds Dband")
|
||||
promptgroup(GUI_HIST)
|
||||
promptgroup("80 - Display")
|
||||
special(SPC_RESET)
|
||||
interest(1)
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_DOUBLE) {
|
||||
@@ -116,7 +115,7 @@ recordtype(histogram) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -126,19 +125,19 @@ recordtype(histogram) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HOPR,DBF_ULONG) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_ULONG) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
|
||||
@@ -3,121 +3,120 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(longin) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_LONG) {
|
||||
prompt("Current value")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Units name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_LONG) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_LONG) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIHI,DBF_LONG) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_LONG) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_LONG) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_LONG) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HYST,DBF_LONG) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(AFTC, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Time Constant")
|
||||
promptgroup(GUI_ALARMS)
|
||||
interest(1)
|
||||
prompt("Alarm Filter Time Constant")
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(AFVL, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Value")
|
||||
special(SPC_NOMOD)
|
||||
interest(3)
|
||||
prompt("Alarm Filter Value")
|
||||
special(SPC_NOMOD)
|
||||
interest(3)
|
||||
}
|
||||
field(ADEL,DBF_LONG) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_LONG) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(LALM,DBF_LONG) {
|
||||
@@ -137,7 +136,7 @@ recordtype(longin) {
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_LONG) {
|
||||
@@ -145,7 +144,7 @@ recordtype(longin) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -155,7 +154,7 @@ recordtype(longin) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
|
||||
@@ -3,136 +3,135 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(longout) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_LONG) {
|
||||
prompt("Desired Output")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Loc")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(menuOmsl)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Units name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(DRVH,DBF_LONG) {
|
||||
prompt("Drive High Limit")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(DRVL,DBF_LONG) {
|
||||
prompt("Drive Low Limit")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_LONG) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_LONG) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIHI,DBF_LONG) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_LONG) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_LONG) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_LONG) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HYST,DBF_LONG) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_LONG) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_LONG) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(LALM,DBF_LONG) {
|
||||
@@ -152,12 +151,12 @@ recordtype(longout) {
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -167,19 +166,19 @@ recordtype(longout) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID output action")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_LONG) {
|
||||
prompt("INVALID output value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,9 +158,10 @@ static long put_array_info(DBADDR *paddr, long nNew)
|
||||
{
|
||||
lsiRecord *prec = (lsiRecord *) paddr->precord;
|
||||
|
||||
if (nNew == prec->sizv)
|
||||
--nNew; /* truncated string */
|
||||
prec->val[nNew] = 0; /* ensure data is terminated */
|
||||
if (nNew >= prec->sizv)
|
||||
nNew = prec->sizv - 1; /* truncated string */
|
||||
if (paddr->field_type == DBF_CHAR)
|
||||
prec->val[nNew] = 0; /* ensure data is terminated */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ recordtype(lsi) {
|
||||
}
|
||||
field(SIZV,DBF_USHORT) {
|
||||
prompt("Size of buffers")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("40 - Input")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("41")
|
||||
@@ -49,24 +49,24 @@ recordtype(lsi) {
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(MPST,DBF_MENU) {
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(menuPost)
|
||||
}
|
||||
field(APST,DBF_MENU) {
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(menuPost)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Simulation Mode Link")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -76,13 +76,13 @@ recordtype(lsi) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Simulation Mode Severity")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -200,9 +200,10 @@ static long put_array_info(DBADDR *paddr, long nNew)
|
||||
{
|
||||
lsoRecord *prec = (lsoRecord *) paddr->precord;
|
||||
|
||||
if (nNew == prec->sizv)
|
||||
--nNew; /* truncated string */
|
||||
prec->val[nNew] = 0; /* ensure data is terminated */
|
||||
if (nNew >= prec->sizv)
|
||||
nNew = prec->sizv - 1; /* truncated string */
|
||||
if (paddr->field_type == DBF_CHAR)
|
||||
prec->val[nNew] = 0; /* ensure data is terminated */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ recordtype(lso) {
|
||||
}
|
||||
field(SIZV,DBF_USHORT) {
|
||||
prompt("Size of buffers")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("41")
|
||||
@@ -50,47 +50,47 @@ recordtype(lso) {
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Link")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID Output Action")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_STRING) {
|
||||
prompt("INVALID Output Value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
size(40)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(menuOmsl)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(MPST,DBF_MENU) {
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(menuPost)
|
||||
}
|
||||
field(APST,DBF_MENU) {
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(menuPost)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode link")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -100,13 +100,13 @@ recordtype(lso) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,9 +120,9 @@ static long init_record(mbbiDirectRecord *prec, int pass)
|
||||
if (prec->siol.type == CONSTANT)
|
||||
recGblInitConstantLink(&prec->siol, DBF_USHORT, &prec->sval);
|
||||
|
||||
/* Initialize MASK if the user didn't */
|
||||
if (prec->mask == 0)
|
||||
prec->mask = (1 << prec->nobt) - 1;
|
||||
/* Initialize MASK if the user set NOBT instead */
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record) {
|
||||
status = pdset->init_record(prec);
|
||||
|
||||
@@ -10,19 +10,19 @@ recordtype(mbbiDirect) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_USHORT) {
|
||||
prompt("Current Value")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(NOBT,DBF_SHORT) {
|
||||
prompt("Number of Bits")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(RVAL,DBF_ULONG) {
|
||||
@@ -46,12 +46,12 @@ recordtype(mbbiDirect) {
|
||||
}
|
||||
field(SHFT,DBF_USHORT) {
|
||||
prompt("Shift")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_ULONG) {
|
||||
@@ -59,7 +59,7 @@ recordtype(mbbiDirect) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -69,7 +69,7 @@ recordtype(mbbiDirect) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
|
||||
@@ -137,9 +137,9 @@ static long init_record(mbbiRecord *prec, int pass)
|
||||
if (prec->siol.type == CONSTANT)
|
||||
recGblInitConstantLink(&prec->siol, DBF_USHORT, &prec->sval);
|
||||
|
||||
/* Initialize MASK if the user didn't */
|
||||
if (prec->mask == 0)
|
||||
prec->mask = (1 << prec->nobt) - 1;
|
||||
/* Initialize MASK if the user set NOBT instead */
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record)
|
||||
status = pdset->init_record(prec);
|
||||
|
||||
@@ -3,32 +3,31 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(mbbi) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_ENUM) {
|
||||
prompt("Current Value")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(NOBT,DBF_SHORT) {
|
||||
field(NOBT,DBF_USHORT) {
|
||||
prompt("Number of Bits")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(ZRVL,DBF_ULONG) {
|
||||
prompt("Zero Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -36,7 +35,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(ONVL,DBF_ULONG) {
|
||||
prompt("One Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -44,7 +43,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TWVL,DBF_ULONG) {
|
||||
prompt("Two Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -52,7 +51,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(THVL,DBF_ULONG) {
|
||||
prompt("Three Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -60,7 +59,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FRVL,DBF_ULONG) {
|
||||
prompt("Four Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -68,7 +67,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FVVL,DBF_ULONG) {
|
||||
prompt("Five Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -76,7 +75,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(SXVL,DBF_ULONG) {
|
||||
prompt("Six Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -84,7 +83,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(SVVL,DBF_ULONG) {
|
||||
prompt("Seven Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("41 - Input 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -92,7 +91,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(EIVL,DBF_ULONG) {
|
||||
prompt("Eight Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -100,7 +99,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(NIVL,DBF_ULONG) {
|
||||
prompt("Nine Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -108,7 +107,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TEVL,DBF_ULONG) {
|
||||
prompt("Ten Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -116,7 +115,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(ELVL,DBF_ULONG) {
|
||||
prompt("Eleven Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -124,7 +123,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TVVL,DBF_ULONG) {
|
||||
prompt("Twelve Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -132,7 +131,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TTVL,DBF_ULONG) {
|
||||
prompt("Thirteen Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -140,7 +139,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FTVL,DBF_ULONG) {
|
||||
prompt("Fourteen Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -148,7 +147,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FFVL,DBF_ULONG) {
|
||||
prompt("Fifteen Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("42 - Input 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -156,7 +155,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(ZRST,DBF_STRING) {
|
||||
prompt("Zero String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -164,7 +163,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(ONST,DBF_STRING) {
|
||||
prompt("One String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -172,7 +171,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TWST,DBF_STRING) {
|
||||
prompt("Two String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -180,7 +179,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(THST,DBF_STRING) {
|
||||
prompt("Three String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -188,7 +187,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FRST,DBF_STRING) {
|
||||
prompt("Four String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -196,7 +195,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FVST,DBF_STRING) {
|
||||
prompt("Five String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -204,7 +203,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(SXST,DBF_STRING) {
|
||||
prompt("Six String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -212,7 +211,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(SVST,DBF_STRING) {
|
||||
prompt("Seven String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -220,7 +219,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(EIST,DBF_STRING) {
|
||||
prompt("Eight String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -228,7 +227,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(NIST,DBF_STRING) {
|
||||
prompt("Nine String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -236,7 +235,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TEST,DBF_STRING) {
|
||||
prompt("Ten String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -244,7 +243,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(ELST,DBF_STRING) {
|
||||
prompt("Eleven String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -252,7 +251,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TVST,DBF_STRING) {
|
||||
prompt("Twelve String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -260,7 +259,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(TTST,DBF_STRING) {
|
||||
prompt("Thirteen String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -268,7 +267,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FTST,DBF_STRING) {
|
||||
prompt("Fourteen String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -276,7 +275,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(FFST,DBF_STRING) {
|
||||
prompt("Fifteen String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -284,136 +283,136 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(ZRSV,DBF_MENU) {
|
||||
prompt("State Zero Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(ONSV,DBF_MENU) {
|
||||
prompt("State One Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TWSV,DBF_MENU) {
|
||||
prompt("State Two Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(THSV,DBF_MENU) {
|
||||
prompt("State Three Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FRSV,DBF_MENU) {
|
||||
prompt("State Four Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FVSV,DBF_MENU) {
|
||||
prompt("State Five Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SXSV,DBF_MENU) {
|
||||
prompt("State Six Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SVSV,DBF_MENU) {
|
||||
prompt("State Seven Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(EISV,DBF_MENU) {
|
||||
prompt("State Eight Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(NISV,DBF_MENU) {
|
||||
prompt("State Nine Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TESV,DBF_MENU) {
|
||||
prompt("State Ten Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(ELSV,DBF_MENU) {
|
||||
prompt("State Eleven Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TVSV,DBF_MENU) {
|
||||
prompt("State Twelve Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TTSV,DBF_MENU) {
|
||||
prompt("State Thirteen Sevr")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FTSV,DBF_MENU) {
|
||||
prompt("State Fourteen Sevr")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FFSV,DBF_MENU) {
|
||||
prompt("State Fifteen Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(AFTC, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Time Constant")
|
||||
promptgroup(GUI_ALARMS)
|
||||
interest(1)
|
||||
}
|
||||
field(AFVL, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Value")
|
||||
special(SPC_NOMOD)
|
||||
interest(3)
|
||||
}
|
||||
field(AFTC, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Time Constant")
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(AFVL, DBF_DOUBLE) {
|
||||
prompt("Alarm Filter Value")
|
||||
special(SPC_NOMOD)
|
||||
interest(3)
|
||||
}
|
||||
field(UNSV,DBF_MENU) {
|
||||
prompt("Unknown State Severity")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(COSV,DBF_MENU) {
|
||||
prompt("Change of State Svr")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
@@ -449,12 +448,12 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(SHFT,DBF_USHORT) {
|
||||
prompt("Shift")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_ULONG) {
|
||||
@@ -462,7 +461,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -472,7 +471,7 @@ recordtype(mbbi) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
|
||||
@@ -123,9 +123,9 @@ static long init_record(mbboDirectRecord *prec, int pass)
|
||||
if (recGblInitConstantLink(&prec->dol, DBF_USHORT, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
/* Initialize MASK if the user didn't */
|
||||
if (prec->mask == 0)
|
||||
prec->mask = (1 << prec->nobt) - 1;
|
||||
/* Initialize MASK if the user set NOBT instead */
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record) {
|
||||
status = pdset->init_record(prec);
|
||||
|
||||
@@ -10,13 +10,13 @@ recordtype(mbboDirect) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_USHORT) {
|
||||
prompt("Word")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
special(SPC_RESET)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -24,128 +24,128 @@ recordtype(mbboDirect) {
|
||||
}
|
||||
field(NOBT,DBF_SHORT) {
|
||||
prompt("Number of Bits")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Loc")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(B0,DBF_UCHAR) {
|
||||
prompt("Bit 0")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B1,DBF_UCHAR) {
|
||||
prompt("Bit 1")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B2,DBF_UCHAR) {
|
||||
prompt("Bit 2")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B3,DBF_UCHAR) {
|
||||
prompt("Bit 3")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B4,DBF_UCHAR) {
|
||||
prompt("Bit 4")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B5,DBF_UCHAR) {
|
||||
prompt("Bit 5")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B6,DBF_UCHAR) {
|
||||
prompt("Bit 6")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B7,DBF_UCHAR) {
|
||||
prompt("Bit 7")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B8,DBF_UCHAR) {
|
||||
prompt("Bit 8")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(B9,DBF_UCHAR) {
|
||||
prompt("Bit 9")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(BA,DBF_UCHAR) {
|
||||
prompt("Bit 10")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(BB,DBF_UCHAR) {
|
||||
prompt("Bit 11")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(BC,DBF_UCHAR) {
|
||||
prompt("Bit 12")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(BD,DBF_UCHAR) {
|
||||
prompt("Bit 13")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(BE,DBF_UCHAR) {
|
||||
prompt("Bit 14")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(BF,DBF_UCHAR) {
|
||||
prompt("Bit 15")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 9-F")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -181,17 +181,17 @@ recordtype(mbboDirect) {
|
||||
}
|
||||
field(SHFT,DBF_ULONG) {
|
||||
prompt("Shift")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -201,19 +201,19 @@ recordtype(mbboDirect) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID outpt action")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_USHORT) {
|
||||
prompt("INVALID output value")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,9 +143,9 @@ static long init_record(mbboRecord *prec, int pass)
|
||||
if (recGblInitConstantLink(&prec->dol, DBF_USHORT, &prec->val))
|
||||
prec->udf = FALSE;
|
||||
|
||||
/* Initialize MASK if the user didn't */
|
||||
if (prec->mask == 0)
|
||||
prec->mask = (1 << prec->nobt) - 1;
|
||||
/* Initialize MASK if the user set NOBT instead */
|
||||
if (prec->mask == 0 && prec->nobt <= 32)
|
||||
prec->mask = ((epicsUInt64) 1u << prec->nobt) - 1;
|
||||
|
||||
if (pdset->init_record) {
|
||||
status = pdset->init_record(prec);
|
||||
|
||||
@@ -3,15 +3,14 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(mbbo) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_ENUM) {
|
||||
prompt("Desired Value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
special(SPC_DBADDR)
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
@@ -20,29 +19,29 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Loc")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(menuOmsl)
|
||||
}
|
||||
field(NOBT,DBF_SHORT) {
|
||||
field(NOBT,DBF_USHORT) {
|
||||
prompt("Number of Bits")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(ZRVL,DBF_ULONG) {
|
||||
prompt("Zero Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -50,7 +49,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(ONVL,DBF_ULONG) {
|
||||
prompt("One Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -58,7 +57,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TWVL,DBF_ULONG) {
|
||||
prompt("Two Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -66,7 +65,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(THVL,DBF_ULONG) {
|
||||
prompt("Three Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -74,7 +73,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FRVL,DBF_ULONG) {
|
||||
prompt("Four Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -82,7 +81,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FVVL,DBF_ULONG) {
|
||||
prompt("Five Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -90,7 +89,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(SXVL,DBF_ULONG) {
|
||||
prompt("Six Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -98,7 +97,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(SVVL,DBF_ULONG) {
|
||||
prompt("Seven Value")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("51 - Output 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -106,7 +105,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(EIVL,DBF_ULONG) {
|
||||
prompt("Eight Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -114,7 +113,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(NIVL,DBF_ULONG) {
|
||||
prompt("Nine Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -122,7 +121,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TEVL,DBF_ULONG) {
|
||||
prompt("Ten Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -130,7 +129,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(ELVL,DBF_ULONG) {
|
||||
prompt("Eleven Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -138,7 +137,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TVVL,DBF_ULONG) {
|
||||
prompt("Twelve Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -146,7 +145,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TTVL,DBF_ULONG) {
|
||||
prompt("Thirteen Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -154,7 +153,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FTVL,DBF_ULONG) {
|
||||
prompt("Fourteen Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -162,7 +161,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FFVL,DBF_ULONG) {
|
||||
prompt("Fifteen Value")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("52 - Output 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
base(HEX)
|
||||
@@ -170,7 +169,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(ZRST,DBF_STRING) {
|
||||
prompt("Zero String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -178,7 +177,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(ONST,DBF_STRING) {
|
||||
prompt("One String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -186,7 +185,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TWST,DBF_STRING) {
|
||||
prompt("Two String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -194,7 +193,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(THST,DBF_STRING) {
|
||||
prompt("Three String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -202,7 +201,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FRST,DBF_STRING) {
|
||||
prompt("Four String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -210,7 +209,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FVST,DBF_STRING) {
|
||||
prompt("Five String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -218,7 +217,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(SXST,DBF_STRING) {
|
||||
prompt("Six String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -226,7 +225,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(SVST,DBF_STRING) {
|
||||
prompt("Seven String")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("81 - Display 0-7")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -234,7 +233,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(EIST,DBF_STRING) {
|
||||
prompt("Eight String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -242,7 +241,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(NIST,DBF_STRING) {
|
||||
prompt("Nine String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -250,7 +249,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TEST,DBF_STRING) {
|
||||
prompt("Ten String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -258,7 +257,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(ELST,DBF_STRING) {
|
||||
prompt("Eleven String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -266,7 +265,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TVST,DBF_STRING) {
|
||||
prompt("Twelve String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -274,7 +273,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(TTST,DBF_STRING) {
|
||||
prompt("Thirteen String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -282,7 +281,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FTST,DBF_STRING) {
|
||||
prompt("Fourteen String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -290,7 +289,7 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(FFST,DBF_STRING) {
|
||||
prompt("Fifteen String")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("82 - Display 8-15")
|
||||
special(SPC_MOD)
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
@@ -298,126 +297,126 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(ZRSV,DBF_MENU) {
|
||||
prompt("State Zero Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(ONSV,DBF_MENU) {
|
||||
prompt("State One Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TWSV,DBF_MENU) {
|
||||
prompt("State Two Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(THSV,DBF_MENU) {
|
||||
prompt("State Three Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FRSV,DBF_MENU) {
|
||||
prompt("State Four Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FVSV,DBF_MENU) {
|
||||
prompt("State Five Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SXSV,DBF_MENU) {
|
||||
prompt("State Six Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(SVSV,DBF_MENU) {
|
||||
prompt("State Seven Severity")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("71 - Alarm 0-7")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(EISV,DBF_MENU) {
|
||||
prompt("State Eight Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(NISV,DBF_MENU) {
|
||||
prompt("State Nine Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TESV,DBF_MENU) {
|
||||
prompt("State Ten Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(ELSV,DBF_MENU) {
|
||||
prompt("State Eleven Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TVSV,DBF_MENU) {
|
||||
prompt("State Twelve Severity")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(TTSV,DBF_MENU) {
|
||||
prompt("State Thirteen Sevr")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FTSV,DBF_MENU) {
|
||||
prompt("State Fourteen Sevr")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(FFSV,DBF_MENU) {
|
||||
prompt("State Fifteen Sevr")
|
||||
promptgroup(GUI_BITS2)
|
||||
promptgroup("72 - Alarm 8-15")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(UNSV,DBF_MENU) {
|
||||
prompt("Unknown State Sevr")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(COSV,DBF_MENU) {
|
||||
prompt("Change of State Sevr")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
@@ -462,17 +461,17 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(SHFT,DBF_USHORT) {
|
||||
prompt("Shift")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -482,19 +481,19 @@ recordtype(mbbo) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID outpt action")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_USHORT) {
|
||||
prompt("INVALID output value")
|
||||
promptgroup(GUI_MBB)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,21 +3,21 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(permissive) {
|
||||
include "dbCommon.dbd"
|
||||
field(LABL,DBF_STRING) {
|
||||
prompt("Button Label")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
size(20)
|
||||
}
|
||||
field(VAL,DBF_USHORT) {
|
||||
prompt("Status")
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ recordtype(printf) {
|
||||
}
|
||||
field(SIZV,DBF_USHORT) {
|
||||
prompt("Size of VAL buffer")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("41")
|
||||
@@ -39,69 +39,69 @@ recordtype(printf) {
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(FMT,DBF_STRING) {
|
||||
prompt("Format String")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
size(81)
|
||||
}
|
||||
field(IVLS,DBF_STRING) {
|
||||
prompt("Invalid Link String")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("30 - Action")
|
||||
size(16)
|
||||
initial("LNK")
|
||||
}
|
||||
field(INP0,DBF_INLINK) {
|
||||
prompt("Input 0")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP1,DBF_INLINK) {
|
||||
prompt("Input 1")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP2,DBF_INLINK) {
|
||||
prompt("Input 2")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP3,DBF_INLINK) {
|
||||
prompt("Input 3")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP4,DBF_INLINK) {
|
||||
prompt("Input 4")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP5,DBF_INLINK) {
|
||||
prompt("Input 5")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP6,DBF_INLINK) {
|
||||
prompt("Input 6")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP7,DBF_INLINK) {
|
||||
prompt("Input 7")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP8,DBF_INLINK) {
|
||||
prompt("Input 8")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(INP9,DBF_INLINK) {
|
||||
prompt("Input 9")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
%/* Number of INPx fields defined */
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
menu(selSELM) {
|
||||
choice(selSELM_Specified,"Specified")
|
||||
@@ -17,12 +16,13 @@ recordtype(sel) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Result")
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
special(SPC_NOMOD)
|
||||
}
|
||||
field(SELM,DBF_MENU) {
|
||||
prompt("Select Mechanism")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("30 - Action")
|
||||
menu(selSELM)
|
||||
}
|
||||
field(SELN,DBF_USHORT) {
|
||||
@@ -30,124 +30,124 @@ recordtype(sel) {
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(NVL,DBF_INLINK) {
|
||||
prompt("Index Value Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
}
|
||||
field(INPA,DBF_INLINK) {
|
||||
prompt("Input A")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPB,DBF_INLINK) {
|
||||
prompt("Input B")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPC,DBF_INLINK) {
|
||||
prompt("Input C")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPD,DBF_INLINK) {
|
||||
prompt("Input D")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPE,DBF_INLINK) {
|
||||
prompt("Input E")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPF,DBF_INLINK) {
|
||||
prompt("Input F")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPG,DBF_INLINK) {
|
||||
prompt("Input G")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPH,DBF_INLINK) {
|
||||
prompt("Input H")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPI,DBF_INLINK) {
|
||||
prompt("Input I")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPJ,DBF_INLINK) {
|
||||
prompt("Input J")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPK,DBF_INLINK) {
|
||||
prompt("Input K")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPL,DBF_INLINK) {
|
||||
prompt("Input L")
|
||||
promptgroup(GUI_SELECT)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Units Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Rng")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIHI,DBF_DOUBLE) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_DOUBLE) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_DOUBLE) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -155,7 +155,7 @@ recordtype(sel) {
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -163,7 +163,7 @@ recordtype(sel) {
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -171,7 +171,7 @@ recordtype(sel) {
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -179,17 +179,17 @@ recordtype(sel) {
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(A,DBF_DOUBLE) {
|
||||
|
||||
@@ -20,7 +20,7 @@ recordtype(seq) {
|
||||
}
|
||||
field(SELM,DBF_MENU) {
|
||||
prompt("Select Mechanism")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
menu(seqSELM)
|
||||
}
|
||||
@@ -31,7 +31,7 @@ recordtype(seq) {
|
||||
}
|
||||
field(SELL,DBF_INLINK) {
|
||||
prompt("Link Selection Loc")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("30 - Action")
|
||||
interest(1)
|
||||
}
|
||||
field(OFFS,DBF_SHORT) {
|
||||
@@ -50,17 +50,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY0,DBF_DOUBLE) {
|
||||
prompt("Delay 0")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL0,DBF_INLINK) {
|
||||
prompt("Input link 0")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO0,DBF_DOUBLE) {
|
||||
@@ -69,17 +69,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK0,DBF_OUTLINK) {
|
||||
prompt("Output Link 0")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY1,DBF_DOUBLE) {
|
||||
prompt("Delay 1")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL1,DBF_INLINK) {
|
||||
prompt("Input link1")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO1,DBF_DOUBLE) {
|
||||
@@ -88,17 +88,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK1,DBF_OUTLINK) {
|
||||
prompt("Output Link 1")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY2,DBF_DOUBLE) {
|
||||
prompt("Delay 2")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL2,DBF_INLINK) {
|
||||
prompt("Input link 2")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO2,DBF_DOUBLE) {
|
||||
@@ -107,17 +107,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK2,DBF_OUTLINK) {
|
||||
prompt("Output Link 2")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY3,DBF_DOUBLE) {
|
||||
prompt("Delay 3")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL3,DBF_INLINK) {
|
||||
prompt("Input link 3")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO3,DBF_DOUBLE) {
|
||||
@@ -126,17 +126,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK3,DBF_OUTLINK) {
|
||||
prompt("Output Link 3")
|
||||
promptgroup(GUI_SEQ1)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY4,DBF_DOUBLE) {
|
||||
prompt("Delay 4")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL4,DBF_INLINK) {
|
||||
prompt("Input link 4")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO4,DBF_DOUBLE) {
|
||||
@@ -145,17 +145,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK4,DBF_OUTLINK) {
|
||||
prompt("Output Link 4")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY5,DBF_DOUBLE) {
|
||||
prompt("Delay 5")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL5,DBF_INLINK) {
|
||||
prompt("Input link 5")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO5,DBF_DOUBLE) {
|
||||
@@ -164,17 +164,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK5,DBF_OUTLINK) {
|
||||
prompt("Output Link 5")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY6,DBF_DOUBLE) {
|
||||
prompt("Delay 6")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL6,DBF_INLINK) {
|
||||
prompt("Input link 6")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO6,DBF_DOUBLE) {
|
||||
@@ -183,17 +183,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK6,DBF_OUTLINK) {
|
||||
prompt("Output Link 6")
|
||||
promptgroup(GUI_SEQ2)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY7,DBF_DOUBLE) {
|
||||
prompt("Delay 7")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL7,DBF_INLINK) {
|
||||
prompt("Input link 7")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DO7,DBF_DOUBLE) {
|
||||
@@ -202,17 +202,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK7,DBF_OUTLINK) {
|
||||
prompt("Output Link 7")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("41 - Link 0-7")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY8,DBF_DOUBLE) {
|
||||
prompt("Delay 8")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL8,DBF_INLINK) {
|
||||
prompt("Input link 8")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DO8,DBF_DOUBLE) {
|
||||
@@ -221,17 +221,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK8,DBF_OUTLINK) {
|
||||
prompt("Output Link 8")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DLY9,DBF_DOUBLE) {
|
||||
prompt("Delay 9")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOL9,DBF_INLINK) {
|
||||
prompt("Input link 9")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DO9,DBF_DOUBLE) {
|
||||
@@ -240,17 +240,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNK9,DBF_OUTLINK) {
|
||||
prompt("Output Link 9")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DLYA,DBF_DOUBLE) {
|
||||
prompt("Delay 10")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOLA,DBF_INLINK) {
|
||||
prompt("Input link 10")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOA,DBF_DOUBLE) {
|
||||
@@ -259,17 +259,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNKA,DBF_OUTLINK) {
|
||||
prompt("Output Link 10")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DLYB,DBF_DOUBLE) {
|
||||
prompt("Delay 11")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOLB,DBF_INLINK) {
|
||||
prompt("Input link 11")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOB,DBF_DOUBLE) {
|
||||
@@ -278,17 +278,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNKB,DBF_OUTLINK) {
|
||||
prompt("Output Link 11")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DLYC,DBF_DOUBLE) {
|
||||
prompt("Delay 12")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOLC,DBF_INLINK) {
|
||||
prompt("Input link 12")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOC,DBF_DOUBLE) {
|
||||
@@ -297,17 +297,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNKC,DBF_OUTLINK) {
|
||||
prompt("Output Link 12")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DLYD,DBF_DOUBLE) {
|
||||
prompt("Delay 13")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOLD,DBF_INLINK) {
|
||||
prompt("Input link 13")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOD,DBF_DOUBLE) {
|
||||
@@ -316,17 +316,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNKD,DBF_OUTLINK) {
|
||||
prompt("Output Link 13")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DLYE,DBF_DOUBLE) {
|
||||
prompt("Delay 14")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOLE,DBF_INLINK) {
|
||||
prompt("Input link 14")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOE,DBF_DOUBLE) {
|
||||
@@ -335,17 +335,17 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNKE,DBF_OUTLINK) {
|
||||
prompt("Output Link 14")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DLYF,DBF_DOUBLE) {
|
||||
prompt("Delay 15")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOLF,DBF_INLINK) {
|
||||
prompt("Input link 15")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
field(DOF,DBF_DOUBLE) {
|
||||
@@ -354,7 +354,7 @@ recordtype(seq) {
|
||||
}
|
||||
field(LNKF,DBF_OUTLINK) {
|
||||
prompt("Output Link 15")
|
||||
promptgroup(GUI_SEQ3)
|
||||
promptgroup("42 - Link 8-F")
|
||||
interest(1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,15 +3,14 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(state) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_STRING) {
|
||||
prompt("Value")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
size(20)
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
menu(stringinPOST) {
|
||||
choice(stringinPOST_OnChange,"On Change")
|
||||
@@ -15,7 +14,7 @@ recordtype(stringin) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_STRING) {
|
||||
prompt("Current Value")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
size(40)
|
||||
@@ -28,24 +27,24 @@ recordtype(stringin) {
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(MPST,DBF_MENU) {
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(stringinPOST)
|
||||
}
|
||||
field(APST,DBF_MENU) {
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(stringinPOST)
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SVAL,DBF_STRING) {
|
||||
@@ -55,7 +54,7 @@ recordtype(stringin) {
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -65,7 +64,7 @@ recordtype(stringin) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
menu(stringoutPOST) {
|
||||
choice(stringoutPOST_OnChange,"On Change")
|
||||
@@ -15,7 +14,7 @@ recordtype(stringout) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_STRING) {
|
||||
prompt("Current Value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
size(40)
|
||||
@@ -28,40 +27,40 @@ recordtype(stringout) {
|
||||
}
|
||||
field(DOL,DBF_INLINK) {
|
||||
prompt("Desired Output Loc")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(OMSL,DBF_MENU) {
|
||||
prompt("Output Mode Select")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
menu(menuOmsl)
|
||||
}
|
||||
field(OUT,DBF_OUTLINK) {
|
||||
prompt("Output Specification")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(1)
|
||||
}
|
||||
field(MPST,DBF_MENU) {
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(stringoutPOST)
|
||||
}
|
||||
field(APST,DBF_MENU) {
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(stringoutPOST)
|
||||
}
|
||||
field(SIOL,DBF_OUTLINK) {
|
||||
prompt("Sim Output Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -71,19 +70,19 @@ recordtype(stringout) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(IVOA,DBF_MENU) {
|
||||
prompt("INVALID output action")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
menu(menuIvoa)
|
||||
}
|
||||
field(IVOV,DBF_STRING) {
|
||||
prompt("INVALID output value")
|
||||
promptgroup(GUI_OUTPUT)
|
||||
promptgroup("50 - Output")
|
||||
interest(2)
|
||||
size(40)
|
||||
}
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
recordtype(subArray) {
|
||||
include "dbCommon.dbd"
|
||||
@@ -21,57 +20,57 @@ recordtype(subArray) {
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_COMMON)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(FTVL,DBF_MENU) {
|
||||
prompt("Field Type of Value")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
menu(menuFtype)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_BITS1)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Engineering Units Name")
|
||||
promptgroup(GUI_BITS2)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_CALC)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_CLOCK)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(MALM,DBF_ULONG) {
|
||||
prompt("Maximum Elements ")
|
||||
promptgroup(GUI_CLOCK)
|
||||
prompt("Maximum Elements")
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(NELM,DBF_ULONG) {
|
||||
prompt("Number of Elements")
|
||||
promptgroup(GUI_COMPRESS)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
initial("1")
|
||||
}
|
||||
field(INDX,DBF_ULONG) {
|
||||
prompt("Substring Index")
|
||||
promptgroup(GUI_CONVERT)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
}
|
||||
field(BUSY,DBF_SHORT) {
|
||||
|
||||
@@ -15,14 +15,14 @@ recordtype(sub) {
|
||||
}
|
||||
field(INAM,DBF_STRING) {
|
||||
prompt("Init Routine Name")
|
||||
promptgroup(GUI_SUB)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
size(40)
|
||||
}
|
||||
field(SNAM,DBF_STRING) {
|
||||
prompt("Subroutine Name")
|
||||
promptgroup(GUI_SUB)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_MOD)
|
||||
interest(1)
|
||||
size(40)
|
||||
@@ -37,127 +37,127 @@ recordtype(sub) {
|
||||
}
|
||||
field(INPA,DBF_INLINK) {
|
||||
prompt("Input A")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPB,DBF_INLINK) {
|
||||
prompt("Input B")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPC,DBF_INLINK) {
|
||||
prompt("Input C")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPD,DBF_INLINK) {
|
||||
prompt("Input D")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPE,DBF_INLINK) {
|
||||
prompt("Input E")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPF,DBF_INLINK) {
|
||||
prompt("Input F")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("41 - Input A-F")
|
||||
interest(1)
|
||||
}
|
||||
field(INPG,DBF_INLINK) {
|
||||
prompt("Input G")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPH,DBF_INLINK) {
|
||||
prompt("Input H")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPI,DBF_INLINK) {
|
||||
prompt("Input I")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPJ,DBF_INLINK) {
|
||||
prompt("Input J")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPK,DBF_INLINK) {
|
||||
prompt("Input K")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(INPL,DBF_INLINK) {
|
||||
prompt("Input L")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("42 - Input G-L")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Units Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Rng")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("High Operating Range")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIHI,DBF_DOUBLE) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOLO,DBF_DOUBLE) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(HIGH,DBF_DOUBLE) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOW,DBF_DOUBLE) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(BRSV,DBF_MENU) {
|
||||
prompt("Bad Return Severity")
|
||||
promptgroup(GUI_SUB)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -165,7 +165,7 @@ recordtype(sub) {
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -173,7 +173,7 @@ recordtype(sub) {
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -181,7 +181,7 @@ recordtype(sub) {
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
prop(YES)
|
||||
@@ -189,17 +189,17 @@ recordtype(sub) {
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(A,DBF_DOUBLE) {
|
||||
|
||||
@@ -13,6 +13,7 @@ include $(TOP)/configure/CONFIG
|
||||
PROD_LIBS = dbRecStd dbCore ca Com
|
||||
|
||||
TARGETS += $(COMMON_DIR)/recTestIoc.dbd
|
||||
DBDDEPENDS_FILES += recTestIoc.dbd$(DEP)
|
||||
recTestIoc_DBD = base.dbd
|
||||
TESTFILES += $(COMMON_DIR)/recTestIoc.dbd
|
||||
|
||||
@@ -26,6 +27,7 @@ TESTFILES += ../arrayOpTest.db
|
||||
TESTS += arrayOpTest
|
||||
|
||||
TARGETS += $(COMMON_DIR)/analogMonitorTest.dbd
|
||||
DBDDEPENDS_FILES += analogMonitorTest.dbd$(DEP)
|
||||
analogMonitorTest_DBD += base.dbd
|
||||
TESTPROD_HOST += analogMonitorTest
|
||||
analogMonitorTest_SRCS += analogMonitorTest.c
|
||||
@@ -35,6 +37,14 @@ testHarness_SRCS += analogMonitorTest_registerRecordDeviceDriver.cpp
|
||||
TESTFILES += $(COMMON_DIR)/analogMonitorTest.dbd ../analogMonitorTest.db
|
||||
TESTS += analogMonitorTest
|
||||
|
||||
TARGETS += $(COMMON_DIR)/regressTest.dbd
|
||||
regressTest_DBD += base.dbd
|
||||
TESTPROD_HOST += regressTest
|
||||
regressTest_SRCS += regressTest.c
|
||||
regressTest_SRCS += regressTest_registerRecordDeviceDriver.cpp
|
||||
TESTFILES += $(COMMON_DIR)/regressTest.dbd ../regressArray1.db
|
||||
TESTS += regressTest
|
||||
|
||||
# epicsRunRecordTests runs all the test programs in a known working order.
|
||||
testHarness_SRCS += epicsRunRecordTests.c
|
||||
|
||||
|
||||
9
src/std/rec/test/regressArray1.db
Normal file
9
src/std/rec/test/regressArray1.db
Normal file
@@ -0,0 +1,9 @@
|
||||
record(waveform, "wf") {
|
||||
field(FTVL, "DOUBLE")
|
||||
field(NELM, "1")
|
||||
field(FLNK, "co")
|
||||
}
|
||||
record(calcout, "co") {
|
||||
field(CALC, "A")
|
||||
field(INPA, "wf")
|
||||
}
|
||||
73
src/std/rec/test/regressTest.c
Normal file
73
src/std/rec/test/regressTest.c
Normal file
@@ -0,0 +1,73 @@
|
||||
/*************************************************************************\
|
||||
* Copyright (c) 2016 Michael Davidsaver
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
#include <dbUnitTest.h>
|
||||
#include <testMain.h>
|
||||
#include <dbAccess.h>
|
||||
#include <errlog.h>
|
||||
|
||||
#include <calcoutRecord.h>
|
||||
#include <waveformRecord.h>
|
||||
|
||||
/*
|
||||
* Test the some identified regressions
|
||||
*/
|
||||
|
||||
void regressTest_registerRecordDeviceDriver(struct dbBase *);
|
||||
|
||||
/*
|
||||
* https://bugs.launchpad.net/epics-base/+bug/1577108
|
||||
*/
|
||||
static
|
||||
void testArrayLength1(void)
|
||||
{
|
||||
waveformRecord *precwf;
|
||||
calcoutRecord *precco;
|
||||
double *pbuf;
|
||||
|
||||
testdbPrepare();
|
||||
|
||||
testdbReadDatabase("regressTest.dbd", NULL, NULL);
|
||||
|
||||
regressTest_registerRecordDeviceDriver(pdbbase);
|
||||
|
||||
testdbReadDatabase("regressArray1.db", NULL, NULL);
|
||||
|
||||
precwf = (waveformRecord*)testdbRecordPtr("wf");
|
||||
precco = (calcoutRecord*)testdbRecordPtr("co");
|
||||
|
||||
eltc(0);
|
||||
testIocInitOk();
|
||||
eltc(1);
|
||||
|
||||
dbScanLock((dbCommon*)precwf);
|
||||
pbuf = (double*)precwf->bptr;
|
||||
dbScanUnlock((dbCommon*)precwf);
|
||||
|
||||
testdbPutFieldOk("wf", DBF_DOUBLE, 2.0);
|
||||
|
||||
dbScanLock((dbCommon*)precwf);
|
||||
testOk(precwf->nord==1, "wf.NORD = %u == 1", (unsigned)precwf->nord);
|
||||
testOk(pbuf[0]==2.0, "wf.VAL[0] = %f == 2.0", pbuf[0]);
|
||||
dbScanUnlock((dbCommon*)precwf);
|
||||
|
||||
dbScanLock((dbCommon*)precco);
|
||||
testOk(precco->a==2.0, "co.A = %f == 2.0", precco->a);
|
||||
dbScanUnlock((dbCommon*)precco);
|
||||
|
||||
testdbGetFieldEqual("co", DBF_DOUBLE, 2.0);
|
||||
|
||||
testIocShutdownOk();
|
||||
|
||||
testdbCleanup();
|
||||
}
|
||||
|
||||
MAIN(regressTest)
|
||||
{
|
||||
testPlan(5);
|
||||
testArrayLength1();
|
||||
return testDone();
|
||||
}
|
||||
@@ -56,50 +56,50 @@ recordtype(waveform) {
|
||||
}
|
||||
field(RARM,DBF_SHORT) {
|
||||
prompt("Rearm the waveform")
|
||||
promptgroup(GUI_WAVE)
|
||||
promptgroup("30 - Action")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Engineering Units Name")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
prompt("Engineering Units")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
prop(YES)
|
||||
}
|
||||
field(HOPR,DBF_DOUBLE) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(LOPR,DBF_DOUBLE) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
prop(YES)
|
||||
}
|
||||
field(NELM,DBF_ULONG) {
|
||||
prompt("Number of Elements")
|
||||
promptgroup(GUI_WAVE)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
initial("1")
|
||||
}
|
||||
field(FTVL,DBF_MENU) {
|
||||
prompt("Field Type of Value")
|
||||
promptgroup(GUI_WAVE)
|
||||
promptgroup("30 - Action")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
menu(menuFtype)
|
||||
@@ -120,12 +120,12 @@ recordtype(waveform) {
|
||||
}
|
||||
field(SIOL,DBF_INLINK) {
|
||||
prompt("Sim Input Specifctn")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIML,DBF_INLINK) {
|
||||
prompt("Sim Mode Location")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(1)
|
||||
}
|
||||
field(SIMM,DBF_MENU) {
|
||||
@@ -135,22 +135,22 @@ recordtype(waveform) {
|
||||
}
|
||||
field(SIMS,DBF_MENU) {
|
||||
prompt("Sim mode Alarm Svrty")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("90 - Simulate")
|
||||
interest(2)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(MPST,DBF_MENU) {
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
interest(1)
|
||||
menu(waveformPOST)
|
||||
prompt("Post Value Monitors")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(waveformPOST)
|
||||
}
|
||||
field(APST,DBF_MENU) {
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
interest(1)
|
||||
menu(waveformPOST)
|
||||
}
|
||||
prompt("Post Archive Monitors")
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
menu(waveformPOST)
|
||||
}
|
||||
field(HASH,DBF_ULONG) {
|
||||
prompt("Hash of OnChange data.")
|
||||
interest(3)
|
||||
|
||||
@@ -1,7 +1,15 @@
|
||||
# $Revision-Id$
|
||||
#
|
||||
# softIocExit.db
|
||||
|
||||
record(sub,"$(IOC):exit") {
|
||||
field(DESC,"Exit subroutine")
|
||||
field(SCAN,"Passive")
|
||||
field(SNAM,"exit")
|
||||
field(DESC,"Exit subroutine")
|
||||
field(SCAN,"Passive")
|
||||
field(SNAM,"exit")
|
||||
}
|
||||
|
||||
record(stringin,"$(IOC):BaseVersion") {
|
||||
field(DESC,"EPICS Base Version")
|
||||
field(DTYP,"getenv")
|
||||
field(INP,"@EPICS_VERSION_FULL")
|
||||
field(PINI,"YES")
|
||||
field(DISP,1)
|
||||
}
|
||||
|
||||
@@ -2,101 +2,102 @@ recordtype(xxx) {
|
||||
include "dbCommon.dbd"
|
||||
field(VAL,DBF_DOUBLE) {
|
||||
prompt("Current EGU Value")
|
||||
asl(ASL0)
|
||||
promptgroup("40 - Input")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
}
|
||||
field(INP,DBF_INLINK) {
|
||||
prompt("Input Specification")
|
||||
promptgroup(GUI_INPUTS)
|
||||
promptgroup("40 - Input")
|
||||
special(SPC_NOMOD)
|
||||
interest(1)
|
||||
}
|
||||
field(PREC,DBF_SHORT) {
|
||||
prompt("Display Precision")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(EGU,DBF_STRING) {
|
||||
prompt("Engineering Units")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
size(16)
|
||||
}
|
||||
field(HOPR,DBF_FLOAT) {
|
||||
prompt("High Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(LOPR,DBF_FLOAT) {
|
||||
prompt("Low Operating Range")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(HIHI,DBF_FLOAT) {
|
||||
prompt("Hihi Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(LOLO,DBF_FLOAT) {
|
||||
prompt("Lolo Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(HIGH,DBF_FLOAT) {
|
||||
prompt("High Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(LOW,DBF_FLOAT) {
|
||||
prompt("Low Alarm Limit")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
}
|
||||
field(HHSV,DBF_MENU) {
|
||||
prompt("Hihi Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LLSV,DBF_MENU) {
|
||||
prompt("Lolo Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HSV,DBF_MENU) {
|
||||
prompt("High Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(LSV,DBF_MENU) {
|
||||
prompt("Low Severity")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
pp(TRUE)
|
||||
interest(1)
|
||||
menu(menuAlarmSevr)
|
||||
}
|
||||
field(HYST,DBF_DOUBLE) {
|
||||
prompt("Alarm Deadband")
|
||||
promptgroup(GUI_ALARMS)
|
||||
promptgroup("70 - Alarm")
|
||||
interest(1)
|
||||
}
|
||||
field(ADEL,DBF_DOUBLE) {
|
||||
prompt("Archive Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(MDEL,DBF_DOUBLE) {
|
||||
prompt("Monitor Deadband")
|
||||
promptgroup(GUI_DISPLAY)
|
||||
promptgroup("80 - Display")
|
||||
interest(1)
|
||||
}
|
||||
field(LALM,DBF_DOUBLE) {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
TOP = ../..
|
||||
include $(TOP)/configure/CONFIG
|
||||
ARCH = _ARCH_
|
||||
TARGETS = envPaths
|
||||
include $(TOP)/configure/RULES.ioc
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user