5.9. Building Connext DDS Micro with compatibility for Connext DDS Micro Cert

It is possible to compile Connext DDS Micro to support only the same set of APIs and features as Connext DDS Micro Cert. This is useful to enable the development of a safety-certified project using Connext DDS Micro before the certification of Connext DDS Micro Cert is completed. Once Connext DDS Micro Cert certification is finished, it will be easier to switch from Connext DDS Micro to Connext DDS Micro Cert if Connext DDS Micro has been compiled with compatibility for Connext DDS Micro Cert.

When compiling Connext DDS Micro with compatibility for Connext DDS Micro Cert, the following restrictions apply:

  • The C++ API is not supported.

  • Dynamic Participant Dynamic Endpoint (DPDE) discovery is not compiled by default. To make application development easier, DPDE can be enabled (any application using this discovery cannot be certified). DPDE discovery is not certified.

  • Memory deallocation is not possible.

  • Any API that deallocates memory is not supported. In other words, any API whose name includes “finalize”, “free”, or “delete” is not supported (such as DDS_DomainParticipantFactory_delete_participant(), DDS_DomainParticipantQos_finalize(), OSAPI_Heap_free()).

  • Only POSIX®-compliant systems (Linux, macOS, QNX, etc.), VxWorks and AUTOSAR are supported (Windows systems are not supported).

  • Only static libraries are compiled. Dynamic libraries are not supported.

  • Only one static library is built. While Connext DDS Micro consists of different libraries for discovery, reader and writer history, etc, Connext DDS Micro Cert consists of only one library.

  • Code generated by the Connext DDS Micro code generator is compatible with Connext DDS Micro Cert, but the code must be generated again with the Connext DDS Micro Cert code generator.

  • The Log module is only available in the debug build.

  • The UDP transport shall be configured statically by using the API UDP_InterfaceTable_add_entry() and setting UDP_InterfaceFactoryProperty.disable_auto_interface_config equal to RTI_TRUE.

  • OSAPI_Thread_sleep() is not available.

  • Batching reception is not supported.

  • UDP Transformations are not supported.

To compile Connext DDS Micro with compatibility with Connext DDS Micro Cert, you only need to set the CMake flag RTIME_CERT when compiling. For example, the following command compiles Connext DDS Micro on a Linux system with Connext DDS Micro Cert compatibility:

resource/scripts/rtime-make --target Linux --name x64Linux4gcc9.3.0
    --build --config Debug -DRTIME_CERT=1

The CMake flag RTIME_CERT instructs the build system to build Connext DDS Micro with Connext DDS Micro Cert compatibility. In the previous example, a 64-bit debug library is generated in the directory lib/x64Linux4gcc9.3.0.

Instead of using the flag -DRTIME_CERT=1, it is also possible to add the suffix “_cert” to the build name, and the build system will automatically set the RTIME_CERT flag. For example:

resource/scripts/rtime-make --target Linux --name
    x64Linux4gcc9.3.0_cert --build --config Release

The previous command compiles a 64-bit release library in the directory lib/x64Linux4gcc9.3.0_cert.

As mentioned earlier, it is possible to enable DPDE (Dynamic Participant Dynamic Endpoint) discovery, but this discovery is not certified so any application using it cannot be certified. To enable DPDE discovery when building Connext DDS Micro with Connext DDS Micro Cert compatibility, simply add the following flag when compiling: -DRTIME_EXCLUDE_DPDE=0.