10. Release Notes

10.1. Language Support

Connext TSS supports FACE TSS C and C++ APIs for the Connext Micro Transport Protocol Module [1]. Connext TSS supports FACE TSS C API for the Connext Professional Transport Protocol Module.

10.2. Supported Platforms

Connext TSS has been demonstrated with Connext Professional 7.3.1 on the following platforms:

Table 10.1 Connext Professional - Demonstrated Architectures

OS

Version

CPU

Compiler

Connext TSS Architecture Abbreviation

Connext Professional Architecture Abbreviation

OSS Profile

VxWorks

VxWorks 23.09

x64

llvm 16.0

x64Vx23.09llvm16.0_rtpFACE_GP

x64Vx23.09llvm16.0_rtp

GeneralPurpose

Linux

Ubuntu 24.04 LTS

x64

gcc 13.3.0

x64Linux6gcc13.3.0FACE_GP

x64Linux4gcc7.3.0FACE_GP

GeneralPurpose

Windows [2]

Windows 11

x64

VS2022

x64Win64VS2022FACE_GP

x64Win64VS2017

GeneralPurpose

Connext TSS has also been demonstrated with Connext Micro 2.4.14.3 on the following platforms:

Table 10.2 Connext Micro - Demonstrated Architectures

OS

Version

CPU

Compiler

Connext TSS Architecture Abbreviation

Connext Micro Architecture Abbreviation

OSS Profile

Linux

Ubuntu 24.04 LTS

x64

gcc 13.3.0

x64Linux6gcc13.3.0FACE_GP

x64Linux6gcc13.3.0

GeneralPurpose

Ubuntu 24.04 LTS

x64

gcc 13.3.0

x64Linux6gcc13.3.0FACE_SB

x64Linux4gcc7.3.0CERT

SafetyBase

LynxOS-178

LynxOS-178 2024.09.0 (APEX API)

x64

gcc 11.3.0

x64Lynx1782024.09.0.APEXgcc11.3.0FACE_SB

x64Lynx1782024.09.0.APEXgcc11.3.0

SafetyBase

Windows [2] [3]

Windows 11

x64

VS2022

x64Win64VS2022FACE_GP

x64Win64VS2022

GeneralPurpose

Footnotes

10.3. What’s New in 4.2.0

10.3.1. Support for FACE 3.2 Technical Standard

This release upgrades Connext TSS to support the FACE Technical Standard, Edition 3.2.

10.3.2. Protect thread safety in TSS applications

This release adds several thread safety features to the TSS API: structural operations—creating and destroying connections, registering and unregistering callbacks—are serialized process-wide, while sends and receives run concurrently.

An upgrading application can observe two behaviors:

  • A structural operation briefly delays message traffic. Data operations that are issued while one is pending, wait and then complete; they do not fail.

  • Unregister_Callback() may return while a final callback invocation is still completing, though no new invocation begins after it returns.

For more information, see Thread safety in the User’s Manual and the Thread Safety Model in the API reference.

10.3.3. Generate a single C/C++ output file, simplifying code management

A new command-line option for Code Generator, -joinInputFiles, joins input files and included files, processing them together to create just one output file that contains all the generated C/C++ code.

This option is useful for consolidating generated code and dependencies into a single location, especially when working with complex projects involving multiple included files. It reduces the complexity of managing imports and file dependencies, and makes it easier to distribute or deploy generated code as a standalone module.

Another new command-line option, -joinedInputFilesOutputName <name>, allows you to specify the output file name you want. You can optionally use this together with -joinInputFiles.

For details, see Command-Line Arguments for rtiddsgen in the RTI Code Generator User’s Manual.

Note

The RTI Code Generator User’s Manual (linked above) states that -joinInputFiles and -joinedInputFilesOutputName <name> are only valid for Python code. This is true for Code Generator in Connext Professional, but the Connext TSS version supports these command-line options for C/C++ code. Otherwise, the options function as described in the RTI Code Generator User’s Manual.

