ADTF  3.15.3
ADTF 3.15.0 Release Notes

ADTF 3.15.0 Summary

Enhanced clock concept

To improve timer handling in Offline Mode (Playback/Re-Simulation), we are introducing the Time Barrier Architecture which allows ADTF components to pass timing constraints to the current ADTF Stream Clock. With this concept, the Reference Clock Service will provide two additional clocks for discrete_simulation and continuous_simulation. The most involved components are the Kernel Service, Playback Service and Thread Invoker. To configure the handling for timing violations, please have a look at Timer Runner.

Enhanced scheduling concept

To take control regarding scheduling, the Timer Runner and Thread Runner offer now options to configure scheduling class, cpu_affinity and priorities.

Reworked recording concept

As the convention is, that a "data sink" (as the final component of an entire streaming pipe, no matter if it is a streaming sink or a filter) has to care about requesting substreams - not the components in the data flow before. The common expectation is, that these "data sinks" will request by default, in best case it can be deactivated. Requesting means always ALL substreams which can be a huge amount of signals.

Note
The ADTFDAT File Recorder has been adapted to this behavior and will now request by default all connected substreams!

To record only a subset please make use of the Substream Reducer and/or if you want to selectively request substreams of a single input sample stream, deactivate the related property and connect the new Substream Requestor filter to the required sample stream in parallel.

FEP stable integration

Finally integrated FEP as preview in ADTF 3.14, we can now make the next big step towards a Distributed ADTF by using FEP SDK 3.1 and have the first stable version for our FEP Objects Plugin. Besides some improvements and bugfixing of already delivered components, we furthermore added FEP Substream Sender to transmit also substreams to the FEP bus.

Header-2-DDL integration

Since ADTF 2.x, there always has been a very simple header2ddl tooling, which only can handles a very small function set to correct and full generation of description files based on a c-structured header file. With a complete rework we now have a working solution based on cast_xml including a cmake integration. So from now, you do not have to care about media description files. Depending on your source (header or description file), we provide a easy solution for usage within your filter code, direct access and get rid of casts or mismatches by deploying different header files. See MD Generator Tool from Header how you easily can use header files and create media description using cmake.

Signal Provider

When you require sample streams or substreams within the Signal Registry Service, the easiest way has been using the Media Description Service and enable the provide_signals property. With increased complexity and amount of data, this will effect performance. Because of that latency issues, we already provided properties to reduce signals (provide_signals_stream_allow_list / provide_signals_stream_block_list). Regarding your setup, this can still be a big problem and maybe you only want to provide specific streams / substreams instead of all and cannot handle this use case by naming conventions. For those users, we created the Signal Provider to provide only the connected sample stream.

Qt5 Substream Display (BETA)

Also in this minor version we are working on our successor of the Signal View to create any visualization at runtime by using performant substreams instead of Signal Registry Service, but we do not want to wait or hiding any improvements in agile way. Of course there is still a lot of work today regarding robustness, usability, add a scope view and a mechanism for storing display settings, but we getting closer. Besides a lot of work in the backend in this delivery, you can export and import lists of substreams to requests, display enumerations and make use of an advanced search.

Note
As always, we appreciate your feedback, especially for the usage of this new display solution!

Additional changes

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

ADTF 3.15.0 Changelog

