diff --git a/documentation/client.rst b/documentation/client.rst index dd11ce1..be77f07 100644 --- a/documentation/client.rst +++ b/documentation/client.rst @@ -1,7 +1,7 @@ .. _clientapi: -Client -====== +Client API +========== `pvxs::client::Context` represents a PVA protocol client. :: diff --git a/documentation/index.rst b/documentation/index.rst index 2697a55..cd67f57 100644 --- a/documentation/index.rst +++ b/documentation/index.rst @@ -9,22 +9,20 @@ PVXS is functionally equivilant to the `pvAccessCPP `_ modules, which it hopes to eventually surplant (Ok, the author hopes). -The canonical version of this page is https://mdavidsaver.github.io/pvxs - -Versioned source can be found at https://github.com/mdavidsaver/pvxs , -which is also where `issues `_ should be reported. -See :ref:`reportbug`. -Also :ref:`contrib` if you are so inclined. +- VCS: https://github.com/mdavidsaver/pvxs +- Docs: https://mdavidsaver.github.io/pvxs +- `Issues `_ (see :ref:`reportbug`) +- :ref:`contrib` Dependencies * A C++11 compliant compiler * GCC >= 4.8 - * Visual Studio >= 2015 (>= 12.0) + * Visual Studio >= 2015 / 12.0 * `EPICS Base `_ >=3.15.1 -* `libevent `_ >=2.0.1 +* `libevent `_ >=2.0.1 (Optionally bundled) * (optional) `CMake `_ >=3.1, only needed when building bundled libevent See :ref:`building` for details. diff --git a/documentation/overview.rst b/documentation/overview.rst index f44322e..9c051cd 100644 --- a/documentation/overview.rst +++ b/documentation/overview.rst @@ -14,11 +14,11 @@ https://epics.anl.gov/ What is PVAccess? ^^^^^^^^^^^^^^^^^ -The PVAccess network protocol is a hybrid supporting request/response, +PVAccess is network protocol supporting both request/response, and publish/subscribe operations. PVA is closely related to the Channel Access (CA) protocol, -which may work alongside, and is intended to supersede. +which PVA may work alongside, and is intended to supersede. Four protocol operations are supported by PVXS. @@ -33,26 +33,39 @@ Get, Put, Monitor, and RPC are to the PVA protocol what GET, PUT, POST are to th What is a PV? ^^^^^^^^^^^^^ -In the EPICS world a Process Variable (PV) refers to the idea of -a globally addressed data structure. An EPICS control system is -composed of many PVs (in the millions for large facilities). The present value of -a PV is modified by a combination of remote operations via CA -and/or PVA, and via local processing (eg. values read from local -hardware). +In the EPICS world a Process Variable (PV) refers to the idea of a globally addressed data structure. +An EPICS control system is composed of many PVs. +In the millions for large facilities. +The present value of a PV is modified by a combination of remote operations via CA and/or PVA, +and via local processing (eg. values read from local hardware). A common example of a PV is a measurement value, for example -a temperature measured by a particular sensor. - +a temperature measured by a particular sensor (eg. ``mylab:temp1``). Another example would be an electromechanical relay, which may be opened or closed. +(eg. ``mylab:valve2``) -In this case a Get operation would poll the current open/closed state of the relay. -A Monitor operation (subscription) would receive notification when the relay state changes. +A PV name is needed when initiating any PVA operation. +eg. with the ``pvx*`` utility executables. :: + + ## fetch current value of both measurement and setting + $ pvxget mylab:temp1 mylab:valve2 + ... + ## setup subscription of both. + $ pvxmonitor mylab:temp1 mylab:valve2 + ... + Ctrl+c + ## Request setting change + $ pvxput mylab:valve2 1 + ... + +In the case of the relay, a Get operation would poll the current open/closed state of the relay. +A Monitor operation (subscription) would setup and receive notification when the relay state changes. A Put operation would be used to command the relay to open or close, or perhaps toggle (the precise meaning of a Put is context dependent). So the Get, Put, and Monitor operation on a given PV are conventionally operating on a common data structure. The RPC operation is more arbitrary, and need not have any relationship with a common data structure (eg. the open/closed state of the relay.) -.. note:: In the context of the PVA or CA protocols, a **"PV name"** is an address string which uniquely identifies a Process Variable. +.. note:: In the context of the PVA or CA protocols, a "PV name" is an address string which uniquely identifies a Process Variable. All PVA network operations begin with a "PV name" string. A "PV name" string is to the PVA and CA protocols what a URL is to the HTTP protocol. diff --git a/documentation/releasenotes.rst b/documentation/releasenotes.rst index c1d0b46..895aadc 100644 --- a/documentation/releasenotes.rst +++ b/documentation/releasenotes.rst @@ -3,8 +3,11 @@ Release Notes ============= -0.3.1 (UNRELEASED) ------------------- +0.3.1 (June 2022) +----------------- + +* Fix ifaddrs::ifa_addr can be NULL +* Limit beacon tracking by size as well as time 0.3.0 (May 2022) ---------------- diff --git a/documentation/server.rst b/documentation/server.rst index ff15fbb..82a270e 100644 --- a/documentation/server.rst +++ b/documentation/server.rst @@ -1,7 +1,7 @@ .. _serverapi: -Server -====== +Server API +========== .. toctree:: :maxdepth: 2 diff --git a/documentation/value.rst b/documentation/value.rst index 49840f7..3270833 100644 --- a/documentation/value.rst +++ b/documentation/value.rst @@ -1,5 +1,5 @@ -Value Container -=============== +Value Container API +=================== .. toctree:: :maxdepth: 2 diff --git a/setup.py b/setup.py index 0d9aa22..1ed5ebc 100755 --- a/setup.py +++ b/setup.py @@ -624,7 +624,7 @@ build_dso.sub_commands.extend([ pvxs_ver = '%(PVXS_MAJOR_VERSION)s.%(PVXS_MINOR_VERSION)s.%(PVXS_MAINTENANCE_VERSION)s'%pvxsversion -pvxs_ver += 'a1' +#pvxs_ver += 'a1' with open(os.path.join(os.path.dirname(__file__), 'README.md')) as F: long_description = F.read()