From b1594e6b78b539b5cd65eed1e43584533d92b887 Mon Sep 17 00:00:00 2001
From: Marty Kraimer NO LONGER SUPPPORTED:
-The functionality has been moved to pvAccessCPP and EasyPva renamed to Pva.
- EasyPVA (Easy PVAccess) is a software library that provides to an EPICS client programmer, a friendly
+ pvaClient is a software library that provides to an EPICS client programmer, a friendly
client side programming interface to the data of an EPICS based control system. It is intended
for such uses as rapid development of ad hoc programs by controls engineers, or to provide
scientists a way to directly develop analytical applications. Specifically, easyPVA provides an easy interface for pvAccess, which is the
+ Specifically, pvaClient provides a synchronous interface for pvAccess, which is the
software support for high speed controls network communications used in EPICS version 4.
-PvAccess provides a callback based interface, which can be hard to use.
-EasyPVA provides an interface that does not require callbacks even for monitors.
+pvAccess provides a callback based interface, which can be hard to use.
+pvaClient provides an interface that does not require callbacks even for monitors.
-EasyChannel provides many "convenience" methods to directly get and put
+p>
+pvaClientChannel provides many "convenience" methods to directly get and put
scalar and scalarArray data types.
Additional methods provide access to the full features of pvAccess.
-EasyMultiChannel provides access to data from multiple channels.
-It can be used directly by a client or via EasyMultiDouble or EasyNTMultiChannel.
-EasyMultiDouble allows the client to get and put data to multiple channels.
+pvaClientMultiChannel provides access to data from multiple channels.
+It can be used directly by a client or via pvaClientMultiDouble or pvaClientNTMultiChannel.
+pvaClientMultiDouble allows the client to get and put data to multiple channels.
But each channel must have a value field that is a numeric scalar.
-EasyNTMultiChannel allows the client to get and put data to multiple channels.
+pvaClientNTMultiChannel allows the client to get and put data to multiple channels.
Each channel must have a value field.
The data for the channels is presented via normative type NTMultiChannel.
EasyPVACPP is ready for use. pvaClientCPP is ready for use. EasyPVA is a synchronous API for accessing PVData via PVAccess. It provides
+ pvaClient is a synchronous API for accessing PVData via PVAccess. It provides
an interface to many of the features provided by pvData and pvAccess. This document describes the layout of the source files in this project.
A user overview is available via
overview.html
+href="./pvaClientOverview.html">pvaClientOverview.html
@@ -115,27 +109,10 @@ Doxygen documentation is available at
href="./html/index.html">doxygenDoc
After obtaining the source: Edit RELEASE.local so that all path names are correct for you environment.
-
-Then: The examples and tests require that an example pvAccess server is runnimg.
-This distribution has a file exampleDatabaseEasyPVA.zip.
+This distribution has a file exampleDatabasePvaClient.zip.
When unzipped this is used to create an example IOC database.
-The database has the record used by the examples are tests that come with easyPVAJava.
-It uses pvDatabaseCPP to build the database.
After unzipping the file:
@@ -156,17 +133,17 @@ cd iocBoot/exampleDatabase
make runtests
Examples are in directory example/src.
+ Examples are in directory pvaExample/src.
An example of how to run them is: The following is a brief description of each example.
In order to understand each example it
-helps to also bee loooking at the source for the example.EPICS easyPVA
+EPICS pvaClientCPP
EPICS V4 Working Group, Working Draft,
-25-Mar-2015
+29-May-2015
Abstract
-Status of this Document and of the EasyPVA Software
+Status of this Document and of the pvaClient Software
-Introduction
-Building
-
-cd configure
-cp ExampleRELEASE.local RELEASE.local
-
-
-cd ..
-make
-
-
-Example and Test Database
+Example Database
Examples
-
mrk> pwd
-/home/hg/easyPVACPP/example
-mrk> bin/linux-x86_64/exampleEasyGet
+/home/epicsv4/pvAccessCPP/pvaExample
+mrk> bin/linux-x86_64/examplepvaClientGet
exampleEasyGet
+helps to also look at the source for the example.
This has a number of examples:
This is an example of creating a monitor on a channel. It monitors a channel that models a powerSupply, i. e. it is not a "standard" record. It does not have a value field. @@ -202,21 +179,21 @@ It does not have a value field.
pvput -r "power.value,voltage.value" examplePowerSupply 6 6-
This example gets and puts to channel exampleDouble.
-This example makes a process request to channel exampleDouble.
This is an example of issuing a channelPutGet.
-This is an example of issuing gets and puts to multiple channels where each channel has a numeric scalar value field.
-This is an example of using NDMultiChannel to obtain data from multiple channels.
This is an example of issuing a channelRPC request. -It does not use easyPVA.
+It does not use pva. diff --git a/documentation/overview.html b/documentation/pvaClientOverview.html similarity index 62% rename from documentation/overview.html rename to documentation/pvaClientOverview.html index 4e07a0d..cc6e5b7 100644 --- a/documentation/overview.html +++ b/documentation/pvaClientOverview.html @@ -4,7 +4,7 @@ -EasyPVA is a synchronous API for accessing PVData via PVAccess. -It also provides a number of convience methods. +
PvaClient is a synchronous API for accessing PVData via PVAccess. +It also provides a number of convenience methods. It allows the client to request access without checking for failure, -but throws an exception when a reuest fails. -A client can also check for failues and thus prevent failures.
+but throws an exception if a request fails. +A client can also check for failues and thus prevent exceptions. -The EasyPVA API has the following features:
+The PvaClient API has the following features:
Simple examples of using easyPVA:
+Simple examples of using pva:
-// easyGet
-EasyPVAPtr easyPVA = EasyPVA::create();
-double value = easyPVA->channel("exampleDouble")->get()->getData()->getDouble();
+// pvaGet
+PvaClientPtr pva = PvaClient::create();
+double value = pva->channel("exampleDouble")->get()->getData()->getDouble();
-// easyPut
-EasyChannelPtr channel = easyPVA->channel("exampleDouble");
-EasyPutPtr put = channel->put();
-EasyPutDataPtr putData = put->getData();
+// pvaPut
+PvaClientChannelPtr channel = pva->channel("exampleDouble");
+PvaClientPutPtr put = channel->put();
+PvaClientPutDataPtr putData = put->getData();
putData->putDouble(3.0); put->put();
-// easyMonitor
-EasyMonitorPtr monitor = easyPVA->channel("examplePowerSupply")->monitor("");
-EasyMonitorDataPtr easyData = monitor->getData();
+// pvaMonitor
+PvaClientMonitorPtr monitor = pva->channel("examplePowerSupply")->monitor("");
+PvaClientMonitorDataPtr pvaData = monitor->getData();
while(true) {
monitor->waitEvent();
cout << "changed\n";
- easyData->showChanged(cout);
+ pvaData->showChanged(cout);
cout << "overrun\n";
- easyData->showOverrun(cout);
+ pvaData->showOverrun(cout);
monitor->releaseEvent();
}
-// easyProcess
-EasyChannelPtr channel = easyPVA->channel("exampleDouble");
-EasyProcessPtr process = channel->createProcess();
+// pvaProcess
+PvaClientChannelPtr channel = pva->channel("exampleDouble");
+PvaClientProcessPtr process = channel->createProcess();
process->process();
-easyPVACPP includes a number of examples.
-easyPVA does not provide support for:
+pvaExample includes a number of examples.
+pva does not provide support for:
An instance of EasyPVA is obtained via the call:
+An instance of PvaClient is obtained via the call:
-EasyPVAPtr easyPVA = EasyPVA::create(); +PvaClientPtr pva = PvaClient::create();-
EasyPVA has methods to create instances of EasyChannel. +
PvaClient has methods to create instances of PvaClientChannel. The client can specify the provider name or use the default provider. -The client can manage it's own channels or can let easyPVA cache channels. +The client can manage it's own channels or can let pva cache channels. An example of using the cached method is:
-EasyChannelPtr easyChannel = easyPVA->channel("exampleDouble");
+PvaClientChannelPtr pvaChannel = pva->channel("exampleDouble");
This will attempt to connect to channel exampleDouble. Since the client did not specify a timeout an exception wll be thrown if the connection request fails. The client will block until the connection is made or an exception is thrown. -If the request succeeds, easyPVA caches the easyChannel so that if the +If the request succeeds, pva caches the pvaChannel so that if the client makes another request for the same channel the cached object is returned to the client.
An example of using a non cached method is:
-EasyChannelPtr easyChannel = easyPVA->createChannel("exampleDouble");
+PvaClientChannelPtr pvaChannel = pva->createChannel("exampleDouble");
-This will create an EasyChannel and return it to the client. +
This will create an PvaClientChannel and return it to the client. The client must itself connect. This is useful if the client wants to connect to multiple channels in parallel.
-This provides methods for connecting to a channel and for creating instances of -EasyField, EasyProcess, ..., EasyPutGet.
+PvaClientField, PvaClientProcess, ..., PvaClientPutGet.Connection must be made before any create method is called or an exception is raised. The following is a synchronous connection request:
-easyChannel->connect(5.0); // BLOCKS AND THROWS IF NO CONNECT +pvaChannel->connect(5.0); // BLOCKS AND THROWS IF NO CONNECT
This blocks until then connection is made or until timout occurs. An exception is raised if the connection request fails.
The same request can be made without blocking and without exceptions.
-easyChannel->issueConnect(); // DOES NOT BLOCK
+pvaChannel->issueConnect(); // DOES NOT BLOCK
.....
-Status status =easyChannel->waitConnect(5.0); // BLOCKS DOES NOT THROW
+Status status =pvaChannel->waitConnect(5.0); // BLOCKS DOES NOT THROW
if(!status.isOK()) {
// failure do something
}
-Once the channel is connected other Easy objects can be created. +
Once the channel is connected other PvaClient objects can be created. For example:
-EasyGetPtr easyGet = easyChannel->get(); // DOES BLOCK +PvaClientGetPtr pvaGet = pvaChannel->get(); // DOES BLOCK
This is a caching request. If the client already has made an identical request the client will receive the cached object. -If a new easyGet is created than it is connected before it is returned to the client. +If a new pvaGet is created than it is connected before it is returned to the client.
The client can also managed it's own objects:
-EasyGetPtr easyGet = easyChannel->createGet(); // DOES NOT BLOCK +PvaClientGetPtr pvaGet = pvaChannel->createGet(); // DOES NOT BLOCK-
The client must connect the easyGet.
+The client must connect the pvaGet.
-This provides the data returned by easyGet and easyPutGet. +
This provides the data returned by pvaGet and pvaPutGet. It is obtained via:
-EasyGetDataPtr easyData = easyGet->getData(); +PvaClientGetDataPtr pvaData = pvaGet->getData();
It provides methods to get everything returned by channelGet. In addition there are methods that make it easier to handle a value @@ -176,24 +176,24 @@ Also for a scalar that is a double or a scalarArray with element type double.
An example is:
-double value = easyData->getDouble(); +double value = pvaData->getDouble();
It also keeps a bitSet showing which fields have changed since the last channelGet or channelPutGet.
-To the client this looks identical to EasyGetData except that +
To the client this looks identical to PvaClientGetData except that it provides two BitSets: changedBitSet and overrrunBitSet. -It is used by easyMonitor. +It is used by pvaMonitor.
-This is used to provided data for easyPut and easyPutGet. -It has many of the same methods as easyGetData. +
This is used to provided data for pvaPut and pvaPutGet. +It has many of the same methods as pvaGetData. It does not have a bitSet. It also has put methods like:
-void easyData->putDouble(5.0); +void pvaData->putDouble(5.0);-
This provides methods to connect to channelGet and to issue get request. To connect via a single synchronous call:
@@ -201,35 +201,35 @@ eastGet->connect(); // BLOCKS AND CAN THROW
This can also be done in two steps:
-easyGet->issueConnect(); // DOES NOT BLOCK +pvaGet->issueConnect(); // DOES NOT BLOCK ... -Status status = easyGet->waitConnect(); // BLOCKS AND DOES NOT HROW +Status status = pvaGet->waitConnect(); // BLOCKS AND DOES NOT HROW
Once connected gets are issued via either:
-void easyGet->get(); // BLOCKS AND CAN THROW +void pvaGet->get(); // BLOCKS AND CAN THROWor
-easyGet->issueGet(); // DOES NOT BLOCK +pvaGet->issueGet(); // DOES NOT BLOCK ... -Status status = easyGet->waitGet(); // BLOCKS AND DOES NOT THROW +Status status = pvaGet->waitGet(); // BLOCKS AND DOES NOT THROW-
This is similar to easyGet except that it wraps channelPut instead of channelGet. +
This is similar to pvaGet except that it wraps channelPut instead of channelGet.
Once connected puts are issued via either:
-void easyPut->put(); // BLOCKS AND CAN THROW +void pvaPut->put(); // BLOCKS AND CAN THROWor
-easyPut->issuePut(); // DOES NOT BLOCK +pvaPut->issuePut(); // DOES NOT BLOCK ... -Status status = easyPut->waitPut(); // BLOCKS AND DOES NOT THROW +Status status = pvaPut->waitPut(); // BLOCKS AND DOES NOT THROW-
Connecting is similar to easyGet and easyPut. +
Connecting is similar to pvaGet and pvaPut. The other methods are:
Connecting is similar to easyGet. +
Connecting is similar to pvaGet. It has methods:
Connecting is similar to easyGet. +
Connecting is similar to pvaGet. It has methods:
Look at javaDoc for details.
-This provides methods for connecting to multiple channels. -A client can either use EasyMultiChannel directly or use EasyMultiDouble or EasyNTMultiChannel. +A client can either use PvaClientMultiChannel directly or use PvaClientMultiDouble or PvaClientNTMultiChannel. But both impose restrictions on what can be accessed.
-This provides support for gets and puts to the value field of multiple channels. Each channel must have a value field that is a numeric scalar. The client always sees the data as a PVDoubleArray. All channels must connect. If any problems occur an exception is thrown.
-This provides support for gets and puts to the value field of multiple channels. Each channel must have a value field. The client always sees the data as a NTMultiChannel, which is one diff --git a/jenkins/cloudbees_build b/jenkins/cloudbees_build index 2c602a9..8d72d0e 100644 --- a/jenkins/cloudbees_build +++ b/jenkins/cloudbees_build @@ -1,4 +1,4 @@ -# easyPVA C++ implementation +# pvaClient C++ implementation # Jenkins @ Cloudbees build script # # Jenkins invokes scripts with the "-ex" option. So the build is considered a failure @@ -68,11 +68,11 @@ make runtests ########################################### # Create distribution -tar --exclude=test* -czf easyPVA.CB-dist.tar.gz lib include +tar --exclude=test* -czf pvaClient.CB-dist.tar.gz lib include ########################################### # Publish documentation if [ "${BUILD_DOCS}" ]; then - rsync -aqP --delete -e ssh documentation epics-jenkins@web.sourceforge.net:/home/project-web/epics-pvdata/htdocs/docbuild/easyPVACPP/tip + rsync -aqP --delete -e ssh documentation epics-jenkins@web.sourceforge.net:/home/project-web/epics-pvdata/htdocs/docbuild/pvaClientCPP/tip fi diff --git a/src/pvaClient.h b/src/pvaClient.h index 558fbab..b79db45 100644 --- a/src/pvaClient.h +++ b/src/pvaClient.h @@ -1656,7 +1656,7 @@ private: /** @page Overview Documentation * - * pvaClientOverview.html + * pvaClientOverview.html * */