Overview

The object library is a convenience library meant to make it easier for third parties to write extensible applications and add on modules that will work cooperatively.

The library is composed of three main parts. At the core is the kernel, which provides the basic framework needed for dynamic loading of modules and eventing. Two standard modules - the control module and AV module - provides support for controlling the robot and video capturing. These three together provide the basic functionality needed to build an application for controlling the robot.

Kernel

Modules

Module support provides greater flexibility in the way that the software evolves. Functionality can be segmented into modules, which can then be updated and expanded independently. By using Microsoft's COM technology, different versions of separately compiled modules can interoperate seamlessly.

Modules can be added and removed dynamically. This means that only code that is needed is loaded into memory. So the application can be lean and featureful at the same time.

Events

Events allow modules to communicate with each other without knowing in advance which other modules are present. Whereas interfaces provide a compile time standard, events provide a run time standard through which modules can communicate with each other.

The eventing mechanism allows events to be paired up into event/anti-event pairs. Such pairs have a common name, but are assigned two event IDs. Event/anti-event pairs mark the transition between two mutually exclusive states. They allow two modules to synchronize their actions.

Control Module

The control module provides an object oriented wrapper around the communication library. It exposes all the functionality of the communication library, along with the benefits of reference counting and binary compatibility offered by COM.

AV Module

The AV module hides all the complexity involved with building and maintaining a DirectShow filter graph. It also acts as an intermediary through which multiple modules can share access to the video and audio capturing hardware. Since all modules share the same filter graph, they can all tap from the same video and audio source. The AV module makes sure that two modules will not simultaneously attempt to modify the filter graph.

Property Pages

In order to allow users to adjust the way in which modules perform, each module can optionally export a number of property pages. The kernel collects all the information and provides it to the application through a simple function call.