Generic DDS subscriber

Overview

A troubleshooting generic tool to subscriber to DDS Agnostic DDS topic(s). It can be used for verify for example if DDS agnostic topic data are published, adn can be received on particular machine, the frequency of receiving data. Together with MUDPI Publisher a consistency (ramp) of the receiving data sending by the MUDPI Publisher. It can be run instead (or in parallel) with other DDS subscribers like Telemetry Subscriber. For troubleshooting and diagnostic RTI DDS related problems some additional by the product provided tools like rtiddsspy, or rtimonitor can be used.

Prerequisites

As other DDS based application also generic DDS subscriber needs RTI Connext DDS to be installed. In addition the RTI DDS QoS in XML file has to be provided and NDDS_QOS_PROFILES environment variable should point on it. E.g. By RTC Tk provided (default) QoS file.

NDDS_QOS_PROFILES=file://MyIntroot/resource/config/rtctk/RTCTK_DEFAULT_QOS_PROFILES.xml

Running

The generic DDS subscriber is run by simply executing: rtctkGenDdsSub with proper command line arguments. For command line options please run with option -h.

E.g. run the subscriber that subscribes to three topics: Topic0 Topic1 Topic2

rtctkGenDdsSub -t Topic0 Topic1 Topic2

As output there are messages that is logged once every 1500 samples for each subscribed topic with estimate (receiving) frequency. E.g.:

[0]1500 Avg: 0.00199971 Freq: 500.072

Message that indicates that particular topic (TestTopic0) is there and DDS publisher subscribed to it. So this messages should be there before any data will be received:

testSubListenerImpl(TestTopic0)::on_subscription_match
testSubListenerImpl(TestTopic0)::on_liveliness_changed:
    alive_count: 1
    not_alive_count: 0
    alive_count_change: 1
    not_alive_count_change: 0

Message that indicates that a DDS publisher for particular topic (TestTopic0) has gone:

testSubListenerImpl(TestTopic0)::on_liveliness_changed:
    alive_count: 0
    not_alive_count: 0
    alive_count_change: -1
    not_alive_count_change: 0