Tuesday, February 17, 2009

The Standard C++ PSM for DDS on SourceForge

Hello,

I've recently started CZed a SourceForge project that will provide the reference Standard C++ PSM for DDS. The project page is available here, while the Subversion repository can be navigated from here. The current version of the API is not complete but the bulk of it is in place.

The main idea behind CZed is to have a working C++ PSM before the actual recommendation of the standard takes place. This will ensure that as many people as possible will have experimented the API and feed back comments thus increasing the likelihood that the API is very successful. Thus, take a look at the API and drop me questions, comments, or ideas.

Cheers,
@ngelo

Thursday, February 5, 2009

Choosing OpenSplice DDS

Yesterday I gave a webcast, now available here, which first goes through the strategic, technical, and financial reasons for moving to OpenSplice DDS, and then shows some migration use cases as well as migration tactics.
Strategic vs Tactical Perspective
One of the key point I made in the first part of the webcast was trying to ensure that people look at Open Source in from a strategic as opposed to tactical perspective. In essence, now that OpenSplice DDS is Open Source many people will just see it as a cost effective manner of procuring the best DDS implementation available on the market. This perspective, although correct, is tactical and misses the strategic implication of Open Source, which if properly exploited are those that will bring the highest benefits.

An example, Open Source is a key element in enabling and catalyzing lead-user innovation; some visionary companies in domains characterized by lead-users innovations, such as Aerospace and Defense, have already realized and mastered the strategic relevance of Open Source. Other company are starting to understand its potential and are quickly embracing the new way.

Embracing OpenSplice DDS

The second part of the webcast, focused on showing some use cases motivating a move to OpenSplice DDS. For instance, I showed how OpenSplice DDS can be used to scale-out a data tier by either completely replacing a DBMS, or by offloading or fully federating the DBMS. I also showed how OpenSplice DDS can be used to replace another DDS implementation of yet another pub/sub technology.

From DDS-XYZ to OpenSplice DDS
Finally, one of the topic covered on the webcast was how to actually port applications developed on a DDS-XYZ to OpenSplice DDS. As explained in the webcast this is typically just an exercise of finding and removing calls to proprietary API that might be required by DDS-XYZ. Indeed, as shown by the example below, OpenSplice DDS does not require the use of any custom API for configuring transport or anything else. Configuration completely taken care by external tools. Below is an example that shows the code necessary to write a publisher for a TempSensor Topic.

// -- IDL --
module demo {
module tc {

struct TempSensor {
long tID;
float temp;
float humidity;
};
#pragma keylist TempSensor tID
};
};

// -- Publisher Implementation --

package demo.tc;

import DDS.*;

public class TempSensorApp {

static final String PARTITION = "SensorData";

public static void main(String[] args) {

if (args.length <> ");
System.exit(-1);
}

int tid = Integer.parseInt(args[0]);
int samples = Integer.parseInt(args[1]);

DomainParticipantFactory dpf =
DomainParticipantFactory.get_instance();

/**
* Create Domain Participant
**/
DomainParticipant part =
dpf.create_participant(null,
PARTICIPANT_QOS_DEFAULT.value,
null,
ANY_STATUS.value);

/**
* Regiter Type Support for TempSensor
**/
TempSensorTypeSupport tempSensorTS = new TempSensorTypeSupport();
String tempSensorTN = tempSensorTS.get_type_name();
tempSensorTS.register_type(part, tempSensorTN);

/**
* Create the TempSensor Topic
**/
TopicQosHolder topicQoS = new TopicQosHolder();
part.get_default_topic_qos(topicQoS);
Topic tempSensorTopic = part.create_topic("Demo_TempSensor",
tempSensorTN,
topicQoS.value,
null,
ANY_STATUS.value);


/**
* Create a Publisher
**/
PublisherQosHolder pubQoS = new PublisherQosHolder();
part.get_default_publisher_qos(pubQoS);
pubQoS.value.partition.name = new String[1];
pubQoS.value.partition.name[0] = PARTITION;

Publisher pub =
part.create_publisher(pubQoS.value, null, ANY_STATUS.value);

/**
* Create a Writer
**/
DataWriter writer =
pub.create_datawriter(tempSensorTopic,
DATAWRITER_QOS_USE_TOPIC_QOS.value,
null,
ANY_STATUS.value);

TempSensorDataWriter tempWriter =
TempSensorDataWriterHelper.narrow(writer);

/**
* Register Instance
**/
TempSensor temp = new TempSensor();
temp.tID = tid;

long handle = tempWriter.register_instance(temp);

/**
* Write Sample
**/
temp.temp = 12.1F;
temp.humidity = 0.45F;

for (int i = 0; i <> Temperature = " + temp.temp
+ " - Humidity = " + temp.humidity);

try {
Thread.sleep(1000);
}
catch (InterruptedException e) { }
temp.temp += 0.1;
temp.humidity += 0.01;
}

/**
* Cleanup
**/
tempWriter.dispose(temp, handle);
tempWriter.unregister_instance(temp, handle);

pub.delete_datawriter(tempWriter);

part.delete_publisher(pub);

dpf.delete_participant(part);
}
}

