8.4.5. What’s New in 2.4.12

8.4.5.1. Shared UDP port for discovery and user-data in a DomainParticipant

This release allows sharing a UDP port per DomainParticipant for discovery and user-traffic. The advantage is that Connext Micro will create a single receive thread for unicast instead of two.

The disadvantage is that this port mapping is not compliant with the DDS Interoperability Wire Protocol and communication with other DDS implementations might not be possible.

This feature may only be used if multicast or unicast is used for both discovery and user traffic. If both unicast and multicast are enabled this feature cannot be used.

To enable this feature assign the same value to both builtin and user port offsets in RtpsWellKnownPorts_t.

8.4.5.2. DomainParticipants no longer allocate dynamic memory during deletion

DomainParticipants will no longer allocate dynamic memory during deletion.

8.4.5.3. New QoS parameter to set maximum outstanding samples allowed for remote DataWriter

A new QoS parameter has been exposed for the endpoint discovery endpoints in the dynamic endpoint discovery plugin (DPDE). The new field, max_samples_per_remote_builtin_endpoint_writer in DPDE_DiscoveryPluginProperty, can be set to increase the number of samples a remote writer may have per builtin endpoint reader and thus decrease network traffic. Please refer to the DPDE for a description of this new parameter.

8.4.5.4. New QoS parameter to adjust preemptive ACKNACK period

A new QoS parameter has been introduced to expose the preemptive ACKNACK period on DataReaders. The new parameter is configured with:

  • DDS_DataReaderQos.protocol.rtps_reliable_reader.nack_period for user data readers

  • builtin_endpoint_reader_nack_period for the builtin discovery endpoints in the Dynamic discovery plugin

Please refer to API Reference API for details.

8.4.5.5. Deserialization of Presentation QoS policy

This release provides better support for the Presentation QoS policy. Previously this QoS policy was not supported by the DataWriter; the default value was assumed for a discovered DataReader, which caused an “Unknown QoS” warning when it was received. In this release, DataWriters will deserialize the Presentation QoS policy and check for compatibility.

8.4.6. What’s Fixed in 2.4.12

8.4.6.1. Examples used DomainParticipant_register_type instead of FooTypeSupport_register_type

In previous versions the examples registered types using “DDS_DomainParticipant_register_type()” instead of the recommended “FooTypeSupport_register_type()”. This version has updated the examples to use the recommended “FooTypeSupport_register_type()” instead.

[RTI Issue ID MICRO-1922]

8.4.6.2. A DataReader and DataWriter with incompatible liveliness kind and infinite lease_duration matched

In previous versions Connext Micro allowed a DataWriter to match a DataReader if the liveliness kind was incompatible but the liveliness duration was infinite. However, the OMG DDS specification mandates stricter matching rules and in this version a DataReader and DataWriter will only match when both the liveliness duration and kind are compatible:

  1. Requested Liveliness Lease duration is greater than or equal to the Offered lease duration.

  2. Requested Liveliness kind is less than or equal to the Offered Liveliness kind where AUTOMATIC_LIVELINESS_KIND < MANUAL_BY_PARTICIPANT_LIVELINESS_KIND < MANUAL_BY_TOPIC_LIVELINESS_KIND.

Note that this did not affect communication between Connext Micro applications since with an infinite liveliness duration, the liveliness will never expire, regardless of kind.

[RTI Issue ID MICRO-2007]

8.4.6.3. Warning at compilation time for FreeRTOS port

An incompatible pointer type warning was printed at compilation time when compiling for FreeRTOS. This issue has been resolved.

[RTI Issue ID MICRO-2090]

8.4.6.4. Using DDS_NOT_ALIVE_INSTANCE_STATE caused compilation error in C and C++

Using the constant DDS_NOT_ALIVE_INSTANCE_STATE caused a linker error due to a missing definition. This issue has been resolved.

[RTI Issue ID MICRO-2243]

8.4.6.5. Seq_copy() did not work when the source sequence is a loaned/discontiguous sequence

