.. include:: ../vars.rst Previous Releases ================= What's New in 2.4.12.1 ...................... .. MICRO-2247 Dynamic memory allocations removed from Dynamic Discovery Plugin ---------------------------------------------------------------- The dynamic discovery plugin in |me| allocated memory dynamically for discovered topic and type names after the DomainParticipant was enabled. This release includes improvements that make it possible to avoid all memory allocations. Dynamic memory allocations are avoided by creating the DomainParticipant in a disabled state and creating all local endpoints before the DomainParticipant is enabled. A DomainParticipant is created in a disabled state by setting `DomainParticipantFactoryQos.entity_factory.autoenable_created_entities = DDS_BOOLEAN_TRUE` before calling `create_participant()`. When all entities have been created, call `enable()` on the DomainParticipantFactory to enable all entities. .. MICRO-1985 Support for AUTOSAR Classic --------------------------- This release includes support for Elektrobit AUTOSAR 4.0.3 and Mentor AUTOSAR 4.2.2 on Infineon AURIX TriCore TC297. Please refer to :ref:`building_autosar` for details. .. MICRO-1131 Support for detecting corrupted RTPS messages --------------------------------------------- This release includes support for detecting and discarding corrupted RTPS messages. A checksum is computed over the DDS RTPS message including the RTPS Header. This checksum is sent as a new RTPS submessage. The subscribing application detects this new submessage and validates the contained checksum. When a corrupted RTPS message is detected, the message is dropped. To enable the use of a checksum in a DomainParticipant, there are three new fields in the `WireProtocolQosPolicy`: compute_crc, check_crc, and require_crc: - To send the checksum, enable `compute_crc` at the sending application. - To drop corrupted messages, enable `check_crc`. - To ignore a participant with compute_crc set to `false`, enable `require_crc`. Please refer to :ref:`msgintegrity` in the |me| User's Manual for details. .. MICRO-2366 Reduced default socket send/receive buffer size for QNX systems --------------------------------------------------------------- Some QNX kernels have a maximum send and receive socket buffer size smaller than the default value used by |me|. The default send and receive socket buffer size has been changed to 64 Kbytes in |me| for QNX builds. .. MICRO-2342 For AUTOSAR the IP address is now used to generate a unique DomainParticipant ID -------------------------------------------------------------------------------- In previous versions of |me| for AUTOSAR the timestamp was used to generate a unique DomainParticipant ID. This release uses the IP address from the Autosar configuration by default. What's Fixed in 2.4.12.1 ........................ .. MICRO-2219 PUBLICATION_MATCHED_STATUS and SUBSCRIPTION_MATCHED_STATUS may never have triggered a WaitSet if the status was enabled _after_ the DomainParticipant was enabled ----------------------------------------------------------------------------------------------------------------------------------------------------------------- A StatusCondition with PUBLICATION_MATCHED_STATUS or SUBSCRIPTION_MATCHED_STATUS enabled may never have triggered a WaitSet, if the status was enabled after the DomainParticipant was enabled. This issue has been resolved. [RTI Issue ID MICRO-2219] .. MICRO-2369 Unicast DataReader stopped receiving samples after DataWriter matched with a multicast DataReader ------------------------------------------------------------------------------------------------- A DataReader with a unicast locator stopped receiving samples from a matched DataWriter when another DataReader with a multicast locator matched with that DataWriter. This problem has been resolved. Now all matched DataReaders will receive samples, regardless of whether their locators are unicast or multicast. [RTI Issue ID MICRO-2369] .. MICRO-2287 A RTPS max_window_size not divisible by 32 may have resulted in retransmission of wrong sequence number ------------------------------------------------------------------------------------------------------- An RTPS max_window_size not divisible by 32 may have caused retransmission of a sequence number not being requested. Note that the default value is divisible by 32. This issue has been fixed. [RTI Issue ID MICRO-2287] .. MICRO-2275 POSIX mutex implementation did not conform with FACE Safety Profile ------------------------------------------------------------------- The POSIX mutex implementation did not conform with the FACE Safety Profile. This release conforms to the FACE Safety profile for single-core CPU architectures. [RTI Issue ID MICRO-2275] .. MICRO-2278 Waitset with timeout of 0 did not return immediately ---------------------------------------------------- A Waitset with a 0 timeout did not return immediately, but was rounded up to one clock period. This issue has been fixed. [RTI Issue ID MICRO-2264] 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] What's New in 2.4.11 .................... Support for ThreadX/NetX ------------------------ Support for the ThreadX operating system, version 5.7, and the NetX TCP/IP network stack, version 5.9. Batching (reception only) ------------------------- Batching reception. Please refer to the new user's manual UserManuals_Batching for details. UDP Transformations ------------------- Please refer to the new user's manual \ref UserManuals_UDPTransform for details. .. MICRO-1805 Optionally exclude builtin UDP Transport from compilation --------------------------------------------------------- Setting the flag -DRTIME_UDP_EXCLUDE_BUILTIN=1 excludes the UDP transport from being built. This setting can be useful if communication is done using only shared memory, INTRA, or a custom UDP transport. .. MICRO-1800 Publication handle of DataWriter now provided upon DataReaderListener sample loss --------------------------------------------------------------------------------- When the DDS_DataReaderListener's on_sample_lost event is triggered, the returned DDS_SampleLostStatus.sample_info now contains the publication_handle of the DataWriter that originally wrote the lost sample(s). .. MICRO-1747 DataWriters offer TOPIC presentation ------------------------------------ |me| DataWriters now offer the DDS_TOPIC_PRESENTATION_QOS presentation (when coherent_access = FALSE). This presentation is compatible with any reader using DDS_TOPIC_PRESENTATION_QOS and DDS_INSTANCE_PRESENTATION_QOS, when ordered_access = TRUE and ordered_access = FALSE. Micro readers will remain unchanged and will only support DDS_INSTANCE_PRESENTATION_QOS when ordered_access = FALSE. .. MICRO-1630 New warning if a configured UDP transport does not have any interface --------------------------------------------------------------------- A warning in logs has been added to notify you when a configured UDP transport does not have any interface. This condition normally indicates a wrong UDP configuration, which might result in discovery and/or communication failure. What's Fixed in 2.4.11 ...................... MICRO-1814 Incorrect thread ID returned for VxWorks RTP ------------------------------------------------------- The function OSAPI_Thread_self() when called by a VxWorks Real-Time Process (RTP) always returned the (process) ID of the RTP, even for tasks spawned by the RTP. This issue has been fixed. [RTI Issue ID MICRO-1814] NULL listener and non-empty status mask not allowed for C++ DataReader ---------------------------------------------------------------------- A C++ DataReader was incorrectly not allowed to be created with a NULL DataReaderListener and a non-empty status mask (i.e., not DDS_STATUS_MASK_NONE). [RTI Issue ID MICRO-1807] accept_unknown_peers did not work when Shared Memory transport was enabled in RTI Connext DDS Pro ------------------------------------------------------------------------------------------------- When |me| discovered a RTI Connext DDS Pro application with Shared Memory transport enabled, |me| failed to correctly use the UDPv4 locators instead. This issue has been fixed. [RTI Issue ID MICRO-1798] Calling FooSeq_set_maximum() repeatedly with the same maximum size results in seg-fault --------------------------------------------------------------------------------------- In RTI |me| 2.4.10.x and earlier, calling FooSeq_set_maximum() repeatedly with the same maximum size on an IDL sequence type containing non-primitive types (such as enums or other structures) caused a segmentation fault. This issue has been fixed. [RTI Issue ID MICRO-1786] CMake reports error if CMake version 2.8.10.2 or 2.8.10.1 is used ----------------------------------------------------------------- |me| buildable sources can not be compiled with CMake versions 2.8.10.1 or 2.8.10.2. This issue has been fixed. [RTI Issue ID MICRO-1748] OS error code (errno) not logged if sendto() returned error ----------------------------------------------------------- The OS error code (errno) was not correctly logged if sendto() returned an error. This issue has been fixed. [RTI Issue ID MICRO-1712] Codegen might generate an incorrect pub/sub example if opction "-create typefiles" is not used ---------------------------------------------------------------------------------------------- Wrong example code is generated in case rtiddsgen is executed with option -create examplefiles and option -create typefiles is NOT used. This issue has been fixed. [RTI Issue ID MICRO-1696] Generated examples use always the last structure in the idl ----------------------------------------------------------- Examples generated using Codegen use always the last structure in the idl file, even if it is not top-level. This issue has been fixed. [RTI Issue ID MICRO-1694] Instance might not have been disposed or unregistered under some conditions --------------------------------------------------------------------------- Unregistered or disposed samples were not processed when preceded by a GAP sub-message within the same RTPS message. This issue has been fixed. [RTI Issue ID MICRO-1692] Reliable Endpoints with only multicast locators may not communicate ------------------------------------------------------------------- A reliable DataReader configured with only multicast (no unicast) locator(s) may have failed to discover or communicate with a reliable DataWriter. Both built-in discovery endpoints and user-data endpoints were affected. This issue has been fixed. [RTI Issue ID MICRO-1687] Access to DDSEntity instance handles from C++ API ------------------------------------------------- Users of RTI Connext DDS Micro's C++ API can now access instance handles of any DDS entity using method DDSEntity::get_instance_handle. [RTI Issue ID MICRO-1681] Syntax changed for initial peer participant index range ------------------------------------------------------- When configuring the initial peers of a DomainParticipant (e.g. DDS_DomainParticipantQos.discovery.initial_peers), the syntax for specifying a range of participant indices for a peer locator has changed: a hyphen is now the separator, replacing a comma. In general, a peer "[x-y]@
" means that participant discovery messages will be sent to the address for participant indices x through y. [RTI Issue ID MICRO-1680] lookup_instance() is not thread safe ------------------------------------ The lookup_instance() was not thread safe in |me| 2.4.10.x and earlier. If an application was calling lookup_instance() from both a listener and a WaitSet/polling thread at the same time, the instance handle could be corrupted. This issue has been fixed. [RTI Issue ID MICRO-1679] CMakeLists.txt and README.txt created when they should not ---------------------------------------------------------- Codegen generates project files CMakeLists.txt and README.txt are generated even when project files are not generated. This issue has been fixed. [RTI Issue ID MICRO-1673] No communication when DomainParticipant used same GUID as another DomainParticipant in different domain ------------------------------------------------------------------------------------------------------- Given an application that creates DomainParticipants in different DDS domains, a DomainParticipant created with the same Participant GUID (i.e., the GUID Prefix portion of the GUID) as created for a DomainParticipant in a different domain will fail to discover or communicate with other endpoints within its own domain. A workaround would be for the application to assign unique GUIDs for all DomainParticipants across all domains. This issue has been fixed. This issue has been fixed. [RTI Issue ID MICRO-1671] Compiler error might happen when lwIP is used --------------------------------------------- An incorrectly defined compiler macro causes a compilation error when lwIP stack is used and LWIP_DNS is defined. This issue has been fixed. [RTI Issue ID MICRO-1664] Wrong C++ code generated for unkeyed types when using IDL modules and -namespace option --------------------------------------------------------------------------------------- Code generated with the following command failed if a struct with the same name was defined in two namespaces, and the first namespace did not have any key: rtiddsgen -micro -example HelloWorld.idl -replace -language C++ -namespace This issue has been fixed. [RTI Issue ID MICRO-1663] DDS_WaitSet_wait does not work if OSAPI_Semaphore_take() returns an error ------------------------------------------------------------------------- DDS_WaitSet_wait does not work if OSAPI_Semaphore_take() returns an error; RETCODE_PRECONDITION_NOT_MET is always returned. This issue has been fixed. [RTI Issue ID MICRO-1658] Log buffer could overflow on 64-bit architectures, causing application crash ---------------------------------------------------------------------------- The log buffer may have overflowed on 64-bit architectures and caused an application crash. This issue has been fixed. [RTI Issue ID MICRO-1657] Fix API realloc in Windows OSAPI -------------------------------- Windows implementation of function realloc did not allow a NULL input pointer, this is wrong and posix implementation and Windows API allow it. This has the effect that function DDS_String_replace() fails when the input string is a NULL pointer. This issue has been fixed. [RTI Issue ID MICRO-1655] New samples for an instance may not be received if an instance goes back to ALIVE when using read() --------------------------------------------------------------------------------------------------- Due to an issue in the resource calculation for the DataReader, new samples for an instance may not have been received if the instance went back to ALIVE when using any of the read() APIs. This issue has been fixed. [RTI Issue ID MICRO-1651] INTRA transport caused subscription matches to use additional resources ----------------------------------------------------------------------- An issue in the matching between a reader and writer caused a reader to be matched with the same writer twice if auto enable was set to FALSE. This issue has been fixed. [RTI Issue ID MICRO-1650] Resolved memory leak in class RTRegistry ---------------------------------------- When using previous versions of |me|, C++ applications might have experienced resource leakage upon finalization of middleware resources using the method DDSDomainParticipantFactory::finalize_instance. The leaks were caused by unfreed memory blocks still owned by the class RTRegistry, and they have now been resolved. No additional action is required of users. This issue has been fixed. [RTI Issue ID MICRO-1637] Windows Debug DLLs are built without debug information ------------------------------------------------------ Windows Debug DLLs are built without debug information what prevents debugging. This is happening when building with CMake or the rtime-make script. This issue has been fixed. [RTI Issue ID MICRO-1634] Use hardcoded build ID when not compiling with CMake ---------------------------------------------------- When compiling using CMake or the script rtime-make, |me| libraries have a build lD (buildid), which consist of the current time and date. A hardcoded constant ID is used as the build ID when compilation is not done using CMake or the script rtime-make. This issue has been fixed. [RTI Issue ID MICRO-1632] Example makefiles do not support 64bit compilation -------------------------------------------------- Example makefiles used always option -m32. This has been changed to use -m32 or -m64 depending on the platform configuration. Examples can be compiled now for 32 and 64 bits platforms. This issue has been fixed. [RTI Issue ID MICRO-1628] Compilation error might happen when code is generated using option -namespace ----------------------------------------------------------------------------- Compilation error fixed in generated source code when option -namespace is used and IDL file has modules and compilation uses shared libraries. This issue has been fixed. [RTI Issue ID MICRO-1620] What's New in 2.4.10.4 ....................... Batching (reception only) ------------------------- This release includes batching reception. Please refer to the new user manual for Batching for details. C++ examples ------------ A new C++ example using Waitsets (HelloWorld_dpde_waitset) is included. What's Fixed in 2.4.10.4 ........................ Improve KEEP_LAST ----------------- To reclaim resources in version 2.4.10 and earlier the DataReader cache tries to remove the oldest sample only. If that is on loan it cannot be removed and in case a new sample is received it cannot be added to the DataReader cache. This issue has been fixed. [RTI Issue ID MICRO-1754] Locator might be duplicated when NAT is configured -------------------------------------------------- When Network Address Translation (NAT) is configured in the transport UDP properties, a duplicated locator might be sent in discovery packets. This issue has been fixed. [RTI Issue ID MICRO-1756] Segmentation fault might happen when a DataReader cannot be created ------------------------------------------------------------------- If the creation of a DataReader fails before all fields in the DataReader structure are initialized, a NULL pointer access may have occur while finalizing the already created objects. This issue has been fixed. [RTI Issue ID MICRO-1755] CMake reports error if CMake version 2.8.10.2 or 2.8.10.1 is used ----------------------------------------------------------------- RTI Connext DDS Micro buildable sources could not be compiled with CMake 2.8.10.1 or 2.8.10.2. This issue has been fixed. [RTI Issue ID MICRO-1748] Wrong TUDP locator kind sent when using UDP transformations ----------------------------------------------------------- When using UDP transformations the locator kind was always set as 0, intead of the configured value in \ref UDP_InterfaceFactoryProperty.transform_locator_kind This issue has been fixed. [RTI Issue ID MICRO-1685] Compile shipped examples for a 64 bits architecture --------------------------------------------------- Before this release shipped examples makefiles could only compile 32 bits architectures. Makefiles have been modified to support also 64 bits architectures. This issue has been fixed. [RTI Issue ID MICRO-1628] OSAPI_Heap_realloc() Windows implementation fixed ------------------------------------------------- The Windows implementation of function OSAPI_Heap_realloc() had a precondition to check for a NULL pointer as input parameter. This is wrong as in this case the function shall allocate a new buffer (equivalent to malloc()). This issue has been fixed. [RTI Issue ID MICRO-1655] Use API DDSDomainParticipant::delete_contained_entities() in C++ examples ------------------------------------------------------------------------- Shipped C++ examples now use DDSDomainParticipant::delete_contained_entities() to delete all DSS entities in a DDS Participant. This is easier than using DDSDomainParticipant::delete_topic(), DDSDomainParticipant::unregister_type(), etc. This issue has been fixed. [RTI Issue ID MICRO-1656] Memory leak in shipped examples fixed ------------------------------------- Shipped examples were not releasing correctly some of the allocated structures when application finalized. This issue has been fixed. [RTI Issue ID MICRO-1676] C++ shipped examples might release an object twice. --------------------------------------------------- C++ shipped examples might release an object twice in case of error. This issue has been fixed. [RTI Issue ID MICRO-1677] Backwards Compatability ``````````````````````` Change in on_before_sample_deserialize callback. '''''''''''''''''''''''''''''''''''''''''''''''' In 2.4.10 and earlier the stream passed to on_before_sample_deserialize callback started at the encapsulation header followed by user data. However, with the added support for batched samples this is no longer possible. Instead the stream now starts at the user-data payload. Note that the only supported encapsulation format for user-data is CDR. This may change in future versions. The examples have been updated to reflect the change. Please refer to the examples for details. What's New in 2.4.10.1 ...................... UDP Transformations ------------------- This release includes UDP Transformations which enables regular UDP sockets to be used with custom payload transformations. Please refer to \ref UserManuals_UDPTransform for details. The UDP Transformation feature is enabled by default in this release. However, future releases may disable the feature by default. Thus, it is advised to always compile with the UDP Transformation feature enabled (-DRTIME_UDP_ENABLE_TRANSFORMS=1 to cmake). NOTE: In the the EAR for 2.4.10.1 the default behavior was to allow both plain UDP and transformed UDP traffic when transformations was compiled in. This has changed. The default is to disable regular UDP. In order to support it the transform_udp_mode must be set to UDP_TRANSFORM_UDP_MODE_ENABLED. Since this may change in future release it is advised to always set the correct mode of operation. What's Fixed in 2.4.10.1 ........................ Race Condition when Log Buffer is Full and a Custom Log-handler is Installed ---------------------------------------------------------------------------- A race condition existed when a custom log handler was installed and the log buffer was full. A temporary message was created to hold the minimum log data and when the custom log handler was called it was possible that a new log entry was added while the custom log handler parsed the temporary message. This has been fixed in this version. [RTI Issue ID MICRO-1641] What's New in 2.4.10 .................... Generate Example Application with rtiddsgen ------------------------------------------- It is now possible to generate an example application for RTI Connext Micro using rtiddsgen. To generate an example: :: rtiddsgen -language C | C++ -micro -example