ADTF  3.16.0
ADTF 3.14.0 Release Notes

ADTF 3.14.0 Summary

Updated profiles

Besides upgrading to VS2019 on Windows Desktop (x86_64) and gcc7 on Linux Desktop (x86_64) and Linux for ARMv8 (AArch64), we updated our 3rd party dependencies. The biggest changes are Qt 5.15.2 as latest binary, code and license compatible Qt5 package, which also closes different bug reports (e.g. issues with loosed tabs and scaling issues for runtime widgets) and dev_essential 1.1.2 which combines the previous dependencies a_util, ddl and rpc (see also Performance during runtime). We also used this platform change to clean up, upgrade CMake to at least 3.18 and enable C++17 support (provided by the new compilers).

Performance during runtime

With the reworked OO-DDL in the DDL package coming with dev_essential, we have a massive impact and fasten performance for DDL access, usage, parsing and related operations. Please have a detailed look at ADTF Media Description SDK and DDL and ADTF 3 for further information.

Distributed system

With this release, ADTF officially integrates FEP as additonal open source communication especially for creating distributed systems - with or without ADTF. FEP describes a standard for interfaces and communication within distributed systems based on RTI DDS. Please have look at Distributed ADTF an linked content for the best start of the containing components, architecture decisions and first steps. For the first integration, we start with FEP Job Runner to handle FEP jobs, the grah components FEP Receiver, FEP Sender and FEP Substream Receiver for communication and two services to sync time (FEP Timing Service) and properties (FEP Property Sync Service) between ADTF and FEP. To handle FEP commands, the ADTF Control has been extended (see Available commands). Furthermore, the custom launch options from page_adtf_configuration_editor has been extended using FEP configured launch options. For your first runtime usage, please have look at the communication sessions within the the delivered example project ($(ADTF_DIR)/src/examples/projects/adtf_example_project/adtf_example_project.adtfproject).

Substream Display

With the usage of substreams is not only a good choice to handle high data rates and request dynamic content, you also do not have to care what a client finally needs - you just provide the content which can be requested. The next big step in this generic setup is to select, request and visualize the content and meta information on demand at runtime: the Qt5 Substream Display (BETA). With this component it is possible to create views at runtime related by the content. In the first version this is a tree view, video view and stream meta type display. In upcoming versions, DDL described content should also be plotted over time as scope view. You also have the chance to connect custom Substream Display implementation (see example Qt5 Substream JSON Display (BETA)) and select specific content for usage in static views (see Qt5 Substream Display Selector (BETA)).

Refactor plugindescription handling

It is very common that an adtfplugin requires a shared library for runtime. To design this, the information has to placed within the plugindescription, which makes the dependency different for compiling, generating and runtime usage. Please have a look at CMake support for 3rd Party dependencies for usage and best practice including a workaround for CMake behaviour to prevent macro replacements. Besides this enhancements and bugfixes, we clean up the CMake support and avoid race conditions.

Refactor component handling

With the integration of the digitalwerk store, sharing, searching and downloading additional content has never been so easy. Please have a look at The Component Store Client for a first impression. This will be base to share content within your colleagues, department, company or the world, for now adtfplugin, for future also adtffileplugins, sessions, documentation and other content related to ADTF and friends. For this, we also reworked the example session and label names to give more self-explained information and getting you started and ready with ADTF.

Make the Property Editor more dynamic

The Property Editor handles now all information provided by the plugindescription and builds the bridge to access dependencies, provide additional meta information and open and copy content of componenents inside the adtfplugin - no matter if its part of the graph (editable) or still in Component View (read only). The views will be updated dynamically based on the content. See Property Editor for further information and a basic showcase.

Side note: If not already done, please have a look at Generate Plugin Description

Trigger using RPC

There are already different options available for accessing the Trigger Pipe already:

So besides the new FEP Job Runner there is another new possibility available with this version - using RPC. For this, we deliver a RPC Runner which handles trigger via RPC (e.g. using ADTF Control)

ADTF <-> Non-ADTF communication

For connecting ADTF to the world, our UDP/TCP Receiver/Sender From/To Non-ADTF Application Plugin has been extended to support UDP Multicast and provide a TCP reconnect functionality.

Configure Session Manager

By default the Session Manager resolves all macros within the properties. This behaviour is conflict in some use cases, e.g. if there are several file creations during runtime using macros like or . For this, we provide an option for properties and property variables to disable the automatic resolving which can be done explicit by the component and use case itself when required. See adtf::base::property_variable::SetResolveMacros() and please have a look at Adapt macro resolving.

Additional changes

