Michael Davidsaver 9253c31c0b rework ChannelProviderRegistry
Replace interface+impls with a single concrete container
which wraps a map.

This breaks code which was sub-classing.
However, no external code can be found which does this.

A build() method is used instead of simple ctor so
that the ctor is private, which will cause theoretical
external sub-class code to fail to compile.

Code using getChannelProviderRegistry()
and existing methods will behave as before.

Add ChannelProviderRegistry::getFactory() for pass through
to ChannelProviderFactory (Registery is just a proxy()...)

Remove existing get/create virtual method in favor of getFactory.
Update both existing implementations.

Add SimpleChannelProviderFactory to cut down on boilerplace
for the common case.

Add method to clear mapping and release any saved sharedInstance.
2017-04-25 21:15:43 -04:00
2011-09-22 14:36:56 +02:00
2017-04-25 21:15:43 -04:00
2017-04-25 21:15:43 -04:00
2012-06-15 14:47:16 +02:00
2016-03-02 13:34:05 +01:00
2015-08-11 17:49:18 -05:00
2016-07-19 10:16:27 +02:00
2015-10-15 21:53:20 +02:00
2016-07-26 23:34:15 +02:00
2014-06-04 10:22:04 +02:00
2015-09-02 10:23:39 +02:00

pvAccessCPP

pvAccess is a computer communications protocol for control systems, and is a central component of the EPICS software toolkit. pvAccessCPP is the name of the software module which contains the C++ implementation of pvAccess.

Further Info

Consult the documents in the documentation directory, in particular

  • pvAccessCPP.html
  • RELEASE_NOTES.md

Also see the EPICS Version 4 website

Prerequisites

The pvAccessCPP requires recent versions of the following software:

  1. EPICS Base (v3.14.12.3 or later)
  2. EPICS4 pvCommonCPP (4.1.1 or later)
  3. EPICS4 pvDataCPP (5.0.2 or later)

Building

Building uses the make utility and the EPICS base build system.

The build system needs the location of the prerequisites, e.g. by placing the lines of the form

PVCOMMON = /home/install/epicsV4/pvCommonCPP
PVDATA = /home/install/epicsV4/pvDataCPP
EPICS_BASE = /home/install/epics/base

pointing to the locations in a file called RELEASE.local in the configure directory or the parent directory of pvAccessCPP.

With this in place, to build type make

make

To perform a clean build type

make clean uninstall

To run the unit tests type

make runtests

For more information on the EPICS build system consult the Application Development guide.

Example Usage

This section describes how you can test and demo pvAccess.

A test server is shipped with pvAccessCPP. See the file pvAccessCPP/DEMO for examples of usage. To run the server, write a setup script like that above, and then use it prior to executing "runTestServer":

$ ./runTestServer 
Starting pvAccess C++ test server...
VERSION : pvAccess Server v4.1.1
PROVIDER_NAMES : local
BEACON_ADDR_LIST : 
AUTO_BEACON_ADDR_LIST : 1
BEACON_PERIOD : 15
BROADCAST_PORT : 5076
SERVER_PORT : 5075
RCV_BUFFER_SIZE : 16384
IGNORE_ADDR_LIST: 
STATE : INITIALIZED

Then, another window, you can go through the demos in pvAccessCPP/DEMO. For example:

$ ./bin/$EPICS_HOST_ARCH/pvget testValue
testValue                     0
Languages
C++ 63.4%
C 35.2%
Python 0.9%
Makefile 0.5%