An Object-Oriented Class Library for
Developing Device Control Application
Jie Chen, Walt Akers, Graham Heyes, Danjin Wu,
and Chip Watson
Continuous Electron Beam Accelerator Facility
The Control Device API (CDEV) is a highly modular and extensible
object-oriented C++ class library that provides a standard interface to one or
more underlying control or data acquisition packages such as EPICS or CODA
(CEBAF On-line Data Acquisition) through a common framework into which system
developers or integrators can fit custom code as building block.
CDEV defines a set of abstract classes from which a new CDEV service-layer can
be developed by inheritance and accessed with the same API through run time
dynamic binding. All I/O in the system is handled as synchronous or
asynchronous messages to devices that may span multiple services. CDEV routes
messages to appropriate services by a name service, and dispatches multiple
cdevServices to handle service specific I/O events. The cdevServices are linked
in at run time to allow an application to access a new service by name without
re-compilation or re-linking; this allows general purpose applications such as
operator displays to be configured by ascii files. In addition, CDEV handles
data transfer through cdevData objects that may contain multiple tagged values
of different types, allowing flexible I/O between clients and servers.
Current implementation of CDEV in C++ supports all features of channel access
in EPICS, and only introduces on the order of 10% additional I/O processing for
both establishing connections and for monitoring connected channels.
Integrating CODA and services into CDEV is underway.