10.3.4. FACE C APIs conform to FACE CR 1255 resolution

This release updates the FACE C APIs to match the FACE CR 1255 resolution. For more information on CR 1255, please refer to the FACE Problem Report (PR) & Change Request (CR) Ticketing System.

10.3.5. Initialize functions in generated code now comply with FACE 3.2

This release adds auto-generated inline initialize functions to C generated code in order to comply with the FACE Technical Standard, Edition 3.2.

10.3.6. Generate FACE strings and sequences in example applications

This release adds FACE strings and sequences to the hello_goodbye example applications generated by RTI Code Generator to help demonstrate their use. The example applications also set the connection ID variable to -1 to avoid assignment issues.

See Getting Started for more information on generating examples.

10.3.7. Develop Connext Professional applications for FACE

This release adds a Transport Protocol Module for Connext Professional 7.3.1, which allows XML-defined Connext Professional applications to be FACE-compliant. See Configuring FACE 3.x for Connext Professional for more details.

10.3.8. Use Connext Micro Transport Protocol Module with Connext TSS 4.2 architecture

This release updates the Connext Micro TPM to work with the new architecture of Connext TSS 4.2.0. This includes new templates to work with the updated version of RTI Code Generator.

10.4. What’s Fixed in 4.2.0

Connext TSS 4.2.0 is a general access release based on Connext TSS 4.1.0.2-EAR. The following are fixes since Connext TSS 4.1.0.2-EAR.

10.4.1. Memory leak when using sequence-of-sequence types in General Purpose profile

When using IDL types that contained a sequence of sequences (e.g., sequence<sequence<long>>), a memory leak occured on the subscriber side during deserialization.

[RTI Issue ID FACETSS-1426]

10.4.2. Missing or incorrect API documentation

This issue was fixed in 4.1.0-EAR, but not documented at that time.

Some content was missing, or incorrectly located, in the C and C++ API documentation.

[RTI Issue ID FACETSS-1490]

10.4.3. Static tables that allocate memory for hash tables were determined at compile time

The size of the internal hash tables was defined at compile time and could not be changed at runtime.

[RTI Issue ID FACETSS-1749]

10.4.4. Examples caused compiler warnings on Windows systems

When building examples on Windows systems, the VS compiler warned that some files were not generated by the output. These warnings could cause incremental build issues.

[RTI Issue ID FACETSS-1862]

10.4.5. Unnecessary callback macro included in templates

The RTI_Callback_Implemented macro was included in templates even though it was not required.

[RTI Issue ID FACETSS-1878]

10.4.6. Incorrect error handling within create_subscriber() and create_publisher() functions

Occasionally, a remote participant would not be discovered before either create_subscriber() or create_publisher() was called from Channel_Manager.c. This caused a failure within the corresponding RTI_TSS_DiscoveryConfigPlugin_assert_* function. Since this situation is expected on occasion, it is now handled as a warning rather than a failure.

[RTI Issue ID FACETSS-1924]

10.4.7. FACE NO_ERROR collided with NO_ERROR definition on Windows systems

The FACE NO_ERROR enumeration collided with the NO_ERROR definition on Windows systems.

[RTI Issue ID FACETSS-1952]

10.4.8. Generated C code did not support forward delcarations

Generated C code did not always generate IDF type definitions (typedefs) correctly.

[RTI Issue ID FACETSS-1994]

10.4.9. Application discovery database corrupted by repetitive function calls

Connext TSS called the DPSE functions assert_remote_participants, assert_remote_publications, and assert_remote_subscriptions each time a new connection was created, although they should only be called once. This could corrupt the Connext TSS application discovery database.

[RTI Issue ID FACETSS-2028]

10.4.10. Register_Callback function signature differed from CTS GSL in C++

The Register_Callback function did not align with the Conformance Tool Suite (CTS) Golden Suite Library (GSL) in C++.

