ADTF  3.18.2
DDL Mapping Filter Plugin

DDL Mapping Filter

Plugin Information
Plugin Filenameadtf_ddl_mapping_filter.adtfplugin
Plugin Descriptionadtf_ddl_mapping_filter.plugindescription
Plugin NameDDL Mapping Filter Plugin
LicenseADTF
Support Mailsupport@digitalwerk.net
Homepage URLhttps://support.digitalwerk.net/
Plugin Versions
Plugin Version3.18.2
Plugin File Version1.0
adtf3.18.2
adtf::ucom3.1.0
Component Information
NameDDL Mapping Filter
CIDddl_mapping.filter.adtf.cid
DescriptionUse this Filter to convert the content of DDL based samples from one or more incoming structured memory or plain type values to one or more outgoing structured memory or plain type value.
TypeFilter
Properties
NameValueTypeDescriptionSubproperties
description_filescFilenameListList of filenames for description files to use.Filename Extension Filter:
Description files (*.description)
mapping_filecFilenameFilename for a *.map file that contains source and targets which can than be mapped to dynamic input/output pin.sFilename Extension Filter:
Map files (*.map)
output_sample_time0tUInt8Option to use whether the current timestamp of the trigger or the current clock timestamp for the output sample time.Value List:
While writing the output use the time of the current trigger. = 0
While writing the output use the current stream time. = 1
Runner
NameActivation TypeData TriggeredData InputThread TriggeredThread CyclicTimer TriggeredTimer IntervalDescription
periodic_trigger10001100Runner to periodically trigger the function which generates the output data for periodic triggers within mapping file.
Dynamic Pins
Dynamic Input Pinstrue
Dynamic Output Pinstrue
Dynamic Input Binding Pinsfalse
Dynamic Output Binding Pinsfalse

Sources and Targets

The DDL Mapping Filter is to convert the content of DDL based samples from one or more incoming structured memory or plain type values to one or more outgoing structured memory or plain type value.

To do so, the filter reads and interprets a DDL mapping file. The mapping file will describe a mapping prescription what content to read and where to write it. For a detailed description of the content please see https://github.com/cariad-tech/dev_essential/blob/main/doc/extern/ddl/mapping_specification.md.

The file contains so called sources with a name and a set DDL type or plain type. Also, it contains targets with a name and a set DDL type or plain type. Targets will transcribed into outpin, sources are corresponding input pins. Within targets it is possible to assign from source values to target values.

Note
There are some limitations on the DDL struct name that might be used. Other than using self-contained ADTF Default Stream Types this Filter uses one or more DDL Description File for the mapping definitions. Within these files it is only allowed to use one struct name for one single struct definition.

Following names and types are possible for targets and sources:

Source Table
example of mapping file content resulting input pin possible assignment
<source name="NestedStruct" type="tNestedStruct" />
Pin:
  • input pin name: NestedStruct
  • type: adtf/default with a set md_struct="tNestedStruct"
Notice: The tNestedStruct must be described in one of the given description_files or the Media Description Service.

On the targets mapping assignment, you can access the content with following statement:

<assignment to="my_new_x" from="NestedStruct.sSimpleStruct.ui8Val"/>

<source name="x" type="INT64" />
Pin:
  • input pin name: x
  • type: adtf/plaintype with set c-type="INT64" and ddl type description set with md_struct="INT64" where only one element with the name value exists in the corresponding type.
Notice: Following types are possible: BOOL, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, FLOAT32, FLOAT64.
<assignment to="my_new_x" from="x.value"/>

<source name="my_source_pin/NestedStruct" type="tNestedStruct" />
Pin:
  • input pin name: my_source_pin
  • type: adtf/substreams
  • substream name: NestedStruct
  • substream type: adtf/default with a set md_struct="tNestedStruct"
Notice: The tNestedStruct must be described in one of the given description_files or the Media Description Service, otherwise initialisation will fail. Additionally, the NestedStruct substream name must exists within the connected sample stream, the filter will request and strongly expect it.
<assignment to="my_new_x" from="my_source_pin/NestedStruct.sSimpleStruct.ui8Val"/>

<source name="my_source_pin/x" type="INT64" />
Pin:
  • input pin name: my_source_pin
  • type: adtf/substreams
  • substream name: x
  • substream type: adtf/plaintype with set c-type="INT64" and ddl type description set with md_struct="INT64" where only one element with the name value exists in the corresponding type.
Notice: Following substream types are possible: BOOL, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, FLOAT32, FLOAT64
<assignment to="my_new_x" from="my_source_pin/x.value"/>
Target Table
example of mapping file content resulting output pin possible assignment
<target name="NestedStruct" type="tNestedStruct" />
Pin:
  • output pin name: NestedStruct
  • type: adtf/default with a set md_struct="tNestedStruct"
Notice: The tNestedStruct must be described in one of the given description_files or the Media Description Service.

On the targets mapping assignment, you can access the content with following statement if the source is a substream:

<assignment to="NestedStruct.sSimpleStruct.ui8Val" from="my_source_pin/x.value"/>

, or if the source is a ddl type:

<assignment to="NestedStruct.sSimpleStruct.ui8Val" from="my_source_pin.sSimpleStruct.ui8Val"/>

, or if the source is a plain type:

<assignment to="NestedStruct.sSimpleStruct.ui8Val" from="my_source_pin.value"/>

.

<target name="result" type="INT64" />
Pin:
  • output pin name: result
  • type: adtf/plaintype with set c-type="INT64" and ddl type description set with md_struct="INT64" where only one element with the name value exists in the corresponding type.
Notice: Following types are possible: BOOL, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, FLOAT32, FLOAT64.
<assignment to="value" from="my_source_pin/x.value"/>

or

<assignment to="value" from="my_source_pin.sSimpleStruct.ui8Val"/>

or

<assignment to="value" from="my_source_pin.value"/>

<target name="my_target_pin/NestedStruct" type="tNestedStruct" />
Pin:
  • input pin name: my_target_pin
  • type: adtf/substreams
  • substream name: NestedStruct
  • substream type: adtf/default with a set md_struct="tNestedStruct"
Notice: The tNestedStruct must be described in one of the given description_files or the Media Description Service, otherwise initialisation will fail.
<assignment to="sSimpleStruct.ui8Val" from="my_source_pin/x.value"/>

or

<assignment to="sSimpleStruct.ui8Val" from="my_source_pin.sSimpleStruct.ui8Val"/>

or

<assignment to="sSimpleStruct.ui8Val" from="my_source_pin.value"/>

<source name="my_target_pin/x" type="INT64" />
Pin:
  • input pin name: my_target_pin
  • type: adtf/substreams
  • substream name: x
  • substream type: adtf/plaintype with set c-type="INT64" and ddl type description set with md_struct="INT64" where only one element with the name value exists in the corresponding type.
Notice: Following substream types are possible: BOOL, INT8, UINT8, INT16, UINT16, INT32, UINT32, INT64, UINT64, FLOAT32, FLOAT64
<assignment to="value" from="my_source_pin/x.value"/>

or

<assignment to="value" from="my_source_pin.sSimpleStruct.ui8Val"/>

or

<assignment to="value" from="my_source_pin.value"/>

Each target my have one or more triggers defined.

DDL Mapping Triggers

The DDL Mapping Filter will work data triggered on each configured source. For each target within the mapping file it is possible to congure it data triggered or time triggered:

Data Triggered:

Time Triggered:

Remarks
It is not possible to set up the connections to the input pins of this filter as asynchronous connections.