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.