Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

RCU Control Engine Implemented in C++

0.1

This is a C++ implementation of the DCS RCU Control Engine

content

overview

This is a re-implementation of the RCU control engine, based on the C++ reimplementation of the FeeServer.

The basics of the library is the RcuCE::ControlEngine class. This defines a the interface to the FeeServer. It handles incoming events, and updates the services defined in the server. The control engine defines a few commands it self (see Command interpretation for the RCU control engine.), but delegates most other commands to the registered RcuCE::CommandHandler objects. The control engine also has a few services, but most other services are managed by registered ServiceProvider objects.

The library also defines a top-level interface to the RCU (RcuCE::Rcu). This provides all the commands to read/write registers of the RCU and associated Front-end cards both via the ALTRO bus and the $ I^2C$.

The RcuCE::Rcu class uses the RcuCE::Dcsc class which is an abstraction over the Dcsc message buffer interface.

Front-end card services are not defined directly in the library. Instead, the user should provide a sub-class of the RcuCE::FecFactory class (see rcuce_fecs) to create custom RcuCE::Fec objects whenever a front-end card becomes active. When the RcuCE::Rcu object sees that a FEC has been turned on, it suspends the monitor thread, and asks the RcuCE::FecFactory to give it a new RcuCE::Fec object. The RcuCE::Fec object should register new services via the RcuCE::ServiceProvider interface. After having made all needed Fec objects, the RcuCE::Rcu object resumes the monitor thread. A similar approach is used if a FEC disappeares: The monitor thread is suspended, the RcuCE::Fec object is removed, along with its services, and the monitor thread is resumed.

The library provides a Finite State Machine (FSM) interface that a user can derive from to define their own state machines. See also rcuce_fsm.


Generated on Thu Apr 17 14:32:44 2008 for FMD FeeServer by doxygen 1.3.5