This document describes pvDatabaseCPP, which is a framework for implementing a network accessible database of smart memory resident records. Network access is via pvAccess. The data in each record is a top level PVStructure as defined by pvData. The framework includes a complete implementation of ChannelProvider as defined by pvAccess. The framework can be extended in order to create record instances that implements services. The minimum that an extension must provide is a top level PVStructure and a process method.
For more information about EPICS generally, please refer to the home page of the Experimental Physics and Industrial Control System.
pvDatabaseCPP is one of the components of EPICS Version 4
This document is only a guide to help locate code and documentation related to pvDatabaseCPP
It is intended for developers that want to use pvDatabaseCPP.
A guide for developers is available at developerGuide
This guide discusses all the components that are part of an EPICS V4 release. Some understanding of the components and how they are related is necessary in order to develop code that uses pvDatabaseCPP. In particular read everything related to pvDatabase.
The developerGuide discusses code in a way that applies to both CPP and C++. For the descriptions of the CPP specific code consult the next section.
doxygen documentation is available at doxgen
pvDatabaseCPP itself has the following implementations of a PVRecord
Example code is available as part of this release. exampleCPP
In particular look at the example code mentioned in the following sub-sections.
This has many examples of how to create both soft records and records that implement other functionality.
This shows how to implement a record that has a link to another record
Shell commands are made available via the standard DBD include mechanism provided by iocCore. The following provide EPICS V4 shell commands:
pvAccessCPP pvaSrv pvDatabaseCPP
pvDatabaseCPP provides the following iocshell command.
In addition any code that implements a PVRecord must implement an ioc command. Look at any of the examples in exampleCPP to see how to implement shell commands.