There are some basic extensions which are very helpful for your daily work:

  • Provide macros regarding playback file (see Table of predefined Global Macros)
  • Visualize time since reaching RL_Running in Online Mode (Live)
  • Show interface binding via RPC (see Demo RPC Calculator Server and Client Plugin)
  • Add removed custom launch option using adtf control with profiling enabled (see Options > Launchers)
  • Differ between file or dependencies not found
  • Provide keyboard support to switch between tabs in filter graph editor (see Shortcuts)
  • Add Sync2Ref Channel that forwards hardware timestamps unmodified
  • Convenience for graph editor connection handling, painting and friends
  • Live switch of light/dark theme without restart
Please note that we use this platform change to harmonize all package names to lower_snake_case and get rid of deprecated names which will not be supported in (conan) future releases. Main effect is:
  • ADTF -> adtf
  • ADTF_SDK -> adtf_sdk
  • Qt -> qt
  • CMake -> cmake
  • SDL -> sdl
This will effect especially Windows conan users. We recommend not mixing up conan cache of different profiles so please clean before upgrading to ADTF 3.14 and its dependencies, then you won't have any effect in future and are compatible to conan plans and conan-center packages.

Common clean up

Here are view keywords which has been refactored and optimized:

  • Label names: Remove ADTF prefix where possible
  • Example session names: User stories instead of label names
  • Platform strings: windows_x86_64, linux_x86_64 and linux_aarch64
  • Package names: lower_snake_case
  • Base types: get rid of a_utils 4 typedefs and use stdint.h types instead
  • Replace master with main as default development branch

ADTF 3.14.0 Changelog