Calling FooSeq_copy() on a loaned or discontiguous sequence did not work correctly. This issue has been fixed.

[RTI Issue ID MICRO-2053]

8.4.6.6. Warnings when compiling the example generated by Code Generator

When compiling the example generated by rtiddsgen, the compiler may have given warnings about unused variables. The generated code has been updated to avoid these warnings.

[RTI Issue ID MICRO-1700]

8.4.6.7. Unable to generate code for XML or XSD defined types

Previous releases of Connext Micro did not include the XML and XSD schemas required to generate type-support code from XML or XSD files. This issue has been resolved.

[RTI Issue ID MICRO-1709]

8.4.6.8. Linker error in C++ application when C types were used

Compiling generated C type-support code as C++ caused compilation errors. This issue has been resolved.

[RTI Issue ID MICRO-1750]

8.4.6.10. rtiddsgen may have failed on Windows systems when -jre was specified

The rtiddsen -jre option did not accept paths with spaces. This issue has been resolved.

[RTI Issue ID MICRO-1952]

8.4.6.11. rtime-make did not work when it was started from different shell than Bash

rtime-make requires Bash on Unix systems. However it did not explicitly launch Bash and would fail if started from a Bash incompatible shell. This has been fixed.

[RTI Issue ID MICRO-2013]

8.4.6.12. Linker error when using shared libraries on VxWorks systems

There was a linker error when compiling the examples for ppc604Vx6.9gcc4.3.3 using shared libraries. The compiler reported that the libraries could not be found. This issue has been resolved.

[RTI Issue ID MICRO-1841]

8.4.6.13. A run-time error may have occurred on Windows or when compiling for FACE when using hostnames in the peer list

Due to incorrect use of the getaddrinfo() API on Windows or POSIX when compiling for FACE, a run-time error may have occured when resolving hostnames. This issue has been fixed.

[RTI Issue ID MICRO-1957]

8.4.6.14. Entity ID generation was not thread-safe

Entity ID generation for DataReaders and DataWriters was not thread-safe and may have lead to duplicate entity IDs. This problem has been resolved.

[RTI Issue ID MICRO-2104]

8.4.6.15. DomainParticipant creation failed if active interface had invalid IP

An active interface without a valid IP address assigned may have caused DomainParticipant creation to fail. This problem has been resolved. Now if an interface with an invalid IP address is used, it will be ignored and the DomainParticipant will still be created.

[RTI Issue ID MICRO-1602]

8.4.6.16. rtime-make did not work when there was a space in the installation path

The rtime-make script did not work when Connext Micro was installed in a directory path containing spaces. This issues has been resolved.

[RTI Issue ID MICRO-1622]

8.4.6.17. Sample filtering methods were always added to the subscriber code for C

The generated subscriber example code always included code to filter sample-based fields in the IDL type. However, if the generated IDL file was modified to exclude these fields, the code would fail to compile. The generated code now includes instructions for how to filter instead.

[RTI Issue ID MICRO-1980]

8.4.6.18. ‘Failure to give mutex’ error

In Connext DDS Micro 2.4.11, a subtle race condition may have occurred on multi-core machines. When this happened, an error message about failing to give a mutex would be printed: error code (EC) 44 in module 1 (OSAPI). This problem has been resolved.

[RTI Issue ID MICRO-2095]

8.4.6.19. UDP interface warning using valid interfaces

Connext DDS Micro logged a warning if no new interfaces were added for each address listed in enabled_transports. This applied to the enabled_transports field in the DiscoveryQosPolicy and UserTrafficQosPolicy in the DomainParticipantQos, and the DDS_TransportQosPolicy in the DataReaderQos and DataWriterQos. This problem has been resolved. Now Connext DDS Micro will only log a warning if no new interfaces are added per enabled transport.

[RTI Issue ID MICRO-2018]

8.4.6.20. A DataReader May Stop Receiving Samples When Filtering Callbacks Are Used

When using on_before_deserialize() or on_before_commit() to drop samples the DataReader may have been depleted of resources and stop receiving data. This issue has been fixed.