[RTI Issue ID FACETSS-2036]

10.4.11. Increasing sequence length caused deserialization failures in SafetyBase profile

In SafetyBase builds, capacity was not set properly due to a missing guard.

[RTI Issue ID FACETSS-2051]

10.4.12. Generated code attempted to call the private default constructor upon instantiation of an enum class

In generated code, instantiation of an enum class would attempt to call the private default constructor, due to the FACE definition of C++ enums deferring from those of DDS.

[RTI Issue ID FACETSS-2053]

10.4.13. RTI Code Generator replaced DM with TSS outside of namespaces

RTI Code Generator would occasionally replace DM with TSS outside of proper namespaces.

[RTI Issue ID FACETSS-2058]

10.4.14. Common_Hash.h generated compiler warning

Common_Hash.h generated a compiler warning related to truth value.

[RTI Issue ID FACETSS-2059]

10.4.15. return_Code in Linux example compared return value instead of assigning it

The return_code function in TSSConfigInterfaceXML.c in the Connext Professional Linux example compared the return value instead of setting it.

[RTI Issue ID FACETSS-2061]

10.4.16. Connext Professional C example generated compiler warnings

The C example for Connext Professional generated warnings when compiled.

[RTI Issue ID FACETSS-2062]

10.4.17. return_Code in Windows example compared return value instead of assigning it

The return_code function in TSSConfigInterfaceXML.c in the Connext Professional Windows example compared the return value instead of setting it.

[RTI Issue ID FACETSS-2085]

10.4.18. Incorrect library name description and example code paths in User’s Manual

The example code paths in Getting Started did not match the actual paths in the release version.

[RTI Issue ID FACETSS-2147]

10.4.19. Possible memory leak when assigning values to sequences of strings

Connext TSS could leak memory when destroying or assigning values to a sequence of strings.

[RTI Issue ID FACETSS-2172]

10.5. Previous Releases

10.5.1. What’s Fixed in 4.1.0.2-EAR

Connext TSS 4.1.0.2-EAR is a patch release based on Connext TSS 4.1.0.1-EAR. The following are fixes since Connext TSS 4.1.0.1-EAR.

10.5.1.1. Incorrect symbol used for the pre-processor #define in the generated TypeAbstraction_Callback functions

The generated TypeAbstraction_Callback headers included an extra ‘l’ character inserted after the ‘k’ in Callback. The #ifndef was not checking the correct symbol which allows the type abstraction callback header file to be included more than once. This resulted in symbol redefinition errors at compile.

[RTI Issue ID FACETSS-2013]

10.5.1.2. TSSConfiguration::Initialize() did not return on failure to malloc in examples

In the file TSSConfigInterfaceXML.cpp under C++_Examples/, the function void TSSConfiguration::Initialize() did not return an error code if malloc failed.

[RTI Issue ID FACETSS-2012]

10.5.1.3. Multiple nested IDL includes could generate incorrect include paths

When multiple nested includes were used in an IDL, the code generated by rtiddsgen may have contained the wrong include paths.

[RTI Issue ID FACETSS-1962]

10.5.1.4. C++ sequences “=” operator allocated extra memory

Previously, C++ sequences called C sequences internally. Therefore, when passing the C++ sequence with an = operator, Connext TSS would create a new instance and allocate memory on each pass by reference. Now, C++ sequences no longer call the C sequences internally and do not perform additional memory allocation.

[RTI Issue ID FACETSS-1963]

10.5.1.5. Connext TSS re-asserted remote publications and subscriptions for each CreateConnection() call

Connext TSS would re-assert publishers and subscribers each time CreateConnection() was called. Connext TSS now only asserts on the first call.

[RTI Issue ID FACETSS-1964]

10.5.1.6. Error returned if create_publisher() or create_subscriber() returned a warning

Connext TSS returned an error from CreateConnection() if create_publisher() or create_subscriber() from Connext Micro returned a non-significant warning. Connext TSS now returns a warning instead of an error.

[RTI Issue ID FACETSS-1965]

10.5.1.7. Type-specific TypeAbstraction_callback not generated properly

The TypeAbstraction_callback header and implementation templates were previously left blank. They now contain the correct template code.

[RTI Issue ID FACETSS-1968]

10.5.1.8. Connext TSS did not generate FACE type definitions correctly

Given certain IDL files, Connext TSS would incorrectly generate the required FACE type definition.

Note

If your application has any IDL files that contain a forward declaration, you should regenerate them.

[RTI Issue ID FACETSS-1978]

10.5.1.9. Connext TSS generated TypedTS includes by namespace instead of file path

TypedTS would use the namespace of a type instead of its file path when generating include paths.

[RTI Issue ID FACETSS-1980]

10.5.1.10. Generated code contained extra “&” when assigning internal helper functions

Generated code contained an extra & when assigning an extra_ops struct to RTI strings or sequences.

[RTI Issue ID FACETSS-1958]

10.5.1.11. Sequences of sequences or strings did not initialize inner objects

Sequences of sequences or strings did not properly initialize their internal objects in templates.

[RTI Issue ID FACETSS-1959]

10.5.1.12. C++ TypedTS class template did not inherit from TA_Injectable

The C++ TypedTS class template did not inherit properties and behaviors from the TA_Injectable class as intended.

[RTI Issue ID FACETSS-1967]

10.5.1.13. Generated C code did not support forward declarations

Generated C code did not always generate IDL type definitions correctly.

Note

If your application has any IDL files that contain a forward declaration, you should regenerate them.

[RTI Issue ID FACETSS-1994]

10.5.2. What’s Fixed in 4.1.0.1-EAR

Connext TSS 4.1.0.1-EAR is a patch release based on Connext TSS 4.1.0-EAR. The following are fixes since Connext TSS 4.1.0-EAR.

10.5.2.1. Incorrect symbol used for the pre-processor #define in the generated TypeAbstraction_Callback functions

The generated TypeAbstraction_Callback headers included an extra ‘l’ character inserted after the ‘k’ in Callback. The #ifndef was not checking the correct symbol which allows the type abstraction callback header file to be included more than once. This resulted in symbol redefinition errors at compile.

[RTI Issue ID FACETSS-2013]

10.5.2.2. TSSConfiguration::Initialize() did not return on failure to malloc in examples

In the file TSSConfigInterfaceXML.cpp under C++_Examples/, the function void TSSConfiguration::Initialize() did not return an error code if malloc failed.

[RTI Issue ID FACETSS-2012]

10.5.2.3. Multiple nested IDL includes could generate incorrect include paths

When multiple nested includes were used in an IDL, the code generated by rtiddsgen may have contained the wrong include paths.

[RTI Issue ID FACETSS-1962]

10.5.2.4. C++ sequences “=” operator allocated extra memory

Previously, C++ sequences called C sequences internally. Therefore, when passing the C++ sequence with an = operator, Connext TSS would create a new instance and allocate memory on each pass by reference. Now, C++ sequences no longer call the C sequences internally and do not perform additional memory allocation.

[RTI Issue ID FACETSS-1963]

10.5.2.5. Connext TSS re-asserted remote publications and subscriptions for each CreateConnection() call

Connext TSS would re-assert publishers and subscribers each time CreateConnection() was called. Connext TSS now only asserts on the first call.

[RTI Issue ID FACETSS-1964]

10.5.2.6. Error returned if create_publisher() or create_subscriber() returned a warning

Connext TSS returned an error from CreateConnection() if create_publisher() or create_subscriber() from Connext Micro returned a non-significant warning. Connext TSS now returns a warning instead of an error.

[RTI Issue ID FACETSS-1965]

10.5.2.7. Type-specific TypeAbstraction_callback not generated properly

The TypeAbstraction_callback header and implementation templates were previously left blank. They now contain the correct template code.