| ADTF - Changelog |
| Automotive Data and Time-Triggered Framework |
| |
| This file tracks the changes and bugfixes within ADTF 3.x |
| |
| Version: |
| ADTF 3.14.0 osborn |
* [ACORE-9476] - Provide standardized data exchange between (ADTF) instances in a distributed system design
* [ACORE-9477] - Provide open SDK API for communication from/to Non-ADTF applications
* [ACORE-9478] - Adapt tooling for controlling distributed system setups
* [ACORE-10541] - Connect Fep3 state machine with the ADTF state machine
* [ACORE-10583] - Synchronize FEP and ADTF clocks
* [ACORE-10584] - Create FEP SubStream Source
* [ACORE-10703] - Align fep command names for adtf_control
* [ACORE-10718] - Create guides for using FEP Timing within ADTF
* [ACORE-10721] - Add Subscribe function to FEP SubStream Source
* [ACORE-10726] - Create doxygen documentation for FEP artefacts
* [ACORE-10765] - Rearrange 3rd party licenses
* [ACORE-10775] - Upgrade to QT 5.15.2
* [ACORE-10833] - Option to attach ADTF Configuration Editor to component stores and download adtfplugins
* [ACORE-10840] - Change DDL Mapping Filter to use new OODDL API
* [ACORE-10841] - Change all ADTF library dependencies to new OODDL and set adtf::adtfddl package deprecated
* [ACORE-10842] - Set typereflection of mediadescription package deprecated and use new DDL API instead
* [ACORE-10843] - Change Media Description Service to use new OO DDL
* [ACORE-10844] - Change All Displays to use new OO DDL
* [ACORE-10845] - Change adtfplugindescriptiongenerator to use new OO DDL API
* [ACORE-10851] - Provide platform support for Windows 10 x86_64 with VS2019 toolchain (MSVC++2019 vc142)
* [ACORE-10852] - Provide platform support for Ubuntu 18.04 LTS x86_64 and Aarch64 with GCC7
* [ACORE-10862] - FEP to ADTF StreamType mapping
* [ACORE-10875] - Add VERBATIM option to adtf_create_plugindescription() cmake macro
* [ACORE-10881] - Support of static fep substream source
* [ACORE-10899] - Provide enumeration values from DDL within Signal Registry
* [ACORE-10940] - Extend Property Editor to quick access properties from dependencies
* [ACORE-10943] - Add support of setting/reading fep properties to adtf_control
* [ACORE-10963] - Make FEP components available in ADTF
* [ACORE-10974] - Display to select, request and visualize content and meta information of substreams on demand at runtime
* [ACORE-10975] - Refactor labels and filenames
* [ACORE-10976] - Add icons to all executables
* [ACORE-10981] - Differ between file or dependencies not found
* [ACORE-10987] - Add icon for FEP Job Runner
* [ACORE-10995] - Optimize platform strings
* [ACORE-11040] - Add removed custom launch option using adtf control with profiling enabled
* [ACORE-11056] - Make ADTF properties available via FEP
* [ACORE-11074] - Extend guide code snippets to survive validation during documentation generation
* [ACORE-11081] - Add streamtype display to substreamdisplay
* [ACORE-11082] - Add property to preselect requested substreams of substreamdisplay
* [ACORE-11104] - Store and recreate open displays from substream display
* [ACORE-11106] - Provide a DDL text view filtering for Substreams
* [ACORE-11118] - Add clipboard support for substreams
* [ACORE-11122] - Add traceview statistics into substream tree
* [ACORE-11124] - Support Media Description and single value and a multiple from it for Substreams
* [ACORE-11137] - Provide option to copy class id from graph component
* [ACORE-11138] - Differ in details between selection (property or component itself)
* [ACORE-11144] - Allow space in FEP url
* [ACORE-11147] - Show interface binding via RPC (for FEP usage)
* [ACORE-11165] - DDL TypeReflection - Extend detection of missing elements by adding paddingbytes automatically
* [ACORE-11192] - Add multicast support to non-ADTF UDP communication
* [ACORE-11196] - Visualize time since reaching RL_Running in online mode
* [ACORE-11231] - Provide macros regarding playback file
* [ACORE-11249] - Add reconnect functionality for TCP communication from Non-ADTF application
* [ACORE-11260] - Visualize links of graph properties
* [ACORE-11261] - Provide keyboard support to switch between tabs in filter graph editor
* [ACORE-11279] - Provide options to send triggers using RPC
* [ACORE-11297] - Implement a JSON Substream Filter to show how to extend the Substream Display
* [ACORE-11313] - Add Sync2Ref Channel that forwards hardware timestamps unmodified
* [ACORE-11325] - Add a default icon for custom runners
* [ACORE-11330] - Use property editor to show meta information for selected item in component view as well
* [ACORE-11340] - Switch to c++17 and integrate ADTF AUTILS Library
* [ACORE-11345] - Overview for oss software, license and versions
* [ACORE-11352] - Upgrade cmake support to 3.18
* [ACORE-11358] - Make property editor panels resizable
* [ACORE-11359] - Add shortcut to jump to component plugin description
* [ACORE-11361] - Tiny improvements in case of error
* [ACORE-11373] - Replace usage of a_utils 4 typedefs and use stdint.h types instead
* [ACORE-11376] - Upgrade to ADTF File Library 0.9.1 and extend adtf_datool guide
* [ACORE-11391] - Get rid of deprecated naming conventions and change package names to lower_snake_case
* [ACORE-11394] - Rename origin/master to origin/main
* [ACORE-11408] - Prevent thread starvation when calling pause
* [ACORE-11409] - Stop initialization if files or paths don't exist
* [ACORE-11412] - Provide a substream display to show video content
* [ACORE-11413] - Provide API to extend Substream Display with custom displays
* [ACORE-11414] - Provide a substream display to plot ddl in a table
* [ACORE-11435] - Create doxygen documentation for Substream Display artifacts
* [ACORE-10645] - Current OO-DDL makes Plugin Description Generator slow
* [ACORE-10774] - Missing content or tab title of QtQuick Filter in certain layout situations
* [ACORE-11228] - Use of "system" clock causes XSystem playback controls to show unrelated times
* [ACORE-11250] - mdgen name collision between types and members
* [ACORE-11257] - Grouping of sample streams from auto-layout overlaps remote trace view statistics
* [ACORE-11286] - Catch2 IO redirects are non-functional on Windows
* [ACORE-11292] - CE does not check if suggested pin name already exists
* [ACORE-11306] - ADTF CE crashes after adding value to GraphProperty
* [ACORE-11314] - Tooltip in Graph Editor is missing
* [ACORE-11322] - ADTF Player is not allowed without timing master
* [ACORE-11324] - Missing icon is not displayed correctly in the component view
* [ACORE-11326] - adtf_create_plugindescription doesn't accept raw args lists
* [ACORE-11337] - Race conditions in adtf_create_plugindescription/adtf_install_target
* [ACORE-11338] - Droparea of connection behave inconsistent
* [ACORE-11339] - Search new name for sample stream when name exists
* [ACORE-11342] - Some dialogs / views are broken or scaled wrong
* [ACORE-11349] - Macros are resolved to early in recorder filename generation
* [ACORE-11362] - Wrong position for components created via context menu
* [ACORE-11386] - Data ports are being placed unintuitively
* [ACORE-11398] - Unable to play recorded dat files with a trace of the system clock
* [ACORE-11399] - Substream Dissector sometimes ignores requests when input type changes
* [ACORE-11406] - Segfault during shutdown when tracing clocks in recorded file
* [ACORE-11437] - Input of properties of a subgraph incorrect