What's New in 2.4.12 ==================== .. _MICRO-1901: 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 |me| 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. .. MICRO-2117 DomainParticipants no longer allocate dynamic memory during deletion -------------------------------------------------------------------- DomainParticipants will no longer allocate dynamic memory during deletion. .. MICRO-2103 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. .. MICRO-1675 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 :ref:`api_section` API for details. .. MICRO-1815 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. What's Fixed in 2.4.12 ====================== .. MICRO-1922 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] .. MICRO-2007 A DataReader and DataWriter with incompatible liveliness kind and infinite lease_duration matched ------------------------------------------------------------------------------------------------- In previous versions |me| 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 |me| applications since with an infinite liveliness duration, the liveliness will never expire, regardless of kind. [RTI Issue ID MICRO-2007] .. MICRO-2090 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] .. MICRO-2243 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] .. MICRO-2053 `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] .. MICRO-1700 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] .. MICRO-1709 Unable to generate code for XML or XSD defined types ---------------------------------------------------- Previous releases of |me| 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] .. MICRO-1750 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] .. MICRO-1909 Failure to link for VxWorks RTP using shared libraries compiled with CMake -------------------------------------------------------------------------- Due to use of incorrect compiler and linker options for VxWorks RTP mode a linker error occurred when compiling projects generated with CMake®. This issue has been resolved. [RTI Issue ID MICRO-1909] .. MICRO-1952 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] .. MICRO-2013 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] .. MICRO-1841 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] .. MICRO-1957 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] .. MICRO-2104 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] .. MICRO-1602 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] .. MICRO-1622 rtime-make did not work when there was a space in the installation path ----------------------------------------------------------------------- The rtime-make script did not work when |me| was installed in a directory path containing spaces. This issues has been resolved. [RTI Issue ID MICRO-1622] .. MICRO-1980 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] .. MICRO-2095 '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] .. MICRO-2018 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] .. MICRO-1930 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] .. MICRO-2115 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] .. MICRO-2192 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] .. MICRO-2158 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] .. MICRO-2232 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] .. MICRO-2121 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] .. MICRO-2171 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] .. MICRO-2109 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] .. MICRO-2196 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] .. MICRO-2209 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] .. MICRO-2008 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] 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]