[RTI Issue ID FACETSS-1968]

10.5.2.8. Connext TSS did not generate FACE type definitions correctly

Given certain IDL files, Connext TSS would incorrectly generate the required FACE type definition.

Note

Windows is not a FACE-supported operating system; some changes were required to get Connext TSS to run. Those changes are not guaranteed to be compatible with other UoCs or UoPs ported to Windows systems. Some integration may be required.

10.5.3. What’s New in 4.1.0-EAR

10.5.3.1. Added support for FACE TSS C API

This release adds support for the FACE TSS C API.

10.5.3.2. Added support for Transport Protocol Module

Support for the FACE Transport Protocol Module (TPM) has been added. This feature has been implemented in the TSS/TA and as an adapter that works with Connext Micro. Therefore, it’s an option to use both RTI’s Connext TSS and TPM with Connext Micro. Or, either individually with other versions of TSS or TPM enabled protocols. In addition, RTI’s TSS supports multiple TPMs simultaneously.

Implementing this feature required a re-architecture of the Connext TSS. It now implements a FACE Type Abstraction (TA) layer. In addition, this release now supports serialize and deserialize injectables.

Note

The re-architecture required to implement TPM and other features in the 4.1.0-EAR changed the way Connext TSS sets up and sends data with DDS. At the time of this release, 4.1.0-EAR interoperability with FACE applications using Connext TSS 3.1.2 and 3.1.1 is not tested.

10.5.3.3. Implemented certifiable FACE String and Sequence classes

This release implements the FACE string and sequence classes in C and wraps them with an optional C++ API. This new implementation is easier to certify and addresses the following issues reported in previous versions:

  • Freeing and reallocating string and sequence classes did not work in Safety Base.

  • Destructor of sequences of sequences created a memory leak.

  • The C++ sequence class required casting.

  • Bound, Capacity, and Length of sequences of structures became corrupted.

  • Having two sequence types in the same structure could crash the application.

10.5.3.4. RTI logging replaced by FACE logging

RTI’s proprietary logging has been replaced with the FACE logging injectable. For more information, see the Logging section of the API reference.

10.5.3.5. Added support for LynxOS-178

Support for the LynxOS-178 ARINC operating system has been added.

10.5.3.6. Added support for FACE GUIDs

To increase FACE conformance, Connext TSS now supports FACE GUIDs.

10.5.3.7. Added injectable interface for callbacks

Added an injectable interface for callbacks.

10.5.3.8. Third-party software changes

The following third-party software is now used by Connext TSS:

Table 10.3 New Third-Party Software

Third-Party Software

Version

XML Parser for C

0.1.0

For information on all third-party software used by Connext TSS, see the Third-Party Software document in this manual.

10.5.4. What’s Fixed in 4.1.0-EAR

10.5.4.1. Sequences of arrays caused compile errors

The managed copy constructor of a sequence of arrays attempted to copy the contained arrays incorrectly.

[RTI Issue ID FACETSS-1296]

10.5.4.2. Possible memory leak when RTI_TSS_Impl_new() did not check for NULL after allocation

If memory was unavailable, a null pointer could have been passed to an underlying DDS call when creating a new TSS instance.

[RTI Issue ID FACETSS-1279]

10.5.4.3. No longer necessary to use #ifdef FACE_SEQUENCE_AND_STRING_IMPLEMENTED flag

The FACE_SEQUENCE_AND_STRING_IMPLEMENTED flag has been removed. Therefore, it’s not necessary to use this flag to enable strings and sequences.

[RTI Issue ID FACETSS-1370]

10.5.5. What’s New in 3.1.2

10.5.5.1. Added support for Deos 653

This release adds support for building the TSS libraries on the DDC-I DESK Console, as well as an example to be built and run on a Deos 653 CPU via OpenArbor.

10.5.5.2. Changed Logging verbosity to be set by command line switches

