On VxWorks, an RTP application can not discover a kernel application over shared memory

When running two applications on the same WindRiver VxWorks target, one in kernel mode and the other in RTP mode, the two applications will not discover each other when using out of box settings in RTI Connext.

The reason this occurs has to do with how RTI Connext internally marks the individual shared memory segments and the fact that in VxWorksit is not possible for an RTP task to get information about any kernel task and vice-versa. This makes each application use the same participant_id thereby not discovering each other because each application thinks it’s receiving it’s own discovery messages.

There are two workarounds for the above situation:

1) Disable shared memory in both applications. This can be accomplished by setting the following QoS parameters in both applications QoS XML file:

<participant_qos>
    <transport_builtin>
        <!--  Enable only UDPv4  -->
        <mask>UDPv4</mask>
    </transport_builtin>

    <discovery>
        <!-- Remove shared memory locator from initial peers -->
        <initial_peers>
            <element>builtin.udpv4://127.0.0.1</element>
            <element>builtin.udpv4://239.255.0.1</element>
        </initial_peers>
    </discovery>
</participant_qos>
2) Explicitly set the participant_id of each application to a different value. This can be accomplished by setting the following QoS parameter in both applications QoS XML file: 
<participant_qos>
   <wire_protocol>
        <participant_id>1</participant_id>
   </wire_protocol>
</participant_qos>
Each application should have a unique participant_id.
 
Platform:
Keywords: