Looking for the latest version? Download EPICS-CPP-4.4.0.tar.gz (7.8 MB)
Home
Name Modified Size Downloads / Week Status
Totals: 10 Items   509.2 kB 4
4.4.0 2014-12-12 2222 weekly downloads
4.4.0-dev1 2014-07-01 11 weekly downloads
4.3.0 2013-10-24 22 weekly downloads
1.0.1-BETA 2013-02-06 33 weekly downloads
2.0-BETA 2013-01-11 33 weekly downloads
marchtest 2012-03-07 22 weekly downloads
1.0-BETA 2012-02-08 11 weekly downloads
README 2014-12-10 18.7 kB 11 weekly downloads
jca-2.3.2.jar 2011-11-28 246.5 kB 11 weekly downloads
caj-1.1.8.jar 2011-11-28 244.0 kB 22 weekly downloads
EPICS V4 README This README file describes the download files available for EPICS V4, and includes all versions. EPICS V4 [1] is a software toolkit for developing advanced control systems on top of EPICS [2], and fast service oriented architectures. epics-pvdata is a SourceForge project for managing the development of EPICS version 4. ----------------------------------------------------------------------------- Status: This is the 16-Oct-2014 version of the README. ----------------------------------------------------------------------------- Author: 28-Nov-2011 Greg White (GREG@SLAC.STANFORD.EDU) for EPICS V4 team [1] Mod: 09-Dec-2014, Greg White, Added system requirements section. 16-Oct-2014, Dave Hickin, Added 4.4.0. 22-Aug-2013, Greg White, Added 4.3.0. 22-Jan-2013, Ralph Lange, moved pvaSrv out of pvIOCCPP. 11-Jan-2013, Greg White, edited for BETA 2. 13-Mar-2012, James Rowland, Added C++ release "Marchtest" for internal review only. 20-Dec-2011, Greg White, for 1.0-BETA, Java and C++. 11-Jan-2012, Greg White, for EPICSv4-Java-1.0-BETA.tar.gz 08-Feb-2012, Greg White, for EPICSv4-Java-1.0-1-BETA.tar.gz ----------------------------------------------------------------------------- VERSION 4.4.0 ============= As of 16-Oct-2014, the latest version of EPICS V4 is 4.4.0. SUMMARY ------- 4.4.0 brings simplicity, elegance and performance to many facets of EPICS. It improves and extends the EPICS V4 communication protocol, pvAccess, and adds dynamic data typing through union types. The C++ API and implementation has been greatly improved, allowing the creation of high performance applications. Three new alpha libraries are included. pvDatabase is C++ framework for creating services accessible via pvAccess. pvaPy is a Python pvAccess API. normativeTypeCPP provides support for normative types. Windows has been added to the list of supported platforms. For more information see FEATURE ADDITIONS AND MAJOR CHANGES SINCE LAST RELEASE below. See the document "Getting Started with EPICS V4, http://epics-pvdata.sourceforge.net/gettingStarted.html DISTRIBUTION FILES FOR THIS VERSION ----------------------------------- The file EPICS-Java-4.4.0.tar.gz [possibly suffixed -pre or rc] includes all (and only) the Java implementation of EPICS V4.4.0. On Unix systems, the tar file might be unpacked with the command: % tar xvfz EPICS-Java-4.4.0.tar.gz The file EPICS-CPP-4.4.0.tar.gz [possibly suffixed -pre or rc] includes all (and only) the C++ implementation of EPICS V4.4.0. On Unix systems, the tar file might be unpacked with the command: % tar xvfz EPICS-CPP-4.4.0.tar.gz You may also clone the Mercurial repos directly [22], using the tags for 4.4.0 as specified in RELEASE_VERSIONS [19]. MODULES COMPRISING VERSION -------------------------- The exact modules and their versions, that comprise the EPICS V4.4.0 release, are defined in RELEASE_VERSIONS [19]. This includes the versions of both the C++ and Java implementation. The distribution tars are in fact generated automatically from the contents of [19]. C++ Module Summary: pvAccessCPP The EPICS V4 "wire protocol". Supports pvData [6] [7]. pvDataCPP Support for high performance data interchange [8]. pvCommonCPP Utility libraries. exampleCPP Code examples, including use of pvData containers, RPC, demo servers. pvaSrv An EPICS Base IOC plugin interfacing CA data to pvAccess. pvDatabaseCPP EPICS V4 record/database framework for providing services over pvAccess. normativeTypesCPP Support for EPICS V4 normative types. pvaPy Python API for pvAccess. Java Module Summary: pvAccessJava The EPICS V4 "wire protocol". Supports pvData [6][7]. pvDataJava Support for high performance data interchange [8]. easyPVA A somewhat easier to use Java API for pvAccess. exampleJava Code examples, including use of pvData containers, RPC, demo servers. directoryService EPICS V4 interface to classic EPICS Channel Finder [20]. caj An all Java implementation of the Channel Access protocol. jca A Java API and wrapper interface to the C++ implementation of the Channel Access protocol. SYSTEM REQUIREMENTS AND CONFIGURATION ------------------------------------- If you want to use EPICS V4 component pvaSrv (see above) you *must* build V4 with Base 3.14.12.x (preferably 3.14.12.4 or later). The changes that were made in Base 3.15.1 include API changes which have not been implemented in pvaSrv yet. If you're not going to build the current version of pvaSrv though you can use Base 3.15.1. pvAccessJava requires at least Java 1.7. pvAccess parameters, eg EPICS_PVA_ADDR_LIST, are described in the pvAccess Configuration spreadsheet [23]. CPU Architectures built and tested are listed in [24]. FEATURE ADDITIONS AND MAJOR CHANGES SINCE LAST RELEASE ------------------------------------------------------ 1. The C++ pvData array data types now allow read-only array data to be swapped in and shared using a new reference-counted shared_vector facility, minimizing computationally expensive copy operations, and enforce Copy-On-Write (COW) semantics, helping prevent thread conflicts. 2. Dynamic data typing is provided by two new union data types (and the two corresponding array types). In a "regular" union the dynamic type must be one of a fixed set of types, determined by the introspection interface. In a variant union it can be any pvData type. 3. Fixed and bounded scalar arrays have been provided in addition to the unbounded arrays implemented previously. 4. Windows has been added to list of supported platforms. 5. pvAccess has a new API and implementation, which reflects changes in the pvAccess protocol, giving greater flexibility and more informative channel data through channel method callbacks. The pvAccess API for channelGet, channelPut, channelPutGet, and monitor has been upgraded. The connect callbacks of these services offered by a channel now provide the introspection interface instead of the data interface. The data interface and changed bitset are now provided in the callbacks for the completion of a data request, not the connection. Similar changes have been made to channelArray, which also now allows a stride to be specified in puts and gets and removes the ability to set the capacity in the setLength request. 6. A new codec based implementation of pvAccess decouples the pvAccess communication layer from the transport layer, allowing alternative transport layer protocols such as one using zeroMQ. A codec for the former transport layer of pvAccess is provided. 7. A security plugin API that allows pluggable implementations of specific security schemes for pvAccess or Channel Access has been added to pvAccess together with one such plugin for Channel Access security. 8. 4.4 is up-to-date with the latest normative types specification, including using the new naming scheme for their type IDs. In particular the tools and examples using normative types follow the current normative type definitions. 9. In the C++ implementation, Convert, a facility for converting between two different pvData objects, has been greatly simplified, and a new facility, pvSubArray, can copy a subarray from one PVArray to another of the same element type. The following new alpha software is also bundled: 10. A new framework [pvDatabaseCPP], implemented in C++, provides V4 records and databases analogous to the records and databases of version 3. These can be used to provide V4 services over pvAccess. 11. A new library [normativeTypesCPP] provides C++ support for the following normative types: NTScalar, NTScalarArray, NTTable, NTNameValue, NTMultiChannel and NTNDArray. 12. A new library [pvaPy] provides a Python API for pvAccess and for pvData types including support for implementing RPC servers and clients. Non-Functional changes for V4.4 ------------------------------- 1. pvIOCCPP is no longer distributed. Any functionality needed from it has moved to other modules. In particular pvaSrv no longer has a dependency on pvIOCCPP. 2 pvCopy, together with pvRequest, allows a client to access to an arbitrary subset of the data in the structure associated with a pvAccess channel. It was in pvIOCJava and pvDatabaseCPP but has been moved to pvDataJava and pvDataCPP. The dependency on pvRecord has been removed. 3. CreateRequest, which is used by clients to create a pvRequest, has been moved from pvAccess to pvData. VERSION V4.3.0 ============== [** NOTE: V4.3.0 has been superseded by versions above **] SUMMARY ------- 4.3.0 concentrates on making it easy to work with the existing features of EPICS V4, while using EPICS Base V3.14/15 IOCs as the control system foundation. These include two new interfaces to Base IOC data, including over Channel Access, enabling many options for configuring a high performance and highly functional scientific instrument control environment. Other features include an easy to use API, improved command line, examples, and directory service. For more information see FEATURE ADDITIONS AND MAJOR CHANGES SINCE LAST RELEASE below. See the document "Getting Started with EPICS V4, http://epics-pvdata.sourceforge.net/gettingStarted.html Feature additions and major changes for V4.3 -------------------------------------------- 1. You can access Base IOC PV data over pvAccess. This gives the speed and facilities of pvAccess to accesses of Base IOCs, and provides the basis for coming work to allow data of a group of IOC channels to be get or set as a single call through pvAccess. See pvaSrv. 2. PV value I/O can now be done over the Channel Access protocol using only the pvAccess client. pvAccess contains Channel Access, as a "provider". This is now available in both C++ and Java implementations of pvAccess. This is useful if you want to do all your client side PV access (both Base IOC and services, through a single client side, pvAccess). See pvAccess. 3. vxWorks is directly supported. That is, a pvaSrv module may be loaded into a vxWorks IOC. 4. An easy to use API, "easyPVA", has been added. 5. The support for RPC PVs (PV value subject to arguments) has been much simplified and extended. There is now a client side library for RPC as well as the server side framework, and the server side is now very easy indeed. These extensions have been made in both, C++ and Java. 6. C++ Examples. exampleCPP contains examples of coding both simple (helloWorld) and more complex services (EPICS Archiver access). 7. Get lists of PVs in an IOC, or many other kinds of other system-wide meta-data, all within the pvAccess protocol. This is provided by a new simple pvAccess server instance called directoryService [20], that interfaces to the EPICS Channel Finder [21]. Non-Functional changes for V4.3 ------------------------------- 1. pvIOCjava is no longer distributed. It is intended that as of EPICS 4.3.0, control is done by IOCs running EPICS Base v3.14 or 15. pvIOCJava is being re-worked to support host level high performance data processing using the data flow model, for such applications as high throughput image processing. It may re-emerge in the next release, probably renamed pvProcessor. 2. The version numbering of the EPICS suite (now 4.3) has been separated from the version numbering of its composite modules. This allows for far improved specificity for indicating backward and forward compatibility through version numbers, and makes for far more streamlined packaging and distribution. The packaging process is in fact now completely file driven, so we could in theory package and distribute a new version of the suite in minutes. See instructions in "Getting Started with EPICS V4" [16]. This includes both how to build the Java distribution from sources downloaded from the Mercurial repositories at SourceForge, and the alternative of downloading the tar.gz. ------------------------------------------------------------------------ VERSION 2.0-BETA (aka V4.2) ============================ [** NOTE: Version 2.0-BETA has been superseded by versions above **] SUMMARY ------- The latest tagged release of both C++ and Java implementations of EPICS V4 are in directories and tags named 2.0-BETA. The C++ implementation of EPICS V4 is in 2.0-BETA/EPICSv4-2.0-BETA.tar.gz The Java implementation of EPICS V4 is in 2.0-BETA/EPICSv4-Java-2.0-BETA.tar.gz "Marchtest" for internal review only. See the document "Getting Started with EPICS V4," http://epics-pvdata.sourceforge.net/gettingStarted.html FILES FOR EPICS V4 C++ IMPLEMENTATION ------------------------------------- The file EPICSv4-2.0-BETA.tar.gz includes all (and only) the C++ implementation of EPICS V4, plus a make system based on EPICS V3's makefiles. This is available under folder 2.0-BETA/. Build instructions and example usage are given in [16]. MINIMUM FILES FOR EPICS V4 JAVA IMPLEMENTATION ---------------------------------------------- The file EPICSv4-Java-2.0-BETA.tar.gz includes all (and only) the Java implementation of EPICS V4. On Unix systems, the tar file might be unpacked with the command: % tar xvfz EPICSv4-Java-2.0-BETA.tar.gz Specifically the tar includes the following JAR files, plus the source for some examples (in examplesJava/) plus necessary XML files and scripts. pvAccess-2.0-BETA.jar * The EPICS V4 "wire protocol" [6] [7] pvData-2.0-BETA.jar * The EPICS V4 support for high performance data interchange [8] pvIOC-2.0-BETA.jar * The EPICS V4 Input/Output Processor (IOC). I.e. the server side [9] exampleJava/ Examples of use of EPICS V4 Remote Procedure Calling (a PV that takes arguments). Note that, for the beta 2 distribution, pvService is not longer distributed and is deprecated. It is not included in the beta 2 jars or tar file. (*) The specific version number may change following modification of this README. See instructions in "Getting Started with EPICS V4" [16]. This includes both how to build the Java distribution from sources downloaded from the Mercurial repositories at SourceForge, and the alternative of downloading the tar.gz. EXAMPLES -------- You can find examples in the various test/ subdirectories, and in exampleJava [14] and exampleCPP directories. FOR CONNECTING EPICS V4 to EPICS V3 IN C++ ------------------------------------------- See pvaSrv documentation [17], v3Channel section, for help on connecting EPICS V3 records to EPICS V4. FOR CONNECTING EPICS V4 to EPICS V3 IN JAVA -------------------------------------------- The pvAccess server (part of pvAccess, above) allows an existing Channel Access client to access a javaIOC database. The client allows the javaIOC to communicate with a Version 3 server, i.e. a javaIOC database can have links to records in a V3 IOC database. For these functions you will need the following files: These are available from the epics-pvdata SourceForge download site, or you can get them from the references provided. caj-1.1.8.jar The native Java Channel Access [5] library [3] jca-2.3.5.jar The API for the Java code interaction with EPICS Channel Access [4] USEFUL EXTERNAL SOFTWARE ------------------------ These are NOT available from the epics-pvdata SourceForge download site. 1. oncrpc is an implementation of sun rpc which is required for VXI11 support. Find a JAR for it at https://sourceforge.net/apps/trac/remotetea/wiki/WikiStart [10]. Our pvIOC SNAPSHOT uses version 1.0.7. 2. For testing EPICS V4 it is very useful use the "SWTshell" GUI application [11] that helps you interactively configure the EPICS V4 interface. For this you need to the swt.jar. To get it, you can either install Eclipse and find swt*.jar in your eclipse install around .../eclipse/plugins/org.eclipse.swt**.jar, or download it from http://www.eclipse.org/swt/ [12]. See the EPICS V4 helloWorld example service's runner script [13] for an example of including swt for Mac OS Cocoa at runtime. References ---------- [1] The EPICS V4 homepage, http://epics-pvdata.sourceforge.net [2] EPICS homepage, http://www.aps.anl.gov/epics [3] CAJ homepage, such as it is, http://epics-jca.sourceforge.net/caj/ [4] JCA homepage, http://epics-jca.sourceforge.net/jca/ [5] Channel Access Reference, http://www.aps.anl.gov/epics/base/R3-14/8-docs/CAref.html [6] pvAccess Specification, http://epics-pvdata.sourceforge.net/pvAccess_Protocol_Specification.html [7] pvAccess Java documentation, http://epics-pvdata.sourceforge.net/hgweb/pvAccessJava/raw-file/tip/documentation/pvAccessJava.html [8] pvData Java documentation, http://epics-pvdata.sourceforge.net/hgweb/pvDataJava/raw-file/tip/documentation/pvDataJava.html [9] pvIOC Java documentation, http://epics-pvdata.sourceforge.net/hgweb/pvIOCJava/raw-file/tip/documentation/pvIOCJava.html [10] RemoteTeo implementation of ONC/RPC, https://sourceforge.net/apps/trac/remotetea/wiki/WikiStart [11] SWTShell for pvIOC, http://epics-pvdata.sourceforge.net/doc/pvIOCJava/swtshell.html [12] SWT: Standard Widget Toolkit, http://www.eclipse.org/swt/ [13] helloWorld runtime setup script, http://epics-pvdata.sourceforge.net/hgweb/exampleJava/file/576e59c105e9/src/helloWorld/helloWorld_setup.bash [14] exampleJava, examples of use of EPICS V4 Java binding, http://epics-pvdata.sourceforge.net/hgweb/exampleJava/file/tip/src [15] ChannelRPC facility javadoc in pvIOC, http://epics-pvdata.sourceforge.net/doc/pvIOCJava/rpcSupport.html [16] Getting Started with EPICS V4, http://epics-pvdata.sourceforge.net/gettingStarted.html [17] pvaSrv documentation, http://epics-pvdata.sourceforge.net/docbuild/pvaSrv/tip/documentation/pvaSrv.html [18] exampleCPP, examples of use of EPICS V4 C++ binding, http://epics-pvdata.sourceforge.net/hgweb/exampleCPP/ [19] RELEASE_VERSIONS, http://sourceforge.net/p/epics-pvdata/pvDataWWW/ci/default/tree/scripts/RELEASE_VERSIONS [20] EPICS V4 directoryService, http://www.epics2013.org/dms/EPICS2013/presentations/wednesday/Session_3/V4_Lange_ChannelFinder.pdf [21] EPICS Channel Finder, http://channelfinder.sourceforge.net [22] Mercurial repos of EPICS V4, https://sourceforge.net/p/epics-pvdata/_list/hg [23] pvAccess Configuration, http://epics-pvdata.sourceforge.net/pvAccessConfig.xlsx [24] EPICS V4 CPU architecture compatibility and test status, http://epics-pvdata.sourceforge.net/Ev4buildtracker.xls
Source: README, updated 2014-12-10