====================================================================================================
| ADTF - Changelog |
| Automotive Data and Time-Triggered Framework |
====================================================================================================
| |
| This file tracks the changes and bugfixes within ADTF 3.x |
| |
====================================================================================================
| Version: |
| ADTF 3.15.0 penguin |
====================================================================================================
* CHANGES
*
* [ACORE-9833] - Improve ADTF Timings Documentation
* [ACORE-10107] - Improve timer handling in playback mode
* [ACORE-10337] - Add scheduling options to Active Runners
* [ACORE-10508] - Starting ADTF Launcher fails if specifing --console twice
* [ACORE-10711] - File recorder and requestable substreams
* [ACORE-10712] - Implement reset for cStreamClockAsFepClock
* [ACORE-10767] - Change DDL Mapping Filter implementation to use the incoming data without data trigger
* [ACORE-10768] - DDL Mapping Filter should only request substreams on its inputs if they are used on outputs
* [ACORE-10773] - Add option to adapt player service (or playback input filter) for order of data- and time events
* [ACORE-10804] - add adtf_memory<> specialization for standard types
* [ACORE-10805] - convenience for set_sample_info
* [ACORE-10807] - Add a cDataTriggerHint() for more than one input
* [ACORE-10955] - Make effective playback rate available
* [ACORE-10956] - "Clock barriers" for asynchronous, deterministic re-simulation
* [ACORE-10978] - Create a concept for playlists
* [ACORE-11028] - MDGEN - Add option to disable header creation
* [ACORE-11029] - DDL Usage - Use options to in dd2header and header2 dd to generate/use C++ fundamental datatypes
* [ACORE-11068] - MDGEN - Add support for enum class
* [ACORE-11076] - Extend reflection API to support all optional DDL struct and element information
* [ACORE-11090] - Add example for dynamic array usage
* [ACORE-11100] - MDGEN Split generated files into PODs and template specializations
* [ACORE-11163] - Rework catch2 integration
* [ACORE-11199] - As a user I want to provide the explicit content of a sample stream / substream in Signal Registry
* [ACORE-11209] - Add option in mapping filter to choose whether the current timestamp of the trigger or the current clock timestamp for samples
* [ACORE-11211] - Add example using new header2ddl integration
* [ACORE-11212] - Add simple CMake function for header2ddl integration
* [ACORE-11288] - Option to export plain list of structured data / substreams
* [ACORE-11403] - Create a sink to transmit substreams using FEP
* [ACORE-11404] - Replace cQtSharedServer by display handler and display interface
* [ACORE-11410] - Recorder has to create folders if required for specified path
* [ACORE-11424] - MDGEN - Add option to separate split up the created dd-header and sample_data header with template specializations
* [ACORE-11425] - Set default directory to extract attached files
* [ACORE-11440] - Integrate the reworked codec API of dev_essential into the SampleCoders
* [ACORE-11443] - Increase open file limit on Windows
* [ACORE-11457] - Add info log message upon playback files changed
* [ACORE-11466] - Extend documentation regarding substream naming
* [ACORE-11480] - Extend guide to show substream handling with adtf_dattool
* [ACORE-11508] - Add log messages for runlevel transitions, filter states and clock adaptions
* [ACORE-11520] - Create a filter to request all connected substreams
* [ACORE-11521] - Change Substream Reducer to drop not selected samples
* [ACORE-11525] - Extend the open file dialog with option to load more than one and reference files as well
* [ACORE-11527] - Option to display enumeration value in Substream Display
* [ACORE-11528] - Integrate support for playlists
* [ACORE-11529] - Concept to persist property changes during runtime
* [ACORE-11531] - Add deadline constraint to thread invoker
* [ACORE-11534] - Update FEP to 3.1.0 stable
* [ACORE-11558] - Substream Reducer should support substream list
* [ACORE-11559] - Create base library for substream file request
* [ACORE-11572] - Extend stream_meta_type_plain to use an array (std::array or array[]) and a dynamic array (std::vector) for writing
* [ACORE-11574] - Provide a small CodecIndex for fast access
* [ACORE-11576] - Propagate executable icons to associated shell for command line tools
* [ACORE-11583] - Add file dialog to store and load requested substreams
* [ACORE-11584] - Disable request checkbox in substream display filter if no interaction is possible
* [ACORE-11592] - Update to cmake 3.23.2
* [ACORE-11608] - As a developer I want to log additional information using LOG_DETAIL
* [ACORE-11610] - Add forwarding of request interface to Thread Invoker and Thread Mapper
* [ACORE-11612] - Rework default recording workflow to request all substreams per default
* [ACORE-11633] - Clean up compiler and linker flags
*
* BUGFIXES
*
* [ACORE-11433] - Connections are partially not drawn after random zoom behaviour or get loose after deleting/moving components
* [ACORE-11517] - Error logged when stopping playback in a session containing FEP functionality
* [ACORE-11533] - Filelist editor and combo boxes are broken
* [ACORE-11535] - GCC 12 exposes issues with UB in cSample implementation
* [ACORE-11565] - Errors in documentation of cFilter Statemachine Member Functions
* [ACORE-11571] - Static codec is too slow at runtime
* [ACORE-11579] - adtf_launcher does not properly integrate with parent console
* [ACORE-11591] - Values from property links are not available during tInitStage::StageFirst
* [ACORE-11604] - Division by zero in cMainADTFWindow time slider when file contains single timestamp only
* [ACORE-11606] - Macros getting resolved during doxygen conversion from plugindescription
* [ACORE-11631] - Static intializing order problem of dev_essential ddl::dd::Version leads to Problems in structure<> type reflection