# Open-source Java-based OMG DDS implementation
by Fouad Allaoui, Ahmed Yehdih, Didier Donsez (advisor)
(Version : 20/08/2005)

- Download
- Licence Terms
- What is Data Distribution Service (DDS) ?
- Installation
- Demonstrations
- Documentation
- Contact

The distribution provides an open-source Java-based DDS-DCPS implementation.
The purpose of this implementation is pedagogical and demontrations

# Download

Download the latest distribution.

# Licence terms

Read the licence terms.

# What is Data Distribution Service (DDS) ?

The Object Management Group (OMG) is an international organization responsible for middleware standards. The OMG has recently adopted the specification for the Data Distribution Service for Real-Time Systems; which establishes a standard interface for publish-subscribe communications. DDS satisfies a long awaited need for a fast, flexible, fault tolerant publish-subscribe based data distribution service.
The OMG-DDS specification describes two levels of interfaces:

- A lower DCPS (Data-Centric Publish-Subscribe) level that is targeted towards the efficient delivery of the proper information to the proper recipients.
- An optional higher DLRL (Data Local Reconstruction Layer) level, which allows for a simple integration of the Service into the application layer.

A report (in french) is provided in the $DDS_HOME/docs directory.

# Installation

Follows these steps to install the environement and DDS application :

1. install JDK and the Java-based build tool Ant (configure your path).
2. install an ORB which provides an events services. We have tested our DDS implementation with Jacorb
3. configure and add the JACORB_HOME variable in your path.
4. unzip dds.zip in your installation directory DDS_HOME.
5. Launch "ant compile" from your installation directory

# Demonstrations

## Simple example

The Foo producer produces (and publishes) a random integer.
Consumers display the current integer into a Swing GUI.
NB: The Foo example is given in the DDS specification
Run the following commands (in seperate consoles) from the installation directory

1. start ant NS
2. start ant server
3. start ant FooP
4. start ant FooC
5. start ant FooC

or Launch "ant foo" from your installation directory.

## Temperature example

The temperature producer produces (and publishes) fictive temperature measurements following a (simple) sinusoidal law.
Consumers display the current temperature into a Swing GUI.
Run the following commands (in seperate consoles) from the installation directory

1. start ant NS
2. start ant server
3. start ant TempP
4. start ant TempC
5. start ant TempC

or Launch "ant temperature" from your installation directory.

## Position example

The position producer produces (and publishes) fictive positions following a (simple) track for a initial position.
The consumer is a POITracker (Point-Of-Interest) which display a message when the current position is close one of the stored POIs.
Not implemented for the moment
Suggestion: The consumer could reuse the OSGi POI Tracker code.
The producer could reuse the OSGi GPS Position Producer code.

Nota Bene: Under Windows, do not forget to kill the thread (java.exe) after an excecution, else the next execution will not start.

# Documentation

- A MSc (First-year Master of Science) report (in french)
- A MSc defense presentation (in french)

Some links on DDS:

- OCI C++ open-source implementation of DDS for TAO
- Ramzi KAROUI, CORBA /DDS, COMPETING or COMPLEMENTING THECHNOLOGIES ? at OMG Real-time and Embedded Systems Workshop, July 2005
- SPLICE (PrismTech/Thales commercial implementation)
- NDDS (RTI commercial implementation)

# Contact

- Fouad Allaouiallfou@gmail.com
- Ahmed Ould Yehdihahmed.yehdih@gmail.com
- Didier Donsezdidier.donsez@imag.fr