Monday, February 2, 2009

Sharing Slides

Hello All,

I've just signed up with slideshare.com and from now on most of the slides on DDS or OpenSplice DDS will be available here . For the time being I've uploaded the presentation that explains the vision behind the Open Source launch of OpenSplice DDS, and which also covers the new product structure.

Below is also a neat widget that can be used to check out the various slides I'll be uploading.

Ciao,
@ngelo

Tuesday, January 13, 2009

OpenSplice DDS goes Open Source

PrismTech announced today the release of OpenSplice DDS as Open Source Software. OpenSplice DDS is a full implementation of the OMG DDS Standard, providing support for both the DCPS and DLRL layers. PrismTech will be sharing his visions and answering questions during an online webcast organized for the 14th of January 2009. Registration for the webcast is free and available here.

Wednesday, October 22, 2008

OpenSplice DDS Podcasts on YouTube

I've started to post a series of podcast covering OpenSplice DDS on YouTube. The Porcast Channel is http://www.youtube.com/user/OpenSpliceDDS, here I'll post at least one recording per week covering one specific aspect of OpenSplice DDS. There are a few Podcast already avaiable, and why not starting with the first one?

Cheers,
@ngelo

Friday, May 30, 2008

Extensible and Dynamic Topic Types for DDS

here The OMG DDS standard has been designed to effectively support statically defined data models. This assumption ensures that topics data types are known at compile time, that every member of the DDS global data space agrees precisely on the same topic-type association, and that extensions are captured by either DLRL classes inheritance, or by DCPS IS-A relations. Although this model allows for good properties such as static type checking and very efficient, low-overhead, implementation of the standard it also suffers a few drawbacks. Namely, it is hard to cope with data models evolving over time unless all the elements of the system are upgraded consistently. It is also complex to deal with dynamically defined topics, although in some case this is achievable by means of proprietary APIs.

These limitation are currently being addressed in the scope of the OMG RFP mars/2008-05-03, which is looking  to extend the DDS standard with the following features:

     Extensible Topic Type System. This will define an abstract type system for DDS Topics Type, that shall provide built-in support for extensibility, as well as support for complex types such as object maps, and sparse data.

     Dynamic DDS API. A Dynamic DDS API, to be used as an alternative to existing API, that shall allow to define, read, take, access, and write, Topics whose types are not know at compile time.

     Data Encapsulation Format. New data encapsulation format, or extend existing, so to efficiently support extensible and dynamic types.

The RFP is available here.


Cheers,

@angelo

Tuesday, May 20, 2008

Webcasts: System Wide Interoperability for Next-Generation Air Navigation Systems - May 21st, 2008

Air Navigation Systems are increasingly being challenged by significant increases in traffic volume, which are projected to double by 2025. These systems also demand seamless information sharing to enable new operational requirements, such as ubiquitous and real-time access to flight data information and improved gate-to-gate services. Several programs in Europe and USA, such as the CoFlight European Flight Data Processor (eFDP), ICOG, SWIM, SESAR, and NEXT-GEN, are investigating how these challenges can be addressed from a technological and operational perspective. The OMG Data Distribution Service (DDS)—already embraced by programs such as CoFlight and ICOG-2—is emerging as a key standard technology for enabling system-wide interoperability since it can ensure the performance, availability, and determinism required by Air Navigation Systems. The webcasts will (1) explain what is motivating the swift adoption of DDS in next-generation Air Navigation Systems and (2) provide concrete examples of using OpenSplice DDS to solve challenging Air Navigation Scenarios.
 
--

I am running this webcast tomorrow, hope to see you there!

Cheers,
@ngelo