Summary
The
architecture chosen for the project can be thought of as Controller-Viewer,
with Kino as the viewer and a second program as an external controller.
The two processes are connected using CORBA, an abstraction layer
for RCP APIs. . It allows the specification of an interface in
a language and implementation independent way thought the use
of the CORBA Interface Definition Language (IDL). It can also
be used over a network, which allows distribution of a task between
machines. The CORBA implementation used is the Ace Orb (TAO) which is also used in the RTPM project and has support for real time tasks.
The change to Kino is the addition of a CORBA
server thread that exposes Kino's internal control functions. This
interface allows control of play back and editing. This server runs
in it's own thread and is mostly separate from the rest of kino
The controller process runs a CORBA client to
the server in Kino and other threads to handle the haptics and it's
own user interface.
Kino runs several threads, ‘main’
thread, one more video playback thread(s) when the video is playing
and the CORBA Server thread.
A useful client, such as the one implemented in this project, will
have several threads as well. The implemented client has two threads,
a gui thread and a haptic thread which runs a fast loop to control
the haptic device.
A CORBA RPC interface is an object with the declarations
and client side code generated from an IDL file. The server side implementation
files are auto generated then have the real code inserted into the
functions. The interface implementation is documented in the kino.idl
file and in the doxygen
generated documentation.
A more complete picture of the threads in gtkClient
and Kino-mod:
|