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:
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:
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 11 |
x64 |
VS2022 |
x64Win64VS2022FACE_GP |
x64Win64VS2022 |
GeneralPurpose |
Footnotes
Windows is not supported by FACE. Therefore, Connext TSS customer support is limited. Our support and services team can diagnose issues but we do not attempt to close the gaps in the FACE standard.
Debug builds of the Connext TSS Micro TPMs on Windows are not supported. Therefore, Connext TSS customer support is limited.
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:
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]