Merged changes from 3.14 branch
Up to revno 12398, i.e. the R3.14.12.3 release.
This commit is contained in:
@ -377,6 +377,7 @@ INSTALL_LIB_INSTALLS = $(addprefix $(INSTALL_LIB)/,$(notdir $(LIB_INSTALLS)))
|
||||
# Installed file permissions
|
||||
BIN_PERMISSIONS = 555
|
||||
LIB_PERMISSIONS = 444
|
||||
SHRLIB_PERMISSIONS = 555
|
||||
INSTALL_PERMISSIONS = 444
|
||||
|
||||
#---------------------------------------------------------------
|
||||
|
@ -68,6 +68,7 @@
|
||||
# linux-cris (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-cris_v10 (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-cris_v32 (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-microblaze
|
||||
# linux-xscale_be
|
||||
# vxWorks-486
|
||||
# vxWorks-68040
|
||||
|
@ -385,7 +385,7 @@ endif # SUFFIX
|
||||
|
||||
$(INSTALL_SHRLIBS): $(INSTALL_SHRLIB)/%: %
|
||||
$(ECHO) "Installing shared library $@"
|
||||
@$(INSTALL_LIBRARY) -d -m $(LIB_PERMISSIONS) $< $(INSTALL_SHRLIB)
|
||||
@$(INSTALL_LIBRARY) -d -m $(SHRLIB_PERMISSIONS) $< $(INSTALL_SHRLIB)
|
||||
ifneq ($(SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE))
|
||||
ifneq (,$(strip $(SHRLIB_VERSION)))
|
||||
@$(RM) $(subst $(SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE),$@)
|
||||
|
@ -41,6 +41,7 @@ ARCH_DEP_LDFLAGS += $(ARCH_DEP_FLAGS)
|
||||
#--------------------------------------------------
|
||||
# Operating system flags
|
||||
OP_SYS_CFLAGS += -isysroot $(SDK_DIR) -D__IPHONE_OS_VERSION_MIN_REQUIRED=30200
|
||||
OP_SYS_LDFLAGS += -isysroot $(SDK_DIR)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Always compile in debugging symbol table information
|
||||
@ -54,17 +55,20 @@ OPT_CXXFLAGS_YES += -g
|
||||
CC_GNU = gcc
|
||||
CCC_GNU = g++
|
||||
CMPLR_CLASS_GNU = gcc
|
||||
CC_LLVM = llvm-gcc
|
||||
CCC_LLVM = llvm-g++
|
||||
CMPLR_CLASS_LLVM = gcc
|
||||
|
||||
CC_LLVM_GNU = llvm-gcc
|
||||
CCC_LLVM_GNU = llvm-g++
|
||||
CMPLR_CLASS_LLVM_GNU = gcc
|
||||
|
||||
CC_CLANG = clang
|
||||
CCC_CLANG = clang++
|
||||
CMPLR_CLASS_CLANG = clang
|
||||
|
||||
CC = $(firstword $(wildcard $(GNU_BIN)/$(CC_$(COMPILER))) $(CC_$(COMPILER)))
|
||||
CCC = $(firstword $(wildcard $(GNU_BIN)/$(CCC_$(COMPILER))) $(CCC_$(COMPILER)))
|
||||
CMPLR_CLASS = $(CMPLR_CLASS_$(COMPLER))
|
||||
|
||||
# Convert the iOS platform to lowercase for passing to xcrun's sdk parameter
|
||||
XCRUN_SDK_BASE = $(shell echo $(IOS_PLATFORM) | tr A-Z a-z)
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Linker flags
|
||||
GNU_LDLIBS_YES =
|
||||
@ -97,9 +101,14 @@ vpath %.m $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
#--------------------------------------------------
|
||||
# Header dependency file generation
|
||||
#
|
||||
HDEPENDS_METHOD = MKMF
|
||||
HDEPENDS_METHOD = CMD
|
||||
|
||||
#--------------------------------------------------
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.iosCommon
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).iosCommon
|
||||
|
||||
#--------------------------------------------------
|
||||
# Find the Xcode compilers for the specified SDK just once
|
||||
CC := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find $(CC_$(COMPILER)))
|
||||
CCC := $(shell xcrun -sdk $(XCRUN_SDK_BASE) -find $(CCC_$(COMPILER)))
|
||||
|
@ -5,21 +5,22 @@
|
||||
|
||||
# Where to find RTEMS
|
||||
#
|
||||
RTEMS_VERSION=4.9.2
|
||||
RTEMS_BASE=/usr/local/rtems/rtems-$(RTEMS_VERSION)
|
||||
RTEMS_VERSION = 4.10.2
|
||||
RTEMS_BASE = /usr/local/rtems/rtems-$(RTEMS_VERSION)
|
||||
|
||||
# Cross-compile toolchain in $(RTEMS_TOOLS)/bin
|
||||
#
|
||||
RTEMS_TOOLS=$(RTEMS_BASE)
|
||||
RTEMS_TOOLS = $(RTEMS_BASE)
|
||||
|
||||
|
||||
# If you're using neither BOOTP/DHCP nor FLASH to pick up your IOC
|
||||
# network configuration you must uncomment and specify your Internet
|
||||
# network configuration you must uncomment and specify your Internet
|
||||
# Domain Name here
|
||||
#
|
||||
#OP_SYS_CFLAGS += -DRTEMS_NETWORK_CONFIG_DNS_DOMAINNAME=<domainname>
|
||||
|
||||
#
|
||||
# Specify your desired command-line-input library
|
||||
# Select the command-line-input library to use
|
||||
#
|
||||
COMMANDLINE_LIBRARY = EPICS
|
||||
#COMMANDLINE_LIBRARY = LIBTECLA
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
@ -3,11 +3,6 @@
|
||||
# $Revision-Id$
|
||||
#
|
||||
# Site Specific definitions for cygwin-x86 target
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Currently the Cygwin build only works without shared libraries.
|
||||
SHARED_LIBRARIES = NO
|
||||
STATIC_BUILD = YES
|
||||
|
||||
# Depending on your version of Cygwin you'll want one of the following
|
||||
# lines to enable command-line editing and history in iocsh. If you're
|
||||
@ -23,4 +18,3 @@ COMMANDLINE_LIBRARY = READLINE_NCURSESW
|
||||
|
||||
# No other libraries needed
|
||||
#COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
|
@ -7,18 +7,32 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Select which CPU architecture(s) to include in your MacOS binaries:
|
||||
# i386
|
||||
# x86_64 - Needs MacOS 10.4 with the Universal SDK, or 10.5 and later
|
||||
# i386, x86_64, or both (fat binaries).
|
||||
|
||||
#ARCH_CLASS = i386
|
||||
ARCH_CLASS = x86_64
|
||||
#ARCH_CLASS = i386 x86_64
|
||||
|
||||
#
|
||||
# Comment out the following lines to build with GCC instead of CLANG.
|
||||
# Comment out the following lines to build with Apple's GCC instead of CLANG.
|
||||
#
|
||||
CMPLR_CLASS = clang
|
||||
CC = clang
|
||||
CCC = clang++
|
||||
GNU = NO
|
||||
|
||||
|
||||
# To use MacPorts GCC, comment out ALL the settings above this line,
|
||||
# then uncomment (and modify if necessary) the following instead:
|
||||
|
||||
#GNU_DIR = /opt/local
|
||||
#CC = $(GNU_BIN)/gcc -m64
|
||||
#CCC = $(GNU_BIN)/g++ -m64
|
||||
|
||||
# If you see this or similar errors while building in the src/cap5 directory
|
||||
# gcc: error: unrecognized option '-no-cpp-precomp'
|
||||
# the problem is due to the ccflags configuration that your version of Perl
|
||||
# was built with. You can replace the Cap5_CFLAGS setting in the Makefile
|
||||
# with a hand-edited set of flags for building that Perl library, or ignore
|
||||
# this problem if you don't need to use Channel Access from Perl.
|
||||
|
||||
|
@ -1,21 +1,26 @@
|
||||
# CONFIG_SITE.Common.ios-arm
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Site-specific settings for ios-arm target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Which ARM instruction set(s) to generate code for:
|
||||
# Most iOS devices can run programs compiled for both the
|
||||
# ARMv6 and ARMv7 instruction sets. ARMv7 code is usually
|
||||
# more efficient, but the older devices listed below can only
|
||||
# use the ARMv6 instruction set. Including both architectures
|
||||
# generates a Universal binary, which is larger and takes
|
||||
# longer to compile but runs efficiently on all devices.
|
||||
# Most iOS devices can run programs compiled for older
|
||||
# instruction sets, although the newer instructions are
|
||||
# more efficient.
|
||||
#
|
||||
# ARMv6-only devices: iPhone 1 or 3G, iPod Touch Gen 1 or 2
|
||||
# Apple's compilers can build for multiple architectures,
|
||||
# generating a Universal binary. This is larger and takes
|
||||
# longer to compile, but runs efficiently on all devices.
|
||||
#
|
||||
ARCH_CLASS = armv7
|
||||
# Xcode 4.5 dropped support for the ARMv6.
|
||||
#
|
||||
# ARMv7s devices: iPhone 5
|
||||
# ARMv6 devices: iPhone 1 and 3G, iPod Touch Gen 1 and 2
|
||||
# All other devices are ARMv7
|
||||
|
||||
ARCH_CLASS = armv7 armv7s
|
||||
#ARCH_CLASS = armv7
|
||||
#ARCH_CLASS = armv6 armv7
|
||||
#ARCH_CLASS = armv6
|
||||
|
@ -1,7 +1,6 @@
|
||||
# CONFIG_SITE.Common.iosCommon
|
||||
#
|
||||
# $Revision-Id$
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Site-specific settings for Apple iOS builds
|
||||
#-------------------------------------------------------
|
||||
@ -12,16 +11,18 @@
|
||||
#IOS_VERSION = 4.1
|
||||
#IOS_VERSION = 4.2
|
||||
#IOS_VERSION = 4.3
|
||||
IOS_VERSION = 5.0
|
||||
#IOS_VERSION = 5.0
|
||||
#IOS_VERSION = 5.1
|
||||
IOS_VERSION = 6.0
|
||||
|
||||
|
||||
# Which compiler to use:
|
||||
# CLANG is preferred for recent versions of Xcode
|
||||
# LLVM uses the llvm-gcc and llvm-g++ compilers
|
||||
# LLVM_GNU uses the llvm-gcc and llvm-g++ compilers
|
||||
# GNU is needed for older versions of Xcode
|
||||
|
||||
COMPILER = CLANG
|
||||
#COMPILER = LLVM
|
||||
#COMPILER = LLVM_GNU
|
||||
#COMPILER = GNU
|
||||
|
||||
|
||||
|
@ -455,7 +455,7 @@ Environment</a> below.</p>
|
||||
<h3><a name="firewall">Firewalls</a></h3>
|
||||
|
||||
<p>If you want channel access clients on a machine to be able to see
|
||||
beacons and replies to broadcast PV search requests you need to permit
|
||||
beacons and replies to broadcast PV search requests, you need to permit
|
||||
inbound UDP packets with source port EPICS_CA_SERVER_PORT (default is 5064)
|
||||
or destination port EPICS_CA_REPEATER_PORT (default is 5065). On systems
|
||||
using iptables this can be accomplished by rules like</p>
|
||||
@ -466,9 +466,9 @@ using iptables this can be accomplished by rules like</p>
|
||||
</pre>
|
||||
|
||||
<p>If you want channel access servers (e.g. "soft IOCs") on a machine to be
|
||||
able to see clients you need to permit inbound TCP or UDP packets with source
|
||||
port EPICS_CA_SERVER_PORT (default is 5064). On systems using iptables this
|
||||
can be accomplished by rules like</p>
|
||||
able to be seen by clients, you need to permit inbound TCP or UDP packets with
|
||||
destination port EPICS_CA_SERVER_PORT (default is 5064).
|
||||
On systems using iptables this can be accomplished by rules like</p>
|
||||
|
||||
<pre>
|
||||
-A INPUT -s 192.168.0.0/22 -p udp --dport 5064 -j ACCEPT
|
||||
|
@ -84,14 +84,19 @@ PROD_LIBS = ca Com
|
||||
# needed when its an object library build
|
||||
PROD_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
|
||||
|
||||
PROD_HOST += caRepeater catime acctst caConnTest casw caEventRate
|
||||
OBJS_vxWorks += catime acctst caConnTest casw caEventRate acctstRegister
|
||||
PROD_DEFAULT += caRepeater catime acctst caConnTest casw caEventRate
|
||||
PROD_vxWorks = -nil-
|
||||
PROD_RTEMS = -nil-
|
||||
PROD_iOS = -nil-
|
||||
|
||||
OBJS_vxWorks = catime acctst caConnTest casw caEventRate acctstRegister
|
||||
|
||||
caRepeater_SRCS = caRepeater.cpp
|
||||
catime_SRCS = catimeMain.c catime.c
|
||||
acctst_SRCS = acctstMain.c acctst.c
|
||||
catime_SRCS = catimeMain.c catime.c
|
||||
acctst_SRCS = acctstMain.c acctst.c
|
||||
caEventRate_SRCS = caEventRateMain.cpp caEventRate.cpp
|
||||
casw_SRCS = casw.cpp
|
||||
caConnTest_SRCS = caConnTestMain.cpp caConnTest.cpp
|
||||
caConnTest_SRCS = caConnTestMain.cpp caConnTest.cpp
|
||||
|
||||
casw_SYS_LIBS_solaris = socket
|
||||
|
||||
|
@ -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.
|
||||
\*************************************************************************/
|
||||
/*
|
||||
* $Revision-Id$
|
||||
@ -15,8 +14,8 @@
|
||||
* 505 665 1831
|
||||
*/
|
||||
|
||||
#include "dbMapper.h" // ait to dbr types
|
||||
#include "gddAppTable.h" // EPICS application type table
|
||||
#include "dbMapper.h" // ait to dbr types
|
||||
#include "gddAppTable.h" // EPICS application type table
|
||||
#include "fdManager.h"
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
@ -37,64 +36,64 @@ caServer::caServer ()
|
||||
|
||||
caServer::~caServer()
|
||||
{
|
||||
if (this->pCAS) {
|
||||
delete this->pCAS;
|
||||
if (this->pCAS) {
|
||||
delete this->pCAS;
|
||||
this->pCAS = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pvExistReturn caServer::pvExistTest ( const casCtx & ctx,
|
||||
const caNetAddr & /* clientAddress */, const char * pPVAliasName )
|
||||
const caNetAddr & /* clientAddress */, const char * pPVAliasName )
|
||||
{
|
||||
return this->pvExistTest ( ctx, pPVAliasName );
|
||||
}
|
||||
|
||||
pvExistReturn caServer::pvExistTest ( const casCtx &, const char * )
|
||||
{
|
||||
return pverDoesNotExistHere;
|
||||
return pverDoesNotExistHere;
|
||||
}
|
||||
|
||||
pvCreateReturn caServer::createPV ( const casCtx &, const char * )
|
||||
{
|
||||
return S_casApp_pvNotFound;
|
||||
return S_casApp_pvNotFound;
|
||||
}
|
||||
|
||||
pvAttachReturn caServer::pvAttach ( const casCtx &ctx, const char *pAliasName )
|
||||
{
|
||||
// remain backwards compatible (call deprecated routine)
|
||||
return this->createPV ( ctx, pAliasName );
|
||||
// remain backwards compatible (call deprecated routine)
|
||||
return this->createPV ( ctx, pAliasName );
|
||||
}
|
||||
|
||||
casEventMask caServer::registerEvent (const char *pName)
|
||||
{
|
||||
if (this->pCAS) {
|
||||
return this->pCAS->registerEvent(pName);
|
||||
}
|
||||
else {
|
||||
casEventMask emptyMask;
|
||||
printf("caServer:: no server internals attached\n");
|
||||
return emptyMask;
|
||||
}
|
||||
if (this->pCAS) {
|
||||
return this->pCAS->registerEvent(pName);
|
||||
}
|
||||
else {
|
||||
casEventMask emptyMask;
|
||||
printf("caServer:: no server internals attached\n");
|
||||
return emptyMask;
|
||||
}
|
||||
}
|
||||
|
||||
void caServer::show(unsigned level) const
|
||||
{
|
||||
if (this->pCAS) {
|
||||
this->pCAS->show(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
if (this->pCAS) {
|
||||
this->pCAS->show(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
}
|
||||
|
||||
void caServer::setDebugLevel (unsigned level)
|
||||
{
|
||||
if (pCAS) {
|
||||
this->pCAS->setDebugLevel(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
if (pCAS) {
|
||||
this->pCAS->setDebugLevel(level);
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
}
|
||||
}
|
||||
|
||||
unsigned caServer::getDebugLevel () const
|
||||
@ -141,6 +140,17 @@ casEventMask caServer::alarmEventMask () const
|
||||
}
|
||||
}
|
||||
|
||||
casEventMask caServer::propertyEventMask () const
|
||||
{
|
||||
if (pCAS) {
|
||||
return this->pCAS->propertyEventMask();
|
||||
}
|
||||
else {
|
||||
printf("caServer:: no server internals attached\n");
|
||||
return casEventMask();
|
||||
}
|
||||
}
|
||||
|
||||
class epicsTimer & caServer::createTimer ()
|
||||
{
|
||||
return fileDescriptorManager.createTimer ();
|
||||
|
@ -47,22 +47,23 @@ caServerI::caServerI ( caServer & tool ) :
|
||||
nEventsPosted ( 0u ),
|
||||
ioInProgressCount ( 0u )
|
||||
{
|
||||
assert ( & adapter != NULL );
|
||||
assert ( & adapter != NULL );
|
||||
|
||||
// create predefined event types
|
||||
this->valueEvent = registerEvent ( "value" );
|
||||
this->logEvent = registerEvent ( "log" );
|
||||
this->alarmEvent = registerEvent ( "alarm" );
|
||||
this->logEvent = registerEvent ( "log" );
|
||||
this->alarmEvent = registerEvent ( "alarm" );
|
||||
this->propertyEvent = registerEvent ( "property" );
|
||||
|
||||
this->locateInterfaces ();
|
||||
|
||||
if (this->intfList.count()==0u) {
|
||||
errMessage (S_cas_noInterface,
|
||||
if (this->intfList.count()==0u) {
|
||||
errMessage (S_cas_noInterface,
|
||||
"- CA server internals init unable to continue");
|
||||
throw S_cas_noInterface;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
return;
|
||||
}
|
||||
|
||||
caServerI::~caServerI()
|
||||
@ -70,22 +71,22 @@ caServerI::~caServerI()
|
||||
delete & this->beaconAnomalyGov;
|
||||
delete & this->beaconTmr;
|
||||
|
||||
// delete all clients
|
||||
// delete all clients
|
||||
while ( casStrmClient * pClient = this->clientList.get() ) {
|
||||
delete pClient;
|
||||
}
|
||||
delete pClient;
|
||||
}
|
||||
|
||||
casIntfOS *pIF;
|
||||
while ( ( pIF = this->intfList.get() ) ) {
|
||||
delete pIF;
|
||||
}
|
||||
casIntfOS *pIF;
|
||||
while ( ( pIF = this->intfList.get() ) ) {
|
||||
delete pIF;
|
||||
}
|
||||
}
|
||||
|
||||
void caServerI::destroyClient ( casStrmClient & client )
|
||||
{
|
||||
{
|
||||
epicsGuard < epicsMutex > locker ( this->mutex );
|
||||
this->clientList.remove ( client );
|
||||
this->clientList.remove ( client );
|
||||
}
|
||||
delete & client;
|
||||
}
|
||||
@ -143,11 +144,11 @@ caStatus caServerI::attachInterface ( const caNetAddr & addrIn,
|
||||
void caServerI::sendBeacon ( ca_uint32_t beaconNo )
|
||||
{
|
||||
epicsGuard < epicsMutex > locker ( this->mutex );
|
||||
tsDLIter < casIntfOS > iter = this->intfList.firstIter ();
|
||||
while ( iter.valid () ) {
|
||||
iter->sendBeacon ( beaconNo );
|
||||
iter++;
|
||||
}
|
||||
tsDLIter < casIntfOS > iter = this->intfList.firstIter ();
|
||||
while ( iter.valid () ) {
|
||||
iter->sendBeacon ( beaconNo );
|
||||
iter++;
|
||||
}
|
||||
}
|
||||
|
||||
void caServerI::generateBeaconAnomaly ()
|
||||
@ -259,11 +260,11 @@ void caServerI::casMonitorDestroy ( casMonitor & cm )
|
||||
}
|
||||
|
||||
//
|
||||
// caServerI::dumpMsg()
|
||||
// caServerI::dumpMsg()
|
||||
//
|
||||
// Debug aid - print the header part of a message.
|
||||
// Debug aid - print the header part of a message.
|
||||
//
|
||||
// dp arg allowed to be null
|
||||
// dp arg allowed to be null
|
||||
//
|
||||
//
|
||||
void caServerI::dumpMsg ( const char * pHostName, const char * pUserName,
|
||||
|
@ -44,23 +44,24 @@ caStatus convertContainerMemberToAtomic ( class gdd & dd,
|
||||
aitUint32 appType, aitUint32 elemCount );
|
||||
|
||||
class caServerI :
|
||||
public caServerIO,
|
||||
public ioBlockedList,
|
||||
public casEventRegistry {
|
||||
public caServerIO,
|
||||
public ioBlockedList,
|
||||
public casEventRegistry {
|
||||
public:
|
||||
caServerI ( caServer &tool );
|
||||
~caServerI ();
|
||||
bool roomForNewChannel() const;
|
||||
unsigned getDebugLevel() const { return debugLevel; }
|
||||
inline void setDebugLevel ( unsigned debugLevelIn );
|
||||
void show ( unsigned level ) const;
|
||||
caServerI ( caServer &tool );
|
||||
~caServerI ();
|
||||
bool roomForNewChannel() const;
|
||||
unsigned getDebugLevel() const { return debugLevel; }
|
||||
inline void setDebugLevel ( unsigned debugLevelIn );
|
||||
void show ( unsigned level ) const;
|
||||
void destroyMonitor ( casMonitor & );
|
||||
caServer * getAdapter ();
|
||||
caServer * operator -> ();
|
||||
void connectCB ( casIntfOS & );
|
||||
casEventMask valueEventMask () const; // DBE_VALUE registerEvent("value")
|
||||
casEventMask logEventMask () const; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEventMask () const; // DBE_ALARM registerEvent("alarm")
|
||||
caServer * getAdapter ();
|
||||
caServer * operator -> ();
|
||||
void connectCB ( casIntfOS & );
|
||||
casEventMask valueEventMask () const; // DBE_VALUE registerEvent("value")
|
||||
casEventMask logEventMask () const; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEventMask () const; // DBE_ALARM registerEvent("alarm")
|
||||
casEventMask propertyEventMask () const; // DBE_PROPERTY registerEvent("property")
|
||||
unsigned subscriptionEventsProcessed () const;
|
||||
void incrEventsProcessedCounter ();
|
||||
unsigned subscriptionEventsPosted () const;
|
||||
@ -82,29 +83,30 @@ public:
|
||||
private:
|
||||
clientBufMemoryManager clientBufMemMgr;
|
||||
tsFreeList < casMonitor, 1024 > casMonitorFreeList;
|
||||
tsDLList < casStrmClient > clientList;
|
||||
tsDLList < casStrmClient > clientList;
|
||||
tsDLList < casIntfOS > intfList;
|
||||
mutable epicsMutex mutex;
|
||||
mutable epicsMutex diagnosticCountersMutex;
|
||||
caServer & adapter;
|
||||
mutable epicsMutex mutex;
|
||||
mutable epicsMutex diagnosticCountersMutex;
|
||||
caServer & adapter;
|
||||
beaconTimer & beaconTmr;
|
||||
beaconAnomalyGovernor & beaconAnomalyGov;
|
||||
unsigned debugLevel;
|
||||
unsigned debugLevel;
|
||||
unsigned nEventsProcessed;
|
||||
unsigned nEventsPosted;
|
||||
unsigned ioInProgressCount;
|
||||
|
||||
casEventMask valueEvent; // DBE_VALUE registerEvent("value")
|
||||
casEventMask logEvent; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEvent; // DBE_ALARM registerEvent("alarm")
|
||||
casEventMask logEvent; // DBE_LOG registerEvent("log")
|
||||
casEventMask alarmEvent; // DBE_ALARM registerEvent("alarm")
|
||||
casEventMask propertyEvent; // DBE_PROPERTY registerEvent("property")
|
||||
|
||||
caStatus attachInterface ( const caNetAddr & addr, bool autoBeaconAddr,
|
||||
bool addConfigAddr );
|
||||
caStatus attachInterface ( const caNetAddr & addr, bool autoBeaconAddr,
|
||||
bool addConfigAddr );
|
||||
|
||||
void sendBeacon ( ca_uint32_t beaconNo );
|
||||
|
||||
caServerI ( const caServerI & );
|
||||
caServerI & operator = ( const caServerI & );
|
||||
caServerI ( const caServerI & );
|
||||
caServerI & operator = ( const caServerI & );
|
||||
|
||||
friend class beaconAnomalyGovernor;
|
||||
friend class beaconTimer;
|
||||
@ -113,17 +115,17 @@ private:
|
||||
|
||||
inline caServer * caServerI::getAdapter()
|
||||
{
|
||||
return & this->adapter;
|
||||
return & this->adapter;
|
||||
}
|
||||
|
||||
inline caServer * caServerI::operator -> ()
|
||||
{
|
||||
return this->getAdapter();
|
||||
return this->getAdapter();
|
||||
}
|
||||
|
||||
inline void caServerI::setDebugLevel(unsigned debugLevelIn)
|
||||
{
|
||||
this->debugLevel = debugLevelIn;
|
||||
this->debugLevel = debugLevelIn;
|
||||
}
|
||||
|
||||
inline casEventMask caServerI::valueEventMask() const
|
||||
@ -141,6 +143,11 @@ inline casEventMask caServerI::alarmEventMask() const
|
||||
return this->alarmEvent;
|
||||
}
|
||||
|
||||
inline casEventMask caServerI::propertyEventMask() const
|
||||
{
|
||||
return this->propertyEvent;
|
||||
}
|
||||
|
||||
inline bool caServerI :: ioIsPending () const
|
||||
{
|
||||
return ( ioInProgressCount > 0u );
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -245,6 +245,7 @@ public:
|
||||
casEventMask valueEventMask () const; // DBE_VALUE
|
||||
casEventMask logEventMask () const; // DBE_LOG
|
||||
casEventMask alarmEventMask () const; // DBE_ALARM
|
||||
casEventMask propertyEventMask () const; // DBE_PROPERTY
|
||||
|
||||
void setDebugLevel ( unsigned level );
|
||||
unsigned getDebugLevel () const;
|
||||
|
@ -240,6 +240,7 @@ epicsShareFunc long
|
||||
|
||||
case LITERAL_OPERAND:
|
||||
runtime_depth += pel->runtime_effect;
|
||||
|
||||
psrc -= strlen(pel->name);
|
||||
if (pel->code == LITERAL_DOUBLE) {
|
||||
double lit_d;
|
||||
|
@ -289,7 +289,7 @@ static int seekLatestLine (struct ioc_log_server *pserver)
|
||||
}
|
||||
}
|
||||
else {
|
||||
char c = fgetc (pserver->poutfile);
|
||||
int c = fgetc (pserver->poutfile);
|
||||
|
||||
/*
|
||||
* bypass the line if it does not match the expected format
|
||||
|
@ -30,9 +30,7 @@ static size_t osdMaxBlockSize = 0;
|
||||
|
||||
static void osdSufficentSpaceInPoolQuery ()
|
||||
{
|
||||
int temp = memFindMax ();
|
||||
|
||||
osdMaxBlockSize = ( temp > 0 ) ? (size_t) temp : 0;
|
||||
osdMaxBlockSize = (size_t) memFindMax ();
|
||||
}
|
||||
|
||||
static void osdSufficentSpaceInPoolPoll ( void *pArgIn )
|
||||
|
@ -60,9 +60,9 @@ void Test :: execute ()
|
||||
|
||||
for ( unsigned i = 0; i < 3; i++ ) {
|
||||
double mVal = rand ();
|
||||
mVal /= ((double) RAND_MAX + 1);
|
||||
mVal /= (RAND_MAX + 1.0);
|
||||
double fEVal = rand ();
|
||||
fEVal /= ((double) RAND_MAX + 1);
|
||||
fEVal /= (RAND_MAX + 1.0);
|
||||
fEVal *= DBL_MAX_EXP - DBL_MIN_EXP;
|
||||
fEVal += DBL_MIN_EXP;
|
||||
int eVal = static_cast < int > ( fEVal + 0.5 );
|
||||
@ -72,7 +72,7 @@ void Test :: execute ()
|
||||
_measure ();
|
||||
}
|
||||
_srcVal = rand ();
|
||||
_srcVal /= ((double) RAND_MAX + 1);
|
||||
_srcVal /= (RAND_MAX + 1.0);
|
||||
_srcVal *= 10.0;
|
||||
_srcVal -= 5.0;
|
||||
for ( _prec = lowPrecision;
|
||||
|
@ -156,20 +156,20 @@ static long process(stringinRecord *prec)
|
||||
|
||||
static void monitor(stringinRecord *prec)
|
||||
{
|
||||
unsigned short monitor_mask;
|
||||
int monitor_mask = recGblResetAlarms(prec);
|
||||
|
||||
monitor_mask = recGblResetAlarms(prec);
|
||||
if(strcmp(prec->oval,prec->val)) {
|
||||
monitor_mask |= DBE_VALUE|DBE_LOG;
|
||||
strcpy(prec->oval,prec->val);
|
||||
if (strncmp(prec->oval, prec->val, sizeof(prec->val))) {
|
||||
monitor_mask |= DBE_VALUE | DBE_LOG;
|
||||
strncpy(prec->oval, prec->val, sizeof(prec->val));
|
||||
}
|
||||
|
||||
if (prec->mpst == stringinPOST_Always)
|
||||
monitor_mask |= DBE_VALUE;
|
||||
monitor_mask |= DBE_VALUE;
|
||||
if (prec->apst == stringinPOST_Always)
|
||||
monitor_mask |= DBE_LOG;
|
||||
if(monitor_mask)
|
||||
db_post_events(prec,&(prec->val[0]),monitor_mask);
|
||||
return;
|
||||
monitor_mask |= DBE_LOG;
|
||||
|
||||
if (monitor_mask)
|
||||
db_post_events(prec, prec->val, monitor_mask);
|
||||
}
|
||||
|
||||
static long readValue(stringinRecord *prec)
|
||||
|
@ -184,20 +184,20 @@ static long process(stringoutRecord *prec)
|
||||
|
||||
static void monitor(stringoutRecord *prec)
|
||||
{
|
||||
unsigned short monitor_mask;
|
||||
int monitor_mask = recGblResetAlarms(prec);
|
||||
|
||||
monitor_mask = recGblResetAlarms(prec);
|
||||
if(strcmp(prec->oval,prec->val)) {
|
||||
monitor_mask |= DBE_VALUE|DBE_LOG;
|
||||
strcpy(prec->oval,prec->val);
|
||||
if (strncmp(prec->oval, prec->val, sizeof(prec->val))) {
|
||||
monitor_mask |= DBE_VALUE | DBE_LOG;
|
||||
strncpy(prec->oval, prec->val, sizeof(prec->val));
|
||||
}
|
||||
|
||||
if (prec->mpst == stringoutPOST_Always)
|
||||
monitor_mask |= DBE_VALUE;
|
||||
monitor_mask |= DBE_VALUE;
|
||||
if (prec->apst == stringoutPOST_Always)
|
||||
monitor_mask |= DBE_LOG;
|
||||
if(monitor_mask)
|
||||
db_post_events(prec,&(prec->val[0]),monitor_mask);
|
||||
return;
|
||||
monitor_mask |= DBE_LOG;
|
||||
|
||||
if (monitor_mask)
|
||||
db_post_events(prec, prec->val, monitor_mask);
|
||||
}
|
||||
|
||||
static long writeValue(stringoutRecord *prec)
|
||||
|
@ -30,6 +30,7 @@ sub GetEpicsHostArch { # no args
|
||||
} elsif ($arch =~ m/x86_64-linux/) { return "linux-x86_64";
|
||||
} elsif ($arch =~ m/arm-linux/) { return "linux-arm";
|
||||
} elsif ($arch =~ m/MSWin32-x86/) { return "win32-x86";
|
||||
} elsif ($arch =~ m/MSWin32-x64/) { return "windows-x64";
|
||||
} elsif ($arch =~ m/cygwin/) { return "cygwin-x86";
|
||||
} elsif ($arch =~ m/darwin/) {
|
||||
my($kernel, $hostname, $release, $version, $cpu) = POSIX::uname();
|
||||
|
Reference in New Issue
Block a user