In this release, logging verbosity is changed by command line switches passed to Cmake while building the TSS Libraries. See the Building the Libraries section of the Building Connext TSS chapter for more information.

Note

Logging verbosity can only be set at compile time, not at run time.

10.5.5.3. Renamed Cmake architecture files for VxWorks7 to include FACE_GP

The cmake architecture files armv8Vx7SR0660llvm10.0.1.cortex-a53.cmake and armv8Vx7SR0660llvm10.0.1.cortex-a53_rtp.cmake have been renamed to armv8Vx7SR0660llvm10.0.1.cortex-a53FACE_GP.cmake and armv8Vx7SR0660llvm10.0.1.cortex-a53_rtpFACE_GP.cmake, respectively.

10.5.6. What’s Fixed in 3.1.2

10.5.6.1. Compiler warnings on VxWorks 7 systems

When building for VxWorks 7 systems with the llvm 10.0.1 compiler (armv8Vx7SR0660llvm10.0.1.cortex-a53_rtp_pro_Release), a CPU macro redefined compile warning could occur if -Wmacro-redefined was enabled on the compiler command line. You may have also seen a -Wreturn-type-c-linkage warning.

[RTI Issue ID FACETSS-955]

10.5.6.2. Warning when loading hello_goodbye_dkm_static example

The following warning occured when loading the hello_goodbye_dkm_static example into a physical board:

ld 1< hello_goodbye_app.so
Warning: module 0xffff800000aaab60 holds reference to undefined symbol __dso_handle.
ld(): module contains undefined symbol(s) and may be unusable.
value = 0 = 0x0

[RTI Issue ID FACETSS-1048]

10.5.6.3. Build time FACE conformance warning message

In previous releases, when building Connext TSS with Connext Professional for the FACE GeneralPurpose profile, the build system generated the following message:

-- Connext TSS with Connext DDS Pro does not conform with FACE GeneralPurpose Profile in this version.

This message was not accurate and is no longer generated.

[RTI Issue ID FACETSS-1086]

10.5.6.4. Double quotation marks in command line contexts

In the Porting documentation for this release, instances of double quotation marks (“) in command line contexts have been changed to double quotes (”) to avoid corrupting OpenArbor projects with copied and pasted commands.

[RTI Issue ID FACETSS-729]

10.5.6.5. Source file types.c was compiled when flag was set to true

In previous releases, the file src/micro/types.c was still compiled and linked with the Connext TSS library when FACE_SEQUENCE_AND_STRING_IMPLEMENTED was set to false. This issue has been resolved.

[RTI Issue ID FACETSS-905]

10.5.6.6. Receive_Message() unable to retrieve multiple messages in the reader queue

When a TSS application called Receive_Message() while multiple messages were present in the reader queue, the next Receive_Message() call would block on the waitset until a new sample arrived or the timeout expired. This issue has been resolved.

[RTI Issue ID FACETSS-679]

10.5.7. What’s New in 3.1.1

10.5.7.1. Removed the Static Configuration API

Static configuration has been removed from the TSS code and generated files. Some header files have been removed, hence, this release is incompatible with previous engineering releases. There are changes to the generated files as well; code regeneration is required for this release.

Previous engineering releases included a note that this was being deprecated. Now it is removed.

10.5.7.2. Updated source files to meet RTI and FACE coding standards

The source files have been reformatted to meet the RTI and FACE coding standards.

10.5.7.3. Updated parameter checking and return codes

This release includes updated parameter checking and the associated return codes for the SafetyBase profile.

10.5.8. What’s Fixed in 3.1.1

10.5.8.1. Updated rtiddsgen to meet FACE 3.1 Conformance

A bug in rtiddsgen caused the TypedTS and TypedTS Injectable files to not be generated in the folder structure defined in the spec.

This issue has been resolved. The TypedTS and TypedTS Injectable files will now be created in the correct folder structure.

[RTI Issue ID FACETSS-641]