The original goal of the project was simple - complete master degree. The project went well pass this goal, allowing a lot more, integrating code to support more devices and provide functionality it was not intended to provide at the beginning.
Listing current functions and capabilities is beyond scope of this document. Please see project Web at rts2.org for details.
The code is build form modules. Every module is a separate C++ class, extending one of the available, usuall abstract classes.
Abstract classes are used in the code to declare interfaces. For example, you will find two pure virtual (declared as virtual int startExposure () = 0 in camd.h) methods in Camera. If you subclass from the abstract class, you have to provide at least empty implementation of the pure virtual methods in order to be able to compile the code. This way, C++ shows you which methods you should implement for a new driver to be added into the system.