[RTI Issue ID MICRO-1930]

8.4.6.21. DDS_WaitSet_wait() returned DDS_RETCODE_ERROR if unblocked with no active conditions

An application that used a combination of polling a DataReader and blocking on a DDS_WaitSet may have caused DDS_WaitSet_wait() to return DDS_RETCODE_ERROR. This happened if the DDS_WaitSet was unblocked by an attached condition, but there were no active conditions. This problem has been resolved.

[RTI Issue ID MICRO-2115]

8.4.6.22. Large timeout values may have caused segmentation fault

Timeout values larger than 2000s may have caused a segmentation fault during creation of DDS entities. This issue has been fixed.

[RTI Issue ID MICRO-2192]

8.4.6.23. HelloWorld_dpde_waitset C++ example uses wrong loop variable for printing data

When multiple samples are loaned by calling take, the HelloWorld_dpde_waitset C++ example uses the wrong loop variable, i, with data_seq instead of the correct index b. This issue has been resolved.

[RTI Issue ID MICRO-2158]

8.4.6.24. WaitSet_wait returned generic error when returned condition sequence exceeded capacity

If the number of returned conditions exceeded the maximum size of the returned condition sequence, a generic error, DDS_RETCODE_ERROR, was returned instead of the expected error, DDS_RETCODE_OUT_OF_RESOURCES. This problem has been resolved.

[RTI Issue ID MICRO-1933]

8.4.6.25. Publication handle not set in SampleInfo structure when on_before_sample_commit() called

The publication_handle member of the DDS_SampleInfo structure passed to a DataReader’s on_before_sample_commit() function was not set. This issue has been fixed.

[RTI Issue ID MICRO-2121]

8.4.6.26. Duplicate DATA messages are sent to multicast in some cases

Duplicate DATA messages were sent to multicast when multiple DataReaders were configured with multicast and unicast receive addresses. This issue has been fixed.

[RTI Issue ID MICRO-2043]

8.4.6.27. GUID generation on QNX for processes run one after another may lead to duplicate GUIDs

On QNX systems, two processes run one after another in quick order may end up with the same GUID. The probability of GUID reuse has been reduced in this release.

[RTI Issue ID MICRO-2109]

8.4.6.28. Read/take APIs returned more than depth samples if an instance returned to alive without application reading NOT_ALIVE sample

If an instance transitioned from NOT_ALIVE_NO_WRITERS or NOT_ALIVE_DISPOSED to ALIVE and the application did not read/take the sample indicating NOT_ALIVE_NO_WRITERS or NOT_ALIVE_DISPOSED, the number of samples returned would exceed the depth set by the History QoS policy. This issue has been fixed.

[RTI Issue ID MICRO-2196]

8.4.6.29. Segmentation fault if OSAPI_Semaphore_give() was called from one thread while another called OSAPI_Semaphore_delete()

An application may have terminated with a segmentation fault if OSAPI_Semaphore_give() was called from one thread while another called OSAPI_Semaphore_delete() on Unix-like systems. This issue has been resolved.

[RTI Issue ID MICRO-2209]

8.4.6.30. Communication problems between Connext DDS Professional 6 and Connext DDS Micro 2.4.11

Connext DDS Professional 6 advertises support for RTPS protocol version 2.3, while Connext DDS Micro 2.4.11 and earlier only accepted RTPS 2.1. Therefore tools such as Admin Console 6.0.0 did not properly discover entities from a Micro 2.4.11 application. This release of Connext DDS Micro complies with RTPS 2.1 and later minor versions (such as 2.3). Unsupported RTPS messages are ignored.

[RTI Issue Id MICRO-2008]

8.4.6.31. OSAPI_System_get_ticktime() not implemented for FreeRTOS

OSAPI_System_get_ticktime() was not implemented for FreeRTOS. An application using a finite DDS deadline or liveliness would have a run-time failure. This issue has been resolved.

[RTI Issue ID MICRO-2240]