This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Tools (scripting, external tools...)

Tools (scripting, external tools…)

1.1 - ReleaseNotes_Artt_Generator

ReleaseNotesReport

1.3 - ReleaseNotes_Artt_Generators


BMW Package Release Notes
Artt_Generator-2.0.2
Version:
2.0.2
Release Date:
23-Nov-2011
Package Status:
Released
Author:
BMW Group
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 1 of 14

1 Revision History
Revision
Date
Remarks
2.0.2
23-Nov-2011
CR71146, CR71147.
2.0.1
14-Apr-2011
Method ModuleConfAtDefRefTo() added CR71008.
2.0.0
15-Mar-2011
Behaviour of ValueOf() changed CR71004, 
CR71005.
1.3.0
11-Oct-2010
AUTOSAR 4.0 schema CR .
1.2.0
30-Jun-2010
New validation feature CR70359, CR .
1.1.1
27-May-2010
CR70519.
1.1.0
11-Nov-2009
User friendliness and portability CR70397, 
CR70343.
1.0.3
27-Oct-2009
Performance optimization CR70341.
1.0.2
29-Jun-2009
Support of more BAC2.1 templates. CR70168, 
CR70166, CR70167, CR70195, CR70237, 
CR70267.
1.0.1
03-Oct-2008
Initial revision. CR70051, CR70068.
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 2 of 14

2 Package Enumeration Scheme
Every package carries a 3-digit version number. The following table explains how compatibility 
between versions can be determined from the version number:
Changed Version
Example
Compatibility
Patch Version
ĺ
A defect has been fixed. Versions are fully 
compatible.
Minor Version
ĺ
A new feature was added. New version is 
backwards compatible to old version.
Major Version
ĺ
API of package changed. Versions are not 
compatible. If the new package is used, other 
packages must be changed as well.
3 Package Description
artt is a command line application allowing to generate text files, including source code, from 
AUTOSAR descriptions. As input data artt uses a template file describing static content and 
structure of the desired output and one or more AUTOSAR descriptions, which are serving as 
provider for dynamic content. Since AUTOSAR descriptions are XML files, templates for artt 
typically use XPATH expressions referring to certain elements in the input file.
This package is maintained by BMW AUTOSAR Core Support, via Request Tracker (https://sc-
support.bader-muenchen.de/rt3/) or telephone hotline (+49-89-382-32233).
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 3 of 14

4 Revisions and Modifications
Revision 2.0.2 [Released]
Item
Description
CR ID:
71146
CR Headline:
ARTT ChangeContext returns false when called with null as 
parameter.
Description of Issues:
Misleading documentation
Description of Changes:
Extended the documentation of ChangeContext method in 
ArGtcBase to reflect that a call to ChangeContext(null) will 
successfully reset the context to the root context AND return false. 
(although one could expect that it returns true because the context 
change was successfull.
Changed Files:
artt.chm
Compatibility:
Fully compatible
Item
Description
CR ID:
71147
CR Headline:
Wrong implementation of BoolValueOf
Description of Issues:
The included template utility file Helper.tt contained a helper 
function BoolValueOf. This implementation was wrong since it did 
not respect the various representations of bool-values allowed by 
the autosar schema.
Description of Changes:
Changed the implementation to use the correct artt internal 
implicit bool operator to map a ValueNode to a bool.
Marked the helper function BoolValueOf and its wrapper Enabled
() as being obsolete since these helpers can simply be substuitted 
with core artt functions.
Changed Files:
Helper.tt
Compatibility:
Fully compatible
Item
Description
CR ID:
CR Headline:
Description of Issues:
Description of Changes:
Changed Files:
Compatibility:
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 4 of 14

Revision 2.0.1 [Stable]
Item
Description
CR ID:
71008
CR Headline:
new method ModuleConfAtDefRefTo()
Description of Issues:
New method ModuleConfAtDefRefTo() added.
Description of Changes:
Creates XPATH to the <c>MODULE-CONFIGURATION</c> node 
(for AUTOSAR versions before 4.0) 
or the <c>ECUC-MODULE-CONFIGURATION-VALUES</c> 
node (starting with AUTOSAR version 4.0) of the module 
configuration that is based on the module definition with the given 
shortname.
Changed Files:
artt.exe
artt.chm
Compatibility:
no restrictions to older AUTOSAR versions
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 5 of 14

Revision 2.0.0 [Stable]
Item
Description
CR ID:
71004
CR Headline:
artt generator shall write output file even in case of error
Description of Issues:
Also for Environment.Exit in template file an outputfile is 
generated.
Description of Changes:
Also in case of a thrown exception in template file an output file is 
generated.
Changed Files:
artt.exe
Compatibility:
no restrictions to older AUTOSAR versions
Item
Description
CR ID:
71005
CR Headline:
ValueOf-Method shall not try to interprete ECUC-BOOLEAN-
VALUE
Description of Issues:
In versions less the 2 the ValueOf() method returned the string 
found in the tt-file if it was not a boolean value. In case of a 
boolean value, it retruned "TRUE" or "FALSE".
Description of Changes:
The method ValueOf() now always returns just the string found  in 
the template file without an interpretation of it.
Changed Files:
artt.exe
Compatibility:
Instead of writing:
boolean blub = <#= ValueOf(<xpath to BOOLEAN-VALUE>) #>
now it has to be written:
boolean blub = <#= (ValueOf(<xpath to BOOLEAN-VALUE>) == 
true ? “TRUE” : “FALSE”) #>
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 6 of 14

Revision 1.3.0 [Released]
Item
Description
CR ID:
CR Headline:
Handling of the changed tags in AUTOSAR 4.0 schema.
Description of Issues:
- ECUC-MODULE-CONFIGURATION-VALUES instead of 
MODULE-CONFIGURATION (in AR < V3.x)
- ECUC- PARAM-CONF-CONTAINER-DEF instead of PARAM-
CONF-CONTAINER-DEF (in AR < V3.x)
Description of Changes:
Changed tags of AUTOSAR V4.0 are supported now. Depending 
on the URL given in the template or via the commandline, the tag 
name of AUTOSAR 2.x, 3.x or 4.x is used.
Changed Files:
artt.exe
artt.chm
Compatibility:
no restrictions to older AUTOSAR versions
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 7 of 14

Revision 1.2.0 [Stable]
Item
Description
CR ID:
70359
CR Headline:
Validation of AUTOSAR descriptions
Description of Issues:
The ARTT generator has no ability to validate the given EPC file 
against the BMD. This has the following disadvantages:
- Existence of nodes can not be ensured
- MIN/MAX/RANGE tags can not be evaluated
- Type checks of variables can not be done
- Uniqueness of container entries can not be verified
Description of Changes:
Implemented validation of AUTOSAR description (EPC) against 
AUTOSAR definition (BMD). Validation can be triggered by 
specifiying the AUTOSAR definition file on the command line. See 
user guide for more information.
Changed Files:
artt.exe
artt.chm
Compatibility:
Item
Description
CR ID:
CR Headline:
Push- / PopContext functionality
Description of Issues:
Functionality was needed for Validation of AUTOSAR 
descriptions.
Description of Changes:
New set of functions added to manipulate the context using a 
stack: PushContext(), PopContext(), ClearContextStack().
See user guide for more information.
Changed Files:
artt.exe
artt.chm
Compatibility:
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 8 of 14

Revision 1.1.1 [Released]
Item
Description
CR ID:
70519
CR Headline:
Artt-Generator continous generating even if verify failed
Description of Issues:
Artt-Generator returns success of generation.
Description of Changes:
Artt-Generator does not return value if successfull generated.<> 0.
Changed Files:
logger.tt
Compatibility:
Revision 1.1.0 [Stable]
Item
Description
CR ID:
70397
CR Headline:
Improve user friendliness
Description of Issues:
In some cases of wrong command line parameters the return 
value was an errorlevel of 0.
Description of Changes:
Help file extened with the information, that a not existing output 
folder is created.
In case of a wrong command line parameter, the program returns 
an errorlevel <> 0.
Changed Files:
artt.chm
artt.exe
Compatibility:
Item
Description
CR ID:
70343
CR Headline:
Include search path
Description of Issues:
The usage of the templates with includes in build systems with 
different folder structures was not possilbe.
Description of Changes:
It is now possible to declare an search path for the includes given 
in an template via command line parameter -i.
Changed Files:
artt.exe
Compatibility:
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 9 of 14

Revision 1.0.3 [Stable]
Item
Description
CR ID:
70341
CR Headline:
ARTT Performance Issue
Description of Issues:
For large .epc files the template generation takes a long time 
because of the xpath search.
Description of Changes:
Performance optimizations done with different means.
- Caches for Autosar shortnames to xpaths.
- Working with compiled xpaths.
Changed Files:
artt.exe
Compatibility:
Revision 1.0.2 [Stable]
Item
Description
CR ID:
70168
CR Headline:
ARTT: Missing Include Directives.
Description of Issues:
Although ARTT documentation references MS T4 documentation 
(which ARTT is based on), ARTT currently does not support 
Template Include directives.
Description of Changes:
Added support for T4 <#@include #> directive.
Changed Files:
artt.exe
artt.chm
SswcT4EngineHost.dll
Compatibility:
Item
Description
CR ID:
70166
CR Headline:
ARTT: String variables as XPATH-Expression in LOOP.
Description of Issues:
Currently only String Literals in the form "xxx" are accepted as a X
-PATH expression in a LOOP-statement.
Description of Changes:
Fixed issue with expressions other than non-verbatim string 
literals being used in LOOP macros. Now all expressions are 
possible.
Changed Files:
artt.exe
artt.chm
Compatibility:
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 10 of 14

Item
Description
CR ID:
70167
CR Headline:
ARTT: Warnings shall not abort the generation process.
Description of Issues:
The ARTT generator aborts the generation process if warnings 
(like "unused variables")  are encountered.
Description of Changes:
Warnings no longer result in a generation error, i.e. the calling 
code will no longer abort the build in case of template warnings.
Changed Files:
artt.exe
artt.chm
Compatibility:
Item
Description
CR ID:
CR Headline:
Number of processed AUTOSAR files no longer limited.
Description of Issues:
Number of AUTOSAR descriptions was limited.
Description of Changes:
The number of AUTOSAR description files is no longer limited. As 
consequence the configuration file artt.config, which specified the 
used upper limit is no longer required.
Changed Files:
AutosarDirectiveProcessor.dll
artt.exe
artt.chm
SswcT4EngineHost.dll
artt.config (removed)
artt.exe
*.dll removed
artt.exe
artt.chm
artt.exe
artt.chm
Compatibility:
An old artt.config will not be used and therefore has no influence 
on the application.
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 11 of 14

Item
Description
CR ID:
70195
CR Headline:
ARTT-Generator: New convenience functions for template 
creation.
Description of Issues:
The functions of interest are:
- RefValueExists() (a combination of the existing functions Exists() 
and RefValueOf())
- AppendTrailingSpaces()
- LastStringAfterSlash(string xpath)
- bool BitTest(int val, bitNo)
- xpath creators (ShortName(), DefRef(), ...)
- ToHex(...)
- BoolFromString()
Description of Changes:
A number of new functions have been added. In order to fit 
existing architecture, original function names were used as 
suggestion and were adapted as specified below.
The following utility functions have been added to artt: BitTest(), 
Xp.DefRefTo(), Xp.ValueAtDefRefTo(), Xp.ValueRefAtDefRefTo(), 
LastValueSegmentOf(), ModuleConf(), Xp.ShortNamePath(), 
Assert(), FormatHex(), AsBool(), RefExists().
See user guide for detailed information about the functionality of 
new and existing methods.
Changed Files:
artt.exe
AutosarDirectiveProcessor.dll
artt.chm
Compatibility:
Item
Description
CR ID:
70237
CR Headline:
Extension of XPathFactory functionality
Description of Issues:
Better usablility.
Description of Changes:
New XPathFactory.ContainerAtDefRefTo(): Creates XPath for a 
certain container node.
Change function XPathFactory.ModuleConf(): Return absolute 
XPath instead of relative.
New function FormatBin(): format integer to binary format with 
variable length.
new commandlineswitches for overwrite the name of the 
generated file and the namespace URI in the template
Changed Files:
artt.exe
artt.chm
Compatibility:
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 12 of 14

Item
Description
CR ID:
70267
CR Headline:
Validation of the given XML against a schema
Description of Issues:
Description of Changes:
Function to validate the .epc files against a via commandline 
given .xsd schema.
Changed Files:
artt.exe
artt.chm
Compatibility:
Revision 1.0.1 [Stable]
Item
Description
CR ID:
CR Headline:
Support of relative XPATH references.
Description of Issues:
Description of Changes:
A new feature supporting relative XPATH references has been 
added through the ChangeContext() command.
Changed Files:
artt.exe
artt.chm
AutosarDirectiveProcessor.dll
Compatibility:
Item
Description
CR ID:
70051
CR Headline:
Artt-Generator: Failure when called from network drive.
Description of Issues:
When called from a network drive, artt cannot be executed due to 
a .NET runtime exception.
Description of Changes:
artt executable and all required libraries were signed with a BMW 
signature. The signature can be imported on Windows machines 
that need to call artt from a network path.
Changed Files:
artt.exe
artt.chm
AutosarDirectiveProcessor.dll
SswcT4EngineHost.dll
Microsoft.VisualStudio.TextTemplating.dll
Compatibility:
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 13 of 14

Item
Description
CR ID:
70068
CR Headline:
LOOP processing of XML nodes.
Description of Issues:
Description of Changes:
A new feature was added to support looping over a set of 
referenced XML nodes through the LOOP command.
Changed Files:
artt.exe
artt.chm
AutosarDirectiveProcessor.dll
Compatibility:
Copyright (c) 2010 by BMW Group. All rights reserved.
Page 14 of 14

Document Outline


2.1 - TL101A_CptRteGen Peer Review Checklists


Overview

Summary Sheet
Synergy Project


Sheet 1: Summary Sheet
























Rev 1.28-Jun-15

Peer Review Summary Sheet


























Synergy Project Name:


kzshz2: Intended Use: Identify which component is being reviewed. This should be the Module Short Name from Synergy Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. TL101A_CptRteGen
Revision / Baseline:


kzshz2: Intended Use: Identify which Synergy revision of this component is being reviewed Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. TL101A_CptRteGen_2.0.0

























Change Owner:


kzshz2: Intended Use: Identify the developer who made the change(s) Rationale: A change request may have more than one resolver, this will help identify who made what change. Change owner identification may be required by indusrty standards. Lucas Wendling
Work CR ID:


EA4#3189





























kzshz2: Intended Use: Intended to identify at a high level to the reviewers which areas of the component have been changed. Rationale: This will be good information to know when ensuring appropriate reviews have been completed. Modified File Types:















































































































































































kzshz2: Intended Use: Identify who where the reviewers, what they reviewed, and if the reviewed changes have been approved to release the code for testing. Comments here should be at a highlevel, the specific comments should be present on the specific review form sheet. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. ADD DR Level Move reviewer and approval to individual checklist form Review Checklist Summary:






















































Reviewed:































N/AMDD


N/ASource Code


N/APolySpace









































N/AIntegration Manual


N/ADavinci Files








































































Comments:

Tool component. Only reviewed files and folder structure for correctness



























































































General Guidelines:
- The reviews shall be performed over the portions of the component that were modified as a result of the Change Request.
- New components should include FDD Owner and Integrator as apart of the Group Review Board (Source Code, Integration Manual, and Davinci Files)
- Enter any rework required into the comment field and select No. When the rework is complete, review again using this same review sheet and select Yes. Add date and additional comment stating that the rework is completed.
- To review a component with multiple source code files use the "Add Source" button to create a Source code tab for each source file.
- .h file should be reviewed with the source file as part of the source file.





















Sheet 2: Synergy Project

Peer Review Meeting Log (Component Synergy Project Review)



















































Quality Check Items:




































Rationale is required for all answers of No










New baseline version name from Summary Sheet follows








Yes
Comments:

Follows convention created for
naming convention











tool components
























Project contains necessary subprojects








N/A
Comments:










































Project contains the correct version of subprojects








N/A
Comments:










































Design subproject is correct version








N/A
Comments:











































General Notes / Comments:



























































LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Lucas Wendling


Review Date :

01/30/17
































Lead Peer Reviewer:


Matt Leser


Approved by Reviewer(s):



Yes































Other Reviewer(s):









































































2.2 - about

About

Copyright

Vector Informatik GmbH

2.3 - about

About

Copyright

Vector Informatik GmbH

2.4 - about

About

Copyright

Vector Informatik GmbH

2.5 - about

About

Copyright

Vector Informatik GmbH

2.6 - about

About

About This Content

June 2, 2006

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

2.7 - about

About

About This Content

June 28, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Third Party Content

The Content includes items that have been sourced from third parties as set out below. If you did not receive this Content directly from the Eclipse Foundation, the following is provided for informational purposes only, and you should look to the Redistributor’s license for terms and conditions of use.

Flute 1.3

The plug-in is accompanied by software developed by W3C at http://www.w3.org/Style/CSS/SAC/. Flute 1.3 ("Flute") is included with the plug-in without modification in lib/flute.jar. Your use of Flute is subject to the terms and conditions of the W3C Software License ("W3CSL"). A copy of the W3CSL can be found in about_files/copyright-software-20021231.htm and is also available at http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231. Source code for Flute is available at http://www.w3.org/Style/CSS/SAC/.

2.8 - about

About

About This Content

June 28, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

2.9 - about

About

About This Content

June 5, 2006

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor’s license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

2.10 - about

About

About This Content

February 6, 2015

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Third Party Content

The Content includes items that have been sourced from third parties as set out below. If you did not receive this Content directly from the Eclipse Foundation, the following is provided for informational purposes only, and you should look to the Redistributor's license for terms and conditions of use.

The Content includes items that have been sourced from third parties as follows:

JUnit 4.12

The plug-in is accompanied by software developed by JUnit.org. The JUnit 4.12 code included with the plug-in includes no modifications. Your use of JUnit 4.12 in both source and binary code form contained in the plug-in is subject to the terms and conditions of the Common Public License Version 1.0 ("CPL"). A copy of the CPL is available at http://www.eclipse.org/legal/cpl-v10.html. The binary code is located in junit.jar and the source code is located in source-bundle or in the org.junit.source bundle.
The original source and binaries are available from http://search.maven.org/#search|gav|1|g%3A%22junit%22%20AND%20a%3A%22junit%22, namely:
http://search.maven.org/remotecontent?filepath=junit/junit/4.12/junit-4.12-sources.jar
http://search.maven.org/remotecontent?filepath=junit/junit/4.12/junit-4.12.jar

2.11 - about

About

Copyright

Vector Informatik GmbH

2.12 - about

About

About This Content

September, 2015

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Third Party Content

The Content includes items that have been sourced from third parties as set out below. If you did not receive this Content directly from the Eclipse Foundation, the following is provided for informational purposes only, and you should look to the Redistributor’s license for terms and conditions of use.

Ant 1.9.6

Information about what changed in Ant 1.9.6 from Ant 1.9.5 can be found in the 1.9.6 release notes.

Information about what changed in Ant 1.9.5 from Ant 1.9.4 can be found in the 1.9.5 release notes.

The plug-in includes software developed by The Apache Software Foundation as part of the Ant project.

The Ant binary code in ant.jar and the scripts ant, ant.bat, ant.cmd, antenv.cmd, antRun, antRun.bat, antRun.pl, complete-ant-cmd.pl, envset.cmd, lcp.bat, runant.pl, runant.py and runrc.cmd are included with the plug-in with no modifications.

Your use of the Ant code and the scripts is subject to the terms and conditions of the Apache License, Version 2.0. A copy of the license is contained in the file ASL-LICENSE-2.0.txt and is also available at http://www.apache.org/licenses/LICENSE-2.0.html.

The names "Ant" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact apache@apache.org.

The Apache attribution NOTICE file is included with the Content in accordance with 4d of the Apache License, Version 2.0.

Ant includes the following software:

DOM

DOM is developed by the World Wide Web Consortium. Your use of DOM is subject to the terms and conditions of the license found in the file DOM-LICENSE.html which is included with this plug-in and can also be found at http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.

SAX

SAX is developed by the SAX project (http://www.saxproject.org). Your use of SAX is subject to the terms and conditions of the license found in the file SAX-LICENSE.html which is included with this plug-in.

2.13 - about

About

About This Content

June 5, 2006

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor’s license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

2.14 - cpl-v10

Common Public License - v 1.0

Common Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

    a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
    b) in the case of each subsequent Contributor:
    i) changes to the Program, and
    ii) additions to the Program;
    where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

    a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
    b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
    c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
    d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

    a) it complies with the terms and conditions of this Agreement; and
    b) its license agreement:
    i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
    ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
    iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
    iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

    a) it must be made available under this Agreement; and
    b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

2.15 - DOM-LICENSE

DOM License

W3C Software Notice and License

This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license.

License

By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.

Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications:

  • The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
  • Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body of any redistributed or derivative code.
  • Notice of any changes or modifications to the files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)

Disclaimers

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.

Notes

This version: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

This formulation of W3C's notice and license became active on December 31 2002. This version removes the copyright ownership notice such that this license can be used with materials other than those owned by the W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and OSI's certification under the Open Source Definition.

2.16 - DVCfg_AutomationInterfaceDocumentation

DaVinci Configurator AutomationInterface Documentation

2.17 - DVCfg_AutomationInterfaceDocumentation_ind

Outline
Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10
Page 11
Page 12
Page 13
Page 14
Page 15
Page 16
Page 17
Page 18
Page 19
Page 20
Page 21
Page 22
Page 23
Page 24
Page 25
Page 26
Page 27
Page 28
Page 29
Page 30
Page 31
Page 32
Page 33
Page 34
Page 35
Page 36
Page 37
Page 38
Page 39
Page 40
Page 41
Page 42
Page 43
Page 44
Page 45
Page 46
Page 47
Page 48
Page 49
Page 50
Page 51
Page 52
Page 53
Page 54
Page 55
Page 56
Page 57
Page 58
Page 59
Page 60
Page 61
Page 62
Page 63
Page 64
Page 65
Page 66
Page 67
Page 68
Page 69
Page 70
Page 71
Page 72
Page 73
Page 74
Page 75
Page 76
Page 77
Page 78
Page 79
Page 80
Page 81
Page 82
Page 83
Page 84
Page 85
Page 86
Page 87
Page 88
Page 89
Page 90
Page 91
Page 92
Page 93
Page 94
Page 95
Page 96
Page 97
Page 98
Page 99
Page 100
Page 101
Page 102
Page 103
Page 104
Page 105
Page 106
Page 107
Page 108
Page 109
Page 110
Page 111
Page 112
Page 113
Page 114
Page 115
Page 116
Page 117
Page 118
Page 119
Page 120
Page 121
Page 122
Page 123
Page 124
Page 125
Page 126
Page 127
Page 128
Page 129
Page 130
Page 131
Page 132
Page 133
Page 134
Page 135
Page 136
Page 137
Page 138
Page 139
Page 140
Page 141
Page 142
Page 143
Page 144
Page 145
Page 146
Page 147
Page 148
Page 149
Page 150
Page 151
Page 152
Page 153
Page 154
Page 155
Page 156
Page 157
Page 158
Page 159
Page 160
Page 161
Page 162
Page 163
Page 164
Page 165
Page 166
Page 167
Page 168
Page 169
Page 170
Page 171
Page 172
Page 173
Page 174
Page 175
Page 176
Page 177
Page 178
Page 179
Page 180
Page 181
Page 182
Page 183
Page 184
Page 185
Page 186
Page 187
Page 188
Page 189
Page 190
Page 191
Page 192
Page 193
Page 194
Page 195
Page 196
Page 197
Page 198
Page 199
Page 200
Page 201
Page 202
Page 203
Page 204
Page 205
Page 206
Page 207

2.18 - DVCfg_AutomationInterfaceDocumentations

DaVinci Configurator AutomationInterface
Development Documentation of the AutomationInterface (AI)
DaVinci Configurator Team
December 9, 2016
© 2016
Vector Informatik GmbH
Ingersheimerstr. 24
70499 Stuttgart

Contents
1
Introduction
8
1.1
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.2
Facts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2
Getting started with Script Development
9
2.1
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.2
Automation Script Development Types . . . . . . . . . . . . . . . . . . . . . . . .
9
2.3
Script File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.4
Script Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.4.1
Script Project Development . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.4.2
Java JDK Setup
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.4.3
IntelliJ IDEA Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.4.4
Gradle Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3
AutomationInterface Architecture
15
3.1
Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
3.2
Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.2.1
Why Groovy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.3
Script Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.1
Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.3.2
Script Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.3.3
Script Locations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.4
Script loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
3.4.1
Internal Script Reload Behavior . . . . . . . . . . . . . . . . . . . . . . . .
18
3.5
Script editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.6
Licensing
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3.7
Script Coding Conventions and Constraints . . . . . . . . . . . . . . . . . . . . .
19
3.7.1
Usage of static fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.7.2
Usage of Outer Closure Scope Variables . . . . . . . . . . . . . . . . . . .
21
3.7.3
States over script task execution . . . . . . . . . . . . . . . . . . . . . . .
21
3.7.4
Usage of Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.7.5
Usage of DaVinci Configurator private Classes Methods or Fields . . . . .
21
4
AutomationInterface API Reference
22
4.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.2
Script Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.2.1
Script Task Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.2.1.1
Script Creation with IDE Code Completion Support . . . . . . .
24
4.2.1.2
Script Task isExecutableIf . . . . . . . . . . . . . . . . . . . . . .
25
4.2.2
Description and Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.3
Script Task Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.3.1
Available Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.3.1.1
Application Types . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.3.1.2
Project Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.3.1.3
UI Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.3.1.4
Generation Types . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.4
Script Task Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.4.1
Execution Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
© 2016, Vector Informatik GmbH
2 of 207


Contents
4.4.1.1
Code Block Arguments . . . . . . . . . . . . . . . . . . . . . . .
32
4.4.2
Task Execution Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.4.3
Script Path API during Execution . . . . . . . . . . . . . . . . . . . . . .
33
4.4.3.1
Path Resolution by Parent Folder
. . . . . . . . . . . . . . . . .
34
4.4.3.2
Path Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
4.4.3.3
Script Folder Path Resolution
. . . . . . . . . . . . . . . . . . .
35
4.4.3.4
Project Folder Path Resolution . . . . . . . . . . . . . . . . . . .
35
4.4.3.5
SIP Folder Path Resolution . . . . . . . . . . . . . . . . . . . . .
36
4.4.3.6
Temp Folder Path Resolution . . . . . . . . . . . . . . . . . . . .
36
4.4.3.7
Other Project and Application Paths
. . . . . . . . . . . . . . .
37
4.4.4
Script logging API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.4.5
User Interactions and Inputs
. . . . . . . . . . . . . . . . . . . . . . . . .
38
4.4.5.1
UserInteraction . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.4.6
Script Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.4.6.1
Script Exceptions
. . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.4.6.2
Script Task Abortion by Exception . . . . . . . . . . . . . . . . .
40
4.4.6.3
Unhandled Exceptions from Tasks . . . . . . . . . . . . . . . . .
41
4.4.7
User defined Classes and Methods
. . . . . . . . . . . . . . . . . . . . . .
42
4.4.8
Usage of Automation API in own defined Classes and Methods . . . . . .
43
4.4.8.1
Access the Automation API like the Script code{} Block
. . . .
43
4.4.8.2
Access the Project API of the current active Project . . . . . . .
43
4.4.9
User defined Script Task Arguments in Commandline
. . . . . . . . . . .
44
4.4.9.1
Call Script Task with Task Arguments . . . . . . . . . . . . . . .
46
4.4.10 Stateful Script Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
4.5
Project Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.5.1
Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.5.2
Accessing the active Project . . . . . . . . . . . . . . . . . . . . . . . . . .
49
4.5.3
Creating a new Project
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
4.5.3.1
Mandatory Settings . . . . . . . . . . . . . . . . . . . . . . . . .
52
4.5.3.2
General Settings . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
4.5.3.3
Target Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.5.3.4
Post Build Settings
. . . . . . . . . . . . . . . . . . . . . . . . .
54
4.5.3.5
Folders Settings
. . . . . . . . . . . . . . . . . . . . . . . . . . .
54
4.5.3.6
DaVinci Developer Settings . . . . . . . . . . . . . . . . . . . . .
56
4.5.4
Opening an existing Project . . . . . . . . . . . . . . . . . . . . . . . . . .
57
4.5.4.1
Parameterized Project Load
. . . . . . . . . . . . . . . . . . . .
58
4.5.4.2
Open Project Details
. . . . . . . . . . . . . . . . . . . . . . . .
59
4.5.5
Saving a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
4.5.6
Opening AUTOSAR Files as Project . . . . . . . . . . . . . . . . . . . . .
60
4.6
Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
4.6.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
4.6.2
Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
4.6.2.1
Read the ActiveEcuc
. . . . . . . . . . . . . . . . . . . . . . . .
62
4.6.2.2
Write the ActiveEcuc . . . . . . . . . . . . . . . . . . . . . . . .
65
4.6.2.3
Read the SystemDescription
. . . . . . . . . . . . . . . . . . . .
67
4.6.2.4
Write the SystemDescription . . . . . . . . . . . . . . . . . . . .
68
4.6.3
BswmdModel in AutomationInterface
. . . . . . . . . . . . . . . . . . . .
70
4.6.3.1
BswmdModel Package and Class Names . . . . . . . . . . . . . .
70
4.6.3.2
Reading with BswmdModel . . . . . . . . . . . . . . . . . . . . .
70
4.6.3.3
Writing with BswmdModel . . . . . . . . . . . . . . . . . . . . .
71
4.6.3.4
Sip DefRefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
© 2016, Vector Informatik GmbH
3 of 207


Contents
4.6.3.5
BswmdModel DefRefs . . . . . . . . . . . . . . . . . . . . . . . .
72
4.6.3.6
Switching from Domain Models to BswmdModel . . . . . . . . .
73
4.6.4
MDF Model in AutomationInterface . . . . . . . . . . . . . . . . . . . . .
73
4.6.4.1
Reading the MDF Model . . . . . . . . . . . . . . . . . . . . . .
74
4.6.4.2
Writing the MDF Model
. . . . . . . . . . . . . . . . . . . . . .
76
4.6.4.3
Simple Property Changes . . . . . . . . . . . . . . . . . . . . . .
77
4.6.4.4
Creating single Child Members (0:1) . . . . . . . . . . . . . . . .
77
4.6.4.5
Creating and adding Child List Members (0:*) . . . . . . . . . .
78
4.6.4.6
Updating existing Elements . . . . . . . . . . . . . . . . . . . . .
80
4.6.4.7
Deleting Model Objects . . . . . . . . . . . . . . . . . . . . . . .
81
4.6.4.8
Duplicating Model Objects . . . . . . . . . . . . . . . . . . . . .
82
4.6.4.9
Special properties and extensions . . . . . . . . . . . . . . . . . .
82
4.6.4.10 AUTOSAR Root Object
. . . . . . . . . . . . . . . . . . . . . .
83
4.6.4.11 ActiveEcuC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.6.4.12 DefRef based Access to Containers and Parameters
. . . . . . .
84
4.6.4.13 Ecuc Parameter and Reference Value Access . . . . . . . . . . .
85
4.6.5
SystemDescription Access . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
4.6.6
Transactions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
4.6.6.1
Transactions API
. . . . . . . . . . . . . . . . . . . . . . . . . .
89
4.6.6.2
Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
4.6.7
Post-build selectable Variance . . . . . . . . . . . . . . . . . . . . . . . . .
91
4.6.7.1
Investigate Project Variance
. . . . . . . . . . . . . . . . . . . .
91
4.6.7.2
Variant Model Objects
. . . . . . . . . . . . . . . . . . . . . . .
92
4.7
Generation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
4.7.1
Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
4.7.1.1
Default Project Settings . . . . . . . . . . . . . . . . . . . . . . .
94
4.7.1.2
Generate One Module . . . . . . . . . . . . . . . . . . . . . . . .
95
4.7.1.3
Generate Multiple Modules . . . . . . . . . . . . . . . . . . . . .
96
4.7.1.4
Generate Multi Instance Modules
. . . . . . . . . . . . . . . . .
96
4.7.1.5
Generate External Generation Step
. . . . . . . . . . . . . . . .
96
4.7.1.6
Evaluate generation or validation results
. . . . . . . . . . . . .
97
4.7.2
Generation Task Types
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
4.8
Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.8.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.8.2
Access Validation-Results . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
4.8.3
Model Transaction and Validation-Result Invalidation . . . . . . . . . . . 101
4.8.4
Solve Validation-Results with Solving-Actions . . . . . . . . . . . . . . . . 101
4.8.4.1
Solver API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
4.8.5
Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.8.5.1
Access Validation-Results of a Model-Object . . . . . . . . . . . 104
4.8.5.2
Access Validation-Results of a DefRef . . . . . . . . . . . . . . . 104
4.8.5.3
Filter Validation-Results using an ID Constant . . . . . . . . . . 104
4.8.5.4
Identification of a Particular Solving-Action . . . . . . . . . . . . 105
4.8.5.5
Validation-Result Description as MixedText . . . . . . . . . . . . 106
4.8.5.6
Further IValidationResultUI Methods . . . . . . . . . . . . . . . 106
4.8.5.7
IValidationResultUI in a variant (Post Build Selectable) Project 107
4.8.5.8
Erroneous CEs of a Validation-Result . . . . . . . . . . . . . . . 107
4.8.5.9
Examine Solving-Action Execution . . . . . . . . . . . . . . . . . 108
4.8.5.10 Create a Validation-Result in a Script Task . . . . . . . . . . . . 109
4.9
Update Workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.9.1
Method Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
© 2016, Vector Informatik GmbH
4 of 207


Contents
4.9.2
Example: Content of Input Files has changed. . . . . . . . . . . . . . . . . 111
4.9.3
Example: List of Input Files shall be changed . . . . . . . . . . . . . . . . 112
4.9.4
Prerequisites
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.10 Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.10.1 Communication Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.10.1.1 CanControllers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.10.1.2 CanFilterMasks
. . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.10.2 Diagnostics Domain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.10.2.1 DemEvents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.10.3 Runtime System Domain
. . . . . . . . . . . . . . . . . . . . . . . . . . . 120
4.10.3.1 Mapping component ports
. . . . . . . . . . . . . . . . . . . . . 120
4.10.3.2 Data Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
4.11 Persistency
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.11.1 Model Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.11.1.1 Export ActiveEcuc . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.11.1.2 Export Post-build selectable Variants . . . . . . . . . . . . . . . 141
4.11.1.3 Advanced Export
. . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.11.2 Model Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.12 Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.12.1 Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.12.2 Converters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.13 Advanced Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.13.1 Java Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.13.1.1 Script Task Creation in Java Code . . . . . . . . . . . . . . . . . 147
4.13.1.2 Java Code accessing Groovy API . . . . . . . . . . . . . . . . . . 147
4.13.1.3 Java Code in dvgroovy Scripts . . . . . . . . . . . . . . . . . . . 148
4.13.2 Unit testing API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.13.2.1 JUnit4 Integration . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.13.2.2 Execution of Spock Tests . . . . . . . . . . . . . . . . . . . . . . 150
4.13.2.3 Registration of Unit Tests in Scripts . . . . . . . . . . . . . . . . 150
5
Data models in detail
152
5.1
MDF model - the raw AUTOSAR data
. . . . . . . . . . . . . . . . . . . . . . . 152
5.1.1
Naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
5.1.2
The models inheritance hiearchy . . . . . . . . . . . . . . . . . . . . . . . 152
5.1.2.1
MIObject and MDFObject . . . . . . . . . . . . . . . . . . . . . 152
5.1.3
The models containment tree . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.1.4
The ECUC model
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.1.5
Order of child objects
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.1.6
AUTOSAR references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
5.1.7
Model changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.1.7.1
Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.1.7.2
Undo/redo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.1.7.3
Event handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5.1.7.4
Deleting model objects
. . . . . . . . . . . . . . . . . . . . . . . 157
5.1.7.5
Access to deleted objects . . . . . . . . . . . . . . . . . . . . . . 157
5.1.7.6
Set-methods
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.1.7.7
Changing child list content . . . . . . . . . . . . . . . . . . . . . 157
5.1.7.8
Change restrictions
. . . . . . . . . . . . . . . . . . . . . . . . . 157
5.2
Post-build selectable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.2.1
Model views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.2.1.1
What model views are . . . . . . . . . . . . . . . . . . . . . . . . 158
© 2016, Vector Informatik GmbH
5 of 207


Contents
5.2.1.2
The IModelViewManager project service
. . . . . . . . . . . . . 158
5.2.1.3
Variant siblings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.2.1.4
The Invariant model views . . . . . . . . . . . . . . . . . . . . . 161
5.2.1.5
Accessing invisible objects . . . . . . . . . . . . . . . . . . . . . . 163
5.2.1.6
IViewedModelObject
. . . . . . . . . . . . . . . . . . . . . . . . 164
5.2.2
Variant specific model changes
. . . . . . . . . . . . . . . . . . . . . . . . 164
5.2.3
Variant common model changes . . . . . . . . . . . . . . . . . . . . . . . . 165
5.3
BswmdModel details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
5.3.1
BswmdModel - DefinitionModel . . . . . . . . . . . . . . . . . . . . . . . . 166
5.3.1.1
Types of DefinitionModels
. . . . . . . . . . . . . . . . . . . . . 167
5.3.1.2
DefRef Getter methods of Untyped Model . . . . . . . . . . . . . 168
5.3.1.3
References
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.3.1.4
Post-build selectable with BswmdModel . . . . . . . . . . . . . . 171
5.3.1.5
Creation ModelView of the BswmdModel . . . . . . . . . . . . . 172
5.3.1.6
Lazy Instantiating . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.3.1.7
Optional Elements . . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.3.1.8
Class and Interface Structure of the BswmdModel . . . . . . . . 173
5.3.1.9
BswmdModel write access
. . . . . . . . . . . . . . . . . . . . . 174
5.4
Model utility classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.4.1
AsrPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.4.2
AsrObjectLink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.4.2.1
Object links depend on the MDF object type . . . . . . . . . . . 177
5.4.2.2
Restrictions of object links . . . . . . . . . . . . . . . . . . . . . 178
5.4.2.3
Examples for object link strings
. . . . . . . . . . . . . . . . . . 178
5.4.3
DefRefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
5.4.3.1
TypedDefRefs
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.4.3.2
DefRef Wildcards
. . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.4.4
CeState . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
5.4.4.1
Getting a CeState object . . . . . . . . . . . . . . . . . . . . . . 181
5.4.4.2
IParameterStatePublished . . . . . . . . . . . . . . . . . . . . . . 182
5.4.4.3
IContainerStatePublished . . . . . . . . . . . . . . . . . . . . . . 183
6
AutomationInterface Content
184
6.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
6.2
Folder Structure
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
6.3
Script Development Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
6.3.1
DVCfg_AutomationInterfaceDocumentation.pdf . . . . . . . . . . . . . . 184
6.3.2
Javadoc HTML Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
6.3.3
Script Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
6.4
Libs and BuildLibs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
7
Automation Script Project
186
7.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.2
Automation Script Project Creation
. . . . . . . . . . . . . . . . . . . . . . . . . 186
7.3
Project File Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
7.4
IntelliJ IDEA Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.4.1
Supported versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.4.2
Building Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.4.3
Debugging with IntelliJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.4.4
Troubleshooting
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
7.5
Project Migration to newer DaVinci Configurator Version . . . . . . . . . . . . . 189
7.6
Debugging Script Project
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
© 2016, Vector Informatik GmbH
6 of 207


Contents
7.7
Build System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.7.1
Jar Creation and Output Location . . . . . . . . . . . . . . . . . . . . . . 190
7.7.2
Gradle File Structure
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
7.7.2.1
projectConfig.gradle File settings . . . . . . . . . . . . . . . . . . 191
7.7.3
Advanced Build Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
7.7.3.1
Gradle dvCfgAutomation API Reference
. . . . . . . . . . . . . 192
8
AutomationInterface Changes between Versions
193
8.1
Changes in MICROSAR AR4-R17 - Cfg5.14 . . . . . . . . . . . . . . . . . . . . . 193
8.1.1
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.1.2
Script Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.1.2.1
Stateful Script Tasks . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.1.3
Automation Script Project . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.1.3.1
Groovy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.1.3.2
Supported IntelliJ IDEA Version . . . . . . . . . . . . . . . . . . 193
8.1.3.3
BuildSystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
8.1.4
Converter Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.5
UserInteraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.6
Project Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.6.1
AUTOSAR Arxml Files . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.7
Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.7.1
Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
8.1.7.2
MDF Model Read and Write . . . . . . . . . . . . . . . . . . . . 195
8.1.7.3
SystemDescription Access . . . . . . . . . . . . . . . . . . . . . . 195
8.1.7.4
ActiveEcuc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.1.8
Persistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.1.9
Generation
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
8.1.10 BswmdModel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.1.10.1 Writing with BswmdModel . . . . . . . . . . . . . . . . . . . . . 196
8.1.11 BswmdModel Groovy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.1.12 Domain Diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.1.13 Domain Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.1.14 Domain Runtime System
. . . . . . . . . . . . . . . . . . . . . . . . . . . 196
8.2
Changes in MICROSAR AR4-R16 - Cfg5.13 . . . . . . . . . . . . . . . . . . . . . 197
8.2.1
General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.2.2
API Stability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
8.2.3
Beta Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
9
Appendix
198
Nomenclature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Figures
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
ToDos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
© 2016, Vector Informatik GmbH
7 of 207

1 Introduction
1.1 General
The user of the DaVinci Configurator Pro can create scripts, which will be executed inside of
the Configurator to:
• Create projects
• Update projects
• Manipulate the data model with an access to the whole AUTOSAR model
• Generate code
• Executed repetitive tasks with code, without user interaction
• More
The scripts are written by the user with the DaVinci Configurator AutomationInterface.
1.2 Facts
Installation
The DaVinci Configurator Pro can execute customer defined scripts out of the
box. No additional scripting language installation is required by the customer.
Languages
The scripts are written in Groovy or Java. See 3.2 on page 16 for details.
Debugging Support
The scripts can be debugged via IntelliJ IDEA. See 7.6 on page 190.
Documentation
The AutomationInterface provides a comprehensive documentation:
• This document
• Javadoc HTML pages as class reference
• Script samples and templates
– ScriptProject creation assistant in the DaVinci Configurator
• API documentation inside of an IDE
• Integrated Definition (BSWMD) description for all modules in the SIP
Code Completion
You have code completion for Groovy and Java for the DaVinci Configu-
rator AutomationInterface. You have to use IntelliJ IDEA for code completion.1
There is also a SIP based code completion for contained Module, Container and Parameter
definitions. This eases the traversal through the AUTOSAR model.
1See chapter 7 on page 186 for details.
© 2016, Vector Informatik GmbH
8 of 207

2 Getting started with Script Development
2.1 General
This chapter gives a short introduction of how to get started with script file or script project
creation.
Attention: You need at least one of the License Options .WF or .MD to develop scripts.
The script project creation assistant will not be available otherwise.
2.2 Automation Script Development Types
The DaVinci Configurator supports two types of automation scripts:
• Script files (.dvgroovy files)
• Script projects (.jar files)
Script File
The script file provides the simplest way to implement an automation script.
When the script gets bigger you should migrate to a script project.
To create a script file proceed with chapter 2.3.
Script Project
The script project is more effort to create and maintain, but provides IDE
support for:
• Code completion
• Syntax highlighting
• API Documentation
• Debug support
• Build support
It is the recommended way to develop scripts, containing more tasks or multiple classes.
To create a script project proceed with chapter 2.4 on page 11.
2.3 Script File
The script file is the simplest way to implement an automation script. It could be sufficient
for small tasks and if the developer does not need support by the tool during implementing the
script and if debugging is not required.
Prerequisites
Before you start, please make sure that you have a SIP containing a DaVinci
Configurator 5 available on your system.
© 2016, Vector Informatik GmbH
9 of 207





Chapter 2.
Getting started with Script Development
Creation
Inside your SIP you find examples of automation script files.
Create your own
script folder and copy an example, e.g. ...ScriptSamples/SimpleScript.dvgroovy to your
folder.
Rename the script file and open it in any text editor. In case of SimpleScript.dvgroovy
it consists of several tasks.
One of the tasks will print a "HelloApplication" string to the
console.
Figure 2.1: Script Samples location
Open the DaVinci Configurator inside your SIP. If not yet visible open the Views
• Script Locations
• Script Tasks
via the View menu.
In the Script Locations View select the location folder User@Machine. On its context menu
you can Add a script location. Select your own script folder.
Figure 2.2: Script Locations View
Alternatively you could add the script location to the Session folder. In this case the script
location would only be stored in the current session.
Switch to the Script Tasks View. It provides an overview over the tasks contained in your
script.
Figure 2.3: Script Tasks View
© 2016, Vector Informatik GmbH
10 of 207



Chapter 2.
Getting started with Script Development
Execute the SimpleAppTask by double-click or by the Execute Command contained in its
context menu or by the Execute Button of the Task View and check that "HelloApplication" is
printed in the console.
You can modify the implementation according to your needs. For the AutomationInterface
API Reference see chapter 4 on page 22. It is sufficient to edit and save the modifications in
your editor. The file is automatically reloaded by the DaVinci Configurator then and can be
executed immediately.
Debugging
It is not possible to debug a script file, if you want to debug, please migrate to a
script project, see chapter 2.4.
2.4 Script Project
The script project is the preferred way to develop an automation script, if the content is more
than one simple task.
A script project is a normal IDE project (IntelliJ IDEA recommended), with compile bindings
to the DaVinci Configurator AutomationInterface.
The DaVinci Configurator will load a script project as a single .jar file. So the script project
must be built and packaged into a .jar file before it can be executed.
Prerequisites
Before you start, please make sure that the following items are available on
your system:
• SIP containing a DaVinci Configurator 5
• Java JDK: For the development with the IntelliJ IDEA a "Java SE Development Kit 8"
(JDK 8) is required. Please install the JDK 8 as described in chapter 2.4.2 on page 13.
• IDE: For the script project development the recommended IDE is IntelliJ IDEA. Please
install IntelliJ IDEA as described in chapter 2.4.3 on page 14.
• Build system: To build the script project the build system Gradle is required. See
chapter 2.4.4 on page 14 for installation instructions.
Project Creation
Open the DaVinci Configurator inside your SIP. If not yet visible open the
following Views via the View menu:
• Script Locations
• Script Tasks
Switch to the View Script Tasks and select the Button Create New Script Project....
Figure 2.4: Create New Script Project... Button
Note: If the button is not available, please make sure you have least one of the License
Options .WF or .MD 
to develop scripts.
© 2016, Vector Informatik GmbH
11 of 207



Chapter 2.
Getting started with Script Development
The New Automation Script Project dialogs is opened. Click Next because you are reading
the document.
On the second page first you have to select a Script template on which the new project shall be
based on. Please select Default Automation Project and click Next.
On the third page Project Settings, please specify the following items:
• Script Project Name
– Define a name for your new project.
• Project Location
– Select a parent folder in which your project shall be created in.
Note: A new folder with the project name is created in this folder.
• Gradle Distribution URL
– Select one option:
∗ Gradle Default
· This will download the required Gradle build system. To use this option you
need internet access.
∗ Custom URL
· Specify an URL to your own Gradle distribution.
New settings are displayed to specify the path. To setup your own Gradle
build system see 2.4.4 on page 14.
• Open IntelliJ IDEA
– Select this option if the project shall automatically be opened in IntelliJ IDEA after
creation. In case IntelliJ IDEA is not installed on your system a warning will be
issued.
Figure 2.5: Project Settings
Proceed until the dialog is finished.
© 2016, Vector Informatik GmbH
12 of 207



Chapter 2.
Getting started with Script Development
A new project will be created. Necessary tasks as setting up the IntelliJ IDEA and building the
project are automatically initiated. At the end IntelliJ IDEA will be started with the created
project.
You can now modify the implementation according to your needs. For the AutomationInterface
API Reference see chapter 4 on page 22. To edit and rebuild the project use IntelliJ IDEA.
After each build the project is automatically reloaded by the DaVinci Configurator and can be
executed there.
IntelliJ IDEA Usage
Ensure that the Gradle JVM and the Project SDK are set in the IntelliJ
IDEA Settings. For details see 2.4.3 on the following page.
Having modified and saved MyScript.groovy in the IntelliJ IDEA editor you can build the
project by pressing the Run Button provided in the toolbar. The functionality of this Run
Button is determined by the option selected in the Menu beneath this button. In this menu
<ProjectName> [build] shall be selected.
Figure 2.6: Project Build
For more information to IntelliJ IDEA usage please see chapter 7.4 on page 187. If you have
trouble with IntelliJ, see 7.4.4 on page 189.
Debugging
To debug the script project follow the instructions in chapter 7.6 on page 190.
DaVinci Configurator views
The View Script Tasks provides an overview over the scripts
and tasks contained in the project. The newly created project already contains a sample script
file MyScript.groovy.
The Default Automation Project sample script file contains one task that prints a "Hel-
loApplication" string to the console. Run and check it as already described in 2.3 on page 9.
If you have selected a different Script Sample the MyScript.groovy will contain the sample
code.
The View Script Locations contains the path to the script project build folder containing the
built .jar file.
2.4.1 Script Project Development
For more details to the development of a script project see chapter 7 on page 186.
2.4.2 Java JDK Setup
Install a JDK 8 on your system. The Java JDK website provides download versions for different
systems. Download an appropriate version.
The architecture is not relevant, both x86 and x64 are valid.
The JDK is needed for the Java Compiler for IntelliJ IDEA and Gradle.
© 2016, Vector Informatik GmbH
13 of 207




Chapter 2.
Getting started with Script Development
2.4.3 IntelliJ IDEA Setup
Install IntelliJ IDEA on your system. The IntelliJ IDEA website provides download versions
for different applications. Download a version that supports Java and Groovy and that is in
the list of supported versions (see list 7.4.1 on page 187).
Code completion and compilation additionally require that the Project SDK is set. Therefore
open the File -> Project Structure Dialog in IntelliJ IDEA and switch to the settings dialog
for Project. If not already available set an appropriate option for the Project SDK. Please
set the value to a valid Java JDK ( see 2.4.2 on the previous page). Do not select a JRE.
Figure 2.7: Project SDK Setting
To enable building of projects ensure that the Gradle JVM is set. Therefore open the File
-> Settings Dialog in IntelliJ IDEA and find the settings dialog for Gradle. If not already
available set an appropriate option for the Gradle JVM. Please set the value to the same Java
JDK as the Project SDK above. Do not select a JRE.
If you do not have the Gradle settings, please make sure that the Gradle plugin inside of
IntelliJ IDEA is installed. Open the File -> Settings Dialog then Plugins and select the
Gradle plugin.
Figure 2.8: Gradle JVM Setting
2.4.4 Gradle Setup
If your system has internet access you can use the default Gradle Build System provided by
the DaVinci Configurator. In this case you do not have to install Gradle. If you are a Vector
internal user you could also skip the Gradle installation.
If you want to use your own Gradle Build System install it on your system. The Gradle website
provides the required download version for the Gradle Build System. Please download the
version 3.0
. See chapter 7.7 on page 190 for more details to the Build System.
© 2016, Vector Informatik GmbH
14 of 207


3 AutomationInterface Architecture
3.1 Components
The DaVinci Configurator consists of three components:
• Core components
• AutomationInterface (AI) - also called Automation API
• Scripting engine
The other part is the script provided by the user.
The Scripting engine will load the script, and the script uses the AutomationInterface to perform
tasks. The AutomationInterface will translate the requests from the script into Core components
calls.
Figure 3.1: DaVinci Configurator components and interaction with scripts
The separation of the AutomationInterface and the Core components has multiple benefits:
• Stable API for script writters
– Including checks, that the API will not break in following releases
• Well defined and documented API
• Abstraction from the internal heavy lifting
– This ease the usage for the user, because the automation interfaces are tailored to
the use cases.
PublishedApi
All AutomationInterface classes are marked with a special annotation to high-
light the fact that it is part of the published API. The annotation is called @PublishedApi.
So every class marked with @PublishedApi can be used by the client code. But if a class is
not marked with @PublishedApi or is marked with @Deprecated it should not be used by any
client code, nor shall a client call methods via reflection or other runtime techniques.
© 2016, Vector Informatik GmbH
15 of 207


Chapter 3.
AutomationInterface Architecture
You should not access DaVinci Configurator private or package private classes, methods or
fields.
3.2 Languages
The DaVinci Configurator provides out of the box language support for:
• Java1
• Groovy2
The recommended scripting language is Groovy which shall be preferred by all users.
3.2.1 Why Groovy
Flat Learning Curve
Groovy is concise, readable with an expressive syntax and is easy to
learn for Java developers3.
• Groovy syntax is 95%-compatible with Java4
• Any Java developer will be able to code in Groovy without having to know nor understand
the subtleties of this language
This is very important for teams where there’s not much time for learning a new language.
Domain-Specific Languages (DSL)
Groovy has a flexible and malleable syntax, advanced
integration and customization mechanisms, to integrate readable business rules in your appli-
cations.
The DSL features of Groovy are extensively used in DaVinci Automation API to provide simple
and expressive syntax.
Powerful Features
Groovy supports Closures, builders, runtime & compile-time meta-programming,
functional programming, type inference, and static compilation.
Website
The website of Groovy is http://groovy-lang.org. It provides a good documentation
and starting guides for the Groovy language.
Groovy Book
The book "Groovy in Action, Second Edition"provides a comprehensive
guide to Groovy programming language. It is written by the developers of Groovy.
1http://http://www.java.com [2016-05-09]
2http://groovy-lang.org [2016-05-09]
3Copied from http://groovy-lang.org [2016-05-09]
4Copied from http://melix.github.io/blog/2010/07/27/experience_feedback_on_groovy.html [2016-05-09]
5Groovy in Action, Second Edition by Dierk König, Paul King, Guillaume Laforge, Hamlet D’Arcy, Cédric
Champeau, Erik Pragt, and Jon Skeet June 2015 ISBN 9781935182443
https://www.manning.com/books/groovy-in-action-second-edition [2016-05-09]
© 2016, Vector Informatik GmbH
16 of 207



Chapter 3.
AutomationInterface Architecture
3.3 Script Structure
A script always contains one or more script tasks. A script is represented by an instance of
IScript, the contained tasks are instances of IScriptTask.
Figure 3.2: Structure of scripts and script tasks
You create the IScript and IScriptTask instance with the API described in chapter 4.2 on
page 23.

The script task type (IScriptTaskType) defines where the task could be executed. It also
defines the signature of the task’s code {} block. See chapter 4.3 on page 27 for the available
script task types.
3.3.1 Scripts
Script contain the tasks to execute and are loaded from the script locations specified in the
DaVinci Configurator.
The DaVinci Configurator supports two types of automation scripts:
• Script files (.dvgroovy files)
• Script projects (.jar files)
For details to the script project, see chapter 7 on page 186.
© 2016, Vector Informatik GmbH
17 of 207


Chapter 3.
AutomationInterface Architecture
3.3.2 Script Tasks
Script tasks are the executable units of scripts, which are executed at certain points in the
DaVinci Configurator (specified by the IScriptTaskType). Every script task has a code {}
block, which contains the logic to execute.
3.3.3 Script Locations
Script locations define where script files are loaded from. These locations are edited in the
DaVinci Configurator Script Locations view. You can also start the Configurator with the
option –scriptLocations to specify additional locations.
The DaVinci Configurator could load scripts from different script locations:
• SIP
• Project
• User-defined directories
• More
3.4 Script loading
All scripts contained in the script locations are automatically loaded by the DaVinci Configu-
rator. If new scripts are added to script locations these scripts are automatically loaded.
If a script changes during runtime of the DaVinci Configurator the whole script is reloaded and
then executable, without a restart of the tool or a reload of the project.
This enables script development during the runtime of the DaVinci Configurator
• No project reload
• No tool restart
• Faster feedback loops
Note: A jar file of a script project should be updated by the Gradle build system, not by hand.
Because the Java VM is holding a lock to the file. If you try to replace the file in the explorer
you will get an error message.
3.4.1 Internal Script Reload Behavior
Your script can be loaded and unloaded automatically multiple times during the execution of
the DaVinci Configurator. More precise, when a script is currently not used and there are
memory constraints your script will be automatically unloaded.
If the script will be executed again, it is automatically reloaded and then executed. So it is
possible that the script initialization code is called multiple times in the DaVinci Configurator
lifecycle. But this is no issue, because the script and the tasks shall not have any internal
state during initialization.
© 2016, Vector Informatik GmbH
18 of 207


Chapter 3.
AutomationInterface Architecture
Memory Leak Prevention
The feature above is implemented to prevent leaking memory from
an automation script into the DaVinci Configurator memory. So when the memory run low, all
unused scripts are unloaded, which will also free leaked memory of scripts.
But this does not mean that is impossible to construct memory leaks from an automation
script. E.g. Open file handles without closing them will still cause a memory leak.
3.5 Script editing
The DaVinci Configurator does not contain any editing support for scripts, like:
• Script editor
• Debugger
• REPL (Read-Eval-Print-Loop)
These tasks are delegated to other development tools:
• IntelliJ IDEA (recommended)
• EclipseIDE
• Notepad++
See chapter 7 on page 186 for script development and debugging with IntelliJ IDEA.
3.6 Licensing
The DaVinci Configurator requires certain license options to develop and/or execute script
tasks.
The required license options differ between development and execution time. Normally you
need more license options to develop scripts than you need to execute them.
The default license options are:
• .PRO option for execution
• .WF option for development and debugging
The license option .MD includes the option .WF for automation scripts. So you can also use
.MD as replacement of .WF.
Some script task may require different options during development or execution. It is also
possible that the execution does not require any license option. See chapter 4.3 on page 27 for
details, which script task type requires which license.
3.7 Script Coding Conventions and Constraints
This section describes conventions, which you are advised to apply.
© 2016, Vector Informatik GmbH
19 of 207


Chapter 3.
AutomationInterface Architecture
Requirement Levels - Wording
• Shall: This word, or the terms "Mandatory", "Required" or "Must", mean that the rule or
convention is an absolute requirement.
• Shall not: This word, or the terms "Must not" mean that the rule or convention is an
absolute prohibition.
• Should: This word, or the adjective "Recommended", mean that there may exist valid
reasons in particular circumstances to ignore a particular item, but the full implications
must be understood and carefully weighed before choosing a different course.
• Should not: This phrase, or the phrase "Not recommended" mean that there may exist
valid reasons in particular circumstances when the particular behavior is acceptable or
even useful, but the full implications should be understood and the case carefully weighed
before implementing any behavior described with this label.
• May: This word, or the adjective "Optional", mean that an item is truly optional.
See also "RFC 2119: Key words for use in RFCs to Indicate Requirement Levels"6.
3.7.1 Usage of static fields
You shall not use any static fields in your script code or other written classes inside of your
project. Except static final constants of simple immutable types like (normally compile time
constants):
• int
• boolean
• double
• String
• ...
Static fields will cause memory leaks, because the fields are not garbage collected. Exam-
ple:
scriptTask("Name"){
code{
MyClass.leakVariable.add("Leaked Memory")
}
}
class MyClass{
static List leakVariable = []
}
Listing 3.1: Static field memory leak
The use of static fields of the AutomationInterface is allowed.
6https://www.ietf.org/rfc/rfc2119.txt
© 2016, Vector Informatik GmbH
20 of 207


Chapter 3.
AutomationInterface Architecture
3.7.2 Usage of Outer Closure Scope Variables
The same static field rule applies to variables passed from outer Closure scopes into a script
task code{} block. You shall not cache/save data into such variables.
Example:
scriptTask("Name"){
def invalidVariable = [] //List
code{
invalidVariable.add("Leaked Memory")
}
}
Listing 3.2: Memory leak with closure variable
3.7.3 States over script task execution
You shall not hold or save any states over multiple script task executions in your classes.
The script task should be state less. All states are provided by the Automation API or the data
models.
If you need to cache data over multiple executions, see chapter 4.4.10 on page 47 for a solu-
tion.
3.7.4 Usage of Threads
A script task shall not create any Thread, Executor, ThreadPool or ForkJoinPool in-
stances. If multithreading is required, the Automation API provides the corresponding meth-
ods.
A different thread will not provide any Automation APIs and will cause IllegalStateExcep-
tions.
3.7.5 Usage of DaVinci Configurator private Classes Methods or Fields
A script task should not call or rely on any non published API or private (also package private)
classes, methods or fields. You also should not use any reflection techniques to reflect about
Configurator internal APIs. Otherwise it is not guaranteed that your script will work with other
DaVinci Configurator versions. See 3.1 on page 15 for details about PublishedApi.
But it is valid to use reflection for your own script code.
© 2016, Vector Informatik GmbH
21 of 207


4 AutomationInterface API Reference
4.1 Introduction
This chapter contains the description of the DaVinci Configurator AutomationInterface. The
figure 4.1 shows the APIs and the containment structure of the different APIs.
Figure 4.1: The API overview and containment structure
The components have an hierarchical order, where and when the components are usable. When a
component is contained in another the component is only usable, when the other is active.
© 2016, Vector Informatik GmbH
22 of 207


Chapter 4.
AutomationInterface API Reference
Usage examples:
• The Generation API is only usable inside of a loaded Project
• The Workflow Update API is only usable outside of a loaded Project
4.2 Script Creation
This section lists the APIs to create, execute and query information for script tasks. The
sections document the following aspects:
• Script task creation
• Description and help texts
• Task executable query
4.2.1 Script Task Creation
To create a script task you have to call one of the scriptTask() methods. The last parameter
of the scriptTask methods can be used to set additional options of the task. Every script task
needs one IScriptTaskType. See chapter 4.3 on page 27 for all available task types.
The code{ } block is required for every IScriptTask. The block contains the code, which is
executed when the task is executed.
Script Task with default Type
The method scriptTask() will create an script task for the
default IScriptTaskType DV_PROJECT.
scriptTask("TaskName"){
code{
// Task execution code here
}
}
Listing 4.1: Task creation with default type
Script Task with Task Type
You could also define the used IScriptTaskType at the script-
Task() methods.
The methods
• scriptTask(String, IApplicationScriptTaskType, Closure)
• scriptTask(String, IProjectScriptTaskType, Closure)
will create an script task for passed IScriptTaskType. The two methods differentiate, if a
project is required or not. See chapter for all available task types 4.3 on page 27
© 2016, Vector Informatik GmbH
23 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName", DV_APPLICATION){
code{
// Task execution code here
}
}
Listing 4.2: Task creation with TaskType Application
scriptTask("TaskName", DV_PROJECT){
code{
// Task execution code here
}
}
Listing 4.3: Task creation with TaskType Project
Multiple Tasks in one Script
It is also possible to define multiple tasks in one script.
scriptTask("TaskName"){
code{ }
}
scriptTask("SecondTask"){
code{ }
}
Listing 4.4: Define two tasks is one script
4.2.1.1 Script Creation with IDE Code Completion Support
The IDE could not know which API is available inside of a script file. So a glue code is needed
to tell the IDE, what API is callable inside of a script file.
The ScriptApi.daVinci() method enables the IDE code completion support in a script file.
You have to write the daVinci{ } block and inside of the block the code completion is available.
The following sample shows the glue code for the IDE:
import static com.vector.cfg.automation.api.ScriptApi.*
//daVinci enables the IDE code completion support
daVinci{
// Normal script code here
scriptTask("TaskName"){
code{// Script task execution code here
}
}
}
Listing 4.5: Script creation with IDE support
The daVinci{} block is only required for code completion support in the IDE. It has no effect
during runtime, so the daVinci{} is optional in script files (.dvgroovy)
© 2016, Vector Informatik GmbH
24 of 207


Chapter 4.
AutomationInterface API Reference
4.2.1.2 Script Task isExecutableIf
You can set an isExecutableIf handler, which is called before the IScriptTask is executed.
The code can evaluate, if the IScriptTask shall be executable. If the handler returns true, the
code of the IScriptTask is executable, otherwise false. See class IExecutableTaskEvaluator
for details.
The Closure isExecutable has to return a boolean. The passed arguments to the closure are
the same as the code{ } block arguments.
Inside of the Closure a property notExecutableReasons is available to set reasons why it is not
executable. It is highly recommended to set reasons, when the Closure returns false.
scriptTask("TaskName"){
isExecutableIf{ taskArgument ->
// Decide, if the task shall be executable
if(taskArgument == "CorrectArgument"){
return true
}
notExecutableReasons.addReason "The argument is not 'CorrectArgument'"
return false
}
code{ taskArgument ->
// Task execution code here
}
}
Listing 4.6: Task with isExecutableIf
4.2.2 Description and Help
Script Description
The script can have an optional description text. The description shall
list what this script contains. The method scriptDescription(String) sets the description
of the script.
The description shall be a short overview. The String can be multiline.
// You can set a description for the whole script
scriptDescription "The Script has a description"
scriptTask("Task"){
code{}
}
Listing 4.7: Script with description
Task Description
A script task can have an optional description text. The description shall
help the user of the script task to understand what the task does. The method taskDescrip-
tion(String) sets the description of the script task.
The description shall be a short overview. The String can be multiline.
© 2016, Vector Informatik GmbH
25 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName"){
taskDescription "The description of the task"
code{ }
}
Listing 4.8: Task with description
Task Help
A script task can also have an optional help text. The help text shall describe in
detail what the task does and when it could be executed. The method taskHelp(String) sets
the help of the script task.
The help shall be elaborate text about what the task does and how to use it. The String can
be multiline.
The help text is automatically expanded with the help for user defined script task arguments,
see IScriptTaskBuilder.newUserDefinedArgument(String, Class, String).
scriptTask("TaskName"){
taskDescription "The short description of the task"
taskHelp """
The long help text
of the script with multiple lines
And paragraphs ...
""".stripIndent()
// stripIndent() will strip the indentation of multiline strings
// The three """ are needed, if you want to write a multiline string
code{ }
}
Listing 4.9: Task with description and help text
© 2016, Vector Informatik GmbH
26 of 207



Chapter 4.
AutomationInterface API Reference
4.3 Script Task Types
The IScriptTaskType instances define where a script task is executed in the DaVinci Configu-
rator. The types also define the arguments passed to the script task execution and what return
type an execution has.
Every script task needs an IScriptTaskType. The type is set during creation of the script
tasks.
License Options
For the common explanation of the required license options, see chapter 3.6
on page 19.
Interfaces
All task types implement the interface IScriptTaskType. The following figure
show the type and the defined sub types:
Figure 4.2: IScriptTaskType interfaces
4.3.1 Available Types
The class IScriptTaskTypeApi defines all available IScriptTaskTypes in the DaVinci Config-
urator. All task types start with the prefix DV_.
None at parameters and return types mean, that any arguments could be passed and return to
or from the task. Normally it will be nothing. The arguments are used, when the task is called
in unit tests for example.
4.3.1.1 Application Types
Application
The type DV_APPLICATION is for application wide script tasks. A task could
create/open/close/update projects. Use this type, if you need full control over the project
handling, or you want to handle multiple project at once.
© 2016, Vector Informatik GmbH
27 of 207


Chapter 4.
AutomationInterface API Reference
Name
Application
Code identifier
DV_APPLICATION
Task type interface
IApplicationScriptTaskType
Parameters
None
Return type
None
Execution
Standalone
Required license option
Development: .WF Execution: .PRO
4.3.1.2 Project Types
Project
The type DV_PROJECT is for project script tasks. A task could access the currently
loaded project. Manipulate the data, generate and save the project. This is the default type, if
no other type is specified.
Name
Project
Code identifier
DV_PROJECT
Task type interface
IProjectScriptTaskType
Parameters
None
Return type
None
Execution
Standalone
Required license option
Development: .WF Execution: .PRO
Module activation
The type DV_ON_MODULE_ACTIVATION allows the script to hook any Mod-
ule Activation in a loaded project. Every DV_ON_MODULE_ACTIVATION task is automatically
executed, when an "Activate Module" operation is executed. The script task is called after the
module was created.
Name
Module activation
Code identifier
DV_ON_MODULE_ACTIVATION
Task type interface
IProjectScriptTaskType
Parameters
MIModuleConfiguration moduleConfiguration
Return type
Void
Execution
Automatically during module activation
Required license option
Development: .WF Execution: .PRO
Module deactivation
The type DV_ON_MODULE_DEACTIVATION allows the script to hook any
Module Deactivation in a loaded project. Every DV_ON_MODULE_DEACTIVATION task is automat-
ically executed, when an "Deactivate Module" operation is executed. The script task is called
before the module is deleted.
Name
Module deactivation
Code identifier
DV_ON_MODULE_DEACTIVATION
Task type interface
IProjectScriptTaskType
Parameters
MIModuleConfiguration moduleConfiguration
Return type
Void
Execution
Automatically during module deactivation
Required license option
Development: .WF Execution: .PRO
© 2016, Vector Informatik GmbH
28 of 207


Chapter 4.
AutomationInterface API Reference
4.3.1.3 UI Types
Editor selection
The type DV_EDITOR_SELECTION allows the script task to access the currently
selected element of an editor. The task is executed in context of the selection and is not callable
by the user without an active selection.
Name
Editor selection
Code identifier
DV_EDITOR_SELECTION
Task type interface
IProjectScriptTaskType
Parameters
MIObject selectedElement
Return type
Void
Execution
In context menu of an editor selection
Required license option
Development: .WF Execution: .PRO
Editor multiple selections
The type DV_EDITOR_MULTI_SELECTION allows the script task to
access the currently selected elements of an editor. The task is executed in context of the
selection and is not callable by the user without an active selection. The type is also usable
when the DV_EDITOR_SELECTION apply.
Name
Editor multiple selections
Code identifier
DV_EDITOR_MULTI_SELECTION
Task type interface
IProjectScriptTaskType
Parameters
List<MIObject> selectedElements
Return type
Void
Execution
In context menu of an editor selection
Required license option
Development: .WF Execution: .PRO
4.3.1.4 Generation Types
Generation Step
The type DV_GENERATION_STEP defines that the script task is executable as
a GenerationStep during generation. The user has to explicitly create an GenerationStep in the
Project Settings Editor, which references the script task.
Name
Generation Step
Code identifier
DV_GENERATION_STEP
Task type interface
IProjectScriptTaskType
Parameters
EGenerationPhaseType phase
EGenerationProcessType processType
IValidationResultSink resultSink
Return type
Void
Execution
Selected as GenerationStep in GenerationProcess
Required license option
Development: .MD Execution: None
See chapter 4.7.2 on page 98 for usage samples.
Custom Workflow Step
The type DV_CUSTOM_WORKFLOW_STEP defines that the script task
is executable as a CustomWorkflow step in the CustomWorkflow process. The user has to
explicitly create an CustomWorkflow step in the Project Settings Editor, which references the
script task.
© 2016, Vector Informatik GmbH
29 of 207


Chapter 4.
AutomationInterface API Reference
Name
Custom Workflow Step
Code identifier
DV_CUSTOM_WORKFLOW_STEP
Task type interface
IProjectScriptTaskType
Parameters
None
Return type
Void
Execution
Selected as Custom Workflow Step in the Project Settings Editor
Required license option
Development: .WF Execution: .PRO
See chapter 4.7.2 on page 98 for usage samples.
Generation Process Start
The type DV_ON_GENERATION_START defines that the script task is
automatically executed when the generation is started.
Name
Generation Process Start
Task type interface
IProjectScriptTaskType
Code identifier
DV_ON_GENERATION_START
Parameters
List<EGenerationPhaseType> generationPhases
List<IGenerator> executedGenerators
Return type
Void
Execution
Automatically before GenerationProcess
Required license option
Development: .MD Execution: None
See chapter 4.7.2 on page 98 for usage samples.
Generation Process End
The type DV_ON_GENERATION_END defines that the script task is
automatically executed when the generation has finished.
Name
Generation Process End
Code identifier
DV_ON_GENERATION_END
Task type interface
IProjectScriptTaskType
Parameters
EGenerationProcessResult processResult
List<IGenerator> executedGenerators
Return type
Void
Execution
Automatically after GenerationProcess
Required license option
Development: .MD Execution: None
See chapter 4.7.2 on page 98 for usage samples.
© 2016, Vector Informatik GmbH
30 of 207


Chapter 4.
AutomationInterface API Reference
4.4 Script Task Execution
This section lists the APIs to execute and query information for script tasks. The sections
document the following aspects:
• Script task execution
• Logging API
• Path resolution
• Error handling
• User defined classes and methods
• User defined script task arguments
4.4.1 Execution Context
Every IScriptTask could be be executed, and retrieve passed arguments and other context
information. This execution information of a script task is tracked by the IScriptExecution-
Context.
The IScriptExecutionContext holds the context of the execution:
• The script task arguments
• The current running script task
• The current active script logger
• The active project, if existing
• The script temp folder
• The script task user defined arguments
The IScriptExecutionContext is also the entry point into every automation API, and pro-
vide access to the different API classes. The classes are describes in their own chapters like
IProjectHandlingApiEntryPoint or IWorkflowApiEntryPoint.
The context is immediately active, when the code block of an IScriptTask is called.
Groovy Code
The client sample illustrates the seamless usage of the IScriptExecutionCon-
text class in Groovy:
scriptTask("taskName", DV_APPLICATION){
code{ // The IScriptExecutionContext is automatically active here
// Call methods of the IScriptExecutionContext
def logger = scriptLogger
def temp = paths.tempFolder
// Use an automation API
workflow{
// Now the Workflow API is active
}
}
}
Listing 4.10: Access automation API in Groovy clients by the IScriptExecutionContext
© 2016, Vector Informatik GmbH
31 of 207


Chapter 4.
AutomationInterface API Reference
In Groovy the IScriptExecutionContext is automatically activated inside of the code{}
block.
Java Code
For java clients the method IScriptExecutionContext.getInstance(Class)
provides access to the API classes, which are seamlessly available for the groovy clients:
// Java code
// Passed from the script task:
IScriptExecutionContext scriptContext = ...;
// Retrieve automation API in Java
IWorkflowApi workflow = scriptContext.getInstance(IWorkflowApiEntryPoint.class).getWorkflow();
IWorkflowContext workflowCtx = workflow.getWorkflow();
// In groovy code it would be:
workflow{
}
Listing 4.11: Access to automation API in Java clients by the IScriptExecutionContext
In Java code the context is always the first parameter passed to every task code (see IScript-
TaskCode).
4.4.1.1 Code Block Arguments
The code block can have arguments passed into the script task execution. The arguments passed
into the code{ } block are defined by the IScriptTaskType of the script task. See chapter 4.3
on page 27 
for the list of arguments (including types) passed by each individual task type.
scriptTask("Task"){
code{ arg1, arg2, ... -> // arguments here defined by the IScriptTaskType
}
}
scriptTask("Task2"){
// Or you could specify the type of the arguments for code completion
code{ String arg1, List<Double> arg2 ->
}
}
Listing 4.12: Script task code block arguments
The arguments can also retrieved with IScriptExecutionContext.getScriptTaskArguments().
4.4.2 Task Execution Sequence
The figure 4.3 on the next page shows the overview sequence when a script task gets executed
by the user and the interaction with the IScriptExecutionContext. Note that the context
gets created each time the task is executed.
© 2016, Vector Informatik GmbH
32 of 207



Chapter 4.
AutomationInterface API Reference
Figure 4.3: Script Task Execution Sequence
4.4.3 Script Path API during Execution
Script tasks could resolve relative and absolute file system paths with the IAutomationPath-
sApi.
As entry point call paths in a code{ } block (see IScriptExecutionContext.getPaths()).
There are multiple ways to resolve relative paths:
• by Script folder
• by Temp folder
• by SIP folder
• by Project folder
• by any parent folder
© 2016, Vector Informatik GmbH
33 of 207


Chapter 4.
AutomationInterface API Reference
4.4.3.1 Path Resolution by Parent Folder
The resolvePath(Path parent, Object path) method resolves a file path relative to supplied
parent folder.
This method converts the supplied path based on its type:
• A CharSequence, including String or GString. Interpreted relative to the parent direc-
tory. A string that starts with file: is treated as a file URL.
• A File: If the file is an absolute file, it is returned as is. Otherwise, the file’s path is
interpreted relative to the parent directory.
• A Path: If the path is an absolute path, it is returned as is. Otherwise, the path is
interpreted relative to the parent directory.
• A URI or URL: The URL’s path is interpreted as the file path. Currently, only file: URLs
are supported.
• A IHasURI: The returned URI is interpreted as defined above.
• A Closure: The closure’s return value is resolved recursively.
• A Callable: The callable’s return value is resolved recursively.
• A Supplier: The supplier’s return value is resolved recursively.
• A Provider: The provider’s return value is resolved recursively.
The return type is java.nio.file.Path.
scriptTask("TaskName"){
code{
// Method resolvePath(Path, Object) resolves a path relative to the supplied folder
Path parentFolder = Paths.get('.')
Path p = paths.resolvePath(parentFolder, "MyFile.txt")
/* The resolvePath(Path, Object) method will resolve
* relative and absolute paths to a java.nio.file.Path object.
*/
}
}
Listing 4.13: Resolves a path with the resolvePath() method
4.4.3.2 Path Resolution
The resolvePath(Object) method resolves the Object to a file path. Relative paths are
preserved, so relative paths are not converted into absolute paths.
This method converts the supplied path same as the resolvePath(Path, Object) method.
The return type is java.nio.file.Path. See 4.4.3.1. But it does NOT convert relative paths
into absolute.
© 2016, Vector Informatik GmbH
34 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName"){
code{
// Method resolvePath() resolves a path and preserve relative paths
Path p = paths.resolvePath("MyFile.txt")
/* The resolvePath() method will resolve
* relative and absolute paths to a java.nio.file.Path object.
* Is also preserves relative paths.
*/
}
}
Listing 4.14: Resolves a path with the resolvePath() method
4.4.3.3 Script Folder Path Resolution
The resolveScriptPath(Object) method resolves a file path relative to the script directory
of the executed IScript.
This method converts the supplied path same as the resolvePath(Path, Object) method.
The return type is java.nio.file.Path. See 4.4.3.1 on the previous page.
scriptTask("TaskName"){
code{
// Method resolveScriptPath() resolves a path relative to the script folder
Path p = paths.resolveScriptPath("MyFile.txt")
/* The resolveScriptPath() method will resolve
* relative and absolute paths to a java.nio.file.Path object.
*/
}
}
Listing 4.15: Resolves a path with the resolveScriptPath() method
4.4.3.4 Project Folder Path Resolution
The resolveProjectPath(Object) method resolves a file path relative to the project directory
(see getDpaProjectFolder()) of the current active project.
This method converts the supplied path same as the resolvePath(Path, Object) method.
The return type is java.nio.file.Path. See 4.4.3.1 on the preceding page.
There must be an active project to use this method. See chapter 4.5.2 on page 49 for details
about active projects.
© 2016, Vector Informatik GmbH
35 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName"){
code{
// Method resolveProjectPath() resolves a path relative active project folder
Path p = paths.resolveProjectPath("MyFile.txt")
/* The resolveProjectPath() method will resolve
* relative and absolute paths to a java.nio.file.Path object.
*/
}
}
Listing 4.16: Resolves a path with the resolveProjectPath() method
4.4.3.5 SIP Folder Path Resolution
The resolveSipPath(Object) method resolves a file path relative to the SIP directory (see
getSipRootFolder()).
This method converts the supplied path same as the resolvePath(Path, Object) method.
The return type is java.nio.file.Path. See 4.4.3.1 on page 34.
scriptTask("TaskName"){
code{
// Method resolveSipPath() resolves a path relative SIP folder
Path p = paths.resolveSipPath("MyFile.txt")
/* The resolveSipPath() method will resolve
* relative and absolute paths to a java.nio.file.Path object.
*/
}
}
Listing 4.17: Resolves a path with the resolveSipPath() method
4.4.3.6 Temp Folder Path Resolution
The resolveTempPath(Object) method resolves a file path relative to the script temp di-
rectory of the executed IScript. A new temporary folder is created for each IScriptTask
execution.
This method converts the supplied path same as the resolvePath(Path, Object) method.
The return type is java.nio.file.Path. See 4.4.3.1 on page 34.
scriptTask("TaskName"){
code{
// Method resolveTempPath() resolves a path relative to the temp folder
Path p = paths.resolveTempPath("MyFile.txt")
/* The resolveTempPath() method will resolve
* relative and absolute paths to a java.nio.file.Path object.
*/
}
}
Listing 4.18: Resolves a path with the resolveTempPath() method
© 2016, Vector Informatik GmbH
36 of 207


Chapter 4.
AutomationInterface API Reference
4.4.3.7 Other Project and Application Paths
The IAutomationPathsApi will also resolve any other Vector provided path variable like $(Ecuc-
File). The call would be paths.ecucFile, add the variable to resolve as a Groovy prop-
erty.
Short list of available variables (not complete, please see DaVinci Configurator help for more
details):
• EcucFile
• OutputFolder
• SystemFolder
• AutosarFolder
• more ...
scriptTask("TaskName", DV_PROJECT){
code{
// The property OutputFolder is the folder of the generated artifacts
Path folder = paths.outputFolder
}
}
Listing 4.19: Get the project output folder path
scriptTask("TaskName"){
code{
// The property sipRootFolder is the folder of the used SIP
Path folder = paths.sipRootFolder
}
}
Listing 4.20: Get the SIP folder path
4.4.4 Script logging API
The script task execution (IScriptExecutionContext) provides a script logger to log events
during an execution. The method getScriptLogger() returns the logger. The logger can be
used to log:
• Errors
• Warnings
• Debug messages
• More...
You shall always prefer the usage of the logger before using the println() of stdout or
stderr.
In any code block without direct access to the script API, you can write the following code to
access the logger: ScriptApi.scriptLogger
© 2016, Vector Informatik GmbH
37 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName"){
code{
// Use the scriptLogger to log messages
scriptLogger.info "My script is running"
scriptLogger.warn "My Warning"
scriptLogger.error "My Error"
scriptLogger.debug "My debug message"
scriptLogger.trace "My trace message"
// Also log an Exception as second argument
scriptLogger.error("My Error", new RuntimeException("MyException"))
}
}
Listing 4.21: Usage of the script logger
The ILogger also provides a formatting syntax for the format String. The syntax is {IndexNum-
ber} and the index of arguments after the format String.
It is also possible to use the Groovy GString syntax for formatting.
scriptTask("TaskName"){
code{ argument ->
// Use the format methods to insert data
scriptLogger.infoFormat("My script {0} with:{1}", scriptTask, argument)
}
}
Listing 4.22: Usage of the script logger with message formatting
scriptTask("TaskName"){
code{ argument ->
// Use the Groovy GString syntax to insert data
scriptLogger.info "My script $scriptTask with: $argument"
}
}
Listing 4.23: Usage of the script logger with Groovy GString message formatting
4.4.5 User Interactions and Inputs
The UserInteraction and UserInput API provides methods to directly communicate with the
user, via MessageBoxes or Input dialogs.
You should use the API only if you want do communicate directly with the user, because some
API calls may block and wait for user interaction. So you should not use the API for batch
jobs.
4.4.5.1 UserInteraction
The UserInteraction API provides methods to display messages to the user directly. In UI
mode the DaVinci Configurator will prompt a message box an will block until the user has
acknowledged the message. In console (non UI) mode, the message is logged to the console in
a user logger.
© 2016, Vector Informatik GmbH
38 of 207


Chapter 4.
AutomationInterface API Reference
The user logger will display error, warnings and infos by default. The logger name will not be
displayed.
The user interaction is good to display information where the user has to respond to immediately.
Please use the feature sparingly, because users do not like to acknowledge multiple messages for
a single script task execution.
The code block userInteractions{} provides the API inside of the block. The following
methods can be used:
• errorToUser()
• warnToUser()
• infoToUser()
• messageToUser(ELogLevel, Object)
The severity (error, warning, info) will change the display (icons, text) of the message box. No
other semantic is applied by the severity.
scriptTask("TaskName", DV_APPLICATION){
code{
userInteractions{
warnToUser("Warning displayed to the user as message box")
}
// You could also write
userInteractions.errorToUser("Error message for the user")
}
}
Listing 4.24: UserInteraction from a script
© 2016, Vector Informatik GmbH
39 of 207



Chapter 4.
AutomationInterface API Reference
4.4.6 Script Error Handling
4.4.6.1 Script Exceptions
All exceptions thrown by any script task execution are sub types of ScriptingException.
Figure 4.4: ScriptingException and sub types
4.4.6.2 Script Task Abortion by Exception
The script task can throw an ScriptClientExecutionException to abort the execution of an
IScriptTask, and display a meaningful message to the user.
scriptTask("TaskName"){
code{
// Stop the execution and display a message to the user
throw new ScriptClientExecutionException("Message to the User")
}
}
Listing 4.25: Stop script task execution by throwing an ScriptClientExecutionException
Exception with Console Return Code
An ScriptClientExecutionException with an return
code of type Integer will also abort the execution of the IScriptTask.
© 2016, Vector Informatik GmbH
40 of 207


Chapter 4.
AutomationInterface API Reference
But it also changes the return code of the console application, if the IScriptTask was executed
in the console application. This could be used when the console application of the DaVinci
Configurator is called for other scripts or batch files.
scriptTask("TaskName"){
code{
// The return code will be returned by the DvCmd.exe process
def returnCode = 50
throw new ScriptClientExecutionException(returnCode, "Message to the User")
}
}
Listing 4.26: Changing
the
return
code
of
the
console
application
by
throwing
an
ScriptClientExecutionException
Reserved Return Codes
The returns codes 0-20 are reversed for internal use of the DaVinci
Configurator, and are not allowed to be used by a client script. Also negative returns codes are
not permitted.
4.4.6.3 Unhandled Exceptions from Tasks
When a script task execution throws any type of Exception (more precise Throwable) the
script task is marked as failed and the Exception is reported to the user.
© 2016, Vector Informatik GmbH
41 of 207


Chapter 4.
AutomationInterface API Reference
4.4.7 User defined Classes and Methods
You can define your own methods and classes in a script file. The methods a called like any
other method.
scriptTask("Task"){
code{
userMethod()
}
}
def userMethod(){
return "UserString"
}
Listing 4.27: Using your own defined method
Classes can be used like any other class. It is also possible to define multiple classes in the
script file.
scriptTask("Task"){
code{
new UserClass().userMethod()
}
}
class UserClass{
def userMethod(){
return "ReturnValue"
}
}
Listing 4.28: Using your own defined class
You can also create classes in different files, but then you have to write imports in your script
like in normal Groovy or Java code.
The script should be structured as any other development project, so if the script file gets too
big, please refactor the parts into multiple classes and so on.
daVinci Block
The classes and methods must be outside of the daVinci{ } block.
import static com.vector.cfg.automation.api.ScriptApi.*
daVinci{
scriptTask("Task"){
code{}
}
}
def userMethod(){}
class UserClass{}
Listing 4.29: Using your own defined method with a daVinci block
Code Completion
Note that the code completion for the Automation API will not work auto-
matically in own defined classes and methods. You have to open for example a scriptCode{}
© 2016, Vector Informatik GmbH
42 of 207


Chapter 4.
AutomationInterface API Reference
block. The chapter 4.4.8 describes how to use the Automation API for your own defined classes
and methods.
4.4.8 Usage of Automation API in own defined Classes and Methods
In your own methods and classes the automation API is not automatically available differently
as inside of the script task code{} block. But it is often the case, that methods need access to
the automation API.
The class ScriptApi provides static methods as entry points into the automation API.
The static methods either return the API objects, or you could pass a Closure, which will
activate the API inside of the Closure.
4.4.8.1 Access the Automation API like the Script code{} Block
The ScriptApi.scriptCode(Closure) method provides access to all automation APIs the
same way as inside of the normal script code{} block.
This is useful, when you want to call script code API inside of your own methods and classes.
def yourMethod(){
// Needs access to an automation API
ScriptApi.scriptCode{
// API is now available
workflow.update()
}
}
Listing 4.30: ScriptApi.scriptCode{} usage in own method
The ScriptApi.scriptCode() method can be used to call API in Java style.
def yourMethod(){
// Needs access to an automation API
ScriptApi.scriptCode().workflow.update()
}
Listing 4.31: ScriptApi.scriptCode() usage in own method
Java note: The ScriptApi.scriptCode() returns the IScriptExecutionContext.
4.4.8.2 Access the Project API of the current active Project
The ScriptApi.activeProject() method provides access to the project automation API of
the currently active project. This is useful, when you want to call project API inside of your
own methods and classes.
© 2016, Vector Informatik GmbH
43 of 207


Chapter 4.
AutomationInterface API Reference
def yourMethod(){
// Needs access to an automation API
ScriptApi.activeProject{
// Project API is now available
transaction{
// Now model modifications are allowed
}
}
}
Listing 4.32: ScriptApi.activeProject{} usage in own method
The ScriptApi.activeProject() method returns the current active IProject.
def yourMethod(){
// Needs access to an automation API
IProject theActiveProject = ScriptApi.activeProject()
}
Listing 4.33: ScriptApi.activeProject() usage in own method
4.4.9 User defined Script Task Arguments in Commandline
A script task can create IScriptTaskUserDefinedArgument, which can be set by the user
(e.g. from the commandline) to pass user defined arguments to the script task execution. An
argument can be optional or required. The arguments are type safe and checked before the task
is executed.
Possible valueTypes are:
• String
• Boolean
• Void: For parameter where only the existence is relevant.
• File: The existence of the file is checked. To reference non existing paths use String
instead.
• Path: Same as File
• Integer
• Long
• Double
The help text is automatically expanded with the help for user defined script task argu-
ments.
© 2016, Vector Informatik GmbH
44 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName"){
/** newUserDefinedArgument(String argName, Class<T> valueType, String help)
*/
def countArg = newUserDefinedArgument("count", Integer,
"The amount of elements to create")
def nameArg = newUserDefinedArgument("name", String,
"The element name to create")
code{
int count = countArg.value
String name = nameArg.value
scriptLogger.info "The arguments --name and --count were $name, $count"
}
}
Listing 4.34: Define and use script task user defined arguments from commandline
scriptTask("TaskName"){
/** newUserDefinedArgument(String argName, Class<T> valueType, String help)
*/
def procArg = newUserDefinedArgument("p", Void,
"Enables the processing")
code{
if(procArg.hasValue){
scriptLogger.info "The argument -p was defined"
}
}
}
Listing 4.35: Script task UserDefined argument with no value
scriptTask("TaskName"){
/** newUserDefinedArgument(String argName, Class<T> valueType,
* T defaultValue, String help)
*/
def procArg = newUserDefinedArgument("p", Double, 25.0,
"Help text ...")
code{
double value = procArg.value
scriptLogger.info "The argument -p was $value"
}
}
Listing 4.36: Script task UserDefined argument with default value
© 2016, Vector Informatik GmbH
45 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName"){
/** newUserDefinedArgument(String argName, Class<T> valueType, String help)
*/
def multiArg = newUserDefinedArgument("multiArg", String, "Help text ...")
/** The client calls the task with arguments:
* --multiArg "ArgOne" --multiArg "ArgTwo"
*/
code{
List<String> values = multiArg.values // Call values instead of value
scriptLogger.info "The argument --multiArg had values: $values"
}
}
Listing 4.37: Script task UserDefined argument with multiple values
4.4.9.1 Call Script Task with Task Arguments
The commandline option taskArgs is used to specify the arguments passed to a script task to
execute:
--taskArgs <TASK_ARGS>
Passes arguments to the specified script tasks.
The arguments have the following syntax:
Syntax: --taskArgs "<TaskName>" "<Arguments to Task>"
E.g. --taskArgs "MyTask" "-s --projectCfg MyFile.cfg"
If only one task is executed, the "<TaskName>" can be omitted.
For multiple task arguments the following syntax apply:
Syntax: --taskArgs "<TaskName>" "<Arguments to Task>"
"<TaskName2>" "<Arguments to Task2>"
E.g. --taskArgs "MyTask" "-s --projectCfg MyFile.cfg"
"Task2" "-d --saveTo saveFile.txt"
Note: The newlines in the listing are only for visualization.
If the task name is not unique, your can specify the full qualified name with script name
--taskArgs "MyScript:MyTask" "-s --projectCfg MyFile.cfg"
Arguments with spaces inside the script task argument could be quoted with ""
--taskArgs "MyScript:MyTask" "-s --projectCfg \"Path to File\MyFile.cfg\" -d"
The task help of a task will print the possible arguments of a script task.
--scriptTaskHelp taskName
© 2016, Vector Informatik GmbH
46 of 207


Chapter 4.
AutomationInterface API Reference
4.4.10 Stateful Script Tasks
Script tasks normally have no state or cached data, but it can be useful to cache data during
an execution, or over multiple task executions. The IScriptExecutionContext provides two
methods to save and restore data for that purpose:
• getExecutionData() - caches data during one task execution
• getSessionData() - caches data over multiple task executions
Execution Data
Caches data during a single script task execution, which allows to save cal-
culated values or services needed in multiple parts of the task, without recalculating or creating
it. Note: When the task is executed again the executionData will be empty.
scriptTask("TaskName"){
code{
// Cache a value for the execution
executionData.myCacheValue = 500
def val = executionData.myCacheValue // Retrieve the value anywhere
scriptLogger.info "The cached value is $val"
// Or access it from any place with ScriptApi.scriptCode like:
def sameValue = ScriptApi.scriptCode.executionData.myCacheValue
}
}
Listing 4.38: executionData - Cache and retrieve data during one script task execution
Session Data
Caches data over multiple task executions, which allows to implement a stateful
task, by saving and retrieving any data calculated by the task itself.
Caution: The data is saved globally so the usage of the sessionData can lead to memory
leaks or OutOfMemoryErrors. You have to take care not to store too much memory in the
sessionData.
The DaVinci Configurator will also free the sessionData, when the system run low on free
memory. So you have to deal with the fact, that the sessionData was freed, when the script
task getting executed again. But the data is not deallocated during a running execution.
scriptTask("TaskName"){
// Setup - set the value the first time, this is only executed once (during initialization)
sessionData.myExecutionCount = 1
code{
// Retrieve the value
def executionCount = sessionData.myExecutionCount
scriptLogger.info "The task was executed $executionCount times"
// Update the value
sessionData.myExecutionCount = executionCount + 1
}
}
Listing 4.39: sessionData - Cache and retrieve data over multiple script task executions
© 2016, Vector Informatik GmbH
47 of 207


Chapter 4.
AutomationInterface API Reference
API usage
Both methods executionData and sessionData return the same API of type
IScriptTaskUserData.
The IScriptTaskUserData provides methods to retrieve and store properties by a key (like a
Map). The retrieval and store methods are Object based, so any Object can be a key. The
exception are Class instances (like String.class, which required that the value is an instance
of the Class).
On retrieval if a property does not exist an UnknownPropertyException is thrown. Properties
can be set multiple times and will override the old value. The keys of the properties used to
retrieve and store data are compared with Object.equals(Object) for equality.
The listing below describes the usage of the API:
scriptTask("TaskName"){
code{
def val
// The sessionData and executionData have the same API
// You have multiple ways to set a value
executionData.myCacheId = "VALUE"
executionData.set("myCacheId", "VALUE")
executionData["myCacheId"] = "VALUE"
// Or with classes for a service locator pattern
executionData.set(Integer.class, 50) // Possible for any Class
executionData[Integer] = 50
// There are the same ways to retrieve the values
val = executionData.myCacheId
val = executionData.get("myCacheId")
val = executionData["myCacheId"]
// Or with classes for a service locator pattern
val = executionData.get(Integer.class)
val = executionData[Integer]
// You can also ask if the property exists
boolean exists = executionData.has("myCacheId")
}
}
Listing 4.40: sessionData and executionData syntax samples
© 2016, Vector Informatik GmbH
48 of 207


Chapter 4.
AutomationInterface API Reference
4.5 Project Handling
Project handling comprises creating new projects, opening existing projects or accessing the
currently active project.
IProjectHandlingApi provides methods to access to the active project, for creating new
projects and for opening existing projects.
getProjects() allows accessing the IProjectHandlingApi like a property.
scriptTask('taskName') {
code {
// IProjectHandlingApi is available as "projects" property
def projectHandlingApi = projects
}
}
Listing 4.41: Accessing IProjectHandlingApi as a property
projects(Closure) allows accessing the IProjectHandlingApi in a scope-like way.
scriptTask('taskName') {
code {
projects {
// IProjectHandlingApi is available inside this Closure
}
}
}
Listing 4.42: Accessing IProjectHandlingApi in a scope-like way
4.5.1 Projects
Projects in the AutomationInterface are represented by IProject instances. These instances
can be created by:
• Creating a new project
• Loading an existing project
You can only access IProject instances by using a Closure block at IProjectHandlingApi or
IProjectRef class. This shall prevent memory leaks, by not closing open projects.
4.5.2 Accessing the active Project
The IProjectHandlingApi provides access to the active project. The active project is either
(in descending order):
• The last IProject instance activated with a Closure block
– Stack-based - so multiple opened projects are possible and the last (inner) Closure
block is used.
• The passed project to a project task
• Or the loaded project in the current DaVinci Configurator in an application task
© 2016, Vector Informatik GmbH
49 of 207



Chapter 4.
AutomationInterface API Reference
The figure 4.5 describes the behavior to search for the active project of a script task.
Figure 4.5: Search for active project in getActiveProject()
It is possible that there is no active project, e.g. no project was loaded.
You can switch the active project, by calling the with(Closure) method on an IProject
instance.
// Retrieve theProject from other API like load a project
IProject theProject = ...;
theProject.with {
// Now theProject is the new active project inside of this closure
}
Listing 4.43: Switch the active project
To access the active project you can use the activeProject(Closure) and getActivePro-
ject() methods.
© 2016, Vector Informatik GmbH
50 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask('taskName') {
code {
if (projects.projectActive) {
// active IProject is available as "activeProject" property
scriptLogger.info "Active project: ${projects.activeProject.projectName}"
projects.activeProject {
// active IProject is available inside this Closure
scriptLogger.info "Active project: ${projectName}"
}
else {
scriptLogger.info 'No project active'
}
}
}
Listing 4.44: Accessing the active IProject
isProjectActive() returns true if and only if there is an active IProject. If isProjectAc-
tive() returns true it is safe to call getActiveProject().
getActiveProject() allows accessing the active IProject like a property.
activeProject(Closure) allows accessing the active IProject in a scope-like way. This will
enable the project specific API inside of the Closure.
4.5.3 Creating a new Project
The method createProject(Closure) creates a new project as specified by the given Closure.
Inside the closure the ICreateProjectApi is available.
The new project is not opened and usable until IProjectRef.openProject(Closure) is called
on the returned IProjectRef.
scriptTask('taskName', DV_APPLICATION) {
code {
def newProject = projects.createProject {
projectName 'NewProject'
projectFolder paths.resolveTempPath('projectFolder')
}
scriptLogger.info("Project created and saved to: $newProject")
// Now open the project
newProject.openProject{
// Inside here the project can be used
}
}
}
Listing 4.45: Creating a new project (mandatory parameters only)
The next is a more sophisticated example of creating a project with multiple settings:
© 2016, Vector Informatik GmbH
51 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask('taskName', DV_APPLICATION) {
code {
def newProject = projects.createProject {
projectName 'NewProject'
projectFolder paths.resolveTempPath('projectFolder')
general {
author 'projectAuthor'
version '0.9'
}
postBuild {
loadable true
selectable true
}
folders.ecucFileStructure = ONE_FILE_PER_MODULE
folders.moduleFilesFolder = 'Appl/GenData'
folders.templatesFolder = 'Appl/Source'
target.vVIRTUALtargetSupport = false
daVinciDeveloper.createDaVinciDeveloperWorkspace = false
}
}
}
Listing 4.46: Creating a new project (with some optional parameters)
The ICreateProjectApi contains the methods to parameterize the creation of a new project.
4.5.3.1 Mandatory Settings
Project Name
Specify the name newly created project with setProjectName(String). The
name given here is postfixed with ".dpa" for the new project’s .dpa file.
The following constraints apply:
• Constraints.IS_VALID_PROJECT_NAME 4.12.1 on page 144
Project Folder
Specify the folder in which to create the new project in with setProject-
Folder(Object). The value given here is converted to Path using the converter ScriptCon-
verters.TO_SCRIPT_PATH 4.12.2 on page 145.
The following constraints apply:
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
4.5.3.2 General Settings
Use getGeneral() or general(Closure) to specify the new project’s general settings. The
provided settings are defined in ICreateProjectGeneralApi.
© 2016, Vector Informatik GmbH
52 of 207


Chapter 4.
AutomationInterface API Reference
Author
The author for the new project can be specified with setAuthor(String). This is an
optional parameter defaulting to the name of the currently logged in user if the parameter is
not provided explicitly.
The following constraints apply:
• Constraints.IS_NON_EMPTY_STRING 4.12.1 on page 144
Version
The version for the new project can be specified with setVersion(Object). This
is an optional parameter defaulting to "1.0" if the parameter is not provided explicitly. The
value given here is converted to IVersion using ScriptConverters.TO_VERSION 4.12.2 on
page 145.

The following constraints apply:
• Constraints.IS_NOT_NULL 4.12.1 on page 144
Description
The description for the new project can be specified with setDescription(String).
This is an optional parameter defaulting to "" if the parameter is not provided explicitly.
The following constraints apply:
• Constraints.IS_NOT_NULL 4.12.1 on page 144
Start Menu Entries
setCreateStartMenuEntries(boolean) defines whether or not to create
start menu entries for the new project. This is an optional parameter defaulting to false if the
parameter is not provided explicitly.
4.5.3.3 Target Settings
Use getTarget() or target(Closure) to specify the new project’s target settings for compiler,
derivatives and pin layouts.
ICreateProjectTargetApi contains the API to specify the new project’s target settings.
Available Derivatives
getAvailableDerivatives() returns all possible input values for set-
Derivative(DerivativeInfo).
Derivative
Set the derivative for the new project with setDerivative(DerivativeInfo).
This is an optional parameter defaulting to the first element in the collection returned by
getAvailableDerivatives() (or null if the collection is empty). The value given here must
be one of the values returned by getAvailableDerivatives().
Available Compilers
getAvailableCompilers() returns all possible input values for set-
Compiler(ImplementationProperty). Note: the available compilers depend on the currently
configured derivative. This method will return the empty collection if no derivative has been
configured at the time it is called.
© 2016, Vector Informatik GmbH
53 of 207


Chapter 4.
AutomationInterface API Reference
Compiler
Set the compiler for the new project with setCompiler(ImplementationProperty).
This is an optional parameter defaulting to the first element in the collection returned by
getAvailableCompilers() (or null if the collection is empty). The value given here must be
one of the values returned by getAvailableCompilers().
Available Pin Layouts
getAvailablePinLayouts() returns all possible input values for set-
PinLayout(ImplementationProperty). Note: the available pin layouts depend on the cur-
rently configured derivative. This method will return the empty collection if no derivative has
been configured at the time it is called.
Pin Layout
Set the pin layout of the selected derivative for the new project with setPinLay-
out(ImplementationProperty). This is an optional parameter defaulting to the first element
in the collection returned by getAvailablePinLayouts() (or null if the collection is empty).
The value given here must be one of the values returned by getAvailablePinLayouts().
vVIRTUALtarget Support
setvVIRTUALtargetSupport(boolean) specifies whether or not
to support the vVIRTUALTarget for the new project. This is an optional parameter defaulting
to false if the parameter is not provided explicitly.
The following constraints apply:
• vVIRTUALtarget support may not be available depending on the purchased license
4.5.3.4 Post Build Settings
Use getPostBuild() or postBuild(Closure) to specify the new project’s post build settings
for Post-build selectable and or loadable projects.
ICreateProjectPostBuildApi contains the API to specify the new project’s post build set-
tings.
Post-build Loadable Support
setLoadable(boolean) sets whether or not to support Post-
build loadable for the new project. This is an optional parameter defaulting to false if the
parameter is not provided explicitly.
Post-Build Selectable Support
setSelectable(boolean) sets whether or not to support
Post-build selectable for the new project. This is an optional parameter defaulting to false if
the parameter is not provided explicitly.
4.5.3.5 Folders Settings
Use getFolders() or folders(Closure) to specify the new project’s folders settings.
ICreateProjectFolderApi contains the methods to specify the new project’s folders set-
tings.
© 2016, Vector Informatik GmbH
54 of 207


Chapter 4.
AutomationInterface API Reference
Module Files Folder
Set the module files folder for the new project with setModuleFiles-
Folder(Object). This is an optional parameter defaulting to ".\Appl\GenData" if the param-
eter is not provided explicitly. The value given here is converted to Path using ScriptCon-
verters.TO_PATH 4.12.2 on page 145. Normally a relative path (to be interpreted relative to
the project folder) should be given here.
The following constraints apply:
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
Templates Folder
Set the templates folder for the new project with setTemplatesFolder(Object).
This is an optional parameter defaulting to ".\Appl\Source" if the parameter is not provided
explicitly.
The value given here is converted to Path using ScriptConverters.TO_PATH 4.12.2 on page 145.
Normally a relative path (to be interpreted relative to the project folder) should be given
here.
The following constraints apply:
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
Service Components Folder
Set the service component files folder for the new project with
setServiceComponentFilesFolder(Object).
This is an optional parameter defaulting to
".\Config\ServiceComponents" if the parameter is not provided explicitly.
The value given here is converted to Path using ScriptConverters.TO_PATH 4.12.2 on page 145.
Normally a relative path (to be interpreted relative to the project folder) should be given
here.
The following constraints apply:
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
Application Components Folder
Set the application component files folder for the new project
with setApplicationComponentFilesFolder(Object). This is an optional parameter default-
ing to ".\Config\ApplicationComponents" if the parameter is not provided explicitly.
The value given here is converted to Path using ScriptConverters.TO_PATH 4.12.2 on page 145.
Normally a relative path (to be interpreted relative to the project folder) should be given
here.
The following constraints apply:
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
Log Files Folder
Set the log files folder for the new project with setLogFilesFolder(Object).
This is an optional parameter defaulting to ".\Config\Log" if the parameter is not provided
explicitly.
The value given here is converted to Path using ScriptConverters.TO_PATH 4.12.2 on page 145.
Normally a relative path (to be interpreted relative to the project folder) should be given
here.
The following constraints apply:
© 2016, Vector Informatik GmbH
55 of 207


Chapter 4.
AutomationInterface API Reference
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
Measurement And Calibration Files Folder
Set the measurement and calibration files folder
for the new project with setMeasurementAndCalibrationFilesFolder(Object). This is an
optional parameter defaulting to ".\Config\McData" if the parameter is not provided explic-
itly.
The folder object passed to the method is converted to Path using ScriptConverters.TO_PATH 4.12.2
on page 145. 
Normally a relative path (to be interpreted relative to the project folder) should
be given here.
The following constraints apply:
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
AUTOSAR Files Folder
Set the AUTOSAR files folder for the new project with setAu-
tosarFilesFolder(Object). This is an optional parameter defaulting to ".\Config\AUTOSAR"
if the parameter is not provided explicitly.
The value given here is converted to Path using ScriptConverters.TO_PATH 4.12.2 on page 145.
Normally a relative path (to be interpreted relative to the project folder) should be given
here.
The following constraints apply:
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145
ECUC File Structure
The literals of EEcucFileStructure define the alternative ECUC file
structures supported by the new project. The following alternatives are supported:
SINGLE_FILE results in a single ECUC file containing all module configurations.
ONE_FILE_PER_MODULE results in a separate ECUC file for each module configuration all located
in a common folder.
ONE_FILE_IN_SEPARATE_FOLDER_PER_MODULE results in a separate ECUC file for each module
configuration each located in its separate folder.
Set the ECUC file structure to use for the new project with the method setEcucFileStruc-
ture(EEcucFileStructure). This is an optional parameter defaulting to EEcucFileStruc-
ture.SINGLE_FILE if the parameter is not provided explicitly.
4.5.3.6 DaVinci Developer Settings
Use getDaVinciDeveloper() to specify the new project’s DaVinci Developer settings.
ICreateProjectDaVinciDeveloperApi contians the methods for specifying the new project’s
DaVinci Developer settings.
Create DEV Workspace
setCreateDaVinciDeveloperWorkspace(boolean) specifies whether
or not to create a DaVinci Developer workspace for the new project. This is an optional pa-
rameter defaulting to true if and only if a compatible DaVinci Developer installation can be
detected and the parameter is not provided explicitly.
© 2016, Vector Informatik GmbH
56 of 207


Chapter 4.
AutomationInterface API Reference
DEV Executable
Set the DaVinci Developer executable for the new project with setDaVin-
ciDeveloperExecutable(Object). This is an optional parameter defaulting to the location of
a compatible DaVinci Developer installation (if there is any) if the parameter is not provided
explicitly.
The value given here is converted to Path using ScriptConverters.TO_SCRIPT_PATH 4.12.2 on
page 145.

The following constraints apply:
• Constraints.IS_COMPATIBLE_DA_VINCI_DEV_EXECUTABLE 4.12.1 on page 145
DEV Workspace
Set the DaVinci Developer workspace for the new project with setDaVin-
ciDeveloperWorkspace(Object). This is an optional parameter defaulting to
".\Config\Developer\<ProjectName>.dcf" if the parameter is not provided explicitly.
The value given here is converted to Path using ScriptConverters.TO_PATH 4.12.2 on page 145.
Normally a relative path (to be interpreted relative to the project folder) should be given
here.
The following constraints apply:
• Constraints.IS_DCF_FILE 4.12.1 on page 145
• Constraints.IS_CREATABLE_FOLDER 4.12.1 on page 145 (applies to the parent Path of
the given Path to the DaVinci Developer executable)
Import Mode Preset
setUseImportModePreset(boolean) specifies whether or not to use the
import mode preset for the new project. This is an optional parameter defaulting to true if
the parameter is not provided explicitly.
Object Locking
setLockCreatedObjects(boolean) specifies whether or not to lock created
objects for the new project. This is an optional parameter defaulting to true if the parameter
is not provided explicitly.
Selective Import
The literals of ESelectiveImport define the alternative modes for the se-
lective import into the DaVinci Developer workspace during project updates. The following
alternatives are supported:
ALL results in selective import for all elements.
COMMUNICATION_ONLY results in selective import for communication elements only.
Set the selective import mode for the new project with setSelectiveImport(ESelectiveImport).
This is an optional parameter defaulting to ESelectiveImport.ALL if the parameter is not pro-
vided explicitly.
4.5.4 Opening an existing Project
You can open an existing DaVinci Configurator Dpa project with the automation interface.
The method openProject(Object, Closure) opens the project at the given .dpa file location,
delegates the given code to the opened IProject.
© 2016, Vector Informatik GmbH
57 of 207


Chapter 4.
AutomationInterface API Reference
The project is automatically closed after leaving the Closure code of the openProject(Object,
Closure) method.
The Object given as .dpa file is converted to Path using ScriptConverters.TO_SCRIPT_PATH 4.12.2
on page 145

scriptTask('taskName', DV_APPLICATION) {
code {
// replace getDpaFileToLoad() with the path to the .dpa file to be loaded
projects.openProject(getDpaFileToLoad()) {
// the opened IProject is available inside this Closure
scriptLogger.info 'Project loaded and ready'
}
}
}
Listing 4.47: Opening a project from .dpa file
4.5.4.1 Parameterized Project Load
You can also configure how a Dpa project is loaded, e.g. by disabling the generators.
The method parameterizeProjectLoad(Closure) returns a handle on the project specified by
the given Closure. Using the IOpenDpaProjectApi, the Closure may further customize the
project’s opening procedure.
The project is not opened until openProject() is called on the returned IProjectRef.
scriptTask('taskName', DV_APPLICATION) {
code {
def project = projects.parameterizeProjectLoad {
// replace getDpaFileToLoad() with the path to the .dpa file to be loaded
dpaFile getDpaFileToLoad()
// prevent activation of generators and validation
loadGenerators false
enableValidation false
}
project.openProject {
// the opened IProject is available inside this Closure
scriptLogger.info 'Project loaded and ready'
}
}
}
Listing 4.48: Parameterizing the project open procedure
IOpenProjectApi contains the methods for parameterizing the process of opening a project.
DPA File
The method setDpaFile(Object) sets the .dpa file of the project to be opened.
The value given here is converted to Path using ScriptConverters.TO_SCRIPT_PATH 4.12.2 on
page 145.

Generators
Using setLoadGenerators(boolean) specifies whether or not to activate gener-
ators (including their validations) for the opened project.
© 2016, Vector Informatik GmbH
58 of 207


Chapter 4.
AutomationInterface API Reference
Validation
setEnableValidation(boolean) specifies whether or not to activate validation
for the opened project.
4.5.4.2 Open Project Details
IProjectRef is a handle on a project not yet loaded but ready to be opened. This could be
used to open the project.
IProjectRef instances can be obtained from form the following methods:
• IProjectHandlingApi.createProject(Closure) 4.5.3 on page 51
• IProjectHandlingApi.parameterizeProjectLoad(Closure) 4.5.4 on the previous page
The IProject is not really opened until IProjectRef.openProject(Closure) is called. Here,
the project is opened and the given Closure is executed on the opened project. When IPro-
jectRef.openProject(Closure) returns the project has already been closed.
4.5.5 Saving a Project
IProject.saveProject() saves the current state including all model changes of the project to
disc.
scriptTask('taskName', DV_APPLICATION) {
code {
// replace getDpaFileToLoad() with the path to the .dpa file to be loaded
def project = projects.openProject(getDpaFileToLoad()) {
// modify the opened project
transaction {
operations.activateModuleConfiguration(sipDefRef.EcuC)
}
// save the modified project
saveProject()
}
}
}
Listing 4.49: Opening, modifying and saving a project
© 2016, Vector Informatik GmbH
59 of 207


Chapter 4.
AutomationInterface API Reference
4.5.6 Opening AUTOSAR Files as Project
Sometimes it could be helpful to load AUTOSAR arxml files instead of a full-fledged DaVinci
Configurator project.
For example to modify the content of a file for test cases with the
AutomationInterface, instead of using an XML editor.
You could load multiple arxml files into a temporary project, which allowed to read and write
the loaded file content with the normal model APIs.
The following elements are loaded by default, without specifying the AUTOSAR files:
• ModuleDefinitions from the SIP: To allow the usage of the BswmdModel
• AUTOSAR standard definition: Refinement resolution of definitions
Caution: Some APIs and services may not be available for this type of project, like:
• Update workflow: You can’t update a non existing project
• Validation: The validation is disabled by default
• Generation: The generators are not loaded by default
The method parameterizeArxmlFileLoad(Closure) allows to load multiple arxml files into a
temporary project. The given Closure is used to customize the project’s opening procedure by
the IOpenArxmlFilesProjectApi.
The arxml file project is not opened until openProject() is called on the returned IProjec-
tRef.
scriptTask('taskName', DV_APPLICATION) {
code {
def project = projects.parameterizeArxmlFileLoad {
// Add here your arxml files to load
arxmlFiles(arxmlFilesToLoad)
rawAutosarDataMode = true
}
project.openProject {
scriptLogger.info 'Project loaded and ready'
}
}
}
Listing 4.50: Opening Arxml files as project
Arxml Files
Add arxml files to load with the method arxmlFiles(Collection). Multiple
files and method calls are allowed. The given values are converted to Path instances using
ScriptConverters.TO_SCRIPT_PATH 4.12.2 on page 145.
Raw AUTOSAR Data Mode
the method setRawAutosarDataMode(boolean) specifies whether
or not to use the raw ATUOSAR data model.
This will disable most of the provided services and APIs, like:
• Ecuc access
• BswmdModel support
• Generation
© 2016, Vector Informatik GmbH
60 of 207


Chapter 4.
AutomationInterface API Reference
• Validation
• Worflow
• Domain API
• ChangeInspector
• and more
Currently only this mode is supported! You have to set rawAutosarDataMode = true.
© 2016, Vector Informatik GmbH
61 of 207


Chapter 4.
AutomationInterface API Reference
4.6 Model
4.6.1 Introduction
The model API provides means to retrieve AUTOSAR model content and to modify AUTOSAR
data. This comprises Ecuc data (module configurations and their content) and System Descrip-
tion data.
In this chapter you’ll first find a brief introduction into the model handling. Here you also find
some simple cut-and-paste examples which allow starting easily with low effort. Subsequent
sections describe more and more details which you can read if required.
Chapter 5 on page 152 may additionally be useful to understand detailed concepts and as a
reference to handle special use cases.
4.6.2 Getting Started
The model API basically provides two different approaches:
• The MDF model is the low level AUTOSAR model. It stores all data read from AU-
TOSAR XML files. Its structure is base on the AUTOSAR MetaModel. In 5.1 on page 152
you find detailed information about this model.
• The BswmdModel is a model which wraps the MDF model to provide convenient and
type-safe access to the Ecuc data. It contains, definition based classes for module con-
figurations, containers, parameters and references. The class CanGeneral for example
as type-safe implementation in contrast to the generic AUTOSAR class MIContainer in
MDF.
It is strongly recommended to use the BswmdModel model to deal with Ecuc data
because it simplifies scripting a lot.
4.6.2.1 Read the ActiveEcuc
This section provides some typical examples as a brief introduction for reading the Ecuc by
means of the BswmdModel. See chapter 4.6.3.2 on page 70 for more details.
The following example specifies no types for the local variables. It therefore requires no import
statements. A drawback on the other hand is that the type is only known at runtime and you
have no type support in the IDE:
© 2016, Vector Informatik GmbH
62 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName"){
code {
// Gets the module DefRef searching all definitions of this SIP
def moduleDefRef = sipDefRef.EcuC
// Creates all BswmdModel instances with this definition. A List<EcuC> in this case.
def ecucModules = bswmdModel(moduleDefRef)
// Gets the EcucGeneral container of the first found module instance
def ecuc = ecucModules.single
def ecucGeneral = ecuc.ecucGeneral
// Gets an (enum) parameter of this container
def cpuType = ecucGeneral.CPUType
}
}
Listing 4.51: Read with BswmdModel objects starting with a module DefRef (no type
declaration)
In contrast to the listing above the next one implements the same behavior but specifies all
types:
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.EcuC
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.EcucGeneral
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.cputype.CPUType
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.cputype.ECPUType
scriptTask("TaskName"){
code {
// Gets the ecuc module configuration
EcuC ecuc = bswmdModel(EcuC.DefRef).single
// Gets the EcucGeneral container
EcucGeneral ecucGeneral = ecuc.ecucGeneral
// Gets an enum parameter of this container
CPUType cpuType = ecucGeneral.CPUType
if (cpuType.value == ECPUType.CPU32Bit) {
"Do something ..."
}
}
}
Listing 4.52: Read with BswmdModel objects starting with a module DefRef (strong typing)
© 2016, Vector Informatik GmbH
63 of 207


Chapter 4.
AutomationInterface API Reference
The bswmdModel() API takes an optional closure argument which is being called for each
created BswmdModel object. This object is used as parameter of the closure:
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.EcuC
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.cputype.ECPUType
scriptTask("TaskName"){
code {
// Executes the closure with all instances of this definition
bswmdModel(EcuC.DefRef) {
// The related BswmdModel instance is parameter of this closure
ecuc ->
if (ecuc.ecucGeneral.CPUType.value == ECPUType.CPU32Bit) {
"Do something ..."
}
}
}
}
Listing 4.53: Read with BswmdModel objects with closure argument
Additionally to the DefRef, an already available MDF model object can be specified to create
the related BswmdModel object for it:
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.EcucGeneral
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.cputype.ECPUType
scriptTask("TaskName"){
code {
// Gets the MDF model instance of the Ecuc General container
def container = mdfModel(EcucGeneral.DefRef).single
// Executes the closure with this MDF object instance
bswmdModel(container, EcucGeneral.DefRef) {
// The related BswmdModel instance is parameter of this closure
ecucGeneral ->
if (ecucGeneral.CPUType.value == ECPUType.CPU32Bit) {
"Do something ..."
}
}
}
}
Listing 4.54: Read with BswmdModel object for an MDF model object
© 2016, Vector Informatik GmbH
64 of 207


Chapter 4.
AutomationInterface API Reference
4.6.2.2 Write the ActiveEcuc
This section provides some typical examples as a brief introduction for writing the Ecuc by
means of the BswmdModel. See chapter 4.6.3.3 on page 71 for more details.
For the most cases the entry point for writing the ActiveEcuc is a (existing) module configuration
object which can be retrieved with the bswmdModel() API. Because the model is in read-only
state by default, every call to an API which creates or deletes elements has to be executed in
a transaction() block.
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.EcuC
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.EcucGeneral
scriptTask("TaskName"){
code {
transaction {
// Gets the first found ecuc module instance
EcuC ecuc = bswmdModel(EcuC.DefRef).single
//Gets the EcucGeneral container or create one if it is missing
EcucGeneral ecucGeneral = ecuc.ecucGeneralOrCreate
// Gets an boolean parameter of this container or create one if it is missing
def ecuCSafeBswChecks = ecucGeneral.ecuCSafeBswChecksOrCreate
// Sets the parameter value to true
ecuCSafeBswChecks.value = true
}}}
Listing 4.55: Write with BswmdModel required/optional objects
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.EcuC
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecuchardware.ecuccoredefinition.
EcucCoreDefinition
scriptTask("TaskName"){
code {
transaction {
// Gets the first found ecuc module instance
EcuC ecuc = bswmdModel(EcuC.DefRef).single
//Gets the EcucCoreDefinition list (creates ecucHardware if it is missing)
def ecucCoreDefinitions = ecuc.ecucHardwareOrCreate.ecucCoreDefinition
//Adds two EcucCores
EcucCoreDefinition core0 = ecucCoreDefinitions.createAndAdd("EcucCore0")
EcucCoreDefinition core1 = ecucCoreDefinitions.createAndAdd("EcucCore1")
if(ecucCoreDefinitions.exists("EcucCore0")) {
//Sets EcucCoreId to 0
ecucCoreDefinitions.byName("EcucCore0").ecucCoreId.setValue(0);
}
//Creates a new EcucCore by method 'byNameOrCreate'
EcucCoreDefinition core2 = ecucCoreDefinitions.byNameOrCreate("EcucCore2");
}}}
Listing 4.56: Write with BswmdModel multiple objects
© 2016, Vector Informatik GmbH
65 of 207


Chapter 4.
AutomationInterface API Reference
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.EcuC
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.EcucGeneral
scriptTask("TaskName"){
code {
transaction {
// Gets the first found ecuc module instance
EcuC ecuc = bswmdModel(EcuC.DefRef).single
//Duplicates container 'EcucGeneral' and all its children
EcucGeneral ecucGeneral_Dup = ecuc.ecucGeneral.duplicate()
}
}
}
Listing 4.57: Write with BswmdModel - Duplicate a container
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.EcucGeneral
scriptTask("TaskName"){
code {
transaction {
// Gets the first found ecuc module instance
EcucGeneral ecucGeneral = bswmdModel(EcucGeneral.DefRef).single
//Deletes 'ecucGeneral' from model
ecucGeneral.moRemove()
//Checks if the container 'ecucGeneral' was removed from repository
if(ecucGeneral.moIsRemoved()) {
"Do something ..."
}
}
}
}
Listing 4.58: Write with BswmdModel - Delete elements
© 2016, Vector Informatik GmbH
66 of 207


Chapter 4.
AutomationInterface API Reference
4.6.2.3 Read the SystemDescription
This section contains only one example for reading the SystemDescription by means of the MDF
model. See chapter 4.6.4.1 on page 74 for more details.
// Required imports
import com.vector.cfg.model.mdf.ar4x.swcomponenttemplate.datatype.dataprototypes.*
import com.vector.cfg.model.mdf.ar4x.commonstructure.datadefproperties.*
scriptTask("mdfModel", DV_PROJECT){
code {
// Create a type-safe AUTOSAR path
def asrPath =
AsrPath.create("/PortInterfaces/PiSignal_Dummy/DeSignal_Dummy",
MIVariableDataPrototype)
// Enter the MDF model tree starting at the object with this path
mdfModel(asrPath) { MIVariableDataPrototype prototype ->
// Traverse down to the swDataDefProps
prototype.swDataDefProps { MISwDataDefProps swDataDefPropsParam ->
// swDataDefPropsVariant is a List<MISwDataDefPropsConditional>
// Execute the following for ALL elements of this List
swDataDefPropsParam.swDataDefPropsVariant {
MISwDataDefPropsConditional swDataDefPropsCondParam ->
// Resolve the dataConstr reference (type MIDataConstr)
def target = swDataDefPropsCondParam.dataConstr.refTarget
// Get the swCalibrationAccess enum value
def access = swDataDefPropsCondParam.swCalibrationAccess
assert access == MISwCalibrationAccessEnum.NOT_ACCESSIBLE
}
}
}
}
}
Listing 4.59: Read system description starting with an AUTOSAR path in closure
The same sample as above, but in property access style instead of closures:
// Create a type-safe AUTOSAR path
def asrPath =
AsrPath.create("/PortInterfaces/PiSignal_Dummy/DeSignal_Dummy", MIVariableDataPrototype)
def prototype = mdfModel(asrPath)
def swDataDefPropsParam = prototype.swDataDefProps
// Execute the following for ALL swDataDefPropsVariant
swDataDefPropsParam.swDataDefPropsVariant.each{ swDataDefPropsCondParam ->
// Resolve the dataConstr reference (type MIDataConstr)
def target = swDataDefPropsCondParam.dataConstr.refTarget
// Get the swCalibrationAccess enum value
def access = swDataDefPropsCondParam.swCalibrationAccess
assert access == MISwCalibrationAccessEnum.NOT_ACCESSIBLE
}
Listing 4.60: Read system description starting with an AUTOSAR path in property style
© 2016, Vector Informatik GmbH
67 of 207


Chapter 4.
AutomationInterface API Reference
4.6.2.4 Write the SystemDescription
Writing the system description looks quite similar to the reading, but you have to use methods
like (see chapter 4.6.4.2 on page 76 for more details):
• get<Element>OrCreate() or <element>OrCreate
• createAndAdd()
• byNameOrCreate()
You have to open a transaction before you can modify the MDF model, see chapter 4.6.6 on
page 88 
for details.
The following samples show the different types of write API:
transaction{
// The asrPath points to an MIVariableDataPrototype
mdfModel(asrPath) { dataPrototype ->
dataPrototype.category = "NewCategory"
}
}
Listing 4.61: Changing a simple property of an MIVariableDataPrototype
transaction{
// The asrPath points to an MIVariableDataPrototype
mdfModel(asrPath) {
int count = 0
assert adminData == null
adminDataOrCreate {
count++
}
assert count == 1
assert adminData != null
}
}
Listing 4.62: Creating non-existing member by navigating into its content with OrCreate()
transaction{
// The asrPath points to an MIVariableDataPrototype
mdfModel(asrPath) {
assert adminData.sdg.empty
adminData {
sdg.createAndAdd(MISdg) {
gid = "NewGidValue"
}
}
assert adminData.sdg.first.gid == "NewGidValue"
}
}
Listing 4.63: Creating new members of child lists with createAndAdd() by type
© 2016, Vector Informatik GmbH
68 of 207


Chapter 4.
AutomationInterface API Reference
transaction{
// The path points to an MISenderReceiverInterface
mdfModel(asrPath) { sendRecIf ->
def dataList = sendRecIf.dataElement
def dataElement = dataList.byNameOrCreate("MyDataElement")
dataElement.name = "NewName"
def dataElement2 = dataList.byNameOrCreate("NewName")
assert dataElement == dataElement2
}
}
Listing 4.64: Updating existing members of child lists with byNameOrCreate() by type
© 2016, Vector Informatik GmbH
69 of 207


Chapter 4.
AutomationInterface API Reference
4.6.3 BswmdModel in AutomationInterface
The AutomationInterface contains a generated BswmdModel.
The BswmdModel provides
classes for all Ecuc elements of the AUTOSAR model (ModuleConfigurations, Containers, Pa-
rameter, References). The BswmdModel is automatically generated from the SIP of the DaVinci
Configurator.
You should use the BswmdModel whenever possible to access Ecuc elements of the AUTOSAR
model. For accessing the Ecuc elements with the BswmdModel, see chapter 4.6.3.2.
For a detailed description of the BswmdModel, see chapter 5.3.1 on page 166.
4.6.3.1 BswmdModel Package and Class Names
The generated model is contained in the Java package com.vector.cfg.automation.model.ecuc.
Every Module has its own sub packages with the name:
• com.vector.cfg.automation.model.ecuc.<AUTOSAR-PKG>.<SHORTNAME>
– e.g. com.vector.cfg.automation.model.ecuc.microsar.dio
– e.g. com.vector.cfg.automation.model.ecuc.autosar.ecucdefs.can
The packages then contain the class of the element like Dio for the module. The full path would
be com.vector.cfg.automation.model.ecuc.microsar.dio.Dio.
For the container DioGeneral it would be:
• com.vector.cfg.automation.model.ecuc.microsar.dio.diogeneral.DioGeneral
To use the BswmdModel in script files, you have to write an import, when accessing the
class:
//The required BswmdModel import of the class Dio
import com.vector.cfg.automation.model.ecuc.microsar.dio.Dio
scriptTask("TaskName"){
code{
Dio.DefRef //Usage of the class Dio
}
}
Listing 4.65: BswmdModel usage with import
4.6.3.2 Reading with BswmdModel
The bswmdModel() methods provide entry points to start navigation through the ActiveEcuc.
Client code can use the Closure overloads to navigate into the content of the found bswmd ob-
jects. Inside the called closure the related bswmd object is available as closure parameter.
The following types of entry points are provided here:
• bswmdModel(WrappedTypedDefRef) searches all objects with the specified definition and
returns the BswmdModel instances
• bswmdModel(MIHasDefinition, WrappedTypedDefRef) returns the BswmdModel instance
for the provided MDF model instance.
© 2016, Vector Informatik GmbH
70 of 207


Chapter 4.
AutomationInterface API Reference
When a closure is being used, the object found by bswmdModel() is provided as parameter when
the closure is called.
The bswmdModel() method itself returns the found objects too. Retrieving the objects member
and children (Container, Parameter) as properties or methods are then possible directly using
the returned object.
Example:
code {
// Gets the ecuc module configuration
EcuC ecuc = bswmdModel(EcuC.DefRef).single
}
Listing 4.66: Read with BswmdModel the EcuC module configuration
For more usage samples please see chapter 4.6.2.1 on page 62.
4.6.3.3 Writing with BswmdModel
As well as for reading with BswmdModel the entry points for writing with BswmdModel are also
the bswmdModel() methods. There has to be at least one existing element in the ActiveEcuc
from which the navigation can be started. For the most cases the entry point for writing the
ActiveEcuc is the module configuration.
Example:
code {
transaction {
// Gets the ecuc module configuration
EcuC ecuc = bswmdModel(EcuC.DefRef).single
//Gets the EcucGeneral container or create one if it is missing
EcucGeneral ecucGeneral = ecuc.ecucGeneralOrCreate
}
}
Listing 4.67: Write with BswmdModel the EcucGeneral container
For more usage samples please see chapter 4.6.2.2 on page 65.
NOTE: The model is in read-only state by default, so no objects could be created. For this reason
all calls to an API which creates or deletes elements has to be executed within a transaction()
block.
See 5.3.1.9 on page 174 for more details to the BswmdModel write API.
4.6.3.4 Sip DefRefs
The sipDefRef API provides access to retrieve generated DefRef instances from the SIP without
knowing the correct Java/Groovy imports. This is mainly useful in script files, where no IDE
helps with the imports.
If you are using an Automation Script Project you can ignore this API and use the
DefRefs provided by the generated classes, which is superior to this API, because they are
typesafe and compile time checked. See 4.6.3.5 on the next page for details.
© 2016, Vector Informatik GmbH
71 of 207


Chapter 4.
AutomationInterface API Reference
The listing show the usage of the sipDefRef API with short names and definition paths.
code{
def theDefRef
// You can call sipDefRef.<ShortName>
theDefRef = sipDefRef.EcucGeneral
theDefRef = sipDefRef.Dio
theDefRef = sipDefRef.DioPort
// Or you can use the [] notation
theDefRef = sipDefRef["Dio"]
theDefRef = sipDefRef["DioChannelGroup"]
// If the DefRef is not unique you have to specify the full definition
theDefRef = sipDefRef["/MICROSAR/EcuC/EcucGeneral"]
theDefRef = sipDefRef["/MICROSAR/Dio"]
theDefRef = sipDefRef["/MICROSAR/Dio/DioConfig/DioPort"]
}
Listing 4.68: Usage of the sipDefRef API to retrieve DefRefs in script files
4.6.3.5 BswmdModel DefRefs
The generated BswmdModel classes contain DefRef instances for each definition element (Mod-
ules, Containers, Parameters). You should always prefer this API over the Sip DefRefs, because
this is type safe and checked during compile time.
You can use the DefRefs by calling <ModelClassName>.DefRef. The literal DefRef is a static
constant in the generated classes.
For simple parameters like Strings, Integer there is no generated class, so you have to call the
method on its parent container like <ParentContainerClass>.<ParameterShortName>DefRef.
There exist generated classes for Parameters of type Enumeration and References to Container
and therefore you have both ways to access the DefRef:
• <ModelClassName>.DefRef or
• <ParentContainerClass>.<ParameterShortName>DefRef
To use the DefRefs of the classes you have to add imports in script files, see chapter 4.6.3.1 on
page 70 
for required import names.
© 2016, Vector Informatik GmbH
72 of 207


Chapter 4.
AutomationInterface API Reference
// Required imports
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.EcucGeneral
import com.vector.cfg.automation.model.ecuc.microsar.ecuc.ecucgeneral.cputype.CPUType
scriptTask("TaskName"){
code {
def theDefRef
//DefRef from EcucGeneral container
theDefRef = EcucGeneral.DefRef
//DefRef from generated parameter
theDefRef = CPUType.DefRef
//Or the same
theDefRef = EcucGeneral.CPUTypeDefRef
//DefRef from simple parameter
theDefRef = EcucGeneral.AtomicBitAccessInBitfieldDefRef
theDefRef = EcucGeneral.DummyFunctionDefRef
}
}
Listing 4.69: Usage of generated DefRefs form the bswmd model
4.6.3.6 Switching from Domain Models to BswmdModel
You can switch from domain models to the BswmdModel, if the domain model is backed by Ac-
tiveEcuC elements. Please read the documentation of the different domain models, for whether
this is possible for a certain domain model.
To switch from a domain model to the BswmdModel, you can call one of the methods for IHas-
ModelObjects like, bswmdModel(IHasModelObject, WrappedTypedDefRef). But you need a
DefRef to get the type safe BswmdModel object. The domain model documents, which DefRef
must be used for the certain domain model object.
// Domain model object of the communication domain
ICanController canDomainModel = ...
def canControllerBswmd = canDomainModel.bswmdModel(CanController.DefRef)
// Or use a closure
canDomainModel.bswmdModel(CanController.DefRef){ canControllerBswmd ->
//Use the bswmd object
}
Listing 4.70: Switch from a domain model object to the corresponding BswmdModel object
4.6.4 MDF Model in AutomationInterface
Access to the MDF model is required in all areas which are not covered by the BswmdModel.
This is the SystemDescription (non-Ecuc data) and details of the Ecuc model which are not
covered by the BswmdModel.
The MDF model implements the raw AUTOSAR data model and is based on the AUTOSAR
meta-model. For details about the MDF model, see chapter 5.1 on page 152.
© 2016, Vector Informatik GmbH
73 of 207


Chapter 4.
AutomationInterface API Reference
For more details concerning the methods mentioned in this chapter, you should also read the
JavaDoc sections in the described interfaces and classes.
4.6.4.1 Reading the MDF Model
The mdfModel() methods provide entry points to start navigation through the MDF model.
Client code can use the Closure overloads to navigate into the content of the found MDF
objects. Inside the called closure the related MDF object is available as closure parameter.
The following types of entry points are provided here:
• mdfModel(TypedAsrPath) searches an object with the specified AUTOSAR path
• mdfModel(TypedDefRef) searches all objects with the specified definition
• mdfModel(Class) searches all objects with the specified model type (meta class)
When a closure is being used, the object found by mdfModel() is provided as parameter when
this closure is called:
code {
// Create a type-safe AUTOSAR path for a MIVariableDataPrototype
def asrPath =
AsrPath.create("/PortInterfaces/PiSignal_Dummy/DeSignal_Dummy", MIVariableDataPrototype)
// Use the Java-Style syntax
def dataDefPropsMdf = mdfModel(asrPath).swDataDefProps
// Or use the Closure syntax to navigate
// Enter the MDF model tree starting at the object with this path
mdfModel(asrPath) {
// Parameter type is MIVariableDataPrototype:
dataPrototype ->
// Traverse down to the swDataDefProps
dataPrototype.swDataDefProps {MISwDataDefProps props
println "Do something ..."
}
}
}
Listing 4.71: Navigate into an MDF object starting with an AUTOSAR path
The mdfModel() method itself returns the found object too. Retrieving the objects member
(as property) is then possible directly using the returned object.
An alternative is using a closure to navigate into the MDF object and access its member
there:
© 2016, Vector Informatik GmbH
74 of 207


Chapter 4.
AutomationInterface API Reference
// Get an MDF object and get its members directly
def obj = mdfModel(asrPath) // Type MIVariableDataPrototype
def props = obj.swDataDefProps // Type MISwDataDefProps
// Get an MDF object and get its members using a closure
def props2
def obj2 = mdfModel(asrPath) {
props2 = swDataDefProps
}
// The results are the same
assert obj == obj2
assert props == props2
Listing 4.72: Find an MDF object and retrieve some content data
Closures can be nested to navigate deeply into the MDF model tree:
mdfModel(asrPath) {
int count = 0
swDataDefProps {
// swDataDefPropsVariant is a List<MISwDataDefPropsConditional>
// Execute the following for ALL elements of this List
List v = swDataDefPropsVariant {
println "Do something ..."
count++
}
}
assert count >= 1
}
Listing 4.73: Navigating deeply into an MDF object with nested closures
When a member doesn’t exist during navigation into a deep MDF model tree, the specified
closure is not called:
mdfModel(asrPath) {
int count = 0
assert adminData == null
adminData {
count++
}
assert count == 0
}
Listing 4.74: Ignoring non-existing member closures
Retrieving a Child by Shortname or Definition
There are multiple ways to retrieve children
from an MDF model object, by the shortname or by its definition. The shortname can be used
at the object with childByName() or at the child list with byName().
childByName
The childByName(MIARObject, String, Closure) method calls the passed
Closure, if the requrest child exists. And returns the child MIReferrable below the specified
object which has this relative AUTOSAR path (not starting with ’/’).
© 2016, Vector Informatik GmbH
75 of 207


Chapter 4.
AutomationInterface API Reference
MIContainer canGeneral = ...
canGeneral.childByName("CanMainFunctionRWPeriods"){ child->
//Do something
}
Listing 4.75: Get a MIReferrable child object by name
Lists containing Referrables
• The method byName(String) retrieves the child with the shortname, or null, if no child
exists with this shortname.
• The method byName(String, Closure) retrieves the child with the shortname, or null,
if no child exists with this shortname. Then the closure is executed with the child as
closure parameter, if the child is not null. The child is finally returned.
• The method byName(Class, String) retrieves the child with the shortname and type,
or null, if no child exists with this shortname.
• The method byName(Class, String, Closure) retrieves the child with the shortname
and type, or null, if no child exists with this shortname. Then the closure is executed
with the child as closure parameter, if the child is not null. The child is finally returned.
• The method getAt(String) all members with this relative AUTOSAR path. Groovy
also allows to write list["ShortnameToSearchFor"].
// The asrPath points to an MISenderReceiverInterface
def prototype = mdfModel(asrPath)
// byName() with shortname
def data1 = prototype.dataElement.byName("DeSignal_Dummy")
assert data1.name == "DeSignal_Dummy"
// byName() with type and shortname
def data2 = prototype.dataElement.byName(MIVariableDataPrototype, "DeSignal2")
// getAt() with shortname
def data3 = prototype.dataElement["DeSignal3"]
Listing 4.76: Retrieve child from list with byName()
Lists containing Parameters and Containers
• The method getAt(TypedDefRef) returns all children with the passed definition. Groovy
also allows to write list[DefRef].
4.6.4.2 Writing the MDF Model
Writing to the MDF model can be done with the same mdfModel(AsrPath) API, but you have
to call specific methods to modify the model objects. The methods are devided in the following
use cases:
• Change a simple property like Strings
• Change or create a single child relateion (0:1)
• Create a new child for a child list (0:*)
© 2016, Vector Informatik GmbH
76 of 207


Chapter 4.
AutomationInterface API Reference
• Update an existing child from a child list (0:*)
You have to open a transaction before you can modify the MDF model, see chapter 4.6.6 on
page 88 
for details about transactions.
4.6.4.3 Simple Property Changes
The properties of MDF model object simply be changed by with the setter method of the model
object. Simple setter exist for example for the types:
• String
• Enums
• Integer
• Double
transaction{
// The asrPath points to an MIVariableDataPrototype
mdfModel(asrPath) { dataPrototype ->
dataPrototype.category = "NewCategory"
}
}
Listing 4.77: Changing a simple property of an MIVariableDataPrototype
4.6.4.4 Creating single Child Members (0:1)
For single child members (0:1), the automation API provides and additional method for the
getter get<Element>OrCreate() for convenient child object creation. The methods will create
the element, instead of returning null.
transaction{
// The asrPath points to an MIVariableDataPrototype
mdfModel(asrPath) {
int count = 0
assert adminData == null
adminDataOrCreate {
count++
}
assert count == 1
assert adminData != null
}
}
Listing 4.78: Creating non-existing member by navigating into its content with OrCreate()
If the compile time child type is not instatiatable, you have to provide the concrete type by
get<Element>OrCreate(Class childType).
© 2016, Vector Informatik GmbH
77 of 207


Chapter 4.
AutomationInterface API Reference
transaction{
// The asrPath points to an MIVariableDataPrototype
mdfModel(asrPath) {
introductionOrCreate(MIBlockLevelContent) { docuBlock ->
assert docuBlock instanceof MIBlockLevelContent
}
}
}
Listing 4.79: Creating child member by navigating into its content with OrCreate() with type
4.6.4.5 Creating and adding Child List Members (0:*)
For child list members, the automation API provides many createAndAdd() methods for con-
venient child object creation. These method will always create the element, regardless if the
same element (e.g. same ShortName) already exists.
If you want to update element see the chapter 4.6.4.6 on page 80.
transaction{
// The asrPath points to an MIVariableDataPrototype
mdfModel(asrPath) {
assert adminData.sdg.empty
adminData {
sdg.createAndAdd(MISdg) {
gid = "NewGidValue"
}
}
assert adminData.sdg.first.gid == "NewGidValue"
}
}
Listing 4.80: Creating new members of child lists with createAndAdd() by type
These methods are available — but be aware that not all of these methods are available for all
child lists. Adding parameters, for example, is only permitted in the parameter child list of an
MIContainer instance.
All Lists:
• The method createAndAdd() creates a new MDF object of the lists content type and
appends it to this list. If the type is not instantiatable the method will thrown a Mod-
elException. The new object is finally returned.
• The method createAndAdd(Closure) creates a new MDF object of the lists content type
and appends it to this list. If the type is not instantiatable the method will thrown a
ModelException. Then the closure is executed with the new object as closure parameter.
The new object is finally returned.
• The method createAndAdd(Class) creates a new MDF object of the specified type and
appends it to this list. The new object is finally returned.
• The method createAndAdd(Class, Closure) creates a new MDF object of the specified
type and appends it to this list. Then the closure is executed with the new object as
closure parameter. The new object is finally returned.
© 2016, Vector Informatik GmbH
78 of 207


Chapter 4.
AutomationInterface API Reference
• The method createAndAdd(Class, Integer) creates a new MDF object of the specified
type and inserts it to this list at the specified index position. The new object is finally
returned.
• The method createAndAdd(Class, Integer, Closure) creates a new MDF object of
the specified type and inserts it to this list at the specified index position. Then the
closure is executed with the new object as closure parameter. The new object is finally
returned.
Lists containing Referrables
• The method createAndAdd(String) creates a new child with the specified shortname
and appends it to this list. The new object is finally returned. The used type is the lists
content type. If the type is not instantiatable the method will thrown a ModelException.
• The method createAndAdd(String, Closure) creates a new MIReferrable with the
specified shortname and appends it to this list. Then the closure is executed with the new
object as closure parameter. The new object is finally returned. The used type is the lists
content type. If the type is not instantiatable the method will thrown a ModelException.
• The method createAndAdd(Class, String) creates a new MIReferrable with the spec-
ified type and shortname and appends it to this list. The new object is finally returned.
• The method createAndAdd(Class, String, Closure) creates a new MIReferrable with
the specified type and shortname and appends it to this list. Then the closure is executed
with the new object as closure parameter. The new object is finally returned.
• The method createAndAdd(Class, String, Integer) creates a new MIReferrable with
the specified type and shortname and inserts it to this list at the specified index position.
The new object is finally returned.
• The method createAndAdd(Class, String, Integer, Closure) creates a new MIRe-
ferrable with the specified type and shortname and inserts it to this list at the specified
index position. Then the closure is executed with the new object as closure parameter.
The new object is finally returned.
Lists containing Parameters and Containers
• The method createAndAdd(TypedDefRef) creates a new Ecuc object (container or pa-
rameter) with the specified definition and appends it to this list. The new object is finally
returned.
• The method createAndAdd(TypedDefRef, Closure) creates a new Ecuc object (con-
tainer or parameter) with the specified definition and appends it to this list. Then the
closure is executed with the new object as closure parameter. The new object is finally
returned.
• The method createAndAdd(TypedDefRef, Integer) creates a new Ecuc object (con-
tainer or parameter) with the specified definition and inserts it to this list at the specified
index position. The new object is finally returned.
• The method createAndAdd(TypedDefRef, Integer, Closure) creates a new Ecuc ob-
ject (container or parameter) with the specified definition and inserts it to this list at
the specified index position. Then the closure is executed with the new object as closure
parameter. The new object is finally returned.
© 2016, Vector Informatik GmbH
79 of 207


Chapter 4.
AutomationInterface API Reference
Lists containing Containers
• The method createAndAdd(TypedDefRef, String) creates a new container with the
specified definition and shortname and appends it to this list.
The new container is
finally returned.
• The method createAndAdd(TypedDefRef, String, Closure) creates a new container
with the specified definition and shortname and appends it to this list. Then the closure
is executed with the new container as closure parameter. The new container is finally
returned.
• The method createAndAdd(TypedDefRef, String, Integer) creates a new container
with the specified definition and shortname and inserts it to this list at the specified index
position. The new container is finally returned.
• The method createAndAdd(TypedDefRef, String, Integer, Closure) creates a new
container with the specified definition and shortname and inserts it to this list at the
specified index position. Then the closure is executed with the new container as closure
parameter. The new container is finally returned.
4.6.4.6 Updating existing Elements
For child list members, the automation API provides many byNameOrCreate() methods for
convenient child object update and creation on demand. These method will create the element
if id does not exists, or return the existing element.
transaction{
// The path points to an MISenderReceiverInterface
mdfModel(asrPath) { sendRecIf ->
def dataList = sendRecIf.dataElement
def dataElement = dataList.byNameOrCreate("MyDataElement")
dataElement.name = "NewName"
def dataElement2 = dataList.byNameOrCreate("NewName")
assert dataElement == dataElement2
}
}
Listing 4.81: Updating existing members of child lists with byNameOrCreate() by type
These methods are available — but be aware that not all of these methods are available for all
child lists. Updating container, for example, is only permitted in the parameter child list of an
MIContainer instance.
Lists containing Referrables
• The method byNameOrCreate(String) retrieves the child with the passed shortname, or
creates the child, if it does not exist. The shortname is automatically set before returning
the new child.
• The method byNameOrCreate(TypedDefRef, String,Closure) retrieves the child with
the passed shortname, or creates the child, if it does not exist. The shortname is auto-
matically set before returning the new child. Then the closure is executed with the child
as closure parameter. The child is finally returned.
© 2016, Vector Informatik GmbH
80 of 207


Chapter 4.
AutomationInterface API Reference
• The method byNameOrCreate(Class, String) retrieves the child with the passed type
and shortname, or creates the child, if it does not exist. The shortname is automatically
set before returning the new child.
• The method byNameOrCreate(Class, String,Closure) retrieves the child with the passed
type and shortname, or creates the child, if it does not exist. The shortname is automat-
ically set before returning the new child. Then the closure is executed with the child as
closure parameter. The child is finally returned.
Lists containing Containers
• The method byNameOrCreate(TypedDefRef, String) retrieves the child with the passed
definition and shortname, or creates the child, if it does not exist. The definition and
shortname are automatically set before returning the new child.
• The method byNameOrCreate(TypedDefRef, String, Closure) retrieves the child with
the passed definition and shortname, or creates the child, if it does not exist. The definition
and shortname are automatically set before returning the new child. Then the closure is
executed with the child as closure parameter. The child is finally returned.
4.6.4.7 Deleting Model Objects
The method moRemove(MIObject) deletes the specified object from the model. This method
must be called inside a transaction because it changes the model content.
Special case: If this method is being called on an active module configuration, it actually calls
IOperations.deactivateModuleConfiguration(MIModuleConfiguration) to deactivate the
module correctly.
// MIParameterValue param = ...
transaction {
assert !param.moIsRemoved()
param.moRemove()
assert param.moIsRemoved()
}
Listing 4.82: Delete a parameter instance
For details about model object deletion and access to deleted objects, read section 5.1.7.4 on
page 157 
ff.
moIsRemoved
The getMoIsRemoved(MIObject) method returns true if the specified object
has been removed (deleted) from the MDF model.
MIObject obj = ...
if (!obj.moIsRemoved()) {
work with obj ...
}
Listing 4.83: Check is a model instance is deleted
© 2016, Vector Informatik GmbH
81 of 207


Chapter 4.
AutomationInterface API Reference
4.6.4.8 Duplicating Model Objects
The duplicate(MIObject) method copies (clones) a complete MDF model sub-tree and adds
it as child below the same parent.
• The source object must have a parent. The clone will be added to the same MDF feature
below the same parent then
• AUTOSAR UUIDs will not be cloned. The clone will contain new UUIDs to guarantee
unambiguousness
This method can clone any model sub-tree, also see IOperations.deepClone(MIObject, MIOb-
ject) for details.
Note: This operation must be executed inside of a transaction.
// MIContainer container = ...
transaction {
def newCont = container.duplicate()
// The duplicated container newCont
}
Listing 4.84: Duplicates a container under the same parent
4.6.4.9 Special properties and extensions
asrPath
The getAsrPath(MIReferrable) method returns the AUTOSAR path of the speci-
fied object.
MIContainer canGeneral = ...
AsrPath path = canGeneral.asrPath
Listing 4.85: Get the AsrPath of an MIReferrable instance
See chapter 5.4.1 on page 177 for more details about AsrPaths.
asrObjectLink
The getAsrObjectLink(MIARObject) method returns the AsrObjectLink of
the specified object.
MIParameterValue param = ...
AsrObjectLink link = param.asrObjectLink
Listing 4.86: Get the AsrObjectLink of an AUTOSAR model instance
See chapter 5.4.2 on page 177 for more details about AsrObjectLinks.
defRef
The getDefRef() method returns the DefRef of the model object.
MIParameterValue param = ...
DefRef defRef = param.defRef
Listing 4.87: Get the DefRef of an Ecuc model instance
The MIParameterValue.setDefRef(DefRef) method sets the definition of this parameter to
the defRef.
© 2016, Vector Informatik GmbH
82 of 207


Chapter 4.
AutomationInterface API Reference
MIParameterValue param = ...
DefRef newDefinition = ...
param.defRef = newDefinition
Listing 4.88: Set the DefRef of an Ecuc model instance
If the specified DefRef has a wildcard, the parameter must have a parent to calculate the
absolute definition path - otherwise a ModelCeHasNoParentException will be thrown.
If is has no wildcard and no parent, the absolute definition path of the defRef will be used.
If the parameter has a parent or and parents definition does not match the defRefs parent
definition, this method fails with InconsistentParentDefinitionException.
The MIContainer.setDefRef(DefRef) method sets the definition of this container to the de-
fRef.
See chapter 5.4.3 on page 178 for more details about DefRefs.
ceState
The CeState is an object which aggregates states of a related MDF object. Client
code can e.g. check with the CeState if an Ecuc object has a related pre-configuration value.
The getCeState(MIObject) method returns the CeState of the specified model object.
MIParameterValue param = ...
IParameterStatePublished state = param.ceState
Listing 4.89: Get the CeState of an Ecuc parameter instance
See chapter 5.4.4 on page 181 for more details about the CeState.
ceState - User-defined Flag
The method isUserDefined() returns true, if the ecuc config-
uration element like parameters is flagged as user-defined.
MIParameterValue param = ...
def flag = param.ceState.userDefined
Listing 4.90: Retrieve the user-defined flag of an Ecuc parameter in Groovy
The method setUserDefined(boolean) sets or removes the user-defined flag of a ecuc config-
uration element like parameters.
Note: This method must executed inside a transaction because it modifies the model state.
MIParameterValue param = ...
transaction {
param.ceState.userDefined = true
}
Listing 4.91: Set an Ecuc parameter instance to user defined
4.6.4.10 AUTOSAR Root Object
The getAUTOSAR() method returns the AUTOSAR root object (the root object of the MDF
model tree of AUTOSAR data).
© 2016, Vector Informatik GmbH
83 of 207


Chapter 4.
AutomationInterface API Reference
MIAUTOSAR root = AUTOSAR
Listing 4.92: Get the AUTOSAR root object
4.6.4.11 ActiveEcuC
The activeEcuc access methods provide access to the module configurations of the Ecuc model.
// Get the modules as Collection<MIModuleConfiguration>
Collection modules = activeEcuc.allModules
Listing 4.93: Get the active Ecuc and all module configurations
// Iterate over all module configurations
activeEcuc {
int count = 0
allModules.each { moduleCfg ->
count++
}
assert count > 1
}
Listing 4.94: Iterate over all module configurations
activeEcuc {
// Parameter type is IActiveEcuc
ecuc ->
def defRef = DefRef.create(EDefRefWildcard.AUTOSAR, "EcuC")
// Get the modules as Collection<MIModuleConfiguration>
Collection foundModules = ecuc.modules(defRef)
assert !foundModules.empty
}
Listing 4.95: Get module configurations by definition
4.6.4.12 DefRef based Access to Containers and Parameters
The Groovy automation interface for the MDF model provides some overloaded access methods
for
• MIModuleConfiguration.getSubContainer()
• MIContainer.getSubContainer()
• MIContainer.getParameter()
to offer convenient filtering access to the subContainer and parameter child lists.
© 2016, Vector Informatik GmbH
84 of 207


Chapter 4.
AutomationInterface API Reference
activeEcuc {
// Parameter type is IActiveEcuc
ecuc ->
def module = ecuc.modules(EcuC.DefRef).first
// Get containers as List<MIContainer>
def containers = module.subContainer(EcucGeneral.DefRef)
// Get parameters as List<MIParameterValue>
def cpuType = containers.first.parameter(CPUType.DefRef)
assert cpuType.size() == 1
}
Listing 4.96: Get subContainers and parameters by definition
4.6.4.13 Ecuc Parameter and Reference Value Access
The Groovy automation interface also provides special access methods for Ecuc parameter
values. These methods are implemented as extensions of the Ecuc parameter and value types
and can therefore be called directly at the parameter or reference instance.
Value Checks
• hasValue(MIParameterValue)
returns true if the parameter (or reference) has a value.
• containsBoolean(MINumericalValue)
returns true if the parameter value contains a valid boolean with the same semantic as
IModelAccess.containsBoolean(MINumericalValue).
Call this method in advance
to guarantee that getAsBoolean(MINumericalValueVariationPoint) doesn’t lead to
errors.
• containsInteger(MINumericalValue)
returns true if the parameter value contains a valid integer with the same semantic as
IModelAccess.containsInteger(MINumericalValue).
Call this method in advance
to guarantee that getAsInteger(MINumericalValueVariationPoint) doesn’t lead to
errors.
• containsDouble(MINumericalValue)
returns true if the parameter value contains a valid double (AUTOSAR float) with the
same semantic as
IModelAccess.containsFloat(MINumericalValue).
Call this method in advance
to guarantee that getAsDouble(MINumericalValueVariationPoint) doesn’t lead to er-
rors.
© 2016, Vector Informatik GmbH
85 of 207


Chapter 4.
AutomationInterface API Reference
// MINumericalValue param = ...
if (!param.hasValue()) {
scriptLogger.warn "The parameter has no value!"
}
if (param.containsInteger()) {
int value = param.value.asInteger
}
Listing 4.97: Check parameter values
Parameters
• getAsLong(MINumericalValueVariationPoint) returns the value as native long.
Throws NumberFormatException if the value string doesn’t represent an integer value.
Throws ArithmeticException if the value will not exactly fit in a long.
• getAsInteger(MINumericalValueVariationPoint) returns the value as native int.
Throws NumberFormatException if the value string doesn’t represent an integer value.
Throws ArithmeticException if the value will not exactly fit in an int.
• getAsBigInteger(MINumericalValueVariationPoint) returns the value as BigInte-
ger.
Throws NumberFormatException if the value string doesn’t represent an integer value.
• getAsDouble(MINumericalValueVariationPoint) returns the value as Double.
Throws NumberFormatException if the value string doesn’t represent a float value.
• getAsBigDecimal(MINumericalValueVariationPoint) returns the value as BigDeci-
mal.
Note: This method will possibly return MBigDecimal.POSITIVE_INFINITY, MBigDeci-
mal.NEGATIVE_INFINITY or MBigDecimal.NaN.
If it is necessary to do computations with these special numbers,
use getAsDouble(MINumericalValueVariationPoint) instead.
Throws NumberFormatException if the value string doesn’t represent a float value.
• getAsBoolean(MINumericalValueVariationPoint) returns the value as Boolean.
Throws NumberFormatException if the value string doesn’t represent a boolean value.
• asCustomEnum(MITextualValue, Class) returns the value of the enum parameter as a
custom enum literal. If the Class destClass implements the IModelEnum interface, the lit-
erals are mapped via these information form the IModelEnum interface. Read the JavaDoc
of IModelEnum for more details.
© 2016, Vector Informatik GmbH
86 of 207


Chapter 4.
AutomationInterface API Reference
// MINumericalValue param = ...
// MINumericalValueVariationPoint is the type of param.value
long longValue = param.value.asLong
assert longValue == 10
int intValue = param.value.asInteger
assert intValue == 10
BigInteger bigIntValue = param.value.asBigInteger
assert bigIntValue == BigInteger.valueOf(10)
Double doubleValue = param.value.asDouble
assert Math.abs(doubleValue-10.0) <= 0.0001
Listing 4.98: Get integer parameter value
References
• getAsAsrPath(MIARRef) returns the reference value as AUTOSAR path.
• getAsAsrPath(MIReferenceValue) returns the reference parameters value as AUTOSAR
path.
• getRefTarget(MIReferenceValue) returns the reference parameters target object (the
object referenced by this parameter). It returns null if the target cannot be resolved or
the reference parameter doesn’t contain a value reference.
// MIReferenceValue refParam = ...
def asrPath1 = refParam.asAsrPath
def asrPath2 = refParam.value.asAsrPath
assert asrPath1 == asrPath2
String pathString = refParam.value.value
assert asrPath1.autosarPathString == pathString
def target1 = refParam.refTarget
def target2 = refParam.value.refTarget
assert target1 == target2
Listing 4.99: Get reference parameter value
4.6.5 SystemDescription Access
The systemDescription API provides methods to retrieve system description data like the path
to the flat extract or the flat map instance.
It is grouped by the AUTOSAR version. So the getAutosar4() methods provides access to
AUTOSAR 4 model elements.
The getPaths() provides common paths to elements like:
• FlatMap path
• FlatExtract path
• FlatCompositionType path
© 2016, Vector Informatik GmbH
87 of 207


Chapter 4.
AutomationInterface API Reference
AsrPath flatExtractPath = systemDescription.paths.flatExtractPath
AsrPath flatMapPath = systemDescription.paths.flatMapPath
Listing 4.100: Get the FlatExtract and FlatMap paths by the SystemDescription API
systemDescription{
autosar4{
flatExtract.ifPresent{ theFlatExtract ->
// do something with the flatMap
}
}
}
// Or in property style
def theFlatExtractOpt = systemDescription.autosar4.flatExtract
if(theFlatExtractOpt){
def theFlatExtract = theFlatExtractOpt.get()
}
Listing 4.101: Get FlatExtract instance by the SystemDescription API
4.6.6 Transactions
Model changes must always be executed within a transaction. The automation API provides
some simple means to execute transactions.
For details about transactions read 5.1.7 on page 156.
scriptTask("TaskName", DV_PROJECT){
code {
transaction{
// Your transaction code here
}
}
}
Listing 4.102: Execute a transaction
scriptTask("TaskName", DV_PROJECT){
code {
transaction("Transaction name") {
// The transactionName proptery is available inside a transaction
String name = transactionName
}
}
}
Listing 4.103: Execute a transaction with a name
The transaction name has no additional semantic. It is only be used for logging and to improve
error messages.
Nested Transactions
If you open a transaction inside of a transaction the inner transaction is
ignored and it is as no transaction call was done. So be aware that nested transactions are no
real transaction, which leads to the fact the these nested transactions can not be undone.
© 2016, Vector Informatik GmbH
88 of 207


Chapter 4.
AutomationInterface API Reference
If you want to know whether a transaction is already running, see the transactions API be-
low.
4.6.6.1 Transactions API
The Transactions API with the keyword transactions provides access to running transactions
or the transaction history.
You can use method isTransactionRunning() to check if a transaction is currently running.
The method returns true, if a transaction is running in the current Thread.
scriptTask("TaskName", DV_PROJECT){
code {
// Switch to the transactions API
transactions{
//Check if a transaction is running
assert isTransactionRunning() == false
// Open a transaction
transaction{
// Now a transaction is running
assert isTransactionRunning() == true
}
}
// Or the short form
transactions.isTransactionRunning()
}
}
Listing 4.104: Check if a transaction is running
TransactionHistory
The transaction history API provides some methods to handle transaction
undo and redo. This way, complex model changes can be reverted quite easily.
• The undo() method executes an undo of the last transaction. If the last transaction frame
cannot be undone or if the undo stack is empty this method returns without any changes.
• The undoAll() method executes undo until the transaction stack is empty or an undoable
transaction frame appears on the stack.
• The redo() method executes an redo of the last undone transaction. If the last undone
transaction frame cannot be redone or if the redo stack is empty this method returns
without any changes.
• The canUndo() method returns true if the undo stack is not empty and the next undo
frame can be undone. This method changes nothing but you can call it to find out if the
next undo() call would actually undo something.
• The canRedo() method returns true if the redo stack is not empty and the next redo
frame can be redone. This method changes nothing but you can call it to find out if the
next redo() call would actually redo something.
© 2016, Vector Informatik GmbH
89 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName", DV_PROJECT){
code {
transaction("TransactionName") {
// Your transaction code here
}
transactions{
assert transactionHistory.canUndo()
transactionHistory.undo()
assert !transactionHistory.canUndo()
}
}
}
Listing 4.105: Undo a transaction with the transactionHistory
scriptTask("TaskName", DV_PROJECT){
code {
transaction("TransactionName") {
// Your transaction code here
}
transactions{
transactionHistory.undo()
assert transactionHistory.canRedo()
transactionHistory.redo()
assert !transactionHistory.canRedo()
}
}
}
Listing 4.106: Redo a transaction with the transactionHistory
4.6.6.2 Operations
The model operations implement convenient means to execute complex model changes like
AUTOSAR module activation or cloning complete model sub-trees.
• The method activateModuleConfiguration(DefRef) activates the specified module con-
figuration. This covers:
– Creation of the module including the reference in the ActiveEcuC (the ECUC-VALUE-
COLLECTION)
– Creation of mandatory containers and parameters (lower multiplicity > 0)
– Applying the recommended configuration
– Applying the pre-configuration values
• The method deactivateModuleConfiguration(MIModuleConfiguration) deletes the
specified module configuration from the model. In case of a split configuration, the re-
lated persistency location is being removed from the project settings. In XML file base
configurations, the related file is being deleted during the next project save if it doesn’t
contain configuration objects anymore.
© 2016, Vector Informatik GmbH
90 of 207


Chapter 4.
AutomationInterface API Reference
If the module configuration is referenced from the active-ECUC this link is being removed
too.
• The method changeBswImplementation(MIModuleConfiguration, MIBswImplementa-
tion) changes the BSW-implementation of a module configuration including the definition
of all contained containers and parameters.
• The deepClone(MIObject, MIObject) operation copies (clones) a complete MDF model
sub-tree and adds it as child below the specified parent.
– The source object must have a parent. The clone will be added to the same MDF
feature below the destination parent then
– AUTOSAR UUIDs will not be cloned. The clone will contain new UUIDs to guar-
antee unambiguousness
• The method createModelObject(Class) creates a new element of the passed modelClass
(meta class). The modelObject must be added to the whole AUTOSAR model, before
finishing the transaction.
4.6.7 Post-build selectable Variance
The variance access API is the entry point for convenient access to variant AUTOSAR model
content. It provides means to filter variant model content and access variant specific data.
For details about post-build selectable variance and model views read 5.2 on page 158.
4.6.7.1 Investigate Project Variance
The projects variance can be analyzed using the variance keyword. These methods can be
called then:
• The method hasPostBuildVariance() returns true if the active project contains post-
build variants.
• The method getInvariantValuesView() returns the invariant values view.
• The method getInvariantEcucDefView() returns the invariant Ecuc definition view.
• The method getCurrentlyActiveView() returns the currently active model view.
• The method getAllVariantViews() returns all available variant model views (one IPrede-
finedVariantView per predefined varient).
© 2016, Vector Informatik GmbH
91 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("TaskName", DV_PROJECT){
code{
def activeView1 = variance.currentlyActiveView
assert activeView1 instanceof IInvariantValuesView
// ... or with a closure
variance {
def activeView2 = currentlyActiveView
assert activeView1 == activeView2
assert activeView1 == invariantValuesView
// Get number of variants
int num = allVariantViews.size()
assert num == 4
}
}
}
Listing 4.107: The default view is the IInvariantValuesView
4.6.7.2 Variant Model Objects
The following model object extensions provide convenient means to investigate model object
variance in detail.
• The method activeWith(IModelView, Closure) executes code under visibility of the
specified model view.
• The method isModelInvariant(MIObject) returns true if the object and all its parents
has no variation point conditions. If this is true, this model object instance is visible in
all variant views.
• The method isValueInvariant(MIObject) returns true if the object has the same value
in all variants.
For details about invariant views see 5.2.1.4 on page 161.
• The method isEcucDefInvariant(MIObject) returns true if the object is invariant ac-
cording to its EcuC definition.
See IInvariantEcucDefView for more details to the concept.
• The method isVisible(MIObject) returns true if the object is visible in the current
model view.
• The method isVisibleInModelView(MIObject, IModelView) returns true if the object
is visible in the specified model view.
• The method isNeverVisible(MIObject) returns true if the object is invisible in all
variant views.
• The method getVisibleVariantViews(MIObject) returns all variant views the specified
object is visible in.
• The method getVisibleVariantViewsOrInvariant(MIObject) For semantic details see
IModelViewManager.getVisibleVariantViewsOrInvariant(MIObject).
• The method asViewedModelObject(MIObject) returns a new IViewedModelObject in-
stance using the currently active view.
© 2016, Vector Informatik GmbH
92 of 207


Chapter 4.
AutomationInterface API Reference
• The method getVariantSiblings(MIObject) returns MDF object instances representing
the same object but in all variants.
For details about the sibling semantic see 5.2.1.3 on page 160.
• The method getVariantSiblingsWithoutMyself(MIObject) returns the same collection
as getVariantSiblings(MIObject) but without the specified object.
// IPredefinedVariantView viewDoorLeftFront = ...
// MIParameterValue variantParameter = ...
viewDoorLeftFront.activeWith {
assert variance.currentlyActiveView == viewDoorLeftFront
// The parameter instance is not visible in all variants ...
assert !variantParameter.isModelInvariant()
// ... but all variants have a sibling with the same value
assert variantParameter.isValueInvariant()
}
Listing 4.108: Execute code in a model view
© 2016, Vector Informatik GmbH
93 of 207


Chapter 4.
AutomationInterface API Reference
4.7 Generation
The following chapter describes the module generation automation API.
The block generation encapsulates all settings and commands which are related to this use
case.
The basic structure is the following:
generation{
settings{
// Settings like the selection of generators for execution can be done here
externalGenerationSteps{
// Settings related to externalGenerationSteps can be done here
}
}
// The execution of the generation or validation can be started here
}
Listing 4.109: Basic structure
4.7.1 Settings
This class encapsulates all settings which belong to a generation process.
E.g.
• Select the generators to execute
• Select the target type
• Select the external generation steps
• If the module supports multiple module configurations, select the configurations which
shall be generated
The following chapters show samples for the standard use cases.
4.7.1.1 Default Project Settings
The following snippet executes a validation with the default project settings.
scriptTask("validate_with_default_settings"){
code{
generation{
validate()
}
}
}
Listing 4.110: Validate with default project settings
To execute a generation with the standard project settings the following snippet can be used.
The validation is executed implicitly before the generation because of AUTOSAR require-
ments.
© 2016, Vector Informatik GmbH
94 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("generate_with_default_settings"){
code{
generation{
generate()
}
}
}
Listing 4.111: Generate with standard project settings
4.7.1.2 Generate One Module
This sample selects one specific module and starts the generation. There are two ways to open
an settings block:
• settings
– This keyword creates empty settings. E.g. no module is selected for execution.
• settingsFromProject
– This keyword takes the project settings as template. E.g. modules from the project
settings are initially activated and can optionally be refined by explicit selections.
scriptTask("generate_one_module"){
code{
generation{
settings{
// To take the project settings as template use
// settingsFromProject{
selectGeneratorsByDefRef("/MICROSAR/Aaa")
}
generate()
}
}
}
Listing 4.112: Generate one module
Instead of selecting the generator directly by its DefRef, there is also the possibility to fetch
the generator object and select this object for execution.
scriptTask("generate_one_module"){
code{
generation{
settings{
// To take the project settings as template use
// settingsFromProject{
def gens = generatorByDefRef ("/MICROSAR/Aaa")
selectGenerators(gens)
}
generate()
}
}
}
Listing 4.113: Generate one module
© 2016, Vector Informatik GmbH
95 of 207


Chapter 4.
AutomationInterface API Reference
4.7.1.3 Generate Multiple Modules
To select more than one generator the following snippet can be used.
scriptTask("generate_two_modules"){
code{
generation{
settings{
selectGeneratorsByDefRef ("/MICROSAR/Aaa", "/MICROSAR/Bbb")
}
generate()
}
}
}
Listing 4.114: Generate two modules
4.7.1.4 Generate Multi Instance Modules
Some module definitions have a upper multiplicity greater than one. (E.g. [0:5] or [0:*]) This
means it is allowed to create more than one module configuration from this module definition.
If the related generator is started with the default API, all available module configurations are
selected for generation. The following API can be used to generate only a subset of all related
module configurations.
scriptTask("generate_one_module_with_two_configs"){
code{
generation{
settings{
def gen = generatorByDefRef ("/MICROSAR/MultiInstModule")
// clear default selection
gen.deselectAllModuleInstances()
// Select the module configurations to generate
gen.selectModuleInstance(AsrPath.create("/ActiveEcuC/MultiInstModule1"))
// Instead of the full qualified path, the module configuration short name can
also be used
gen.selectModuleInstance("MultiInstModule2")
}
generate()
}
}
}
Listing 4.115: Generate one module with two configurations
4.7.1.5 Generate External Generation Step
Besides the internal generators, which are covered by the topics above, there are also external
generation steps which can be executed with the following API. A new block externalGener-
ationSteps within the settings block encapsulates all settings related to external generation
scripts.
© 2016, Vector Informatik GmbH
96 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("generate_ext_gen_step"){
code{
generation{
settings{
externalGenerationSteps{
// To take the project settings as template use
// externalGenerationStepsFromProject{}
selectStep("ExtGen1")
selectStep("ExtGen2")
}
}
generate()
}
}
}
Listing 4.116: Execute an external generation step
4.7.1.6 Evaluate generation or validation results
Each validation and generation process has an overall result which states if the execution has
been successfully or not. Additionally to the overall state, the state of one specific generator can
also be of interest. To provide a possibility to access this information all methods for validate
and generate return an IGenerationResultModel.
scriptTask("generate_with_default_settings"){
code{
generation{
def result = generate()
println "Overall result : " + result.result
println "Duration : " + result.formattedDuration
// Access results of each generator or generation step
result.generationResultRoot.allGeneratorAndStepElements.each {
println "Generator name : " + it.name
println "Result : " + it.currentState
}
}
}
}
Listing 4.117: Evaluate the generation result
© 2016, Vector Informatik GmbH
97 of 207


Chapter 4.
AutomationInterface API Reference
4.7.2 Generation Task Types
There are three types of IScriptTaskTypesfor the generation process:
• Generation Step: DV_GENERATION_STEP
• Custom Workflow Step: DV_CUSTOM_WORKFLOW_STEP
• Generation Process Start: DV_ON_GENERATION_START
• Generation Process End: DV_ON_GENERATION_END
The general description of the type is in chapter 4.3.1.4 on page 29. The following code samples
show the usage of these task types:
Generation Step
A sample for the DV_GENERATION_STEP type:
scriptTask("GenStepTask", DV_GENERATION_STEP){
taskDescription "Task is executed as Generation Step"
def myArg = newUserDefinedArgument(
"myArgument",
String,
"Defines a user argument for the GenerationStep")
code{ phase, generationType, resultSink ->
def myArgVal = myArg.value
// The value myArgVal was passed from the generation step in the project settings editor
scriptLogger.info "MyArg is: $myArgVal"
scriptLogger.info "GenerationType is: $generationType"
if(phase.calculation){
// Execute code before / after calculation
transaction {
// Modify the Model in the calculation phase
}
}
if(phase.validation){
// Execute code before / after validation
}
if(phase.generation){
// Execute code before / after generation
}
}
}
Listing 4.118: Use a script task as generation step during generation
The Generation Step can also report validation results into the passed resultSink. See chap-
ter 4.8.5.10 on page 109 for a sample how to create an validation-result and report it.
The generationType defines if the current generation is for the REAL or VTT platform.
© 2016, Vector Informatik GmbH
98 of 207


Chapter 4.
AutomationInterface API Reference
Custom Workflow Step
A sample for the DV_CUSTOM_WORKFLOW_STEP type:
scriptTask("GenStepTask", DV_CUSTOM_WORKFLOW_STEP){
taskDescription "Task is executed as custom workflow step"
def myArg = newUserDefinedArgument(
"myArgument",
String,
"User argument for the step")
code{
def myArgVal = myArg.value
// The value myArgVal was passed from the custom workflow step in the project settings
editor
scriptLogger.info "MyArg is: $myArgVal"
}
}
Listing 4.119: Use a script task as custom workflow step
Generation Process Start
A sample for the DV_ON_GENERATION_START type:
scriptTask("GenStartTask", DV_ON_GENERATION_START){
taskDescription "The task is automatically executed at generation start"
code{ phasesToExecute, generators ->
scriptLogger.info "Phases are: $phasesToExecute"
scriptLogger.info "Generators to execute are: $generators"
// Execute code before the generation will start
}
}
Listing 4.120: Hook into the GenerationProcess at the start with script task
Generation Process End
A sample for the DV_ON_GENERATION_END type:
scriptTask("GenEndTask", DV_ON_GENERATION_END){
taskDescription "The task is automatically executed at generation end"
code{ generationResult, generators ->
scriptLogger.info "Process result was: $generationResult"
scriptLogger.info "Executed Generators: $generators"
// Execute code after the generation process was finished
}
}
Listing 4.121: Hook into the GenerationProcess at the end with script task
© 2016, Vector Informatik GmbH
99 of 207



Chapter 4.
AutomationInterface API Reference
4.8 Validation
4.8.1 Introduction
All examples in this chapter are based on the situation of the figure 4.6. The module and the
validators are not from the real MICROSAR stack, but just for the examples. There is a module
Tp that has 3 Buffer containers and each Buffer has a Size parameter with value=3.
There is also a validator that requires the Size parameter to be a multiple of 4. For each Size
parameter that violates this constraint, a validation-result with ID Tp00012 is created.
Such a validation-result has 2 solving-actions. One that sets the Size to the next smaller valid
value, and one that sets the Size to the next bigger valid value. The letter solving-action is
marked as preferred-solving-action.
There is also a Tp00011 result that stands for any other result. The examples will not touch
it.
Figure 4.6: example situation with the GUI
4.8.2 Access Validation-Results
A validation{} block gives access to the validation API of the consistency component. That
means accessing the validation-results which are shown in the GUI in the validation view,
and solving them by executing solving-actions which are also shown in the GUI beneath each
validation-result (with a bulb icon).
getValidationResults() waits for background-validation-idle and returns all validation-results
© 2016, Vector Informatik GmbH
100 of 207


Chapter 4.
AutomationInterface API Reference
of any kind. The returned collection has no deterministic order, especially it is not the same
order as in the GUI.
scriptTask("CheckValidationResults_filterByOriginId", DV_PROJECT){
code{
validation{
// access all validation-results
def allResults = validationResults
assert allResults.size() > 3
// filter based on methods of IValidationResultUI e.g. isId()
def tp12Results = validationResults.filter{it.isId("Tp", 12)}
assert tp12Results.size() == 3
}
// alternative access to validation-results without a validation block
assert validation.validationResults.size() > 3
}
}
Listing 4.122: Access all validation-results and filter them by ID
4.8.3 Model Transaction and Validation-Result Invalidation
Before we continue in this chapter with solving validation-results, the following information is
import to know:
Relation to model transactions:
Solving validation-results with solving-actions always creates a transaction implicitly. An Il-
legalStateException will be thrown if this is done within an explicitly opened transac-
tion.
Invalidation of validation-results:
Any model modification may invalidate any validation-result. In that case, the responsible val-
idator creates a new validation-result if the inconsistency still exists. Whether this happens for
a particular modification/validation-result depends on the validator implementation and is not
visible to the user/client.
Trying to solve an invalidated validation-result will throw an IllegalStateException.
Therefore it is not safe to solve a particular ISolvingActionUI that was fetched before the last
transaction. Instead, please fetch a solving-action after the last transaction, or use ISolver.solve(Closure)
which is the most preferred way of solving validation-results with solving-actions. See 4.8.4.1
on the following page.

4.8.4 Solve Validation-Results with Solving-Actions
A single validation-result can be solved by calling solve() on one of its solving-actions.
© 2016, Vector Informatik GmbH
101 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("SolveSingleResultWithSolvingAction", DV_PROJECT){
code{
validation{
def tp12Results = validationResults.filter{it.isId("Tp", 12)}
assert tp12Results.size() == 3
// Take first (any) validation-result and filter its solving-actions based on
methods of ISolvingActionUI
tp12Results.first.solvingActions.filter{
it.description.contains("next bigger valid value")
}.single.solve() // reduce the collection to a single ISolvingActionUI and call
solve()
assert validationResults.filter{it.isId("Tp", 12)}.size() == 2
// One Tp12 validation-result solved
}
}
}
Listing 4.123: Solve a single validation-result with a particular solving-action
4.8.4.1 Solver API
getSolver() gives access to the ISolver API, which has advanced methods for bulk solu-
tions.
ISolver.solve(Closure) allows to solve multiple validation-results within one transaction.
You should always use this method to solve multiple validation-results at once instead of calling
ISolvingActionUI.solve() in a loop. This is very important, because solving one validation-
result, may cause invalidation of another one. And calling ISolvingActionUI.solve() of an
invalidated validation-result throws an IllegalStateException. Also, invalidated validation-
results may get recalculated and you would miss the recalculated validation-results with the
loop approach. But with ISolver.solve(Closure) you can solve invalidated->recalculated
results as well as results which didn’t exist at the time of the call (but have been caused by
solving some other validation-result).
ISolver.solve(Closure) first waits for background-validation-idle in order to have repro-
ducible results.
The closure may contain multiple
result{specify result predicate}.withAction{select solving action}
statements. All statements together will be used as a mapper from any solvable validation-
result to a particular solving-action.
The order of these statements does not affect the solving action execution order. The statement
order might only be relevant if multiple statements match on a particular result, but would
select a different solving-action. In that case, the first statement that successfully selects a
solving-action wins.
© 2016, Vector Informatik GmbH
102 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("SolveMultipleResults", DV_PROJECT){
code{
validation{
assert validationResults.size() == 4
solver.solve{
// Call result() and pass a closure that works as filter
// based on methods of IValidationResultUI.
result{
isId("Tp", 12)
}.withAction{
containsString("next bigger valid value")
}
// On the return value, call withAction() and pass a closure that
// selects a solving-action based on methods
// of IValidationResultForSolvingActionSelect
// multiple result() calls can be placed in one solve() call.
result{isId("Com", 34)}.withAction{containsString("recalculate")}
}
assert validationResults.size() == 1
// Three Tp12 and zero Com34 (didn't exist) results solved. One other left
}}}
Listing 4.124: Fast solve multiple results within one transaction
Solve all PreferredSolvingActions
ISolver.solveAllWithPreferredSolvingAction() solves
all validation-results with its preferred solving- action of each validation-result (solving-action
return by IValidationResultUI.getPreferredSolvingAction()). Validation-results without
a preferred solving-action are skipped.
This method first waits for background-validation-idle in order to have reproducible results.
scriptTask("SolveAllWithPreferred", DV_PROJECT){
code{
validation{
assert validationResults.size() == 4
solver.solveAllWithPreferredSolvingAction()
assert validationResults.size() == 1
// this would do the same
transactions.transactionHistory.undo()
assert validationResults.size() == 4
solver.solve{
result{true}.withAction{preferred}
}
assert validationResults.size() == 1
}}}
Listing 4.125: Solve all validation-results with its preferred solving-action (if available)
4.8.5 Advanced Topics
© 2016, Vector Informatik GmbH
103 of 207


Chapter 4.
AutomationInterface API Reference
4.8.5.1 Access Validation-Results of a Model-Object
MIObject.getValidationResults() returns the validation-results of an MIObject. These are
those results for which IValidationResultUI.matchErroneousCE(MIObject) returns true.
scriptTask("CheckValidationResultsOfObject", DV_PROJECT){
code{
// sampleDefRefs contains DefRef constants just for this example. Please use the real
DefRefs from your SIP
// a Buffer container
def buffer002 = mdfModel(AsrPath.create("/ActiveEcuC/Tp/Buffer_002"))
// the Size parameter
def sizeParam = buffer002.parameter(sampleDefRefs.tpBufferSizeDefRef).single
// the result exists for the Size parameter, not for the Buffer container
assert sizeParam.validationResults.size() == 1
assert buffer002.validationResults.size() == 0
}
}
Listing 4.126: Access all validation-results of a particular object
IViewedModelObject.getValidationResults() returns the validation-results for the element
matching the model object and the model view, like BswmdModel objects.
4.8.5.2 Access Validation-Results of a DefRef
DefRef.getValidationResults() returns all validation-results which match the passed defi-
nition. So every configuration element which matches the validation-result and is an instance
of definition.
The used project for this call is the active project, see ScriptApi.getActiveProject().
scriptTask("CheckValidationResultsOfDefRef", DV_PROJECT){
code{
// sampleDefRefs contains DefRef constants just for this example. Please use the real
DefRefs from your SIP
assert sampleDefRefs.tpBufferSizeDefRef.validationResults.size() == 3
}
}
Listing 4.127: Access all validation-results of a particular DefRef
4.8.5.3 Filter Validation-Results using an ID Constant
Groovy allows you to spread list elements as method arguments using the spread operator. This
allows you to define constants for the isId(String,int) method.
© 2016, Vector Informatik GmbH
104 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("FilterResultsUsingAnIdConstant2", DV_PROJECT){
code{
validation{
def tp12Const = ["Tp",12]
assert validationResults.size() > 3
assert validationResults.filter{it.isId(*tp12Const)}.size() == 3
}
}
}
Listing 4.128: Filter validation-results using an ID constant
4.8.5.4 Identification of a Particular Solving-Action
A so called solving-action-group-ID identifies a solving-action uniquely within one validation-
result. In other words, two solving-actions, which do semantically the same, from two validation-
results of the same result-ID (origin + number), belong to the same solving-action-group. This
semantical group may have an optional solving-action-group-ID, that can be used for solving-
action identification within one validation-result.
Keep in mind that the solving-action-group-ID is only unique within one validation-result-ID,
and that the group-ID assignment is optional for a validator implementation.
In order to find out the solving-action-group-IDs, press CTRL+SHIFT+F9 with a selected validation-
result to copy detailed information about that result including solving-action-group-IDs (if as-
signed) to the clipboard.
If group-IDs are assigned, it is much safer to use these for solving-action identification than
description-text matching, because a description-text may change.
final int SA_GROUP_ID_TP12_NEXT_BIGGER_VALID_VALUE = 2
scriptTask("SolveMultipleResultsByGroupId", DV_PROJECT){
code{
validation{
assert validationResults.size() == 4
solver.solve{
result{isId("Tp", 12)}
.withAction{
byGroupId(SA_GROUP_ID_TP12_NEXT_BIGGER_VALID_VALUE)
}
// instead of .withAction{containsString("next bigger valid value")}
}
assert validationResults.size() == 1
// Three Tp12 validation-results solved.
}
}
}
Listing 4.129: Fast solve multiple validation-results within one transaction using a solving-
action-group-ID
© 2016, Vector Informatik GmbH
105 of 207


Chapter 4.
AutomationInterface API Reference
4.8.5.5 Validation-Result Description as MixedText
IValidationResultUI.getDescription() returns an IMixedText that describes the inconsis-
tency.
IMixedText is a construct that represents a text, whereby parts of that text can also hold the
object which they represent. This allows a consumer e.g. a GUI to make the object-parts of
the text clickable and to reformat these object-parts as wanted.
Consumers which don’t need these advanced features can just call IMixedText.toString()
which returns a default format of the text.
4.8.5.6 Further IValidationResultUI Methods
The following listing gives an overview of other "properties" of an IValidatonResultUI.
scriptTask("IValidationResultUIApiOverview", DV_PROJECT){
code{
validation{
def r = validationResults.filter{it.isId("Tp", 12)}.first
assert r.id.origin == "Tp"
assert r.id.id == 12
assert r.description.toString().contains("must be a multiple of")
assert r.severity == EValidationSeverityType.ERROR
assert r.solvingActions.size() == 2
assert r.getSolvingActionByGroupId(2).description.contains("next bigger valid value")
// this result has a preferred-solving-action
assert r.preferredSolvingAction == r.getSolvingActionByGroupId(2)
// results with lower severity than ERROR can be acknowledged in the GUI
assert r.acknowledgement.isPresent() == false
// if the cause was an exception, r.cause.get() returns it
assert r.cause.isPresent() == false
// an ERROR result gets reduced to WARNING if one of its erroneous CEs is user-defined (
user-overridden)
assert r.isReducedSeverity() == false
// on-demand results are visualized with a gear-wheel icon
assert r.isOnDemandResult() == false
}
}
}
Listing 4.130: IValidationResultUI overview
© 2016, Vector Informatik GmbH
106 of 207


Chapter 4.
AutomationInterface API Reference
4.8.5.7 IValidationResultUI in a variant (Post Build Selectable) Project
scriptTask("IValidationResultUIInAVariantProject", DV_PROJECT){
code{
validation{
def r = validationResults.filter{it.isId("Tp", 12)}.first
assert r.isGeneralVariantContext() // either it is a general result...
assert r.predefinedVariantContexts.size() == 0 // or it is assigned to one or more (
but never all) variants
// If a validator assigns a result to all variants, it will be a general result at
UI-side.
}
}
}
Listing 4.131: IValidationResultUI in a variant (post build selectable) project
4.8.5.8 Erroneous CEs of a Validation-Result
IValidationResultUI.getErroneousCEs() returns a collection of IDescriptor, each describ-
ing a CE that gets an error annotation in the GUI.
To check for a certain model element is affected by the result please use the methods, which
return true, if a model is affected by the validation-result:
• IValidationResultUI.matchErroneousCE(MIObject)
• IValidationResultUI.matchErroneousCE(IHasModelObject)
• IValidationResultUI.matchErroneousCE(MIHasDefinition, DefRef)
scriptTask("IValidationResultUIErroneousCEs", DV_PROJECT){
code{
validation{
// sampleDefRefs contains DefRef constants just for this example. Please use the
real DefRefs from your SIP
def result = validationResults.filter{it.isId("Tp", 12)}.first
// Retrieve the model element to check
def modelElement // = retrieveElement ...
// Check if the model object is affected by the validation-result
assert result.matchErroneousCE(modelElement)
}
}
}
Listing 4.132: CE is affected by (matches) an IValidationResultUI
Advanced Descriptor Details
An IDescriptor is a construct that can be used to "point to"
some location in the model. A descriptor can have several kinds of aspects to describe where it
points to. Aspect kinds are e.g. IMdfObjectAspect, IDefRefAspect, IMdfMetaClassAspect,
IMdfFeatureAspect.
getAspect(Class) gets a particular aspect if available, otherwise null.
© 2016, Vector Informatik GmbH
107 of 207


Chapter 4.
AutomationInterface API Reference
A descriptor has a parent descriptor. This allows to describe a hierarchy.
E.g. if you want to express that something with definition X is missing as a child of the existing
MDF object Y. In this example you have a descriptor with an IDefRefAspect containing the
definition X. This descriptor that has a parent descriptor with an IMdfObjectAspect containing
the object Y.
The term descriptor refers to a descriptor together with its parent-descriptor hierarchy.
import com.vector.cfg.model.cedescriptor.aspect.*
scriptTask("IValidationResultUIErroneousCEs", DV_PROJECT){
code{
validation{
// sampleDefRefs contains DefRef constants just for this example. Please use the
real DefRefs from your SIP
def result = validationResults.filter{it.isId("Tp", 12)}.first
def descriptor = result.erroneousCEs.single // this result in this example has only
a single erroneous-CE descriptor
def defRefAspect = descriptor.getAspect(IDefRefAspect.class)
assert defRefAspect != null; // this descriptor in this example has an IDefRefAspect
assert defRefAspect.defRef.equals(sampleDefRefs.tpBufferSizeDefRef)
def objectAspect = descriptor.getAspect(IMdfObjectAspect.class)
assert objectAspect != null // // this descriptor in this example has an
IMdfObjectAspect
// An IMdfObjectAspect would be unavailable for a descriptor describing that
something is missing
def parentObjectAspect = descriptor.parent.getAspect(IMdfObjectAspect.class)
assert parentObjectAspect != null
// Dealing with descriptors is universal, but needs more code. Using these methods
might fit your needs.
assert result.matchErroneousCE(objectAspect.getObject())
assert result.matchErroneousCE(parentObjectAspect.getObject(), sampleDefRefs.
tpBufferSizeDefRef)
}
}
}
Listing 4.133: Advanced
use
case
-
Retrieve
Erroneous
CEs
with
descriptors
of
an
IValidationResultUI
4.8.5.9 Examine Solving-Action Execution
The easiest and most reliable option for verifying solving-action execution is to check the pres-
ence of validation-results afterwards.
This is also the feedback strategy of the GUI. After multiple solving-actions have been solved,
the GUI does not show the execution result of each individual solving-action, but just the
remaining validation-results after the operation. Only if a single solving-action is to be solved,
and that fails, the GUI shows the message of that failure including the reason.
The following describes further options of examination:
ISolvingActionUI.solve() returns an ISolvingActionExecutionResult.
An ISolvingAc-
tionExecutionResult represents the result of one solving action execution. Use isOk() to find
out if it was successful. Call getUserMessage() to get the failure reason.
© 2016, Vector Informatik GmbH
108 of 207


Chapter 4.
AutomationInterface API Reference
ISolver.solve(Closure) returns an ISolvingActionSummaryResult.
An ISolvingAc-
tionSummaryResult represents the execution of multiple results.
ISolvingActionSumma-
ryResult.isOk() returns true if getExecutionResult() is EExecutionResult.SUCCESSFUL
or EExecutionResult.WARNING, this is if at least one sub-result was ok.
Call getSubResults() to get a list of ISolvingActionExecutionResults.
import com.vector.cfg.util.activity.execresult.EExecutionResult
scriptTask("SolvingReturnValue", DV_PROJECT){
code{
validation{
assert validationResults.size() == 4
// In this example, three validation-results have a preferred solving action.
// One of the three cannot be solved because a parameter is user-defined.
def summaryResult = solver.solveAllWithPreferredSolvingAction()
assert validationResults.size() == 2 // Two have been solved, one with a preferred
solving-action is left.
assert summaryResult.executionResult == EExecutionResult.WARNING
// DemoAsserts is just for this example to show what kind of sub-results the
summaryResult contains.
DemoAsserts.summaryResultContainsASubResultWith("OK",summaryResult)
//two such sub-results for the validation-results with preferred-solving-action that
could be solved
DemoAsserts.summaryResultContainsASubResultWith(["invalid modification","not
changeable","Reason","is user-defined"],summaryResult)
// such a sub-result for the failed preferred solving action due to the user-defined
parameter
DemoAsserts.summaryResultContainsASubResultWith("Maximum solving attempts reached for
the validation-result of the following solving-action",summaryResult)
// Cfg5 takes multiple attempts to solve a result because other changes may eliminate
a blocking reason, but stops after an execution limit is reached.
}
}
}
Listing 4.134: Examine an ISolvingActionSummaryResult
4.8.5.10 Create a Validation-Result in a Script Task
The resultCreation API provides methods to create new IValidationResults, which could
then be reported to a IValidationResultSink. This is can be used to report validation-results
similar to a validator/generator, but from within a script task.
ValidationResultSink
The IValidationResultSink must be obtained by the context and is
not provided by the creation API. E.g. some script tasks pass an IValidationResultSink as
argument (like DV_GENERATION_STEP).
Or you have to activate the MD license option for development during script task creation by
calling the method requiresMDDevelopmentLicense(), then you could retrieve an IValida-
tionResultSink from the method getResultSink().
© 2016, Vector Informatik GmbH
109 of 207


Chapter 4.
AutomationInterface API Reference
Reporting ValidationResult in Task providing a ResultSink
This sample applies to task types
providing a ResultSink in the Task API, like DV_GENERATION_STEP.
scriptTask("ScriptTaskCreationResult" /* Insert with task type providing resultSink */ ){
code{
validation{
resultCreation{
// The ValidationResultId group multiple results
def valId = createValidationResultIdForScriptTask(
/* ID */ 1234,
/* Description */ "Summary of the ValidationResultId",
/* Severity */ EValidationSeverityType.ERROR)
// Create a new resultBuilder
def builder = newResultBuilder(valId, "Description of the Result")
// You can add multiple elements as error objects to mark them
builder.addErrorObject(sipDefRef.EcucGeneral.bswmdModel().single)
// Add more calls when needed
// Create the result from the builder
def valResult = builder.buildResult()
// You need to report the result to a resultSink
// You have to get the sink from the context, e.g. script task args
// a sample line would be
resultSinkForTask.reportValidationResult(valResult)
}
}
}}
Listing 4.135: Create a ValidationResult
Reporting ValidationResult with MD License Option for Development
This sample can be
used in every task types but you need a MD license option for development to retrieve the
ResultSink.
scriptTask("ScriptTaskCreationResult", DV_PROJECT){
// Result reporting requires an MD license for development
requiresMDDevelopmentLicense()
code{
validation{
resultCreation{
// The ValidationResultId group multiple results
def valId = createValidationResultIdForScriptTask(
/* ID */ 1234,
/* Description */ "Summary of the ValidationResultId",
/* Severity */ EValidationSeverityType.ERROR)
// Create a new resultBuilder
def builder = newResultBuilder(valId, "Description of the Result")
// Create the result from the builder
def valResult = builder.buildResult()
// When MD license is enabled you can access a resultSink
resultSink.reportValidationResult(valResult)
}}}}
Listing 4.136: Report a ValidationResult when MD license option is available
© 2016, Vector Informatik GmbH
110 of 207


Chapter 4.
AutomationInterface API Reference
4.9 Update Workflow
The Update Workflow derives the initial EcuC from the input files and updates the project
accordingly. The Update Workflow API comprises modification of variants, modification of the
input files list and the execution of an update workflow.
4.9.1 Method Overview
• workflow: the workflow closure is the central entry point for the Workflow API.
– update: contains all settings for the Update Workflow and executes the update after
leaving the closure block.
∗ input: supports the modification of the input files list and specific settings.
· communication: the communication closure contains settings for the com-
munication extract and communication legacy input files (like cbd, ldf or
fibex). Take a look at the JavaDoc of ICommunicationApi for all possible
settings.
4.9.2 Example: Content of Input Files has changed.
In case of a changed content of input files, the update workflow can be started with the work-
flow.update(dpaProjectFilePath) method. This will start the Update Workflow, with the
input files as selected in the DaVinci Configurator GUI. The parameter dpaProjectFilePath
accepts the same types and has the same semantic as resolvePath described in 4.4.3.1 on
page 34.

scriptTask("UpdateExistingProject", DV_APPLICATION) {
code {
workflow.update pathToDpaFile
}
}
Listing 4.137: Update an existing project
The update workflow is started at the end of the update-closure.
© 2016, Vector Informatik GmbH
111 of 207


Chapter 4.
AutomationInterface API Reference
4.9.3 Example: List of Input Files shall be changed
scriptTask("ChangeListOfComExtractsAndUpdate", DV_APPLICATION) {
code {
def extractPath = paths.resolvePath(extractFile)
def diagExtractPath = paths.resolvePath(diagExtract)
workflow.update(dpaProjectFile){
input{
communication{
extract{
extractFiles{exFilePathList->
// clear the list of communication extracts
exFilePathList.clear()
// adds an communication extract
exFilePathList.add(extractPath.asPersistablePath())
}
// change the selection of the ecuInstance
// Note: this closure is deferred executed.
ecuInstanceSelection{
return availableEcuInstances[0]
}
}
}
diagnostic{
extract{
extractFiles{exFilePathList->
// clear the list of communication extracts
exFilePathList.clear()
// adds an communication extract
exFilePathList.add(diagExtractPath.asPersistablePath())
}
// change the selection of the ecuInstance
// Note: this closure is deferred executed.
ecuInstanceSelection{
return availableEcuInstances[0]
}
}
}
}}}}
Listing 4.138: Change list of communication extracts and update
Note: The code in the ecuInstanceSelection closure is deferred executed.
The
access to variables, declared outside of this closure is not allowed.
This example shows the complete replacement of the current list of communication extracts
with one extract and the selection of the first ecuInstance in the new extract. The update
workflow is executed after the update closure block is left.
4.9.4 Prerequisites
The Update Workflow API can not be used while the Project to update is opened. E.g. in a
IProjectRef.openProject closure block or in a ScriptTask with the DV_PROJECT ScriptTask-
Type.
© 2016, Vector Informatik GmbH
112 of 207


Chapter 4.
AutomationInterface API Reference
4.10 Domains
The domain APIs are specifically designed to provide high convenience support for typical
domain use cases.
The domain API is the entry point for accessing the different domain interfaces. It is available
in opened projects in the form of the IDomainApi interface.
IDomainApi provides methods for accessing the different domain-specific APIs. Each domain’s
API is available via the domain’s name.
For an example see the communication domain
API 4.10.1.
getDomain() allows accessing the IDomainApi like a property.
scriptTask('taskName') {
code {
// IDomainApi is available as "domain" property
def domainApi = domain
}
}
Listing 4.139: Accessing IDomainApi as a property
domain(Closure) allows accessing the IDomainApi in a scope-like way.
scriptTask('taskName') {
code {
domain {
// IDomainApi is available inside this Closure
}
}
}
Listing 4.140: Accessing IDomainApi in a scope-like way
4.10.1 Communication Domain
The communication domain API is specifically designed to support communication related
use cases. It is available from the IDomainApi 4.10 in the form of the ICommunicationApi
interface.
getCommunication() allows accessing the ICommunicationApi like a property.
scriptTask('taskName') {
code {
// ICommunicationApi is available as "communication" property
def communication = domain.communication
}
}
Listing 4.141: Accessing ICommunicationApi as a property
communication(Closure) allows accessing the ICommunicationApi in a scope-like way.
© 2016, Vector Informatik GmbH
113 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask('taskName') {
code {
domain.communication {
// ICommunicationApi is available inside this Closure
}
}
}
Listing 4.142: Accessing ICommunicationApi in a scope-like way
The following use cases are supported:
Accessing Can Controllers
getCanControllers() returns a list of all ICanControllers in
the configuration 4.10.1.1 on the following page.
© 2016, Vector Informatik GmbH
114 of 207


Chapter 4.
AutomationInterface API Reference
4.10.1.1 CanControllers
An ICanController instance represents a CanController MIContainer providing support for
use cases exceeding those supported by the model API.
scriptTask('OptimizeAcceptanceFilters', DV_APPLICATION) {
code {
// replace $dpaFile with the path to your project
def theProject = projects.openProject("$dpaFile") {
transaction {
domain.communication {
// open acceptance filters of all CanControllers
canControllers*.openAcceptanceFilters()
// open acceptance filters of first CanController
canControllers.first.openAcceptanceFilters()
canControllers[0].openAcceptanceFilters() // same as above
// open acceptance filters of second CanController
// (if there is a second CanController)
canControllers[1]?.openAcceptanceFilters()
// open acceptance filters of a dedicated CanController
canControllers.filter { it.name.contains 'CH0' }.single.openAcceptanceFilters()
// accessing a dedicated CanController
def ch0 = canControllers.filter { it.name.contains 'CH0' }.single
// assert: ch0's first CanFilterMask value is XXXXXXXXXXX
assert 'XXXXXXXXXXX' == ch0.canFilterMasks[0].filter
// set CanFilterMask value to 01111111111
ch0.canFilterMasks[0].filter = '01111111111'
assert '01111111111' == ch0.canFilterMasks[0].filter
// automatic acceptance filter optimization
ch0.optimizeFilters { fullCan = true }
}
}
}
scriptLogger.info('Successfully optimized Can acceptance filters.')
}
}
Listing 4.143: Optimizing Can Acceptance Filters
Opening Acceptance Filters
openAcceptanceFilters() opens all of this ICanController’s
acceptance filters.
Optimizing Acceptance Filters
optimizeFilters(Closure) optimizes this ICanController’s
acceptance filter mask configurations. The given Closure is delegated to the IOptimizeAccep-
tanceFiltersApi interface for parameterizing the optimization.
Using setFullCan(boolean) it can be specified whether the optimization shall take full can
objects into account or not.
© 2016, Vector Informatik GmbH
115 of 207


Chapter 4.
AutomationInterface API Reference
Creating new CanFilterMasks
createCanFilterMask() creates a new ICanFilterMask for
this ICanController.
Accessing a CanController’s CanFilterMasks
getCanFilterMasks() returns all of this ICan-
Controller’s ICanFilterMasks.
Accessing a CanController’s MIContainer
getMdfObject() returns the MIContainer repre-
sented by this ICanController.
4.10.1.2 CanFilterMasks
An ICanFilterMask instance represents a CanFilterMask MIContainer providing support for
use cases exceeding those supported by the model API.
For example code see 4.10.1.1 on the previous page. The following use cases are supported:
Filter Types
ECanAcceptanceFilterType lists the possible values for an ICanFilterMask’s
filter type.
STANDARD results in a standard Can acceptance filter value with length 11.
EXTENDED results in an extended Can acceptance filter value with length 29.
MIXED results in a mixed Can acceptance filter value with length 29.
Accessing a CanFilterMask’s Filter Type
getFilterType() returns this ICanFilterMask’s
filter type.
Specifying a CanFilterMask’s Filter Type
Using setFilterType(ECanAcceptanceFilterType)
this ICanFilterMask’s filter type can be specified.
Accessing a CanFilterMask’s Filter Value
getFilter() returns this ICanFilterMask’s filter
value. A CanFilterMask’s filter value is a String containing the characters ’0’, ’1’ and ’X’
(don’t care). For determining if a given Can ID passes the filter it is matched bit for bit against
the String’s characters. The character at index 0 is matched against the most significant bit.
The character at index length() - 1 is matched against the least significant bit. The length
of the String corresponds to the CanFilterMask’s filter type.
Specifying a CanFilterMask’s Filter Value
Using setFilter(String) this ICanFilterMask’s
filter value can be specified.
Accessing a CanFilterMask’s MIContainer
getMdfObject() returns the MIContainer rep-
resented by this ICanFilterMask.
© 2016, Vector Informatik GmbH
116 of 207


Chapter 4.
AutomationInterface API Reference
4.10.2 Diagnostics Domain
The diagnostics domain API is specifically designed to support diagnostics related use cases.
It is available from the IDomainApi 4.10 on page 113 in the form of the IDiagnosticsApi
interface.
getDiagnostics() allows accessing the IDiagnosticsApi like a property.
scriptTask('taskName') {
code {
// IDiagnosticsApi is available as "diagnostics" property
def diagnostics = domain.diagnostics
}
}
Listing 4.144: Accessing IDiagnosticsApi as a property
diagnostics(Closure) allows accessing the IDiagnosticsApi in a scope-like way.
scriptTask('taskName') {
code {
domain.diagnostics {
// IDiagnosticsApi is available here
}
}
}
Listing 4.145: Accessing IDiagnosticsApi in a scope-like manner
The following use cases are supported:
Dem Events
The API provides access and creation of IDemEvents in the configuration. See
chapter 4.10.2.1 on the next page for more details.
Check for OBD II
isObd2Enabled() checks, if OBD II is available in the configuration.
Enable OBD II
setObd2Enabled(boolean) enables or disables OBD II in the configuration.
Note, that OBD II can only be enabled, if a valid SIP license was found.
Check for WWH-OBD
isWwhObdEnabled() checks, if WWH-OBD is available in the config-
uration.
Enable WWH-OBD
setWwhObdEnabled(boolean) enables or disables WWH-OBD in the
configuration. Note, that WWH-OBD can only be enabled, if a valid SIP license was found.
© 2016, Vector Informatik GmbH
117 of 207


Chapter 4.
AutomationInterface API Reference
4.10.2.1 DemEvents
An IDemEvent instance represents a diagnostic event and and provides usecase centric func-
tionalities to modify and query diagnostic events.
Accessing Dem Events
getDemEvents() returns a list of all IDemEvents in the configuration.
Creating Dem Events
createDemEvent(Closure) is used to create diagnostic events of dif-
ferent kinds.
The method can be configured to create different types of DTCs/Events:
1. UDS Event: This is the default type of event, when only an ’eventName’ and a ’dtc’
number is specified. A new DemEventParameter container with the given shortname and
a new DemDTCClass with the given DemUdsDTC is created.
scriptTask('taskName') {
code {
transaction {
domain.diagnostics {
def udsEvent = createDemEvent {
eventName = "NewUdsEvent"
dtc = 0x30
}
}}}}
Listing 4.146: Create a new UDS DTC with event
2. OBD II Event: If OBD II is enabled for the loaded configuration, and a ’obd2Dtc’ is
specified instead of a ’dtc’, the method will create an OBD II relevant event. The differ-
ence is, that it will set the parameter DemObdDTC instead of DemUdsDTC. It is also
possible to specify ’dtc’ as well as ’obd2dtc’, which will result in both DTC parameters
are set.
scriptTask('taskName') {
code {
transaction {
domain.diagnostics {
// OBD must be enabled and legislation must be OBD2
// Enable OBD2
obd2Enabled = true
def obd2Event = createDemEvent {
eventName = 'NewOBD2Event'
obd2Dtc = 0x40
}
def obd2CombinedEvent = createDemEvent {
eventName = 'UDS_OBD2_Combined_Event'
dtc = 0x31
obd2Dtc = 0x41
}
}}}}
Listing 4.147: Enable OBD II and create a new OBD related DTC with event
© 2016, Vector Informatik GmbH
118 of 207


Chapter 4.
AutomationInterface API Reference
3. WWH-OBD Event: If WWH-OBD is enabled for the loaded configuration, and a
’wwhObdDtcClass’ with a value other than ’NO_CLASS’ is specified, the method will
create a WWH-OBD relevant event. Note that WWH-OBD relevant events usually du
reference the so called MIL indicator, thus this reference will be set by default in the
newly created DemEventParameter.
scriptTask('taskName') {
code {
transaction {
domain.diagnostics {
// OBD must be enabled, and legislation must be WWH-OBD
// The parameter '/Dem/DemGeneral/DemMILIndicatorRef' must be set
wwhObdEnabled = true
def wwhObdEvent = createDemEvent {
eventName = 'WWHOBD_Event'
dtc = 0x50
// wwhObdClass != NO_CLASS indicates WWH-OBD event
wwhObdDtcClass = CLASS_A
}
}}}}
Listing 4.148: Enable WWH-OBD and create a new OBD related DTC with event
4. J1939 Event: The last type of event is a J1939 related event, which can be created when
J1939 is licensed and available for the loaded configuration. This is done in a similar way
as for UDS events, but additionally specifying ’spn’, ’fmi’ values as well as the name of
the referenced ’nodeAddress’.
scriptTask('taskName') {
code {
def nodeAddressContainer = mdfModel(AsrPath.create("/ActiveEcuC/Dem/DemConfigSet/
DemJ1939NodeAddress", MIContainer))
transaction {
domain.diagnostics {
// J1939 Event creation
// J1939 must be enabled and License must be available.
j1939Enabled = true
def j1939Event = createDemEvent {
eventName 'J1939_Event'
dtc 0x30
spn 90
fmi 13
nodeAddress nodeAddressContainer
}
}}}}
Listing 4.149: Open a project, enable J1939 and create a new J1939 DTC with event
Important Note:
For every DTC numbers apply the rule, that if there are already DemDTCClasses with
the given number, they will be used. In such a case, no new DemDTCClass container is
created.
© 2016, Vector Informatik GmbH
119 of 207


Chapter 4.
AutomationInterface API Reference
4.10.3 Runtime System Domain
The runtime system domain API is specifically designed to support runtime system related
use cases.
It is available from the IDomainApi (see 4.10 on page 113) in the form of the
IRuntimeSystemApi interface.
getRuntimeSystem() allows accessing the IRuntimeSystemApi like a property.
scriptTask('taskName') {
code {
// IRuntimeSystemApi is available as "runtimeSystem" property
def runtimeSystem = domain.runtimeSystem
}
}
Listing 4.150: Accessing IRuntimeSystemApi as a property
runtimeSystem(Closure) allows accessing the IRuntimeSystemApi in a scope-like way.
scriptTask('taskName') {
code {
domain.runtimeSystem {
// IRuntimeSystemApi is available inside this Closure
}
}
}
Listing 4.151: Accessing IRuntimeSystemApi in a scope-like way
The following use cases are supported:
4.10.3.1 Mapping component ports
A component port (IComponentPort) represents a port prototype and its corresponding com-
ponent prototype, and in case of a delegation port the corresponding top level composition type
(Ecu Composition).
The mapping component ports use case allows connecting different ports in a similar way the
component connection assistant does.
Selecting component ports to map
The entry point is to select a collection of component
ports and auto-map them to the possible target component ports by applying the matching
rules of the component connection assistant.
selectComponentPorts(Closure) allows the selection of IComponentPorts using predicates.
Predicates
To select the component ports predicates can be provided to narrow down the
component ports to be connected: this corresponds to the manual selection of certain component
ports in the component connection assistant.
Per default the predicates are combined via logical AND. To realize other combinations, use
the ’or’,’not’ and ’and’ predicates.
© 2016, Vector Informatik GmbH
120 of 207


Chapter 4.
AutomationInterface API Reference
Component Port Predicates
• unconnected() matches unconnected component ports.
• connected() matches connected component ports.
• senderReceiver() matches component ports whose port has a sender/receiver port in-
terface.
• clientServer() matches component ports whose port has a client/server port interface.
• modeSwitch() matches component ports whose port has a mode-switch port interface.
• nvData() matches component ports whose port has a NvData port interface.
• parameter() matches component ports whose port has a parameter (calibration) port
interface.
• provided() matches provided component ports (p-port).
• required() matches required component ports (r-port).
• providedRequired() matches provided-required component ports (pr-port).
• delegation() matches delegation ports (ports of the Ecu composition).
• application() matches component ports whose port interface is an application port
interface.
• service() matches component ports whose port interface is an service port interface.
• name(String) matches component ports with the given port name.
• name(Pattern) matches component ports with the given port name pattern.
• asrPath(String) matches component ports with the given port autosar path.
• asrPath(Pattern) matches component ports with the given port autosar path pattern.
• component(String) matches component ports with the given component name.
• component(Pattern) matches component ports with the given component name pattern.
• componentAsrPath(String) matches the component ports with the given component
autosar path.
• componentAsrPath(Pattern) matches component ports with the given component au-
tosar path pattern.
• portInterfaceMapping(String) matches component ports for whose port interfaces a
port interface mapping with the given port interface mapping name exists.
• portInterfaceMapping(Pattern) matches component ports for whose port interfaces a
port interface mapping with the given port interface mapping name pattern exists.
• portInterfaceMappingAsrPath(String) matches component ports for whose port in-
terfaces a port interface mapping with the given port interface mapping autosar path
exists.
• portInterfaceMappingAsrPath(Pattern) matches component ports for whose port in-
terfaces a port interface mapping with the given port interface mapping autosar path
pattern exists.
© 2016, Vector Informatik GmbH
121 of 207


Chapter 4.
AutomationInterface API Reference
• filterAdvanced(Closure) matches component ports for whose the given closure results
to true.
• and(Closure) combines the predicates inside the closure with a logical AND.
• or(Closure) combines the predicates inside the closure with a logical OR.
• not(Closure) negates the combination of predicates inside the closure.
Examples
scriptTask("selectAllPorts", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def selectedPorts =
selectComponentPorts {
// no predicates: select ALL component ports
} getComponentPorts()
scriptLogger.infoFormat("Selected {0} component ports.", selectedPorts.size())
}
}
}
}
Listing 4.152: Selects all component ports
scriptTask("selectAllUnconnectedPorts", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def selectedPorts =
selectComponentPorts {
unconnected() // select all unconnected component ports
} getComponentPorts()
scriptLogger.infoFormat("Selected {0} component ports.", selectedPorts.size())
}
}
}
}
Listing 4.153: Selects all unconnected component ports
© 2016, Vector Informatik GmbH
122 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("selectAllUnconnectedSRAndConnectedModePorts", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def selectedPorts =
selectComponentPorts {
// start with logical OR
or {
and { // unconnected sender/receiver ports
unconnected()
senderReceiver()
}
and { // connected modeSwitch ports
connected()
modeSwitch()
}
}
} getComponentPorts()
scriptLogger.infoFormat("Selected {0} component ports.", selectedPorts.size())
}
}
}
}
Listing 4.154: Select all unconnected sender/receiver or connected mode-switch component
ports
Auto-Mapping
The use case of auto-mapping component ports is based on the selection of
component ports: it offers the methods to auto-map.
autoMap() tries to auto-map the selection of component ports according the component con-
nection assistant default rules.
Examples for autoMap()
scriptTask("automapAll", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
// no predicates: select ALL component ports
} autoMap()
scriptLogger.infoFormat("Created {0} mappings.", mappedConnectors.size())
}
}
}
}
Listing 4.155: Tries to auto-map all ports
© 2016, Vector Informatik GmbH
123 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("automapAllUnconnected", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
unconnected() // select all unconnected component ports
} autoMap()
scriptLogger.infoFormat("Created {0} mappings.", mappedConnectors.size())
}
}
}
}
Listing 4.156: Tries to auto-map all unconnected component ports
scriptTask("autoMapUnconnectedSRCS", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
// select all unconnected client/server and unconnected sender/receiver ports
unconnected()
or {
clientServer()
senderReceiver()
}
} autoMap()
scriptLogger.infoFormat("Created {0} mappings.",mappedConnectors.size())
}
}
}
}
Listing 4.157: Tries to auto-map all unconnected sender/receiver and client/server ports
import com.vector.cfg.model.sysdesc.api.port.IComponentPort
scriptTask("autoMapAdvancedfilter", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
// select component port by own custom filter predicate
filterAdvanced {IComponentPort port ->
"MyUUID".equals(port.getMdfPort().getUuid2())
}
} autoMap()
scriptLogger.infoFormat("Created {0} mappings.",mappedConnectors.size())
}
}
}
}
Listing 4.158: Tries to auto-map port determined by advanced filter
autoMapTo(Closure) tries to auto-map the selection of component ports according the compo-
nent connection assistant rules but offers more control for the auto-mapping: Inside the closure
additional predicates for narrowing down the target component ports can be defined and code
© 2016, Vector Informatik GmbH
124 of 207


Chapter 4.
AutomationInterface API Reference
to evaluate and change the auto-mapper results can be provided.
Narrowing down the target component ports may be useful to gain better matches for the auto-
mapper: In case several target component ports match equally, no auto-mapping is performed.
So reducing the target component ports my improve the results of the auto-mapping.
The component port selection will produce trace, info and warning logs. To see them, activate
the ’com.vector.cfg.dom.runtimesys.groovy.api.IComponentPortSelection’ logger with
the appropriate log level.
Control the auto-mapping in autoMapTo(Closure)
selectTargetPorts(Closure) allows to define predicates to narrow down the target ports for
the auto-mapping. The predicates are used to filter the possible target component ports which
were computed from the source component port selection.
scriptTask("autoMapUnconnectedToComponentPrototype", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
unconnected() // select all unconnected ports
} autoMapTo {
selectTargetPorts {
component "App1" // and auto-map them to all ports of component "App1"
}
}
scriptLogger.infoFormat("Created {0} mappings.",mappedConnectors.size())
}
}
}
}
Listing 4.159: Tries to auto map all unconnected ports to the ports of one component prototype
evaluateMatches(Closure) allows to evaluate and change the results of the auto-mapping. It
corresponds to the confirm page of the component connection assistant.
For each source component port the provided closure is called: Parameters are the source
component port, the optional matched target component port (or null), and a list of all potential
target component ports (respecting the selectTargetPorts(Closure) predicates). The return
value must be a list of target component ports.
© 2016, Vector Informatik GmbH
125 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.dom.runtimesys.api.assistant.connection.ISourceComponentPort
import com.vector.cfg.dom.runtimesys.api.assistant.connection.ITargetComponentPort
scriptTask("automapAllUnconnectedAndEvaluateMatches", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
unconnected()
} autoMapTo {
evaluateMatches {
ISourceComponentPort sourcePort,
ITargetComponentPort optionalMatchedTargetPort,
List<ITargetComponentPort> potentialTargetPorts ->
if (sourcePort.getPortName().equals("MyExceptionalPort")) {
// example for excluding a port from auto-mapping by having a close
look
// sourcePort.getMdfPort()....
return null
}
// default: do not change the auto-matched port
[optionalMatchedTargetPort]
}
}
scriptLogger.infoFormat("Created {0} mappings.",mappedConnectors.size())
}
}
}
}
Listing 4.160: Tries to auto-map all unconnected ports and evaluate matches
© 2016, Vector Informatik GmbH
126 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.dom.runtimesys.api.assistant.connection.ISourceComponentPort
import com.vector.cfg.dom.runtimesys.api.assistant.connection.ITargetComponentPort
scriptTask("automap1ToN", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
// select single delegation port
delegation()
name "rDelegationSRPort1"
} autoMapTo {
selectTargetPorts {
// select a collection of target ports (names start with "rSRPort")
name ~"rSRPort.*"
}
evaluateMatches {
ISourceComponentPort sourcePort,
ITargetComponentPort optionalMatchedTargetPort,
List<ITargetComponentPort> potentialTargetPorts ->
// return all potentialTargetPorts for 1:n connections, not only the
one matched best
potentialTargetPorts
}
}
scriptLogger.infoFormat("Created {0} mappings.",mappedConnectors.size())
}
}
}
}
Listing 4.161: Auto-map a component port and realize 1:n connection by using evaluate matches
forceConnectionWhen1To1() allows to force a mapping even the usual auto-mapping rules will
not match. Precondition is that the collections of source component ports and target component
ports only contain one component port each. Otherwise no mapping is done.
© 2016, Vector Informatik GmbH
127 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("autoMapTwoNonMatchingPorts", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def mappedConnectors =
selectComponentPorts {
// select a single source component port
name "prNVPort1"
component "NvApp1"
} autoMapTo {
selectTargetPorts {
// select a single target component port
name "rSRPort2"
component "App2"
}
// force the connection even names do not match at all
forceConnectionWhen1To1()
}
scriptLogger.infoFormat("Created {0} mappings.",mappedConnectors.size())
}
}
}
}
Listing 4.162: Create mapping between two ports which names do not match.
4.10.3.2 Data Mapping
The data mapping use case allows to connect signal instances and data elements/operations in
a similar way the data mapping assistant does.
Communication Element
A data element or an operations to be data-mapped is represented
by an ICommunicationElement. A data element is represented by the subtype IDataCommuni-
cationElement, an operation is represented by the subtype IOperationCommunicationEle-
ment. A communication element contains the full context information (component prototype,
port prototype, data type hierarchy) necessary for data mapping.
Signal Instance
The system signals and system signal groups to be data-mapped are repre-
sented by a signal instance (IAbstractSignalInstance). ISignalInstance represents a sys-
tem signal, ISignalGroupInstance represents a system signal group. ’Signal instance’ means
that the system signal or system signal group is at least referenced by one ISignal or ISig-
nalGroup. System signals or system signal groups which are not referenced by an ISignal or
ISignalGroup are not represented as signal instance and so are not available for data map-
ping.
The entry point for data mapping is either to select a collection of signal instances and auto-map
them to the possible target communication elements or vice versa by applying the matching
rules of the data mapping assistant.
Mapping signal instances
selectSignalInstances(Closure) allows the selection of IAb-
stractSignalInstances using predicates.
Per default the predicates are combined via logical AND. To realize other combinations, use
the ’or’,’not’ and ’and’ predicates.
© 2016, Vector Informatik GmbH
128 of 207


Chapter 4.
AutomationInterface API Reference
Signal Instance Predicates
• unmapped() matches signal instances which are not data-mapped.
• mapped() matches signal instances which are data-mapped.
• signalGroup() matches signal instances which are a signal group instance.
• groupSignal() matches signal instances which are a group signal.
• transformed() matches signal instances which are transformation signals.
• tx() matches signal instances whose direction is compatible to EDirection.Tx.
• rx() matches signal instances whose direction is compatible to EDirection.Rx.
• name(String) matches signal instances with the given name.
• name(Pattern) matches signal instances with the given name pattern.
• asrPath(String) matches signal instances with the given autosar path.
• asrPath(Pattern) matches signal instances with the given autosar path pattern.
• iSignal(String) matches signal instances which are referenced at least by one ISig-
nal/ISignalGroup with the given name.
• iSignal(Pattern) matches signal instances which are referenced at least by one ISig-
nal/ISignalGroup with the given name pattern.
• iSignalAsrPath(String) matches signal instances which are referenced at least by one
ISignal/ISignalGroup with the given autosar path.
• iSignalAsrPath(Pattern) matches signal instances which are referenced at least by one
ISignal/ISignalGroup with the given autosar path pattern.
• filterAdvanced(Closure) matches signal instances for which the given closure results
to true.
• and(Closure) combines the predicates inside the closure with a logical AND.
• or(Closure) combines the predicates inside the closure with a logical OR.
• not(Closure) negates the combination of predicates inside the closure.
Examples
scriptTask("SelectAllUnmappedSignalInstances", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def signalInstances =
selectSignalInstances {
unmapped() // select all signal instances which are not yet data mapped
} getSignalInstances()
scriptLogger.infoFormat("Selected {0} signal instances.",signalInstances.size())
}
}
}
}
Listing 4.163: Select all unmapped signal instances
© 2016, Vector Informatik GmbH
129 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("SelectAllUnmappedRxOrTransformedSignalInstances", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def signalInstances =
selectSignalInstances {
// the signal instances should not be data-mapped yet
unmapped()
or { // and should either be a rx signal or a transformation signal
rx()
transformed()
}
} getSignalInstances()
scriptLogger.infoFormat("Selected {0} signal instances.",signalInstances.size())
}
}
}
}
Listing 4.164: Select all unmapped rx or transformed signal instances
import com.vector.cfg.model.sysdesc.api.com.IAbstractSignalInstance
scriptTask("SelectSignalInstancesUsingAdvancedFilter", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def signalInstances =
selectSignalInstances {
filterAdvanced { IAbstractSignalInstance signalInstance ->
// implement own custom filter
def mdfObject = signalInstance.getMdfObject()
// work on directly on autosar model level ...
// select signal instance only which has admin data
def select = false
mdfObject.adminData {
select = true
}
select
}
} getSignalInstances()
scriptLogger.infoFormat("Selected {0} signal instances.",signalInstances.size())
}
}
}
}
Listing 4.165: Select signal instances using an advanced filter
Auto-Mapping
The use case of auto-mapping signal instances is based on the selection of
signal instances: it offers the methods to auto-map.
autoMap() tries to auto-map the selection of IAbstractSignalInstances (ISignalInstance
or ISignalGroupInstance) according the data mapping assistant default rules. Therefore the
selection of possible target communication elements is computed and tried to match to the
selected signal instances.
Examples for autoMap()
© 2016, Vector Informatik GmbH
130 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("autoDatamapAllUnmappedSignalInstances", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectSignalInstances {
unmapped()
} autoMap()
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.166: Auto data map all unmapped signal instances
autoMapTo(Closure) tries to auto-map the selection of signal instances according the data
mapping assistant rules but offers more control for the auto-mapping: Inside the closure ad-
ditional predicates for narrowing down the target communication elements can be defined and
code to evaluate and change the auto-mapper results can be provided.
autoMapTo(Closure) will produce trace, info and warning logs.
To see them, activate the
’com.vector.cfg.dom.runtimesys.groovy.api.ISignalInstanceSelection’ logger with the
appropriate log level.
Control the auto-mapping in autoMapTo(Closure)
selectTargetCommunicationElements(Closure) allows to define predicates to narrow down
the target communciation elements for the auto-mapping. The predicates are used to filter
the possible target communication elements which were computed from the signal instance
selection.
evaluateMatches(Closure) allows to evaluate and change the results of the auto-mapping. It
corresponds to the confirm page of the data mapping assistant.
For each signal instance the provided closure is called: Parameters are the signal instance,
the optional matched target communication element (or null), and a list of all potential tar-
get communication elements (respecting the selectTargetCommunicationElements(Closure)
predicates). The return value must be a communication element or null.
© 2016, Vector Informatik GmbH
131 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.model.sysdesc.api.com.IAbstractSignalInstance
import com.vector.cfg.model.sysdesc.api.com.ICommunicationElement
scriptTask("autoDatamapAllUnmappedSignalInstancesAndEvaluate", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectSignalInstances {
unmapped()
} autoMapTo {
selectTargetCommunicationElements {
unmapped()
}
evaluateMatches {
IAbstractSignalInstance signal,
ICommunicationElement optionalMatchedComElement,
List<ICommunicationElement> potentialComElements ->
// evaluate
optionalMatchedComElement
}
}
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.167: Auto data map all unmapped signal instances to unmapped communication
elements and evaluate
Nested Array of Primitives
expandNestedArraysOfPrimitive(boolean) allows to control
the expansion of nested arrays of primitive globally. Per default, arrays are fully expanded
(allowing to data map each array element). By setting the value to ’false’, all nested arrays of
primitive are not expanded and can be directly data-mapped to a signal.
© 2016, Vector Informatik GmbH
132 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.model.sysdesc.api.com.IAbstractSignalInstance
import com.vector.cfg.model.sysdesc.api.com.ICommunicationElement
scriptTask("autoDatamapAllSignalInstancesAndDoNotExpandNestedArrayElements", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectSignalInstances {
} autoMapTo {
// do not expand nested array elements
expandNestedArraysOfPrimitive false
evaluateMatches {
IAbstractSignalInstance signal,
ICommunicationElement optionalMatchedComElement,
List<ICommunicationElement> potentialComElements ->
// perform manual mapping to a signal group
if (signal.getName().equals("elemB_c255f5e38fd8b21d")) {
for (final ICommunicationElement comElement :
potentialComElements) {
if (comElement.getFullyQualifiedName().equals("App2.
rSRPort1.Element_2")) {
return comElement
}
}
}
// now check: for the group signal the the record element
representing an array is not expanded
if (signal.getName().equals("fieldA_f1d3783e235e88d3")) {
// group signal
for (final ICommunicationElement comElement :
potentialComElements) {
if (comElement.getFullyQualifiedName().equals("App2.
rSRPort1.Element_2.RecordElement")) {
// do some direct mapping here
}
}
}
optionalMatchedComElement
}
}
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.168: Auto data map all signal instances and do not expand nested array elements
expandNestedArraysOfPrimitive(String,boolean) allows to control the expansion of nested
arrays of primitive for single nested arrays. Per default, the expandNestedArraysOfPrimi-
tive(boolean) applies. For the given fully qualified communication element name, the global
setting can be overridden.
© 2016, Vector Informatik GmbH
133 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.model.sysdesc.api.com.IAbstractSignalInstance
import com.vector.cfg.model.sysdesc.api.com.ICommunicationElement
scriptTask("autoDatamapAllSignalInstancesAndDoExpandSpecificNestedArrayElement", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectSignalInstances {
} autoMapTo {
// do not expand nested array elements
expandNestedArraysOfPrimitive false
expandNestedArraysOfPrimitive( "App2.rSRPort1.Element_2.RecordElement",
true)
evaluateMatches {
IAbstractSignalInstance signal,
ICommunicationElement optionalMatchedComElement,
List<ICommunicationElement> potentialComElements ->
// perform manual mapping to a signal group
if (signal.getName().equals("elemB_c255f5e38fd8b21d")) {
for (final ICommunicationElement comElement :
potentialComElements) {
if (comElement.getFullyQualifiedName().equals("App2.
rSRPort1.Element_2")) {
return comElement
}
}
}
// now check: for the group signal the the record element
representing an array is expanded:
// the single array elements can be mapped
if (signal.getName().equals("fieldA_f1d3783e235e88d3")) {
// group signal
for (final ICommunicationElement comElement :
potentialComElements) {
if (comElement.getFullyQualifiedName().equals("App2.
rSRPort1.Element_2.RecordElement[0]")) {
// do some direct mapping to array element here
}
}
}
optionalMatchedComElement
}
}
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.169: Auto data map all signal instances and expand specific nested array element
Mapping communication elements
selectCommunicationElements(Closure) allows the se-
lection of ICommunicationElements using predicates.
Per default the predicates are combined via logical AND. To realize other combinations, use
the ’or’,’not’ and ’and’ predicates.
Communication Element Predicates
© 2016, Vector Informatik GmbH
134 of 207


Chapter 4.
AutomationInterface API Reference
• unconnected() matches communication elements whose component port is unconnected.
• connected() matches communication elements whose component port is connected.
• senderReceiver() matches communication elements whose port has a sender/receiver
port interface.
• clientServer() matches communication elements whose port has a client/server port
interface.
• provided() matches communication elements whose port is a provided port (p-port).
• required() matches communication elements whose port is a required port (r-port).
• delegation() matches communication elements whose port is delegation port.
• unmapped() matches communication elements whose are not data-mapped.
• mapped() matches communication elements whose are data-mapped.
• name(String) matches communication elements with the given data element or operation
name.
• name(Pattern) matches communication elements with the given data element or opera-
tion name pattern.
• asrPath(String) matches communication elements with the given data element or op-
eration autosar path.
• asrPath(Pattern) matches communication elements with the given data element or op-
eration autosar path pattern.
• component(String) matches communication elements with the given component name.
• component(Pattern) matches communication elements with the given component name
pattern.
• componentAsrPath(String) matches communication elements with the given component
name autosar path.
• componentAsrPath(Pattern) matches communication elements with the given compo-
nent name autosar path pattern.
• port(String) matches communication elements with the given component port name.
• port(Pattern) matches communication elements with the given component port name
pattern.
• portAsrPath(String) matches communication elements with the given component port
autosar path.
• portAsrPath(Pattern) matches communication elements with the given component port
autosar path pattern.
• filterAdvanced(Closure) Add a custom predicated which matches communication ele-
ments for which the given closure results to true.
• and(Closure) combines the predicates inside the closure with a logical AND.
• or(Closure) combines the predicates inside the closure with a logical OR.
• not(Closure) negates the combination of predicates inside the closure.
© 2016, Vector Informatik GmbH
135 of 207


Chapter 4.
AutomationInterface API Reference
Examples
scriptTask("SelectAllUnmappedDelPortComElements", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def comElements =
selectCommunicationElements {
// select all unmapped delegation communication elements
delegation()
unmapped()
} getCommunicationElements()
scriptLogger.infoFormat("Selected {0} communication elements.",comElements.size())
}
}
}
}
Listing 4.170: Select all unmapped delegation port communication elements
import com.vector.cfg.model.sysdesc.api.com.ICommunicationElement
import com.vector.cfg.model.sysdesc.api.com.IDataCommunicationElement
scriptTask("SelectComElementsUsingAdvancedFilter", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def comElements =
selectCommunicationElements {
// advanced filter:
// only select communication elements
// which represent data elements of a specific data type
filterAdvanced { ICommunicationElement comElement ->
if (comElement instanceof IDataCommunicationElement) {
def mdfDataElement = comElement.getDataElementOrOperationMdfObject()
// check directly on autosar model level
return mdfDataElement.type.refTarget.name.equals("myCustomDataType")
}
false
}
} getCommunicationElements()
scriptLogger.infoFormat("Selected {0} communication elements.",comElements.size())
}
}
}
}
Listing 4.171: Select communication elements using an advanced filter
autoMap() tries to auto-map the selection of ICommunicationElements (IDataCommunicationElement
or IOperationCommunicationElement) according the data mapping assistant default rules.
Therefore the selection of possible target signal instances is computed and tried to match to
the selected communciation elements.
Examples for autoMap()
© 2016, Vector Informatik GmbH
136 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask("autoDatamapAllUnmappedSRDelPortComElements", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectCommunicationElements {
// select all unmapped sender/receiver delegation ports
delegation()
unmapped()
senderReceiver();
} autoMap()
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.172: Auto data map all unmapped sender/receiver delegation port communication
elements
autoMapTo(Closure) tries to auto-map the selection of communciation elements according the
data mapping assistant rules but offers more control for the auto-mapping: Inside the closure
additional predicates for narrowing down the target signal instances can be defined and code
to evaluate and change the auto-mapper results can be provided.
autoMapTo(Closure) will produce trace, info and warning logs.
To see them, activate the
’com.vector.cfg.dom.runtimesys.groovy.api.ICommunicationElementSelection’ logger with
the appropriate log level.
Control the auto-mapping in autoMapTo(Closure)
selectTargetSignalInstances(Closure) allows to define predicates to narrow down the tar-
get signal instances for the auto-mapping. The predicates are used to filter the possible target
signal instances which were computed from the communication element selection.
evaluateMatches(Closure) allows to evaluate and change the results of the auto-mapping. It
corresponds to the confirm page of the data mapping assistant.
For each communication element the provided closure is called: Parameters are the communi-
cation element, the optional matched target signal instance (or null), and a list of all potential
target signal instances (respecting the selectTargetSignalInstances(Closure) predicates).
The return value must be a signal instance or null.
© 2016, Vector Informatik GmbH
137 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.model.sysdesc.api.com.IAbstractSignalInstance
import com.vector.cfg.model.sysdesc.api.com.ICommunicationElement
scriptTask("autoDatamapAllUnmappedComElementsAndEvaluate", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectCommunicationElements {
unmapped() // only unmapped communication elements
} autoMapTo {
selectTargetSignalInstances {
// only map to unmapped rx signal instances
unmapped()
rx()
}
evaluateMatches {
ICommunicationElement communicationElement,
IAbstractSignalInstance optionalMatchedSignalInstance,
List<IAbstractSignalInstance> potentialSignalinstances ->
// evaluate the match here
if (optionalMatchedSignalInstance != null) {
def mdfSystemSignal = optionalMatchedSignalInstance.getMdfObject()
;
// check more specific ...
}
optionalMatchedSignalInstance
}
}
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.173: Auto data map all unmapped communication elements to unmapped rx signal
instances and evaluate
Nested Array of Primitives
expandNestedArraysOfPrimitive(boolean) allows to control
the expansion of nested arrays of primitive globally. Per default, arrays are fully expanded
(allowing to data map each array element). By setting the value to ’false’, all nested arrays of
primitive are not expanded and can be directly data-mapped to a signal.
© 2016, Vector Informatik GmbH
138 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.model.sysdesc.api.com.IAbstractSignalInstance
import com.vector.cfg.model.sysdesc.api.com.ISignalGroupInstance
import com.vector.cfg.model.sysdesc.api.com.ICommunicationElement
scriptTask("autoDatamapDoNotExpandNestedArrayElements", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectCommunicationElements {
} autoMapTo {
expandNestedArraysOfPrimitive false // do not expand nested arrays of primitive
evaluateMatches {
ICommunicationElement communicationElement,
IAbstractSignalInstance optionalMatchedSignalInstance,
List<IAbstractSignalInstance> potentialSignalInstances ->
if ("App2.rSRPort1.Element_2".equals(communicationElement.
getFullyQualifiedName())) {
// manual matching: map to first signal group
for (IAbstractSignalInstance potentialSignal: potentialSignalInstances) {
if (potentialSignal instanceof ISignalGroupInstance) {
return potentialSignal
}
}
}
if ("App2.rSRPort1.Element_2.RecordElement".equals(communicationElement.
getFullyQualifiedName())) {
// now the RecordElement which represents an array is directly offered to
map
// ....
}
optionalMatchedSignalInstance
}
}
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.174: Autodatamap and do not expand nested array elements
expandNestedArraysOfPrimitive(String,boolean) allows to control the expansion of nested
arrays of primitive for single nested arrays. Per default, the expandNestedArraysOfPrimi-
tive(boolean) applies. For the given fully qualified communication element name, the global
setting can be overridden.
The fully qualified communication element name is e.g. determinable when using the data
mapping assistant, performing an arbitrary signal group mapping of the root data element,
and using the right-mouse menu its ’Copy fully qualified name’ action on the nested array
element.
© 2016, Vector Informatik GmbH
139 of 207


Chapter 4.
AutomationInterface API Reference
import com.vector.cfg.model.sysdesc.api.com.IAbstractSignalInstance
import com.vector.cfg.model.sysdesc.api.com.ISignalGroupInstance
import com.vector.cfg.model.sysdesc.api.com.ICommunicationElement
scriptTask("autoDatamapDoExpandSpecificNestedArrayElement", DV_PROJECT){
code {
transaction {
domain.runtimeSystem {
def dataMappings =
selectCommunicationElements {
} autoMapTo {
// do not generally expand nested arrays of primitive
expandNestedArraysOfPrimitive false
// but expand the following specific record element
expandNestedArraysOfPrimitive("App2.rSRPort1.Element_2.RecordElement",true)
evaluateMatches {
ICommunicationElement communicationElement,
IAbstractSignalInstance optionalMatchedSignalInstance,
List<IAbstractSignalInstance> potentialSignalInstances ->
if ("App2.rSRPort1.Element_2".equals(communicationElement.
getFullyQualifiedName())) {
// manual matching: map to first signal group
for (IAbstractSignalInstance potentialSignal: potentialSignalInstances
) {
if (potentialSignal instanceof ISignalGroupInstance) {
return potentialSignal
}
}
}
if ("App2.rSRPort1.Element_2.RecordElement[0]".equals(communicationElement
.getFullyQualifiedName())) {
// the RecordElement (representing an array of primitive) is expanded
to map the single array elements
// ....
}
optionalMatchedSignalInstance
}
}
scriptLogger.infoFormat("Created {0} data mappings.",dataMappings.size())
}
}
}
}
Listing 4.175: Autodatamap and do expand a specific nested array element
© 2016, Vector Informatik GmbH
140 of 207


Chapter 4.
AutomationInterface API Reference
4.11 Persistency
The persistency API provides methods which allow to import and export model data from
and to files. The files are normally in the AUTOSAR .arxml format.
4.11.1 Model Export
The modelExporty allows to export MDF model data into .arxml files.
To access the export functionality use one of the getModelExport() or modelExport(Closure)
methods.
// You can access the API in every active project
def exportApi = persistency.modelExport
//Or you use a closure
persistency.modelExport {
}
Listing 4.176: Accessing the model export persistency API
4.11.1.1 Export ActiveEcuc
The method exportActiveEcuc(Object) exports the whole ActiveEcuC configuration into a
single file of type Path.
scriptTask('taskName') {
code {
def tempExportFolder = paths.resolveTempPath(".")
def resultFile = persistency.modelExport.exportActiveEcuc(tempExportFolder)
}
}
Listing 4.177: Export the ActiveEcuc to a file
4.11.1.2 Export Post-build selectable Variants
The method exportPostbuildVariants(Object) exports the Post-build variants info. This
will export the ActiveEcuc and miscellaneous data. The ActiveEcuC is exported into one file
(even for split DPA-projects) per variant into <project-name>.<variant-name>.ecuc.arxml.
Miscellaneous data is exported into one file per variant. The files contain all data of the project
except:
• ModuleConfigurations, ModuleDefinitions
• BswImplementations, EcuConfigurations
• Variant information like EvaluatedVariantSet
The created files are <project-name>.<variant-name>.misc.arxml.
The method returns a List<Path> of exported files.
© 2016, Vector Informatik GmbH
141 of 207


Chapter 4.
AutomationInterface API Reference
scriptTask('taskName') {
code {
persistency.modelExport {
def tempExportFolder = paths.resolveTempPath(".")
def fileList = exportPostbuildVariants(tempExportFolder)
}
}
}
Listing 4.178: Export a Post-build selectable project as variant files
4.11.1.3 Advanced Export
The advanced export use case provides access to multiple IModelExporter for special export
use cases like export the system description for the RTE.
Normally you would retrieve an IModelExporter by its ID via getExporter(String). On
this exporter you can call IModelExporter.export(Object) to export the model, or IMod-
elExporter.exportAsPostbuildVariants(Object) to export the model as variant divided
data.
You can retrieve a list of supported exporters from getAvailableExporter(). The list can
differ from data loaded in your project.
scriptTask('taskName') {
code {
def tempExportFolder = paths.resolveTempPath(".")
def fileList
//Switch to the persistency export API
persistency.modelExport{
// The getAvailableExporter() returns all exporters in the system
def exporterList = getAvailableExporter()
// Select an exporter by its ID
def exporterOpt = getExporter("activeEcuc")
exporterOpt.ifPresent { exporter ->
// Export into folder, when exporter exists
fileList = exporter.export(tempExportFolder)
}
}
}
}
Listing 4.179: Export the project with an exporter
4.11.2 Model Import
The modelImport allows to import MDF model data from .arxml files.
To access the import functionality use one of the getModelImport() or modelImport(Closure)
methods.
Currently no import API is provided. Please inform Vector, if you need an import
API.

© 2016, Vector Informatik GmbH
142 of 207


Chapter 4.
AutomationInterface API Reference
// You can access the API in every active project
def importApi = persistency.modelImport
//Or you use a closure
persistency.modelImport {
}
Listing 4.180: Accessing the model import persistency API
© 2016, Vector Informatik GmbH
143 of 207


Chapter 4.
AutomationInterface API Reference
4.12 Utilities
4.12.1 Constraints
Constraints provides general purpose constraints for checking given parameter values through-
out the automation interface. These constraints are referenced from the AutomationInterface
documentation wherever they apply. The AutomationInterface takes a fail fast approach ver-
ifying provided parameter values as early as possible and throwing appropriate exceptions if
values violate the corresponding constraints.
The following constraints are provided:
IS_NOT_NULL
Ensures that the given Object is not null.
IS_NON_EMPTY_STRING
Ensures that the given String is not empty.
IS_VALID_FILE_NAME
Ensures that the given String can be used as a file name.
IS_VALID_PROJECT_NAME
Ensures that the given String can be used as a name for a
project. A valid project name starts with a letter [a-zA-Z] contains otherwise only characters
matching [a-zA-Z0-9_] and is at most 128 characters long.
IS_NON_EMPTY_ITERABLE
Ensures that the given Iterable is not empty.
IS_VALID_FILE_NAME
Ensures that the given String can be used as a file name.
IS_VALID_AUTOSAR_SHORT_NAME
Ensures that the given String conforms to the
syntactical requirements for AUTOSAR short names.
IS_VALID_AUTOSAR_SHORT_NAME_PATH
Ensures that the given String conforms
to the syntactical requirements for AUTOSAR short name paths.
IS_WRITABLE
Ensures that the file or folder represented by the given Path exists and can
be written to.
IS_READABLE
Ensures that the file or folder represented by the given Path exists and can
be read.
IS_EXISTING_FOLDER
Ensures that the given Path points to an existing folder.
IS_EXISTING_FILE
Ensures that the given Path points to an existing file.
© 2016, Vector Informatik GmbH
144 of 207


Chapter 4.
AutomationInterface API Reference
IS_CREATABLE_FOLDER
Ensures that the given Path either points to an existing folder
which can be written to or points to a location at which a corresponding folder could be
created.
IS_DCF_FILE
Ensures that the given Path points to a DaVinci Developer workspace file
(.dcf file).
IS_DPA_FILE
Ensures that the given Path points to a DaVinci project file (.dpa file).
IS_ARXML_FILE
Ensures that the given Path points to an .arxml file.
IS_SYSTEM_DESCRIPTION_FILE
Ensures that the given Path points to a system de-
scription input file (.arxml, .dbc, .ldf, .xml or .vsde file).
IS_COMPATIBLE_DA_VINCI_DEV_EXECUTABLE
Ensures that the given Path points
to a compatible DaVinci Developer executable (DaVinciDEV.exe).
4.12.2 Converters
General purpose converters (java.util.Functions) for performing value conversions through-
out the automation interface are provided. These converters are referenced from the Automa-
tionInterface documentation wherever they apply. The AutomationInterface is typed strongly.
In some cases, however, e.g. when specifying file locations, it is desirable to allow for a range
of possibly parameter types. This is achieved by accepting parameters of type Object and
converting the given parameters to the desired type.
The following converters are provided:
ScriptConverters.TO_PATH
Attempts to convert arbitrary Objects to Paths using
IAutomationPathsApi.resolvePath(Object) 4.4.3.2 on page 34.
ScriptConverters.TO_SCRIPT_PATH
Attempts to convert arbitrary Objects to Paths us-
ing IAutomationPathsApi.resolveScriptPath(Object) 4.4.3.3 on page 35.
ScriptConverters.TO_VERSION
Attempts to convert arbitrary Objects to IVersions. The
following conversions are implemented:
• For null or IVersion arguments the given argument is returned. No conversion is applied.
• Strings are converted using Version.valueOf(String).
• Numbers are converted by converting the int obtained from Number.intValue() using
Version.valueOf(int).
• All other Objects are converted by converting the String obtained from Object.toString().
For thrown Exceptions see the used functions described above.
© 2016, Vector Informatik GmbH
145 of 207


Chapter 4.
AutomationInterface API Reference
ModelConverters.TO_MDF
Attempts to convert arbitrary Objects to MDFObjects.
The
following conversions are implemented:
• For null or MDFObject arguments the given argument is returned. No conversion is
applied.
• IHasModelObjects are converted using their getMdfModelElement() method.
• IViewedModelObjects are converted using their getMdfObject() method.
• For all other Objects ClassCastExceptions are thrown.
For thrown Exceptions see the used functions described above.
© 2016, Vector Informatik GmbH
146 of 207


Chapter 4.
AutomationInterface API Reference
4.13 Advanced Topics
This chapter contains advanced use cases and classes for special tasks. For a normal script these
items are not relevant.
4.13.1 Java Development
It is also possible to write automation scripts in plain Java code, but this is not recommended.
There are some items in the API, which need a different usage in Java code.
This chapter describes the differences in the Automation API when used from Java code.
4.13.1.1 Script Task Creation in Java Code
Java code could not use the Groovy syntax to provide script tasks. So another way is needed
for this. The IScriptFactory interface provides the entry point that Java code could provide
script tasks. The createScript(IScriptCreationApi) method is called when the script is
loaded.
This interface is not necessary for Groovy clients.
public class MyScriptFactoryAsJavaCode implements IScriptFactory {
@Override
public void createScript(IScriptCreationApi creation) {
creation.scriptTask("TaskFromFactory", IScriptTaskTypeApi.DV_APPLICATION,
(taskBuilder) -> {
taskBuilder.code(
(scriptExecutionContext, taskArgs) -> {
// Your script task code here
return null;
});
});
creation.scriptTask("Task2", IScriptTaskTypeApi.DV_PROJECT,
(taskBuilder) -> {
taskBuilder.code(
(scriptExecutionContext, taskArgs) -> {
// Your script task code for Task2 here
return null;
});
});
}
}
Listing 4.181: Java code usage of the IScriptFactory to contribute script tasks
You should try to use Groovy when possible, because it is more concise than the Java code,
without any difference at script task creation and execution.
4.13.1.2 Java Code accessing Groovy API
Most of the Automation API is usable from both languages Java and Groovy, but some methods
are written for Groovy clients. To use it from Java you have to write some glue code.
Differences are:
© 2016, Vector Informatik GmbH
147 of 207


Chapter 4.
AutomationInterface API Reference
• Accessing Properties
• Using API entry points.
• Creating Closures
Accessing Properties
Properties are not supported by Java so you have to use the getter/setter
methods instead.
API Entry Points
Most of the Automation API is added to the object by so called Dy-
namicObjects.
This is not available in Java, so you have to call IScriptExecutionCon-
text.getInstance(Class) instead.
So if you want to access The IWorkflowApi you have
to write:
//Java code:
IScriptExecutionContext scriptCtx = ...;
IWorkflowApi workflow = scriptCtx.getInstance(IWorkflowApiEntryPoint.class).getWorkflow()
//Instead of Groovy code:
workflow{
}
Listing 4.182: Accessing WorkflowAPI in Java code
Creating Closure instances from Java lambdas
The class Closures provides API to create
Closure instances from Java FunctionalInterfaces.
The from() methods could be used to call Groovy API from Java classes, which only accepts
Closure instances.
Sample:
Closure<?> c = Closures.from((param) -> {
// Java lambda
});
Listing 4.183: Java Closure creation sample
Creating Closure Instances from Java Methods
You could also create arbitrary Closures
from any Java method with the class MethodClosure. This is describe in:
http://melix.github.io/blog/2010/04/19/coding_a_groovy_closure_in.html1
4.13.1.3 Java Code in dvgroovy Scripts
It is not possible to write Java classes when using the .dvgroovy script file. You have to create
an automation script project, see chapter 7 on page 186.
1Last accessed 2016-05-24
© 2016, Vector Informatik GmbH
148 of 207


Chapter 4.
AutomationInterface API Reference
4.13.2 Unit testing API
The Automation Interface provides an connector to execute unit tests as script task. This is
helpful, if you want to write tests for:
• Generators
• Validations
• Workflow rules
• ...
Normally a script task executes it’s code block, but the unit test task will execute all contained
unit tests instead.
4.13.2.1 JUnit4 Integration
The AutomationInterface can execute JUnit 4 test cases and test suites.
Execution of JUnit Test Classes
A simple unit test class will look like:
import org.junit.Test;
public class ScriptJUnitTest {
@Test
public void testYourLogic() {
// Write your test code here
}
Listing 4.184: Run all JUnit tests from one class
You can access the Automation API with the ScriptApi class. See chapter 4.4.8 on page 43
for details.
Execution of multiple Tests with JUnit Suite
To execute multiple tests you have to group
the tests into a test suite.
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
// Two test classes
ScriptJUnitTest.class,
ScriptSpockTest.class,
// Another JUnit suite
InnerSuiteScriptJUnitTests.class,
})
public class AllMyScriptJUnitTests {
Listing 4.185: Run all JUnit tests using a Suite
You can also group test suites in test suites and so on.
© 2016, Vector Informatik GmbH
149 of 207


Chapter 4.
AutomationInterface API Reference
4.13.2.2 Execution of Spock Tests
The AutomationInterface can also execute Spock tests. See:
• Homepage: https://github.com/spockframework/spock2
• Documentation: http://spockframework.github.io/spock/docs/1.0/index.html3
It is also possible to group multiple Spock test into a JUnit Test Suite.
Usage sample:
import spock.lang.Specification
class ScriptSpockTest extends Specification {
def "Simple Spock test"(){
when:
//Add your test logic here
def myExpectedString = "Expected"
then:
myExpectedString == "Expected"
}
}
Listing 4.186: Run unit test with the Spock framework
You can access the Automation API with the ScriptApi class. See chapter 4.4.8 on page 43
for details.
You have to add a Spock dependency in your build.gradle file:
dependencies {
compileDvCfg "org.spockframework:spock-core:1.0-groovy-2.4"
}
Note: after the change you have to call Gradle to update the IntelliJ IDEA project.
gradlew idea
4.13.2.3 Registration of Unit Tests in Scripts
A test or the root suite class has to be registered in a script to be executable. The first argument
is the taskName for the UnitTests the second is the class of the tests.
// You can add a unit test inside a script
unitTestTask("MyUnitTest", AllMyScriptJUnitTests.class)
Listing 4.187: Add a UnitTest task with name MyUnitTest
It is also possible to reference the test/suite class directly as a script inside of a script project.
So you don’t have to create a script as a wrapper.
2Last accessed 2016-05-24
3Last accessed 2016-05-24
© 2016, Vector Informatik GmbH
150 of 207


Chapter 4.
AutomationInterface API Reference
project.ext.automationClasses = [
"sample.MyScript",
"sample.MyUnitTestSuite", // This is a test suite
// Add here your test or suite class with full qualified name
]
Listing 4.188: The projectConfig.gradle file content for unit tests
© 2016, Vector Informatik GmbH
151 of 207

5 Data models in detail
This chapter describes several details and concepts of the involved data models. Be aware that
the information here is focused on the Java API. In most cases it is more convenient using the
Groovy APIs described in 4.6 on page 62. So, whenever possible use the Groovy API and read
this chapter only to get background information when required.
5.1 MDF model - the raw AUTOSAR data
The MDF model is being used to store the AUTOSAR model loaded from several ARXML
files. It consists of Java interfaces and classes which are generated from the AUTOSAR meta-
model.
5.1.1 Naming
The MDF interfaces have the prefix MI followed by the AUTOSAR meta-model name of the class
they represent. For example, the MDF interface related to the meta-model class ARPackage
(AUTOSAR package in the top-level structure of the meta-model) is MIARPackage.
5.1.2 The models inheritance hiearchy
The MDF model therefore implements (nearly) the same inheritance hierarchy and associations
as defined by the AUTOSAR model. These interfaces provide access to the data stored in the
model.
See figure 5.1 on the next page shows the (simplified) inheritance hierarchy of the ECUC
container type MIContainer. What we can see in this example:
• A container is an MIIdentifiable which again is a MIReferrable. The MIReferrable
is the type which holds the shortname (getName()). All types which inherit from the
MIReferrable have a shortname (MIARPackage, MIModuleConfiguration, ...)
• A container is also a MIHasContainer. This is an artificial base class (not part of the
AUTOSAR meta-model) which provides all features of types which have sub-containers.
The MIModuleConfiguration therefore has the same base type
• A container also inherits from MIHasDefinition. This is an artificial base class (not
part of the AUTOSAR meta-model) which provides all features of types which have an
AUTOSAR definition. The MIModuleConfiguration and MIParameterValue therefore
has the same base type
• All MIIdentifiables can hold ADMIN-DATA and ANNOTATIONs
• All MDF objects in the AUTOSAR model tree inherit from MIObject which is again an
MIObject
5.1.2.1 MIObject and MDFObject
The MIObject is the base interface for all AUTOSAR model objects in the DaVinci Configurator
data model. It extends MDFObject which is the base interface of all model objects. Your
© 2016, Vector Informatik GmbH
152 of 207



Chapter 5.
Data models in detail
Figure 5.1: ECUC container type inheritance
client code shall always use MIObject, when AUTOSAR model objects are used, instead of
MDFObject.
The figure 5.2 on the following page describes the class hierarchy of the MIObject.
5.1.3 The models containment tree
The root node of the AUTOSAR model is MIAUTOSAR. Starting at this object the complete model
tree can be traversed. MIAUTOSAR.getSubPackage() for example returns a list of MIARPackage
objects which again have child objects and so on.
Figure 5.3 on the next page shows a simple example of an MDF object containment hierarchy.
This example contains two AUTOSAR packages with module configurations below.
© 2016, Vector Informatik GmbH
153 of 207




Chapter 5.
Data models in detail
Figure 5.2: MIObject class hierarchy and base interfaces
Figure 5.3: Autosar package containment
© 2016, Vector Informatik GmbH
154 of 207


Chapter 5.
Data models in detail
In general, objects which have child objects provide methods to retrieve them.
• MIAUTOSAR.getSubPackage() for example returns a list of child packages
• MIContainer.getSubContainer() returns the list of sub-containers and
MIContainer.getParameter() all parameter-values and reference-values of a container
5.1.4 The ECUC model
The interfaces and classes which represent the ECUC model don’t exactly follow the AUTOSAR
meta-model naming. because they are designed to store AUTOSAR 3 and AUTOSAR 4 models
as well.
Affected interfaces are:
• MIModuleConfiguration and its child objects (containers, parameters, . . . )
• MIModuleDef and its child objects (containers definitions, parameter definitions, . . . )
The ECUC model also unifies the handling of parameter- and reference-values. Both, parameter-
values and reference-values of a container, are represented as MIParameterValue in the MDF
model.
5.1.5 Order of child objects
Child object lists in the MDF model have the same order as the data specified in the ARXML
files. So, loading model objects from AXRML doesn’t change the order.
5.1.6 AUTOSAR references
All AUTOSAR reference objects in the MDF model have the base interface MIARRef.
Figure 5.4 on the following page shows this type hierarchy for the definition reference of an
ECUC container.
In ARXML, such a reference can be specified as:
<DEFINITION-REF DEST="ECUC-PARAM-CONF-CONTAINER-DEF">
/MIRCOSAR/Com/ComGeneral
</DEFINITION-REF>
• MIARRef.getValue() returns the AUTOSAR path of the object, the reference points to
(as specified in the ARXML file). In the example above "/MIRCOSAR/Com/ComGeneral"
would be this value
• MIContainerDefARRef.getRefTarget() on the other hand returns the referenced MDF
object if it exists. This method is located in a specific, typesafe (according to the type it
points to) reference interface which extends MIARRef. So, if an object with the AUTOSAR
path "/MIRCOSAR/Com/ComGeneral" exists in the model, this method will return it
© 2016, Vector Informatik GmbH
155 of 207



Chapter 5.
Data models in detail
Figure 5.4: The ECUC container definition reference
5.1.7 Model changes
5.1.7.1 Transactions
The MDF model provides model change transactions for grouping several model changes into
one atomic change.
A solving action, for example, is being executed within a transaction for being able to change
model content. Validation and generator developers don’t need to care for transactions. The
tools framework mechanisms guarantee that their code is being executed in a transaction were
required.
The tool guarantees that model changes cannot be executed outside of transactions. So, for
example, during validation of model content the model cannot be changed. A model change
here would lead to a runtime exception.
5.1.7.2 Undo/redo
On basis of model change transactions, MDF provides means to undo and redo all changes
made within one transaction. The tools GUI allows the user to execute undo/redo on this
granularity.
5.1.7.3 Event handling
MDF also supports model change events. All changes made in the model are reported by this
asynchronous event mechanism. Validations, for example, detect this way which areas of the
model need to be re-validated. The GUI listens to events to update its editors and views when
model content changes.
© 2016, Vector Informatik GmbH
156 of 207


Chapter 5.
Data models in detail
5.1.7.4 Deleting model objects
Model objects must be deleted by a special service API. In Java code that’s:
IModelOperationsPublished.deleteFromModel(MDFObject).
Deleting an object means:
• All associations of the object are deleted. The connection to its parent object, for example,
is being deleted which means that the object is not a member of the model tree anymore
• The object itself is being deleted. In fact, it is not really deleted (and garbage collected)
as a Java object but only marked as removed. Undo of the transaction, which deleted this
object, removes this marker and restores the deleted associations
5.1.7.5 Access to deleted objects
All subsequent access to content of deleted objects throws a runtime exception. Reading the
shortname of an MIContainer, for example.
5.1.7.6 Set-methods
Model interfaces provide get-methods to read model content. MDF also offers set-methods for
fields and child objects with multiplicity 0..1 or 1..1.
These set-methods can be used to change model content.
• MIARRef.getValue() for example returns a references AUTOSAR path
• MIARRef.setValue(String newValue) sets a new path
5.1.7.7 Changing child list content
MDF doesn’t offer set-methods for fields and child objects with multiplicity 0..* or 1..*.
MIContainer.getSubContainer(), for example, returns the list of sub-containers but there is
no MIContainer.setSubContainer() method to change the sub-containers.
Changing child lists means changing the list itself.
• To add a new object to a child list, client code must use the lists add() method. MI-
Container.getSubContainer().add(container), for example, adds a container as ad-
ditional sub-container. This added object is being appended at the end of the list
• Removing child list objects is a side-effect of deleting this object. The delete operation
removes it from the list automatically
5.1.7.8 Change restrictions
The tools transaction handling implements some model consistency checks to avoid model
changes which shall be avoided. Such changes are, for example:
• Creating duplicate shortnames below one parent object (e.g. two sub-containers with the
same shortname)
• Changing or deleting pre-configured parameters
© 2016, Vector Informatik GmbH
157 of 207


Chapter 5.
Data models in detail
When client code tries to change the model this way, the related model change transaction is
being canceled and the model changes are reverted (unconditional undo of the transaction). A
special case here are solving actions. When a solving action inconsistently changes the model,
only the changes made by this solving action are reverted (partial transaction undo of one
solving action execution).
5.2 Post-build selectable
5.2.1 Model views
5.2.1.1 What model views are
After project load, the MDF model contains all objects found in the ARXML files. Variation
points are just data structures in the model without any special meaning in MDF.
If you want to deal with variants you must use model views. A model view filters access to the
MDF model based on the variant definition and the variation points.
There is one model view per variant. If you use this variants model view, the MDF model
filters exactly what this variant contains.
All other objects become invisible.
When your
retrieve parameters of a container for example, you’ll see only parameters contained in your
selected variant.
final boolean isVisible = ModelAccessUtil.isVisible(t.paramVariantA);
Listing 5.1: Check object visibility
5.2.1.2 The IModelViewManager project service
The IModelViewManager handles model visibility in general. It provides the following means:
• Get all available variants
• Execute code with visibility of a specific predefined variant only. This means your code
sees all objects contained in the specified variant. All objects which are not contained in
this variant will be invisible
• Execute code with visibility of invariant data only (see IInvariantView).
• Execute code with unfiltered model visibility. This means that your code sees all objects
unconditionally. If the project contains variant data, you see all variants together
It additionally provides detailed visibility information for single model objects:
• Get all variants, a specific object is visible in
• Find out if an object is visible in a specific variant
final List<IPredefinedVariantView> variants = viewMgr.getAllVariantViews();
Listing 5.2: Get all available variants
try (final IModelViewExecutionContext context = viewMgr.executeWithModelView(t.variantViewA)) {
assertIsVisible(t.paramInvariant);
assertIsVisible(t.paramVariantA);
assertNotVisible(t.paramVariantB);
}
© 2016, Vector Informatik GmbH
158 of 207


Chapter 5.
Data models in detail
try (final IModelViewExecutionContext context = viewMgr.executeWithModelView(t.variantViewB)) {
assertIsVisible(t.paramInvariant);
assertNotVisible(t.paramVariantA);
assertIsVisible(t.paramVariantB);
}
try (final IModelViewExecutionContext context = viewMgr.executeUnfiltered()) {
assertIsVisible(t.paramInvariant);
assertIsVisible(t.paramVariantA);
assertIsVisible(t.paramVariantB);
}
Listing 5.3: Execute code with variant visibility
Important remark:
It is essential that the execute...() methods are used exactly as imple-
mented in the listing above. The try (...)
{...} construct is a new Java 7 feature which
guarantees that resources are closed whenever (and how ever) the try block is being left. For
details read:
http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
© 2016, Vector Informatik GmbH
159 of 207


Chapter 5.
Data models in detail
Collection<IPredefinedVariantView> visibleVariants = viewMgr.getVisibleVariantViews(t.
paramInvariant);
assertThat(visibleVariants.size(), equalTo(2));
assertThat(visibleVariants, containsInAnyOrder(t.variantViewA, t.variantViewB));
visibleVariants = viewMgr.getVisibleVariantViews(t.paramVariantA);
assertThat(visibleVariants.size(), equalTo(1));
assertThat(visibleVariants, containsInAnyOrder(t.variantViewA));
Listing 5.4: Get all variants, a specific object is visible in
5.2.1.3 Variant siblings
Variant siblings of an MDF object are MDF object instances which represent the same object
but in other variants.
The method IModelVarianceAccessPublished.getVariantSiblings() provides access to these
sibling objects:
This method returns MDF object instances representing the same object but in all variants. The
collection returned contains the object itself including all siblings from other variants.
The calculation of siblings depends on the object-type as follows:
• Ecuc Module Configuration:
Since module configurations are never variant, this method always returns a collection
which contains the specified object only
• Ecuc Container:
For siblings of a container all of the following conditions apply:
– They have the same AUTOSAR path
– They have the same definition path (containers with the same AUTOSAR path but
different definitions may occur in variant models - but they are not variant siblings
because they differ in type)
• Ecuc Parameter:
For siblings of a parameter all of the following conditions apply:
– The parent containers have the same AUTOSAR path
– The parameter siblings have the same definition path
The parameter values are not relevant so parameter siblings may have different values.
Multi-instance parameters are special. In this case the method returns all multi-instance
siblings of all variants.
• System description object:
For siblings of MIReferrables all of the following conditions apply:
– They have the same meta-class
– They have the same AUTOSAR path
For siblings of non-MIReferrables all of the following conditions apply:
– Their nearest MIReferrable-parents are either the same object or variant siblings
– Their containment feature paths below these nearest MIReferrable-parents is equal
© 2016, Vector Informatik GmbH
160 of 207



Chapter 5.
Data models in detail
Special use cases: When the specified object is not a member of the model tree (the object
itself or one of its parents has no parent), it also has no siblings. In this case this method
returns a collection containing the specified object only.
Remark concerning visibility: This method returns all siblings independent of the currently
visible objects. This means that the returned collection probably contains objects which are
not visible by the caller! It also means that the specified object itself doesn’t need to be visible
for the caller.
5.2.1.4 The Invariant model views
There are use cases which require to see the invariant model content only. One example are
generators for modules which don’t support variance at all.
There are two different invariant views currently defined:
• Value based invariance (values are equal in all variants):
The IInvariantValuesView contains objects were all variant siblings have the same value
and exist in all variants. One of the siblings is contained
• Definition based invariance (values which shall be equal in all variants):
The IInvariantEcucDefView contains objects which are not allowed to be variant ac-
cording to the BSWMD rules. One of the siblings is contained
All Invariant views derive from the same interface IInvariantView, so if you want to use an
invariant view and not specifying the exact view, you could use the IInvariantView interface.
The figure 5.5 describes the hierarchy.
Figure 5.5: Invariant views hierarchy
The InvariantValues model view
The IInvariantValuesView contains only elements which
have one of the following properties:
• The element and no parent has any MIVariationPoint with a post-build condition
• All variant siblings have the same value and exist in all variants. Then one of the siblings
is contained in the IInvariantValuesView
© 2016, Vector Informatik GmbH
161 of 207



Chapter 5.
Data models in detail
So the semantic of the InvariantValues model view is that all values are equal in all vari-
ants.
You could retrieve an instance of IInvariantValuesView by calling IModelViewManager.
getInvariantValuesView().
IModelViewManager viewMgr =...;
IInvariantValuesView invariantView = viewMgr.getInvariantValuesView();
// Use the invariantView like any other model view
Listing 5.5: Retrieving an InvariantValues model view
Example
The figure 5.6 describes an example for a module with containers and the visibility
in the IInvariantValuesView.
• Container A is invisible because it is contained in variant 1 only
• Container B and C are visible because they are contained in all variants
• Parameter a is visible because it is contained in all variants with the same value
• Parameter b is invisible: It is contained in all variants but with different values
• Parameter c is invisible because it is contained in variant 3 only
Figure 5.6: Example of a model structure and the visibility of the IInvariantValuesView
Specification
See also the specification for details of the IInvariantValuesView.
The Invariant EcuC definition model view
The IInvariantEcucDefView contains the same
objects as the invariant values view but additionally excludes all objects which, by (EcuC /
BSWMD) definition, support variance. Using this view you can avoid dealing with objects which
are accidentally equal by value (in your test configurations) but potentially can be different
because they support variance.
More exact the IInvariantEcucDefView will additionally exclude elements which have the
following properties:
• If the parent module configuration specifies VARIANT-POST-BUILD-SELECTABLE as
implementation configuration variant
– All objects ( MIContainer, MINumericalValue, ...) are excluded, which support
variance according to their EcuC definition. (potentially variant objects)
© 2016, Vector Informatik GmbH
162 of 207


Chapter 5.
Data models in detail
• If the parent module configuration doesn’t specify VARIANT-POST-BUILD-SELECTABLE
as implementation configuration variant. All contained objects do not support variance,
so the view actually shows the same objects as the IInvariantValuesView.
The implementation configuration variant in fact overwrites the objects definition for elements
in the ModuleConfiguration.
Reasons to Use the view
The EcucDef view guarantees that you don’t access potentially
variant data without using variant specific model views. So it allows you to improve code
quality in your generator.
When your test configuration for example contains equal values for a parameter which is po-
tentially variant you will see this parameter in the invariant values view but not in the EcucDef
view. Consequences if you access data in other module configurations: When the BSWMD file
of this other module is being changed, e.g. a parameter now supports variance, objects can
become invisible due to this change. You are forced to adapt your code then.
Usage
You could retrieve an instance of IInvariantEcucDefView by calling IModelViewMan-
ager.getInvariantEcucDefView(). And then use is as any other IModelView.
IModelViewManager viewMgr =...;
IInvariantEcucDefView invariantView = viewMgr.getInvariantEcucDefView();
// Use the invariantView like any other model view
Listing 5.6: Retrieving an InvariantEcucDefView model view
Specification
See also the specification for details of the IInvariantEcucDefView.
5.2.1.5 Accessing invisible objects
When you switch to a model view, objects which are not contained in the related variant become
invisible. This means that access to their content leads to an InvisibleVariantObjectFea-
tureException.
To simplify handling of invisible objects, some model services provide model access even for
invisible objects in variant projects. The affected classes and interfaces are:
• ModelUtil
• ModelAccessUtil
• IReferrableAccess
• IModelAccess
• IModelCompareService
• DefRef
• AsrPath
• IEcucDefinitionAccess (all methods which deal with configuration side objects)
Only a subset of the methods in these services work with invisible objects (read the methods
JavaDoc for details). The general policy to select exactly these methods was:
© 2016, Vector Informatik GmbH
163 of 207


Chapter 5.
Data models in detail
• Support access to type and object identity of MDF objects (definition and AUTOSAR
path)
• Parameter value or other content related information must still be retrieved in a context
the object is visible in
• Also not contained are methods which change model content. E.g. deleting invisible
objects, set parameter values, ...
5.2.1.6 IViewedModelObject
The IViewedModelObject is a container for one MIObject and an IModelView that was used
when viewing the MIObject.
The interface provides getter for the MIObject, and the IModelView which was active dur-
ing creation of the IViewedModelObject. So the IViewedModelObject represents a tuple of
MIObject and IModelView.
This could be used to preserve the state/tuple of a MIObject and IModelView, for later re-
trieval.
Examples:
• BswmdModel objects
• Elements for validation results, retrieved in a certain view
• Model Query API like ModelTraverser, to preserve IModelView information
Notes:
A IViewedModelObject is immutable and will not update any state. Especially not when the
visibility of the getMdfObject(), is changed after the construction of the IViewedModelOb-
ject.
It is not guaranteed, that the MIObject is visible in the creation IModelView, after the model is
changed. It is also possible to create an IViewedModelObject of a MIObject and a IModelView,
where the MIObject is invisible.
The method getCreationModelView() returns the IModelView of the IViewedModelObject,
which was active when the model object was viewed IViewedModelObject.
5.2.2 Variant specific model changes
The CFG5 data model provides an execution context which guarantees that only the selected
variant is being modified. Objects which are visible in more than one variant are cloned auto-
matically. The clones and the object which is being modified (or their parents) automatically
get a variation point with the required post-build conditions.
The following picture shows how this execution context works:
See figure 5.7 on the next page.
• Before modifying the parameter, this instance is invariant. The same MDF instance is
visible in all variants
• When the client code changes the parameter value, the model automatically clones the
parameter first
© 2016, Vector Informatik GmbH
164 of 207



Chapter 5.
Data models in detail
Figure 5.7: Variant specific change of a parameter value
• Only the parameter instance which is visible in the currently active view is being modified.
The content of other variants stays untouched
Remark: This change mode is implicitly turned off when executing code in the IInvari-
antView or in an unfiltered context.
try (final IModelViewExecutionContext viewContext = viewMgr.executeWithModelView(variantView))
{
try (final IModelViewExecutionContext modeContext = viewMgr.
executeWithVariantSpecificModelChanges()) {
ma.setAsString(parameter, "Vector-Informatik");
}
}
Listing 5.7: Execute code with variant specific changes
5.2.3 Variant common model changes
The CFG5 data model provides an execution context which guarantees that model objects are
modified in all variants.
The behavior of this mode depends on the mode flag parameter as follows:
• mode == ALL : All parameters and containers are affected
• mode == DEFINITION_BASED : Only those parameters and containers are af-
fected which do not support variance (according to their definition in the BSWMD file
and the implementation configuration variant of their module configuration)
• mode == OFF : Doesn’t turn on this change mode (this value is used internally only)
Remark: This method doesn’t allow to reduce the scope of this change mode. So if ALL is
already set, this method doesn’t permit to use DEFINITION_BASED (or OFF) to reduce the
effective amount of objects. ALL will be still active then.
The following picture shows how this execution context works:
See figure 5.8 on the following page.
• We start with a variant model which contains one parameter in two instances - one per
variant - with the values 3 and 7
• When the client code sets the parameter value in variant 1 to 4, the model automatically
modifies the variant sibling in variant 2
• As a result, the parameter has the same value in all variants
This change mode works with parameters and containers. The following operations are sup-
ported:
© 2016, Vector Informatik GmbH
165 of 207



Chapter 5.
Data models in detail
Figure 5.8: Variant common change of a parameter value
• Container/parameter creation: The created object afterwards exists in all variants
the related parent exists in. Already existing objects are not modified. Missing objects
are created
• Container/parameter deletion: The deleted object afterwards is being removed from
all variants the related parent exists in. So actually all variant siblings are deleted
• Parameter value change: The parameter exists and has the same value in all variants
the parent container exists in. If a parameter instance is missing in a variant, it is being
created
Special behavior for multi-instance parameters:
• This mode guarantees that a set of multi-instance parameters is equal in all variants
• Only the values of multi-instance parameters are relevant. Their order can be different in
different variants
• Beside the values, this change mode guarantees that all variants contain the same number
of parameter instances. So, when a multi-instance set is being modified in a variant view,
this change mode creates or deletes objects in other variants to guarantee an equal number
of instances in all variant sibling sets
Remark: This change mode is implicitly turned on with the mode flag ALL when code is
being executed in the IInvariantView. It is being ignored implicitly when executing code in
an unfiltered context.
5.3 BswmdModel details
5.3.1 BswmdModel - DefinitionModel
The BswmdModel provides a type safe and easy access to data of BSW modules (Ecu configu-
ration elements).
Example:
• Access a single parameter /MICROSAR/ComM/ComMGeneral/ComMUseRte
You can to write: comM.getComMGeneral().getComMUseRte()
© 2016, Vector Informatik GmbH
166 of 207



Chapter 5.
Data models in detail
• Access containers[0:*] /MICROSAR/ComM/ComMChannel
You can to write:
for (ComMChannel channel : comM.getComMChannel()){
int value = channel.getComMChannelId().getValue();
}
The DaVinci Configurator internal Model (MDF model) has 1:1 relationship to your Bswmd-
Model. The BswmdModel will retrieve all data from the underlying MDF model.
Figure 5.9: The relationship between the MDF model and the BswmdModel
DefinitionModel
The DefinitionModel is the base implementation of every BswmdModel. Ev-
ery BswmdModel class is a subclass of the DefinitionModel where the classes begin with GI,
like GIContainer.
5.3.1.1 Types of DefinitionModels
There are two types of DefinitionModels:
1. BswmdModel (formally known as DefinitionTyped BswmdModel)
2. DefRef API (formally known as Untyped BswmdModel)
The BswmdModel consists of generated classes for the module definition elements like Mod-
uleDefinitions, Containers, Parameters in bswmd files. The generated class contains get-
ter methods for each child element. So you can access every child by the corresponding getter
method with compile time safety of the sub type.
The BswmdModel derives from the DefinitionModel DefRef API, so the BswmdModel
contains all functionalities of the DefRef API.
The DefRef API of the DefinitionModel provides an generic access to the Ecu configuration
structure via DefRefs. There are NO generated classes for the Definition structure. The
DefRef API uses the base classes of the DefinitionModel to provide this DefRef based access.
Every interface in the DefinitionModel starts with an GI. The Ecu Configuration elements have
corresponding base interfaces for each element:
© 2016, Vector Informatik GmbH
167 of 207


Chapter 5.
Data models in detail
• ModuleConfiguration - GIModuleConfiguration
• Container - GIContainer
• ChoiceContainer - GIChoiceContainer
• Parameter - GIParameter<?>
– Integer Parameter - GIParameter<BigInteger>
– Boolean Parameter - GIParameter<Boolean>
– Float Parameter - GIParameter<BigDecimal>
– String Parameter - GIParameter<String>
• Reference - GIReference<?>
– Container Reference - GIReferenceToContainer
– Foreign Reference- GIReference<Class>
So there are different classes for the different model types, e.g. all MDF classes start with MI,
the Untyped start with GI and DefinitionTyped classes are generated. The table 5.1 contrasts
the different model types and their corresonding classes.
AUTOSAR type
MDFModel
“Untyped” BswmdModel
“DefinitionTyped”
ModuleConfiguration
MIModuleConfiguration
GIModuleConfiguration
CanIf
(generated)
Container
MIContainer
GIContainer
CanIfPrivateCfg
(generated)
String Parameter
MITextualValue
GIParameter<String>
GString
Integer Parameter
MINumericalValue
GIParameter<BigInteger>
GInteger
Reference to Container
MIReferenceValue
GIReferenceToContainer
CanIfCtrlDrvInitHohConfigRef
(generated)
Enum Parameter
MITextualValue
GIParameter<String>
CanIfDispatchBusOffUL
(generated)
Table 5.1: Different Class types in different models
Note: The GString in the table is not the Groovy GString class.
It is com.vector.cfg.gen.core.bswmdmodel.param.GString.
5.3.1.2 DefRef Getter methods of Untyped Model
The DefRef API classes have no getter methods for the specific child types, but the children
could be retrieve via the generic getter methods like:
• GIContainer.getSubContainers()
• GIContainer.getParameters()
• GIContainer.getParameters(TypedDefRef)
• GIContainer.getParameter(TypedDefRef)
• GIContainer.getReferencesToContainer(TypedDefRef)
• GIModuleConfiguration.getSubContainer(TypedDefRef)
• GIParameter.getValueMdf()
Additionally there are methods to retrieve other referenced elements, like parent of reference
reverse lookup:
© 2016, Vector Informatik GmbH
168 of 207


Chapter 5.
Data models in detail
• GIContainer.getParent()
• GIContainer.getParent(DefRef)
• GIContainer.getReferencesPointingToMe()
• GIContainer.getReferencesPointingToMe(DefRef)
The following listing describe the usage of the untyped bswmd method in both models:
// Get the container from external method getCanIfInitConfigBswmd() ...
final GIContainer canIfInit = getCanIfInitConfigBswmd();
// Gets all subcontainers from a container CanIfRxPduConfig from the canIfInit instance
final List<GIContainer> subContainers = canIfInit.getSubContainers(CanIfRxPduConfig.DEFREF.
castToTypedDefRef());
if (subContainers.isEmpty()) {
// ERROR Handling
}
final GIContainer cont = subContainers.get(0);
// Gets exactly one CanIfCanRxPduHrhRef reference from the cont instance
final GIReference<MIContainer> child = cont.getReference(CanIfCanRxPduHrhRef.DEFREF.
castToTypedDefRef());
Listing 5.8: Sample code to access element in an Untyped model with DefRefs
final GIReferenceToContainer ref = getCanIfCanRxPduHrhRefBswmd();
final GIContainer target = ref.getRefTarget();
Listing 5.9: Resolves a Refference traget of an Reference Parameter
final GIParameter<BigInteger> param = getCanIfInitConfigBswmd().getParameter(
CanIfInitConfiguration.CANIF_NUMBER_OF_CAN_TXPDU_IDS_DEFREF);
final BigInteger value = param.getValueMdf();
Listing 5.10: The value of a GIParameter
The figure 5.10 on the following page shows the available DefRef navigation methods for the
Untyped model. There are more methods to navigate with the DefRef API through the a
DefinitionModel, please look into the Javadoc documentation of the GI... classes for more
functionality.
© 2016, Vector Informatik GmbH
169 of 207



Chapter 5.
Data models in detail
Figure 5.10: SubContainer DefRef navigation methods
5.3.1.3 References
All references in the BswmdModel are subtypes of GIReference. The generated model contains
generated DefintionTyped classes for references to container, for the other references their are
only Untyped classes like GInstanceReference.
A GIReference has the method getRefTargetMdf(), this will always return the target in the
MDF model as MIReferrable. For non GIReferenceToContainer this is the normal way to
resolve references, but for reference to container you should always try to use the method
getRefTarget(), which will not leave the BswmdModel.
Note: Try to use getRefTarget() as much as possible.
References to container
The following references are references to container (References
pointing to container) and are subtypes of the GIReferenceToContainer.
• Normal Reference
© 2016, Vector Informatik GmbH
170 of 207



Chapter 5.
Data models in detail
• SymbolicNameReference
• ChoiceReference
References have the method getRefTarget(), which returns the target as BswmdModel object,
if the type is known at model generation time, the type will be the generated type. Otherwise
the return type is GIContainer.
Note: It is always allowed to call getRefTarget(), also for references pointing to external
types.
Figure 5.11: Untyped reference interfaces in the BswmdModel
SymbolicNameReferences
SymbolicNameReferences have the same methods as GIRefer-
enceToContainer and the additional methods getRefTargetParameterMdf(), which returns
the target parameter as MIObject The method getRefTargetParameter() return a Bswmd-
Model object, if the type is known at model generation time, the type will be the generated
type. Otherwise the return type is GIParameter.
Note: It is always allowed to call getRefTargetParameter(), also for references pointing to
external types.
5.3.1.4 Post-build selectable with BswmdModel
The BswmdModel supports the Post-build selectable use case, in respect that you do not have
to switch nor cache the corresponding IModelView. The BswmdModel objects cache the so
called Creation ModelView and switch transparently to that view when accessing the Model.
So you don’t have to switch to the correct view on access. See figure 5.12 on the next page.
You only have to ensure, that the requested IModelView is active or passed as parameter, when
you create an instance at the GIModelFactory. Note: A lazy created object will inherit the
view of the existing element.
© 2016, Vector Informatik GmbH
171 of 207



Chapter 5.
Data models in detail
Figure 5.12: Creating a BswmdModel in the Post-build selectable use case
5.3.1.5 Creation ModelView of the BswmdModel
Every GIModelObject (BswmdModel object) has a creation IModelView. This is the IMod-
elView, which was active or passed during creation of the BswmdModel. At every method call
to the BswmdModel, the model will switch to this view.
Using the creation ModelView of the BswmdModel
The method getCreationModelView()
returns the IModelView of this GIModelObject, which was active during the creation of this
BswmdModel.
The method executeWithCreationModelView() executes the code under visibility of the getCre-
ationModelView() of this GIModelObject.
The returned IModelViewExecutionContext must be used within a Java "try-with-
resources" feature.

It makes sure, that the old view is restored when the try is com-
pleted.
GIModelObject myModelObject = ...;
try (final IModelViewExecutionContext context = myModelObject.executeWithCreationModelView()) {
// do some operations
...
}
Listing 5.11: Java: Execute code with creation IModelView of BswmdModel object
The method executeWithCreationModelView(Runnable) executes the Runnable code under
visibility of the getCreationModelView() of this GIModelObject.
GIModelObject myModelObject = ...;
myModelObject.executeWithCreationModelView(()->{
// do some operations
});
Listing 5.12: Java: Execute code with creation IModelView of BswmdModel object via runnable
© 2016, Vector Informatik GmbH
172 of 207


Chapter 5.
Data models in detail
The method executeWithCreationModelView() executes the Supplier code under visibility
of the getCreationModelView() of this GIModelObject. You could use this method, if you
want to return an object from this operation.
GIModelObject myModelObject = ...;
ReturnType returnVal = myModelObject.executeWithCreationModelView(()->{
// do some operations
return theValue;
});
Listing 5.13: Java: Execute code with creation IModelView of BswmdModel object
5.3.1.6 Lazy Instantiating
The BswmdModel is instantiated lazily; this means when you create a ModuleConfiguration
object only one object for the module configuration is created.
When you call a getXXX() method on the configuration it will create the requested sub element,
if it exists. So you can start at any point in the model (e.g. a Subcontainer) and the model is
build successively, by your calls.
It is also allowed to call a getParent() on a Subcontainer, if the parent was not created yet.
The technique could be used in validations, when the creation of the full BswmdModel is too
expensive. Then you can create only the needed container; by an MDF model object.
5.3.1.7 Optional Elements
All elements (Container, Parameter . . . ) are considered as optional if they have a multiplicity
of 0:1. The BswmdModel provide a special handling of optional elements. This shall support
you to recognize optional element during development (in the most cases some kind of special
handling is needed). An optional Element has other access methods as a required Element: The
method getXXX() will not return the element, it will return a GIOptional<Element> object
instead. You can ask the GIOptional object if the element exists (optElement.exists()).
Then you can call optElement.get() to retrieve the real object.
You also have the choice to use the method existsXXX().
This method is equivalent to
getXXX().exists(). The difference is that you get a compile error, if you try to use the optional
element without any check. When you are sure that the element must exist you can directly call
getXXXUnsafe(). Note: If you use any of the get methods (optElement.get() or getXXXUn-
safe()) and the element does not exist the normal BswmdModelException is thrown.
5.3.1.8 Class and Interface Structure of the BswmdModel
The upper part of the figure 5.13 on the following page shows the Untyped API (GI. . . interfaces).
The bottom left part is an example of DefinitionTyped (generated) class for the CanIf module.
The bottom right part are the classes used by the DefinitionTyped model, but are not visible
in the Untyped model.
© 2016, Vector Informatik GmbH
173 of 207



Chapter 5.
Data models in detail
Figure 5.13: Class and Interface Structure of the BswmdModel
5.3.1.9 BswmdModel write access
The BswmdModel supports a write access for ecu configuration elements. This means new
elements can be created and existing elements can be modified and deleted by the Bswmd-
Model.
NOTE: The model is in read-only state by default, so no objects could be created. For this reason
all calls to an API which creates or deletes elements has to be executed within a transaction.
See ModelDocumentation chapter "Model changes" for more details.
Optional and required Elements (0:1/1:1 Multiplicity)
For optional or required elements,
the following additional methods are generated, if BswmdModelWriteAccess is enabled:
• get...OrNull(): Returns the requested element or null if it is missing.
• get...OrCreate(): Returns the existing requested element or implicitly creates a new
one if it is missing.
E.g. EcucGeneral:
© 2016, Vector Informatik GmbH
174 of 207


Chapter 5.
Data models in detail
Ecuc ecuc = getEcucModuleConfig();
//Gets the EcucGeneral container or null if it is missing.
EcucGeneral ecucGeneralOrNull = ecuc.getEcucGeneralOrNull();
//Gets the existing EcucGeneral container or creates a new one if it is missing.
EcucGeneral ecucGeneralOrCreate = ecuc.getEcucGeneralOrCreate();
Listing 5.14: Additional write API methods for EcucGeneral
Multiple elements (Upper Multiplicity > 1)
For each multiple element, the return type
for these elements is changed from List<> to GIPList<> for parameter and GICList<> for
container, if BswmdModelWriteAccess is enabled. These new interfaces provide methods which
allow creating and adding new children for the corresponding elements:
• createAndAdd(): Creates a new child element, appends it to the list and returns the new
element.
• createAndAdd(int index): Creates a new child element, inserts it to the list at the
specified index position and returns the new element.
• For GICList<> only:
– createAndAdd(String shortName): Creates a new child element with the specified
shortName, appends it to the list and returns the new element.
– createAndAdd(String shortName, int index): Creates a new child element with
the specified shortName, inserts it to the list at the specified index position and
returns the new element.
– byName(String shortName): Gets the container by specified shortName or throws
an exception if it is missing.
– byNameOrNull(String shortName): Gets the container by specified shortName or
null if it is missing.
– byNameOrCreate(String shortName): Gets the container by specified shortName
or implicitly creates a new one if it is missing.
– exists(String shortname): Returns true if the container exists, otherwise false.
E.g. EcucCoreDefinition:
© 2016, Vector Informatik GmbH
175 of 207


Chapter 5.
Data models in detail
Ecuc ecuc = getEcucModuleConfig();
//Gets the EcucCoreDefinition list (create EcucHardware container if it is missing)
GICList<EcucCoreDefinition> ecucCores = ecuc.getEcucHardwareOrCreate().getEcucCoreDefinition
();
//Adds two EcucCores
EcucCoreDefinition core0 = ecucCores.createAndAdd("EcucCore0");
EcucCoreDefinition core1 = ecucCores.createAndAdd("EcucCore1");
if(ecucCores.exists("EcucCore0")) {
//Sets EcucCoreId from EcucCore0 to 0
ecucCores.byName("EcucCore0").getEcucCoreId().setValue(0);
}
//Creates a new EcucCore by method byNameOrCreate
EcucCoreDefinition core2 = ecucCores.byNameOrCreate("EcucCore2");
...
Listing 5.15: EcucCoreDefinition as GICList<EcucCoreDefinition>
Other write API
• Deleting model objects: It is also possible to delete objects from the model.
– moRemove: Deletes the specified object from the model.
– moIsRemoved: Returns true, if the object was removed from repository, or is invisible
in the current active IModelView.
//Deletes the container 'EcucGeneral' from the model.
ecucGeneral.moRemove();
//Deletes the parameter 'EcuCSafeBswChecks' from the model.
ecucGeneral.getEcuCSafeBswChecks.moRemove();
//Deletes the child container 'EcucCoreDefinition' with shortname 'EcucCore0' from the model.
ecucCores.byName("EcucCore0").moRemove();
// Checks if the container 'EcucGeneral' was removed from repository, or is invisible in the
current active `IModelView`.
if(ecucGeneral.moIsRemoved()) {
...
}
Listing 5.16: Deleting model objects
• Duplication of containers: The method duplicate() copies a container with all its
children and appends it to the same parent.
//Duplicates the container 'EcucGeneral'
EcucGeneral duplicatedEcucGeneral = ecucGeneral.duplicate();
//Duplicates the child container 'EcucCoreDefinition' with shortname 'EcucCore0'
EcucCoreDefinition duplicatedEcucCore0 = ecucCores.byName("EcucCore0").duplicate();
Listing 5.17: Duplication of containers
• Parameter values: The method setValue(VALUE) sets the value of a parameter. This
method checks if the specified parameters configuration object is available and sets the
© 2016, Vector Informatik GmbH
176 of 207


Chapter 5.
Data models in detail
new value. If the parameter object is missing it is implicitly created in the model.
//Sets the value of the parameter 'EcuCSafeBswChecks' to 'true'
ecucGeneral.getEcuCSafeBswChecks.setValue(true);
Listing 5.18: Set parameter values with the BswmdModel Write API
• Reference targets: The method setRefTarget(REF_TARGET) sets the target of a ref-
erence. This method sets the specified target object as reference target of the specified
reference parameter. If the reference parameter object is missing it is implicitly created
in the model.
//Gets the container 'OsCounter' with shortname 'SystemTimer'
OsCounter osCounterTarget = os.getOsCounters.byName("SystemTimer");
//Sets the reference target of the parameter 'CanCounterRef'
can.getCanGeneral().getCanCounterRef().setRefTarget(osCounterTarget);
Listing 5.19: Set reference targets with the BswmdModel Write API
5.4 Model utility classes
5.4.1 AsrPath
The AsrPath class represents an AUTOSAR path without a connection to any model.
AsrPaths are constant; their values cannot be changed after they are created. This class is
immutable!
5.4.2 AsrObjectLink
This class implements an immutable identifier for AUTOSAR objects.
An AsrObjectLink can be created for each object in the MDF AUTOSAR model tree. The
main use case of object links is to identify an object unambiguously at a specific point in time for
logging reasons. Additionally and under specific conditions it is also possible to find the releated
MDF object using its AsrObjectLink instance. But this search-by-link cannot be guaranteed
for each object type and after model changes (details and restrictions below).
5.4.2.1 Object links depend on the MDF object type
• Referrables
The object link is actually identical with the AUTOSAR path
• Ecuc objects with a definition (module, container and parameter)
The object link additionally stores the DefRef
• Ecuc parameters
The object link additionally stores the parameters index. This is the index of all param-
eters with the same definition below the same parent container instance in the unfiltered
model view
© 2016, Vector Informatik GmbH
177 of 207


Chapter 5.
Data models in detail
5.4.2.2 Restrictions of object links
• They are immutable and will therefore become invalid when the model changes
• So they don’t guarantee that the related MDF object can be retrieved after the model
has been changed. Search-by-link may even find another object or throw an exception in
this case
5.4.2.3 Examples for object link strings
The method getObjectLinkString() returns for example the following strings:
• For a container or module configuration object, the AUTOSAR path is returned: "/Ac-
tiveEcuC/Can/CanGeneral"
• For a parameter, the parents AUTOSAR path, the last shortname of its definition and a
positional index in the list of parameters with the same definition is used: "/ActiveEcuC/-
Can/CanGeneral[2:SomeDefName]"
• In case of variant objects, all variants, this object is visible in, are added: /ActiveEcuC/-
Can/CanConfigSet/CanHardwareObject[0:CanControllerRef]{VariantA, VariantB}
5.4.3 DefRefs
The DefRef class represents an AUTOSAR definition reference (e.g. /MICROSAR/CanIf) with-
out a connection to any model. A DefRef replaces the String which represents a definition
reference. You shall always use a DefRef instance, when you want to reference something by
it’s definition.
The class abstracts the behavior of definition references in the AUTOSAR model (e.g. AU-
TOSAR 3 and AUTOSAR 4 handling).
DefRefs are constant; their values can not be changed after they are created. All DefRef classes
are immutable.
A DefRef represents the definition reference as two parts:
• Package part - e.g. /MICROSAR
• Definition without the package part - e.g. CanIf/CanIfGeneral
This is used to navigate through the AUTOSAR model with refinements and wildcards. So you
have to create a DefRef with the two parts separated.
The figure 5.14 on the next page shows the structure of the DefRef class and its sub classes.
Creation
You can create a DefRef object with following public static methods (partial):
• DefRef.create(DefRef, String) - Parent DefRef, Child name
• DefRef.create(IDefRefWildcard, String) - Wildcard, Definition without package
• DefRef.create(MIHasDefinition) - Model object
• DefRef.create(MIHasDefinition, String) - Parent object, Child name
• DefRef.create(MIParamConfMultiplicity) - Definition object
© 2016, Vector Informatik GmbH
178 of 207



Chapter 5.
Data models in detail
Figure 5.14: DefRef class structure
• DefRef.create(String, String) - Package part, Definition without package
Wildcards
DefRef instances can also have a wildcard instead of a package String (IDefRefWildcard).
The wildcard is used to match on multiple packages. See chapter 5.4.3.2 on the following page
for details.
Useful Methods
This section describes some useful methods (Please look at the javadoc of
the DefRef class for a full documentation):
• defRef.isDefinitionOf(MIHasDefinition) - Checks the definition of the configuration
element and returns true if the element has the definition. The "defRef" object is e.g.
from the Constants class.
– Note: The method isDefinitionOf() returns false, if the element is removed or
invisible.
• defRef.asDefinitionOf(MIHasDefinition, Class<>) - Checks the definition of the
configuration element and returns the element casted to the configuration subtype, or
null.
– Note: The method asDefinitionOf() returns null, if the element is removed or
invisible.
© 2016, Vector Informatik GmbH
179 of 207


Chapter 5.
Data models in detail
MIObject yourObject = ...;
DefRef yourDefRef = ...;
if(yourDefRef.isDefinitionOf(yourObject){
//It is the correct instance
//Do something
}
//Or with an integrated cast in the TypedDefRef case
final MIContainer container = yourDefRef.asDefinitionOf(yourObject);
if(container != null){
//Do something
}
Listing 5.20: DefRef isDefinitionOf methods
5.4.3.1 TypedDefRefs
The TypedDefRef class represents an AUTOSAR definition reference with the type of the
AUTOSAR (MDF) model. So every TypedDefRef knows which Definition, Configuration and
Value element is correct for the Definition path.
The DEF_TYPE, CONFIG_TYPE and VALUE_TYPE are Java generics and are used many APIs to
return the specific type of a request.
In addition the most TypedDefRefs also provide additional TypeInfo data, like the Multiplicity
of the element. See TypeInfo javadoc for more details.
5.4.3.2 DefRef Wildcards
The DefRef class supports so called wildcards, which could be used to match on multiple
packages at once, like the /[MICROSAR] wildcard matches on any DefRef package starting with
/MICROSAR. E.g. /MICROSAR, /MICROSAR/S12x, ....
Every wildcard is of type IDefRefWildcard. An IDefRefWildcard instance could be passed
to the DefRef.create(IDefRefWildcard, String) method to create a DefRef with wildcard
information.
Predefined DefRef Wildcards
The class EDefRefWildcard contains the predefined IDefRe-
fWildcards for the DefRef class. These IDefRefWildcards could be used to create DefRefs,
without creating your own wildcard for the standard use cases
The DefRef.create(String, String) method will parse the first String to find a wildcard
matching the EDefRefWildcards.
Predefined wildcards:
The class EDefRefWildcard defines the following wildcards, with the
specified semantic:
• EDefRefWildcard.ANY /[ANY]: Matches on any package path. It is equal to any package
and any packages refines from ANY wildcard.
• EDefRefWildcard.AUTOSAR /[AUTOSAR]: Matches on the AUTOSAR3 and AUTOSAR4
packages (see DefRef class). It is equal to the AUTOSAR packages, but not to refined
© 2016, Vector Informatik GmbH
180 of 207


Chapter 5.
Data models in detail
packages e.g. /MICROSAR. Any packages which refined from AUTOSAR also refines
from AUTOSAR wildcard.
• EDefRefWildcard.NOT_AUTOSAR_STMD /[!AUTOSAR_STMD]: Matches on any package ex-
cept the AUTOSAR packages. It is equal to any package, except AUTOSAR packages.
Any package refines from NOT_AUTOSAR_STMD wildcard, except AUTOSAR packages.
• EDefRefWildcard.MICROSAR /[MICROSAR]: Matches on any package stating with /MI-
CROSAR (also /MICROSAR/S12x). It is equal to any package stating with /MICROSAR.
Any package starting with /MICROSAR refines from MICROSAR wildcard.
• EDefRefWildcard.NOT_MICROSAR /[!MICROSAR]: Matches on any package path not start-
ing with /MICROSAR. It is equal to any package not starting with /MICROSAR. Any
package, which does not start with /MICROSAR, refines from NOT_MICROSAR wildcard.
Also the AUTOSAR packages refine from NOT_MICROSAR wildcard.
Creation of the DefRef with Wildcard
The elements of EDefRefWildcard could be passed
to the DefRef constructor:
DefRef myDefRef = DefRef.create(EDefRefWildcard.MICROSAR, "CanIf");
Listing 5.21: Creation of DefRef with wildcard from EDefRefWildcard
Custom DefRef Wildcards
You could create your own wildcard by implementing the interface
IDefRefWildcard. Please choose a good name for your wildcard, because this could be displayed
to the user, e.g. in Validation results. The matches(DefRef) method shall return true, if the
passed DefRef matches the wildcard constraints.
Every wildcard string shall have the notation /[NameOfWildcard].
E.g.
/[MICROSAR], /[!MICROSAR].
5.4.4 CeState
The CeState is an object which allows to retrieve different states of a configuration entity
(typically containers or parameters).
The most important APIs for generator and script code are:
• IParameterStatePublished
• IContainerStatePublished
5.4.4.1 Getting a CeState object
The BSWMD models implement methods to get the CeState for a specific CE as the following
listing shows (the types GIParameter and GIContainer are interface base types in the BSWMD
models):
© 2016, Vector Informatik GmbH
181 of 207



Chapter 5.
Data models in detail
GIParameter parameter = ...;
IParameterStatePublished parameterState = parameter.getCeState();
GIContainer container = ...;
IContainerStatePublished containerState = container.getCeState();
Listing 5.22: Getting CeState objects using the BSWMD model
5.4.4.2 IParameterStatePublished
The IParameterStatePublished specifies a type-safe published API for parameter states. It
mainly covers the following state information
• Does this parameter have a pre-configuration value?
What is this value?
The same
information is being provided for recommended and initial (derived) values
• Is this parameter user-defined?
• Is value change or deletion allowed in the current configuration phase (post-build loadable
use case)?
• What is the configuration class of this parameter
The figure 5.15 shows the inheritance hierarchy of the IParameterStatePublished class and
its sub classes.
Figure 5.15: IParameterStatePublished class structure
Parameters have different types of state information:
• Simple state retrieval
Example: The method isUserDefined() returns true when the parameter has a user-
defined flag.
• States and values (pre-configuration, recommended configuration and inital (derived)
values)
Example: The method hasPreConfigurationValue() returns true when the parameter
has a pre-configured value. getPreConfigurationValue() returns this value.
© 2016, Vector Informatik GmbH
182 of 207



Chapter 5.
Data models in detail
• States and reasons
Example: The method isDeletionAllowedAccordingToCurrentConfigurationPhase()
returns true if the parameter can be deleted in the current configuration phase (post-
build loadable projects only). getNotDeletionAllowedAccordingToCurrentConfigura-
tionPhaseReasons() returns the reasons if deletion is not allowed.
5.4.4.3 IContainerStatePublished
The IContainerStatePublished specifies a type-safe published API for container states. It
mainly covers the following state information
• Does this container have a pre-configuration container (includes access to this container)?
The same information is being provided for recommended and initial (derived) values
• Is change or deletion allowed in the current configuration phase (post-build loadable use
case)?
• In which configuration phase has this container been created in (post-build loadable use
case)?
• What is the configuration class of this container
The figure 5.16 shows the inheritence hierarchy of the IContainerStatePublished class and
its sub classes.
Figure 5.16: IContainerStatePublished class structure
This API provides state information similar to IParameterStatePublished. Some of the states
are container-specific, of course. getCreationPhase(), for example, which returns the phase a
container in a post-build loadable configuration has been created in.
© 2016, Vector Informatik GmbH
183 of 207

6 AutomationInterface Content
6.1 Introduction
This chapter describes the content of the DaVinci Configurator AutomationInterface.
6.2 Folder Structure
The AutomationInterface consists of the following files and folders:
• BswmdModel: contains the generated BswmdModel that is automatically created by
the DaVinci Configurator during startup
• Core
– AutomationInterface
∗ _doc (find more details to its content in chapter 6.3)
· DVCfg_AutomationInterfaceDocumentation.pdf: this document
· javadoc: Javadoc HTML pages
· templates: script file and script project templates for a simple start of
script development
∗ buildLibs: AutomationInterface Gradle Plugin to provide the build logic to
build script projects, see also 7.7 on page 190
∗ libs: compile bindings to Groovy and to the DaVinci Configurator Automation-
Interface, used by IntelliJ IDEA and Gradle
∗ licenses: the licenses of the used open source libraries
6.3 Script Development Help
The help for the AutomationInterface script development is distributed among the following
sources:
• DVCfg_AutomationInterfaceDocumentation.pdf (this document)
• Javadoc HTML Pages
• Script Templates
6.3.1 DVCfg_AutomationInterfaceDocumentation.pdf
You find this document as described in chapter 6.2. It provides a good overview of architecture,
available APIs and gives an introduction of how to get started in script development. The focus
of the document is to provide an overview and not to be complete in API description. To get
a complete and detailed description of APIs and methods use the Javadoc HTML Pages as
described in 6.3.2 on the following page.
© 2016, Vector Informatik GmbH
184 of 207


Chapter 6.
AutomationInterface Content
6.3.2 Javadoc HTML Pages
You find this documentation as described in chapter 6.2 on the previous page. Open the file
index.html to access the complete DaVinci Configurator AutomationInterface API reference. It
contains descriptions of all classes and methods that are part of the AutomationInterface.
The Javadoc is also accessible at your source code in the IDE for script development.
6.3.3 Script Templates
You find the Script Templates as described in chapter 6.2 on the preceding page. You may copy
them for a quick startup in script development.
6.4 Libs and BuildLibs
The AutomationInterface contains libraries to build projects, see buildLibs in 6.2 on the pre-
vious page 
. And it contains other libraries which are described in libs in 6.2 on the preceding
page.

© 2016, Vector Informatik GmbH
185 of 207

7 Automation Script Project
7.1 Introduction
An automation script project is a normal Java/Groovy development project, where the built
artifact is a single jar file. The jar file is created by the build system, see chapter 7.7 on
page 190.

It is the recommended way to develop scripts, containing more tasks or multiple classes.
The project provides IDE support for:
• Code completion
• Syntax highlighting
• API Documentation
• Debug support
• Build support
The recommended IDE is IntelliJ IDEA.
7.2 Automation Script Project Creation
To create a new script project please follow the instructions in chapter 2.4 on page 11.
7.3 Project File Content
An automation project will at least contain the following files and folders:
• Folders
– .gradle - Gradle temp folder - DO NOT commit it into a version control system
– build - Gradle build folder - DO NOT commit it into a version control system
– gradle - Gradle bootstrap folder - Please commit it into your version control system
– src - Source folder containing your Groovy, Java sources and resource files
• Files
– Gradle files - see 7.7.2 on page 190 for details
∗ gradlew.bat
∗ build.gradle
∗ settings.gradle
∗ projectConfig.gradle
∗ dvCfgAutomationBootstrap.gradle
– IntelliJ Project files (optional)
© 2016, Vector Informatik GmbH
186 of 207





Chapter 7.
Automation Script Project
∗ ProjectName.iws
∗ ProjectName.iml
∗ ProjectName.ipr
7.4 IntelliJ IDEA Usage
7.4.1 Supported versions
The supported IntelliJ IDEA versions are:
• 2016.1 (.0-3)
• 2016.2
Please use one of the versions above. With other versions, there could be problems with the
editing, code completion and so on.
7.4.2 Building Projects
Project Build
The standard way to build projects is to choose the option <ProjectName>
[build] in the Run Menu in the toolbar and to press the Run Button beneath that menu.
Figure 7.1: Project Build
Project Continuous Build
A further option is provided for the case you prefer an automatic
project building each time you save your implementation.
If you choose the menu option
<ProjectName> continuous [build] in the toolbar the Run Button has to be pressed only
one time to start the continuous building. Hence forward each saving of your implementation
triggers an automatic building of the script project.
But be aware that the continuous build option is available for .java and .groovy
files only. 
In case of changes in e.g. .gradle files you still have to press the Run Button in
order to build the project.
Figure 7.2: Project Continuous Build
The Continuous Build process can be stopped with the Stop Button in the Run View.
Figure 7.3: Stop Continuous Build
If you want to exit the IntelliJ IDEA while the Continuous Build process is still running, you
will be asked to disconnect from it. Having disconnected you are allowed to exit the IDE.
© 2016, Vector Informatik GmbH
187 of 207





Chapter 7.
Automation Script Project
Figure 7.4: Disconnect from Continuous Build Process
7.4.3 Debugging with IntelliJ
Be aware that only script projects and not script files are debuggable.
To enable debugging you must start DaVinci Configurator application with the enableDebugger
option as described in 7.6 on page 190.
In the IntelliJ IDEA choose the option <ProjectName> [debug] in the Run Menu located
in the toolbar. Pressing the Debug Button starts a debug session.
Figure 7.5: Project Debug
Set your breakpoints in IntelliJ IDEA and execute the task. To stop the debug session press
the Stop Button in the Debugger View.
Figure 7.6: Stop Debug Session
If you want to exit the IntelliJ IDEA while the Debug process is still running, you will be asked
to disconnect from it. Having disconnected you are allowed to exit the IDE.
© 2016, Vector Informatik GmbH
188 of 207



Chapter 7.
Automation Script Project
Figure 7.7: Disconnect from Debug Process
7.4.4 Troubleshooting
Code completion, Compilation
If the code completion or compilation does not work, please
verify that the Java JDK settings in the IntelliJ IDEA are correct. You have to set the Project
JDK and the Gradle JDK setting. See 2.4.3 on page 14.
Gradle build, build button
If the Gradle build does nothing after start or the build button is
grayed, please verify that the Java JDK settings in the IntelliJ IDEA are correct. You have to
set the Gradle JDK setting. See 2.4.3 on page 14.
If the build button is marked with an error, please make sure that the Gradle plugin inside of
IntelliJ IDEA is installed. Open File->Settings...->Plugins and select the Gradle plugin.
IntelliJ Build
You shall not use the IntelliJ menu "Build" or the context menu entries "Make
Project", "Make Module", "Rebuild Project" or "Compile". The project shall be build with
Gradle not with IntelliJ IDEA. So you have to select one of the Run Configuration (Run menu)
to build the project as described in chapter 7.4 on page 187.
Groovy SDK not configured
If you get the message ’Groovy SDK is not configured for ...’ in
IntelliJ IDEA you probably have to migrate your project as described in chapter 7.5.
Debugging - DaVinci Configurator does not start
If the DaVinciCfg.exe does not start when
the enableDebugger option is passed, please check if the default port (8000) is free, or choose
another free port by appending the port number to the enableDebugger option.
7.5 Project Migration to newer DaVinci Configurator Version
If you update your DaVinci Configurator version in your SIP, it could be necessary to execute
the IntelliJ IDEA task of Gradle to update your compile dependencies.
Steps to execute:
1. Close IntelliJ IDEA.
2. Update the DaVinci Configurator in your SIP
3. Open a command shell (cmd.exe) at your project folder
• Folder containing the gradlew.bat
4. Type gradlew idea and press enter
5. Wait until the task has finished
© 2016, Vector Informatik GmbH
189 of 207


Chapter 7.
Automation Script Project
6. Open IntelliJ IDEA
This will update the compile time dependencies of your Automation Script Project according
to the new DaVinci Configurator version.
After this, please read the Changes (see chapter 8 on page 193) in the new release and update
your script, if something of interest has changed.
7.6 Debugging Script Project
Be aware that only script projects and not script files are debuggable.
To debug a script project, any java debugger could be used. Simply add the enableDebugger
parameter to the commandline of the DaVinci Configurator and attach your debugger.
DVCfgCmd -s MyApplScriptTask --enableDebugger
You could attach a debugger at port 8000 (default). If the DaVinci Configurator does not start
with the option, please see 7.4.4 on the preceding page.
Different Debug Port
DVCfgCmd -s MyApplScriptTask --enableDebugger <YOUR-PORT> --waitForDebugger
Example:
DVCfgCmd -s MyApplScriptTask --enableDebugger 12345 --waitForDebugger
You could attach a debugger at port 12345 (select any free port) and the DVCfgCmd process will
wait until the debugger is attached. You could also use these commandline parameters with
the DaVinciCFG.exe to debug a script project with the DaVinci Configurator UI.
7.7 Build System
The build system uses Gradle1 to build a single Jar file. It also setups the dependencies to the
DaVinci Configurator and create the IntelliJ IDEA project.
To setup the Gradle installation, see chapter 2.4.4 on page 14.
7.7.1 Jar Creation and Output Location
The call to gradlew build in the root directory of your automation script project will create
the jar file. The jar file is then located in:
• <ProjectRoot>\build\libs\<ProjectName>-<ProjectVersion>.jar
7.7.2 Gradle File Structure
The default automation project contains the following Gradle build files:
• gradlew.bat
1http://gradle.org/ [2016-05-25]
© 2016, Vector Informatik GmbH
190 of 207


Chapter 7.
Automation Script Project
– Gradle batch file to start Gradle (Gradle Wrapper2)
• build.gradle
– General build file - You can modify it to adapt the build to your needs
• settings.gradle
– General build project settings - See Gradle documentation3
• projectConfig.gradle
– Contains automation project specific settings - You can modify it to adapt the build
to your needs
• dvCfgAutomationBootstrap.gradle
– This is the internal bootstrap file. DO NOT change the file content.
7.7.2.1 projectConfig.gradle File settings
The file contains two essential parts of the build:
• Names of the scripts to load (automationClasses)
• The path to the DaVinci Configurator installation (dvCfgInstallation)
automationClasses
You have to add your classes to the list of automationClasses to
make them loadable.
The syntax of automationClasses is a list of Strings, of all classes as full qualified Class
names.
Syntax: "javaPkg.subPkg.ClassName"
// The property project.ext.automationClasses defines the classes to load
project.ext.automationClasses = [
"sample.MyScript",
"otherPkg.MyOtherScript",
"javapkg.ClassName"
]
Listing 7.1: The automationClasses list in projectConfig.gradle
dvCfgInstallation
The dvCfgInstallation defines the path to the DaVinci Configurator in-
stallation in your SIP. The installation is needed to retrieve the build dependencies and the
generated model.
You can change the path to any location containing the correct version of the DaVinci Config-
urator.
You could also evaluate SystemEnv variables, other project properties or Gradle settings to
define the path dependent of the development machine, instead of encoding an absolute path.
This will help, when the project is committed to a version control system. But this is project
dependent and out of scope of the provided template project.
2https://docs.gradle.org/current/userguide/gradle_wrapper.html [2016-05-25]
3https://docs.gradle.org/current/dsl/org.gradle.api.initialization.Settings.html [2016-05-25]
© 2016, Vector Informatik GmbH
191 of 207


Chapter 7.
Automation Script Project
7.7.3 Advanced Build Topics
7.7.3.1 Gradle dvCfgAutomation API Reference
The DaVinci Configurator build system provides a Gradle DSL API to set properties of the
build. The entry point is the keyword dvCfgAutomation
dvCfgAutomation {
classes project.ext.automationClasses
}
Listing 7.2: DaVinci Configurator build Gradle DSL API
The following methods are defined inside of the dvCfgAutomation block:
• classes (Type List<String>) - Defines the automation classes to load
• useBswmdModel (Type boolean) - Enables or disables the usage of the BswmdModel inside
of the script project.
• useJarSignerDaemon (Type boolean) - Enables or disables the usage of the Jar Signer
Daemon process.
useBswmdModel
The useBswmdModel enables or disables the usage of the BswmdModel in-
side of the project.
This is helpful, if you want to create a project, which shall run with
different SIPs. This prevent the inclusion of the BswmdModel. The default is true (Use the
BswmdModel) if nothing is specified.
dvCfgAutomation {
useBswmdModel false
}
Listing 7.3: DaVinci Configurator build Gradle DSL API - useBswmdModel
useJarSignerDaemon
The useJarSignerDaemon enables or disables the usage of the usage of
the Jar Signer Daemon process. The process is spawned when a jar file shall be signed. This
will speedup the build process especially when thr project is built often. The daemon is closed
automatically, when not used in a certain time span.
The default of useJarSignerDaemon is true.
The Gradle task stopJarSignerDaemon will stop any running Signer daemon.
dvCfgAutomation {
useJarSignerDaemon true
}
Listing 7.4: DaVinci Configurator build Gradle DSL API - useJarSignerDaemon
© 2016, Vector Informatik GmbH
192 of 207

8 AutomationInterface Changes between
Versions
This chapter describes all API changes between different MICROSAR releases.
8.1 Changes in MICROSAR AR4-R17 - Cfg5.14
8.1.1 General
This is the first stable version of the DaVinci Configurator AutomationInterface.
8.1.2 Script Execution
8.1.2.1 Stateful Script Tasks
A new API was added to support cache and retrieve data over multiple script task executions.
See 4.4.10 on page 47 for more details.
8.1.3 Automation Script Project
You have to migrate your project to the new compile bindings. Please execute the instructions
in chapter 7.5 on page 189.
8.1.3.1 Groovy
The used Groovy version was updated from 2.4.5 to 2.4.7, please see Groovy website for de-
tails.
8.1.3.2 Supported IntelliJ IDEA Version
The IntelliJ IDEA version 2016.2 was added to the supported versions. See 7.4.1 on page 187
for details.
8.1.3.3 BuildSystem
Gradle
The used default Gradle version was updated from 2.13 to 3.0, please see Gradle
website for details.
useJarSignDaemon
The useJarSignDaemon Gradle build setting added. See 7.7.3.1 on the
previous page for details.
© 2016, Vector Informatik GmbH
193 of 207


Chapter 8.
AutomationInterface Changes between Versions
8.1.4 Converter Refactoring
The converters previously provided by com.vector.cfg.automation.api.Converters have
been moved to the new com.vector.cfg.automation.scripting.api.ScriptConverters and
com.vector.cfg.model.groovy.api.ModelConverters.
8.1.5 UserInteraction
UserInteraction API added to show messages to the user, see 4.4.5.1 on page 38.
8.1.6 Project Load
8.1.6.1 AUTOSAR Arxml Files
New API added to open AUTOSAR arxml files as a temporary project. See chapter 4.5.6 on
page 60 
for details.
8.1.7 Model
Script Tasks Types
The existing script task type DV_MODULE_ACTIVATION renamed to the new
name DV_ON_MODULE_ACTIVATION.
A new DV_ON_MODULE_DEACTIVATION task type added, which is execution when a module con-
figuration is deleted.
8.1.7.1 Transactions
A new ITransactionsApi added which provide access to the transactionHistory and API to re-
trieve information of running transactions. A new method transactions.isTransactionRunning()
added.
The ITransactionHistoryApiwas moved to the new ITransactionsApi. The access to the
history is now transactions.transactionHistory{}.
Operations
The new operations added:
• deactivateModuleConfiguration() to delete a module configuration
• activateModuleConfiguration(DefRef, String shortName) to activate a module con-
figuration with the specified short name
• createModelObject(Class<T>) to create arbitrary MDF model objects
• parameter.setUserDefined(boolean) method added to set and reset the user defined
flag
© 2016, Vector Informatik GmbH
194 of 207


Chapter 8.
AutomationInterface Changes between Versions
8.1.7.2 MDF Model Read and Write
The whole MDF model API was changed from the old mdfRead() and mdfWrite() to one
method mdfModel() with explicit write/create methods. You have to change all your mdfRead()
and mdfWrite() calls to mdfModel(). And every mdfWrite() closure the implicit creation to
explicit create calls.
This was necessary due to the fact that the old implicit API leads to surprising results, when
methods are called, which use the read API, but called in a write context. So the method would
yield different results, when called in different contexts.
The new MDF model API will never create any elements implicitly. Now there are explicit
create methods, like in the BswmdModel:
• For 0:1 elements: get<Element>OrCreate() method
• For 0:* elements: list.createAndAdd() and byNameOrCreate() methods
The write context is not needed anymore, but you have to open a transaction() before calling
any write API.
See the chapter 4.6.4.1 on page 74 for the read API and 4.6.4.2 on page 76 for the write
API.
8.1.7.3 SystemDescription Access
The SystemDescription Access API added to retrieve paths to elements like flat map, flat extract
and the corresponding model elements. See chapter 4.6.5 on page 87 for details.
8.1.7.4 ActiveEcuc
The class IActiveEcuc was renamed to IActiveEcucApi to reflect that it is not the active ecuc
element, but the API of the active ecuc.
8.1.8 Persistency
New Persistency API added to import and export model data. See chapter 4.11 on page 141
for details.
8.1.9 Generation
The generation script tasks DV_GENERATION_ON_START and DV_GENERATION_ON_END renamed
to DV_ON_GENERATION_START and DV_ON_GENERATION_END.
The new script task type DV_CUSTOM_WORKFLOW_STEP added to execute tasks in the custom
workflow. See 4.3.1.4 on page 29 for details.
The return type of validation and generation methods has changed to IGenerationResult-
Model. This type provides more detailed information about the executed steps.
© 2016, Vector Informatik GmbH
195 of 207


Chapter 8.
AutomationInterface Changes between Versions
8.1.10 BswmdModel
8.1.10.1 Writing with BswmdModel
The BswmdModel supports now a write access for ecuc configuration elements. This means new
elements can be created and existing elements can be modified and deleted by the BswmdModel.
See 5.3.1.9 on page 174 for more details.
8.1.11 BswmdModel Groovy
bswmdModelRead
The BswmdModel access was changed from the old bswmdModelRead() to
the new bswmdModel() method. This was done to support the new write access.
Domain Object Navigation
The BswmdModel API now support the navigation from domain
model to the BswmdModel. See 4.6.3.6 on page 73.
8.1.12 Domain Diagnostics
Introduced new API which allows creation and querying of diagnostic events. Also OBD and
J1939 state of the configuration can be queried.
8.1.13 Domain Communication
Communication Domain API moved from
com.vector.cfg.dom.com.model.groovy into
com.vector.cfg.dom.com.groovy.api.
Can Controller classes moved from
com.vector.cfg.dom.com.model.groovy.can into
com.vector.cfg.dom.com.groovy.can.
8.1.14 Domain Runtime System
Runtime System API IRuntimeSystemApi now provides functionality to map ports and system
signals.
Entry points are the selectComponentPorts, selectSignalInstances and selectCommuni-
cationElements methods.
© 2016, Vector Informatik GmbH
196 of 207


Chapter 8.
AutomationInterface Changes between Versions
8.2 Changes in MICROSAR AR4-R16 - Cfg5.13
8.2.1 General
This is the first version of the DaVinci Configurator AutomationInterface.
8.2.2 API Stability
The API is not stable yet and could still be changed in later releases. So it could be necessary
to migrate your code when you update to later versions of the DaVinci Configurator.
8.2.3 Beta Status
Some features of the AutomationInterface are have beta status. This will change for later
versions of the AutomationInterface. Which means that some features:
• Are not fully tested
• Missing documentation
• Missing functionality
© 2016, Vector Informatik GmbH
197 of 207

9 Appendix
© 2016, Vector Informatik GmbH
198 of 207


Chapter 9.
Appendix
Nomenclature
AI
Automation Interface
AU T OSAR AUTomotive Open System ARchitecture
CE
Configuration Entity (typically a container or parameter)
Cf g
DaVinci Configurator
Cf g5 DaVinci Configurator
DV
DaVinci
IDE
Integrated Development Environment
J AR
Java Archive
J DK Java Development Kit
J RE
Java Runtime Environment
M DF Meta-Data-Framework
M SN ModuleShortName
© 2016, Vector Informatik GmbH
199 of 207


Figures
Figures
2.1
Script Samples location
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2
Script Locations View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.3
Script Tasks View
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.4
Create New Script Project... Button . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.5
Project Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.6
Project Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.7
Project SDK Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.8
Gradle JVM Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.1
DaVinci Configurator components and interaction with scripts
. . . . . . . . . .
15
3.2
Structure of scripts and script tasks
. . . . . . . . . . . . . . . . . . . . . . . . .
17
4.1
The API overview and containment structure . . . . . . . . . . . . . . . . . . . .
22
4.2
IScriptTaskType interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.3
Script Task Execution Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.4
ScriptingException and sub types . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.5
Search for active project in getActiveProject() . . . . . . . . . . . . . . . . . . . .
50
4.6
example situation with the GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
5.1
ECUC container type inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
5.2
MIObject class hierarchy and base interfaces
. . . . . . . . . . . . . . . . . . . . 154
5.3
Autosar package containment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
5.4
The ECUC container definition reference . . . . . . . . . . . . . . . . . . . . . . . 156
5.5
Invariant views hierarchy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5.6
Example of a model structure and the visibility of the IInvariantValuesView . . . 162
5.7
Variant specific change of a parameter value . . . . . . . . . . . . . . . . . . . . . 165
5.8
Variant common change of a parameter value . . . . . . . . . . . . . . . . . . . . 166
5.9
The relationship between the MDF model and the BswmdModel . . . . . . . . . 167
5.10 SubContainer DefRef navigation methods . . . . . . . . . . . . . . . . . . . . . . 170
5.11 Untyped reference interfaces in the BswmdModel . . . . . . . . . . . . . . . . . . 171
5.12 Creating a BswmdModel in the Post-build selectable use case . . . . . . . . . . . 172
5.13 Class and Interface Structure of the BswmdModel
. . . . . . . . . . . . . . . . . 174
5.14 DefRef class structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.15 IParameterStatePublished class structure
. . . . . . . . . . . . . . . . . . . . . . 182
5.16 IContainerStatePublished class structure . . . . . . . . . . . . . . . . . . . . . . . 183
7.1
Project Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.2
Project Continuous Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.3
Stop Continuous Build . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
7.4
Disconnect from Continuous Build Process . . . . . . . . . . . . . . . . . . . . . . 188
7.5
Project Debug
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.6
Stop Debug Session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
7.7
Disconnect from Debug Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
© 2016, Vector Informatik GmbH
200 of 207


Tables
Tables
5.1
Different Class types in different models . . . . . . . . . . . . . . . . . . . . . . . 168
© 2016, Vector Informatik GmbH
201 of 207

Listings
3.1
Static field memory leak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
3.2
Memory leak with closure variable . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.1
Task creation with default type . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.2
Task creation with TaskType Application . . . . . . . . . . . . . . . . . . . . . .
24
4.3
Task creation with TaskType Project . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.4
Define two tasks is one script . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.5
Script creation with IDE support . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.6
Task with isExecutableIf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.7
Script with description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.8
Task with description
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
4.9
Task with description and help text
. . . . . . . . . . . . . . . . . . . . . . . . .
26
4.10 Access automation API in Groovy clients by the IScriptExecutionContext . . . .
31
4.11 Access to automation API in Java clients by the IScriptExecutionContext . . . .
32
4.12 Script task code block arguments . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.13 Resolves a path with the resolvePath() method . . . . . . . . . . . . . . . . . . .
34
4.14 Resolves a path with the resolvePath() method . . . . . . . . . . . . . . . . . . .
35
4.15 Resolves a path with the resolveScriptPath() method . . . . . . . . . . . . . . . .
35
4.16 Resolves a path with the resolveProjectPath() method . . . . . . . . . . . . . . .
36
4.17 Resolves a path with the resolveSipPath() method . . . . . . . . . . . . . . . . .
36
4.18 Resolves a path with the resolveTempPath() method . . . . . . . . . . . . . . . .
36
4.19 Get the project output folder path . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.20 Get the SIP folder path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.21 Usage of the script logger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.22 Usage of the script logger with message formatting . . . . . . . . . . . . . . . . .
38
4.23 Usage of the script logger with Groovy GString message formatting . . . . . . . .
38
4.24 UserInteraction from a script . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.25 Stop script task execution by throwing an ScriptClientExecutionException . . . .
40
4.26 Changing the return code of the console application by throwing an ScriptClien-
tExecutionException . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.27 Using your own defined method . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.28 Using your own defined class
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
4.29 Using your own defined method with a daVinci block . . . . . . . . . . . . . . . .
42
4.30 ScriptApi.scriptCode{} usage in own method . . . . . . . . . . . . . . . . . . . .
43
4.31 ScriptApi.scriptCode() usage in own method
. . . . . . . . . . . . . . . . . . . .
43
4.32 ScriptApi.activeProject{} usage in own method . . . . . . . . . . . . . . . . . . .
44
4.33 ScriptApi.activeProject() usage in own method . . . . . . . . . . . . . . . . . . .
44
4.34 Define and use script task user defined arguments from commandline . . . . . . .
45
4.35 Script task UserDefined argument with no value
. . . . . . . . . . . . . . . . . .
45
4.36 Script task UserDefined argument with default value . . . . . . . . . . . . . . . .
45
4.37 Script task UserDefined argument with multiple values . . . . . . . . . . . . . . .
46
4.38 executionData - Cache and retrieve data during one script task execution . . . .
47
4.39 sessionData - Cache and retrieve data over multiple script task executions . . . .
47
4.40 sessionData and executionData syntax samples . . . . . . . . . . . . . . . . . . .
48
4.41 Accessing IProjectHandlingApi as a property . . . . . . . . . . . . . . . . . . . .
49
4.42 Accessing IProjectHandlingApi in a scope-like way . . . . . . . . . . . . . . . . .
49
4.43 Switch the active project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.44 Accessing the active IProject
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
© 2016, Vector Informatik GmbH
202 of 207


Listings
4.45 Creating a new project (mandatory parameters only) . . . . . . . . . . . . . . . .
51
4.46 Creating a new project (with some optional parameters) . . . . . . . . . . . . . .
52
4.47 Opening a project from .dpa file
. . . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.48 Parameterizing the project open procedure
. . . . . . . . . . . . . . . . . . . . .
58
4.49 Opening, modifying and saving a project . . . . . . . . . . . . . . . . . . . . . . .
59
4.50 Opening Arxml files as project
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.51 Read with BswmdModel objects starting with a module DefRef (no type decla-
ration) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
4.52 Read with BswmdModel objects starting with a module DefRef (strong typing) .
63
4.53 Read with BswmdModel objects with closure argument
. . . . . . . . . . . . . .
64
4.54 Read with BswmdModel object for an MDF model object . . . . . . . . . . . . .
64
4.55 Write with BswmdModel required/optional objects . . . . . . . . . . . . . . . . .
65
4.56 Write with BswmdModel multiple objects . . . . . . . . . . . . . . . . . . . . . .
65
4.57 Write with BswmdModel - Duplicate a container . . . . . . . . . . . . . . . . . .
66
4.58 Write with BswmdModel - Delete elements
. . . . . . . . . . . . . . . . . . . . .
66
4.59 Read system description starting with an AUTOSAR path in closure . . . . . . .
67
4.60 Read system description starting with an AUTOSAR path in property style . . .
67
4.61 Changing a simple property of an MIVariableDataPrototype . . . . . . . . . . . .
68
4.62 Creating non-existing member by navigating into its content with OrCreate() . .
68
4.63 Creating new members of child lists with createAndAdd() by type . . . . . . . .
68
4.64 Updating existing members of child lists with byNameOrCreate() by type . . . .
69
4.65 BswmdModel usage with import . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
4.66 Read with BswmdModel the EcuC module configuration . . . . . . . . . . . . . .
71
4.67 Write with BswmdModel the EcucGeneral container . . . . . . . . . . . . . . . .
71
4.68 Usage of the sipDefRef API to retrieve DefRefs in script files
. . . . . . . . . . .
72
4.69 Usage of generated DefRefs form the bswmd model . . . . . . . . . . . . . . . . .
73
4.70 Switch from a domain model object to the corresponding BswmdModel object . .
73
4.71 Navigate into an MDF object starting with an AUTOSAR path . . . . . . . . . .
74
4.72 Find an MDF object and retrieve some content data . . . . . . . . . . . . . . . .
75
4.73 Navigating deeply into an MDF object with nested closures . . . . . . . . . . . .
75
4.74 Ignoring non-existing member closures . . . . . . . . . . . . . . . . . . . . . . . .
75
4.75 Get a MIReferrable child object by name
. . . . . . . . . . . . . . . . . . . . . .
76
4.76 Retrieve child from list with byName() . . . . . . . . . . . . . . . . . . . . . . . .
76
4.77 Changing a simple property of an MIVariableDataPrototype . . . . . . . . . . . .
77
4.78 Creating non-existing member by navigating into its content with OrCreate() . .
77
4.79 Creating child member by navigating into its content with OrCreate() with type
78
4.80 Creating new members of child lists with createAndAdd() by type . . . . . . . .
78
4.81 Updating existing members of child lists with byNameOrCreate() by type . . . .
80
4.82 Delete a parameter instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.83 Check is a model instance is deleted . . . . . . . . . . . . . . . . . . . . . . . . .
81
4.84 Duplicates a container under the same parent . . . . . . . . . . . . . . . . . . . .
82
4.85 Get the AsrPath of an MIReferrable instance . . . . . . . . . . . . . . . . . . . .
82
4.86 Get the AsrObjectLink of an AUTOSAR model instance . . . . . . . . . . . . . .
82
4.87 Get the DefRef of an Ecuc model instance . . . . . . . . . . . . . . . . . . . . . .
82
4.88 Set the DefRef of an Ecuc model instance . . . . . . . . . . . . . . . . . . . . . .
83
4.89 Get the CeState of an Ecuc parameter instance . . . . . . . . . . . . . . . . . . .
83
4.90 Retrieve the user-defined flag of an Ecuc parameter in Groovy . . . . . . . . . . .
83
4.91 Set an Ecuc parameter instance to user defined . . . . . . . . . . . . . . . . . . .
83
4.92 Get the AUTOSAR root object . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
4.93 Get the active Ecuc and all module configurations
. . . . . . . . . . . . . . . . .
84
4.94 Iterate over all module configurations
. . . . . . . . . . . . . . . . . . . . . . . .
84
© 2016, Vector Informatik GmbH
203 of 207


Listings
4.95 Get module configurations by definition . . . . . . . . . . . . . . . . . . . . . . .
84
4.96 Get subContainers and parameters by definition
. . . . . . . . . . . . . . . . . .
85
4.97 Check parameter values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
4.98 Get integer parameter value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
4.99 Get reference parameter value . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
4.100Get the FlatExtract and FlatMap paths by the SystemDescription API
. . . . .
88
4.101Get FlatExtract instance by the SystemDescription API . . . . . . . . . . . . . .
88
4.102Execute a transaction
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
88
4.103Execute a transaction with a name . . . . . . . . . . . . . . . . . . . . . . . . . .
88
4.104Check if a transaction is running . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
4.105Undo a transaction with the transactionHistory . . . . . . . . . . . . . . . . . . .
90
4.106Redo a transaction with the transactionHistory . . . . . . . . . . . . . . . . . . .
90
4.107The default view is the IInvariantValuesView . . . . . . . . . . . . . . . . . . . .
92
4.108Execute code in a model view . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
4.109Basic structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
4.110Validate with default project settings . . . . . . . . . . . . . . . . . . . . . . . . .
94
4.111Generate with standard project settings . . . . . . . . . . . . . . . . . . . . . . .
95
4.112Generate one module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
4.113Generate one module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
4.114Generate two modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
4.115Generate one module with two configurations . . . . . . . . . . . . . . . . . . . .
96
4.116Execute an external generation step
. . . . . . . . . . . . . . . . . . . . . . . . .
97
4.117Evaluate the generation result . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
97
4.118Use a script task as generation step during generation . . . . . . . . . . . . . . .
98
4.119Use a script task as custom workflow step . . . . . . . . . . . . . . . . . . . . . .
99
4.120Hook into the GenerationProcess at the start with script task . . . . . . . . . . .
99
4.121Hook into the GenerationProcess at the end with script task
. . . . . . . . . . .
99
4.122Access all validation-results and filter them by ID . . . . . . . . . . . . . . . . . . 101
4.123Solve a single validation-result with a particular solving-action
. . . . . . . . . . 102
4.124Fast solve multiple results within one transaction . . . . . . . . . . . . . . . . . . 103
4.125Solve all validation-results with its preferred solving-action (if available) . . . . . 103
4.126Access all validation-results of a particular object . . . . . . . . . . . . . . . . . . 104
4.127Access all validation-results of a particular DefRef
. . . . . . . . . . . . . . . . . 104
4.128Filter validation-results using an ID constant . . . . . . . . . . . . . . . . . . . . 105
4.129Fast solve multiple validation-results within one transaction using a solving-
action-group-ID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.130IValidationResultUI overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.131IValidationResultUI in a variant (post build selectable) project . . . . . . . . . . 107
4.132CE is affected by (matches) an IValidationResultUI . . . . . . . . . . . . . . . . . 107
4.133Advanced use case - Retrieve Erroneous CEs with descriptors of an IValidation-
ResultUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
4.134Examine an ISolvingActionSummaryResult . . . . . . . . . . . . . . . . . . . . . 109
4.135Create a ValidationResult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.136Report a ValidationResult when MD license option is available . . . . . . . . . . 110
4.137Update an existing project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.138Change list of communication extracts and update . . . . . . . . . . . . . . . . . 112
4.139Accessing IDomainApi as a property . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.140Accessing IDomainApi in a scope-like way . . . . . . . . . . . . . . . . . . . . . . 113
4.141Accessing ICommunicationApi as a property . . . . . . . . . . . . . . . . . . . . . 113
4.142Accessing ICommunicationApi in a scope-like way
. . . . . . . . . . . . . . . . . 114
4.143Optimizing Can Acceptance Filters . . . . . . . . . . . . . . . . . . . . . . . . . . 115
© 2016, Vector Informatik GmbH
204 of 207


Listings
4.144Accessing IDiagnosticsApi as a property . . . . . . . . . . . . . . . . . . . . . . . 117
4.145Accessing IDiagnosticsApi in a scope-like manner . . . . . . . . . . . . . . . . . . 117
4.146Create a new UDS DTC with event . . . . . . . . . . . . . . . . . . . . . . . . . . 118
4.147Enable OBD II and create a new OBD related DTC with event . . . . . . . . . . 118
4.148Enable WWH-OBD and create a new OBD related DTC with event . . . . . . . 119
4.149Open a project, enable J1939 and create a new J1939 DTC with event . . . . . . 119
4.150Accessing IRuntimeSystemApi as a property . . . . . . . . . . . . . . . . . . . . . 120
4.151Accessing IRuntimeSystemApi in a scope-like way
. . . . . . . . . . . . . . . . . 120
4.152Selects all component ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.153Selects all unconnected component ports . . . . . . . . . . . . . . . . . . . . . . . 122
4.154Select all unconnected sender/receiver or connected mode-switch component ports123
4.155Tries to auto-map all ports

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.156Tries to auto-map all unconnected component ports
. . . . . . . . . . . . . . . . 124
4.157Tries to auto-map all unconnected sender/receiver and client/server ports . . . . 124
4.158Tries to auto-map port determined by advanced filter
. . . . . . . . . . . . . . . 124
4.159Tries to auto map all unconnected ports to the ports of one component prototype 125
4.160Tries to auto-map all unconnected ports and evaluate matches
. . . . . . . . . . 126
4.161Auto-map a component port and realize 1:n connection by using evaluate matches127
4.162Create mapping between two ports which names do not match. . . . . . . . . . . 128
4.163Select all unmapped signal instances . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.164Select all unmapped rx or transformed signal instances . . . . . . . . . . . . . . . 130
4.165Select signal instances using an advanced filter
. . . . . . . . . . . . . . . . . . . 130
4.166Auto data map all unmapped signal instances . . . . . . . . . . . . . . . . . . . . 131
4.167Auto data map all unmapped signal instances to unmapped communication ele-
ments and evaluate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.168Auto data map all signal instances and do not expand nested array elements
. . 133
4.169Auto data map all signal instances and expand specific nested array element . . . 134
4.170Select all unmapped delegation port communication elements . . . . . . . . . . . 136
4.171Select communication elements using an advanced filter . . . . . . . . . . . . . . 136
4.172Auto data map all unmapped sender/receiver delegation port communication
elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4.173Auto data map all unmapped communication elements to unmapped rx signal
instances and evaluate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.174Autodatamap and do not expand nested array elements . . . . . . . . . . . . . . 139
4.175Autodatamap and do expand a specific nested array element
. . . . . . . . . . . 140
4.176Accessing the model export persistency API . . . . . . . . . . . . . . . . . . . . . 141
4.177Export the ActiveEcuc to a file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.178Export a Post-build selectable project as variant files . . . . . . . . . . . . . . . . 142
4.179Export the project with an exporter . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.180Accessing the model import persistency API . . . . . . . . . . . . . . . . . . . . . 143
4.181Java code usage of the IScriptFactory to contribute script tasks . . . . . . . . . . 147
4.182Accessing WorkflowAPI in Java code . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.183Java Closure creation sample . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
4.184Run all JUnit tests from one class
. . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.185Run all JUnit tests using a Suite . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.186Run unit test with the Spock framework . . . . . . . . . . . . . . . . . . . . . . . 150
4.187Add a UnitTest task with name MyUnitTest
. . . . . . . . . . . . . . . . . . . . 150
4.188The projectConfig.gradle file content for unit tests . . . . . . . . . . . . . . . . . 151
5.1
Check object visibility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.2
Get all available variants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
5.3
Execute code with variant visibility . . . . . . . . . . . . . . . . . . . . . . . . . . 158
© 2016, Vector Informatik GmbH
205 of 207


Listings
5.4
Get all variants, a specific object is visible in
. . . . . . . . . . . . . . . . . . . . 160
5.5
Retrieving an InvariantValues model view . . . . . . . . . . . . . . . . . . . . . . 162
5.6
Retrieving an InvariantEcucDefView model view . . . . . . . . . . . . . . . . . . 163
5.7
Execute code with variant specific changes . . . . . . . . . . . . . . . . . . . . . . 165
5.8
Sample code to access element in an Untyped model with DefRefs
. . . . . . . . 169
5.9
Resolves a Refference traget of an Reference Parameter
. . . . . . . . . . . . . . 169
5.10 The value of a GIParameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.11 Java: Execute code with creation IModelView of BswmdModel object . . . . . . 172
5.12 Java: Execute code with creation IModelView of BswmdModel object via runnable172
5.13 Java: Execute code with creation IModelView of BswmdModel object . . . . . . 173
5.14 Additional write API methods for EcucGeneral . . . . . . . . . . . . . . . . . . . 175
5.15 EcucCoreDefinition as GICList<EcucCoreDefinition> . . . . . . . . . . . . . . . 176
5.16 Deleting model objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.17 Duplication of containers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
5.18 Set parameter values with the BswmdModel Write API
. . . . . . . . . . . . . . 177
5.19 Set reference targets with the BswmdModel Write API . . . . . . . . . . . . . . . 177
5.20 DefRef isDefinitionOf methods
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.21 Creation of DefRef with wildcard from EDefRefWildcard
. . . . . . . . . . . . . 181
5.22 Getting CeState objects using the BSWMD model . . . . . . . . . . . . . . . . . 182
7.1
The automationClasses list in projectConfig.gradle . . . . . . . . . . . . . . . . . 191
7.2
DaVinci Configurator build Gradle DSL API . . . . . . . . . . . . . . . . . . . . 192
7.3
DaVinci Configurator build Gradle DSL API - useBswmdModel . . . . . . . . . . 192
7.4
DaVinci Configurator build Gradle DSL API - useJarSignerDaemon . . . . . . . 192
© 2016, Vector Informatik GmbH
206 of 207


Listings
Todo list
© 2016, Vector Informatik GmbH
207 of 207

Document Outline


2.19 - epl-v10

Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and

b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

2.20 - epl-v10

Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and

b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

2.21 - epl-v10

Eclipse Public License - Version 1.0

Eclipse Public License - v 1.0

THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.

1. DEFINITIONS

"Contribution" means:

a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and

b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.

2. GRANT OF RIGHTS

a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.

3. REQUIREMENTS

A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the Program.

Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.

4. COMMERCIAL DISTRIBUTION

Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.

5. NO WARRANTY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.

6. DISCLAIMER OF LIABILITY

EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

7. GENERAL

If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.

Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.

2.22 - license

Eclipse Foundation Software User Agreement

Eclipse Foundation Software User Agreement

April 9, 2014

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Use of Provisioning Technology

The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to install, extend and update Eclipse-based products. Information about packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").

You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:

  1. A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based product.
  2. During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be accessed and copied to the Target Machine.
  3. Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.

2.23 - license

Eclipse Foundation Software User Agreement

Eclipse Foundation Software User Agreement

April 9, 2014

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Use of Provisioning Technology

The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to install, extend and update Eclipse-based products. Information about packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").

You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:

  1. A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based product.
  2. During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be accessed and copied to the Target Machine.
  3. Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.

2.24 - license

Eclipse Foundation Software User Agreement

Eclipse Foundation Software User Agreement

April 9, 2014

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT"). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code repository ("Repository") in software modules ("Modules") and made available as downloadable archives ("Downloads").

  • Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").
  • Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java™ ARchive) in a directory named "plugins".
  • A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named "features". Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins and/or Fragments associated with that Feature.
  • Features may also include other Features ("Included Features"). Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts"). The terms and conditions governing Features and Included Features should be contained in files named "license.html" ("Feature Licenses"). Abouts and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:

  • The top-level (root) directory
  • Plug-in and Fragment directories
  • Inside Plug-ins and Fragments packaged as JARs
  • Sub-directories of the directory named "src" of certain Plug-ins
  • Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license ("Feature Update License") during the installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or inform you where you can locate them. Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature. Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.

Use of Provisioning Technology

The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to install, extend and update Eclipse-based products. Information about packaging Installable Software is available at http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").

You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:

  1. A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based product.
  2. During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be accessed and copied to the Target Machine.
  3. Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.

Cryptography

Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.

2.25 - SAX-LICENSE

SAX License

Origin

This page was originally taken from: http://www.saxproject.org/copying.html with the navigation links remove from the left-hand-side of the page.

Copyright Status

SAX is free!

In fact, it's not possible to own a license to SAX, since it's been placed in the public domain.

No Warranty

Because SAX is released to the public domain, there is no warranty for the design or for the software implementation, to the extent permitted by applicable law. Except when otherwise stated in writing the copyright holders and/or other parties provide SAX "as is" without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of SAX is with you. Should SAX prove defective, you assume the cost of all necessary servicing, repair or correction.

In no event unless required by applicable law or agreed to in writing will any copyright holder, or any other party who may modify and/or redistribute SAX, be liable to you for damages, including any general, special, incidental or consequential damages arising out of the use or inability to use SAX (including but not limited to loss of data or data being rendered inaccurate or losses sustained by you or third parties or a failure of the SAX to operate with any other programs), even if such holder or other party has been advised of the possibility of such damages.

Copyright Disclaimers

This page includes statements to that effect by David Megginson, who would have been able to claim copyright for the original work.

SAX 1.0

Version 1.0 of the Simple API for XML (SAX), created collectively by the membership of the XML-DEV mailing list, is hereby released into the public domain.

No one owns SAX: you may use it freely in both commercial and non-commercial applications, bundle it with your software distribution, include it on a CD-ROM, list the source code in a book, mirror the documentation at your own web site, or use it in any other way you see fit.

David Megginson, Megginson Technologies Ltd.
1998-05-11

SAX 2.0

I hereby abandon any property rights to SAX 2.0 (the Simple API for XML), and release all of the SAX 2.0 source code, compiled code, and documentation contained in this distribution into the Public Domain. SAX comes with NO WARRANTY or guarantee of fitness for any purpose.

David Megginson, Megginson Technologies Ltd.
2000-05-05


2.26 - Welcome

Welcome to the Java(TM) Platform

Welcome to the JavaTM Platform

Welcome to the JavaTM Standard Edition Runtime Environment. This provides complete runtime support for Java applications.

The runtime environment includes the JavaTM Plug-in product which supports the Java environment inside web browsers.

References

See the Java Plug-in product documentation for more information on using the Java Plug-in product.

See the Java Platform web site for more information on the Java Platform.


Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.

2.27 - Welcome

Welcome to the Java(TM) Platform

Welcome to the JavaTM Platform

Welcome to the JavaTM Standard Edition Runtime Environment. This provides complete runtime support for Java applications.

The runtime environment includes the JavaTM Plug-in product which supports the Java environment inside web browsers.

References

See the Java Plug-in product documentation for more information on using the Java Plug-in product.

See the Java Platform web site for more information on the Java Platform.


Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.

2.28 -

W3C Software License

W3C SOFTWARE NOTICE AND LICENSE

http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.

Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications:

  1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
  2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body of any redistributed or derivative code.
  3. Notice of any changes or modifications to the files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.

____________________________________

This formulation of W3C's notice and license became active on December 31 2002. This version removes the copyright ownership notice such that this license can be used with materials other than those owned by the W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org.
 

Joseph Reagle <site-policy@w3.org>

Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06 16:02:49 slesch Exp $

3 - Davinci (TL102A)

Davinci (TL102A)

Component Documentation

Specific Component Tools

3.1 - TL102A_Davinci Peer Review Checklists


Overview

Summary Sheet
Synergy Project


Sheet 1: Summary Sheet
























Rev 1.28-Jun-15

Peer Review Summary Sheet


























Synergy Project Name:


kzshz2: Intended Use: Identify which component is being reviewed. This should be the Module Short Name from Synergy Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. TL102A_Davinci
Revision / Baseline:


kzshz2: Intended Use: Identify which Synergy revision of this component is being reviewed Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. TL102A_Davinci_3.11.16.1_0

























Change Owner:


kzshz2: Intended Use: Identify the developer who made the change(s) Rationale: A change request may have more than one resolver, this will help identify who made what change. Change owner identification may be required by indusrty standards. Lucas Wendling
Work CR ID:


EA4#3190





























kzshz2: Intended Use: Intended to identify at a high level to the reviewers which areas of the component have been changed. Rationale: This will be good information to know when ensuring appropriate reviews have been completed. Modified File Types:















































































































































































kzshz2: Intended Use: Identify who where the reviewers, what they reviewed, and if the reviewed changes have been approved to release the code for testing. Comments here should be at a highlevel, the specific comments should be present on the specific review form sheet. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. ADD DR Level Move reviewer and approval to individual checklist form Review Checklist Summary:






















































Reviewed:































N/AMDD


N/ASource Code


N/APolySpace









































N/AIntegration Manual


N/ADavinci Files








































































Comments:

3rd Party Tool component. Only reviewed 3rd party files for correctness to installation and any Nexteer created






source files and documentation



















































































General Guidelines:
- The reviews shall be performed over the portions of the component that were modified as a result of the Change Request.
- New components should include FDD Owner and Integrator as apart of the Group Review Board (Source Code, Integration Manual, and Davinci Files)
- Enter any rework required into the comment field and select No. When the rework is complete, review again using this same review sheet and select Yes. Add date and additional comment stating that the rework is completed.
- To review a component with multiple source code files use the "Add Source" button to create a Source code tab for each source file.
- .h file should be reviewed with the source file as part of the source file.





















Sheet 2: Synergy Project

Peer Review Meeting Log (Component Synergy Project Review)



















































Quality Check Items:




































Rationale is required for all answers of No










New baseline version name from Summary Sheet follows








Yes
Comments:

Follows convention created for
naming convention











tool components
























Project contains necessary subprojects








N/A
Comments:










































Project contains the correct version of subprojects








N/A
Comments:










































Design subproject is correct version








N/A
Comments:











































General Notes / Comments:



























































LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Lucas Wendling


Review Date :

01/20/16
































Lead Peer Reviewer:


Jared Julien


Approved by Reviewer(s):



Yes































Other Reviewer(s):









































































3.2 - about

About

About This Content

June 28, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

Third Party Content

The Content includes items that have been sourced from third parties as set out below. If you did not receive this Content directly from the Eclipse Foundation, the following is provided for informational purposes only, and you should look to the Redistributor’s license for terms and conditions of use.

Flute 1.3

The plug-in is accompanied by software developed by W3C at http://www.w3.org/Style/CSS/SAC/. Flute 1.3 ("Flute") is included with the plug-in without modification in lib/flute.jar. Your use of Flute is subject to the terms and conditions of the W3C Software License ("W3CSL"). A copy of the W3CSL can be found in about_files/copyright-software-20021231.htm and is also available at http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231. Source code for Flute is available at http://www.w3.org/Style/CSS/SAC/.

3.3 - about

About

About This Content

June 5, 2006

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor’s license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

3.4 - about

About

About This Content

June 28, 2007

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

3.5 - about

About

About This Content

June 2, 2006

License

The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available at http://www.eclipse.org/legal/epl-v10.html. For purposes of the EPL, "Program" will mean the Content.

If you did not receive this Content directly from the Eclipse Foundation, the Content is being redistributed by another party ("Redistributor") and different terms and conditions may apply to your use of any object code in the Content. Check the Redistributor's license that was provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise indicated below, the terms and conditions of the EPL still apply to any source code in the Content and such source code may be obtained at http://www.eclipse.org.

3.6 - AN-ISC-8-1102_IdentityManager_MultipleECUs

Identity Manager - Multiple ECUs

3.8 - AN-ISC-8-1102_IdentityManager_MultipleECUss


 
Identity Manager - Multiple ECUs 
Version 1.6 
2010-09-09 
Application Note  AN-ISC-8-1102 
 
 
 
Author(s) 
Christian Weber, Hannes Futter, Marco Wierer 
Restrictions Customer 
confidential - Vector decides 
Abstract 
Configuration of Multiple ECUs with Vector's AUTOSAR BSW stack. 
 
 
Table of Contents 
 
1.0 
Overview ..........................................................................................................................................................1 
1.1 
What is the “Identity Manager” about? ..........................................................................................................2 
1.1.1 
Physical Multiple ECU ................................................................................................................................2 
1.1.2 
Multiple Configurations ECU.......................................................................................................................3 
1.1.3 
(Virtual Multiple ECU) .................................................................................................................................3 
1.2 
Operation principle of Physical Multiple ECUs..............................................................................................3 
2.0 
Configuring a Multiple ECU .............................................................................................................................4 
2.1 
ECUC creation (without overlay)...................................................................................................................4 
2.1.1 
What happens in the ECUC?......................................................................................................................5 
2.2 
ECUC Creation (with overlay) .......................................................................................................................6 
2.3 
Overlay Control File.......................................................................................................................................7 
2.3.4 
Signal overlay .............................................................................................................................................8 
2.3.5 
Splitting the direction of PDUs ....................................................................................................................9 
2.3.6 
Example ......................................................................................................................................................9 
2.4 
ECUC creation using DaVinci Project Assistant .........................................................................................11 
2.5 
Generating the RTE of a Multiple ECU .......................................................................................................11 
3.0 
Initialization of the BSW .................................................................................................................................11 
3.1 
Creation of the logic for identity selection ...................................................................................................12 
3.2 
Prepare the ECUM configuration ................................................................................................................13 
3.3 
Provide an user defined ECUM initialization function .................................................................................13 
3.4 
Where do I find the initialization structures? ...............................................................................................15 
3.5 
Overview of BSW module initialization........................................................................................................15 
4.0 
Diagnostics and Multiple ECU Support..........................................................................................................16 
5.0 
Supported use cases .....................................................................................................................................16 
6.0 
Restrictions and limitations ............................................................................................................................16 
7.0 
Additional resources ......................................................................................................................................17 
8.0 
Contacts.........................................................................................................................................................18 
 
 
 
1.0 Overview 
This application note explains how to configure and use the “Multiple ECUs” feature in Vector AUTOSAR stacks. 
 1  
Copyright © 2010 - Vector Informatik GmbH 
Contact Information:   www.vector.com  or +49-711-80 670-0 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
1.1  What is the “Identity Manager” about? 
With the Identity Manager ECUs can be configured to run in different scenarios without major changes1 in the 
software. The functionality provided by the Identity Manager is not covered by AUTOSAR explicitly. The use cases 
are:  
•  Physical Multiple ECU 
•  Multiple Configurations ECU 
•  (Virtual Multiple ECU) 
 
This document explains about how to use the Physical Multiple ECU feature. 
1.1.1 Physical 
Multiple 
ECU 
This aspect covers an ECU within a specific car line of an OEM. If there are several (>1) almost identical instances 
of this ECU which are connected to the same vehicle network at the same time, they are called “Physical Multiple” 
ECUs or “Multiple ECUs” in short. 
Examples: Door Module (DM), Seat Module (SEAT), Adaptive Damping System (ADS) … 
In this application note, we’ll use the Door Modules with the following instances as an example: 
•  Front Right DM_FR 
•  Front Left DM_FL 
•  Rear Right DM_RR 
•  Rear Left DM_RL 
 
The physical control units are derived from a common class with respect to the functionality. Hence, all control unit 
instances derived from this class potentially support the same superset of the functional scope. The actual ECU 
instances will be configured according to the position they will have in the network topology when they are built into 
the car. 
 According to the configuration there may be  
•  A different functional scope 
o  E.g. different MMI (man machine interface) for each ECU instance: Mirror control or special window 
control for all windows only on the Front Left Door Module, not on the other modules (application 
dependent, not covered by this application note) 
•  Different communication properties of the instances: 
o  Own NM message to transmit 
o  Own signals to transmit and to receive 
o  Own messages to receive and to transmit 
 
The System Description of the OEM contains the instances of such Physical Multiple ECU. For each instance, the 
OEM creates a separate ECU Extract of System Description. This set of ECU Extracts is the configuration input of 
the Physical Multiple ECU. 
                                                           
1 no major changes means: No changes in the application, but there are changes in the initialization sequence of 
the basic software which are not covered by AUTOSAR 
 
2 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
1.1.2  Multiple Configurations ECU 
Across multiple car lines of an OEM, the communication behavior considerably differs. However, the Multiple 
Configurations ECU is shared among an OEM’s car lines. Therefore there must be a mechanism for the adaptation 
of this ECU to different environments, i.e. different car lines. 
Note: 
Multiple Configurations ECUs are currently not supported. 
1.1.3  (Virtual Multiple ECU) 
Virtual Multiple ECUs are control units which are only virtually separate ECUs from a logical point of view but 
residing inside one ECU hardware board. An example for this is a combined radio / gateway control unit. 
Note: 
Virtual Multiple ECUs are currently not supported. 
1.2  Operation principle of Physical Multiple ECUs 
DataEl
taE ements = Sy
= S stem 
em Signals
PDU overlay
rla
RTE fan out
Rte
Superset DataElements
Merged D
ed ataEl
taE ements
e
DataElemen
em
ts
Merged 
ISIGs
ISIGs
Com
IPDU
IPDU
IPDU
IPDU
IPDU
PduR
Decision: 
sion
IPDU Æ
DU 
LPDU
CanI
Can f
Can
id1
id2
id1
id2
id1
id2
identity1
identity2
identity1
identity2
identity1
identity2
 
Figure 1 – Overview of the Multiple ECU feature, Tx path shown only. 
 
In Figure 1, you see an example of the operation principle of a Multiple ECU. Here, the Tx path is shown. The 
leftmost column displays what happens if you have to configure a Multiple ECU sending out different CAN 
messages and cannot use any kind of optimization because the signals for each identity are different. For each set 
of signals which have to be sent, a separate PDU is created and mapped to a corresponding CAN frame which is 
actually sent out. This situation also applies if you have a PDU which is transmitted in one identity and received via 
a different identity. Then, despite having the same signals on application level, two PDUs are created, one for 
transmission in identity1, a second PDU for reception in identity2. 
However, if you have semantically equivalent signals sent in different CAN messages, there is room for 
optimization. This is shown in the middle column. Semantically equivalent signals can be merged into one common 
PDU, the transmission is done in different CAN frames, but their content is equal.  
 
3 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
If the signal layout is not equivalent over the identities, this optimization is not possible (right column of Figure 1)
Therefore separate PDUs have to be used. Additionally: There may be only one signal on system level which is 
sent in different PDUs as shown in the rightmost column. In this case the RTE provides the fan-out to the Com. 
Vectors implementation of the Multiple ECU feature incorporates overlaying of PDUs as well as RTE fan in/out 
(signal overlay). 
2.0  Configuring a Multiple ECU 
Before you start with the BSW configuration, you have to create a valid initial active ECU configuration based on a 
collection of all required ECU Extracts of System Configuration. Additionally, the required startup mechanisms in 
the ECUM have to be provided. The State Manager has to recognize which identity is currently active and has to 
decide which initialization sequence it has to select for the current identity. Finally, the BSW can be configured 
based on this ECUC file. 
The PDUR controls the communication behavior in each instance of a Multiple ECU configuration. The PDUR 
implements the reception and transmission behavior as well as the mapping of CANIF PDUs (N-PDUs) to the COM 
PDUs (I-PDUs). If there is no optimization, the transmission and reception behavior is implemented over a 
superset of Rx and Tx messages in the CANIF. According to the active identity, the message is either transmitted 
or received or nothing of this.  
For the straight forward case, this can be reached by creating different PDUs for each identity. In an optimized 
case, the memory consumption can be reduced by merging redundant PDUs. 
2.1  ECUC creation (without overlay) 
For each ECU identity, the InitialEcuC generator reads in one ECU Extract of System description – see the figure 
below for an overview of the tool flow: 
 
ECU Extract
of System
Configuration
Description #1
ECU Extract
of System
Configuration
Initial ECUC
ECUC File
Description #2
Generator
.
.
ECU Extract
of System
Configuration
Description #n
 
Figure 2 – Creating an ECUC file from Multiple ECU Extracts 
 
4 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
In our example, we have the Door Module ECU with 4 physical Multiple ECUs. 
That means the OEM will provide four different ECU Extracts of System Configuration Description: 
• DM_FL.arxml 
 
• DM_FR.arxml 
 
• DM_RL.arxml 
 
• DM_RR.arxml 
 
The InitialEcuC generator is able to merge these extracts in one ECUC file which provide the superset for the BSW 
configuration. 
Tool usage: 
GenTool_CsAsrInitialEcuC.exe [–p <PrjName>] –m <EcuExtractOfSd1>…<EcuExtractOfSdN> 
Hint: 
The optional parameter –p <PrjName> gives the name of the resulting configuration/project. The 
name of the resulting configuration and/or project is the first file name given to the generator tool if 
no – p <PrjName> option is given. In our example, the PrjName = DM_FRL. 
Open a command line prompt and enter: 
GenTool_CsAsrInitialEcuC.exe –p DM_FRL -m DM_FL.arxml DM_FR.arxml DM_RL.arxml 
DM_RR.arxml 
 
A result of the generator run will be: 
DM_FRL.ecuc.arxml (active configuration – this one will be iteratively changed during BSW configuration phase 
and enhanced by vendor-specific attributes) 
DM_FRL.Initial.ecuc.arxml (initial configuration holding the basic pre-configuration for the BSW) 
DM_FRL.ecuc.vdsxml (this is a file which you can load with GENy; it references initial and active configuration. 
DM_FRL.Error.txt (describing errors encountered during the conversion) 
 
Note: The 
GenTool_CsAsrInitialEcuCMultConfMerge.dll must reside in the same directory like 
the ECUC generator dll (GenTool_CsAsrInitialEcuCDsIf.dll). 
2.1.1  What happens in the ECUC? 
The ECUC loader creates one network node per identity. Further, it creates a message/PDU list with references to 
the network node. 
The used set of PDUs or signals is a superset of the used PDUs or signals (unique names without duplicates). 
For each identity it creates a so called multiple configuration container in the ECUC file below all basic software 
modules for which a multiple configuration container is defined in their BSWMD files. The multiple configuration 
container incorporates the ECU name as identification. The container for the ECUM holds references to the init 
structures of the modules.  
The name of the multiple configuration container is composed of  
<name of the structure in the bswmd/paramdef file>_<EcuShortName> 
The EcuShortName is taken from the ECU Extract of System Configuration. In the door module example, 
ECU short name for the respective multiple configuration containers will be DM_FL, DM_FR, DM_RR, DM_RL. 
 
5 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
2.2  ECUC Creation (with overlay) 
Multiple ECUs typically have some messages that have the same signal layout and contain semantically equal 
signals (only with different names) shared at least by some of the identities (see Figure 1 for an overview of the 
feature). 
For this case, a separate PDU is assigned to each semantic group of signals. First, this is not efficient, because 
you maintain several PDUs which have the same semantic and transport the same signals. The memory 
consumption for these PDUs is redundant. Second, the application code or the software component should not 
need to distinguish between the different active identities when handling the contained signals.  
So the solution is to configure only one common PDU for all identities and use the potential for an optimization 
called PDU overlay (see the middle column of Figure 1). 
The needed PDU overlay must be configured manually. This means the user has to select the PDUs which can be 
merged together, and has to provide a respective control file in XML (Overlay Control File). 
In the PDUR one such PDU will result in the reception or transmission of a unique L-PDU on interface level. 
The configuration of the PDUR at startup will determine to which Rx or Tx L-PDU the I-PDU will be mapped, i.e. 
which CAN message will be sent with the contents of this I-PDU. 
Precondition:  
•  Existence of multiple ECU Extracts, one for each identity.  
•  An overlay control file. 
 
The figure below shows the tool flow for creating an ECUC file with an Overlay Control File: 
 
ECU Extract
of System
Overlay
Configuration
Control File
Description #1
ECU Extract
of System
Configuration
Initial ECUC
ECUC File
Description #2
Generator
.
.
ECU Extract
of System
Configuration
Description #n
 
Figure 2 – Creating an ECUC file with Overlay Control File 
 
 
6 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
Tool usage: 
GenTool_CsAsrInitialEcuC.exe [–p <PrjName>] –m [<EcuExtractOfSd1>…<EcuExtractOfSdN>] 
-o <OverlayControlFile> 
Hint: 
The optional parameter –p <PrjName> gives the name of the resulting configuration/project. The 
name of the resulting configuration and/or project is the first file name given to the generator tool if 
no – p <PrjName> option is given. In our example, the PrjName = DM_FRL. For the PDU overlay 
case, the PrjName can be given in the control file as well. 
Open a command line prompt and enter: 
GenTool_CsAsrInitialEcuC.exe -m DM_FL.arxml DM_FR.arxml DM_RL.arxml DM_RR.arxml -o 
MultiEcuExample.arxml 
You can also omit specifying the multiple ECU Extracts since the ECU Extracts are already referenced in the 
Overlay Control File. The following invocation is equivalent to the one above: 
GenTool_CsAsrInitialEcuC.exe -m -o MultiEcuExample.arxml 
2.3  Overlay Control File 
An example file is shown at the end of this chapter. Basically you have to define the following: 
•  The source extracts from which you read-in the different identities and a master extract which defines the 
default names of the merged entities. 
•  The instance name for the new ECU 
•  The PDU overlays (must be members of different identities) 
•  The signal overlays (for RTE fan in/out of signals with different PDU layout) 
•  Splitting of PDUs in Rx and Tx direction to explicitly define the overlay: Rx PDUs only, Tx PDUs only or Tx 
and Rx PDU overlay 
2.3.1  Specifying the ECU Extracts to be merged 
The ECU Extracts of System Configuration Description which shall be merged are specified within the 
<SourceECUExtracts> tag. You can specify a set of ECU Extracts (instances) to be merged via the 
<MergingExtract> tag and the master ECU Extract via the <MasterExtract>.  
Note: 
If an element (signal/PDU) is not present in the master extract, the default name of the element is 
defined by the order of the ECU Extracts in the <SourceECUExtracts> tag. 
 
See example below for specifying a set of ECU Extracts to be merged:  
<SourceECUExtracts> 
<MasterExtract> EcuExtractOfSd </MasterExtract> 
<MergingExtract> EcuExtractOfSd1 </MergingExtract> 
<MergingExtract> EcuExtractOfSd2 </MergingExtract> 
<MergingExtract> … </MergingExtract> 
</SourceECUExtracts> 
 
7 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
2.3.2  Specifying the merged ECU instance name 
The ECU instance name of the merged ECU is specified using the <NewECUInstanceName> tag: 
<NewECUInstanceName> MultiIdEcu </NewECUInstanceName> 
2.3.3  PDU overlay 
The PDU overlays are defined inside the <OverlayPDUs> tag, which contains all definitions for the overlays. The 
overlays consist of equivalent PDU names. The definition which PDUs shall be overlaid (“Rx”, “Tx” or “TxRx”) is 
specified by the direction parameter within the <OverlayingPDUs> tag. 
<OverlayPDUs> 
<OverlayingPDUs direction=”Tx”> 
<PDU>PDU1_FL</PDU> 
<PDU>PDU1_FR</PDU> 
<PDU> … </PDU> 
</OverlayingPDUs> 
</OverlayPDUs> 
Note: 
For overlaying PDUs, you also have to specify a corresponding signal overlay section in the 
overlay control file (see description below). 
2.3.4 Signal 
overlay 
The signal overlays for specifying the RTE fan in/out are defined inside the tag named <MatchingSignals> 
which contains all signals which shall be overlaid. Like the PDU overlay, the definition which signals shall be 
overlaid (“Rx”, “Tx” or “TxRx”) is given in the direction parameter of the <MatchingSignals> tag. 
The name of the overlaid signal is specified by the <NewSignalName> tag – see example below: 
<MatchingSignals direction=”Rx”> 
 <Signal>Signal1_FL 
</Signal> 
 <Signal>Signal1_FR</Signal> 
 
<Signal> … </Signal> 
 <NewSignalName>Signal1_XX</NewSignalName> 
</MatchingSignals> 
 
Please consider the following constraints when specifying signal overlays: 
•  For overlaying signal groups, you have to specify both the signal group and each group signal in the 
<Signal> tag. 
• The 
<MatchingSignals> tag is only evaluated by DaVinci Developer. The InitialEcuC Generator doesn’t 
verify the <MatchingSignals> section. 
•  The name of the resulting signal, specified by the <NewSignalName> tag shall correspond to the name of 
the port prototype in the System Description to enable DaVinci Developer to automatically map these 
signals. 
 
8 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
2.3.5  Splitting the direction of PDUs 
Within the <SplitTxRxPDUs> tag, you have to provide the PDUs which cannot be overlaid in both communication 
directions: 
<SplitTxRxPDUs> 
 <PDU>PDU1_FR</PDU> 
 <PDU>PDU1_FL</PDU> 
</SplitTxRxPDUs> 
2.3.6 Example 
<DVMultiECUConfiguration xmlns="http://www.vector-informatik.de/MultiECUSupport" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.vector-informatik.de/MultiECUSupport 
MultiEcuConfig.xsd" version="1.0"> 
    <SourceECUExtracts> 
        <MasterExtract>DoorECU_FL</MasterExtract> 
        <MergingExtract>DoorECU_FR</MergingExtract> 
        <MergingExtract>DoorECU_RL</MergingExtract> 
        <MergingExtract>DoorECU_RR</MergingExtract> 
    </SourceECUExtracts> 
    <NewECUInstanceName>MyMultiDoorECU</NewECUInstanceName> 
    <OverlayPDUs> 
        <OverlayingPDUs> 
            <PDU>PDU1_FL</PDU> 
            <PDU>PDU1_FR</PDU> 
            <PDU>PDU1_RL</PDU> 
            <PDU>PDU1_RR</PDU> 
        </OverlayingPDUs> 
        <OverlayingPDUs direction="TxRx"> 
            <PDU>PDU2_FL</PDU> 
            <PDU>PDU2_FR</PDU> 
        </OverlayingPDUs> 
        <OverlayingPDUs direction="Tx"> 
            <PDU>PDU3_FL</PDU> 
            <PDU>PDU3_FR</PDU> 
        </OverlayingPDUs> 
        <OverlayingPDUs direction="Tx"> 
            <PDU>PDU3_RL</PDU> 
 
9 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
            <PDU>PDU3_RR</PDU> 
        </OverlayingPDUs> 
        <OverlayingPDUs direction="Rx"> 
            <PDU>PDU3_FR</PDU> 
            <PDU>PDU3_RR</PDU> 
        </OverlayingPDUs> 
        <OverlayingPDUs direction="Rx"> 
            <PDU>PDU3_FL</PDU> 
            <PDU>PDU3_RL</PDU> 
        </OverlayingPDUs> 
    </OverlayPDUs> 
    <MatchingSignals> 
        <MatchingSignals direction="TxRx"> 
            <Signal>Signal1_FL</Signal> 
            <Signal>Signal1_FR</Signal> 
            <Signal>Signal1_RL</Signal> 
            <Signal>Signal1_RR</Signal> 
            <NewSignalName>Signal1</NewSignalName> 
        </MatchingSignals> 
        <MatchingSignals> 
            <Signal>Signal2_FL</Signal> 
            <NewSignalName>Signal2</NewSignalName> 
        </MatchingSignals> 
    </MatchingSignals> 
    <SplitTxRxPDUs> 
        <PDU>PDU3_FL</PDU> 
        <PDU>PDU3_FR</PDU> 
        <PDU>PDU3_RL</PDU> 
        <PDU>PDU3_RR</PDU> 
        <PDU>PDU4</PDU> 
    </SplitTxRxPDUs> 
</DVMultiECUConfiguration> 
 
Note: 
There is an XML schema file (MultiEcuConfig.xsd) which is part of the SLP10 delivery that helps 
you to create a valid PDU overlay control file. 
 
 
10 
Application Note  AN-ISC-8-1102 
 



 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
2.4  ECUC creation using DaVinci Project Assistant 
DaVinci Project Assistant supports you in setting up a project based on an existing control file (see  2.3) or on the 
ECU extracts of the different identities. It automatically creates the initial active ECU configuration. 
When specifying the input files for the project, you may select Multiple ECU. You may now either provide the 
existing control file or the ECU extracts and a location for an automatically created control file. This automatically 
created control file will contain the specified ECU extract references. 
Note: 
To define the PDU overlay (see  2.2) you need to manually edit the control file. 
 
Figure 2 – DaVinci Project Assistant Input Files Specification 
 
If you change the control file after having created the project, you may use the update function of the DaVinci 
Project Assistant to reflect your changes. 
Note: 
DaVinci Project Assistant resolves the references to the identities’ extracts given in the control file 
relative to the control file’s location. 
2.5  Generating the RTE of a Multiple ECU 
To generate the RTE of a Multiple ECU, the different ECU extracts – each containing the description of a single 
identity – need to be merged into a single ECU project representing all identities of the Multiple ECU. The merged 
ECU project (resp. an ECU Extract of System Description created by DaVinci Developer) is compatible to the 
ECUC (see  2.0) and can be used as input for the MICROSAR RTE generator. 
The merged ECU project is created by the DaVinci Project Assistant. Alternatively, you may import an existing 
control file (see  2.3) into a DaVinci Developer workspace using the standard XML import mechanism. This will 
automatically create the merged ECU project. 
Note: 
DaVinci Developer resolves the references to the identities’ extracts given in the control file relative 
to the control file’s location. 
3.0  Initialization of the BSW 
The ECU State Manager (ECUM) implements the support for Multiple ECUs. The scope of this chapter is restricted 
to the characteristic settings for Multiple ECUs in the ECU State Manager only. Further initialization steps 
necessary for AUTOSAR systems are not described here and are assumed to be known. 
 
11 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
The BSW initialization procedure in AUTOSAR works the following way: 
•  µC startup code execution (out of AUTOSAR scope). 
•  Call of the main() function Æ EcuM_Init() 
•  EcuM_Init() allows for initialization of the BSW modules on low level 
•  EcuM_Init() starts the OS, EcuM_Init() does never return. 
•  Schedule Manager Task starts and calls the EcuM_StartupTwo() in its task body 
•  EcuM_StartupTwo(): calls SchM_Init() and calls DriverInitListTwo 
•  The initialization for Multiple ECUs takes place in DriverInitListTwo… 
 
The ECU State Manager (ECUM) itself does not allow different initializations in the EcuM_Init() function. The 
following ECUM properties will be defined only once and are commonly valid for all identities inside an ECUC for a 
Multiple ECU: 
• Sleep 
modes 
• Wake-up 
Sources 
• ECUM 
Users 
• COMM 
channels 
•  TTII successors and divisors 
• DriverInitLists 
 
The ECU firmware (more precisely: a user defined equivalent to an ECU State Manager initialization list) has to 
decide which identity is presently active and has to call the proper initialization routines for the basic software 
modules.  
This initialization approach will 
•  Not adjust the application logic accordingly. The application implements a superset of all functions and is 
not necessarily aware of different identities. 
•  Set up the corresponding BSW modules correctly. 
 
There is no tool-guided way to configure the ECUM for multiple ECU support. Only a manual solution is possible. 
For this purpose, an initialization function has to be added to the STARTUP II phase of the ECUM. (This is 
because the communication modules implement this feature. Communication modules are typically initialized 
during STARTUP II). This can be accomplished by adding a function call to EcuM_Pbcfg.c for the ECUM inside 
the configuration tool (for the SLP10, this can be done inside GENy, for other stacks this is DaVinci Configurator 
Pro). The necessary steps are described below. 
3.1  Creation of the logic for identity selection 
The Multiple ECU support requires a user defined function which determines for which identity the ECU shall start 
up. As described in the paragraph before, this extension has to be built into the STARTUP II. 
Further, we assume that you provide this function in the files  
EcuM_MultiIdentitySupport.h  
EcuM_MultiIdentitySupport.c 
 
The function which has to be called in STARTUP II itself may be called  
EcuM_MultiConfigSelection() 
 
12 
Application Note  AN-ISC-8-1102 
 




 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
 
Note:  
The name of the header and C file are only examples, as well as the signature and function name 
EcuM_MultiConfigSelection(). The actual implementation is up to the supplier. 
3.2  Prepare the ECUM configuration 
Before you can use the Multiple ECU feature, you have to add EcuM_MultiIdentitySuport.h  to the  
Additional Includes section in the ECUM. 
 
Figure 3 – GENy Configuration for Multiple ECU Feature 
 
Further, you have to create a new entry in the ECUM Driver Init List Two, where 
EcuM_MultiConfigSelection() is called. 
 
Figure 4 - GENy Configuration for Init List Two 
 
3.3  Provide an user defined ECUM initialization function 
An implementation for the MultiConfigSelection initialization function could look like that: 
… 
#include <EcuM_MultiIdentitySupport.h> 
… 
void EcuM_AL_DriverInitTwo () /*  

  Dio_Init(); 
  EcuM_MultiConfigSelection(); 

 
13 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
You will need to provide a similar implementation in EcuM_MultiIdentitySupport.c: 
FUNC(void, ECUM_CODE) EcuM_MultiConfigSelection(void) 

  channelGroupIdType dioDipSwitch; 
 
  switch (Dio_ReadChannelGroup(&dioDipSwitch))  /* read in DIP switch */ 
  { 
    case MULTI_CONFIG_FL: /* initialization variant for door front left */ 
      Can_Init(NULL_PTR);  
      CanIf_Init(NULL_PTR); 
      CanSM_Init(); 
      PduR_Init(&PduRGlobalConfig_DM_FL); 
      Com_Init(NULL_PTR); 
      Nm_Init(NULL_PTR); 
      CanNm_Init(&CanNmGlobalConfig_DM_FL); 
      ComM_Init(); 
      CanTp_Init(&CanTpConfigSet_DM_FL); 
      Dcm_Init(&DcmConfigSet_DM_FL); 
      Vmm_Init(); 
      Dem_Init(); 
    break; 
    case MULTI_CONFIG_FR: /* initialization variant for door front right */ 
      Can_Init(NULL_PTR);  
      CanIf_Init(NULL_PTR); 
      CanSM_Init(); 
      PduR_Init(&PduRGlobalConfig_DM_FR); 
      Com_Init(NULL_PTR); 
      Nm_Init(NULL_PTR); 
      CanNm_Init(&CanNmGlobalConfig_DM_FR); 
      ComM_Init(); 
      CanTp_Init(&CanTpConfigSet_DM_FR); 
      Dcm_Init(&DcmConfigSet_DM_FR); 
      Vmm_Init(); 
      Dem_Init(); 
    break; 
    default:  
    break; 
  } 
 
14 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
  return; 
}  
 
Inside each initialization sequence, there have to be instance-specific calls into the basic software init functions like 
 <BSWM>_Init(&<configSetPtrName>_<EcuShortName>) 
Each module has to provide the instance-specific <configSetPtrName>_<EcuShortName> in its actual 
configuration obtained by the BSW configuration step performed in GENy. 
The name of the parameter used for the init functions is formed according to the following rule: 
<configSetPtrName> comes from the structure name from bswmd/paramdef file. 
<EcuShortName> is derived of the Ecu Names used in the ECU Extract of System 
Description 
Note: 
You do not have the same scheme for the init functions of all BSW modules, some take no 
arguments some take a mandatory pointer. The following section provides an overview. 
3.4  Where do I find the initialization structures? 
For each BSW module, you can find the init structures in the generated code. Simply have a look at the following 
files in the \gendata folder: 
<ModuleName>_lcfg.c, <ModuleName>_pbcfg.c, <ModuleName>_cfg.c 
3.5  Overview of BSW module initialization 
Considering the Multiple ECU feature, the AUTOSAR selectable post build approach is not fully supported.  The 
AUTOSAR selectable post build approach is based on different unique initialization structures which are passed to 
the BSW via an initialization pointer in order to configure it. 
Resource optimization would not be possible if unique initialization structures for each identity were provided. For 
this reason, the AUTOSAR selectable post build initialization mechanism is not applied for all modules. 
For the majority of the modules, only one merged post build configuration/superset of initialization data will be 
created in order to save resources. For the remaining modules DCM, CANTP, CANNM, IPDUM, PDUR, individual 
initialization data sets are supported. 
The following table gives an overview of the configuration pointer usage. 
 
Used init pointer 
BSW 
Not instance specific 
Instance specific 
module 
COMM 

 
ECUM 

 
VMM 

 
COM 

 
IPDUM  

PDUR  

NM 

 
CANNM  

CANSM 

 
 
15 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
CANIF 

 
CANDRV 

 
CANTP  

DCM  

DEM 

 
Table 1  – Overview of the module configuration for multiple identities 
 
4.0  Diagnostics and Multiple ECU Support 
The DCM/DEM module, developed by Vector, implements two dynamic configuration modes that allow switching 
among the available configuration sets at runtime (without need to reprogram the ECU). This requires that the 
superset of all variants must be pre-enabled during the software compilation and link process.  
 
In Multiple ECU mode, DCM allows you to use: 
•  Multiple diagnostic configuration sets – a use case where the ECU always communicates over the same 
connection, but shall implement different functionality depending on some hardware (jumper) setting. 
•  Multiple communication configuration sets – typical use case where the ECU shall have the same 
functionality, but depending on its location on the network uses different communication parameters 
(communication message IDs i.e. door ECUs). 
•  Both multiple diagnostic and communication sets. 
 
The combination of diagnostic and communication configuration is configured statically in GENy.  
The details of Multiple ECUs and diagnostics are described in the Technical Reference for the DCM, chapter 7.6 
and in the Technical Reference for the DEM, chapter 7.1. 
5.0  Supported use cases 
Based on the PDU overlay and RTE fan in/out approach, the current implementation of the Multiple ECU supports 
the following use cases: 
•  Overlaying of RX/TX PDUs with identical signal layout, respective PDUs with gaps in the signal layout. 
Each signal within the PDU has to have the same length and has to be of the same type: Single signals 
can only be overlaid by single signals, signal groups can only be overlaid by signal groups. 
•  RTE fan in/out of signals which are located in different PDUs. 
6.0  Restrictions and limitations 
LIN is invariant to the Multiple ECU feature that means it is not actively supported. As a consequence, the same 
LIN network exists in all identities. Multiple ECU support for FlexRay is planned for future releases. 
Please also note the for RTE fan in, the signals to be overlaid have to be located in different PDUs 
 
16 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
If a PDU contains signals for different identities, a wrapper software component needs to be implemented to select 
the according signal based on the current identity – see example below: 
 
Wrapper SWC
SWC
Signal_XX
Identity
al_FL
al_FR
al_RL
al_RR
gn
gn
gn
gn
Si
Si
Si
Si
 
Figure 4 – Wrapper software component for switching identity specific signals 
 
 
7.0 Additional resources 
VECTOR TECHNICAL REFERENCES 
MICROSAR DCM Technical Reference (based on ASR 3.0) Version 3.14 
MICROSAR Diagnostic Event Manager (DEM) Technical Reference Daimler Version 2.2 
 
17 
Application Note  AN-ISC-8-1102 
 


 
 
Identity Manager - Multiple ECUs 
 
 
 
 
 
 
8.0 Contacts 
 
 
 
 
Germany  
France, Belgium, Luxemburg: 
Sweden, Denmark, Norway,  
and all countries not named below: 
 
Finland, Iceland: 
Vector Informatik GmbH 
Vector France SAS 
VecScan AB 
Ingersheimer Str. 24 
168 Boulevard Camélinat 
Theres Svenssons Gata 9 
70499 Stuttgart 
92240 Malakoff  
41755 Göteborg  
GERMANY 
FRANCE 
SWEDEN 
Phone: +49 711-80670-0 
Phone: +33 1 42 31 40 00 
Phone: +46 31 764 76 00 
Fax: +49 
711-80670-111 
Fax: 
+33 1 42 31 40 09 
Fax: 
+46 31 764 76 19  
E-mail: info@de.vector.com 
E-mail: information@fr.vector.com 
E-mail: info@se.vector.com 
 
 
 
 
  
 
United Kingdom, Ireland: 
China: 
India: 
Vector GB Ltd. 
Vector Informatik GmbH  
Vector Informatik India Private Ltd. 
Rhodium 
Shanghai Representative Office 
4/1/1/1 Sutar Icon 
Central Boulevard 
Suite 605, Tower C,  
Sus Road 
Blythe Valley Park 
Everbright Convention Center 
Pashan 
Solihull, Birmingham 
No. 70 Caobao Road 
Pune 411021 
West Midlands B90 8AS 
Xuhui District 
INDIA 
UNITED KINGDOM 
Shanghai 200235  
 
Phone: +44 121 50681-50 
P.R. CHINA 
Phone: +91 9673 336575 
E-mail: info@uk.vector.com 
Phone: +86 21 - 6432 5353 ext. 0 
E-mail: info@vector-india.com 
 
Fax:   +86 21 - 6432 5308 
E-mail: info@vector-china.com 
 
 
 
 
USA, Canada, Mexico: 
Japan: 
Korea: 
Vector CANtech, Inc. 
Vector Japan Co. Ltd. 
Vector Korea IT Inc. 
39500 Orchard Hill Pl., Ste 550 
Seafort Square Center Bld. 18F 
#1406, Mario Tower, 
Novi, MI  48375 
2-3-12, Higashi-shinagawa, 
222-12 Guro-dong, Guro-gu  
USA 
Shinagawa-ku 
Seoul, 152-848 
Phone: +1 248 449 9290 
Tokyo 140-0002 
REPUBLIC OF KOREA 
Fax: 
+1 248 449 9704 
JAPAN 
Phone: +82 2 807 0600 
E-mail: info@us.vector.com 
Phone: +81 3 5769 7800 
Fax: 
+82 2 807 0601 
 
Fax: 
+81 3 5769 6975 
E-mail: info@kr.vector.com 
E-mail: info@jp.vector.com 
 
 
 
 
 
18 
Application Note  AN-ISC-8-1102 
 

Document Outline


3.9 - ApplicationNotes_DifferenceAnalyzer

Microsoft Word - ApplicationNotes_DifferenceAnalyzer.doc

3.11 - ApplicationNotes_DifferenceAnalyzers


 
 
 
 
 
 
 
 
 
 
 
 
DaVinci Difference Analyzer 
Application Note 
 
 
 
 
Version 1.7 
 
 
 
 
 
 
Authors: 
Stefanie Kruse, Matthias Wernicke, Andreas 
Claus, Daniel Fürderer 
Version: 
1.7 
Status: 
released  
 
 
 


DaVinci Difference Analyzer Application Note 
 
History 
 
Author  Date 
Version  Remarks 
Ske 
2009-05-20 
1.0 
Initial version 
Ske 
2009-06-10 
1.1 
Description of starting DaVinci Difference Analyzer enhanced 
Wk 
2009-07-29 
1.2 
Document restructured and completed 
Cs 
2011-06-28 
1.3 
Description of filter options added 
Dfr 
2012-01-24 
1.4 
Updated figures and added description of view options (3.6), 
Parent Path (3.7) and DPA compare (3.8) 
Cs 
2012-05-02 
1.5 
Additional Copyrights added 
Dfr 
2014-01-28 
1.6 
Added description of ‘Filter equal elements’ option (3.5.2 and 4) 
Cs 
2015-05-28 
1.7 
Usage of Saxon-PE distributable package 
 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
Contents 
1 
Overview ................................................................................................................... 5 
2 
Installation ................................................................................................................ 6 
2.1 
Setup program ............................................................................................ 6 
2.2 
Licensing .................................................................................................... 6 
3 
Using DaVinci Difference Viewer ............................................................................. 7 
3.1 
Starting the difference analysis ................................................................... 7 
3.2 
Display of the differences ........................................................................... 8 
3.3 
Saving the result of a difference analysis .................................................... 9 
3.4 
Opening the result file of a difference analysis ............................................ 9 
3.5 
Filter Options .............................................................................................. 9 
3.5.1 
Element Identification ............................................................................... 10 
3.5.2 
Filter equal elements ................................................................................ 11 
3.5.3 
Element Filter ........................................................................................... 11 
3.5.4 
Loading/Storing Options ........................................................................... 11 
3.6 
View Options ............................................................................................ 11 
3.7 
Parent path changes ................................................................................ 12 
3.8 
Comparing DPA Projects .......................................................................... 12 
3.8.1 
Starting the difference analysis ................................................................. 12 
3.8.2 
Result Overview ....................................................................................... 12 
4 
Command line usage ............................................................................................. 14 
5 
Result file ................................................................................................................ 15 
6 
Additional Copyrights ............................................................................................ 17 
6.1 
Saxon-HE ................................................................................................. 17 
6.1.1 
IKVM Runtime .......................................................................................... 17 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
7 
Contact .................................................................................................................... 18 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
1   Overview 
This document explains the usage of the command line tool “DaVinci Difference Analyzer” 
Version 2.7 and tells how to interpret the result.  
 
DaVinci  Difference  Analyzer  compares  two  ARXML  files  and  puts  the  result  into  a  result 
file.  Additionally  you  can  compare  two  DaVinci  Project  Assistant  projects  by  their  DPA 
files. For further information on DPA compare see chapter 3.8. 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
2  Installation 
2.1  Setup program 
The  DaVinci  Difference  Analyzer  can  be  installed  by  starting  the  setup  program 
DaVinciDiff.msi. This setup is part of a DaVinci tool setup and is installed during the tool 
installation procedure. 
The DaVinci Difference Analyzer is installed into one of the following folders: 
n  
English Windows: C:\Program Files\Common Files\Vector 
n  
German Windows: C:\Programme\Gemeinsame Dateien\Vector 
The following executables are installed in the sub-folder “DiffAnalyzer”: 
n  
DVDiffSys.exe: Command line program for comparing AUTOSAR XML files 
(System Description files, Software Component Description files or ECU 
Configuration Description files) 
n  
DVDiffView.exe: Program for displaying the differences between two AUTOSAR 
XML files 
2.2  Licensing 
In order to run DaVinci Difference Analyzer a license of at least one of the following tools is 
required on the PC: 
n  
DaVinci Configurator Pro 
n  
DaVinci Developer 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 



DaVinci Difference Analyzer Application Note 
 
3  Using DaVinci Difference Viewer 
3.1  Starting the difference analysis 
The difference analysis can be started via one of the following options 
 
n  
Via the Program menu 
Using Program menu | <DaVinci tool, e.g. Vector DaVinci Configurator 4.0> 
| DaVinci Difference Viewer the DaVinci Difference Viewer is started. Using 
File | New you can open a dialog for selecting the two AUTOSAR XML files to 
be compared. After confirming this dialog, the comparison is started and the 
differences are displayed. 
n   Via the Windows Explorer 
After selecting two files with extension .arxml in the Windows Explorer, you can 
display the differences between these files using the context menu entry 
AUTOSAR XML Diff 
 
 
Figure 1: Analyze two files with the shell extension of DaVinci Difference Analyzer 
 
Alternatively, you can select the first file, use the context menu entry Select as left 
side for AUTOSAR XML Diff 
 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 




DaVinci Difference Analyzer Application Note 
 
 
Figure 2: Select source file to compare AUTOSAR files with the DaVinci Difference Analyzer 
 
 
and then select the second file and context menu entry AUTOSAR XML Diff with 
 
 
Figure 3: Shell Extension of DaVinci Difference Analyzer 
3.2  Display of the differences 
The  differences  are  displayed  in  the  DaVinci  Difference  Viewer  (Figure  4:  DaVinci 
Difference Viewer). 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 



DaVinci Difference Analyzer Application Note 
 
 
Figure 4: DaVinci Difference Viewer 
3.3  Saving the result of a difference analysis 
Using File | Save As you can save the results of the difference analysis can be saved to a 
DaVinci Difference File (extension .dvdiff, see chapter 5). 
3.4  Opening the result file of a difference analysis 
After opening the DaVinci Difference Viewer you can load a DaVinci Difference File using 
File | Open. Alternatively you can doubleclick the DaVinci Difference File in the Windows 
Explorer. 
3.5  Filter Options 
A  dialog  can  be  opened  using  Tools  |  Options  to  specify  the  element  identification  and 
filter for the next comparison. 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 



DaVinci Difference Analyzer Application Note 
 
 
Figure 5: Options Dialog 
If  options  are  modified  and  the  dialog  has  been  closed  using  OK  you  can  re-start  the 
comparison process with the currently selected files by using the File | Reload 
3.5.1 
Element Identification 
Elements can be identified by Short-Name or UUID: 
n  
Short-Name 
The elements have to be in the same package and the Short-Name has to be 
identical. This means if an element is renamed or was moved to another 
package it will be shown as removed in the source file and added in the changed 
file.  
n  
UUID 
In UUID-Mode the elements are identified by their UUID. Thus Short-Name or 
package modifications are shown as a usual modification. If an element does not 
have an UUID, it is identified by Short-Name or if it does not have a Short-Name 
it is identified according to its position. 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 



DaVinci Difference Analyzer Application Note 
 
3.5.2 
Filter equal elements 
Enabling  filter  equal  elements  (see  Figure  6:  Filter  equal  elements  option)  will  remove 
equal  AR-ELEMENTS  from  differing  process.  This  option  will  speed  up  the  diff  process, 
but you cannot see equal elements in the DaVinci Difference View (see 3.6 View Options). 
 
Figure 6: Filter equal elements option 
3.5.3 
Element Filter 
To ignore certain elements during the comparison the XML element can be added to the 
ignorer  list.  These  ignored  elements  do  not  exist  in  the  diff  result  file.  For  hierarchical 
elements all children of ignored elements are ignored too. 
3.5.4 
Loading/Storing Options 
The currently defined options can be stored as a configuration for later usage. By pressing 
the  New...  button  the  configuration  is  created  with  the  given  name.  With  Select…  the 
options can be loaded from a stored configuration. 
The  configurations  are  stored  in  the  file  DVUserDefinedConfiguration.ini  located  in  the 
shared documents folder for all users: 
n  
English Windows:  
C:\Documents and Settings\All Users\Documents\Vector\DaVinci\DiffAnalyzer 
n  
German Windows:  
C:\Dokumente und Einstellungen\All 
Users\Dokumente\Vector\DaVinci\DiffAnalyzer 
3.6  View Options 
The view options enable you to filter elements by their changes. Elements are considered 
as equal, modified, added or removed. The buttons from the toolbar (Figure 7: View 
Options) toggle between showing and hiding elements of the specific category. Thus you 
can configure your specific view of a diff, e.g. show only new elements. 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 




DaVinci Difference Analyzer Application Note 
 
 
Figure 7: View Options 
3.7  Parent path changes 
In the options (see chapter 3.5.1) the identification type of an element can be set. While in 
short-name mode elements are identified by their short-name within the same package, in 
UUID  mode  it  is  possible  to  identify  elements  across  different  packages  by  UUID.  The 
AUTOSAR  path of  the  parent  element  is  introduced  to  visualize  changes  of the  package 
structure. 
In  the  viewer  you  can  define  weather  you  want  to  care  about  changes  of  the  package 
structure or not. If only the parent path was modified and the parent path is set to ignore 
the element is considered as equal. 
 
Figure 8: Show/Hide parent path changes 
Note: The parent path button is only activated if the file was compared with UUID-
identification. A refresh is required if you change the element identification in the options 
dialog. 
3.8  Comparing DPA Projects 
3.8.1 
Starting the difference analysis 
To compare two DPA projects you can choose one of the described starting methods 
(3.1). In the open file dialog you have to change the file extension filter to ‘DaVinci Files 
(*.arxml, *.dpa)’. The result is presented in the Result Overview (Figure 9: DPA project 
comparison) which is immediately opened.  
3.8.2 
Result Overview 
In the Result Overview (Figure 9: DPA project comparison) a listed of items to compare is 
shown. An item can be a value of the project configuration itself, e.g. the project name or 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 



DaVinci Difference Analyzer Application Note 
 
binary files like DLLs or AUTOSAR files which are part of the project. At any time you can 
show or hide the Result Overview over the View | Result Overview menu or pressing the 
shortcut ‘Ctrl+r’. 
The status column signalize if a value was compared. For AUTOSAR files a file icon 
appears and the difference result view can be shown by double clicking the row. 
 
Figure 9: DPA project comparison 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
4  Command line usage 
You can run the difference analysis by the following command: 
DVDiffSys  –s <arfile1> -c <arfile2> -o <resultfile>  
[-r  [-e < schemafile>]] 
[-u] [-p <presetname>] [-fe <XMLElementName1[,XMLElementNameN]*>] 
 
n  
Mandatory parameters 
n   –s <arfile1> source file. 
n   –c <arfile2> AUTOSAR file which is compared with the source file. 
n   –o  <resultfile>  path  of  an  xml  result  file  which  contains  the  differences 
between <arfile1> and <arfile2>. 
 
n  
Optional parameters 
n   –p  <presetname>  Name  of  the  preconfigured  configuration  containing  the 
options and filter definitions.  
n   –fe  <XMLElementName1[,XMLElementNameN]*>  List  of  elements  to  be  ignored 
during comparison.  If –p and –fe is specified the filter list will be appended to 
the preconfigured filters 
n   –r  validation  of  AUTOSAR  files  against  the  xml  schema  referenced  within  the 
source/changed  file.  If  this  parameter  is  not  specified  validation  is  disabled  by 
default. 
n   –r  -e  <schemafile>  The  AUTOSAR  files  are  validated  against  the  defined 
external xml schema.  
n   –u use UUID instead of short name to identify objects.  
n   -fee  To  speed  up  the  diff  process  equal  AR-ELEMENTs  are  excluded  from 
diffing. In the Difference Viewer it is not possible to show equal AR-ELEMENTS 
when enabling the equal elements filter (see 3.6 View Options). 
 
Note:  DaVinci  Difference  Analyzer  supports  AUTOSAR  2.1,  AUTOSAR  3.x,  and 
AUTOSAR 4.x 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 



DaVinci Difference Analyzer Application Note 
 
5  Result file 
The  results  of  a  difference  analysis  can  be  stored  in  a  DaVinci  Difference  File  (XML  file 
with extension .dvdiff).  
 
Description of the XML tags: 
n  
MASTER-FILE  
Specifies the master (source) file of the comparison. The attribute “file” specifies an 
absolute or relative file path. 
n  
MODIFIED-FILE 
Specifies  the  modified  file  to  compare  with  the  master  file.  The  attribute  “file” 
specifies an absolute or relative file path. 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
n   CONFIGURATION 
Used options for this comparison including the full list of ignored elements 
n  
CHANGED 
Specifies that the object itself or one or more if its children had been changed. The 
attribute “type” specifies the type of the object. The attribute “short-name” specifies 
the name of the object. 
If something is changed somewhere in the sub branch, the object is followed by a 
<CHANGED>, <ADDED> or <REMOVED> tag.  
If the value of the object itself is changed, the object is followed by an <OLD> and 
<NEW> tag. 
n  
ADDED 
Specifies  the  object  and  its  children  have  been  added  to  the  modified  file.  The 
attribute “type” specifies the type of the object. The attribute “short-name” specifies 
the name of the object. 
n  
REMOVED 
Specifies the object and its children have been removed from the master file. The 
attribute “type” specifies the type of the object. The attribute “short-name” specifies 
the name of the object. 
n  
OLD 
Value of an object in master file. 
n  
NEW 
Value of an object in modified file. 
n  
NO_CHANGES 
Files are equal. 
n  
NO_AUTOSAR 
File is not an AUTOSAR file. 
n  
EQUAL 
Elements are equal. 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
6  Additional Copyrights 
6.1  Saxon-PE Redistribution 
Difference algorithm is executed using XSLT style-sheets processed by "The Saxon XSLT 
and XQuery Processor from Saxonica Limited" available at http://www.saxonica.com/.  
 
DaVinci  Difference  Analyzer  links  to  the  Saxon-PE  binary  libraries.  The  libraries  are 
distributed as separate binary DLL files. No modifications have been made to the libraries. 
6.1.1 
IKVM Runtime 
Saxon links dynamically to the IKVM Runtime. See http://www.ikvm.net/.  
Can be downloaded from http://sourceforge.net/projects/ikvm/files/ 
License is at http://weblog.ikvm.net/story.aspx/license 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 


DaVinci Difference Analyzer Application Note 
 
7  Contact 
Visit our website for more information on 
 
>   News 
>   Products 
>   Demo software 
>   Support 
>   Training data 
>   Addresses 
 
www.vector-informatik.com 
2015, Vector Informatik GmbH 
Version: 1.7 
 
 

3.12 - LicenseManagerHelp

Vector Product Activation

3.14 - LicenseManagerHelps


 
 
 
 
 
 
 
 
 
 
 
Vector Product Activation 
 
 
 
 
Version 2.0 
 
 
 
 
 
 
 
 
 
 
 
Status 
Released 
 
 
 
 
 



 Vector Product Activation  
 
Contents 
1  Overview ......................................................................................................................... 3 
2  Activate / Update a License ........................................................................................... 4 
2.1 
Activate / Update a License from Vector Activation Server .............................. 4 
2.1.1 
Activate / Update a License via Internet .......................................................... 4 
2.1.2 
Activate / Update a License via E-mail ............................................................ 5 
2.2 
Activate / Update a License from Local License Server ................................... 9 
3  Extend a License .......................................................................................................... 12 
3.1 
Extend a License against Local License Server ............................................ 12 
4  Return a License .......................................................................................................... 14 
4.1 
Return a License to Vector Activation Server ................................................. 14 
4.1.1 
Return a License via Internet ......................................................................... 14 
4.1.2 
Return a License via E-mail ........................................................................... 14 
4.2 
Return a License to a Local License Server .................................................. 15 
5  Repair Licenses ............................................................................................................ 16 
5.1 
Repair Licenses against Vector Activation Server .......................................... 16 
5.1.1 
Repair a License via E-mail ........................................................................... 17 
5.2 
Repair a License against a Local License Server .......................................... 20 
6  FAQs and Background Information ............................................................................ 21 
7  Contact.......................................................................................................................... 22 
 
2011, Vector Informatik GmbH 
Version: 2.0 
2 / 22 
based on template version 4.5 



 Vector Product Activation  
 
1  Overview 
In the product activation process only data relevant to the installation  is transferred. 
Vector uses the acquired data exclusively for product activation. 
To activate the product open the Product License Manager. The required Activation ID 
can be found on the cover of the Product CD or in your delivery e-mail
You can choose between two different methods of product activation:  
1.  Online: Automatically via the Internet (recommended, since no time delay) 
2.  By e-mail to: activation@vector-worldwide.com  
If you choose activation by e-mail, send the activation request generated in the Product 
License Manager
 as an e-mail attachment to Vector. In response Vector will send you a 
License Certificate by e-mail which you will need to enter in the License Manager. If this 
is a first-time activation, the initial step involves an additional e-mail exchange to obtain 
Hardware Certificate for configuring license management on your computer. 
If you have any further questions please feel free to contact us. 
2011, Vector Informatik GmbH 
Version: 2.0 
3 / 22 
based on template version 4.5 




 Vector Product Activation  
 
2  Activate / Update a License 
2.1 
Activate / Update a License from Vector Activation Server 
2.1.1 
Activate / Update a License via Internet 
To activate or update a license via Internet from the Vector Activation Server, open the Li-
cense Manager and follow these instructions. 
Step 1 Select License Keys / Activate Manually / Vector Activation Server in the main 
menu of the License Manager. 
 
Figure 2-1 
Select Activate a new license 
Step 2 For request method, we recommend using by internet connection if you have Inter-
net access (should you trust Vector software to connect to the Internet? See section 3 Ex-
tend a License.) 
2011, Vector Informatik GmbH 
Version: 2.0 
4 / 22 
based on template version 4.5 





 Vector Product Activation  
 
 
Figure 2-2 
Send request by internet connenction 
Step 3 Enter your Activation or Update ID (from the cover of the product CD or in your de-
livery e-mail). Please ensure that you typed the ID  correctly  (case sensitive, including all 
zeros). 
Step 4 Ensure that you typed the Activation ID correctly. Press OK. Once the license has 
been correctly transferred to your PC, you’ll see a respective message. You’re done. 
 
 
Info 
In case a HTTP proxy is present in your network that requires a password and/or a 
  login you will be prompted for that data. 
 
 
 
2.1.2 
Activate / Update a License via E-mail 
To activate or update a license via Email (only recommended if activation via Internet 
doesn't work), open the License Manager and follow these instructions: 
Step 1 Select License Keys / Activate Manually / Vector Activation Server in the main 
menu of the Product License Manager. 
Step 2 For Request method, select Send request by e-mail 
2011, Vector Informatik GmbH 
Version: 2.0 
5 / 22 
based on template version 4.5 




 Vector Product Activation  
 
 
Figure 2-3 
Select Send request by e-mail 
Step 3 Enter your Activation / Update ID (from the cover of the product CD or delivery e-
mail). Please ensure that you typed the ID  correctly  (case sensitive, including all zeros). 
Press OK. 
Step  4  Save the request as a file to any location on your hard disk using button “Save 
as…”. 
2011, Vector Informatik GmbH 
Version: 2.0 
6 / 22 
based on template version 4.5 




 Vector Product Activation  
 
 
Figure 2-4 
Save the request 
Step 5 Press Open e-mail… to automatically open a new e-mail with the saved file as at-
tachment. If this fails, attach the file manually to a new e-mail. 
 
Step  6  Send this e-mail to Vector (activation@vector-worldwide.com). No special subject 
or formatting of your e-mail is required. 
 
Step 7 Press OK to close the dialog. 
 
Step 8 If you then received a certificate via e-mail from Vector, save the certificate from the 
e-mail as a file to any location on your hard disk. Open the License Manager again. 
 
Step 9 Select License Keys / Continue e-mail transaction
2011, Vector Informatik GmbH 
Version: 2.0 
7 / 22 
based on template version 4.5 





 Vector Product Activation  
 
 
Figure 2-5 
Select Continue e-mail transaction 
Step 10  In the Loading the certificate dialog, press button Load certificate…  and select 
the certificate file stored on your hard disk (in step 8). 
 
Figure 2-6 
Load certificate… 
 
2011, Vector Informatik GmbH 
Version: 2.0 
8 / 22 
based on template version 4.5 





 Vector Product Activation  
 
Step 11 If this is the first time that you activate a Vector product on your PC, the certificate 
you received configured only your PC itself; you need a second tour (send request to Vec-
tor, receive and load the certificate). Otherwise, you’re done! 
2.2 
Activate / Update a License from Local License Server 
 
 
Info 
In case your company maintains its own license server for Vector products, follow the 
  steps described below. For questions regarding locally administrated settings (server 
URL, activation IDs for license pools) please contact your local network administrator 
or IT department. 
 
 
To activate or update a license from a local license server, open the License Manager and 
follow these instructions: 
Step 1  Select  License Keys  /  Activate Manually / Local License Server  in the entry 
screen of the License Manager. 
 
Figure 2-7 
Select License server type: Local license server 
 
Step 2 Enter your Activation or Update ID (from the cover of the product CD or delivery e-
mail), the URL of the local license server and the expiration date. 
2011, Vector Informatik GmbH 
Version: 2.0 
9 / 22 
based on template version 4.5 





 Vector Product Activation  
 
 
Figure 2-8 
Enter your Activation or Update ID and server URL 
Please ensure that you typed the Activation ID  correctly  (case sensitive, including all ze-
ros). 
If your local license server is run with default settings, please enter the server URL 
@myLicenseServerName.com (@ sign must be provided), where the actual server name 
is defined by your network administrator or IT department. 
In case customized settings for TCP ports are used also provide the respective TCP port 
number, please  (example: license server listens on TCP port 47811  
47811@myLicenseServerName.com). 
 
Servers can be configured with Settings / Server Configuration.  
 
Figure 2-9 
Server Configuration 
Add your server into the list of known servers. 
 
2011, Vector Informatik GmbH 
Version: 2.0 
10 / 22 
based on template version 4.5 





 Vector Product Activation  
 
 
Figure 2-10  List of configured servers 
With add you specify port and server name 
 
Figure 2-11  Specify port and server name 
 
 
2011, Vector Informatik GmbH 
Version: 2.0 
11 / 22 
based on template version 4.5 





 Vector Product Activation  
 
3  Extend a License 
 
 
Info 
You only need instructions in this chapter in case your company maintains its own li-
  cense server for Vector products. 
 
 
3.1 
Extend a License against Local License Server 
To extend a license against a local license server, open the License Manager  and follow 
the instructions. 
Step 1 Right click on a license you want to extend. Select Extend from the context menu. 
 
Figure 3-1 
Select Extend a license  
 
 
 
 
2011, Vector Informatik GmbH 
Version: 2.0 
12 / 22 
based on template version 4.5 





 Vector Product Activation  
 
Step 2 Enter the new Expiration date of the license. The new Expiration date must not be 
earlier than the initial Expiration date. Press OK. Once the license has been correctly ex-
tended on your PC, you’ll see a respective message. You’re done. 
 
Figure 3-2 
Enter the new Expiration date 
 
 
Info 
The Expiration date, which can be entered, depends on the actual license model of 
  your Vector software. If the entered date should not be possible, there will be a 
message box advising what range can be used with your license/Activation ID. 
 
 
2011, Vector Informatik GmbH 
Version: 2.0 
13 / 22 
based on template version 4.5 





 Vector Product Activation  
 
4  Return a License 
4.1 
Return a License to Vector Activation Server 
4.1.1 
Return a License via Internet 
To return a license via Internet to the Vector activation server, open the License Manager 
and follow the instructions. 
Step 1 Right click on a license you want to return. Select Return from the context menu. 
 
Figure 4-1 
Select Return a license 
Step 2 For Request method, we recommend using by Internet connection if you have 
Internet access (should you trust Vector software to connect to the Internet? See chapter 3 
Extend a License). 
Confirm with OK. Once the license has been successfully transferred back to the server, 
you’ll see a respective message. You’re done. 
 
 
 
Info 
In case a HTTP proxy is present in your network that requires a password and/or a log-
  in you will be prompted for that data. 
 
 
 
4.1.2 
Return a License via E-mail 
To return a license via e-mail, open the License Manager and follow the instructions. (only 
recommended if returning via Internet doesn't work). 
Step 1 Click on a license you want to return. Select Return from the context menu. 
2011, Vector Informatik GmbH 
Version: 2.0 
14 / 22 
based on template version 4.5 





 Vector Product Activation  
 
Step 2 For Request method, select Send request by e-mail. Continue and save the re-
quest as a file to any location on your hard disk. This file is the only proof of returning the 
license. Please keep this file carefully. 
Step 3 A new e-mail with the saved file as attachment is automatically opened. If this fails, 
attach the file manually to a new e-mail. 
Step  4  Send this e-mail to Vector (activation@vector-worldwide.com). No special subject 
or formatting of your e-mail is required. 
Step 5 If you then received a confirmation via e-mail from Vector, you can install and acti-
vate the Vector product on your new PC. 
4.2 
Return a License to a Local License Server 
 
 
Info 
You only need instructions in this chapter in case your company maintains its own 
  license server for Vector products. 
 
 
To return a license to a local license server, open the License Manager and follow these 
instructions: 
Step 1 Click on a license you want to return. Select Return from the context menu. 
Step  2  Enter the return ID and the server URL. The return token has the format R-
xxxxxxxxxxxxx-xxxxxxxxxxxxx with the first part equal to the activation ID. The server URL 
can be obtained from the drop down box. 
 
Figure 4-2 
Return license… 
Step 3 Ensure that you typed in the Return ID correctly. Press OK. Once the license has 
been successfully transferred back to the server, you’ll see a respective message. You’re 
done. 
2011, Vector Informatik GmbH 
Version: 2.0 
15 / 22 
based on template version 4.5 




 Vector Product Activation  
 
5  Repair Licenses 
It’s possible for several reasons that licenses are broken, i.e. invalid licenses. In this case 
all licenses for one type of server (Vector activation server or local license server) can be 
repaired at once. 
5.1 
Repair Licenses against Vector Activation Server 
The License Manger displays licenses which are broken with a warning sign. Licenses get 
into the status “broken” when e.g. the hard disk is broken and the Trusted Storage has to 
be restored from a backup. 
 
Figure 5-1 
License for repair 
To repair all licenses activated from the Vector activation server via Internet, open the Li-
cense Manager and follow the instructions. 
Step 1: Select License Keys / Repair Licenses / Vector Activation Server in the main 
menu of the License Manager. 
2011, Vector Informatik GmbH 
Version: 2.0 
16 / 22 
based on template version 4.5 





 Vector Product Activation  
 
 
Figure 5-2 
Select Repair licenses via Vector Activation Server 
Step 2 For Request method, we recommend using by Internet connection if you have 
Internet access (should you trust Vector software to connect to the Internet? See chapter 3 
Extend a License)
 
Figure 5-3 
Select request mode 
 
Confirm with OK. The license has been successfully repaired; you’ll see a respective mes-
sage. You’re done. 
5.1.1 
Repair a License via E-mail 
To repair all licenses of the Vector activation server via e-mail (only recommended if repair-
ing via Internet doesn't work), open the License Manager and follow the instructions: 
2011, Vector Informatik GmbH 
Version: 2.0 
17 / 22 
based on template version 4.5 




 Vector Product Activation  
 
Step 1 Select  License Keys  /  Repair Licenses / Vector Activation Server  in  the entry 
screen of the License Manager. 
Step 2 For request method select send request by e-mail. 
Step 3 Save the request as a file to any location on your hard disk using Save as…. 
 
Figure 5-4 
Save and send request 
Step 4 Press Open e-mail… to automatically open a new e-mail with the saved file as at-
tachment. If this fails, attach the file manually to a new e-mail. 
Step  5  Send this e-mail to Vector (activation@vector-worldwide.com). No special subject 
or formatting of your e-mail is required. 
Step 6 Press OK to close the dialog. 
Step 7 If you then received a certificate via e-mail from Vector, save the certificate from the 
e-mail as a file to any location on your hard disk. Then open the License Manager again.  
Step 8 Select License Keys / Continue e-mail transaction
2011, Vector Informatik GmbH 
Version: 2.0 
18 / 22 
based on template version 4.5 





 Vector Product Activation  
 
 
Figure 5-5 
Continue e-mail transaction 
Step 9 In the “Loading the certificate” dialog, press button Load certificate… and select 
the certificate file stored on your hard disk (in step 9). Continue. Once the licenses have 
been successfully repaired, you’ll see a respective message. You’re done. 
 
Figure 5-6 
Load certificate 
2011, Vector Informatik GmbH 
Version: 2.0 
19 / 22 
based on template version 4.5 





 Vector Product Activation  
 
5.2 Repair a License against a Local License Server 
To repair all licenses activated from a local license server, open the License Manager and 
follow the instructions. 
Step 1 Select License Keys / Repair Licenses / Local License Server in the main menu 
of the License Manager. 
 
Figure 5-7 
Repair licenses against local server 
Step 2  Enter local server name  and press OK  …  (see remarks at step 3/chapter  2.2 for 
server URL format). Once the licenses have been successfully repaired, you’ll see a re-
spective message. You’re done. 
 
Figure 5-8 
Repair licenses 
2011, Vector Informatik GmbH 
Version: 2.0 
20 / 22 
based on template version 4.5 








 Vector Product Activation  
 
6  FAQs and Background Information 
 
 
FAQ 
What options do I have if activation via Internet fails?
 
  Check your proxy settings and retry activation via Internet. If it continues to fail, use 
activation via e-mail. 
 
 
 
 
 
FAQ 
What options do I have if activation via e-mail fails? 

  Maybe you want to try direct activation via Internet – it is more convenient (see above). 
Otherwise please contact Vector (activation@vector-worldwide.com) with a detailed 
description of your actions and what happened. 
 
 
 
 
 
FAQ 
Should I trust Vector software to directly connect to the Internet? 

  Yes. In the product activation process, only data relevant to the installation are 
transferred. Vector uses the acquired data exclusively for product activation. Vector 
uses a wide-spread third-party product for implementing product activation, Acresso 
FLEXnet (former Macrovision FLEXlm). 
 
 
 
 
 
FAQ 
My hard-disk crashed. How do I get a license for my new PC? 

  Please contact Vector (activation@vector-worldwide.com). 
 
 
 
 
 
FAQ 
I get a new PC. How do I move my license from the old to the new PC?
 
  In Please contact Vector (activation@vector-worldwide.com). 
 
 
 
 
2011, Vector Informatik GmbH 
Version: 2.0 
21 / 22 
based on template version 4.5 



 Vector Product Activation  
 
7  Contact 
Visit our website for more information on 
 
>  News 
>  Products 
>  Demo software 
>  Support 
>  Training data 
>  Addresses 
 
www.vector.com 
2011, Vector Informatik GmbH 
Version: 2.0 
22 / 22 
based on template version 4.5 

Document Outline


3.15 - TechnicalReference_AutoConnect

Auto-Connect Port Prototypes

3.17 - TechnicalReference_AutoConnects

 
 
 
 
 
 
 
 
 
 
 
 
Auto-Connect Port Prototypes 
Technical Reference 
 
  
Version 1.0 
 
 
 
 
 
 
 
 
 
 
Authors 
Pavol Gramblicka 
Status 
Released 
 
 
 
 
 
 

Technical Reference Auto-Connect Port Prototypes 
Document Information 
History 
Author 
Date 
Version 
Remarks 
Pavol Gramblicka 
2015-04-28 
0.1.0 
Initial version 
Pavol Gramblicka 
2015-04-28 
1.0.0 
Final version 
 
2015, Vector Informatik GmbH 
Version: 1.0 
2 / 13 
based on template version 5.2.0 

Technical Reference Auto-Connect Port Prototypes 
Contents 
1 
Overview ....................................................................................................................... 5 
1.1 

Intended Audience ............................................................................................. 5 
1.2 
Terms and Acronyms ......................................................................................... 5 
2 
Input Port Prototypes ................................................................................................... 6 
3 
Auto-Connect ................................................................................................................ 7 
3.1 

Auto-Connect – simple pattern ........................................................................... 7 
3.2 
Auto-Connect – enhanced patterns .................................................................... 9 
3.2.1 

Prefix, Postfix ..................................................................................... 9 
3.2.2 
Complex patterns using the component prototype name .................. 10 
4 
Contact ........................................................................................................................ 13 
 
2015, Vector Informatik GmbH 
Version: 1.0 
3 / 13 
based on template version 5.2.0 

Technical Reference Auto-Connect Port Prototypes 
Illustrations 
Figure 2-1 
Start the contextless auto-connecting ......................................................... 6 
Figure 2-2 
Start the context dependent auto-connecting .............................................. 6 
Figure 3-1 
Simple auto-connect scenario ..................................................................... 7 
Figure 3-2 
List of proposed connections ...................................................................... 8 
Figure 3-3 
Context dependent auto-connecting of a prefixed port prototype ................ 9 
Figure 3-4 
Context dependent auto-connecting with a prefixed naming  pattern ........ 10 
Figure 3-5 
Context dependent auto-connecting of a port prototype without the 
component restriction ............................................................................... 11 

Figure 3-6 
Context dependent auto-connecting of port prototypes with the 
component restriction ............................................................................... 12 

 
Tables 
Table 1-1  
Terms and Acronyms .................................................................................. 5 
 
2015, Vector Informatik GmbH 
Version: 1.0 
4 / 13 
based on template version 5.2.0 

Technical Reference Auto-Connect Port Prototypes 
1  Overview 
DaVinci Developer is part of Vector’s solution for AUTOSAR compatible software design. It 
is  used  to  design  and  configure  software  components  and  provides  various  concepts  to 
support this process. 
This document describes a part of the design process related to DaVinci Developer from a 
technical  point  of  view,  trying  to  give  the  user  a  better  understanding  of  the  internal 
processes and how the tool reacts in different situations. 
1.1 
 Intended Audience 
This document aims at developers who are involved in the AUTOSAR design process and 
use DaVinci Developer to integrate various software components. 
1.2 
Terms and Acronyms 
Term 
Definition 
DEV 
DaVinci Developer 
Table 1-1   Terms and Acronyms 
2015, Vector Informatik GmbH 
Version: 1.0 
5 / 13 
based on template version 5.2.0 



Technical Reference Auto-Connect Port Prototypes 
2  Input Port Prototypes 
The  auto-connect  functionality  may  be  started  contextless  from  the  Software  Design 
toolbar (Figure 2-1) or from the context menu of the graphic view (Figure 2-2). 
 
Figure 2-1  Start the contextless auto-connecting 
 
Figure 2-2  Start the context dependent auto-connecting 
1.  In case of the contextless connecting, all port prototypes of the parent composition are 
considered. 
2.  In case of the context dependent connecting, the connections are created according to 
the provided selection. 
>  no selection – all port prototypes within the composition are considered 
>  a component is selected – all port prototypes of the component are considered 
>  single port prototype selection – only these port prototypes are considered to 
be the source resp. destination of a proposed connector prototype 
2015, Vector Informatik GmbH 
Version: 1.0 
6 / 13 
based on template version 5.2.0 


Technical Reference Auto-Connect Port Prototypes 
3  Auto-Connect 
3.1 
Auto-Connect – simple pattern 
 
Figure 3-1  Simple auto-connect scenario   
 
Imagine  we  want  to  use  the  context  dependent  auto-connect  for  the  port  prototype 
Counter of the component SWC1. 
1.  Select the port prototype 
2.  Right mouse-click on port prototype to open the context menu 
3.  Choose Complete Connectors 
2015, Vector Informatik GmbH 
Version: 1.0 
7 / 13 
based on template version 5.2.0 


Technical Reference Auto-Connect Port Prototypes 
 
Figure 3-2  List of proposed connections 
The algorithm is looking for counterparts for the selected port prototype SWC1.Counter 
>  in the first step, the naming pattern is analyzed to provide a key string 
>  simple pattern without prefix resp. postfix is used i.e. only the name of the port 
prototype is essential for the search algorithm, key string = Counter 
>  for all connectable port prototypesi, if the key string is a substring of the name of a 
connectable port prototype a connection will be proposed 
>  a line in the dialog then corresponds to the proposed connection 
>  additionally the algorithm can be refined with Connect Options 
>  Match case – consider case sensitive matching 
>  Match whole word – consider exact matching 
>  Allow split – in case of a P-Port more than one connection is allowed 
>  Allow merge – in case of an R-Port more than one connection is allowed 
>  Allow incompatible – consider AUTOSAR compatibility rules 
>  If you refined the options, press Apply to take the changes into account 
>  to get more information about proposed connection press right mouse button to open 
the context menu 
>  with Show P-Port resp. Show Connected menu buttons the port prototypes might 
be located in the software design 
>  with Add and Remove menu buttons the proposed list might be edited 
>  with the rest menu buttons the property dialogs might be open 
2015, Vector Informatik GmbH 
Version: 1.0 
8 / 13 
based on template version 5.2.0 


Technical Reference Auto-Connect Port Prototypes 
3.2 
Auto-Connect – enhanced patterns 
In a more complicated case, the naming pattern of the selected port prototype has to be 
identified. 
3.2.1 
Prefix, Postfix 
Consider  the  designer  uses  always  a  prefix  or  a  postfix  for  his  port  prototypes,  e.g. 
SWC1::PPCounter. In this case, the algorithm cannot find any connectable port prototype 
which includes the substring PPCounter in his name. 
 
Figure 3-3  Context dependent auto-connecting of a prefixed port prototype 
The  user must  explicitly  determinate the  prefix  part. When  computing  the  key  string,  the 
prefix part will be removed and the algorithm is running like in the simple case. 
2015, Vector Informatik GmbH 
Version: 1.0 
9 / 13 
based on template version 5.2.0 


Technical Reference Auto-Connect Port Prototypes 
 
Figure 3-4  Context dependent auto-connecting with a prefixed naming  pattern 
3.2.2 
Complex patterns using the component prototype name 
In a very special case, the destination component may be identified by the naming pattern. 
This  scenario  is  applicable  if  there  are  components  which  have  port  prototypes  of  the 
same  or  similar  naming  but  the  proposed  set  should  be  restricted  to  a  dedicated 
component.  Suppose  we  want  to  restrict  the  proposal  to  component  SWC2.  The  Figure 
3-5 
displays such a scenario where connections to SWC2 and SWC3 will be proposed. In 
our  example,  we  can  simply  remove  the  connection  to  SWC3  but  in  general  it  might  be 
difficult to identify such relations. 
 
2015, Vector Informatik GmbH 
Version: 1.0 
10 / 13 
based on template version 5.2.0 


Technical Reference Auto-Connect Port Prototypes 
 
Figure 3-5  Context dependent auto-connecting of a port prototype without the component restriction 
To  be  sure  the  port  prototype  of  the  desired  component  will  be  proposed,  the  restriction 
must be coded in the name of the selected port prototyped. The naming pattern looks like 
this <COMPONENT_PROTOTYPE>_<PORT_PROTOTYPE>. The algorithm will parse the 
port  prototype  name  and  try  to  identify  corresponding  parts.  Additionally  to  the  current 
concept, the name of the component will be matching. 
2015, Vector Informatik GmbH 
Version: 1.0 
11 / 13 
based on template version 5.2.0 


Technical Reference Auto-Connect Port Prototypes 
 
Figure 3-6  Context dependent auto-connecting of port prototypes with the component restriction 
 
2015, Vector Informatik GmbH 
Version: 1.0 
12 / 13 
based on template version 5.2.0 

Technical Reference Auto-Connect Port Prototypes 
4  Contact 
Visit our website for more information on 
 
>  News 
>  Products 
>  Demo software 
>  Support 
>  Training data 
>  Addresses 
 
www.vector.com 
                                            
iA connectable port prototype is such a port prototype which allow for creation of a meaningful connector 
prototypes. In case of an assembly connector, if P-Port is selected only an R-Port or PR-Ports are 
meaningful and vice versa. In case of a delegation connector prototypes, if P-Port is selected only a P-Port 
or PR-Port are meaningful and similar if an R-Port is selected only an R-Port or PR-Port are meaningful. 
2015, Vector Informatik GmbH 
Version: 1.0 
13 / 13 
based on template version 5.2.0 

Document Outline


3.18 - TechnicalReference_DataTypes_AR4

Autosar 4.0 - DataTypes

3.20 - TechnicalReference_DataTypes_AR4s

Technical Reference Autosar 4.0 - DataTypes 
 
 
 
 
 
 
 
 
 
 
 
Autosar 4.0 - DataTypes 
Technical Reference 
 
 
Version 1.1 
 
 
 
 
 
 
 
 
 
 
Authors 
Thomas Bruni 
Status 
Released 
 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
1 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
Document Information 
History 
Author 
Date 
Version 
Remarks 
Thomas Bruni 
11.11.2013 
0.1 
Document creation 
Thomas Bruni 
14.01.2014 
0.2 
Changes: 
3.4 Platform types 
 
Thomas Bruni 
27.01.2014 
0.3 
Corrections  in  3.4  Platform 
types 
Thomas Bruni 
29.01.2014 
0.4 
Creation  of  2  new  chapters: 
3.4 Data type mapping 
5.4  Data  type  mapping 
assistant 
5.5 Type emitter 
Thomas Bruni 
21.02.2014 
1.0 
Release version 
Thomas Bruni 
14.03.2014 
1.1 
Changes 
for 
Mode 
Declaration  Group  mapping: 
chapters 3.4 and 4.4. 
Reference Documents 
No. 
Source 
Title 
Version 
[1]   
AUTOSAR  AUTOSAR_TPS_SoftwareComponentTemplate 
4.2.0 
[2]   
AUTOSAR  AUTOSAR_SWS_PlatformTypes 
2.5.0 
 
2014, Vector Informatik GmbH 
Version: 1.1 
2 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
Contents 
1  Introduction .................................................................................................................... 6 
2  Data Types and Data Prototypes ................................................................................... 7 
3  Design of data prototypes in DaVinci tool chain .......................................................... 8 
3.1  Data prototypes ........................................................................................................ 8 
3.2  Application data types ............................................................................................ 10 
3.3  Implementation data types ..................................................................................... 11 
3.4  Data type mapping ................................................................................................. 14 
3.5  Platform types ........................................................................................................ 15 
3.5.1 
Definitions ..................................................................................................... 15 
3.5.1.1 
Autosar Standard Types ......................................................................... 15 
3.5.1.2 
Platform Types ....................................................................................... 15 
3.5.1.3 
Valid C expression .................................................................................. 15 
3.5.2 
Practice ......................................................................................................... 16 
3.5.2.1 
Abstraction of SW from platform ............................................................. 16 
3.5.2.2 
Dependency between SW and platform ................................................. 17 
3.5.2.3 
Platform types and Vector DaVinci Tool suite .......................................... 18 
3.6  Generation ............................................................................................................. 22 
4  Design examples .......................................................................................................... 23 
4.1  Primitive data element ............................................................................................ 23 
4.2  Complex data element ........................................................................................... 36 
4.3  Enumeration ........................................................................................................... 48 
4.3.1 
Application level ............................................................................................ 48 
4.3.2 
Implementation level ..................................................................................... 52 
4.4  Mode declaration .................................................................................................... 55 
4.4.1 
Mode declaration group in DaVinci Developer ............................................... 55 
4.4.2 
Mode service port in BswM configuration ...................................................... 59 
4.4.3 
Mode request port and mapping .................................................................... 62 
4.5  Implementation data type examples ....................................................................... 66 
4.5.1 
Type reference .............................................................................................. 66 
4.5.2 
Value ............................................................................................................. 67 
5  Additional information ................................................................................................. 69 
5.1  Compatibility and conversion .................................................................................. 69 
5.2  Measurement and calibration ................................................................................. 70 
5.3  Symbols ................................................................................................................. 72 
5.4  Data type mapping assistant .................................................................................. 73 
2014, Vector Informatik GmbH 
Version: 1.1 
3 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
5.5  Type emitter ........................................................................................................... 78 
6  Glossary and Abbreviations ........................................................................................ 79 
6.1  Glossary ................................................................................................................. 79 
6.2  Abbreviations ......................................................................................................... 79 

7  Contact.......................................................................................................................... 80 
 
Illustrations 
Figure 3-1 
S/R port interface element .......................................................................... 9 
Figure 3-2 
S/R port interface element init value ........................................................... 9 
Figure 3-3 
DaVinci Developer – workspace library ..................................................... 10 
Figure 3-4 
Application data type categories ............................................................... 10 
Figure 3-5 
Application data type Value property dialog .............................................. 11 
Figure 3-6 
Implementation data type categories ........................................................ 12 
Figure 3-7 
Implementation data type Value property dialog ....................................... 13 
Figure 3-8 
2 ways of modelling platform independent implementation data types ...... 17 
Figure 3-9 
Modelling a platform specific implementation data type ............................ 18 
Figure 3-10 
Platform Types in DaVinci Developer ........................................................ 19 
Figure 3-11 
Implementation data type referencing a platform type ............................... 19 
Figure 3-12 
Native declaration: Autosar Standard Type ............................................... 20 
Figure 3-13 
Native declaration: valid C expression ...................................................... 21 
Figure 4-1 
New Value application data type ............................................................... 24 
Figure 4-2 
My_TemperatureType ............................................................................... 25 
Figure 4-3 
My_TemperatureType_CompuMethod ...................................................... 25 
Figure 4-4 
Celsius unit ............................................................................................... 26 
Figure 4-5 
Physical to Internal linear scale ................................................................ 26 
Figure 4-6 
Physical constraint .................................................................................... 27 
Figure 4-7 
Type mapping set creation ........................................................................ 28 
Figure 4-8 
Type mapping set naming ......................................................................... 28 
Figure 4-9 
Add a data type mapping to a type mapping set ....................................... 29 
Figure 4-10 
My_TemperatureInterface ......................................................................... 30 
Figure 4-11 
My_TemperatureElement .......................................................................... 30 
Figure 4-12 
SWC_Sender modeling ............................................................................ 31 
Figure 4-13 
SWC_Receiver modeling .......................................................................... 32 
Figure 4-14 
Connection of My_TemperatureInterface ports ......................................... 33 
Figure 4-15 
Missing data type mapping error message ............................................... 33 
Figure 4-16 
Reference a type mapping set in a SWC .................................................. 34 
Figure 4-17 
My_SpeedType settings ........................................................................... 36 
Figure 4-18 
New Record application data type ............................................................ 37 
Figure 4-19 
Record type creation with 2 record elements ............................................ 38 
Figure 4-20 
New Record implementation data type ..................................................... 39 
Figure 4-21 
Set a record implementation data type...................................................... 40 
Figure 4-22 
Record type mapping ................................................................................ 41 
Figure 4-23 
Sender/receiver port interface with record element ................................... 42 
Figure 4-24 
Record manual init – part 1 ....................................................................... 43 
Figure 4-25 
Record manual init – part 2 ....................................................................... 44 
Figure 4-26 
Record constant creation .......................................................................... 45 
Figure 4-27 
Referencing a record constant as init value .............................................. 46 
Figure 4-28 
My_RecordInterface port connection ........................................................ 46 
2014, Vector Informatik GmbH 
Version: 1.1 
4 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
Figure 4-29 
My_Enumeration type ............................................................................... 48 
Figure 4-30 
My_EnumerationType_CompuMethod ...................................................... 49 
Figure 4-31 
Enumeration text table setting .................................................................. 49 
Figure 4-32 
Enumeration constraint ............................................................................. 50 
Figure 4-33 
My_Enumeration mapping to uint8 ........................................................... 50 
Figure 4-34 
“My_EnumerationInterface” ...................................................................... 50 
Figure 4-35 
My_EnumerationImplType ........................................................................ 52 
Figure 4-36 
My_EnumerationImplType_CompuMethod ............................................... 52 
Figure 4-37 
My_EnumerationImplType_CompuMethod text table ................................ 53 
Figure 4-38 
My_EnumerationImplInterface .................................................................. 53 
Figure 4-39 
New mode declaration group .................................................................... 55 
Figure 4-40 
My_ModeDeclarationGroup ...................................................................... 56 
Figure 4-41  
My ModePortInterface .............................................................................. 56 
Figure 4-42 
Mode ports connection ............................................................................. 57 
Figure 4-43 
Mode port access ..................................................................................... 57 
Figure 4-44 
BswM configuration .................................................................................. 59 
Figure 4-45 
BswM import in DaVinci Developer ........................................................... 59 
Figure 4-46 
Mode declaration group import in DaVinci Developer ............................... 60 
Figure 4-47 
ComM mode declaration group ................................................................. 60 
Figure 4-48 
My_ModeDeclarationGroup ...................................................................... 62 
Figure 4-49 
My_ModeDeclarationGroup_IType ........................................................... 63 
Figure 4-50 
Mode declaration group mapping.............................................................. 63 
Figure 4-51 
My_ModeRequestInterface ....................................................................... 64 
Figure 4-52 
My_ModeRequestPort .............................................................................. 64 
Figure 4-53 
Type mapping set reference for mode request .......................................... 64 
Figure 4-54 
New type reference................................................................................... 66 
Figure 4-55 
Value implementation data type ................................................................ 67 
Figure 4-56 
My_ImplValue_base base type ................................................................. 68 
Figure 4-57 
Implementation type constraint ................................................................. 68 
Figure 5-1 
Info Message #40286 ............................................................................... 69 
Figure 5-2 
Rte configuration for A2L generation ......................................................... 70 
Figure 5-3 
A2L generation folder................................................................................ 70 
Figure 5-4 
Symbol field for implementation data type ................................................ 72 
Figure 5-5 
Data type mapping assistant opening ....................................................... 73 
Figure 5-6 
Data type mapping assistant ..................................................................... 73 
Figure 5-7 
New mapping............................................................................................ 75 
Figure 5-8 
Existing mapping ...................................................................................... 75 
Figure 5-9 
Created after new mapping ....................................................................... 76 
Figure 5-10 
New mapping with implementation data type creation .............................. 76 
Figure 5-11 
Existing mapping with implementation data type creation ......................... 77 
Figure 5-12 
Created after new mapping with implementation data type creation ......... 77 
 
2014, Vector Informatik GmbH 
Version: 1.1 
5 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
1  Introduction 
This technical reference aims at presenting Data Type modeling with Vector DaVinci tool 
chain in Autosar 4.0.3 context. 
   
2014, Vector Informatik GmbH 
Version: 1.1 
6 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
2  Data Types and Data Prototypes 
Embedded  software  uses  data  elements,  which  are  entities  containing  information 
computed by algorithms, carried between application blocks, used as reference value, etc. 
Data  elements  are  designed  according  to  the  information  they  need  to  represent.  The 
structure definition of a data element is called data type. 
In Autosar  specification (see  [1])  data elements  are  called data prototypes because they 
are  the  prototype  or  the  instance  of  a  certain  data  type  that  they  reference.  Data 
prototypes  can  be  variable  elements  of  a  sender/receiver  port  interface,  operation 
arguments  of  a  client/server  interface,  modes  of  a  mode  switch  interface,  calibration 
parameters, per instance memory parameters, inter-runnable variables, etc. 
Data  prototypes  may  have  different  levels  of  representation.  They  may  have  a  physical 
meaning,  like  speed  information,  or  temperature  information.  They  also  must  have  an 
internal meaning which is used at code level, like 8 bit integer, or Boolean. 
In  order  to  carry  these  different  levels  of  representation Autosar defines  application  data 
types  and  implementation  data  types.  Application  data  types  define  data  structure 
corresponding to the physical world. Implementation data types define data structure used 
in embedded code. 
For  a  data  prototype  the  application  data  type  level  is  optional,  whereas  the 
implementation  data  type  level  is  mandatory.  Autosar  allows  2  ways  of  modeling  data 
prototypes: 
 
  With a reference to an application data type: 
In  case  a  data  prototype  has  a  physical  meaning,  it  shall  reference  an  application  data 
type. In that case, in order to also define the structure of the data prototype at code level, 
the  application  data  type  must  be  mapped  to  an  implementation  data  type  in  a  type 
mapping set. 
 
  With a reference to an implementation data type: 
If a data prototype does not have any physical meaning, it is possible to reference directly 
an implementation data type. 
 
 
 
Note 
During  the  design  phase  of  a  project,  the  architect  models  the  data  prototypes  and 
  maps them to data types. According to Autosar philosophy it is recommended to use as 
much  application  data  types  as  possible  and  to  reuse  implementation  data  types  in 
data  type  mapping.  It  allows  staying  at  application  level  during  design  and  avoids 
creating too many implementation data types in the code.  
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
7 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
3  Design of data prototypes in DaVinci tool chain 
Design is realized in  DaVinci Developer.  In the following  chapters,  figures and examples 
are presented from DaVinci Developer version 3.5.19 (SP1) and MICROSAR RTE 4.01.01. 
 
3.1 
Data prototypes 
 
Data  prototypes  take  several  different  forms  in  an  Autosar  ECU  project.  It  can  be  an 
element of a sender/receiver interface, an argument of a client/server interface operation, 
an  inter-runnable  variable,  a  per-instance-memory  variable,  a  calibration  parameter…  In 
general  a  data  prototype  contains  the  following  attributes  (see  Figure  3-1  with  S/R 
interface element example): 
 
-  Reference to an application data type or implementation data type: 
This reference defines the type of the data element. 
In  case  an  application  data  type  is  chosen,  this  application  data  type  must  be 
mapped  to  an  implementation  data  type  in  a  type  mapping  set. This  mapping  set 
must be referenced by the application SWCs, which are using the data element. 
In  case  an  implementation  data  type  is  chosen,  no  mapping  is  necessary.  The 
implementation data type will be used in the code as type of the data element. 
 
-  Measurement and calibration access: 
In  case  the  data  element  is  intended  to  be  accessed  via  measurement  and 
calibration, the access type (ReadOnly or ReadWrite) shall be set here. 
If no access is necessary, NotAccessible shall be set. 
 
-  Init value (not for per-instance-memory and not for operation arguments): 
The init value field defines the initial value that the data element will take at startup 
of the software execution. 
 
 
 
Note 
The init value of a sender/receiver interface element is defined in the Com spec of each 
  port prototype referencing the interface (see Figure 3-2)
 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
8 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
-  Invalid value handling (for sender/receiver interface elements): 
It is possible to specify how invalid value shall be handled: 
o  None: no specific handling is defined 
o  Keep:  an  invalidate  function  is  provided  by  the  Rte  to  the  SWCs  that  are 
sending the data element. The SWCs can report that the value is invalid by 
calling this function. The invalid value is kept, and a flag is set to inform the 
receivers that the value is invalid. 
o  Replace: an invalidate function is provided by the Rte to the SWCs that are 
sending the data element. The SWCs can report that the value is invalid by 
calling this function. The invalid value is replaced by the init value.   
 
-  Data constraints (for server/receiver interface elements): 
o  It is possible to define data constraints at data element level. 
 
 
Figure 3-1  S/R port interface element 
 
 
Figure 3-2  S/R port interface element init value 
2014, Vector Informatik GmbH 
Version: 1.1 
9 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
3.2 
Application data types 
 
In DaVinci Developer tool, it is possible to create application data types in the “Data Types” 
library under “Application Data Types” (see Figure 3-3). 
 
 
Figure 3-3  DaVinci Developer – workspace library 
It is possible to choose the application data type category among  Boolean, Value, String, 
Array and Record (see Figure 3-4)
 
Figure 3-4  Application data type categories 
An  application  data  type  contains  several  attributes  (see  Figure  3-5  a  Value  category 
example): 
 
-  Compu Method:  
The  computation  method  defines  the  conversion  from  internal  representation  to 
physical representation, in other words from code perspective to physical meaning.  
It  is  possible  to  define  linear,  scale-linear,  text  table,  scale-linear  &  text  table 
conversions from internal to physical and/or from physical to internal. 
 
-  Unit: 
The unit instance defines the physical unit.  
2014, Vector Informatik GmbH 
Version: 1.1 
10 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
 
Note 
If  a  Compu  Method  is  provided,  it  is  recommended  to  set  the  unit  in  the  Compu 
  Method.  If  no  Compu  Method  is  provided,  the  unit  can  be  entered  directly  in  the 
application data type property dialog. 
 
 
-  Constraint: 
With a constraint instance it is possible to define the internal and/or physical valid 
range of data values.  
 
-  Invalid value: 
An invalid value may be defined. It however has no impact on the code. It is only set 
as information in DaVinci Developer. To invalidate a data element value, the sender 
SWC must call the invalidate function provided by the Rte. 
 
 
Figure 3-5  Application data type Value property dialog 
More details and examples are presented in chapter 4. 
 
3.3 
Implementation data types 
 
In DaVinci Developer tool  it is possible to create implementation data types in  the “Data 
Types” library under “Implementation Data Types” (see Figure 3-3). 
 
It  is  possible  to  choose  the  implementation  data  type  category  among  Value,  Type 
Reference, Data Reference, Array and Record (see Figure 3-6). 
2014, Vector Informatik GmbH 
Version: 1.1 
11 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 3-6  Implementation data type categories 
An  implementation  data  type  contains  several  attributes  (see  Figure  3-7  with  a  Value 
category example): 
 
-  Base type reference: 
o  This  reference  must  be  provided  in  implementation  data  types  of  category 
Value in order to define the corresponding base type. 
o  Base types may be created manually in the “Data Types” library under “Base 
Types”.  
o  It  is  also  possible  to  link  the  implementation  data  type  to  an  existing 
implementation data type (e.g. to a platform type) by choosing the category 
Type Reference.  
 
 
 
 
Note 
In  case  a  new  implementation  data  type  is  based  on  a  type  that  does  not  exist,  the 
  designer may need to create a new base type.  
If an existing type corresponds to the need of the designer, it is recommended to create 
a Type  Reference  and  reference  an  existing  type.  In  particular  it  is  recommended  to 
reference the platform types (see chapter 3.5)
 
 
 
-  Compu method: 
It is possible to define a computation method in the implementation data type.  
 
 
Note 
As  defined  by  Autosar  the  compu  method  of  an  implementation  data  type  is  not 
  intended to provide any physical meaning (this is the role of application data type). For 
an  implementation  data  type,  only  TextTable  conversion  is  allowed  which  generates 
enumeration strings in the code that are used instead of the numerical value.  
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
12 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
-  Constraint: 
It is possible to define constraints at implementation level. 
 
 
 
Note 
A  constraint  at  implementation  level  will  be  used generally  to  define  the  valid internal 
  range. 
 
 
 
 
Figure 3-7  Implementation data type Value property dialog 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
13 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
3.4 
Data type mapping 
 
As  previously  written,  application  data  types  must  be  mapped  to  implementation  data 
types.  For  this  purpose  data  type  mapping  sets  containing  data  type  mappings  must  be 
created. Data type mappings contain two references, one to the application data type and 
one to the implementation data type. 
 
In  order  to  let  the  Rte  generator  access  the  right  data  type  mapping  for  each  data 
prototype needing a data type mapping, data type mapping sets must be referenced by the 
SWCs using the corresponding data prototypes. 
 
Mode  declaration  groups  may  also  be  mapped  to  implementation  data  types  in 
ModeRequestTypeMap  contained  also  in  data  type  mapping  sets.  The  purpose  of  this 
mapping is not the representation of the mode declaration group in the code because the 
type used in the code for mode declaration groups is generated automatically by the Rte 
generator  according  to  the  number  of  mode  declarations:  uint8  for  1  to  256  mode 
declarations, uint16 for 257 till  65536 mode declarations, and so on...  
The purpose of  a  ModeRequestTypeMap  is  to be able  to create mode request  ports. As 
specified  by Autosar  a  component  that  requests  mode  changes  to  a  mode  master  shall 
implement a sender/receiver P-Port on which the requests will be sent. The corresponding 
port interface’s data element shall be typed by an implementation data type referencing a 
compu  method  containing  an  enumeration  of  the  corresponding  modes.  That 
implementation data type shall be mapped to the corresponding mode declaration group.   
 
Examples are presented in chapter 4. 
 
2014, Vector Informatik GmbH 
Version: 1.1 
14 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
3.5 
Platform types 
 
3.5.1 
Definitions 
 
3.5.1.1 
Autosar Standard Types 
 
Autosar Standard Types are the following symbols used in C code: 
   
>  uint8 
>  uint16 
>  uint32 
>  sint8 
>  sint16 
>  sint32 
>  boolean 
>  float 
>  float32 
 
3.5.1.2 
Platform Types 
 
Platform  types  are  implementation  data  types  which  have  an Autosar  Standard  Type  as 
name. 
Platform types, as subset of implementation data types, are part of the model. 
 
3.5.1.3 
Valid C expression 
 
A valid C expression is a C type optionally combined to a C size qualifier and/or a C sign 
qualifier. 
 
>  C types are: char, int, float, double, void 
>  C size qualifiers are: short, long 
>  C sign qualifiers are: signed, unsigned 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
15 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
3.5.2 
Practice 
 
Implementation data types need to be generated in C code and represented at CPU level. 
For this purpose 2 ways can be followed: 
 
  With abstraction of SW from platform 
  With dependency between SW and platform 
 
3.5.2.1 
Abstraction of SW from platform 
 
This  way  of  representing  implementation  data  types  at  CPU  level  is  advised,  because  it 
follows the Autosar philosophy of independency between SW and platform. 
 
It consists in linking implementation data types to Platform Types, which are represented 
by Autosar Standard Types in C code. 
 
Each implementation data type shall finally be linked to Platform Types. This may be done 
in 2 ways: 
 
  The  implementation  data  type’s  name  is  an Autosar  Standard Type.  In  this  case  the 
implementation data type is implicitly the corresponding Platform Type. 
  The implementation data type references a Platform Type. The implementation data is 
in  this  case  of  category  “Type  Reference”  and  references  directly  an  implementation 
data type which is a Platform Type or which is referencing a Platform Type itself. 
Such a reference will generate a “typedef” where the implementation data type will be 
defined by the Autosar Standard Type. 
 
 
Example 
Implementation data type name: MyImplementationDataType 
  Platform Type name: uint8 
Generation: typedef uint8 MyImplementationDataType; 
 
 
 
As  defined  in  [2],  a  Platform_Types.h  file  must  be  integrated  into  the  project  and  shall 
contain the platform specific and/or compiler specific definition of Autosar Standard Types. 
In other words, this file contains a typedef for each Autosar Standard Type mapping it to a 
valid C expression. 
Platform_Types.h is thus the link between SW and platform which  are  independent from 
each other. 
2014, Vector Informatik GmbH 
Version: 1.1 
16 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
 
 
Note 
Platform_Types.h  also  contains  3  parameters  which  are  CPU  specific: 
  CPU_BIT_ORDER, to define bit alignment, CPU_BYTE_ORDER, to define Byte order, 
and CPU_TYPE, to define the processor bit length. 
 
 
Figure 3-8 summarizes these 2 ways of modelling: 
 
Figure 3-8  2 ways of modelling platform independent implementation data types 
 
 
3.5.2.2 
Dependency between SW and platform 
 
In a same way as for Complex Device Drivers, Autosar gives also the chance to break this 
abstraction by setting CPU and/or compiler specific information in base types: 
 
An  implementation  data  type  of  category  Value  must  reference  a  base  type,  which 
contains a native declaration parameter. Setting a valid C expression as native declaration 
will generate a typedef defining the implementation data type as this valid C expression in 
Rte_Type.h. 
 
In  this  way,  the  implementation  data  type  and  the  SWCs  using  this  implementation data 
type are platform specific. 
2014, Vector Informatik GmbH 
Version: 1.1 
17 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
 
Example 
Implementation data type name: MyImplementationDataType 
  Native declaration in base type: unsigned char 
Generation: typedef unsigned char MyImplementationDataType; 
 
 
 
Figure 3-9 summarizes this modelling: 
 
 
Figure 3-9  Modelling a platform specific implementation data type 
 
3.5.2.3 
Platform types and Vector DaVinci Tool suite 
 
Vector DaVinci Developer provides the Platform Types in the Implementation Data Types 
library at workspace creation (see Figure 3-10)
 
2014, Vector Informatik GmbH 
Version: 1.1 
18 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 3-10  Platform Types in DaVinci Developer 
 
According to Autosar it is advised to do the following: 
  Use directly Platform Types as implementation data types. 
  Create an own implementation data type of category  “Type Reference” referencing a 
Platform Type:  
Creating MyImplementationDataType as Type Reference pointing on uint8 (see Figure 
3-11) Pl
atform type will generate in Rte_Type.h:  
typedef uint8 MyImplementationDataType; 
 
 
Figure 3-11  Implementation data type referencing a platform type  
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
19 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
However other ways are possible: 
  It is possible to write the name of an Autosar Standard Type as native declaration in 
the  BaseType  referenced  by  MyImplementationDataType  of  category  Value  (see 
Figure 3-12). This way is however not very pretty because its intention is to model a 
“Type  Reference”  without  expressing  it  formally  in  the  model.  In  this  case  the  same 
typedef will be generated:  
typedef uint8 MyImplementationDataType; 
 
 
Figure 3-12  Native declaration: Autosar Standard Type 
 
  BaseType  with  C  native  declaration:  it  is  possible  to  generate  the  platform  specific 
definition  of  an  implementation  data  type  using  the  native  declaration  field.  In  the 
provided example (see Figure 3-13), the following will be generated: 
typedef unsigned char MyImplementationDataType; 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
20 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 3-13  Native declaration: valid C expression 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
21 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
3.6 
Generation 
 
The following is generated out of the data type design: 
 
-  In code: 
o  Implementation data types are provided in the generated code as typedef. 
o  From application data types are generated: 
  Init values: they are calculated from the init value and the computation 
method settings. 
  Lower and upper range limits as defines: they are calculated out of the 
constraint range and the computation method. 
  Invalid value handling: the way of treating invalid  values depends on 
the  handling  setting.  The  corresponding  invalidate  function  is 
implemented  in  the  Rte  and  provided  to  SWC  that  send  the 
corresponding data element.  
  Enumeration:  if  the  defined  computation  method  is  a  text  table,  an 
enumeration is provided. 
 
-  For measurement and calibration: 
o  An A2L file can be generated with data prototype access: 
  The read and write access is defined by the attribute specified at data 
element  level.  It  overrides  the  attribute  provided  in  application  or 
implementation data types. 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
22 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
4  Design examples 
 
 
 
Caution 
Each ECU project is specific and has its own needs.  
  The examples presented in this chapter aim at showing how to use DaVinci Developer 
tool chain and what is generated out of the example configuration.  
Not all possible configurations are presented here, and it is up to the ECU designer to 
choose the appropriate configuration settings depending on the needs of the project. 
 
 
4.1 
Primitive data element 
 
This  example  shows  the  design  of  a  primitive  application  data  type  referenced  by  a 
sender/receiver port interface data element. 
 
A sender/receiver port interface is designed to send a temperature value in Celsius. 
The  physical  values  can  be  in  the  range  [-50°C;  +150°C]  with  0,5°C  resolution.  In  other 
words, the values can be -50°C, -49,5°,…, +149,5°C, +150°C. 
In order to model the values at code level, a type covering such a range shall be defined. 
In  this  case  it  is  necessary  to  cover  401  values.  An  8  bit  integer  will  not  be  sufficient 
because  it  covers  only  256  values. A  16  bit  integer  (uint16  or  sint16)  can  be  used. The 
conversion  function  will  be  adjusted  to  this  choice.  In  this  example  sint16  is  chosen.  A 
linear  conversion  from  physical  to  internal  with  factor  2  and  offset  0  (f(x)=2.x+0)  will  be 
used. The corresponding internal range will be [-100; +300]. 
 
  An application data type is created to model the physical part of the data type: 
 
>  Creation of a new Value application data type: 
>  Right  click  on  the  “Application  Data  Types”  library  is  done  and  “Value”  is  selected 
(see Figure 4-1). 
2014, Vector Informatik GmbH 
Version: 1.1 
23 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-1  New Value application data type 
>  The application data type attributes are filled (see Figure 4-1)
>  A name is given: “My_TemperatureType” 
>  A  computation  method  is  created:  “My_TemperatureType_CompuMethod”  (see 
Figure 4-3): 
  Category is set to linear 
  A  “Celsius”  unit  is  created  (see  Figure  4-4)  and  is  referenced  in  the 
compu method 
  “Physical to internal” conversion is chosen 
  The  physical  to  internal  linear  scale  is  configured  with  factor  2  and 
offset 0 over the physical range [-50;+150] (see Figure 4-5) 
 
>  A physical constraint is created: “My_TemperatureType_Contraint” (see Figure 4-6):  
  It defines the physical range with boundary inclusions: [-50;+150] 
 
 
 
 
Note 
The  physical  to  internal  conversion  is  also  used  for  internal  to  physical  conversion  in 
  case the defined function is invertible. It is the case in this example, so it is enough to 
specify only the physical to internal conversion. 
The  linear  conversion  factor  and  offset  are  used  in  the  following  way: 
With Xi representing the internal value and Xp the physical one. 

Physical to internal: factor Fp and offset Op: 
Xi = Fp.(Xp + Op) 

Internal to physical: factor Fi and offset Oi: 
Xp = Fi.Xi + Oi 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
24 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 4-2  My_TemperatureType 
 
 
Figure 4-3  My_TemperatureType_CompuMethod 
 
2014, Vector Informatik GmbH 
Version: 1.1 
25 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-4  Celsius unit 
 
 
Figure 4-5  Physical to Internal linear scale 
 
2014, Vector Informatik GmbH 
Version: 1.1 
26 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-6  Physical constraint 
 
  The internal part of the data type is modeled with the existing platform type sint16. 
 
It is thus not necessary to create a new implementation data type. 
 
  In order to finish the data type modeling, a data type mapping set has to be used to 
specify the mapping between “My_TemperatureType” and sint16. 
>  A new type mapping set is created: 
>  Right click on the Type Mapping Sets library is done and “New Type Mapping Set…” 
is selected (see Figure 4-7)
 
 
 
Note 
It  is  not  necessary  to  create  a  new  type  mapping  set  for  each  data  type  mapping.  A 
  single type mapping set can contain several data type mappings. 
It  is  even  recommended  to  gather  data  type  mappings  in  type  mapping  sets,  not  to 
have too many data type mapping set. 
 
 
 
>  A name is given to the type mapping set (see Figure 4-8)
>  The data type mapping is done in the “Data Type Maps” tab of the type mapping set 
property dialog (the steps are described Figure 4-9) 
 
2014, Vector Informatik GmbH 
Version: 1.1 
27 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-7  Type mapping set creation 
 
Figure 4-8  Type mapping set naming 
2014, Vector Informatik GmbH 
Version: 1.1 
28 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-9  Add a data type mapping to a type mapping set 
2014, Vector Informatik GmbH 
Version: 1.1 
29 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
 
 
 
Note 
In the Data Type Map dialog a check box is available to filter only the compatible data 
  types. It is checked by default. 
 
 
 
  Now that the data type for the temperature data elements is modeled, it can be used. 
 
In this example a sender/receiver port interface containing a temperature data element is 
designed. The port interface “My_TemperatureInterface” is created (see  Figure 4-10) and 
“My_TemperatureElement” is created inside (see Figure 4-11). 
 
 
Figure 4-10  My_TemperatureInterface 
 
 
Figure 4-11  My_TemperatureElement 
2014, Vector Informatik GmbH 
Version: 1.1 
30 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
Two  SWCs  implementing  port  prototypes  referencing  this  port  interface  are  created. 
SWC_Sender  is  writing  “My_TemperatureElement”  in  “SWC_SenderRunnable”  and 
“SWC_Receiver”  is  reading  it  in  “SWC_ReceiverRunnable”  (see  Figure  4-12  and  Figure 
4-13)
. The init value on both sides is set to 20. 
 
Figure 4-12  SWC_Sender modeling 
2014, Vector Informatik GmbH 
Version: 1.1 
31 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-13  SWC_Receiver modeling 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
32 / 80 
based on template version 5.1.0 





Technical Reference Autosar 4.0 - DataTypes 
Both ports are connected via a SWConnector in the graphical editor (see Figure 4-14). 
 
Figure 4-14  Connection of My_TemperatureInterface ports 
If the configuration is left like this a “missing data type mapping” error message will appear 
(see Figure 4-15). It is due to the fact that at SWC level “My_TemperatureElement”, typed 
by the application data type “My_TemperatureType”, is not mapped to any implementation 
data type. Even if the mapping was realized in “My_TypeMappingSet”, this mapping is not 
known by the SWCs until it is explicitly referenced. 
 
 
Figure 4-15  Missing data type mapping error message 
Each  SWC using a  data element,  typed  by  an  application  data  type,  must  reference  the 
corresponding  type  mapping  set,  where  the  corresponding  implementation  data  type  is 
specified. 
“My_TypeMappingSet” shall be referenced in  SWC_Sender and SWC_Receiver property 
dialog (see Figure 4-16). 
 
 
 
Note 
It is possible to reference several type mapping sets in a same SWC. 
 
 
 
 
 
Note 
If the project requires a different mapping depending on a certain context, it is possible 
  to  map  the  same  application  data  type  to  different  implementation  data  types  using 
several type mapping sets. 
For instance it could be possible to map “My_TemperatureType” to sint32 in a second 
type mapping set, which could be used by 2 other SWCs. In the context of these 2 new 
SWCs “My_TemperatureType” would be mapped to sint32. 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
33 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-16  Reference a type mapping set in a SWC 
2014, Vector Informatik GmbH 
Version: 1.1 
34 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
  The system description resulting from the configuration done in DaVinci Developer is 
imported  in  DaVinci  Configurator  Pro.  There  the  Rte  generation  and  the  SWC 
generation are performed. 
 
The following code is generated: 
 
In SWC_Sender.c: 
Std_ReturnType Rte_Write_My_TemperatureInterface_My_TemperatureElement(sint16 data) 
 
In SWC_Receiver.c: 
Std_ReturnType Rte_Read_My_TemperatureInterface_My_TemperatureElement(sint16 *data) 
 
 
In Rte_SWC_Sender.h and Rte_SWC_Receiver.h: 
#  define Rte_InitValue_My_TemperatureInterface_My_TemperatureElement (40
 
 
In Rte_SWC_Sender_Type.h and Rte_SWC_Receiver_Type.h: 
#  define My_TemperatureType_LowerLimit (-100) 
#  define My_TemperatureType_UpperLimit (300) 
 
 
 
The data element of the read and write function is typed by sint16. 
The init value is 40 (internal value of configured physical value 20). 
The generated lower limit is -100 and upper limit 300. 
 
 
 
 
Note 
In  the  Rte  generator  version  (4.01.01)  the  generated  negative  included  limits  are 
  shifted by +1. If both limits are negative, the lower and upper limits are inverted. 
These two issues are known and will be fixed in a future version. 
 
 
 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
35 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
4.2 
Complex data element   
 
This  example  shows  the  design  of  a  complex  application  data  type  referenced  by  a 
sender/receiver port interface data element. 
 
A  sender/receiver  port  interface  is  designed  to  send  a  record  containing  a  temperature 
value in Celsius as first element and a speed value in km/h as second element. 
 
The temperature value is modeled as in chapter 4.1. 
 
The  speed  physical  values  can  be  in  the  range  [0  km/h;  300  km/h]  with  0,5  km/h 
resolution. In other words, the values can be 0 km/h, 0,5 km/h,…, 299,5 km/h, 300 km/h. 
In  the  same  way  as  the  temperature,  speed  needs  an  implementation  type  covering  the 
possible  values  at  code  level.  Uint16  is  chosen.  A  linear  conversion  from  physical  to 
internal  with factor  2 and offset  0  (f(x)=2.x+0)  is  used. The  corresponding  internal  range 
will be [0; 600]. 
 
  A Value application data type (“My_SpeedType”) is created and mapped to uint16 (see 
Figure 4-17). For details about primitive data type creation refer to chapter 4.1. 
 
 
Figure 4-17  My_SpeedType settings 
  A  Record  application  data  type  (“My_RecordType”)  is  created  with  a  temperature 
element as first element and a speed element as second element: 
2014, Vector Informatik GmbH 
Version: 1.1 
36 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
  Right click on “Application Data Type” library is done and “New Record…” is selected 
(see Figure 4-18). 
 
Figure 4-18  New Record application data type 
  Enter the name of the record application data type and create 2 record elements (see 
Figure 4-19). 
 
2014, Vector Informatik GmbH 
Version: 1.1 
37 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-19  Record type creation with 2 record elements 
2014, Vector Informatik GmbH 
Version: 1.1 
38 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
  The corresponding implementation data type is created: 
The corresponding implementation data type shall have a structure corresponding to the 
application  data  type  so  that  each  sub  element  of  the  application  level  has  a 
corresponding element at implementation level. In this example a record implementation 
data type with 2 sub elements is used. 
  Right  click  on  “Implementation  Data  Type”  library  is  done  and  “New  Record…”  is 
selected (see Figure 4-20). 
  The record data type is configured (see Figure 4-21): 
     The name is set: “My_RecordImplementationType” 
  In  the  “Record  Elements”  tab,  a  record  element  matching  with  temperature  at 
implementation level is created: 
The name “TemperatureImplementationRecordElement” is set. 
The  element  type  is  set  to  “Type  Reference”  in  order  not  to  create  a  new 
implementation data type, but to use an existing one. 
The  property  button  is  clicked  to  open  the  dialog  where  this  reference  is  set. The 
type  sint16  is  chosen  corresponding  to  the  implementation  data  type  mapped  to 
“My_TemperatureType”. 
  In a similar way a record matching with speed at implementation level is created: 
The name “SpeedImplementationRecordElement” is set. 
The  element  type  is  set  to  “Type  Reference”  in  order  not  to  create  a  new 
implementation data type, but to use an existing one. 
The  property  button  is  clicked  to  open  the  dialog  where  this  reference  is  set. The 
type  uint16  is  chosen  corresponding  to  the  implementation  data  type  mapped  to 
“My_SpeedType”.  
 
 
Figure 4-20  New Record implementation data type 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
39 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 4-21  Set a record implementation data type 
  The record application data type is now mapped with the record implementation data 
type (see Figure 4-22). 
2014, Vector Informatik GmbH 
Version: 1.1 
40 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 4-22  Record type mapping 
 
 
 
Note 
When the 2 record types are mapped, the “only show compatible Implementation Data 
  Types” is very useful for 2 reasons: 

It provides a reduced list of available types, which makes the selection easier 

It already gives the information if the 2 records types are compatible or not. In 
case the desired implementation data type does not appear in the selection list, 
then the designer has already the information that the types do not match and 
that the configuration is not correct. 
 
 
  A  sender/receiver  port  interface  is  created,  where  the  data  element  is  named 
„RecordElement” and typed by „My_RecordType“ (see Figure 4-23)
 
2014, Vector Informatik GmbH 
Version: 1.1 
41 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-23  Sender/receiver port interface with record element 
  A P-Port prototype referencing „My_RecordInterface” is created in SWC_Sender and 
accessed  by  „SWC_SenderRunnable”. A  similar  R-Port  is  created  at  SWC_Receiver 
and accessed by “SWC_ReceiverRunnable”. 
 
For both ports an init value shall be set in the com spec. Two ways can be followed to 
set the init values: 
>  Manually at the port (see Figure 4-24 and Figure 4-25). 
>  With  a  constant:  a  constant  is  created  (see  Figure  4-26)  and  this  constant  is 
referenced as init value (see Figure 4-27)
 
2014, Vector Informatik GmbH 
Version: 1.1 
42 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-24  Record manual init – part 1 
2014, Vector Informatik GmbH 
Version: 1.1 
43 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-25  Record manual init – part 2 
2014, Vector Informatik GmbH 
Version: 1.1 
44 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-26  Record constant creation 
2014, Vector Informatik GmbH 
Version: 1.1 
45 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-27  Referencing a record constant as init value  
The 2 ports are then connected (see Figure 4-28). 
 
 
Figure 4-28  My_RecordInterface port connection 
 
2014, Vector Informatik GmbH 
Version: 1.1 
46 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
  “My_TypeMappingSet”  has  to  be  referenced  by  SWC_Sender  and  SWC_Receiver, 
which was already done in chapter 4.1. 
  The system description resulting from the configuration done in DaVinci Developer is 
imported  in  DaVinci  Configurator  Pro.  There  the  Rte  generation  and  the  SWC 
generation are performed. 
 
The following code is generated: 
 
In SWC_Sender.c: 
Std_ReturnType Rte_Write_My_RecordInterface_RecordElement(const My_RecordImplementationType *data) 
 
In SWC_Receiver.c: 
Std_ReturnType Rte_Read_My_RecordInterface_RecordElement(My_RecordImplementationType *data) 
 
 
In Rte_Type.h: 
# define Rte_TypeDef_My_RecordImplementationType 
typedef struct 

  sint16 TemperatureImplementationRecordElement; 
  uint16 SpeedImplementationRecordElement
My_RecordImplementationType
 
 
In Rte.c: 
CONST(My_RecordImplementationType, RTE_CONST) Rte_C_My_RecordImplementationType_0 = { 
  40, 0U 
}; 
 
CONST(My_RecordImplementationType, RTE_CONST) Rte_My_RecordConstant = { 
  40, 0U 
}; 
 
 
 
The record data element is typed by My_RecordImplementationType. 
The  record  type  has  2  elements,  TemperatureImplementationRecordElement  of  type 
sint16 and SpeedImplementationRecordElement of type uint16. 
Two constants  are generated for the init  values:  Rte_My_RecordConstant  corresponding 
to the constant created in DaVinci Developer and Rte_C_MyRecordImplementationType_0 
corresponding to the init value set manually. 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
47 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
4.3 
Enumeration 
 
Two  enumeration  examples  are  described  in  this  chapter.  The  first  one  (see  4.3.1) 
corresponds  to  enumeration  created  at  application  level.  The  second  one  (see  0) 
corresponds to enumeration created at implementation level. 
 
4.3.1 
Application level 
 
In  this  example  an  enumeration  application data  type  is  created.  It  defines  3  text  values 
and is mapped to uint8. 
 
  A  new  Value  application  data  type  is  created:  “My_EnumerationType”  (see  Figure 
4-29): 
  It  references  “My_EnumerationType_CompuMethod”  which  defines  a  text  table 
conversion (see Figure 4-30)
  This text table contains 3 values (see Figure 4-31): 
 
- Text_00 corresponding to numerical value 0 (range [0;0]) 
 
- Text_01 corresponding to numerical value 1 (range [1;1]) 
 
- Text_02 corresponding to numerical value 2 (range [2;2]) 
 
 
  “My_EnumerationType” 
references 
“My_EnumerationType_Constraint” 
which 
specifies [0;2] as physical range (see Figure 4-32)
  „My_EnumerationType is then mapped to uint8 in „My_TypeMappingSet” (see Figure 
4-33). 
 
Figure 4-29  My_Enumeration type 
2014, Vector Informatik GmbH 
Version: 1.1 
48 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 4-30  My_EnumerationType_CompuMethod 
   
 
Figure 4-31  Enumeration text table setting 
2014, Vector Informatik GmbH 
Version: 1.1 
49 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-32  Enumeration constraint 
 
Figure 4-33  My_Enumeration mapping to uint8 
  A sender/receiver port interface “My_EnumerationInterface” is created. It contains one 
data element of type “My_EnumerationType” “(see Figure 4-34).  
 
Figure 4-34  “My_EnumerationInterface” 
2014, Vector Informatik GmbH 
Version: 1.1 
50 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
  A P-Port is created on the SWC_Sender with write access to the data element in the 
SWC_SenderRunnable, a R-Port is created on the SWC_Receiver with read access to 
the  data  element  in  the  SWC_ReceiverRunnable,  init  values  are  specified  and  both 
ports are connected. 
  “My_TypeMappingSet”  has  to  be  referenced  by  SWC_Sender  and  SWC_Receiver, 
which was already done in chapter 4.1. 
  The system description resulting from the configuration done in DaVinci Developer is 
imported  in  DaVinci  Configurator  Pro.  There  the  Rte  generation  and  the  SWC 
generation are performed. 
 
The following code is generated: 
 
In SWC_Sender.c: 
Std_ReturnType Rte_Write_My_EnumerationInterface_My_EnumerationElement(uint8 data) 
 
In SWC_Receiver.c: 
Std_ReturnType Rte_Read_My_EnumerationInterface_My_EnumerationElement(uint8 *data) 
 
In Rte_SWC_Sender_Type.h and Rte_SWC_Receiver_Type.h: 
#  define My_EnumerationType_LowerLimit (0U) 
#  define My_EnumerationType_UpperLimit (2U) 
 
#  ifndef Text_00 
#   define Text_00 (0U) 
#  endif 
 
#  ifndef Text_01 
#   define Text_01 (1U) 
#  endif 
 
#  ifndef Text_02 
#   define Text_02 (2U) 
#  endif 
 
The data element is typed by uint8. 
The lower limit is 0 and upper limit is 2. 
Each enumeration text is defined with the corresponding uint8 value 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
51 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
4.3.2 
Implementation level 
 
In  this  example  an  enumeration  implementation  data  type  is  created.  It  defines  3  text 
values and has uint8 as reference type. 
 
  A  new  Reference  implementation  data  type  is  created:  “My_EnumerationImplType” 
(see Figure 4-35): 
  It  references  “My_EnumerationImplType_CompuMethod”  which  defines  a  text  table 
conversion (see Figure 4-36). 
  This text table contains 3 values, Text_00 for value 0 (range [0;0]), Text_01 for value 
1 (range [1;1]) and Text_02 for value 2 (range [2;2]) (see Figure 4-37). 
 
Figure 4-35  My_EnumerationImplType 
 
Figure 4-36  My_EnumerationImplType_CompuMethod 
2014, Vector Informatik GmbH 
Version: 1.1 
52 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
  
 
Figure 4-37  My_EnumerationImplType_CompuMethod text table 
 
  A sender/receiver port interface “My_EnumerationImplInterface” is created. It contains 
one data element of type “My_EnumerationImplType“ (see Figure 4-38).  
 
Figure 4-38  My_EnumerationImplInterface 
  A P-Port is created on the SWC_Sender with write access to the data element in the 
SWC_SenderRunnable, an R-Port is created on the SWC_Receiver with read access 
to the data element in the SWC_ReceiverRunnable, init values are specified and both 
ports are connected. 
  The system description resulting from the configuration done in DaVinci Developer is 
imported  in  DaVinci  Configurator  Pro.  There  the  Rte  generation  and  the  SWC 
generation are performed. 
2014, Vector Informatik GmbH 
Version: 1.1 
53 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
 
The following code is generated: 
 
In SWC_Sender.c: 
Std_ReturnType 
Rte_Write_My_EnumerationImplInterface_My_EnumerationImplElement(My_EnumerationImplType data) 
 
* Enumeration Types: 
 * ================== 
 * My_EnumerationImplType: Enumeration of integer in interval [0...255] with enumerators 
 *   Text_00 (0U) 
 *   Text_01 (1U) 
 *   Text_02 (2U) 
 
In SWC_Receiver.c: 
Std_ReturnType  Rte_Read_My_EnumerationImplInterface_My_EnumerationImplElement(My_EnumerationImplType 
*data) 
 
* Enumeration Types: 
 * ================== 
 * My_EnumerationImplType: Enumeration of integer in interval [0...255] with enumerators 
 *   Text_00 (0U) 
 *   Text_01 (1U) 
 *   Text_02 (2U) 
 
 
In Rte_SWC_Sender_Type.h and Rte_SWC_Receiver_Type.h: 
#  define My_EnumerationType_LowerLimit (0U) 
#  define My_EnumerationType_UpperLimit (2U) 
 
#  ifndef Text_00 
#   define Text_00 (0U) 
#  endif 
 
#  ifndef Text_01 
#   define Text_01 (1U) 
#  endif 
 
#  ifndef Text_02 
#   define Text_02 (2U) 
#  endif 
 
In Rte_Type.h: 
# define Rte_TypeDef_My_EnumerationImplType 
typedef uint8 My_EnumerationImplType
 
The data element is typed by My_EnumerationImplType which is defined as uint8. 
Each enumeration text is defined with the corresponding uint8 value 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
54 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
4.4 
Mode declaration 
 
A  mode  transmitted  via  mode  switch  port  interfaces  is  a  data  element  that  can  take  its 
values in a corresponding mode declaration group. 
Mode declaration groups can be created in two different ways. The first one is to create a 
mode declaration group manually in DaVinci Developer, which will then be used in a mode 
switch port interface by SWCs and/or by BswM (see 4.4.1). The second one is to create a 
mode  service  port  in  the  BswM  configuration  in  DaVinci  Configurator  Pro,  which  will 
automatically create a corresponding mode declaration group (see 4.4.2).  
 
4.4.1 
Mode declaration group in DaVinci Developer 
 
  It is possible to create mode declaration groups in DaVinci Developer by right-clicking 
“Mode Declaration Group” library and selecting “New Mode Declaration Group…” (see 
Figure 4-39). 
 
Figure 4-39  New mode declaration group 
  The mode declaration group is configured (see Figure 4-40)
  The name is given 
  The  category  is  set:  alphabetic  or  explicit.  Alphabetic  means  that  the  mode 
declaration  internal  values  will  be  attributed  automatically  in  the  alphabetical  order. 
Explicit means that the designer can set these values himself.  
  The mode declarations are entered. 
The internal values of mode declarations and transition may be entered, but are not 
mandatory (see the note below). 
 
 
Note 
The  Rte  generator  supports  currently  only  alphabetic  category.  That  means,  even  if 
  “Explicit” is set and values are attributed by the designer to the mode declarations, the 
mode declaration internal values are automatically generated following the alphabetical 
order. 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
55 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-40  My_ModeDeclarationGroup 
  A  mode  port  interface  called  “My_ModePortInterface”  is  created.  It  transmits 
“My_Mode” of mode declaration group “My_ModeDeclarationGroup” (see Figure 4-41). 
 
 
Figure 4-41  My ModePortInterface 
  In  this  example  SWC_Sender  is  the  mode  master  and  SWC_Receiver  is  the  mode 
user.  
SWC_Sender resp. SWC_Receiver implements a sender resp. sender port prototype 
referencing  “My_ModePortInterface”.  They  are  connected  to  each  other  (see  Figure 
4-42).  
SWC_SenderRunnable  has  “Send  Mode  Switches”  port  access  on  the  mode 
switch  port,  SWC_ReceiverRunnable  has  “Read  Mode”  port  access  on  the  mode 
switch port (see Figure 4-43). 
 
2014, Vector Informatik GmbH 
Version: 1.1 
56 / 80 
based on template version 5.1.0 





Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-42  Mode ports connection 
 
       
 
Figure 4-43  Mode port access 
 
 
Note 
The type for the mode declaration group in the code is automatically the corresponding 
  platform  type:  if  the  number  of  mode  declarations  is  lower  than  256,  then  the  mode 
declaration  group  is  mapped  automatically  to  uint8.  If  this  number  is  bigger  than  256 
and lower than 65536, then it is mapped to uint16, and so on… 
 
 
 
The  system  description  resulting  from  the  configuration  done  in  DaVinci  Developer  is 
imported in DaVinci Configurator Pro. There the Rte generation and the SWC generation 
are performed. 
 
The following code is generated: 
 
In SWC_Sender.c: 
* Mode Interfaces: 
 * ================ 
 * 
 
 
Std_ReturnType 
Rte_Switch_My_ModePortInterface_My_Mode(Rte_ModeType_My_ModeDeclarationGroup 
mode) 
 *   Modes of Rte_ModeType_My_ModeDeclarationGroup: 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_A_Mode 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_B_Mode 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_C_Mode 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_D_Mode 
 *   - RTE_TRANSITION_My_ModeDeclarationGroup 
 
2014, Vector Informatik GmbH 
Version: 1.1 
57 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
 
In SWC_Receiver.c: 
* Mode Interfaces: 
 * ================ 
 * 
 
 
Rte_ModeType_My_ModeDeclarationGroup 
Rte_Mode_My_ModePortInterface_My_Mode(void) 
 *   Modes of Rte_ModeType_My_ModeDeclarationGroup: 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_A_Mode 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_B_Mode 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_C_Mode 
 *   - RTE_MODE_My_ModeDeclarationGroup_My_D_Mode 
 *   - RTE_TRANSITION_My_ModeDeclarationGroup 
 * 
 
 
In Rte_Type.h: 
 
typedef uint8 Rte_ModeType_My_ModeDeclarationGroup; 
 
# define RTE_MODE_My_ModeDeclarationGroup_My_A_Mode (0U) 
# define RTE_MODE_My_ModeDeclarationGroup_My_B_Mode (1U) 
# define RTE_MODE_My_ModeDeclarationGroup_My_C_Mode (2U) 
# define RTE_MODE_My_ModeDeclarationGroup_My_D_Mode (3U) 
# define RTE_TRANSITION_My_ModeDeclarationGroup (4U) 
 
The mode declaration group is typed by uint8. 
The mode declaration values are attributed in the alphabetical order. 
  
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
58 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
4.4.2 
Mode service port in BswM configuration 
 
In  DaVinci  Configurator  Pro,  the  BswM  BSWMD  offers  the  possibility  to  create  mode 
switch ports referencing pre-defined mode declaration groups. 
For  instance  it  is  possible  to  create  a  BswM  switch  port  referencing  the  ComM  mode 
declaration group (see Figure 4-44). 
 
 
Figure 4-44  BswM configuration 
 
After configuring the BswM in DaVinci Configurator Pro, it is possible to import its service 
component description in DaVinci Developer. As shown Figure 4-45 BswM is imported in 
the “Service Component Types” library, the mode switch interface referencing the ComM 
mode in the “Service Port Interfaces” library.  
 
Figure 4-45  BswM import in DaVinci Developer 
 
The mode declaration group ComMMode is also imported in the “Mode Declaration Group” 
library (see Figure 4-46) and the corresponding mode declarations are visible by opening it 
(see Figure 4-47). 
 
2014, Vector Informatik GmbH 
Version: 1.1 
59 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-46  Mode declaration group import in DaVinci Developer 
 
Figure 4-47  ComM mode declaration group 
This configuration gives then the following generated code: 
 
In SWC_A.c: 
 
Rte_ModeType_ComMMode 
Rte_Mode_ModeSwitch_Interfaces_ComM_CurrentMode_ComMMode_currentMode(void) 
 
//Modes of Rte_ModeType_ComMMode
//   - RTE_MODE_ComMMode_COMM_FULL_COMMUNICATION 
//   - RTE_MODE_ComMMode_COMM_NO_COMMUNICATION 
//   - RTE_MODE_ComMMode_COMM_SILENT_COMMUNICATION 
//   - RTE_TRANSITION_ComMMode 
In Rte_SWC_A.h: 
 
//Buffers for Mode Management 
extern 
VAR(Rte_ModeType_ComMMode, 
RTE_VAR_NOINIT) 
Rte_ModeMachine_BswM_ModeSwitch_Interfaces_ComM_CurrentMode_ComMMode_currentMode

In Rte.c: 
 
/* mode management initialization part 1 */ 
Rte_ModeMachine_BswM_ModeSwitch_Interfaces_ComM_CurrentMode_ComMMode_currentMode 
= RTE_MODE_ComMMode_COMM_NO_COMMUNICATION; 
 
2014, Vector Informatik GmbH 
Version: 1.1 
60 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
In Rte_Type.h: 
 
//define Rte_TypeDef_ComM_ModeType 
typedef uint8 ComM_ModeType
 
//Definitions for Mode Management 
typedef uint8 Rte_ModeType_ComMMode
 
# define RTE_MODE_ComMMode_COMM_FULL_COMMUNICATION (0U) 
# define RTE_MODE_ComMMode_COMM_NO_COMMUNICATION (1U) 
# define RTE_MODE_ComMMode_COMM_SILENT_COMMUNICATION (2U) 
# define RTE_TRANSITION_ComMMode (3U) 
 
The mode declaration group Com_ModeType is typed by uint8. 
The  mode  declarations  are  available  as  defines  and  their  uint8  value  is  given  in  the 
alphabetical order.  
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
61 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
4.4.3 
Mode request port and mapping 
 
 
A  component  requesting  a  mode  change  to  the  mode  master  shall  implement  a 
sender/receiver  P-Port  as  mode  request  port.  The  corresponding  port  interface’s  data 
element  shall  be  typed  by  an  implementation  data  type  referencing  a  compu  method 
containing  an  enumeration  of  the  corresponding  modes.  That  implementation  data  type 
shall be mapped to the corresponding mode declaration group. 
 
  The  mode  declaration  group  for  the  example  will  be  My_ModeDeclarationGroup 
presented Figure 4-48. 
 
Figure 4-48  My_ModeDeclarationGroup 
  A corresponding implementation data type is created: 
My_ModeDeclarationGroup_IType. 
  It is defined as type reference to uint8 
  It contains a compu method which defined an enumeration of the 4 modes from 
My_ModeDeclatationGroup. The same strings shall be used. See Figure 4-49. 
 
2014, Vector Informatik GmbH 
Version: 1.1 
62 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
  
 
Figure 4-49  My_ModeDeclarationGroup_IType 
  The  mode  declaration  group  and  the  implementation  data  type  are  mapped  in  a 
ModeRequestTypeMap (Figure 4-50). 
 
 
Figure 4-50  Mode declaration group mapping 
  The corresponding SWC shall implement a port and reference the type mapping set. 
  A service sender/receiver port interface is created containing 1 data element typed 
by My_ModeDeclarationGroup_IType (Figure 4-51)
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
63 / 80 
based on template version 5.1.0 





Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 4-51  My_ModeRequestInterface 
  A service P-Port prototype referencing this port interface is created on the SWC 
(Figure 4-52)
 
Figure 4-52  My_ModeRequestPort 
  The type mapping set is referenced by the SWC (Figure 4-53). 
 
Figure 4-53  Type mapping set reference for mode request 
 
2014, Vector Informatik GmbH 
Version: 1.1 
64 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
  A runnable of the SWC shall have write access on the created port. 
  In DaVinci Configurator, the corresponding mode request port on BswM can be 
created and mapped to the SWC port. 
 
  The generated code provides the following for the SWC: 
 
Type and enumeration definition: 
 
* Enumeration Types: 
 * ================== 
 *  My_ModeDeclarationGroup_IType:  Enumeration  of  integer  in  interval  [0...255]  with 
enumerators 
 *   My_A_Mode (0U) 
 *   My_B_Mode (1U) 
 *   My_C_Mode (2U) 
 *   My_D_Mode (3U) 
 
 
Mode request API for the SWC: 
 
Std_ReturnType Rte_Write_My_ModeRequestPort_My_ModeRequest(My_ModeDeclarationGroup_IType 
data) 
 
 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
65 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
4.5 
Implementation data type examples 
 
As  a  summary,  the  two  following  examples  are  showing  how  implementation  data  types 
can be created as type reference (see 4.5.1) or as value (see 0)
   
4.5.1 
Type reference 
 
It is possible to create an implementation data type out of an existing implementation data 
type. This is done by right-clicking the “Implementation Data Types” library and selecting 
“New Type Reference…”. 
 
As shown Figure 4-54, a name is given, as well as a reference to another implementation 
data type in the “Data Type” field. For the example uint8 is chosen. 
  
 
Figure 4-54  New type reference 
At Rte generation, the following is generated in Rte_Type.h: 
# define Rte_TypeDef_MyImpl_Type_Ref 
typedef uint8 MyImpl_Type_Ref
 
The  new  created  implementation  data  type  is  used  and  typed  via  typedef  by  the 
referenced data type. 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
66 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
4.5.2 
Value 
 
  It  is  possible  to  create  an  implementation  data  type  of  category  value  referencing  a 
base  type.  This  is  done  in  this  example  by  right-clicking  the  “Implementation  Data 
Types” library and selecting “New Value…”. 
  The Value implementation data type gets a name: “My_ImplValue” in this example. 
  A reference to a base type has to be given in the “Base Type” field (see Figure 4-55)
In this example a “My_ImplValue_base” base type is used (see Figure 4-56). A valid 
“Native Declaration” must be set in the base type: unsigned char here. 
  It is also optionally possible to set a constraint to the implementation data type, which 
is done in My_ImplValue_Constraint (see Figure 4-57). It is set here that the internal 
values are limited to the range [0;150]. 
 
 
Figure 4-55  Value implementation data type 
 
2014, Vector Informatik GmbH 
Version: 1.1 
67 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
Figure 4-56  My_ImplValue_base base type 
 
Figure 4-57  Implementation type constraint 
  The  configured  implementation  data  type  is  generated  via  Rte  generator  and  the 
following can be seen: 
 
In Rte_Type.h: 
# define Rte_TypeDef_My_ImplValue 
typedef unsigned char My_ImplValue; 
 
//Primitive Types: 
// ================ 
//My_ImplValue: Integer in interval [0...150] 
 
The new created implementation data type is typed via typedef by the native declaration of 
the  referenced  base  type. As  explained  chapter  3.5,  this  example  introduces  a  platform 
dependency because “unsigned char” meaning is platform dependent. 
The constraint set in the configuration appears only as comments in the code. 
2014, Vector Informatik GmbH 
Version: 1.1 
68 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
5  Additional information 
5.1 
Compatibility and conversion 
 
  It is possible to create several implementation data types with the same name if they 
belong to 2 different packages.  
At  code  generation  only  1  implementation  data  type  is  generated.  In  case  the 
implementation data types with the same name are not exactly the same (differences 
in  compu  methods,  constraints…)  an  information  message  #40286  is  displayed  in 
DaVinci Developer and in DaVinci Configurator Pro (see Figure 5-1)
 
Figure 5-1  Info Message #40286 
 
  Compatibility  of  ports  is  verified  in  DaVinci  Developer  based  on  the  name  and  the 
category of the connected data elements. This check contains: 
  Data  elements  exchanged  by  both  ports  shall  have  the  same  category  (Value, 
Record, Array…) 
  Primitive data elements exchanged by both ports shall have the same name 
  In case of Record: 
  For each receiver sub element, there shall be a sender sub element with the same 
name:  
E.g.: 
>  Sender of {element1; element2; element3} and receiver of {element1; element3} 
are compatible. 
>  Sender  of  {element1;  element2}  and  receiver  of  {element1;  element3}  are  not 
compatible. 
>  Sender of {element1} and receiver of {element1; element2} are not compatible. 
2014, Vector Informatik GmbH 
Version: 1.1 
69 / 80 
based on template version 5.1.0 




Technical Reference Autosar 4.0 - DataTypes 
  In case of Array, array data elements exchanged by both ports shall have the same 
name 
 
  No conversion between data types is realized by the Rte in the generated code. 
 
 
Note 
Compatibility  checks  are  about  to  be  extended  in  DaVinci  Developer  and  DaVinci 
  Configurator Pro in the future releases. 
 
 
 
 
5.2 
Measurement and calibration 
 
For  specific  ECU  project  purposes  data  elements  may  have  to  be  accessed  via 
measurement and calibration tools (MCD tools). 
In  order  to  generate  an  A2L  file  used  by  an  MCD  tool,  the  A2L  generation  has  to  be 
activated in the Rte configuration. This configuration is done in DaVinci Configurator Pro 
as shown Figure 5-2.  
 
Figure 5-2  Rte configuration for A2L generation 
A2L files are generated in /Config/McData/ folder of the ECU project (see Figure 5-3). 
 
 
Figure 5-3  A2L generation folder  
2014, Vector Informatik GmbH 
Version: 1.1 
70 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
The following lines summarize what  is generated  and thus accessible from an MCD tool 
using the generated A2L file. 
  The mode port prototypes are always visible in the A2L file. A text table is joined to it 
representing the conversion between internal value and mode declaration name. 
  Data elements of Sender/Receiver interfaces are: 
  Not  accessible  if  “NotAccessible”  is  set  for  the  data  element  in  the  port  interface 
editor. 
  Read only if “ReadOnly” is set for the data element in the port interface editor. 
  Read/Write if “ReadWrite” is set data element in the port interface editor. 
 
 
 
Note 
Measurement and calibration settings in application and implementation data types are 
  over ridden by the setting at the data element in DaVinci Developer. 
 
 
 
  Unit is accessible  
  Conversion function and text tables are accessible: 
  1:1 is set in case factor is 1 and offset 0 in DaVinci developer 
  Phys to Int factor Fp offset Op makes (Fp ≠ 0): “int to phys f(x)= (1/Fp).x-Op” in A2L 
file 
  Int to Phys factor Fi offset Oi makes “int to phys f(x)= Fi.x + Op” in A2L file 
 
 
 
Note 
Factors and offsets set for units in DaVinci Developer are not taken into account 
  in A2L files. 
 
 
  Operation  arguments  are  not  visible  in  the  A2L  even  if  explicitly  set  in  DaVinci 
Developer. 
 
  Calibration parameters:  
  They  are  accessible  as  set  in  DaVinci  Developer  (NotAccessible,  ReadOnly  or 
ReadWrite). 
  The unit is not available: the calibration parameter is only handled at implementation 
level with internal values. 
 
2014, Vector Informatik GmbH 
Version: 1.1 
71 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
5.3 
Symbols 
 
In  DaVinci  Developer  certain  elements  may  have  a  “Symbol”  field.  This  is  the  case  of 
implementation data types. A symbol field may be used in case the name of the element in 
the code shall be different from the name specified in DaVinci Developer. 
For instance, the implementation data type created in chapter 4.5.1 can receive a Symbol 
name  and  value  as  done  Figure  5-4.  In  this  example,  the  name  of  the  symbol  is 
“MyImpl_Type_Ref_Symbol” and the value is “MyImpl_Type_Ref_Value”. 
 
 
Figure 5-4  Symbol field for implementation data type 
The corresponding code generated is: 
 
In Rte_Type.h: 
# define Rte_TypeDef_MyImpl_Type_Ref_Value 
typedef uint8 MyImpl_Type_Ref_Value
 
The Value of the Symbol field is used as implementation data type name in the generated 
code. 
 
 
 
Note 
Symbols have a name field and a value field. 
  The  name  field  is  the  name  of  the  symbol  element  handled  by  the  tools  and  the 
generators. The name that really appears in the code is what the value field contains. 
 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
72 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
5.4 
Data type mapping assistant 
 
A data type mapping assistant is available in DaVinci Developer. It is accessible by right 
click on the ECU Project root and by selecting “Data Type Mapping…” in the context menu 
(see Figure 5-5). 
 
 
Figure 5-5  Data type mapping assistant opening 
 
Figure 5-6  Data type mapping assistant 
 
2014, Vector Informatik GmbH 
Version: 1.1 
73 / 80 
based on template version 5.1.0 


Technical Reference Autosar 4.0 - DataTypes 
This  assistant  is  a  comfort  editor  allowing  the  mapping  of  application  data  types  to 
implementation data types. In this editor it is possible: 
  To let the assistant finding and mapping automatically compatible implementation data 
types using the “Find Mapping” button 
  To let the assistant creating automatically a compatible implementation data types and 
mapping it using the “Find Mapping” button 
  To  create  manually  the  mapping  by  right-clicking  on  the  application  data  type  line, 
choose “Map…” and select the implementation data type among the existing ones. 
 
 
 
Note 
The  assistant  is  working  only  in  the  context  of  the  ECU  project.  That  means  only 
  application  data  types  that  are  used  in  an  ECU  project  will  be  displayed.  If  an 
application data type is only created in the library but not used, it will not appear in the 
list. 
 
 
 
  Description of the editor fields: 
 
>  “Implementation  Data  Types”:  package  where  the  automatically  created 
implementation data types shall be saved. 
 
>  “Platform Types”: package where the assistant shall look for platform types. 
 
 
>  “Prefix”: prefix to add to the automatically created implementation data types. 
 
>  “Postfix”: suffix to add to the automatically created implementation data types. 
 
 
>  “Use Platform Types”: if checked, the assistant will search only in the platform types’ 
list to find a compatible implementation data type to map. 
 
>  “Use  custom  Implementation  Data  Types”:  lets  the  assistant  searching  for  custom 
implementation data types. 
 
>  “Create  primitive  Data  Types”:  lets  the  assistant  creating  new  primitive 
implementation data types 
2014, Vector Informatik GmbH 
Version: 1.1 
74 / 80 
based on template version 5.1.0 



Technical Reference Autosar 4.0 - DataTypes 
 
>  “Create  complex  Data  Types”:  lets  the  assistant  creating  new  complex 
implementation data type 
 
>  “Prefer  integer  to  float  Data  Type”:  lets  the  assistant  mapping  by  preference  to 
integer types than to float types. 
 
>  “Allow  selection  of  incompatible  Data  Types”:  allows  that  non  Autosar  compatible 
data types are mapped 
 
>  “Find Mapping”: starts to search for a compatible implementation data type 
 
 
>  “Reset”: resets to the state when the editor was open  
 
 
  2 examples are presented here: 
 
>  1st Example:  
 
After  pressing  „Find  Mapping“,  the  mapping  assistant  proposes  to  map  with  uint8  (see 
Figure  5-7).  The  state  is  set  as  “new”  because  it  is  a  new  proposal  from  the  assistant. 
Pressing “ok” or “apply now” creates the mapping and changes the state to “exists”. The 
new  mapping  creation  is  reflected  by  Figure  5-9:  a  new  data  type  mapping  set  with  the 
default  name  “DataTypeMappings_DEV”  is  created  where  the  application  data  type  is 
mapped to uint8 and the corresponding SWC is referencing that data type mapping set. 
 
 
Figure 5-7  New mapping 
 
 
Figure 5-8  Existing mapping 
2014, Vector Informatik GmbH 
Version: 1.1 
75 / 80 
based on template version 5.1.0 





Technical Reference Autosar 4.0 - DataTypes 
     
 
 
 
Figure 5-9  Created after new mapping 
 
>  2nd example: 
 
„Create primitive Data Types“ is checked. By clicking “Find Mapping” the state changes to 
“create data type” (see Figure 5-10).  
Clicking “ok” or “apply now” a new implementation data type is created and mapped to the 
application data type. Its name starts with the “Prefix” field, then the application data type 
name and then the “Postfix” field. The state changes to “exists” (see Figure 5-11). 
The new implementation data type can be found in  the  implementation data type library, 
the  mapping  in  DataTypeMappings_DEV,  which  is  referenced  by  the  SWC  (see  Figure 
5-12)

 
 
Figure 5-10  New mapping with implementation data type creation 
2014, Vector Informatik GmbH 
Version: 1.1 
76 / 80 
based on template version 5.1.0 







Technical Reference Autosar 4.0 - DataTypes 
 
 
Figure 5-11  Existing mapping with implementation data type creation 
 
 
 
 
Figure 5-12  Created after new mapping with implementation data type creation 
 
 
 
 
Note 
The  assistant  needs  information  from  the  application  data  type  constraints  and/or 
  compu methods to be able to map it. In case this information is not sufficient, then the 
assistant  will  not  be  able  to  map  automatically  and  the  state  will  be  “no  mapping 
possible”: 
  
 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
77 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
5.5 
Type emitter 
 
As  defined  by  Autosar  implementation  data  types  have  a  “Type  emitter”  parameter.  It 
defines the entity that shall provide the code definition of the implementation data type. 
 
If  Type  emitter  is  set  to  “RTE”  or  is  empty,  the  RTE  shall  generate  a  typedef  for  the 
implementation data type according to the native declaration of the  referenced base type 
(category Value) or according to the referenced implementation data type (category Type 
Reference). 
If Type  emitter  has  any  other  value,  then  the  RTE  does  not  generate  the  corresponding 
typedef.  It  is  here  intended  that  the  definition  of  that  implementation  data  type  will  be 
provided by another entity. 
 
2014, Vector Informatik GmbH 
Version: 1.1 
78 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
6  Glossary and Abbreviations 
6.1 
Glossary 
Term 
Description 
 
 
 
 
6.2 
Abbreviations 
Abbreviation 
Description 
SWC 
Software Component 
BswM 
Basic Software Manager 
ComM 
Communication Manager 

Programming language C 
 
 
2014, Vector Informatik GmbH 
Version: 1.1 
79 / 80 
based on template version 5.1.0 

Technical Reference Autosar 4.0 - DataTypes 
7  Contact 
Visit our website for more information on 
 
>  News 
>  Products 
>  Demo software 
>  Support 
>  Training data 
>  Addresses 
 
www.vector.com 
 
2014, Vector Informatik GmbH 
Version: 1.1 
80 / 80 
based on template version 5.1.0 

Document Outline


3.21 - TechnicalReference_EcuConfigurationFiles

Microsoft Word - TechnicalReference_EcuConfigurationFiles.doc

3.23 - TechnicalReference_EcuConfigurationFiless


 
 
 
 
 
 
 
 
 
 
 
 
ECU-C File Handling 
Technical Reference 
 
 
 
 
Version 1.13 
 
 
 
 
 
 
Authors: 
Michael Schuele, Matthias Wernicke 
Version: 
1.13 
Status: 
released (in preparation/completed/inspected/released) 
 
 
 


ECU-C File Handling Technical Reference 
 
History 
 
Author 
Date 
Version 
Remarks 
M. Schuele 
2009-02-19 
0.1.0 
Initial version 
M. Schuele 
2009-04-11 
1.0.0 
final version 
M. Wernicke  2009-04-17 
1.1 
Review and update 
M. Schuele 
2009-08-03 
1.2 
Added description of difference dialog 
M. Schuele 
2010-01-27 
1.3 
Added new ECU-C parameters for DaVinci 3.0 
M. Wernicke  2010-01-28 
1.4 
Review and update 
M. Schuele 
2010-05-05 
1.5 
Introduced different but equivalent parameter values 
M. Schuele 
2010-05-14 
1.6 
Added new ECU-C parameters for DaVinci 3.0 SP2 
M. Schuele 
2010-07-20 
1.7 
Added new ECU-C parameters for DaVinci 3.0 SP3 
M. Schuele 
2010-11-29 
1.8 
Added new ECU-C parameters for DaVinci 3.0 SP4 
M. Schuele 
2011-05-06 
1.9 
ComTimeoutFactor synchronization is configurable 
M. Schuele 
2012-02-02 
1.10 
Added new ECU-C parameters for DaVinci 3.0 SP5 and 3.1 
M. Schuele 
2012-08-30 
1.11 
Added a note about AUTOSAR 4 
M. Schuele 
2013-05-03 
1.12 
Added new ECU-C parameters for DaVinci 3.5 
M. Schuele 
2014-03-27 
1.13 
Added SchM config to Rte section 
 
2014, Vector Informatik GmbH 
Version: 1.13 
2 / 34 
 
 


ECU-C File Handling Technical Reference 
 
Contents 
1  Overview ......................................................................................................................... 5 
1.1 
Intended Audience .......................................................................................... 5 
1.2 
Terms and Acronyms ....................................................................................... 5 
2  The ECU-Configuration Process ................................................................................... 7 
2.1 
The ECU-Configuration File ............................................................................ 8 
3  DaVinci DEV and the ECU-C file .................................................................................. 11 
3.1 
Project Assistant............................................................................................. 11 
3.2 
Initial synchronization (bi-directional update) .................................................. 11 
3.3 
Automatic synchronization ............................................................................ 12 
3.4 
ECU-C file locking ......................................................................................... 12 
3.5 
BSWMD files ................................................................................................. 13 
3.5.1 
Pre- and Recommended config sections ....................................................... 13 
3.6 
Synchronizing an ECU-C file ......................................................................... 13 
3.6.1 
Step 1: Analysis of the RTE configuration in the workspace .......................... 14 
3.6.2 
Step 2: Comparison of workspace and ECU-C file ........................................ 15 
3.6.3 
Synchronization direction “import” ................................................................. 16 
3.6.4 
Synchronization direction “export” ................................................................. 16 
3.6.5 
ECU-Configuration difference dialog ............................................................. 16 
4  ECU-Configuration parameters ................................................................................... 18 
4.1 
Vendor Specific Configuration Parameters .................................................... 18 
4.2 
Rte module ................................................................................................... 18 
4.2.1 
Parameters ................................................................................................... 18 
4.3 
SchM module ................................................................................................ 19 
4.3.1 
General ......................................................................................................... 19 
4.3.2 
Parameters ................................................................................................... 20 
4.3.3 
Rte ................................................................................................................ 20 
4.3.4 
Os 20 
4.4 
Com module.................................................................................................. 21 
4.4.1 
Parameters ................................................................................................... 21 
4.4.2 
Equivalent parameter values ......................................................................... 22 
4.4.2.1 
ComTimeoutFactor ....................................................................................... 23 
4.5 
Os module .................................................................................................... 23 
4.5.1 
Parameters ................................................................................................... 23 
4.5.2 
Equivalent parameter values ......................................................................... 26 
4.6 
NvM module .................................................................................................. 26 
4.6.1 
Parameters ................................................................................................... 26 
2014, Vector Informatik GmbH 
Version: 1.13 
3 / 34 
 
 


ECU-C File Handling Technical Reference 
 
4.6.2 
Equivalent parameter values ......................................................................... 27 
4.7 
Board ............................................................................................................ 27 
4.7.1 
Parameters ................................................................................................... 27 
4.7.2 
Equivalent parameter values ......................................................................... 28 
4.8 
ComSignals and ComSignalGroups .............................................................. 28 
4.8.1 
dbc files ......................................................................................................... 28 
4.8.2 
ECU-Extract .................................................................................................. 28 
4.8.3 
AUTOSAR 2.1 ............................................................................................... 29 
4.8.4 
AUTOSAR 3.x ............................................................................................... 29 
4.8.5 
Relevant ComSignals .................................................................................... 29 
4.8.6 
Callbacks ...................................................................................................... 29 
5  Best practices .............................................................................................................. 31 
5.1 
Always work on the latest communication databases .................................... 31 
5.2 
Do not edit the same module configuration in different tools at the same 
time ............................................................................................................... 31 
5.3 
Ensure that all tools use the same max. SHORT-NAME length ..................... 32 
5.4 
ECU-C files have to be valid according to the AUTOSAR schema ................ 32 
5.5 
Configuration elements must have unique SHORT-NAMEs .......................... 33 
6  Contact ......................................................................................................................... 34 
2014, Vector Informatik GmbH 
Version: 1.13 
4 / 34 
 
 



ECU-C File Handling Technical Reference 
 
1   Overview 
DaVinci  Developer  is  part  of  Vector’s  solution  for  AUTOSAR  compatible  ECU 
development. It is used to configure and generate the Rte in AUTOSAR 3.x based projects 
and therefore interacts with other BSW configurators through the ECU-Configuration file. 
This  document  describes  the  configuration  process  related  to  DaVinci  Developer  from  a 
technical  point  of  view,  trying  to  give  the  user  a  better  understanding  of  the  internal 
processes and how the tool reacts in different situations. 
 
 
 
Note 
  Starting  with  DaVinci  Developer  3.3,  AUTOSAR  4.0  based  software  designs  can  be 
created  and  edited.  However,  the  configuration  and  generation  of  the AUTOSAR  4.0 
Rte  has  been  moved  from  DaVinci  Developer  to  DaVinci  Configurator  Pro. Therefore 
this document is only relevant for AUTOSAR 3.x based projects. 
 
 
1.1 
 Intended Audience 
This  document  aims  at  ECU  developers  who  are  involved  in  the  AUTOSAR  compatible 
ECU-Configuration process and use DaVinci Developer to configure and generate the Rte 
module. 
As DaVinci DEV updates the ECU-Configuration file automatically during save and load of 
a  workspace,  the  presented  information  is  not  essential  when  working  with  the  tools  but 
provides  some  additional  information  how  the  ECU-Configuration  process  is  handled 
behind the scenes. 
1.2 
Terms and Acronyms 
Term 
Definition 
DaVinci DEV 
DaVinci Developer 
NWD 
Network Designer 
AR 
AUTOSAR – Automotive Open System Architecture 
GUI 
Graphical user interface 
Rte 
Runtime environment 
BSW 
Basic Software 
BSWMD 
Basic Software Module Description 
2014, Vector Informatik GmbH 
Version: 1.13 
5 / 34 
 
 


ECU-C File Handling Technical Reference 
 
ECU-C file 
ECU-Configuration file 
ECU-C-Synchronization  Synchronization  of  DaVinci  DEV  workspace  with  the 
data in an ECU-C file 
 
2014, Vector Informatik GmbH 
Version: 1.13 
6 / 34 
 
 


ECU-C File Handling Technical Reference 
 
2  The ECU-Configuration Process 
 
Vector
SW-Components
DaVinci DEV
RTE
Communication
ECU Extract of 
System Description

Vector
BSW
DaVinci
Configurator Pro
Basic Software
Module Description

ECU Cfg
Descr

 
Figure 2-1 Basic SW Configuration process 
Figure  2-1  displays  the  ECU  configuration  process  as  it  is  supported  by  Vector’s 
AUTOSAR  solution.  All  configuration  tools  read  from  and  write  to  a  common  ECU-
Configuration  file  which  will  be  used  by  the  different  BSW  code  generators  after  the 
configuration of all modules has been completed. 
The various BSW modules are part of different layers of the AUTOSAR stack with the Rte 
lying on top. Whenever one module utilizes another one its configuration likely depends on 
the configuration of the utilized module and the configurator has to read or even write not 
only the configuration section corresponding to his own module but also the section of the 
other module. 
Since this document is focused on DaVinci DEV, chapter 4 describes the dependencies of 
the  Rte  configuration  on  other  module  configurations  in  detail.  But  before  going  into 
details, the next section provides some basic knowledge about the ECU-Configuration file 
structure. 
2014, Vector Informatik GmbH 
Version: 1.13 
7 / 34 
 
 


ECU-C File Handling Technical Reference 
 
2.1 
The ECU-Configuration File 
AUTOSAR  specifies  all  configuration  parameters  of  a  BSW  module  as  a  so  called 
„Standardized  Module  Definition“.  These  definitions  are  contained  in  an  XML-Document 
(AUTOSAR_EcucParamDef.arxml) and are modeled according to the „ECU Configuration 
Parameter Definition Meta model“.  
To  support  vendor  specific  configuration  parameters,  BSW  modules  may  provide  a 
BSWMD  („Vendor  Specific  Module  Definition“)  file  which  includes  the  standardized 
parameter  definitions  for  the  particular  module  and  defines  additional  parameters. 
Additionally,  a  BSWMD  may  contain  a  section  with  a  pre-configuration,  i.e.  parameter 
values  which  cannot  be  changed,  or  a  section  with  a  recommended  configuration,  i.e. 
parameter values which are appropriate for most use cases but can still be changed. 
BSWMD  files  define  which  parameters  are  available  to  configure  a  BSW  module,  an 
example is given in Figure 2-2. The ECU-Configuration file contains the actual parameter 
values, i.e. the configuration of the modules used on a specific ECU, an example is given 
in Figure 2-1. 
 
<AUTOSAR> 
  <TOP-LEVEL-PACKAGES> 
    <AR-PACKAGE> 
      <SHORT-NAME>MICROSAR</SHORT-NAME> 
      <ELEMENTS> 
        <MODULE-DEF> 
          <SHORT-NAME>Com</SHORT-NAME> 
          <CONTAINERS> 
            <PARAM-CONF-CONTAINER-DEF> 
              <SHORT-NAME>ComConfig</SHORT-NAME> 
              <SUB-CONTAINERS> 
                <PARAM-CONF-CONTAINER-DEF> 
                  <SHORT-NAME>ComSignal</SHORT-NAME> 
                  <PARAMETERS> 
                    <INTEGER-PARAM-DEF> 
                      <SHORT-NAME>ComBitPosition</SHORT-NAME> 
                      <MAX>63</MAX> 
                      <MIN>0</MIN> 
 
Figure 2-2 Configuration parameter definition of “ComBitPosition” in the BSWMD file 
 
2014, Vector Informatik GmbH 
Version: 1.13 
8 / 34 
 
 


ECU-C File Handling Technical Reference 
 
<AUTOSAR> 
<TOP-LEVEL-PACKAGES> 
<AR-PACKAGE> 
<SHORT-NAME>MyProject</SHORT-NAME> 
<ELEMENTS> 
<ECU-CONFIGURATION> 
<SHORT-NAME>MyEcu</SHORT-NAME> 
<ECU-EXTRACT-REF DEST="SYSTEM"> 
/VehicleProject/ReceiverEcu 
</ECU-EXTRACT-REF> 
<MODULE-REFS> 
<MODULE-REF DEST="MODULE-CONFIGURATION"> 
/MyProject/Com 
</MODULE-REF> 
</MODULE-REFS> 
</ECU-CONFIGURATION> 
 
<MODULE-CONFIGURATION> 
<SHORT-NAME>Com</SHORT-NAME> 
<DEFINITION-REF DEST="MODULE-DEF"> 
/AUTOSAR/Com 
</DEFINITION-REF> 
<CONTAINERS> 
<CONTAINER> 
<SHORT-NAME>ComConfig</SHORT-NAME> 
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF"> 
/AUTOSAR/Com/ComConfig 
</DEFINITION-REF> 
<SUB-CONTAINERS> 
<CONTAINER> 
<SHORT-NAME>Signal_1</SHORT-NAME> 
<DEFINITION-REF DEST="PARAM-CONF-CONTAINER-DEF"> 
/AUTOSAR/Com/ComConfig/ComSignal 
</DEFINITION-REF> 
<PARAMETER-VALUES> 
<INTEGER-VALUE> 
<DEFINITION-REF DEST="INTEGER-PARAM-DEF"> 
/AUTOSAR/Com/ComConfig/ComSignal/ComBitPosition 
</DEFINITION-REF> 
<VALUE>7</VALUE> 
</INTEGER-VALUE> 
[…] 
 
Figure 2-3 Value specification for configuration parameter “ComBitPosition” in the ECU-C file 
The two files are connected by means of standard AUTOSAR references as defined in the 
specification „Model Persistence Rules for XML“. A parameter is configured in the ECU-C 
file  by  referencing  its  parameter  definition  element  included  in  the  BSWMD  file  (via 
<DEFINITION-REF>)  and  defining  the  actual  value  (highlighted  in  red  in  the  given 
examples). 
2014, Vector Informatik GmbH 
Version: 1.13 
9 / 34 
 
 


ECU-C File Handling Technical Reference 
 
As  each  BSW  module’s  parameters  are  defined  in  a  separate  <MODULE-DEF>,  one 
<MODULE-CONFIGURATION>  is  needed  for  each  of  the  BSW  modules.  The  complete 
configuration  of  the  ECU  is  defined  by  <ECU-CONFIGURATION>  which  references  all 
relevant BSW module configurations. 
All  “Standardized  Module  Definitions” are  included  in a package  named  “AUTOSAR” and 
only  those  are  allowed  to  be  placed  there.  “Vendor  Specific  Module  Definitions”  must  be 
included in a different package; Vector modules use “MICROSAR” as the package name. 
Since it is required that custom BSWMD files must include all standardized parameters as 
well,  the  package  name  is  visible  in  all  references  to  the  parameter  definitions.  Hence, 
switching  to  another  BSWMD  requires  adaption  of  all  corresponding  references  in  the 
ECU-C file. 
As  already  mentioned,  a  module’s  configuration  may  depend  on  the  settings  of  another 
module. In this case a reference parameter contains an AUTOSAR reference as its value, 
pointing  into  the  configuration  of the  other module, e.g.  the  runnable mapping  of  the  Rte 
module  configuration  references  the  task  of  the  Os  configuration  it  is  mapped  to  via 
<VALUE-REF DEST="CONTAINER">/MyProject/Os/Task1</VALUE-REF>. 
2014, Vector Informatik GmbH 
Version: 1.13 
10 / 34 
 
 


ECU-C File Handling Technical Reference 
 
3  DaVinci DEV and the ECU-C file 
As displayed in Figure 2-1, DaVinci DEV is used to configure and eventually generate an 
AUTOSAR compatible RTE. Obviously this requires reading from and writing to the Rte 
module configuration in the ECU-C file, but also to other modules, which directly interface 
the RTE (called depending modules within this document). Depending modules are Com, 
NvM and Os. These modules may be read and/or changed, too. Some of these foreign 
parameters are directly visible and changeable; some are automatically derived from other 
settings or the software design. Some parameters are needed to ensure that the 
generated code of different BSW generators matches regarding used and/or provided 
APIs, handles and other interface related code. Details about the affected parameters and 
their sources or relation to the Rte configuration are given in chapter 4. 
3.1 
Project Assistant 
The most convenient way to create a new ECU-C file is the Project Assistant (available via 
the menu item File | Project Assistant). The Project Assistant automatically creates one or 
more1 ECU-C files based on an ECU Extract of System Description and a SIP (Software 
Integration Package) from Vector, and sets up an ECU-Project in DaVinci DEV. 
3.2 
Initial synchronization (bi-directional update) 
To update an existing ECU-C file created by any third party tool without involving DaVinci 
DEV, you have to open the properties dialog of the ECU-Project (see Figure 3-1). The 
“select file” button (labeled “…”) shows a “File Open” dialog where an existing ECU-C file 
can be selected. The selected file is analyzed and if the configuration does not match the 
workspace settings, a synchronization dialog is displayed (this is explained in detail in 
section3.6.1). When the properties dialog is closed the ECU-C file will be assigned to the 
ECU-Project. To perform the synchronization process again, you can then select 
“Synchronize ECU-Configuration” from the context menu of the ECU-Project. 
 
                                            
1 Several ECU-C files are created if „one file per module“ is selected in the „Output Paths“ section. 
2014, Vector Informatik GmbH 
Version: 1.13 
11 / 34 
 
 



ECU-C File Handling Technical Reference 
 
 
Figure 3-1 ECU-C file reference in the ECU-Project properties dialog 
Before the Rte generator is started, DaVinci DEV checks if the ECU-Project has an ECU-C 
file assigned and automatically executes the synchronization process. This ensures that 
the current workspace settings reflect the settings in the ECU-C file and that the ECU-C 
file contains the current configuration of the workspace. Both configurations must match 
because all code generators of the different modules have to work with exactly the same 
ECU configuration data. 
3.3 
Automatic synchronization 
Once  the  ECU-C file  is  assigned  to the ECU-Project  it  is  checked for  consistency  during 
every  load  or  save  of  the  workspace.  This  ensures  that  other  tools  always  work  with  a 
consistent configuration. 
3.4 
ECU-C file locking 
The  tools  DaVinci  Configurator,  DaVinci  Developer  and  GENy  implement  a  locking 
mechanism to ensure that the user edits a specific configuration only in a single tool at a 
time. If the configuration is changed and not yet saved in one tool the other tools consider 
the configuration as read-only and display this state accordingly. This mechanism targets 
on  a  single  user’s  daily  work,  it  does  not  support  distributed  development  or  multi-user 
scenarios. 
2014, Vector Informatik GmbH 
Version: 1.13 
12 / 34 
 
 


ECU-C File Handling Technical Reference 
 
3.5 
BSWMD files 
The ECU-Project properties dialog allows selecting the BSWMD files for each of the 
potentially modified modules. These files are needed for two reasons: 
n  
Since configuration parameters are identified through an absolute reference to their 
parameter definition, the name of the root package in the BSWMD file has to be 
known. 
n  
DaVinci DEV only exports Vector specific configuration parameters if the 
corresponding BSWMD file is assigned to the ECU-Project. 
The selection of a specific BSWMD file for the Rte is not required because DaVinci DEV 
only configures the Vector’s MICROSAR RTE, which is based on the standard AUTOSAR 
BSWMD file of the RTE. 
 
If the ECU-C file follows the AUTOSAR Releases 2.1 Specification, DaVinci DEV uses the 
standard module definitions, <DEFINITION-REF> values therefore begin with 
“/AUTOSAR”. 
 
If the ECU-C file follows the AUTOSAR Releases 3.x Specification, DaVinci DEV implicitly 
uses the Rte BSWMD file, <DEFINITION-REF> values therefore begin with 
“/MICROSAR”. 
 
If there’s a mismatch between the configured BSWMD file and the module configuration in 
the ECU-C file (e.g. the BSWMD file’s package name is MICROSAR and the ECU-C file’s 
module configuration references an AUTOSAR package), the definition of the ECU-C file is 
used. A message about this misconfiguration is written to the “Action Log” window saying: 
 
ActionLog output 
 
Inconsistent BSWMD configuration detected: 
/MICROSAR/Os is defined by BSWMD file D:\BSWMD_files\Os_bswmd.arxml 
  /AUTOSAR/Os is used by ECU-C file D:\ECU_1_ecuc.arxml 
using ECU-C definition 
 
The misconfiguration can be detected because the module names are standardized, i.e. 
the <DEFINITION-REF> of a <MODULE-CONFIGURATION> always follows the rule 
/[MODULE-DEF-PACKAGE-NAME]/[standardized module name]. 
3.5.1 
Pre- and Recommended config sections 
DaVinci  DEV  in  general  does  not  evaluate  Pre-  and/or  Recommended  Module 
Configuration sections in the BSWMD or any other file. However, one exception exists for 
the  Os  where  a  preconfigured  OsCounter  is  set  as  an  Alarm’s  OsAlarmCounterRef  by 
default (see 4.5.1). 
3.6 
Synchronizing an ECU-C file 
Synchronizing an ECU-C file is necessary if the configuration of the RTE does not match 
to the configuration of the depending modules (see section 4 for a detailed description of 
2014, Vector Informatik GmbH 
Version: 1.13 
13 / 34 
 
 



ECU-C File Handling Technical Reference 
 
the parameters for each module). The synchronization process can be divided into several 
steps which will be explained in the following sections. 
3.6.1 
Step 1: Analysis of the RTE configuration in the workspace 
In  the  first  step  the  settings  of  the  workspace  (more  precisely,  the  ECU  project)  are 
analyzed  and  all  additionally  derived  attributes  are  calculated.  In  general,  there  are  two 
different categories of settings. 
The  first  category  (explicit  parameters)  includes  settings  which  are  directly  configured  by 
the user in DaVinci DEV or derived from this configuration because of standardized rules 
given  in  AUTOSAR’s  System  Template  Specification  chapter  “Harmonisation  between 
Upstream Templates and ECU Configuration”. 
The  second  category  (implicit  parameters)  includes  implementation  dependant  settings 
which are determined by the Rte generator and consists of those Os module configuration 
elements which are written by DaVinci DEV and are not visible to the user (see section 4.5 
for details). 
To  ensure  that  the  determined  configuration is  consistent the  corresponding  ECU-Project 
is checked for a correct design. If DaVinci DEV detects an error the dialog in Figure 3-2 is 
shown. 
 
 
Figure 3-2 ECU-Project is inconsistent 
In this case the implicit parameters won’t be available in the next steps. Depending on the 
next  actions  this  may  remove  already  existing  implicit  parameters  from  the  configuration 
although  this  was  not  intended. Therefore  the  dialog  is  shown  to  indicate  that  there  is  a 
problem which should be fixed if a correct Os configuration is needed. The design errors 
are displayed in the “Messages” tab and should be checked for a more detailed description 
of the problem. 
If DaVinci DEV did not detect any problems or the user wants to continue anyway, the Rte 
generator  is  called  which  determines  all  required  Os  elements.  Since  some  design 
constraints are currently not checked by DaVinci DEV additional checks are performed by 
the  Rte  generator.  The  dialog  in  Figure  3-3  is  shown  if  the  Rte  generator  aborted  and 
reported an error. The detailed error message is available in the “Code Generator Log” tab. 
2014, Vector Informatik GmbH 
Version: 1.13 
14 / 34 
 
 




ECU-C File Handling Technical Reference 
 
 
 
Figure 3-3 The Rte generator detected an inconsistent system design 
3.6.2 
Step 2: Comparison of workspace and ECU-C file 
If all parameters could be derived, the given ECU-C file is imported and the settings of the 
workspace are compared to the settings of the ECU-C file. If differences were detected the 
dialog in Figure 3-4 is shown. The user can then select whether the settings of the ECU-C 
file should be imported (direction “<<”), i.e. the ECU-Project should be changed according 
to the settings in the ECU-C file, or if the settings of the ECU-Project should be exported, 
i.e.  the  ECU-C  file  should  be  changed  according  to  the  settings  in  the  ECU-Project 
(direction  “>>”).  Remember  that  an  export  might  remove  existing  Os  elements  from  the 
ECU-C file if the ECU-Project is inconsistent but the previously shown dialog (Figure 3-2) 
was closed with “Yes” (“export anyway”). 
 
 
Figure 3-4 ECU-C-Synchronization dialog 
On the left side the dialog displays the timestamp of the last synchronization of the ECU-
Project, and on the right side the “last modified” timestamp of the ECU-C file is displayed. 
Since both the ECU-C file and the ECU-Project can be edited in parallel there’s no rule of 
thumb  to  decide  which  synchronization  direction  has  to  be  chosen  without  considering 
additional  information.  Therefore  the  “Details…”  button  shows  a  dialog  with  the  actual 
differences of both configurations. Section 3.6.5 describes the dialog in detail. 
2014, Vector Informatik GmbH 
Version: 1.13 
15 / 34 
 
 



ECU-C File Handling Technical Reference 
 
Chapter 5 shows some practical approaches, which makes it easier for the user to avoid 
errors  like  selecting  the  wrong  synchronization  direction  or  to  run  a  synchronization 
process even though it is not required to do so. 
Chapter 4 shows in details, which parameters are affected or relevant for DaVinci DEV. 
The next sections describe what happens if the user selects “import” or “export”. 
3.6.3 
Synchronization direction “import” 
If “import” is selected, the ECU-Project is changed according to the settings of the ECU-C 
file. If one of the modules Rte, Os, Com, NvM is not configured in the ECU-C file the user 
is asked if he wants to delete the corresponding settings in the ECU-Project as well or  if 
they should be kept as they are. This is useful if the user already added a task mapping in 
DaVinci DEV but did not yet configure the Os module. When the import has completed the 
new  ECU-Project  settings  are  analyzed  again  and  the  resulting  configuration parameters 
are  compared  to  the  ECU-C  file  settings. This  is  necessary  because  changes  of  the  Rte 
configuration  might  result  in  additional  changes  of  the  Com  or  Os  configuration.  If  this  is 
the case the user is asked if he wants to update the corresponding module configuration in 
the  ECU-C  file  or  not  (Figure  3-5).  Depending  on  the  user’s  role  he  might  be  allowed  to 
change  the  Os  or  Com  configuration  or  he  has  to  confer  with  the  responsible  person  at 
first. 
Again,  the  “Details…”  button  allows  to  further  investigate  the  actual  differences  between 
the ECU-Project’s implicit configuration and the settings from the ECU-C file. 
 
 
Figure 3-5 Module specific ECU-Configuration update dialog 
3.6.4 
Synchronization direction “export” 
If  “export”  is  selected,  the  ECU-C  file  is  changed  according  to  the  settings  of  the  ECU-
project. This means that the explicit parameters are written to the file. Then it is checked if 
other  module  configurations  have  to  be  updated  with  implicit  parameters,  e.g. 
ComCallbacks or Os elements. If this is the case, DaVinci DEV asks the user to decide if 
the corresponding module configuration in the ECU-C file should be updated or not (Figure 
3-5). 
Again,  the  “Details…”  button  allows  to  further  investigate  the  actual  differences  between 
the ECU-Project’s implicit configuration and the settings from the ECU-C file. 
3.6.5 
ECU-Configuration difference dialog 
The ECU-Configuration difference dialog helps the user to decide about his further actions 
whenever  the  configurations  of  the  ECU-Project  and  the  ECU-C  file  are  inconsistent.  It 
2014, Vector Informatik GmbH 
Version: 1.13 
16 / 34 
 
 






ECU-C File Handling Technical Reference 
 
may be opened from the ECU-C synchronization dialog described in section 3.6.2 as well 
as  the  dialogs  from  sections  3.6.3  and  3.6.4  which  are  displayed  for  each  module 
configuration. 
 
Figure 3-6 ECU-Configuration difference dialog 
The dialog displays the relevant module configurations and a status icon indicating if there 
are inconsistencies (
) or if the settings in the ECU-Project and the ECU-C file are equal 
(
)  or  equivalent  (
).  Values  which  are  not  set  in  the  ECU-Project  (either  explicit  or 
implicit parameters) are not displayed in the dialog unless it is required that these values 
have to be removed from the ECU-C file as well. 
If there are only small changes in a complex configuration the “Show conflicts only” option 
may  be  used  to  reduce  the  displayed  parameters  to  those  which  are  considered 
inconsistent. 
Figure 3-6 shows an example where a new task “EventTask” was added in DaVinci DEV 
and  a  Runnable  was  moved  from  “ControlTask”  to  the  new  task.  The  SensorTask’s 
attribute “TaskType” is displayed as equivalent because “AUTO” is the default value if no 
specific attribute value is set in the ECU-C file. 
2014, Vector Informatik GmbH 
Version: 1.13 
17 / 34 
 
 


ECU-C File Handling Technical Reference 
 
4  ECU-Configuration parameters 
The following sections list the parameters and/or containers which are read and/or written 
by DaVinci DEV. All other parameters/containers in the ECU-C file do not affect the RTE. 
They can be changed in the ECU-C file without need of synchronizing the workspace. 
 
For some parameters it is allowed that the ECU-Project and the ECU-C file contain 
different values. These parameters and the corresponding rules are given in the following 
sections as well. Remember these values are not displayed in the difference dialog if the 
ECU-Project’s parameter has no specific value. 
4.1 
Vendor Specific Configuration Parameters 
Vendor  specific  configuration  parameters  for  Microsar  Modules  are  specified  in  each 
module’s  BSWMD  file  which  is  named  <Modulename>_bswmd.arxml.  These  parameters 
are marked with (MICROSAR) in the following sections. 
4.2 
Rte module 
4.2.1 
Parameters 
Rte module configuration 
Parameter 
Read/Write 
 
RteVfbTrace 
r/w 
 
RteVfbTraceFunction 
r/w 
 
RteA2LVersion (MICROSAR) 
r/w 
 
RteXcpEventSupport (MICROSAR) 
r/w 
 
RteMeasurementSupport 
r/w 
 
RteCalibrationSupport 
r/w 
 
RteCalibrationBufferSize 
r/w 
 
RteOptimizationMode 
r/w 
 
RteTaskConfiguration (MICROSAR) 
r/w 
 
  RteTaskUsesSchedule (MICROSAR) 
r/w 
 
  RteTaskRef (MICROSAR) 
r/w 
 
SwComponentInstance/ 
r/w 
 
  ImplementationRef 

 
2014, Vector Informatik GmbH 
Version: 1.13 
18 / 34 
 
 


ECU-C File Handling Technical Reference 
 
  ServiceComponentPrototypeRef 

 
  SoftwareComponentPrototypeRef 

 
  ExclusiveAreaImplementation 
r/w 
 
  NvRamAllocation/ 
r/w 
 
    SwNvRamMappingReference 
r/w 
 
    NvmBlockRef 
r/w 
 
  RunnableEntityMapping/ 
r/w 
 
    ActivationOffset 
r/w 
 
    PositionInTask 
r/w 
 
    RTEEventRef (resolved to Runnable) 
r/w 
 
    MappedToTaskRef 
r/w 
 
    RteCyclicTriggerImplementation (MICROSAR) 
r/w 
 
ComponentTypeCalibration/ 
 
 
  CalibrationSupportEnabled 
r/w 
 
Table 4-1 Rte configuration parameters 
These settings are configured in DaVinci DEV at ECU-Project level.  
Please note: 
•  The implementation selection is not read since DaVinci DEV always assumes that 
only one implementation per atomic component type exists. 
•  RteCyclicTriggerImplementation  is  not  visible  in  DaVinci  DEV  and  cannot  be 
modified. 
•  RteTaskConfiguration  settings  are  displayed  in  the  Os  section  in  the  ECU-
Configuration difference dialog (3.6.5). 
4.3 
SchM module 
4.3.1 
General 
The SchM module configuration is never changed by DaVinci DEV; it is only used as the 
read-only  master  configuration  for  RunnableEntityMappings  of  ServiceComponentTypes 
and the “Role” attribute of an OsTask. 
2014, Vector Informatik GmbH 
Version: 1.13 
19 / 34 
 
 


ECU-C File Handling Technical Reference 
 
4.3.2 
Parameters 
SchM module configuration 
Parameter 
Read/Write 
 
SchMMainFunctionMapping/ 

 
  SchMMainFunctionSymbol 

 
  SchMBswActivationOffset 

 
  SchMMappedToTask 

 
  SchMPositionInTask 

 
Table 4-2 SchM configuration parameters 
4.3.3 
Rte 
The SchM module configuration contains a task mapping for BSW functions similar to the 
RTEEvent  mapping  in  the  Rte  module  configuration.  If  these  BSW  functions  are 
represented by a Runnable of a corresponding ServiceComponentType the mapping of its 
RTEEvents to an OsTask has to be added to the Rte module configuration. 
If  DaVinci  DEV  detects  a  SchMMainFunctionMapping  for  a  Runnable2  of  a 
ServiceComponentType 
used 
in 
the 
ECUProject, 

corresponding 
virtual 
RunnableEntityMapping is derived automatically. The mapping is called virtual because it 
is  only  displayed  in  the  ECU-Configuration difference dialog  and not  automatically  added 
to  the  Rte  ECU-Configuration  section. This  has  to  be  done  by  the  usual  synchronization 
mechanism, i.e. the new RunnableEntityMapping has to be imported in DaVinci DEV and 
exported to the Rte ECU-Configuration section. 
If  the  Runnable  of  the  ServiceComponentType  is  already  mapped  to  another  OsTask  in 
DaVinci DEV, the mapping will be adapted to ensure both SchM and the Rte use the same 
OsTask. As the actual position of a runnable within a task is not used by the Rte generator 
in  this  context,  DaVinci  DEV  does  not  modify  PositionInTask  if  it  differs  from 
SchMPositionInTask. 
Whenever DaVinci DEV adds a virtual RunnableEntityMapping or modifies the OsTask of 
an existing RunnableEntityMapping a log message is written to the Action Log. 
 
4.3.4 
Os 
DaVinci DEV sets the “Role” attribute of an OsTask to “BSW Scheduler” if it is referenced 
by any SchMMainFunctionMapping container. 
                                            
2 the Runnable is found by matching its name with the value of SchMMainFunctionSymbol 
2014, Vector Informatik GmbH 
Version: 1.13 
20 / 34 
 
 


ECU-C File Handling Technical Reference 
 
4.4 
Com module 
4.4.1 
Parameters 
Com module configuration 
Parameter 
Read/Write 
 
ComSignal/ 

 
  ShortName 
(r) 
 
  ComDataInvalidAction 

 
  ComInvalidNotification 

 
  ComSignalDataInvalidValue 

 
  SystemTemplateSystemSignalRef 
(r)/w 
 
  ComSignalInitValue 

 
  ComErrorNotification 

 
  ComNotification 

 
  ComTimeoutNotification 

 
  ComTimeoutFactor 

 
  ComSignalType 

 
  ComFilter/ 
 
 
    ComFilterAlgorithm 

 
    ComFilterMask 

 
ComSignalGroup/ 

 
  ShortName 
(r) 
 
  ComDataInvalidAction 

 
  ComErrorNotification 

 
  ComInvalidNotification 

 
  ComNotification 

 
  ComTimeoutFactor 

 
  ComTimeoutNotification 

 
  SystemTemplateSignalGroupRef 
(r)/w 
 
2014, Vector Informatik GmbH 
Version: 1.13 
21 / 34 
 
 


ECU-C File Handling Technical Reference 
 
  ComGroupSignal/ 
(r)/w 
 
    ShortName 
(r) 
 
    ComSignalDataInvalidValue 

 
    ComSignalInitValue 

 
    ComSignalType 

 
    SystemTemplateSystemSignalRef 
(r)/w 
 
    ComFilter/ 
 
 
      ComFilterAlgorithm 

 
      ComFilterMask 

 
Table 4-3 Com configuration parameters 
For simplicity, only the term “ComSignal” is used in the following explanation but the basic 
principle is true for ComSignalGroups, too. 
DaVinci DEV assumes that the same communication database has been used to setup the 
workspace  as  well  as  the  ComSignals  in  the  ECU-C  file  (which  is  done  by  the  BSW 
Configuration  Tool  by  importing  e.g.  a  dbc  file  or  an AUTOSAR  ECU  Extract  of  System 
Description). Therefore, DaVinci DEV does not import ComSignals. 
“(r)” means that either the ShortName or the SystemTemplateSignalRef is read to identify 
the  ComSignal  and  store  its  name  to  be  able  to  use  correct  ComSignal  handles  in  the 
generated Rte code. 
Please see section 4.8 for details about ComSignals and usage of their symbolic handles. 
4.4.2 
Equivalent parameter values 
Com module configuration 
Parameter 
Equivalence rule 
ComSignal/ 
 
  ComDataInvalidAction 
Parameter values “NONE” and “” (undefined attribute value) are equivalent 
  ComInvalidNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
  ComSignalInitValue 
ECU-Project parameter is not set (InvalidAction is not set to “Replace”) 
  ComErrorNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
  ComNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
  ComTimeoutNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
2014, Vector Informatik GmbH 
Version: 1.13 
22 / 34 
 
 


ECU-C File Handling Technical Reference 
 
  ComTimeoutFactor 
ECU-C file value is greater than 0 but less than ECU-Project value 
Starting  with  DaVinci  Developer  3.0  SP3  this  depends  on  the  workspace 
setting “SWC Alive Timeout overrides ComSignal” (see 4.4.2.1) 
ComSignalGroup/ 
 
  ComDataInvalidAction 
Parameter values “NONE” and “” (undefined attribute value) are equivalent 
  ComErrorNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
  ComInvalidNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
  ComNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
  ComTimeoutFactor 
ECU-C file value is greater than 0 but less than ECU-Project value 
Starting  with  DaVinci  Developer  3.0  SP3  this  depends  on  the  workspace 
setting “SWC Alive Timeout overrides ComSignal” (see 4.4.2.1) 
  ComTimeoutNotification 
ECU-Project parameter is set but ECU-C file contains a non-Rte callback 
  ComGroupSignal/ 
 
    ComSignalInitValue 
ECU-Project parameter is not set (InvalidAction is not set to “Replace”) 
Table 4-4 Com equivalent parameter value rules 
If  a  ComSignal’s  callback  is  already  set  to  a  non-Rte  callback  this  configuration  is 
accepted  but  a  message  is  displayed  which  contains  the  ComSignal  name  and  the 
callback name. In this configuration the user is in charge to ensure that the Rte’s callback 
function is called. 
4.4.2.1 
ComTimeoutFactor 
Depending  on  the  design  approach,  the  ComTimeoutFactor  may  be  specified  by  the 
communication  design  or  should  be  updated  based  on  the  software  design.  To  support 
both  strategies,  a  workspace  specific  setting  allows  specifying  how  to  synchronize  the 
ComTimeoutFactor:  “never”,  only  if  the  value  of  the  software  design  is  lower  than  the 
current ComTimeoutFactor value or “always”. 
4.5 
Os module 
4.5.1 
Parameters 
The  column  “Category“  of  the  following  table  specifies  if  the  user  can  edit  the 
corresponding parameter (“DEV“) or if it is automatically derived by the Rte code generator 
(“Rte generator“). 
Os module configuration 
Parameter 
Read/Write 
Category 
2014, Vector Informatik GmbH 
Version: 1.13 
23 / 34 
 
 


ECU-C File Handling Technical Reference 
 
OsAlarm/ 

Implicit 
  OsAlarmAccessingApplication 

Implicit 
  OsAlarmAction/ 
 
Implicit 
    OsAlarmActivateTask/ 
 
Implicit 
      OsAlarmActivateTaskRef 

Implicit 
    OsAlarmSetEvent/ 
 
Implicit 
      OsAlarmSetEventRef 

Implicit 
      OsAlarmSetEventTaskRef 

Implicit 
  OsAlarmCounterRef 

Explicit 
OsEvent/ 

Implicit 
  OsEventMask 

Implicit 
OsApplication/ 

Explicit / Implicit 
  OsTrusted 
r/w 
Explicit / Implicit 
  OsAppAlarmRef 

Implicit 
  OsAppResourceRef 

Implicit 
  OsAppTaskRef 

Implicit 
  OsApplicationTrustedFunction/ 
 
Implicit 
    OsTrustedFunctionName 

Implicit 
    OsApplicationParams (MICROSAR) 

Implicit 
    OsApplicationReturnType (MICROSAR) 

Implicit 
    OsApplicationGenerateStub (MICROSAR) 

Implicit 
OsCounter 

Explicit 
OsResource/ 

Implicit 
  OsResourceProperty 

Implicit 
OsTask/ 
r/w 
Explicit 
  OsTaskPriority 
r/w 
Explicit 
  OsTaskSchedule 
r/w 
Explicit 
2014, Vector Informatik GmbH 
Version: 1.13 
24 / 34 
 
 


ECU-C File Handling Technical Reference 
 
  OsTaskTYPE (MICROSAR) 
r/w 
Explicit 
  OsTaskActivation 

Implicit 
  OsTaskAutostart/ 
 
Implicit 
    OsTaskAppModeRef 
r/w 
Implicit 
  OsTaskAppMode 

Implicit 
  OsTaskEventRef 

Implicit 
  OsTaskResourceRef 

Implicit 
  OsTaskAccessingApplication 

Explicit / Implicit 
  AdminData/ 
 
 
    DV_TaskTimingPreConfig (DaVinci DEV) 
r/w 
Explicit 
    DV_TaskTimingCycleTime (DaVinci DEV) 
r/w 
Explicit 
    DV_TaskTimingOffset (DaVinci DEV) 
r/w 
Explicit 
Table 4-5 Os module parameters 
Most  of  the  Os  objects  are  implicit,  i.e.  not  directly  visible  and  editable  in  DaVinci  DEV.  
Only OsTask and OsApplication can be changed by the user. All other objects (OsAlarm, 
OsEvent,  OsResource)  are  implicit.  They  reflect  the  implementation  of  the  MICROSAR 
RTE.  
The OsApplication is classified as “Explicit / Implicit”, because an additional implicit special 
OsApplication named “Rte” might be required beside the explicitly defined OsApplications. 
The  existence  of  this  implicit  OsApplication  depends  on  runnable  and  task  mapping 
configuration. 
Depending on the Os module version the configuration parameter OsTaskTYPE is stored 
in  different  configuration  container  layouts; therefore  the  module’s BSWMD file  has to  be 
configured at the ECU-Project to ensure that the parameter is written in the correct layout. 
All implicit Os elements are prefixed with “Rte_”. Their name must not be changed.  
OsCounter  and  OsAlarmCounterRef  are  only  exported  if  a  BSWMD  is  configured  which 
contains  a  pre-config  section  with  an  OsCounter.  The  OsAlarmCounterRef  is  set  to  this 
OsCounter by default but may be changed by the user in the Os configuration tool. 
The  optional  TaskTiming  configuration  is  used  by  DaVinci  DEV  to  check  for  consistent 
cyclic runnable triggers and is not evaluated by the Os module. 
2014, Vector Informatik GmbH 
Version: 1.13 
25 / 34 
 
 


ECU-C File Handling Technical Reference 
 
4.5.2 
Equivalent parameter values 
Os module configuration 
Parameter 
Equivalence rule 
OsAlarm/ 
 
  OsAlarmCounterRef 
No Os-BSWMD file is referenced or the user has configured a specific 
OsCounter. 
OsTask/ 
 
  OsTaskTYPE (MICROSAR) 
ECU-C  file  does  not  contain  a  value  and  no  Os-BSWMD  file  is 
referenced by the ECU-Project which contains the parameter definition 
  OsTaskAutostart 
ECU-Project parameter is not set 
Table 4-6 Os equivalent parameter value rules 
4.6 
NvM module 
4.6.1 
Parameters 
NvM module configuration 
Parameter 
Read/Write 
Category 
NvmBlockDescriptor/ 
r/w 
Explicit 
  NvmNvBlockLength 

Implicit/Explicit 
  NvmRamBlockDataAddress 

Implicit 
  NvmRomBlockDataAddress 

Implicit 
  NvmNvramBlockIdentifier 
r/w 
Explicit 
  NvmBlockUseSyncMechanism 

Implicit 
  NvmWriteRamBlockToNvCallback 

Implicit 
  NvmReadRamBlockFromNvCallback 

Implicit 
Table 4-7 NvM configuration parameters 
To  be  able  to  do  a  memory  mapping  in  DaVinci  DEV,  NvMBlocks  are  imported  from  an 
ECU-C  file.  However,  other  attributes  cannot  be  changed  and  the  above  mentioned 
attributes  are  automatically  derived  from  an  existing  memory  mapping  during  ECU-C-
Synchronization. 
2014, Vector Informatik GmbH 
Version: 1.13 
26 / 34 
 
 


ECU-C File Handling Technical Reference 
 
4.6.2 
Equivalent parameter values 
NvM module configuration 
Parameter 
Equivalence rule 
NvmBlockDescriptor/ 
 
  NvmNvBlockLength 
ECU-Project  parameter  is  not  set  (no  MemoryMapping  for 
NvMBlock) 
  NvmRamBlockDataAddress 
ECU-Project  parameter  is  not  set  (no  MemoryMapping  for 
NvMBlock) 
  NvmRomBlockDataAddress 
ECU-Project  parameter  is  not  set  (no  MemoryMapping  for 
NvMBlock) 
  NvmNvramBlockIdentifier 
ECU-Project  parameter  is  not  set  but  the  ECU-C  file  contains  a 
value 
  NvmBlockUseSyncMechanism 
ECU-Project  parameter  is  not  set  to  “true”  or  the  Nvm  BSWMD 
does not specify this parameter 
  NvmWriteRamBlockToNvCallback 
ECU-Project parameter is set but ECU-C file contains a non-Rte 
callback or the Nvm BSWMD does not specify this parameter 
  NvmReadRamBlockFromNvCallback  ECU-Project parameter is set but ECU-C file contains a non-Rte 
callback or the Nvm BSWMD does not specify this parameter 
Table 4-8 NvM equivalent parameter value rules 
4.7 
Board 
4.7.1 
Parameters 
Board module configuration 
Parameter 
Read/Write 
Category 
BoardGeneral/ 
 
 
  BoardAtomicVariableAccess (MICROSAR) 

(Explicit) 
  BoardEnableSnvPrefixes (MICROSAR) 

(Explicit) 
Table 4-9 Board configuration parameters 
The parameters are marked as “(Explicit)” because it is not visible in DaVinci DEV but the 
Rte generator adapts the Rte code according to the parameter’s value. 
2014, Vector Informatik GmbH 
Version: 1.13 
27 / 34 
 
 


ECU-C File Handling Technical Reference 
 
4.7.2 
Equivalent parameter values 
Board module configuration 
Parameter 
Equivalence rule 
BoardGeneral/ 
 
  BoardAtomicVariableAccess 
ECU-C file does not contain a value and ECU-Project parameter is set 
   (MICROSAR) 
to default value “Atomic16BitAccess” 
  BoardEnableSnvPrefixes 
ECU-C file does not contain a value and ECU-Project parameter is set 
  (MICROSAR) 
to value “false” 
Table 4-10 Board equivalent parameter value rules 
4.8 
ComSignals and ComSignalGroups 
Since the Rte utilizes the Com module to transfer application data over the communication 
bus  it  has  to  know  the  mapping  of  SystemSignals  to  ComSignal  handles  defined  by  the 
Com  module.  If  the  handles  are  completely  different  or  even  worse  existing  handles  are 
used for the wrong SystemSignal the result may be a simple compile error or in the worst 
case the problem is only visible at run time. In general, it is not possible to always use the 
default approach and use the SystemSignal’s name as the ComSignal handle because the 
Rte  has  to  support  Gateway  signals  (receive)  and  FanOut  signals  (write).  In  this  case, 
more  than  one  ComSignal  exists  for  each  SystemSignal  and  the  Rte  has  to  call  the 
Com_SendSignal-API for each of these ComSignals with the correct handle.   
To  ensure  that  the  Rte  knows  about  the  correct  ComSignal  handles,  there  are  different 
approaches  depending  on  the  AUTOSAR  version  and  the  source  of  the  communication 
data. 
4.8.1 
dbc files 
The signals in the dbc file are imported as SystemSignals and the ComSignal handles are 
derived from their name. In case of Gateway/FanOut signals the dbc file contains signal 
names following the rule <SystemSignal>_ISig_<number> to be able to identify the original 
SystemSignal and to provide a unique name for each of the ComSignals on the different 
communication buses. 
 
When such a dbc file is imported in DaVinci DEV one SystemSignal is created for each 
unique SystemSignal name and the complete signal name, e.g. SigMyData_ISig_0, is 
internally stored to be able to find the correct ComSignal during ECU-C-Synchronization. 
 
NWD creates dbc files with these signal names if the export option “Create GENy 
compatible signal names” is activated. 
4.8.2 
ECU-Extract 
An ECU-Extract is imported as it is, i.e. SystemSignals are imported as SystemSignals 
and no special naming rules apply for these signals. 
 
2014, Vector Informatik GmbH 
Version: 1.13 
28 / 34 
 
 


ECU-C File Handling Technical Reference 
 
If AUTOSAR 3.0 is used there’s one limitation: The AUTOSAR ShortName path of a 
SignalToIPDUMapping has to follow the rule: 
DaVinci/PKG_Cluster<ClusterName>/<PDUName>/<SystemSignalName>_S for 
Signals 
DaVinci/PKG_Cluster<ClusterName>/<PDUName>/<SystemSignalName>_SG 
for SignalGroups 
for CAN <PDUName> has to be the name of the CAN frame 
 
ECU-Extracts of DaVinci DEV and NWD follow this rule. 
If an ECU-Extract is used with a different package structure and/or naming of the relevant 
elements it is usually not possible to match the ComSignals of the ECU-C file with the 
SystemSignals of DaVinci DEV’s workspace. 
4.8.3 
AUTOSAR 2.1 
Since there is no explicit relation of a ComSignal to the corresponding SystemSignal the 
ECU-Synchronization identifies matching pairs of ComSignal/SystemSignal by their name. 
4.8.4 
AUTOSAR 3.x 
With AUTOSAR 3.0 an indirect relation from ComSignal to the SystemSignal was 
introduced. The ComSignal references a SignalToIPduMapping which itself eventually 
references the SystemSignal. 
To be able to resolve this reference from the ECU-Configuration into the ECU-Extract, the 
naming rule described in section 4.8.2 has to be fulfilled. 
 
4.8.5 
Relevant ComSignals  
It is important to remember that the Rte does not need to know all ComSignals and their 
handles. Only those SystemSignal/ComSignal relations are relevant which are used by 
applications, i.e. where a data mapping of DataElements to SystemSignals exists. If 
attributes of other ComSignals or attributes which are not handled by DaVinci DEV are 
modified it is not necessary to perform an ECU-C-Synchronization. 
To support the dbc based Com module configuration in a Com configurator like GENy, 
DaVinci DEV derives certain ComSignal attributes from the ECU-Extract because they are 
not contained in a dbc file, e.g. ComSignalType. These attributes are written to the ECU-C 
file during ECU-C-Synchronization. This causes modification of ComSignals which are not 
data mapped to a DataElement. 
4.8.6 
Callbacks 
Depending  on  the  configuration  the  Rte needs  to  be  informed  by  the  Com  module about 
certain events, e.g. when a signal is received. The Rte’s callback function name is set by 
DaVinci DEV at the corresponding ComSignal if the configuration parameter is not set. In 
case there is already a callback configured DaVinci DEV displays a corresponding warning 
message  in  the  Messages  window  with  all  ComSignals,  configured  callbacks  and 
additionally  needed  callbacks.  In  this  scenario  the  user  has  to  call  the  Rte  function 
manually. 
 
2014, Vector Informatik GmbH 
Version: 1.13 
29 / 34 
 
 


ECU-C File Handling Technical Reference 
 
Message Details 
 
ECUProject ECU1 contains the following ComSignals/ComSignalGroups with non-Rte 
callbacks: 
 
ComSignal Com_Signal_Temp_EnvData: 
 
CallbackName 
Needed Rte callback: Rte_COMCbk_Com_Signal_Temp_EnvData 
Assigned callback  : Custom_Callback_Com_Signal_Temp_EnvData 
 
The same mechanism is used for Nvm callbacks. 
2014, Vector Informatik GmbH 
Version: 1.13 
30 / 34 
 
 



ECU-C File Handling Technical Reference 
 
5  Best practices 
Since the process of ECU-Configuration is rather complex you should follow some basic 
rules given in this chapter. These rules should be seen as a guideline to avoid 
unnecessary ECU-C-Synchronization processes in DaVinci DEV and nevertheless ensure 
a consistent overall configuration. 
5.1 
Always work on the latest communication databases 
Always ensure that you are working on the latest communication databases in all tools. It 
is  often  a  problem  that  updated  dbc  files  are  imported  in  a  BSW  configuration  tool  like 
GENy but not in DaVinci DEV. If both tools work on a different communication model it is 
very likely that they derive a different set of ComSignals and report various errors. 
 
Example Error Message: 
  ComSignal 
with 
an 
invalid 
SystemSignal 
reference 
/DaVinci/PKG_ClusterCanA/PKG_PDU/Frame1/Signal1_S,  the  according 
ISignalToIPDUMapping object could not be identified. 
 
 
The given example shows an error message which is displayed if the ECU-C file contains 
a ComSignal which is not known in DaVinci DEV, i.e. the Com configuration was updated 
by  the  Com  configurator  based  on  a  certain  communication  database  but  DaVinci  DEV 
does not have the same information available. 
Another  reason  for  this  error  message  is  the  fact  that  DaVinci  DEV  can  only  work  with 
ECU-C files based on ECU-Extracts if the ECU-Extract follows a naming rule concerning 
ISignalToIPDUMappings (see section 4.8). 
5.2 
Do not edit the same module configuration in different tools at the same time 
Since several tools may edit the same module configuration (e.g. OsTasks can be edited in 
DaVinci  DEV  and  third  party  BSW  configuration  tool),  it  is  not  wise  to  use  both  tools  in 
parallel,  especially  if  some  of  the  configuration  settings  are  automatically  derived  from 
another  module’s  configuration.  The  decision  what  to  do  in  DaVinci  DEV,  i.e.  choose 
„import“  or  „export“  during  ECU-C-Synchronization,  becomes  much  easier  if  the  module 
configurations  are  edited  exclusively  by  one  tool  at  a  time.  So  you  might  add  a  new 
OsTask  in  DaVinci  DEV,  synchronize  the  ECU-C  file,  change  to  BSW  configuration  tool 
and  add  another  OsTask  for  a  non-Rte  purpose,  save  the  ECU-C  file,  switch  back  to 
DaVinci  DEV,  synchronize  the  ECU-C  file  again  and  add  some  more  OsTasks  for 
additional runnables. You should not add these new OsTasks in both tools in parallel, since 
either  the  OsTasks  defined  in  DaVinci  DEV  or  the  OsTaks  defined  in  the  BSW 
configuration tool will be lost when running the synchronization. 
If  you execute  external  generators  and/or  configurators from  DaVinci  DEV’s  generator  or 
configurator  lists  you  may  enable  “Options/Settings/ECU  generation/Automatic 
2014, Vector Informatik GmbH 
Version: 1.13 
31 / 34 
 
 



ECU-C File Handling Technical Reference 
 
synchronization  of  ECU  Configuration  file”.  In  this  case  the  ECU-C  file  is  always 
synchronized  before  the  executable  is  run  and  after  it  has  been  closed.  Although  this 
ensures that the ECU-Project and the ECU-C file are always in a consistent state, it might 
be  better  to  not  use  this  option  and  explicitly  synchronize  the  ECU-C  file  to  avoid 
unnecessary  and  probably  time  consuming  synchronizations  when  you  edit  configuration 
parameters 
which 
are 
not 
relevant  for 
DaVinci 
DEV 
and 
the 
executed 
generator/configurator. 
As  explained  in  3.4  Vector  tools  implement  a  mechanism  to  ensure  that  the  ECU 
configuration is editable in only one tool at the same time. So you don’t have the problems 
mentioned above when just working with the Vector tools. 
5.3 
Ensure that all tools use the same max. SHORT-NAME length 
Although AUTOSAR  specifications  up  to  releases  3.0.6 and  3.1.4  specify  that a  SHORT-
NAME  must not  exceed  the  length  of 32  characters,  DaVinci  DEV  supports  an extended 
length of up to 128 characters. If this setting is enabled (Options/Settings/AUTOSAR XML) 
it has to be ensured that all other tools support this extension, too. If this is not the case 
configuration elements won’t be found during ECU-C-Synchronization and will be created 
a second time if the name is longer than 32 characters. 
Starting  with  AUTOSAR  releases  3.0.7,  3.1.6  and  3.2,  SHORT-NAMEs  with  up  to  128 
characters are allowed by the standard. 
5.4 
ECU-C files have to be valid according to the AUTOSAR schema 
DaVinci  DEV  validates  the  ECU-C  file  against  the  corresponding  AUTOSAR  schema 
before it is imported. If the file is not valid the XML parser error is displayed in a dialog and 
the ECU-C-Synchronization is aborted. 
 
Figure 5-1 Validation of the ECU-C file failed 
2014, Vector Informatik GmbH 
Version: 1.13 
32 / 34 
 
 


ECU-C File Handling Technical Reference 
 
5.5 
Configuration elements must have unique SHORT-NAMEs 
To be able to uniquely identify a configuration element all elements of the same hierarchy 
level must have unique SHORT-NAMEs. If this is not the case references within the ECU-
C file may point to several different elements which makes the configuration inconsistent. 
Since  this  constraint  is  not  checked  by  the  XML  schema,  an  additional  check  is 
implemented  in  DaVinci  DEV  and  an  error  message  is  printed  in  the  „Action  Log“  tab  if 
such an error occurred. 
2014, Vector Informatik GmbH 
Version: 1.13 
33 / 34 
 
 


ECU-C File Handling Technical Reference 
 
6  Contact 
Visit our website for more information on 
 
>   News 
>   Products 
>   Demo software 
>   Support 
>   Training data 
>   Addresses 
 
www.vector-informatik.com 
 
2014, Vector Informatik GmbH 
Version: 1.13 
34 / 34 
 
 

3.24 - TechnicalReference_UserDefinedAttributeExport

Microsoft Word - TechnicalReference_UserDefinedAttributeExport.doc

3.25 - TechnicalReference_UserDefinedAttributeExport_ind

Page 1
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10
Page 11

3.26 - TechnicalReference_UserDefinedAttributeExports


 
 
 
 
 
 
 
 
 
 
 
 
User-defined attribute XML-export 
Technical Reference 
 
 
 
 
Version 1.3 
 
 
 
 
 
 
Authors: 
Michael Hoffmann, Andreas Claus 
Version: 
1.3 
Status: 
released (in preparation/completed/inspected/released) 
 
 
 


User-defined attribute XML-export Technical Reference 
 
History 
 
Author 
Date 
Version  Remarks 
Hn 
2007-02-02 
1.0 
Document released 
Cs 
2007-11-28 
1.1 
New document template; minor corrections 
Hn 
2008-02-08 
1.2 
Document updated 
Cs 
2012-04-11 
1.3 
DCF workspaces added; minor corrections 
 
Contents 
1
Overview ................................................................................................................... 3
1.1
Terms and Acronyms .................................................................................. 3
2
User-defined attributes in DaVinci .......................................................................... 4
2.1
Creating user-defined attribute definition .................................................... 4
2.2
User-defined attribute usage ....................................................................... 5
2.3
Creating the XML-export ............................................................................. 6
3
Design object reference ........................................................................................... 7
4
Attribute definition resolution ................................................................................. 8
4.1
Reference of global attribute definition values ............................................. 8
4.2
Reference of local attribute value ................................................................ 9
5
DCF Workspaces .................................................................................................... 10
5.1
Global attribute definition file ..................................................................... 10
5.2
Loading attribute definitions ...................................................................... 10
6
Contact .................................................................................................................... 11
2012, Vector Informatik GmbH 
Version: 1.3 
 
 


User-defined attribute XML-export Technical Reference 
 
1   Overview 
With  the  DaVinci  Developer  2.1  and  later  user-defined  attribute  definitions  can  be 
exported. This document describes the usage of the exported XML file format. 
1.1  Terms and Acronyms 
Term 
Definition 
DaVinci DEV 
DaVinci Developer 
AR 
AUTOSAR – Automotive Open System Architecture 
GUI 
Graphical user interface 
DCF 
DaVinci configuration file workspace 
2012, Vector Informatik GmbH 
Version: 1.3 
 
 



User-defined attribute XML-export Technical Reference 
 
2  User-defined attributes in DaVinci 
DaVinci DEV are allows the definition of user-defined attributes for certain design elements 
visible within the GUI. 
The  set  of  design  elements  which  are  providing  the  definition  of  user-defined  attributes 
depends on the tool version. 
2.1  Creating user-defined attribute definition 
To create a user-defined attribute definition open the workspace global attribute definition 
table available on the main menu ‘View  Attribute Definition…’. 
Each  user-defined  attribute  is  related  to  a  DaVinci  object  type  and  must  have  a  name 
which is unique in the scope of the attribute definition table. 
The  definition  of  minimum,  maximum,  and  default  value  depends  on  the  selected  value 
type 
 
Figure 1: Definition of user-defined attribute 
2012, Vector Informatik GmbH 
Version: 1.3 
 
 



User-defined attribute XML-export Technical Reference 
 
2.2  User-defined attribute usage 
Attribute  definitions  can  be  used  at  certain  design  objects  of  the  workspace.  For  each 
attribute  which  is  defined  within  the  global  attribute  table  and  associated  with  the  object 
type of the design object, a local value definition can be specified.  
These values are specific for each design object and are available in the properties dialog 
of the design object. 
A  design  object  can  only  use  those  user-defined  attributes  which  are  defined  within  the 
global attribute definition table. 
 
Figure 2: Definition of a local value of a user-defined attribute 
2012, Vector Informatik GmbH 
Version: 1.3 
 
 



User-defined attribute XML-export Technical Reference 
 
2.3  Creating the XML-export 
The  export  of  user-defined  attributes  is  always  related  to  a  preceded  export  of  design 
elements. The export can be used with all supported AR versions. 
To create the XML export, select the appropriate design element within DaVinci DEV and 
choose the ‘XML Export…’ command from the context menu. 
The  export  dialog  provides  an  option  ‘Export  user-defined  attributes’.  If  this  option  is 
selected  an  additional  XML  output  file  will  be  created.  The  name  of  the  XML  file  is 
automatically  created  by  using  the  name  of  the  AR-XML  output  file  plus  the  extension 
‘_gen_attr’ (e.g. ‘System_gen_attr.xml’). 
 
 
Figure 3: User-defined attribute export option for XML-exports 
2012, Vector Informatik GmbH 
Version: 1.3 
 
 


User-defined attribute XML-export Technical Reference 
 
3  Design object reference 
The design object reference clarifies in which way a certain design object is related to the 
user-defined attribute definition within the attribute export file. 
An AR design object is referenced by an AR reference which contains the package path to 
the SHORT_NAME attribute of the referenced AR object.  
This reference is stored within the Reference attribute of the ARObjectReference tag 
within the user-defined attribute export XML file. 
Beside the AR reference the ARObjectReference tag also includes the XML tag of the 
referenced AR element within its Type attribute. 
E.g.  for  a  software  component  type  ‘AP_MySWC’  following  reference  information  is 
exported: 
User-defined attribute export file: 
 
  <ObjectAttributeReference ObjectType="ComponentType"> 
    <ARObjectReference  
Type="APPLICATION-SOFTWARE-COMPONENT-TYPE" 
Reference="/ComponentType/AP_MySWC"> 
</ARObjectReference> 
…. 
  </ObjectAttributeReference> 
 
AR-export file: 
 
<AUTOSAR> 
  <TOP-LEVEL-PACKAGES> 
    <AR-PACKAGE> 
      <SHORT-NAME>ComponentType</SHORT-NAME> 
      <ELEMENTS> 
        <APPLICATION-SOFTWARE-COMPONENT-TYPE> 
          <SHORT-NAME>AP_MySWC</SHORT-NAME> 
…. 
        </APPLICATION-SOFTWARE-COMPONENT-TYPE> 
      </ELEMENTS> 
    </AR-PACKAGE> 
  </TOP-LEVEL-PACKAGES> 
</AUTOSAR>  
2012, Vector Informatik GmbH 
Version: 1.3 
 
 


User-defined attribute XML-export Technical Reference 
 
4  Attribute definition resolution 
The  attribute  definition  resolution  shows  how  a  global  user-defined  attribute  definition  is 
referenced by a certain design object.  
4.1  Reference of global attribute definition values 
If a design object doesn’t define a local value that is different from the global default value 
definition  the  user-defined  attribute  export  will  only  export  the  reference  to  the  relevant 
attribute  definition  table.  This  reference  (AttributeDefinitionTableRef)  contains  a 
Version and an ID attribute which uniquely identifies the relevant attribute definition table 
of the item (see ‘AttributeDefinitionTableRef’ of the example below). 
By using the ObjectType attribute information of the ObjectAttributeReference tag 
the  set  of  relevant  attribute  definitions  for  this  item  type  can  be  identified  (e.g. 
ComponentType’). 
User-defined attribute export file: 
 
<AttributeDefinition> 
  <AttributeDefinitionTable Version="1.0" ID="{932D3FD0-2F6C-49BF-80CB-D1C3756D3868}"
    <Attribute Name="MySWCEnum" ObjectType="ComponentType"> 
      <ENUM Default="Enum2"> 
        <EnumValue Value="Enum1"></EnumValue> 
        <EnumValue Value="Enum2"></EnumValue> 
        <EnumValue Value="Enum3"></EnumValue> 
      </ENUM> 
    </Attribute> 
  </AttributeDefinitionTable> 
 
  <ObjectAttributeReference ObjectType="ComponentType"> 
 
<ARObjectReference  
    Type="APPLICATION-SOFTWARE-COMPONENT-TYPE" 
    Reference="/ComponentType/AP_MySWC"> 
</ARObjectReference> 
 
<AttributeDefinitionTableRef   
    Version="1.0"  
    ID="{932D3FD0-2F6C-49BF-80CB-D1C3756D3868}"

</AttributeDefinitionTableRef> 
 
  </ObjectAttributeReference> 
</AttributeDefinition> 
2012, Vector Informatik GmbH 
Version: 1.3 
 
 


User-defined attribute XML-export Technical Reference 
 
4.2  Reference of local attribute value 
Each  design  object  may  define  a  local  value  for  the  user-defined attributes. These  value 
definitions 
are 
exported 
with 
the 
AttributeValue 
tag 
within 
each 
ObjectAttributeReference  tag.  This  tag  contains  a  Name  attribute  which  uniquely 
identifies  a  single  attribute  within  the  attribute  definition  table  (e.g.  the  attribute 
MySWCEnum’). The Value attribute holds the local value of the design object. 
User-defined attribute export file: 
 
  <ObjectAttributeReference ObjectType="ComponentType"> 
    <ARObjectReference  
        Type="APPLICATION-SOFTWARE-COMPONENT-TYPE" 
         Reference="/ComponentType/AP_MySWC"> 
</ARObjectReference> 
 
<AttributeDefinitionTableRef  
    Version="1.0"  
    ID="{932D3FD0-2F6C-49BF-80CB-D1C3756D3868}"> 
</AttributeDefinitionTableRef> 
 
    <AttributeValue  
        Name="MySWCEnum"  
        Value="Enum3"> 
    </AttributeValue> 
 
  </ObjectAttributeReference> 
2012, Vector Informatik GmbH 
Version: 1.3 
 
 


User-defined attribute XML-export Technical Reference 
 
5  DCF Workspaces 
As DCF workspaces mainly consists of exported AR-XML files the user-defined attributes 
are also used in DCF workspaces. Thus all user-defined attributes can be loaded with the 
attribute  definitions  and  their  corresponding  AR  design  objects  during  opening  a  DCF 
workspace. 
5.1  Global attribute definition file 
Nevertheless, if attribute definitions are defined without usage by a design objects, these 
definitions  will  be  lost  on  opening  the  DCF  workspace.  To  overcome  this  limitation  all 
attribute definitions are stored in a global XML file named like the DCF  workspace name 
with the extension _attr_def.xml 
The  format  is  the  same  as  for  user-defined  attributes  but  the  file  contains  the  attribute 
definitions only. 
5.2  Loading attribute definitions 
On opening a DCF workspace the global attribute definition file is always loaded first. Thus 
all definitions exist and can be referenced by the further AR-XML import. A warning during 
AR-XML import is thrown if the attribute definition within a single _gen_attr.xml differs from 
the globally defined one. In this case the definition from the _gen_attr.xml is ignored and 
only the value of the attribute itself is imported to the design object.  
2012, Vector Informatik GmbH 
Version: 1.3 
 
 


User-defined attribute XML-export Technical Reference 
 
6  Contact 
Visit our website for more information on 
 
>   News 
>   Products 
>   Demo software 
>   Support 
>   Training data 
>   Addresses 
 
www.vector.com 
 
2012, Vector Informatik GmbH 
Version: 1.3 
 
 

3.27 - UserManual_DataImport

Microsoft Word - UserManual_DataImport.doc

3.29 - UserManual_DataImports


 
 
 
 
 
 
 
 
 
 
 
 
Data Import 
User Manual 
 
 
 
 
Version 2.0 
 
 
 
 
 
 
Authors: 
Matthias Wernicke 
Version: 
2.0 
Status: 
released (in preparation/completed/inspected/released) 
 
 
 


User Manual Data Import 
 
1  History 
Author 
Date 
Version 
Remarks 
Wk 
2009-08-27 
1.0  
Initial version 
Document scope extended: description of 
Wk 
2011-01-07 
2.0 
general import mechanisms, description of 
special import functions completed 
 
Contents 
1  History....................................................................................................................... 2 
2  About this Document ............................................................................................... 3 
3  Use Cases ................................................................................................................. 4 
4  Approach .................................................................................................................. 6 
4.1 
Definition of import mode via difference analysis ........................................ 7 
4.2 
Interactive definition of import mode ........................................................... 8 
4.3 
Preset of import mode (automatic merge)................................................... 8 
4.3.1 
Preparation of workspace ........................................................................... 8 
4.3.2 
Automatic pre-setting of import mode for new imported objects.................. 9 
4.3.3 
Resulting behavior of DaVinci Developer.................................................... 9 
5  Special Import Functions......................................................................................... 9 
5.1 
Overwrite Import Mode Preset .................................................................. 10 
5.2 
Update Diagnostic Configuration .............................................................. 11 
6  Contact.................................................................................................................... 12 
 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
2  About this Document 
This  document  describes  the  specific  features  of  DaVinci  Developer  for  importing  data 
according  to  the  AUTOSAR  SWC  Template.  It  is  applicable  for  the  import  of  AUTOSAR 
XML files or DCF files (DaVinci Configuration File).   
For  details  about  the  import  function  for  the  ECU  Configuration  Template,  please  see 
TechnicalReference_EcuConfigurationFiles.pdf. 
Abbreviations and Items used in this Document: 
SWC 
Software Component 
PIM 
Per-Instance Memory 
 
 
 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
3  Use Cases 
The specific import/update features of DaVinci Developer are relevant for scenarios, where 
several  involved  persons  (e.g.  the  OEM  and  the  TIER1)  both  contribute  SWC  design 
artifacts to the overall project. 
 
Figure 1 shows an example, where the TIER1 needs to integrate a SWC of the OEM 
 
 
OEM defines an atomic component type with some port prototypes (A). OEM exports 
the component type and passes it to the TIER1 
 
TIER1 imports the component type, and integrates it as component prototype into a 
composition type, which already has some other component prototypes and port 
prototypes (red color in B). 
 
OEM changes the atomic component type, e.g. by adding some port prototypes and 
removing others (C). OEM exports the component type and passes it to the TIER1 
 
TIER1 imports the component type, and expects that the changes of the OEM are 
incorporated (D) 
 
 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
OEM Workspace
TIER1 Workspace
Composition1
SWC1
SWC2
SWC2
A
B
Composition1
SWC1
SWC2
SWC2
C
D
 
Figure 1: Import/Update Example 1 
 
 
 
 
Figure 2 shows an example, where the TIER1 needs to extend a composition of the OEM 
 
 
OEM defines a composition type with some port prototypes and component 
prototypes (A). OEM exports the composition type and passes it to the TIER1 
 
TIER1 imports the composition type, and makes changes like adding further port 
prototypes, component prototypes and connector prototypes (red color in B). TIER1 
considers these changes as “private” and does not return these changes to the OEM. 
 
OEM changes the composition, e.g. by adding some port prototypes and removing 
others (C). OEM exports the composition type and passes it to the TIER1 
 
TIER1 imports the composition type, and expects that the changes of the OEM are 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
incorporated as well as the changes done by the TIER1 (D) 
 
OEM Workspace
TIER1 Workspace
Composition1
Composition1
SWC1
SWC2
SWC2
A
B
Composition1
Composition1
SWC1
SWC2
SWC2
C
D
 
Figure 2: Import/Update Example 2 
 
4  Approach 
The  import  process  in  DaVinci  Developer  considers  individual  objects  within  the  import 
context (set of AUTOSAR XML files or DCF files) and the workspace, see Figure 3. The 
objects are identified by the combination of object type and object short name. Based on 
this identification, the set of objects may be completely disjunctive, or (partially) overlap. 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
Workspace
Import Context
Obj1
Import
Obj2
Obj2
Obj3
Obj3
Obj4
 
Figure 3: Import Context and Workspace 
 
The  import  mode  of  an  object  controls  the  behavior  of  DaVinci  Developer  during  the 
import  process.  The  import  mode  is  expressed  from  the  target  workspace  point  of  view 
with the following options 
 
Keep 
The object in the workspace is not changed 
 
Overwrite 
The object in the workspace is overwritten by the imported object 
 
DaVinci Developer supports the following ways to define the import mode of the objects 
 
Interactively during the import process (user decision not persistent) 
 
Via difference analysis before starting the import process (user decision not 
persistent) 
 
By presetting the import mode (persistent) 
The  user  can  select  the  approach  individually  for  each  import  process  by  checking  the 
according options in the import dialog. 
4.1  Definition of import mode via difference analysis 
Before  running  the  import  process  DaVinci  Developer  opens  a  dialog  showing  the 
differences  between  the  objects  in  the  workspace  and  in  the  import  context.  This 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
difference  dialog  allows  the  user  to  browse  the  differences  and  select  the  import  mode 
(“Keep” or “Overwrite”) for each object. 
4.2  Interactive definition of import mode 
During the import process DaVinci Developer raises dialogs allowing the user to define the 
import  mode.  Such  dialog  is  raised  for  each  individual  object.  For  convenience  reasons, 
these dialogs offer the option to remember the selected import mode for all other objects of 
the same type, or for all remaining objects. 
The interactive definition of import mode offers “Merge object” as import mode. This option 
is relevant for objects, which have sub-objects. It performs an additive merge of the sub-
objects. Instead of the import mode “Keep”, the option “Create new object” is offered. This 
option leaves the existing objects in the workspace unchanged, and creates a new object 
(with different name) instead. 
4.3  Preset of import mode (automatic merge) 
For the following types of objects: 
 
Port prototypes 
 
Component prototypes 
the  import  mode  (“Keep”  or  “Overwrite”)  can  be  preset.  So  this  approach  is  especially 
useful  in  case  the  import  process  will  be  repeated  in  future.  These  settings  become 
effective, if the user chooses “Overwrite” as import mode for a component type. 
4.3.1 
Preparation of workspace 
Before  running  the  import  process  the  user  can  specify  the  import  mode  as  attribute  for 
each  object.  These  attributes  are  persistently  stored  in  the  workspace.  To  enable  this 
approach the workspace must contains the following attribute definitions: 
 
Attribute Definition 
Object Type 
Type 
Range 
IMPORT_MODE_PRESET_PORT 
Port Prototype 
Enumeration 
Keep, Overwrite 
IMPORT_MODE_PRESET_COMPONENT  Component Prototype  Enumeration 
Keep, Overwrite 
 
The recommended default for these attribute definitions is “Keep”. This will ensure that all 
new objects, which are created by the user, will get the import mode “Keep”. 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
These  attribute  definitions are also  contained  in the file  ImportModePreset.arxml,  located 
in the “Data” folder of the DaVinci Developer installation. By importing this file, the attribute 
definitions will be created. 
 
After that, the user can set the attribute values to “Overwrite” for all those objects, which 
should  be  automatically  updated  and  potentially  deleted  during  import.  The  user  can  set 
the  attribute  values  either  manually  (please  refer  to  the  DaVinci  DEV  online  help  for 
details) or using an according special import function (see chapter 5.1). 
4.3.2 
Automatic pre-setting of import mode for new imported objects 
By  an  according  option  in  the  import  dialog,  the  user  may  define  the  value  of  the  import 
mode  preset  attribute  for  all  those  objects,  which  are  created  during  the  import  process 
(i.e. which did not exist in the workspace before the import). It is recommended to set this 
option to “Overwrite”. 
4.3.3 
Resulting behavior of DaVinci Developer 
Assuming that the recommendations mentioned above are fulfilled, DaVinci Developer will 
have the following behavior: 
 
All imported port prototypes and component prototypes have “Overwrite” as import 
mode preset 
 
All port prototypes and component prototypes created by the user have “Keep” as 
import mode preset 
 
The imported port prototypes and component prototypes will be automatically 
updated when the user runs the import again. This includes also deletion of formerly 
imported, now obsolete port prototypes and component prototypes. 
 
Port prototypes and component prototypes created by the user will remain 
unchanged 
This behavior supports the typical use cases (see chapter 3) 
 
5  Special Import Functions 
Besides  the  generic  import  functionality,  DaVinci  Developer  provides  special  import 
functions.  These  special  import  functions  have  a  predefined  behavior  in  terms  of  the 
imported content and in terms of how to react in case of conflicts. 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
5.1  Overwrite Import Mode Preset 
You may use this function to initially prepare a given workspace for the usage of automatic 
merge  based  on  the  import  mode  preset  attributes  (see  chapter  4.2).  This  function  does 
not actually import any data, but it sets the import mode preset attribute for all objects in 
the  workspace,  which  also  exist  in  the  import  context.  The  user  can  define  the  value 
(“Keep”  or  “Overwrite”).  The  function  is  called  via  the  menu  File  |  Special  Import  | 
Overwrite Import Mode Preset. You may select the AUTOSAR XML files to be imported 
via the Import from XML Dialog. Please refer to the DaVinci DEV online help for details 
about this dialog. 
 
Example:  Assuming  an  initial  workspace  as  shown  in  Figure  4,  where  all  objects  have 
attribute  value  “Keep”  (e.g.  because  this  is  the  default  of  the  attribute  definition).  When 
calling this special import function and selecting “Overwrite” as value for the import mode 
preset attribute, the component prototype “SWC2” and all four port prototypes of the import 
context will be tagged as “Overwrite”. All other objects remain at “Keep”. 
 
Workspace (Initial)
Legend:
Composition1
“Overwrite”
SWC1
“Keep”
SWC2
Import Context
Workspace after special import
Composition1
Composition1
SWC1
SWC2
SWC2
 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
Figure 4: Function “Overwrite import mode preset” 
 
 
 
5.2  Update Diagnostic Configuration 
You may use this function to update those parts of the application SWCs in the workspace, 
which  are  related  to  diagnostic  functionality.  The  function  is  called  via  the  menu  File  | 
Special Import | Update Diagnostic Configuration. You may select the AUTOSAR XML 
files  to  be  imported  via  the  Import  from  XML  Dialog.  Please  refer  to  the  DaVinci  DEV 
online help for details about this dialog. 
 
This  function  ensures  that  the  SWCs  in  the  workspace  match  to  the  imported  XML  file, 
while preserving the modifications you made at the SWCs. This is reached by the following 
behavior: 
If the objects in the imported XML file not yet exist in the workspace, they are created by 
the  special  import  function.  If  an  object  already  exists,  the  following  update  approach  is 
performed: 
 
 
Constants are overwritten 
 
Data Types are overwritten 
 
Port Interfaces are overwritten 
  Exception: the Init Value of the Calibration Element Prototypes of Calibration Port 
Interfaces are not changed. 
 
Component Types 
  The Properties of the Component Type are overwritten, except for the 
Implementation Code Type and Supports Multiple Instantiation Flag  
  Port Prototypes 
  Existing  Port  Prototypes  are  overwritten,  except  for  the  Port  API  Options  and 
the Communication Specification 
  Missing Port Prototypes are created 
  Obsolete Diagnostic Port Prototypes* are deleted 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 


User Manual Data Import 
 
  Runnable Entities 
  Existing  Runnable  Entities  are  merged  as  follows:  the  Symbol  and  Can  Be 
Invoked Concurrently is not changed, the Trigger list and Port Access lists are 
merged.  
  Missing Runnable Entities are created 
  Exclusive Areas, Inter-Runnable Variables and Calibration Parameters 
  Existing objects are overwritten 
  Missing objects are added 
  Per-Instance Memory 
  Existing PIMs are overwritten 
  Missing PIMs are added 
  Obsolete Diagnostic PIMs** are deleted 
 
Note: This special import function does not consider the import mode preset attributes (see 
chapter 4.2). 
 
*) Diagnostic Port Prototypes are Port Prototypes, which contain an attribute with a value 
other than the default for an attribute definition, which contains “PDM_ID” in its name 
 
**) Diagnostic PIMs are PIMs, which contain an attribute with a value other than the default 
for an attribute definition, which contains “PDM_ID” in its name 
6  Contact 
Visit our website for more information on 
 
>   News 
>   Products 
>   Demo software 
>   Support 
>   Training data 
>   Addresses 
 
www.vector-informatik.com 
2011, Vector Informatik GmbH 
Version: 2.0 
 
 

3.30 - UserManual_Working_with_DCF

UserManual_Working_with_DCF

3.32 - UserManual_Working_with_DCFs


 
 
 
 
 
 
 
 
 
 
 
 
Working with DCF 
User Manual 
 
 
 
 
Version 1.6 
 
 
 
 
 
 
Authors: 
Matthias Wernicke, Andreas Claus, Stefanie Kruse 
Version: 
1.6 
Status: 
released (in preparation/completed/inspected/released) 
 
 
 


User Manual Working with DCF 
 
1  History 
Author 
Date 
Version 
Remarks 
Wk 
2008-02-07 
0.1  
Initial version 
Wk 
2008-02-08 
0.2 
Additional remark in ch. 5.1 
Ch. 6.2 “Handling of read-only objects” added. 
Wk 
2008-03-27 
1.1 
Ch. 5.1 “Creating a new DCF” updated. Ch. 7 
“Limitations” added. Released. 
Ch. 4 “Relative path handling” added 
Cs 
2008-04-17 
1.2 
Ch. 7 “Limitations” updated 
Ske 
2009-02-08 
1.3 
Ch.7 “DCFUtility” added. “Limitations” removed. 
Wk 
2011-01-10 
1.4 
Harmonized with UserManual_DataImport.pdf  
Wk 
2011-08-12 
1.5 
Ch. 6.2 updated. Screenshots updated. 
Wk 
2012-06-15 
1.6 
Obsolete terms and limitations removed. 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
Contents 
1 
History ....................................................................................................................... 2 
2 
About this Document ............................................................................................... 5 
2.1 
Abbreviations and Items used in this Document ......................................... 5 
3 
Introduction .............................................................................................................. 6 
3.1 
What is a DaVinci Developer Workspace? .................................................. 6 
3.2 
What is a DaVinci Configuration File? ......................................................... 6 
4 
DCF storage format .................................................................................................. 7 
5 
Working with DCF ................................................................................................... 11 
5.1 
Creating a new DCF ................................................................................. 11 
5.2 
Opening an existing DCF .......................................................................... 12 
5.3 
Exporting a DCF ....................................................................................... 13 
5.4 
Importing a DCF ....................................................................................... 14 
5.5 
Converting a DEV into a DCF (or vice versa) ............................................ 14 
6 
Using DCF as interface to a CM system ................................................................ 15 
6.1 
General concept ....................................................................................... 15 
6.2 
Handling of read-only objects ................................................................... 16 
7 
Working with DaVinci Configuration File Utility ................................................... 18 
7.1 
Installation ................................................................................................ 18 
7.1.1 
Setup program .......................................................................................... 18 
7.1.2 
Licensing .................................................................................................. 18 
7.2 
Starting DaVinci Configuration File Utility .................................................. 18 
7.3 
Open DCF workspace .............................................................................. 20 
7.4 
DCF workspace ........................................................................................ 21 
7.4.1 
Content of a DCF workspace .................................................................... 21 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
7.4.2 
Missing files .............................................................................................. 22 
7.5 
DCB files of a DCF workspace ................................................................. 23 
7.5.1 
Content of DCB files ................................................................................. 23 
7.5.2 
Corrupt DCB files ...................................................................................... 23 
7.6 
Compare AUTOSAR files of DCF workspaces .......................................... 25 
7.7 
Command line usage of comparison ......................................................... 26 
8 
Tips and Tricks ....................................................................................................... 27 
8.1 
When to use DEV or DCF? ....................................................................... 27 
8.2 
Working with temporary DEV .................................................................... 27 
9 
Contact .................................................................................................................... 28 
 
Illustrations 
Figure 4-1: Granularity of the design objects in a DCF ........................................................... 8 
Figure 4-2: Folder structure of a DCFP .................................................................................. 8 
Figure 4-3: Example DCF .................................................................................................... 10 
Figure 6-1: Using DCF with a CM system ............................................................................ 16 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
2  About this Document 
Besides the traditional DaVinci Developer Workspace (DEV), DaVinci Developer supports 
an  alternative  storage  format  for  the  design  data:  the  DaVinci  Configuration  File  (DCF). 
This document describes when to use DCFs and how to work with DCFs. 
2.1  Abbreviations and Items used in this Document 
DEV 
DaVinci Developer Workspace 
DCF 
DaVinci Configuration File 
DCFP 
DaVinci Configuration File Package 
DCFE 
DaVinci Configuration File Element 
CM 
Configuration Management 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
3  Introduction 
Design  data  created  with  DaVinci  Devloper  need  to  be  persistently  stored.  You  may 
choose among the following storage formats: 
 
 
DaVinci Developer Workspace (DEV) 
 
DaVinci Configuration File (DCF) 
Both  formats  have  their  specific  advantages.  Depending  on  your  use  cases  you  should 
decide which format is appropriate for you. 
3.1  What is a DaVinci Developer Workspace? 
The  DaVinci  Developer  Workspace  is  the  native  XML  based  storage  format  of  DaVinci 
Developer.  This  storage  format  is optimized  to  achieve  a fast  loading  and  saving  time of 
the design data. 
The detailed storage format is proprietary and might be changed by Vector without notice 
in future DaVinci versions. Of course, loading of old workspaces is always possible with a 
newer DaVinci version. 
3.2  What is a DaVinci Configuration File? 
The DaVinci Configuration File is an alternative storage format of DaVinci Developer. This 
format is appropriate for cooperative working with DaVinci Developer and any external CM 
system  with  a  file-based  interface.  You may  use  DaVinci  Developer  as  authoring  tool for 
the  design  data,  and  you  may  use  the  CM  system  to  manage  the  design  data  in  a 
repository.  This  gives  you  the  maximum  degree  of  freedom  to  use  the  CM  system’s 
features like versioning, branching or merging files. To ensure long term readability of old 
design data in the CM system, the DCF concept avoids proprietary formats where possible 
and uses standardized AUTOSAR XML formats instead. 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
4  DCF storage format 
A  DCF  is  a  storage  format,  which  allows  for  storing  any  AUTOSAR  design  data  and 
related proprietary data as consistent set of files. This overall set of files is called DaVinci 
Configuration File Package (DCFP). A DCFP may consist of the following files: 
 
 
1 DCF (DaVinci Configuration File) 
Central file, which contains file references to a consistent set of ARXML, DCB or 
gen_attr.XML files 
 
1..n DCFE (DaVinci Configuration File Element), each consisting of 
  1 ARXML (AUTOSAR XML file) 
AUTOSAR compliant XML file to store the AUTOSAR design data 
  0..1 DCB (DaVinci Configuration Binary) 
Optional binary file to store the proprietary data (e.g. graphics) of DaVinci, which are 
not covered by AUTOSAR XML formats. The DCB is optional and always 
associated (by file name) to an ARXML. 
  0..1 gen_attr.XML (Generic Attribute XML file) 
Optional XML file in proprietary (but published) format to store the generic attributes 
of the design data. You find the specification of the format in the Technical 
Reference “User-define attribute XML-export”. The gen_attr.XML is optional and 
always associated (by file name) to an ARXML. 
When  using  DCF  in  combination  with  an  external  CM  system,  an  important  topic  is  the 
granularity of the data concerning versioning and branching. A trade-off needs to be found 
between too course grained (hard to merge) and too fine grained (huge number of files). 
DaVinci uses the following granularity within a DCFP: 
 
DaVinci object 
DCFP Granularity 
CAN Bus 
Stored within the DCFE of the ECU Project 
Component Type 
Each Component Type will be stored in as separate DCFE, 
regardless if it’s a Composition or Atomic 
Constant 
All Constants will be stored together in one DCFE  
Data Type 
All Data Types will be stored together in one DCFE  
ECU Project 
Each ECU Project will be stored in a separate DCFE 
FlexRay Cluster 
Stored within the DCFE of the ECU Project 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
LIN Bus 
Stored within the DCFE of the ECU Project 
Port Interface 
All Port Interfaces will be stored together in one DCFE  
Signal 
All Signals will be stored together in one DCFE 
Signal Group 
All Signal Groups will be stored in the Signals-DCFE 
Signal Type 
All Signal Types will be stored in the Signals-DCFE 
Figure 4-1: Granularity of the design objects in a DCF 
In the file system, a DCFP is represented by a folder, which has the following structure: 
 
  <DCFP folder> 
<DCF_name>.dcf 
 
Constants.arxml 
 
Constants_gen_attr.xml 
 
DataTypes.arxml 
 
DataTypes_gen_attr.xml 
PortInterfaces.arxml 
 
PortInterfaces_gen_attr.xml 
 
Signals.arxml 
 
Signals_gen_attr.xml 
ComponentTypes 
 
<Component Type name>.arxml 
 
<Component Type name>.dcb 
 
<Component Type name>_gen_attr.xml 
 
ECUProjects 
<ECU Project name>.arxml 
 
<ECU Project name>.dcb 
 
<ECU Project name>_gen_attr.xml 
 
Figure 4-2: Folder structure of a DCFP 
Storing  a  DCF  into  an  empty  directory  always  creates  the  standard  directory  structure, 
i.e.  Constants,  DataTypes,  PortInterfaces,  and  Signals  are  stored  in  the  DCFP  folder, 
whereas ComponentTypes and ECUProjects get their own subdirectory. 
The paths within the DCF are relative to the DCFP folder. If desired the paths in the DCF 
can  be  modified  using  an  XML-Editor.  This  allows  loading/saving  of  DCF  parts  from 
other directories. 
The paths within the DCF can have a relative path format including any number of parent 
directories or subdirectories or an absolute path format. UNC notation is not supported. 
Example: 
..\..\MyFolder\MySubFolder\Signals.arxml 
 
.\MySignals\Signals.arxml 
 
 E:\DCFPool\MyDCFPart\Signals.arxml 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 



User Manual Working with DCF 
 
Caution 
  The file name itself is fixed and depends on the object type and name of the AUTOSAR 
ARXML file. The additional files (DCB, GEN_ATTR.XML) must always reside in the 
same directory as the ARXML file. It is not allowed to specify different paths within one 
single file reference in the DCF. 
 
Saving a DCF in a directory that already contains the same DCF will keep the paths as 
specified in the existent DCF. In this case the standard directory structure is only applied 
to newly created objects. 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 



User Manual Working with DCF 
 
 
Each file reference requires the definition of the ROOTITEM type that corresponds with 
the  ARXML  file.  During  DCF  loading  this  ROOTITEM  is  evaluated  to  solve  external 
object  references  between  the  various  ARXML  files.  Wrong  or  missing  ROOTITEM 
definitions causes invalid object references that will be reported during DCF loading. 
An example DCF file looks like this: 
 
 
Figure 4-3: Example DCF 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 






User Manual Working with DCF 
 
5  Working with DCF 
5.1  Creating a new DCF 
Select File | New 
workspace… or use the 
shortcut  .  
 
 
 
 
Select “DaVinci Configuration 
Files (*.dcf)” as file type. 
Browse for a suitable folder 
and set a file name for the 
DCF file. 
You may now work as usual in 
with DaVinci Developer to 
define new objects. 
To save the data select 
File | Save Workspace… or 
use the shortcut 

 
 
 
Please observe the following conditions, which apply to the folder of a DCF file: 
 
The folder, which contains the DCF file, must not contain other DCF files 
 
Within the folder of the DCF file and within any sub-folder, the following file types are 
“reserved” for DaVinci 
  *.arxml 
  *.dcf 
  *.dcb 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 





User Manual Working with DCF 
 
  *_gen_attr.xml 
These files are created and deleted by the DaVinci when saving the DCF workspace. 
Other files are not touched by DaVinci. 
 
Sub-folders of the DCF folder are not deleted by DaVinci, even if the sub-folder has 
become obsolete (e.g. since the according object has been deleted in DaVinci) 
5.2  Opening an existing DCF 
Select File | Open… or use the 
shortcut 
  
 
 
 
 
 
 
Select “DaVinci Configuration 
Files (*.dcf)” as file type. 
Browse for the DCF file. 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 




User Manual Working with DCF 
 
5.3  Exporting a DCF 
You may create a new 
DCF as subset of the 
currently opened 
Workspace or DCF. 
Select one or more 
objects in the Library 
Browser and select the 
context menu item 
DCF Export....  
 
 
 
 
 
 
The Export to DCF 
dialog opens. You may 
now select the DCF 
file to create. 
The dialog shows all 
dependent objects of 
the context object(s). 
Near each of these 
objects you see the 
file, which will be used 
to store the object. 
Select Export to 
create the new DCF. 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 




User Manual Working with DCF 
 
 
5.4  Importing a DCF 
You may import a DCF into 
an already opened workspace 
or DCF. 
Select File | Import DCF…  
 
 
 
 
 
5.5  Converting a DEV into a DCF (or vice versa) 
You may convert an 
opened DEV into a 
DCF. 
Select File | Save 
Workspace As….  
 
Select “DaVinci 
 
Configuration File 
(*.dcf)” as file type. 
Browse for a suitable 
folder and set a file 
name for the DCF file. 
 
In a similar way you may convert an opened DCF into a DEV. 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
6  Using DCF as interface to a CM system 
6.1  General concept 
The DCF may serve as interface between DaVinci Developer and your CM system.  
 
 
Using DaVinci Developer you create or edit the DCFP in your working copy of the CM 
repository. 
 
Your working copy may contain several DCFP, e.g. one DCFP per ECU project you 
are currently developing, or some DCFP for particular software components. 
Depending on the capabilities of your CM system you may even have several 
variants (branches) of e.g. the same ECU project as separate DCFP in your working 
copy. 
 
Using the CM system’s user interface you may check-in (commit) the DCFP into the 
repository, or get an already existing DCFP. 
 
The read-only state of files within the DCFP (e.g. because they are checked-in) is 
reflected within DaVinci Developer (see chapter 6.2). 
 
Optionally you may use external utility tools e.g. to merge the ARXML files within a 
DCFP. 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 




User Manual Working with DCF 
 
 
Figure 6-1: Using DCF with a CM system 
6.2  Handling of read-only objects 
After opening a DCF 
workspace, you may display 
the read-only state of the 
objects by selecting  
View | Read-Only State…  
 
 
 
 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 




User Manual Working with DCF 
 
The Read-Only State dialog 
opens. This dialog displays all 
DCFEs of the workspace 
according to the DCFP 
granularity (see chapter 4).  
For each DCFE, the ARXML 
file name is displayed as well 
as the file attribute (“ro” read-
only or “rw” read-write).  
 
If a DCFE is read-only, all 
objects of the DCFE are 
assumed to be read-only. Any 
editing of the objects via 
dialogs or editors is blocked in 
DaVinci Developer. 
If you want to allow editing the 
object anyway, you may select 
the DCFE and push “Set state 
to read/write”. This will make 
the objects in the DCFE read-
 
write, while the files remains 
read-only. Consequently, you 
 
can edit the object, but you 
cannot save the workspace 
unless you make the files “rw”. 
Note: If you have set a DCFE 
to read-write, it is not possible 
to set it to read-only again. 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
7  Working with DaVinci Configuration File Utility 
This section describes working with DaVinci Configuration File Utility. ( DCFUtility ) 
DCFUtility is a tool to handle DCF files. 
 
The functionality of DCFUtility contains: 
 
Visualize all files referenced within a DCF workspace. 
 
Detect missing files of a DCF workspace 
 
Show content of DCB files 
 
Detect corrupt DCB file 
 
Compare AUTOSAR files of two DCF workspaces 
7.1  Installation 
7.1.1 
Setup program 
The DCFUtility can be installed by starting the setup program setup.exe. The tool is 
installed during the installation procedure of DaVinci Developer automatically. 
   
The DCFUtility is installed into the folder of your DaVinci Developer installation. 
The executable “DVDCFUtility.exe” is installed in the sub-folder “bin”. 
7.1.2 
Licensing 
In order to run DCFUtility a license of DaVinci Developer is required on the PC. 
7.2  Starting DaVinci Configuration File Utility 
The DCFUtility can be started via one of the following options  
 
Via the Program menu                                                                                                 
Using Program menu | DaVinci Developer <Version> | DaVinci Configuration File 
Utility the DCFUtility is started. Using File | Open you can open a dialog for selecting 
a DCF file files to be shown. After confirming this dialog, the DCF file is opened 
 
Via the Windows Explorer                                                                                        
After selecting a file with extension .dcf in the Windows Explorer, you can open the 
file using the context menu entry Open with | DaVinci Configuration File Utility  
2012, Vector Informatik GmbH 
Version: 1.6 
 
 



User Manual Working with DCF 
 
 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 





User Manual Working with DCF 
 
7.3  Open DCF workspace 
Select File | Open… or use 
the shortcut 
  
 
 
 
Select “DaVinci 
Configuration Files (*.dcf)” 
as file type. Browse for the 
DCF file. 
 
 
 
 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 




User Manual Working with DCF 
 
7.4  DCF workspace 
7.4.1 
Content of a DCF workspace 
The tree on the left hand shows the 
files referenced within a DCF file. 
The files are sorted within the main 
branches shown in the picture on 
the right side. 
 
 
 
For each DaVinci object there is 
one sub node within the according 
main branch. The sub branches 
name is the name of the DaVinci 
object. The children of the objects 
nodes contain the names of the files 
which belong to one object. 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 






User Manual Working with DCF 
 
7.4.2 
Missing files  
When opening a DCF file 
referenced files in the DCF 
file are checked for 
existence automatically. 
Missing files and their 
parent nodes are marked 
red in the tree view of the 
DCF file. 
Use short cut 
 to start the 
check again manually and 
to update the DCF file’s tree 
view. ( e.g. after copying 
missing files to the location 
specified in the DCF) 
 
 
 
Use short cut 
 to show 
missing files and their 
parents only. 
 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 






User Manual Working with DCF 
 
7.5  DCB files of a DCF workspace 
7.5.1 
Content of DCB files 
Select a DCB file in tree view to 
show its content in the table on 
the right side. 
 
 
 
 
Double click on a row in the 
table to show the object’s 
values.  
 
 
 
 
 
7.5.2 
Corrupt DCB files 
Select  Check  | Corrupt Files 
or use short cut 
 to analyze all 
DCB files for corruptness. 
 
 
 
 
 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 





User Manual Working with DCF 
 
 
Nodes of corrupt DCB files and 
their parent nodes are marked 
red in the DCF file’s tree view.  
 
 
 
 
 
Use short cut 
 to show corrupt 
DCB files only. The short cut is 
enabled after checking the DCF 
file for corrupt DCB files. 
 
 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 






User Manual Working with DCF 
 
7.6  Compare AUTOSAR files of DCF workspaces 
Select File | Compare DCF  
or use short cut   to 
compare all same 
AUTOSAR files which are 
referenced in two DCF files. 
 
 
Select two existing DCF 
files and define a directory 
in which the result files of 
type “dvdiff” may be written. 
Select whether the 
AUTOSAR files are to be 
validated or not. If you 
choose validate “With 
external schema” you have 
to define a XSD file to 
 
validate against. 
 
 
 
In “Comparison Result 
 
Files” dialog a list of result 
files and their result status 
is shown.  
Note: Files at same 
location are not 
compared.  
Result “equal”: No Changes  
Result “different”: Changed 
Result “failed”: Comparison 
 
failed. The results are 
written into an error file. 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 




User Manual Working with DCF 
 
Double click a table row of 
the “Comparison Result 
Files” dialog to show the 
result file of the comparison 
in “AUTOSAR XML 
DifferenceView”.  
 
 
 
or the error file of a failed 
comparison. 
 
 
 
 
 
7.7  Command line usage of comparison 
You can run the DCFUtility comparison of DCF files by the following command: 
DVDCFUtility.exe –s <dcffile1> -c <dcffile2> -o <resultdir> 
 
 
 parameters 
  –s <dcffile1> source file. 
  –c <dcffile2> DCF file which is compared with the source file. 
–o <resultdir> path of result directory which contains the difference files of all 
AUTOSAR files contained in both <dcffile1> and <dcffile2> 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
8  Tips and Tricks 
8.1  When to use DEV or DCF? 
You  should  use  the  DaVinci  Developer  Workspace  in  case  you  need  a  fast,  local 
saving/loading of your design data. 
 
You  should  use  the  DaVinci  Configuration  File  in  case  you  want  to  manage  the  design 
data as AUTOSAR compliant files in an external CM system.  
8.2  Working with temporary DEV 
Saving and loading of a DCF usually takes more time than saving and loading of a DEV of 
the same content. If you e.g. work for several days on your design data without having to 
check-in/commit your work into the CM system, it may be useful to work like this: 
 
 
Get the DCF from the CM system into your local working copy (e.g. 
c:\work\mySystem.dcf) 
 
Save the DCF as temporary DEV (e.g. c:\tmp\mySystem.DEV) 
 
Work on the temporary DEV 
 
Save the temporary DEV back into the DCF in the working copy (e.g. 
c:\work\mySystem.dcf)  
2012, Vector Informatik GmbH 
Version: 1.6 
 
 


User Manual Working with DCF 
 
9  Contact 
Visit our website for more information on 
 
>   News 
>   Products 
>   Demo software 
>   Support 
>   Training data 
>   Addresses 
 
www.vector.com 
 
2012, Vector Informatik GmbH 
Version: 1.6 
 
 

3.33 - Welcome

Welcome to the Java(TM) Platform

Welcome to the JavaTM Platform

Welcome to the JavaTM Standard Edition Runtime Environment. This provides complete runtime support for Java applications.

The runtime environment includes the JavaTM Plug-in product which supports the Java environment inside web browsers.

References

See the Java Plug-in product documentation for more information on using the Java Plug-in product.

See the Java Platform web site for more information on the Java Platform.


Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.

3.34 -

DaVinci Developer Release Notes

DaVinci Developer 3.11 Installation Guide

Copyright (c) 2000-2015 by Vector Informatik GmbH


Installation of DaVinci Developer

Compatibility

A correct configuration of the MICROSAR RTE is only possible if you use the dedicated version of the DaVinci Developer. Please check the MICROSAR Rte Compatibility Matrix to find the DaVinci Developer version you need.

Please Note: Your licensed DaVinci Developer version defines the highest version you are able to use. Depending on the specific basic software version of a project you might need to use a tool version which is lower than your actual licence.

External Components

In order to work with DaVinci Developer some shared external components have to be installed first. Please install the latest DaVinci External Components Setup from the Vector Download Center

Setup Program

Start the DaVinci setup program Setup.exe and follow the setup steps.

Please note: You must have administrator rights to install DaVinci Developer.

Under some circumstances the InstallShield setup can't be started on a network drive. To ensure proper installation please copy the full installation setup into a temporary directory on a local drive and execute the Setup.exe from this directory.


System modifications performed by DaVinci Developer setup

Shared components

DaVinci External Components Setup will install the following shared runtime components:

  • Microsoft Visual C++ Runtime
  • Microsoft .NET Framework 2.0 SP2
  • Microsoft MSXML Parser
  • Vector License Manager
  • Vector CANdela Converter Add-On
  • Vector DaVinci Difference Analyzer
  • Vector DaVinci Project Assistant
  • Vector AUTOSAR Explorer
  • Vector AUTOSAR Scripting Engine
  • Vector Eparm (DaVinci Configurator Pro .MD)
  • Vector DaVinci 64 Bit Support
  • Vector DaVinci Floating License Manager
  • Vector vVIRTUALtarget basic

Please visit the Vector Download Area for a complete list with specific versions.

Shared DaVinci components are installed in the Windows <COMMONFILES>\Vector\DaVinci directory (e.g. "C:\Program Files (x86)\Common Files\Vector\DaVinci).

The DaVinci Difference Analyzer is installed in <COMMONFILES>\Vector\DaVinci\DiffAnalyzer containing the command-line difference tool and the viewer.

The DaVinci Project Assistant is installed in <COMMONFILES>\Vector\DaVinci\ProjectAssistant.

The Vector AUTOSAR Explorer is installed in <PROGAMFILES>\Vector AUTOSAR Explorer.

NOTE: The Vector AUTOSAR Explorer requires that Microsoft .NET Framework 4 is installed on the PC. Please visit the Microsoft Website for .NET 4 download.

Program files

The DaVinci setup program installs the DaVinci root folder (e.g. "C:\ProgramFiles (x86)\Vector DaVinci Developer 3.11") with the following sub folders

  • Bin: Program files, libraries and the DaVinci-DTD files
  • Data: Example workspace
  • Docs: Documentation
  • Reporting: Report generator
  • Output: Standard output directory for generated files
  • Work: Standard working directory

Start menu

The DaVinci setup program adds a menu entry "Vector DaVinci Developer 3.11" to your Windows start menu with the following links

  • DaVinci Developer
  • DaVinci Documentation Browser
  • DaVinci Installation Manager
  • DaVinci Difference Viewer
  • DaVinci Configuration File Utility

Desktop

The DaVinci setup program adds a link to the DaVinci Developer to the desktop.


Product activation

To activate the DaVinci FlexNet license on your PC you may use the Vector License Manager installed by the DaVinci External Components Setup

Details can be found in the document LicenseManagerHelp.pdf in C:\Program Files (x86)\Vector License Manager\Docs.


Deinstallation

Deinstallation of DaVinci Developer

Open the Windows standard dialog of installed software (Start menu | Settings | System control | Software)

Select "Vector DaVinci Developer" and push "Modify/Remove"

Choose "Remove" in the DaVinci Developer Setup dialog and the setup steps to remove DaVinci

Deinstallation of shared components

Additionally you may deinstall the shared components if they are no longer used by other DaVinci applications (e.g. DaVinci Configurator Pro)


Parallel installation

You may subsequently install several different versions of the DaVinci Developer on the same PC. You may choose the same root folder, if the installations are compatible. The setup program checks this compatibility. In case of incompatible installations you have to select a different root folder.

Only one of the installations can be active. To change the active installation you must use the DaVinci Installation Manager.

You find the DaVinci Installation Manager (DVInstMgr.exe) in the "Bin" sub-folder of the DaVinci root folder. The DaVinci Installation Manager displays a list of all DaVinci installations on the PC. The active installation is displayed bold with an additional DaVinci icon. To activate a different installation you may select it in the list and push the "Activate" button.

3.35 -

DaVinci Developer Release Notes

DaVinci Developer Release Notes

Copyright (c) 2000-2015 by Vector Informatik GmbH


Table of contents

DaVinci Developer Version 3.11 (SP1)
DaVinci Developer Version 3.11
DaVinci Developer Version 3.10 (SP3)
DaVinci Developer Version 3.10 (SP2)
DaVinci Developer Version 3.10 (SP1)
DaVinci Developer Version 3.10
DaVinci Developer Version 3.9 (SP3)
DaVinci Developer Version 3.9 (SP2)
DaVinci Developer Version 3.9 (SP1)
DaVinci Developer Version 3.9
DaVinci Developer Version 3.8 (SP4)
DaVinci Developer Version 3.8 (SP3)
DaVinci Developer Version 3.8 (SP2)
DaVinci Developer Version 3.8 (SP1)
DaVinci Developer Version 3.8
DaVinci Developer Version 3.7 (SP6)
DaVinci Developer Version 3.7 (SP5)
DaVinci Developer Version 3.7 (SP4)
DaVinci Developer Version 3.7 (SP3)
DaVinci Developer Version 3.7 (SP2)
DaVinci Developer Version 3.7 (SP1)
DaVinci Developer Version 3.7
DaVinci Developer Version 3.6 (SP4)
DaVinci Developer Version 3.6 (SP3)
DaVinci Developer Version 3.6 (SP2)
DaVinci Developer Version 3.6 (SP1)
DaVinci Developer Version 3.6
DaVinci Developer Version 3.5 (SP4)
DaVinci Developer Version 3.5 (SP3)
DaVinci Developer Version 3.5 (SP2)
DaVinci Developer Version 3.5 (SP1)
DaVinci Developer Version 3.5
DaVinci Developer Version 3.4
DaVinci Developer Version 3.3 (SP5)
DaVinci Developer Version 3.3 (SP4)
DaVinci Developer Version 3.3 (SP3)
DaVinci Developer Version 3.3 (SP2)
DaVinci Developer Version 3.3 (SP1)
DaVinci Developer Version 3.3
DaVinci Developer Version 3.2 (SP7)
DaVinci Developer Version 3.2 (SP6)
DaVinci Developer Version 3.2 (SP5)
DaVinci Developer Version 3.2 (SP4)
DaVinci Developer Version 3.2 (SP3)
DaVinci Developer Version 3.2 (SP2)
DaVinci Developer Version 3.2 (SP1)
DaVinci Developer Version 3.2
DaVinci Developer Version 3.1 (SP4)
DaVinci Developer Version 3.1 (SP3)
DaVinci Developer Version 3.1 (SP2)
DaVinci Developer Version 3.1 (SP1)
DaVinci Developer Version 3.1
DaVinci Developer Version 3.0 (SP5)
DaVinci Developer Version 3.0 (SP4)
DaVinci Developer Version 3.0 (SP3)
DaVinci Developer Version 3.0 (SP2)
DaVinci Developer Version 3.0 (SP1)
DaVinci Developer Version 3.0
DaVinci Tool Suite Version 2.3 (SP7)
DaVinci Tool Suite Version 2.3 (SP6)
DaVinci Tool Suite Version 2.3 (SP5)
DaVinci Tool Suite Version 2.3 (SP4)
DaVinci Tool Suite Version 2.3 (SP3)
DaVinci Tool Suite Version 2.3 (SP2)
DaVinci Tool Suite Version 2.3 (SP1)
DaVinci Tool Suite Version 2.3
DaVinci Tool Suite Version 2.2 (SP4)
DaVinci Tool Suite Version 2.2 (SP3)
DaVinci Tool Suite Version 2.2 (SP2)
DaVinci Tool Suite Version 2.2 (SP1)
DaVinci Tool Suite Version 2.2
DaVinci Tool Suite Version 2.1 PRE (SP3)
DaVinci Tool Suite Version 2.1 PRE (SP2)
DaVinci Tool Suite Version 2.1 PRE (SP1)
DaVinci Tool Suite Version 2.1 PRE
DaVinci Tool Suite Version 2.0 PRE (SP3)
DaVinci Tool Suite Version 2.0 PRE (SP2)
DaVinci Tool Suite Version 2.0 PRE (SP1)
DaVinci Tool Suite Version 2.0 PRE
DaVinci Tool Suite Version 1.0 (SP4)
DaVinci Tool Suite Version 1.0 (SP3)
DaVinci Tool Suite Version 1.0 (SP2)
DaVinci Tool Suite Version 1.0 (SP1)
DaVinci Tool Suite Version 1.0
DaVinci Tool Suite Version 0.9.8
DaVinci Tool Suite Version 0.9.7 (SP1)
DaVinci Tool Suite Version 0.9.7
DaVinci Tool Suite Version 0.9.6
Additional Information

DaVinci Developer Version 3.11 (SP1)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • The official 'ServiceProvider' attribute is now supported to annotate the BSW Module origin
  • The pointer datatype DATA_REFERENCE is now fully supported
  • End-to-End protections without port references but with signal group references are now supported
  • 'Create Port Prototypes' functionality now supports the signal group degradation use case

Usability enhancements

  • Invalid generic attribute definition files are now displayed in the Action-Log during workspace loading
  • Additional check has been added to ensure that the compu-methods category of an implementation data-type is either BITFIELD_TEXTTABLE or TEXTTABLE
  • Additionally merged usability enhancements from service packs of previous releases:
    • The import option 'Substitute missing objects' is now active by default for new workspaces. The import defaults can be set via the workspace settings dialog.
    • Enhanced contract phase template generation dialog; automatically offers the Rte generator from the referenced SIP if available
    • Menu command to reset the toolbar and docking window layout has been added
    • Find results view now displays the parent element in a separate column
    • Multi-select and default settings usability enhancements for End-to-End Protection configuration
    • The available filter options from the import dialog are now available via command line DVImEx
    • Structure graphics is now changeable even if the composition type is locked
    • Multi-select editing of Communication Specification values is now supported
    • A dedicated 'order index' column has been added for lists that have a relevant order in the ARXML schema
    • Import options 'substitute missing objects' and 'check for differences' are now supported in the same import step
    • Enhancements in consistency checks for NV components
    • Import dialog now contains a simplified file/folder selection button
    • Additional consistency check to avoid data types referencing a data type with the same name

Fixed issues

  • The data-type-mapping-refs were cleared during update of the diagnostics data using the special import mode
  • When creating a server runnable from a nv-component the name of the server-runnable was created with the pattern 'port-prototype'_'operation_name' which could lead into name clashes
  • DaVinci DEV crashed without any error message if the direction of a port prototype was changed while a runnable data access existed
  • Additionally merged issues from service packs of previous releases:
    • Error 'XML parser error code 0x800C0006 in file .' was displayed when opening a DCF workspace with relative paths to a DPA file
    • Modifications in the recent import file list caused a workspace modification
    • ARXML import merge aborted when trying to merge an union data type.
    • Import with function 'check for differences' aborted if a new element had to be created but its package already exists
    • After creating a port from a signal using the 'Create Port Prototypes' function the port was not compatible to the signal if a physical constraint was specified
    • Data mapping of a complex element to a transformed signal causes inconsistencies in the data mapping view
    • Additionally merged issues from service packs of previous releases:
    • AUTOSAR 4 import of Group-Signals didn't update all signal references correctly which resulted in an illegal file split error in DaVinci Configurator Pro
    • AUTOSAR 4 import of a negative exponential value ignored the sign
    • Export option 'Create UUIDs' wrote identical UUIDs for all signal- and frame ports
    • Creating an OnTransitionTrigger from the runnable context menu didn't work
    • Not all Asian characters could be used in description fields
    • Find unused object menu was sometimes disabled
    • Create Port-Prototypes function didn't create record data-types for signal groups
    • Developer crashed when importing an enumeration data type with physical and internal constraints
    • AUTOSAR 4: Signal-Port time out value was not imported
    • AUTOSAR 4: Not all Parameter-Accesses were exported for modelled calibration elements
    • An internal exception occurred on ARXML import if an existing component type had a different internal behavior name and a runnable with the same name
    • Importing an AUTOSAR 3 array without type-reference into an AUTOSAR 4 workspace created an invalid the data-type
    • Duplicate UUIDs occurred when creating a Multiple-ECU project from ECU Extracts containing UUIDs
    • The name of an imported argument prototype wasn't imported correctly
    • End-to-End protection data IDs were mixed up when opening an old workspace saved with DaVinci Developer 3.2
    • Unlocking a composition didn't allow moving its ports/component prototypes until the ECU-Project editor was reopened
    • Create port from signal didn't worked for multiple signals if the data mapping wasn't created in the same step
    • Crash was fixed when leaving the NV Block descriptor page of a NV Component editor without having a Block Descriptor defined
    • NV component couldn't be configured in the local composition view
    • Inter-Runnable-Variable data type wasn't exported to DCF if their component type contained an Inter-Runnable-Variable with a unique data type which wasn't used in any other case
    • Blueprints couldnt be exported to DCF
    • Crash fixed if context component for create port prototypes was selected as "none"
    • AUTOSAR4: init value of NV block description (ram or rom) couldn't be unset
    • AUTOSAR4: Substitute missing objects showed irrelevant unresolved references
    • The data type reference of a calibration element prototype wasn't set after import
    • Import of a DCF package accidently sets the workspace option "Load Service Components when opening the workspace" to a wrong value
    • Copying a runnable broke the data model and causes undesired wait points
    • Duplicating an Object copied the original UUID instead of creating a new one.
    • HTML links in descriptions didn't appear in the report
    • Data mapping view didn't display the correct direction of signals which were sent/received as single signal and as part of a signal-group

(top)


DaVinci Developer Version 3.11

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • COM-based Transformer can now be configured; supporting End-to-End Protection profiles 1+2
  • Enhancements of NV Block SWC:
    • supporting now also Client/Server- and ModeSwitch-interfaces
    • explicit modelling of different writing strategies
    • multiple NvBlock to port mappings for dual-sided RAM block access

Usability enhancements

  • Enhanced contract phase template generation dialog; automatically offers the Rte generator from the referenced SIP if available
  • Enhanced tool interaction allows to create Service-Ports directly from within DaVinci Configurator Pro

Fixed issues

  • In rare cases the library tree contained obsolete items due to a missing update
  • UUIDs of SwcServiceDependencies and NvBlockDescriptors were missing in the ARXML export
  • Tool crashed when a locked component type was assigned to the DataTypeMappingSet in the Data-Type-Mapping-Set dialog
  • If the workspace was part of a DPA project a XML parser error code 0x800C0006 was shown when opening a DCF workspace from Windows Explorer with a double click

(top)


DaVinci Developer Version 3.10 (SP3)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • End-to-End protections without port references but with signal group references are now supported
  • 'Create Port Prototypes' functionality now supports the signal group degradation use case

Usability enhancements

  • The import option 'Substitute missing objects' is now active by default for new workspaces. The import defaults can be set via the workspace settings dialog.
  • Enhanced contract phase template generation dialog; automatically offers the Rte generator from the referenced SIP if available
  • Menu command to reset the toolbar and docking window layout has been added
  • Find results view now displays the parent element in a separate column
  • Multi-select and default settings usability enhancements for End-to-End Protection configuration
  • The available filter options from the import dialog are now available via command line DVImEx
  • Structure graphics is now changeable even if the composition type is locked
  • Multi-select editing of Communication Specification values is now supported
  • A dedicated 'order index' column has been added for lists that have a relevant order in the ARXML schema
  • Import options 'substitute missing objects' and 'check for differences' are now supported in the same import step
  • Enhancements in consistency checks for NV components
  • Import dialog now contains a simplified file/folder selection button
  • Additional consistency check to avoid data types referencing a data type with the same name

Fixed issues

  • Error 'XML parser error code 0x800C0006 in file .' was displayed when opening a DCF workspace with relative paths to a DPA file
  • Modifications in the recent import file list caused a workspace modification
  • ARXML import merge aborted when trying to merge an union data type.
  • Import with function 'check for differences' aborted if a new element had to be created but its package already exists
  • After creating a port from a signal using the 'Create Port Prototypes' function the port was not compatible to the signal if a physical constraint was specified
  • Additionally merged issues from service packs of previous releases:
    • Data mapping of a complex element to a transformed signal causes inconsistencies in the data mapping view
    • Additionally merged issues from service packs of previous releases:
    • AUTOSAR 4 import of Group-Signals didn't update all signal references correctly which resulted in an illegal file split error in DaVinci Configurator Pro
    • AUTOSAR 4 import of a negative exponential value ignored the sign
    • Export option 'Create UUIDs' wrote identical UUIDs for all signal- and frame ports
    • Creating an OnTransitionTrigger from the runnable context menu didn't work
    • Not all Asian characters could be used in description fields
    • Find unused object menu was sometimes disabled
    • Create Port-Prototypes function didn't create record data-types for signal groups
    • Developer crashed when importing an enumeration data type with physical and internal constraints
    • AUTOSAR 4: Signal-Port time out value was not imported
    • AUTOSAR 4: Not all Parameter-Accesses were exported for modelled calibration elements
    • An internal exception occurred on ARXML import if an existing component type had a different internal behavior name and a runnable with the same name
    • Importing an AUTOSAR 3 array without type-reference into an AUTOSAR 4 workspace created an invalid the data-type
    • Duplicate UUIDs occurred when creating a Multiple-ECU project from ECU Extracts containing UUIDs
    • The name of an imported argument prototype wasn't imported correctly
    • End-to-End protection data IDs were mixed up when opening an old workspace saved with DaVinci Developer 3.2
    • Unlocking a composition didn't allow moving its ports/component prototypes until the ECU-Project editor was reopened
    • Create port from signal didn't worked for multiple signals if the data mapping wasn't created in the same step
    • Crash was fixed when leaving the NV Block descriptor page of a NV Component editor without having a Block Descriptor defined
    • NV component couldn't be configured in the local composition view
    • Inter-Runnable-Variable data type wasn't exported to DCF if their component type contained an Inter-Runnable-Variable with a unique data type which wasn't used in any other case
    • Blueprints couldnt be exported to DCF
    • Crash fixed if context component for create port prototypes was selected as "none"
    • AUTOSAR4: init value of NV block description (ram or rom) couldn't be unset
    • AUTOSAR4: Substitute missing objects showed irrelevant unresolved references
    • The data type reference of a calibration element prototype wasn't set after import
    • Import of a DCF package accidently sets the workspace option "Load Service Components when opening the workspace" to a wrong value
    • Copying a runnable broke the data model and causes undesired wait points
    • Duplicating an Object copied the original UUID instead of creating a new one.
    • HTML links in descriptions didn't appear in the report
    • Data mapping view didn't display the correct direction of signals which were sent/received as single signal and as part of a signal-group

(top)


DaVinci Developer Version 3.10 (SP2)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • Various roundups and extensions have been implemented for the Diff/Merge functionality, especially support for NV-Data-Interfaces and Packages
  • Function "Create Port Prototypes" can now be used on signals that don't have a base type

Usability enhancements

  • ARXML import dialog can now load an external .txt file that contains a list of the file name references to be imported. Paths can be absolute, relative (to the .txt itself) and just the filename itself (same directory).
  • Saving a DCF workspace can now remove files for deleted objects. This option can be activated in the workspace settings.

Fixed issues

  • If falsely an invalid Invoke Operations Port-Access was defined on a non-Client port, the DCF workspace couldn't be loaded anymore
  • A project wasn't updated correctly if the elements were part of a package named "Autosar_Platform".
  • Exporting a Mode Declaration Group contained the category. This category is now corrected to the ALPHABETICAL_ORDER or EXPLICIT_ORDER.
  • In some cases the diff/merge crashed when importing communication data with "check for differences" option.
  • Importing an new ECU SW-Composition delegation port in a previous workspace with "check for differences" option enabled, the data mapping of this port wasn't created.
  • Error 40391 "Invalid integer for criterion" was reported if the project contained more than 4 variants
  • For some object types the package icon was missing in the Library Browser's type view
  • Item is read-only error occurs when opening a SWC composition that contained a read-only atomic SWCs with an outdated interface graphic.
  • The references to a Mapping Set from a NvBlockComponent were not persistent
  • Automatic data type mapping falsely created a fix-size implementation array for a dynamic-size application array
  • Function "Create Server Runnables" created duplicate runnables and allowed invalid prefix / postfix strings

(top)


DaVinci Developer Version 3.10 (SP1)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • Vector FlexNet Pool License model is now supported
  • Support for signals which are transmitted over container PDUs has been added

Fixed issues

  • Exception was raised when adding a file to the ARXML import list if a J1939 cluster contained a NODE-NAME and the ECU-INSTANCE attribute
  • DVImEx command line tool falsely showed the message "Referenced DPA file from the DCF workspace differs to the load DPA file" if a relative path was given
  • TP Signals weren't displayed with the correct frame in the Data-Mapping view for the 1:N use case
  • Some smaller GUI roundups and fixes have been made when using union data types

(top)


DaVinci Developer Version 3.10

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • Mapping of Data-Prototypes in different Port-Interfaces is now supported
  • Text table mapping for Bit fields is now available
  • Background event trigger can now be defined at the runnable
  • End-to-End protection profiles 5 and 6 are now supported
  • UTF-16 base type encoding can now be specified
  • UNION data types are now supported

Usability enhancements

  • More detailed log messages during ARXML import if generic attributes reference obsolete objects
  • Additional checks to detect more NvM Service Need inconsistencies
  • AUTOSAR Platform types are now defined in a separate ARXML file and automatically used for new projects
  • The path to the .dpa project file is now stored in the .dcf file to allow manual adaptation

Fixed issues

  • ARXML import throws an error if the same Client/Server interface was defined in multiple files which were imported in the same step
  • Consistency check reports incompatible data types if the Type-Emitter where different
  • Communication information was accidently removed when importing a SYSTEM with software design but without communication

(top)


DaVinci Developer Version 3.9 (SP3)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Fixed issues

  • Standard Nvm interfaces were missing on creating a new AR 4.1.3 workspace
  • Migration of a DCF workspace to a different AUTOSAR schema version wasn't possible because the SaveAs menu entry was disabled
  • Record Constant dialog couldn't be opened for the port prototype if a Com-Spec wasn't defined at the data element of the port
  • Create Port Prototypes function created an invalid init value for complex data types
  • ARXML import threw a fatal error if the same client-server interface was specified in different files and the files were imported at the same time
  • The automatic Application to Implementation Data-Type Mapping falsely created a fix-size Impl-array for a dynamic-size Appl-array and reported this as invalid mapping
  • Not all Asian characters could be used in description fields

(top)


DaVinci Developer Version 3.9 (SP2)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • Compatibility checks for Bit fields have been improved

Usability enhancements

  • Output of check message 40224: "Unused data element prototype" can now be omitted by the option "Report unused Data Elements" in the workspace setting dialog
  • Command line tool DVImEx now supports the "SubstituteMissingObjects" option
  • For iterative import/export workflow purposes an additional import option "Keep existing UUIDs" is now available
  • Additional function "Adopt structure..." to align the value definition structure to the structure of the actual data type
  • In selection dialogs the init values are now filtered according to the data type

Fixed issues

  • Referenced mode declaration groups were missing in DCF export when data type mapping sets where used
  • In rare cases the relative DPA project file path couldn't be found if the current directory had been changed via the open file dialog
  • End-to-End protection consistency check didn't worked within compositions
  • Port access settings of runnables were invalid after they were copied in the runnable list
  • Frame assignment was not visible for Signal-PDUs which were connected to a NPDU via the TP-Connection
  • Multiple recursive usage of constant references leaded to an exception
  • Data mapping for Signal-Groups didn't worked if Sub-Elements were incompatible
  • Cancel button for "InitValue" of Record- and Array data types had no effect

(top)


DaVinci Developer Version 3.9 (SP1)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • AUTOSAR schema 4.2.1 is now supported
  • Memory Section assignment is now available for NvBlockDescriptor:RAMBlock
  • PR-Ports can now be used for Mode-Ports and NvData-Ports
  • Bit field data types are now supported by using the BITFIELD_TEXTTABLE in the compu-method

Usability enhancements

  • Workspace interaction with DaVinci Configurator has been enhanced by using a lock file mechanism during workspace save
  • Creation of a Data-Mapping for a variant signal now evaluates the variant information to set the same variant condition

Fixed issues

  • Data element properties couldn't be opened from within the Data Mapping signal view
  • Interfaces View in software component editor was falsely disabled for NvComponents
  • Most recently used workspace list showed the location of the temporary workspace after a project update using DaVinci Configurator
  • Frame was not imported if a frame triggering specifies RX-IDENTIFIER-RANGE instead of IDENTIFIER
  • DCF workspace couldn't be loaded if the port direction was changed without performing a consistency check which will correct the port connector
  • Error message 'Current special import can only import System Template files' was thrown when using special import feature
  • Tool tip didn't work when hovering over a array constant with many values
  • LIN-PDUs without frame triggerings couldn't be imported
  • Consistency checks for NV-Component init values have been corrected
  • DCF workspace contained elements with the same UUID if the component type was duplicated by the copy function in the Library-View
  • It was falsely possible to update the project in DaVinci Configurator when the workspace was opened in DaVinci Developer
  • PR-Port generation didn't work in case of a complex data type

(top)


DaVinci Developer Version 3.9

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • Post-Build selectable use-case is now supported by using AUTOSAR Variant Handling for data-mapping with variation points at the communication
  • General support of PDUs without frames has been implemented for all cluster types
  • Communication data has been restructured so that DaVinci Developer can directly work on DaVinci Configurator's communication files
  • COM signals with shared ISignalToIPDUMapping are now supported
  • uint64 and sint64 are now supported as platform types
  • Server argument implementation policy attribute is now supported in the operation prototype dialog
  • Port access mode 'ReceivePointByValue' is now supported
  • End-to-End protection now supports profile 4 for Client/Server inter-ECU communication
  • Optional definition of service need parameters

Usability enhancements

  • Additional 'Check Workspace' button is now available in the toolbar
  • Project update has been simplified to update the DaVinci Developer workspace without user interaction

Fixed issues

  • 'Complete Ports' functionality produced wrong opposite ports if a context component type was used
  • 'Save As...' functionality has been disabled for projects with DaVinci Configurator Pro because it corrupted the external file references
  • HTML links in the description field were not correctly displayed in the report
  • The Diagnostics Event Need value 'ConsiderPTO Status' was not correctly set by ARXML import
  • Project update with DaVinci Configurator Pro command line tool ended with error -1060110332 (0xC0D00004)
  • Port Defined Argument Value could falsely be defined on non-server ports
  • Consistency check of the Rte generator falsely reports consistency errors when started within DaVinci Developer
  • Consistency check of service needs caused memory leaks

(top)


DaVinci Developer Version 3.8 (SP4)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • End-to-End protections without port references but with signal group references are now supported
  • The 'Create PortPrototype from Signal' functionality now supports the signal group degradation use case

Usability enhancements

  • The import option 'Substitute missing objects' is now active by default for new workspaces. The import defaults can be set via the workspace settings dialog.
  • Additionally merged enhancements from service packs of previous releases:
    • Enhanced contract phase template generation dialog; automatically offers the Rte generator from the referenced SIP if available
    • Menu command to reset the toolbar and docking window layout has been added
    • Find results view now displays the parent element in a separate column
    • Multi-select and default settings usability enhancements for End-to-End Protection configuration
    • The available filter options from the import dialog are now available via command line DVImEx
    • Structure graphics is now changeable even if the composition type is locked
    • Multi-select editing of Communication Specification values is now supported
    • A dedicated 'order index' column has been added for lists that have a relevant order in the ARXML schema
    • Import options 'substitute missing objects' and 'check for differences' are now supported in the same import step
    • Enhancements in consistency checks for NV components
    • Import dialog now contains a simplified file/folder selection button
    • Additional consistency check to avoid data types referencing a data type with the same name

Fixed issues

  • Data mapping of a complex element to a transformed signal causes inconsistencies in the data mapping view
  • Additionally merged issues from service packs of previous releases:
    • AUTOSAR 4 import of Group-Signals didn't update all signal references correctly which resulted in an illegal file split error in DaVinci Configurator Pro
    • AUTOSAR 4 import of a negative exponential value ignored the sign
    • Export option 'Create UUIDs' wrote identical UUIDs for all signal- and frame ports
    • Creating an OnTransitionTrigger from the runnable context menu didn't work
    • Not all Asian characters could be used in description fields
    • Find unused object menu was sometimes disabled
    • Create Port-Prototypes function didn't create record data-types for signal groups
    • Developer crashed when importing an enumeration data type with physical and internal constraints
    • AUTOSAR 4: Signal-Port time out value was not imported
    • AUTOSAR 4: Not all Parameter-Accesses were exported for modelled calibration elements
    • An internal exception occurred on ARXML import if an existing component type had a different internal behavior name and a runnable with the same name
    • Importing an AUTOSAR 3 array without type-reference into an AUTOSAR 4 workspace created an invalid the data-type
    • Duplicate UUIDs occurred when creating a Multiple-ECU project from ECU Extracts containing UUIDs
    • The name of an imported argument prototype wasn't imported correctly
    • End-to-End protection data IDs were mixed up when opening an old workspace saved with DaVinci Developer 3.2
    • Unlocking a composition didn't allow moving its ports/component prototypes until the ECU-Project editor was reopened
    • Create port from signal didn't worked for multiple signals if the data mapping wasn't created in the same step
    • Crash was fixed when leaving the NV Block descriptor page of a NV Component editor without having a Block Descriptor defined
    • NV component couldn't be configured in the local composition view
    • Inter-Runnable-Variable data type wasn't exported to DCF if their component type contained an Inter-Runnable-Variable with a unique data type which wasn't used in any other case
    • Blueprints couldnt be exported to DCF
    • Crash fixed if context component for create port prototypes was selected as "none"
    • AUTOSAR4: init value of NV block description (ram or rom) couldn't be unset
    • AUTOSAR4: Substitute missing objects showed irrelevant unresolved references
    • The data type reference of a calibration element prototype wasn't set after import
    • Import of a DCF package accidently sets the workspace option "Load Service Components when opening the workspace" to a wrong value
    • Copying a runnable broke the data model and causes undesired wait points
    • Duplicating an Object copied the original UUID instead of creating a new one.
    • HTML links in descriptions didn't appear in the report
    • Data mapping view didn't display the correct direction of signals which were sent/received as single signal and as part of a signal-group

(top)


DaVinci Developer Version 3.8 (SP3)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Usability enhancements

  • Missing compu-method category in ARXML file is now added by the import with a reasonable value
  • Additional option in SaveAs... to migrate the version of an existing DCF workspace in-place without changing the project structure
  • External service components change detection doesn't show the import dialog any more
  • Check for multiple signal group mappings is now enhanced enhancement for PR-Ports
  • Multiple selection of objects in several packages is now supported in the Library-View package tab

Fixed issues

  • The data reception trigger couldn't be created for a NV-DataElement
  • DCF workspace couldn't be loaded if data accesses exist without data element prototype
  • Setting to deactivate End-to-End protection consistency checks was loaded always enabled
  • Newly created data type/constant was added to the default package instead of the selected package
  • Auto connect created redundant connections for PR-ports if they were already connected
  • Obsolete data mappings were displayed in the signal mode of the data mapping view when the data transformation was enabled

(top)


DaVinci Developer Version 3.8 (SP2)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Usability enhancements

  • An additional "Check Workspace" button is now available to check the full workspace independent from the selected element
  • The layout and content of NV Block Component Types has been adapted to match the NvM Block Needs page of regular SWC types

Fixed issues

  • AUTOSAR 3 workspaces could still be created which is no longer supported in this release
  • References to compu method and data constraints were missing if Signals are defined prior to the referenced elements in the ARXML file
  • An empty NUMERIC-VALUE-SPECIFICATION was exported if a communication specification hadn't defined any init value
  • In rare cases DCF workspace couldn't be saved due to duplicate short names
  • AUTOSAR 3 cross-import didn't understand hex string values like "A0:A1:A2"
  • The Rte generation added ComGroupSignals to the ECU-C configuration although they are not related to the ComSignalGroup
  • Memory leaks occurred during consistency check of service needs
  • Wrong focus selection handling in service needs edit files has been corrected

(top)


DaVinci Developer Version 3.8 (SP1)

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • Export to AUTOSAR schema version 4.1.1 is now supported
  • Application-Ports are now supported at Service Components

Fixed issues

  • Keyboard-navigation through editors(Ctrl+HOME/Ctrl+END) didn't work anymore
  • Invalid NvM ServiceNeeds configuration wasn't exported to ARXML
  • Import of component type was canceled if a port defined argument value existed and its value didn't define a short label.
  • ARXML import crashed when importing an inconsistent array data type
  • AUTOSAR 3 cross-import didn't import the system signals into the specified package
  • "Parameter is incorrect" exception was threw during copying a data element
  • Data exchange analysis showed no communication if an incompatible connector existed in the software design
  • "Adapt Connected Port Prototypes" functionality failed when using PR-Ports
  • Port assignments at the service needs got lost when opening a DaVinci DEV 3.6 workspace
  • ARXML import update use-case didn't work with init-triggers in 4.1.2 format
  • PR-Ports aren't shown as compatible in the Connector Dialog

(top)


DaVinci Developer Version 3.8

NOTE

This release is only relevant for AUTOSAR 4.
AUTOSAR 3 is supported by DaVinci Developer Version 3.7 or previous releases.

Tool features

  • Combined provide-require-ports (PRPortPrototype) can be defined in the software design
  • Explicit modelling of E_OK as application error is now possible
  • Service Needs have been extended for NvM Top-Down service configuration
  • OBD Ratio Service Need has been added
  • Introducing Sender/Receiver Serialization via Transformer concept (AR4.2.1 preview-feature)
    • Data transformation currently only supported for SOME/IP serialization
    • Inter-Ecu Client/Server Communication is available for signals using data transformation
    • Specific End-to-End protection profiles for data transformation have been added
    • End-to-End protection is now supporting also primitive data elements

Usability enhancements

  • Init-Runnables are described with the standardized AUTOSAR InitEvent
  • TypeReferences now support Data-Constraints
  • Data Exchange Analysis now displays the effective Init-Value

(top)


DaVinci Developer Version 3.7 (SP6)

Tool features

  • End-to-End protections without port references but with signal group references are now supported
  • 'Create PortPrototypes' functionality now supports the signal group degradation use case

Usability enhancements

  • Enhanced contract phase template generation dialog; automatically offers the Rte generator from the referenced SIP if available
  • Menu command to reset the toolbar and docking window layout has been added
  • Find results view now displays the parent element in a separate column

Fixed issues

  • AUTOSAR 4 import of Group-Signals didn't update all signal references correctly which resulted in an illegal file split error in DaVinci Configurator Pro
  • AUTOSAR 4 import of a negative exponential value ignored the sign
  • Export option 'Create UUIDs' wrote identical UUIDs for all signal- and frame ports
  • Creating an OnTransitionTrigger from the runnable context menu didn't work

(top)


DaVinci Developer Version 3.7 (SP5)

Usability enhancements

  • Multi-select and default settings usability enhancements for End-to-End Protection configuration
  • The available filter options from the Import dialog are now available via command line DVImEx
  • Structure graphics is now changeable even if the composition type is locked
  • Multi-select editing of Communication Specification values is now supported
  • A dedicated 'order index' column has been added for lists that have a relevant order in the ARXML schema

Fixed issues

  • Not all Asian characters could be used in description fields
  • Find unused object menu was sometimes disabled
  • Create Port-Prototypes function didn't create record data-types for signal groups
  • Developer crashed when importing an enumeration data type with physical and internal constraints
  • AUTOSAR 4: Signal-Port time out value was not imported
  • AUTOSAR 4: Not all Parameter-Accesses were exported for modelled calibration elements
  • An internal exception occurred on ARXML import if an existing component type had a different internal behavior name and a runnable with the same name
  • Importing an AUTOSAR 3 array without type-reference into an AUTOSAR 4 workspace created an invalid the data-type
  • Duplicate UUIDs occurred when creating a Multiple-ECU project from ECU Extracts containing UUIDs
  • The name of an imported argument prototype wasn't imported correctly
  • End-to-End protection data IDs were mixed up when opening an old workspace saved with DaVinci Developer 3.2
  • Unlocking a composition didn't allow moving its ports/component prototypes until the ECU-Project editor was reopened
  • Create port from signal didn't worked for multiple signals if the data mapping wasn't created in the same step

(top)


DaVinci Developer Version 3.7 (SP4)

Tool features

  • Export of ARXML files with AUTOSAR schema 4.1.1 is now supported
  • Support of signals sent on several frames on several channels of a cluster has been added
  • Text-ValueSpecification can now be used as init value for an Enum Data-Type
  • AUTOSAR 3: Service Mapping for S/R Ports supports now n:1 connections

Usability enhancements

  • Automatic data-mapping can now be disabled while creating port-prototypes
  • Select-All in Library view no works as a 'deep select' on all subjacent items
  • 'Flip Direction' command is now available at port prototypes in the Component Editor
  • After Copy&Paste of port prototypes to the port list, the new ports are now selected automatically

Fixed issues

  • ECU-C synchronization added unnecessary COM-Callbacks if the same OS application was used by multiple tasks
  • Illegal file split was created during project update if signals have been moved into a signal group of a different package
  • End-to-End Protection profiles _XOR and _XOR+2 didn't allow a DataID of 0
  • DVImEx command line tool didn't export all referenced elements
  • Record element literals were not unique after adapting record constants to a modified structure
  • The DCF save of a software component was incomplete if obsolete Port-Accesses existed
  • Crash during ARXML import fixed if AUTOSAR 3 objects are imported in a new, empty DEV workspace with the ''Substitute missing Objects' flag enabled.
  • Import/export of the SYSTEM element didn't preserve the original system name
  • Unconnected data mappings of TX/RX signal with two different data elements were not persistent in AUTOSAR 3 DCF workspaces
  • Signals with an invalid-value and an init-value lead to a duplicate short-name in AUTOSAR 4
  • Signals were missing after AUTOSAR 4 import if the ECU-Extract contained one or more Ethernet clusters.
  • Calibration-Support flag of NvBlockSwComponentTypes and ServiceComponentTypes was not written to the ECU-Configuration file
  • DCF utility tool didn't support DCF workspace with AUTOSAR 4.1.3 schema
  • After using the function 'Adapt connected Ports' an error message 'Typeconflict (code 0x80020005)' was produced when opening the port properties.

(top)


DaVinci Developer Version 3.7 (SP3)

Tool features

  • Import of ARXML files with AUTOSAR schema 4.1.3 is now supported

Usability enhancements

  • AUTOSAR 3 import now reports an error if multiple component types reference the same internal behavior

Fixed issues

  • Create Port Prototype functionality sets the wrong package for existing data types
  • AUTOSAR 3 IMC import/update for a Multiple-Config project produced a 'fake' error message that renamed objects exists but no objects were actually renamed
  • AUTOSAR 4 import caused a stack overflow exception when importing an array without sub-elements
  • Init-Trigger handling was corrected to support legacy convention with a '0' cycle time

(top)


DaVinci Developer Version 3.7 (SP2)

Usability enhancements

  • Performance enhancement when loading communication data of a DCF workspace
  • Separate layout toolbar for direct modification of graphic port layout

Fixed issues

  • 'Substitute missing objects' functionality didn't work anymore with AUTOSAR 4 import files
  • Error message 'Invalid pointer code 0x80004003' was thrown when using "Create Port Prototypes" dialog
  • Crash fixed when creating a reference from PIM to NvMBlockNeed or the other way around
  • DaVinci Difference Analyzer command line didn't accept FlexNet license on 64bit Windows
  • Port defined argument values at Application Components couldn't be stored correctly in DCF format and AUTOSAR 3 export
  • AUTOSAR 3 import of enumerations didn't work if an enumeration value had the same name but a different position

(top)


DaVinci Developer Version 3.7 (SP1)

Fixed issues

  • The 'Last Import' timestamp in the ECU-Project's properties dialog was wrong if service components were loaded on opening the workspace
  • Unmodified software components where falsely updated on DCF saving if package information was imported which was actually the same
  • Import an existing software component with 'Keep Realization' option was wrong if existing ports with runnable accesses were deleted
  • When importing a communication specification of a composition port with an init value of type constant reference the reference was not set
  • When changing the kind of communication from queued to unqueued and vice versa, the corresponding communication specifications of ports were not updated on DCF saving
  • The 'Find unused Base Types' functionality didn't consider new references of mapped signals
  • Some ports were missing after import of an imc file for a multiple configuration project if a port with the same name but different port interface already exists
  • After import of the mecu file for a multiple ECU project the data mapping was incomplete if a signal group and their group-signals were mapped in different identities

(top)


DaVinci Developer Version 3.7

Tool features

  • General support for AUTOSAR schema 4.1.1 and 4.1.2
  • AUTOSAR 4 Port-Groups for definition of Virtual Functions Clusters
  • J1939-CLUSTER is now supported with AUTOSAR schema 4.1.1 and 4.1.2
  • Enhanced PDU design for Ethernet/IP-Cluster to allow PDUs without frame mapping
  • Create Port Prototype from data mapping based on a given signal as available for AUTOSAR 3 can now be used for AUTOSAR 4 too
  • Adapt Data Type for Data Element based on a given signal as available for AUTOSAR 3 can now be used for AUTOSAR 4 too
  • Various Service Needs extensions and GUI reworks with support of Role-Based port assignment
  • Improved definition of invalid value of application data types

Usability enhancements

  • Various improvements in roundtrip workflow between DaVinci Developer and DaVinci Configurator Pro
  • Some additional data-mapping and compatibility checks for AUTOSAR 4 data types
  • End-To-End Protections now have a default package like other design objects

Fixed issues

  • The 'check for differences' functionality created a new ECU-Project if the project name differed from the System Extract name
  • The 'check for differences' functionality is now disabled in project update use-case since it corrupted the workspace data
  • The data-type invalid value couldn't handle float values
  • Circular constant references caused a crash when opening such a constant in an editor
  • Incompatible init value was reported even if the data-types are compatible
  • DCF Utility couldn't handle AUTOSAR 4 DCF workspaces correctly and falsely reported corrupted ARXML files
  • Generic attributes of nested data types where incorrectly stored in AUTOSAR 4 DCF workspaces
  • DCF workspace couldn't be loaded anymore if a component type or ECU-Project contains an attached file

(top)


DaVinci Developer Version 3.6 (SP4)

Usability enhancements

  • Import options 'substitute missing objects' and 'check for differences' are now supported in the same import step
  • Enhancements in consistency checks for NV components
  • Import dialog now contains a simplified file/folder selection button
  • Additional consistency check to avoid data types referencing a data type with the same name

Fixed issues

  • Crash was fixed when leaving the NV Block descriptor page of a NV Component editor without having a Block Descriptor defined
  • NV component couldn't be configured in the local composition view
  • Inter-Runnable-Variable data type wasn't exported to DCF if their component type contained an Inter-Runnable-Variable with a unique data type which wasn't used in any other case
  • Blueprints couldnt be exported to DCF
  • Crash fixed if context component for create port prototypes was selected as "none"
  • AUTOSAR4: init value of NV block description (ram or rom) couldn't be unset
  • AUTOSAR4: Substitute missing objects showed irrelevant unresolved references
  • The data type reference of a calibration element prototype wasn't set after import
  • Import of a DCF package accidently sets the workspace option "Load Service Components when opening the workspace" to a wrong value
  • Copying a runnable broke the data model and causes undesired wait points
  • Duplicating an Object copied the original UUID instead of creating a new one.
  • HTML links in descriptions didn't appear in the report
  • Data mapping view didn't display the correct direction of signals which were sent/received as single signal and as part of a signal-group

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.6 (SP3)

Usability enhancements

  • Category items in the Library Browser now have a 'Select All' functionality
  • Separate layout toolbar for direct modification of graphic port layout
  • Data Type Mapping Set dialog now supports multiple selection and modification through context menu

Fixed issues

  • Unmodified objects will no longer update files in the DCF workspace

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.6 (SP2)

Usability enhancements

  • Description field in property dialogs or property view now supports hyperlinks with link execution

Fixed issues

  • Local .CPG FlexNet license couldn't be checked out if multiple DaVinci Developer licenses are activated in parallel
  • ECU-C synchronization of OsSpinlock wrote invalid OsApplication-Refs
  • Exporting a nested composite data mapping failed and the ECU-Extract didn't contain the data mapping of the nested array
  • An ARXML export became invalid on exporting a symbol-value of component type which didn't fulfill the C-Identifiable pattern.

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.6 (SP1)

Usability enhancements

  • Enhanced display of information in the 'About Dialog' if no valid license can be found.
  • Performance enhancements during loading/saving DCF workspace and ECU-C synchronization

Fixed issues

  • Copy/Paste didn't work if the workspace path contains the "," character
  • Duplicate Software Component appeared in LibraryBrowser when re-opened the workspace after creating a workspace snapshot
  • The 'find unused' function for TypeMappingSets showed also elements in use
  • Workspace elements were editable even if the corresponding DCF arxml file was read-only
  • An exception occurred when importing an incomplete AUTOSAR 4 assembly connection
  • The size-property or record structure of nested array constants were not updated during import into a workspace already containing this constant
  • Error 'No such interface supported' with code 0x80004002 was shown twice when importing a Service-SWC by the file observation function
  • DataMapping contained a network signal without a name, message, and network, if a signal was part of at least two signal groups and each of them was received or transmitted on a frame
  • Implementation data types couldn't be deleted from within the Package View

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.6

Tool features

  • Support for Port-Prototype blueprints in the software design
  • Multi-core design is now supported by assigning a core to an OS-Application in AUTOSAR 3
  • N:1 communication is now supported in AUTOSAR 4
  • TP transmitted signals are now available for Data-Mapping in AUTOSAR 4
  • Support of NvData-Interface and NvBlock-Component-Types in AUTOSAR 4
  • System-Signals with 'dynamicLength' are now supported to address the specific use-cases for J1939 and IP
  • The AUTOSAR UUID attribute is now stored for all Objects for a better roundtrip support, new Objects can also be exported with a UUID
  • ARXML import of IP cluster descriptions also from AUTOSAR 4.1.1 format
  • The Vector AUTOSAR Explorer is now delivered as part of the DaVinci DEV setup

Usability enhancements

  • Enhanced interaction between DaVinci DEV and DaVinci CFG to detect renamed objects and refactured references accordingly
  • Support of externally defined service component files which are loaded automatically as read-only elements into DaVinci DEV
  • Some enhancements in aligning graphic elements and taken over attributes when copying graphic elements

Fixed issues

  • AUTOSAR 4 import falsely reported duplicate item names although the file contained unique names
  • AUTOSAR 4 import didn't overwrite the array size of an existing constant
  • AUTOSAR 4 consistency check falsely reported an incompatible End-to-End Protection although it was valid
  • Exporting a DCF workspace using DVImEx.exe threw an unknown error if the -s command line switch wasn't specified
  • Property view displayed wrong item after selecting a software component prototype

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.5 (SP4)

Usability enhancements

  • For graphic operations a UNDO functionality is now available
  • Definition of constants has been enhanced by supporting multi-selection and in-place editing
  • The HTML report now displays 'Queue Length: - ' if a data element is unqueued.

Fixed issues

  • GUI falsely allowed usage of multiple underscores for the record element name of record constants
  • GUI didn't allow leading underscore for the Symbol Values of Implementation Datatypes
  • AUTOSAR 3 import in 'Communication only' mode didn't set the correct package information and doesn't update dependent elements
  • Diff&Merge aborted with an unrelated error if the ARXML export wasn't possible
  • PDUs without package couldn't be merged during AUTOSAR 3 import if the workspace already contains the PDUs without packages
  • Error during DCF saving concerning consistency ID 40116 if a trigger name clash exists
  • Data mapping wasn't recognized in DaVinci Configurator Pro if DaVinci Developer setting 'use default packages' was enabled
  • During ARXML import the merge of existing Port-API Options was wrong if multiple port prototypes on different component types had the same name
  • Data mapping view showed superfluous group signal rows which cannot be unmapped if a signal group was mapped to multiple frames and the received group signal sets were different
  • ECU-C synchronization configured invalid Com callbacks if system signal was received by multiple frames and additionally as part of a system signal group
  • ECU-C synchronization showed a different ComSignal name postfix if the corresponding PDUs are configured as SplitTxRxPDUs and Tx-OverlayingPDUs
  • ECU-C synchronization reported invalid system signal references
  • Invalid ComSignal/ISignalToIPDUMapping references were falsely reported if the corresponding ISignalTriggering didn't reference a signal port
  • Component Prototype properties dialog couldn't be opened from within the component type selection dialog
  • Packages could be deleted without error message even if they are in use
  • Copying multiple elements in a list based view didn't work correctly and showed an error message

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.5 (SP3)

Usability enhancements

  • Enhanced display of information in the 'About Dialog' if no valid license can be found.
  • Performance enhancements during loading/saving DCF workspace and ECU-C synchronization
  • New technical reference for AUTOSAR 4 Data Type design

Fixed issues

  • In rare cases the FlexNet license couldn't be checked out from a license server
  • Check for corrupted files in DCFUtility failed when using AUTOSAR 4 workspaces
  • DCFUtility showed "incompatible file version 0x6c00" error message when opening the ECU-Project binary file
  • Error occurred when importing an ECU SW-Composition port with a Com-Spec without init value
  • SUPPORTS-ASYNCHRONOUS-MODE-SWITCH = true leaded to missing port accesses
  • The generated Rte code contained wrong ComSignal handles and/or ComSignal handles were missing.
  • Loading a AUTOSAR 3 DCF workspace didn't finish in a reasonable time if End-to-End protections with deep SWC hierarchies existed

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.5 (SP2)

Tool features

  • New Data Exchange Analysis view in the ECU-Project to get an overview of the resulting port data exchange, operation invocation or signal flow within the ECU

Usability enhancements

  • Some AUTOSAR 4 specific basic data type checks have been implemented to ensure a valid base type, native declaration und unique naming
  • Data type map consistency check message with ID 30050 has been improved by showing the concrete data type which has to be fixed
  • The "Find Unsed Data Types" functionality has been improved to support all AUTOSAR 4 data type definitions
  • In multiple configuration projects, delegation ports with the same name but different data types are now automatically postfixed with the identity name

Fixed issues

  • After a new Project Assistant project has been created the corresponding workspace wasn't opened directly
  • AUTOSAR 4 import of connections didn't work for empty component types
  • Defined End-to-End connections to unconnected composition ports were lost during saving/loading a DCF workspace
  • Renaming of objects like Mode Declaration Groups didn't trigger all affected files to be updated in a DCF workspace
  • An existing Compu Method Reference couldn't be removed in the dialog by selecting the "none" entry
  • Init values at Inter-Runnable variables weren't checked correctly for data type compatibility
  • Timeout values with different units were reported as different although they were equal
  • Complex Device Driver were imported as a service component type if no service- or application-ports were defined
  • AUTOSAR 4 data constraints were not imported correctly if a compu-method specifies a compu-default-value
  • Some memory leaks during AUTOASAR 4 import have been solved, which caused a crash during load of the DCF workspace
  • Duplicated elements were imported if an element was defined in several files and contained sub-elements without a SHORT-NAME.
  • The NvMBlock length and RomBlock address was not adapted during ECU-C synchronization if the NvBlockDescriptor's NvBlockNeed length was greater than 0
  • Top-level connections derived from the data mapping were missing because the root composition in the ECU-Extract didn't contain connections
  • Data mapping of an array DataElement to a signal wasn't supported for AUTOSAR 4 application data types
  • Port prototypes, component prototypes and connections weren't deleted from the EcuSwComposition if the root composition type and/or package was renamed during updating the ECU-Extract
  • After an AUTOSAR 4 communication update obsolete signal groups were still mapped on a frame
  • Some communication elements were missing after opening a DCF workspace that contained PDU groups referencing other PDU groups
  • Internal exception thrown during AUTOSAR 4 import if the project contained a PDU with the same name as in the imported file, except for character case.
  • Message name in the data mapping view was missing if a signal was mapped on a PDU/Frame which contained signals mapped to several PDUs/Frames
  • Compilation of the generated Rte code failed because of missing Rte functions in multiple configuration projects using extracts of a Multiple-ECU project
  • Data IDs of different End-To-End connections were appended during update of a Multiple-ECU project
  • The Array constant definition was restricted to 512 elements in the GUI
  • The Rte generation showed an internal error about a missing COM signal if a signal was mapped standalone and as a group signal on different frames of the same cluster
  • Click on the "Copy" button didn't have any effect in the ECU Composition Port Prototype list view.
  • The "Adapt Connected Port Prototypes" functionality created invalid AUTOSAR 4 constant references
  • DaVinci DEV crashed when deleting a record element constant which contained duplicate elements

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal

(top)


DaVinci Developer Version 3.5 (SP1)

Tool features

  • Support for interrunnable variables with complex data types

Fixed issues

  • Exported of ECU-Extract contained invalid SIGNAL-MAPPING elements if a system signal was received and transmitted on several clusters or frames
  • Wrong consistency check messages were shown after the first ECU-C synchronization
  • Rte generation failed with "internal error" if the workspace contained Nv ports and the workspace option 'Check and Generate Nv ports' was disabled.
  • ComSignal-names were not correctly imported from the ECU-C file for AUTOSAR 3 Multi-ECU or Multi-Config project.
  • The Software Component properties dialog cannot be closed if the Internal Behavior element contained a custom name without implementation element.
  • The MECU file of Multi-ECU project couldn't be imported if the 'MasterExtract' XML element contained additional elements e.g. comments
  • Crash on importing ECU-Extract fixed if End-to-End protections with END-TO-END-PROTECTION-I-SIGNAL-I-PDUS exists in the ARXML file.

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.5

Tool features

  • Definition of End-to-End Protection is now supported for ECU internal connections
  • Enhanced workflow support for the merge use-case: new Project Merge Assistant functionality available in the explorer context menu of a .dpa file
  • Support of Nv Data Interface and Nv Block Component Types in AUTOSAR 3
  • The SYMBOL property is now supported at the Software Component Type
  • For the online calibration the 'RAM buffer size' is configurable under Generation Parameters
  • Description at the COMPU-SCALE object is now supported

Usability enhancements

  • Setup of a new Project Assistant project will now create standard End-to-End Protection generation calls in the Generator list
  • DaVinci Developer component registration within Windows using the DaVinci Installation Manager is no longer required. Thus administrative rights are only required at setup time and no longer at runtime.
  • Large performance enhancement when merging software components with the 'Check differences before import' option
  • ECU Project report now contains more description fields

Fixed issues

  • Non-ANSI characters were located in the standard data type description; they are removed now.
  • The setting for 'UsesE2EProtection' will now always exported into XML, even if set to FALSE
  • Importing an existing AUTOSAR 4 port interface with a different 'IsService' setting no longer throws an exception
  • Creating a new AUTOSAR 4 project no longer throws an 'missing package reference' error when adding a new port prototype to the ECU Software Composition
  • AUTOSAR 3 import merged CompuMethods with the same name and package even if they were not equal
  • DVImEx command line tool didn't report an error if the specified item couldn't be found
  • Removing packages which were used within a ECU software composition didn't throw an error
  • Using 'Substitute missing objects' import option caused an exception if an application data type was resolved with a workspace element
  • The default package assignment during import was not correct for CompuMethods and Units
  • AUTOSAR 4 communication update removed an existing LIN cluster
  • Generic attribute export was missing for port prototypes at the ECU software composition
  • AUTOSAR 4 export aborted if an inconsistent port connection existed
  • The find function didn't find Enumerators and Record-Elements
  • Incompatible standard generator was reported when using command line Rte generator
  • Error dialog with message "Failed to create empty document." was shown during ECU Project report containing software compositions
  • Timestamp of observed external Service-Components were reset after workspace reloading when using DCF format
  • Crash in import dialog if observed Service-Component file were added twice and one of the duplicates was removed

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.4

Tool features

  • Automatic mapping of application- to implementation data types
  • Configuration of 'Mode Transisiton' runnable triggers is now supported
  • Design of pointer data types (DATA_REFERENCE) is now supported

Usability enhancements

  • In the software design the Tab-key can be used to step to the next design element of the same type
  • Some enhancements in grid alignment of connections and cross-sheet connectors
  • Enhanced info message to detect objects in different packages with the same name but different content

Fixed issues

  • Creation of circular references within record and array data types is now denied
  • Consistency check for missing application data type was only executed during Rte generation but not in the tool
  • Importing a data reference which does not specify an impl or target policy hasn't set the SwImplPolicy value to 'standard'
  • Rte validation and generation aborted with the message "Could not open file" if the temporary files folder contained too many files following the same name pattern.

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.3 (SP5)

Tool features

  • Support of Signals has been added which were sent on several frames with several channels of a cluster

Usability enhancements

  • Naming of 'Symbol' attribute in data type dialogs has been clarified. The term 'Code Symbol' and 'Short Name' is now used instead.
  • Performance enhancement on import/check of data types

Fixed issues

  • List display of large number of port prototypes was incorrect when using cursor keys for navigation
  • Crash when pressing "n" in the Compu-Method dialog fixed
  • The communication specification attributes were incorrectly/not adapted on a destination port.
  • Some minor memory leaks fixed
  • In rare cases the automatic Data-Mapping switched the sub-element mapping of signal groups

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.3 (SP4)

Tool features

  • New Data Exchange Analysis view in the ECU-Project to get an overview of the resulting port data exchange, operation invocation or signal flow within the ECU
  • Port Defined Argument Values are now available at Application Components

Usability enhancements

  • Performance enhancements during loading/saving DCF workspace and ECU-C synchronization
  • Init-Runnable annotation is now supported in AUTOSAR 4 Admin-Data export
  • Category items in the Library View now have a 'SelectAll' function

Fixed issues

  • Editing port accesses using multiple selection led in a dialog error
  • AUTOSAR 3 import of enumerations didn't work if an enumeration value had the same name but a different position
  • Existing SWC implementation was removed during AUTOSAR 4 import if a SWC with the same name and empty structure was imported
  • Internal data constraint couldn't be edit if set to -INF or +INF
  • Error message 'item not found' during AUTOSAR 4 import fixed if an existing data type with compu-method was updated without a compu-method
  • Wrong export of constant-reference item fixed if it actually didn't reference a constant
  • Wrong export of the DEST attribute fixed if the component type is a complex device driver
  • The data-constraint reference wasn't saved on closing the dialog with 'OK' after creating a new calibration element prototype
  • Crash on re-opening a DCF workspace fixed that was caused by memory leaks
  • Name clash fixed during export of End-to-End protections on atomic ports
  • The 'Adapt connected port' functionality didn't consider all communication specification values like 'EnableUpdate'
  • Consistency check message #40329 'unsupported N:M communication' wasn't displayed anymore
  • Mapping of single signal to nested arrays and vice versa didn't work correctly
  • Task property 'generate schedule calls' wasn't stored in the ECU-C file
  • Invalid ComSignal/ISignalToIPDUMapping references were falsely reported if the corresponding ISignalTriggering didn't reference a signal port
  • CalibrationSupport flag wasn't written to the ECU-C file for all atomic software components
  • In some cases the 'Find Results' properties opened the wrong property dialog

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.3 (SP3)

Tool features

  • End-to-End protection resynchronization flags are now supported for AUTOSAR schema 4.0.3
  • Data Mapping of single signal to array data types is now supported if the array is part of a complex structure
  • Import feature "check for differences" is now available for AUTOSAR 4 Software Component Types

Usability enhancements

  • Misleading general import message "Ignoring internal data constraints" is now replaced with a more specific one if the data constraints are incompatible
  • Starting from an existing port it is now possible to create a foreign port, including a necessary connection
  • Copy&Paste of Data-Element-Prototypes and Port-Prototypes is now supported from one interface/component to another
  • The automatic data mapping has been enhanced to match sub-strings with the biggest possible string length
  • The 'adapt connected port' function has been enhanced with additional options

Fixed issues

  • The default package path assignment to CompuMethods and Units was wrong
  • The properties button in the data selection dialog didn't work for AUTOSAR 4 data types
  • Wrong import of indexed elements (e.g. Record-Elements) has been fixed if the elements have temporarily the same name during import process
  • Import of Revision-Label at the InternalBehavior element was missing
  • Consistency check was not correctly executed for Calibration Communication-Specifications
  • The item locking state was not corrected stored for packages in DCF workspaces
  • In ARXML export of DCF saving the generic attribute IMPORT_MODE_PRESET was missing at the ECU-SW-Composition delegation ports
  • When importing an updated ECU-Extract an existing LIN-cluster was deleted.
  • If the delegation port of an ECU software composition was inconsistent the ARXML export aborts with error message 'Internal exception occurred: The connection is missing a valid transmitter or receiver port'
  • The Runnable Operation Access was not imported using a AUTOSAR 4 SoftwareComponentType in "overwrite" mode
  • The Component Type dialog not forbids setting the 'supportsMultipleInstantiation' flag for Service SWCs.
  • Internal exception during ARXML import has been fixed if an application data type was resolved using a workspace element
  • The package import mode workspace and session setting was ignored by the ARXML import dialog. Thus it always selected the package import mode 'import from file'
  • The ModeDeclarationGroups dialog was not correctly updated when explicit values of a mode have been changed
  • The color highlighting of compatible ports was not consistent during manually drawing of a connection

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.3 (SP2)

Tool features

  • Cross-Importer is now available to import AUTOSAR 3 software components into an AUTOSAR 4 workspace
  • End-to-End protection resynchronization flags are now supported for AUTOSAR schema 3.2.2 and 3.2.1
  • Calibration communication specifications are now supported on Compositions too

Usability enhancements

  • Constant selection dialog now additionally displays the constant value
  • Workspace format has now to be chosen explicitly when creating a new workspace
  • Some consistency checks have been enhanced to detect usage of identical names that lead into Rte generation errors
  • XML-Importer Output messages have been improved to display more context information
  • Separate consistency message details dialog has been replaced by an in-place display in the messages tab

Fixed issues

  • "Save As..." didn't work if .dev workspace file was set to read-only
  • Consistency check ID 20013 was thrown on invalid argument prototype which was not visible in the GUI
  • Cryptic open workspace message was shown in the action log when using DCF workspace in a DPA project
  • Item information was missing in the data type unit check message
  • Find functionality didn't fully support AUTOSAR 4 types
  • Obsolete menu entries appeared in AUTOSAR 4 design mode
  • AUTOSAR 4 PARAMETER-PROVIDE-COM-SPEC was is not exported
  • COM-Callbacks couldn't be configured depending on the 'enabledUpdate' setting
  • Several problems concerning missing elements have been fixed in the AUTOSAR 4 import/export
  • Crash in converting old .dev workspace fixed if inconsistent objects exist
  • AUTOSAR 4 EcuAbstraction- or ComplexDeviceDriver were imported as services even if they used application ports
  • AUTOSAR 4 import with "Substitute missing objects" didn't work with mode declarations

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.3 (SP1)

Tool features

  • The 'Enable Update' is now supported at the communication specification to configure the Rte_IsUpdated functionality
  • N:1 Sender/Receiver Intra-ECU communication is now supported in case no internal senders were used
  • Reporting of ECU Extracts and Software Components is now fully available for AUTOSAR 4
  • ARXML export in schema version 4.0.2 is now available

Usability enhancements

  • Definition of record order index can now be simply configured by moving the elements
  • A separate icon has been introduced in the graphic for Nv Data Port Prototypes

Fixed issues

  • Wrong check message for open delegation R-Ports without init values has been fixed
  • End-to-End protection information was not fully imported/exported for AUTOSAR 4 format
  • The option ''Overwrite import mode preset' didnt work for AUTOSAR 4 import
  • The 'create port prototype' functionality in the data mapping view failed with the message 'invalid pointer 0x80004003' when using signal groups
  • A new workspace couldn't be created based on a Multiple Configuration project setup
  • Superfluous Operation Argument Prototypes were not deleted when importing an ARXML file
  • An invalid ARXML file was exported if the configuration contains diagnostic communication needs
  • A modified software component graphic was not stored if the component type was locked during the graphic editor was open
  • New calibration element prototypes could only be created by pressing 'Apply' in the dialog and not with 'OK'
  • The properties window didn't display the signal attributes of the selected network signal in the data mapping view
  • Multiple Configuration files couldn't be imported because the XML import dialog reported that the selected *.imc/*.mecu file was not supported.
  • Unconnected Calibration Ports caused a Rte generation error
  • AUTOSAR 4 export wrote lots of empty XML element tags
  • A check was missing to report that a Service Mapping should not allow N:1 Client/Server communication

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types

(top)


DaVinci Developer Version 3.3

Tool features

  • Workspace design mode: AUTOSAR 3 or AUTOSAR 4
  • Import/Export of AUTOSAR 4.0.3
  • Import/Export of AUTOSAR 3.2.2
  • Support of DaVinci Configurator 5 projects: hide RTE configuration features
  • Import of frames with multiple frame triggerings
  • Selective import (communication only)
  • AUTOSAR 4
    • Support of data type model (Application Data Types, Implementation Data Types, Base Types, Type Mapping Set)
    • Definition of constants as value without type reference
    • Compu Method, Unit and Data Constraint as library objects
    • Selection of included data types in context of a component type
    • Selection of data constraints and handle-invalid settings for data element prototypes
    • Local definition of init values constants in the communication specification
    • Definition of symbol for component types and data types
  • AUTOSAR 3
    • Support of NV Data Interface
    • Support of Daimler E2E profiles

Usability enhancements

  • Import Dialog: display AUTOSAR version of selected files
  • Import Dialog: allow import of a file set with differing AUTOSAR minor versions
  • Allow unconnected delegation ports (info instead of error message)
  • Allow unconnected calibration R-ports
  • Init value can be omitted, if the init value is defined at the connected port
  • AUTOSAR 3: Display resulting physical range of a data type depending on the scaling

Limitations

  • For AUTOSAR 4 design the following functionality is currently not available:
    • Create Port Prototype from data mapping based on a given signal
    • Adapt Data Type for Data Element based on a given signal
    • Find unused data types
    • Reporting of ECU-Extracts or Software Components

(top)


DaVinci Developer Version 3.2 (SP7)

Tool features

  • Maximum enumerator name length has been increased from 255 to 32767 characters
  • Support of Signals has been added which were sent on several frames with several channels of a cluster

Fixed issues

  • In rare cases the automatic Data-Mapping switched the sub-element mapping of signal groups
  • It was falsely allowed to add a second composition to an ECU-Project using Drag&Drop
  • The Library's package view was not updated when creating a new root package within the package selection dialog

(top)


DaVinci Developer Version 3.2 (SP6)

Tool features

  • Support of UUIDs on import/export at additional elements has been added

Usability enhancements

  • Automatic service mapping has been enhanced to get better sub-string name matching

Fixed issues

  • Autoconnect popup menu was corrupt and contained empty and wrong entries
  • Option to show strict compatible ports only must be toggled to had an effect
  • Rte code contained a wrong com signal (group) handle: the handle of a transmitted ComSignal is used instead of the handle fo the received ComSignal.
  • A DCF workspace couldn't be opened anymore due to invalid SIGNAL-MAPPING elements if a system signal was received and transmitted on several clusters/frames
  • Error message "Invalid pointer code 0x80004003" was thrown when using "Create Port Prototypes"

(top)


DaVinci Developer Version 3.2 (SP5)

Tool features

  • Task Mapping has been improved to read the Schedule Manager configuration from the ECU-C

Usability enhancements

  • Performance enhancements during loading/saving DCF workspace and ECU-C synchronization
  • Automatic data mapping has been enhanced for Group-Signals with better name matching

Fixed issues

  • Copy&Paste keyboard support (Ctrl+C and old Ctrl+Ins, ....) was missing in the output window
  • Consistency check crashed in rare cases if the model contains unresolved references, e.g. caused by an import of an inconsistent ARXML file
  • Calibration-Access of queued communication was exported with the wrong default value which should be 'not accessible'
  • Misleading Action-Log message: 'CONTAINER /ActiveEcuC/Os/osSystemApplication: Os resource reference /ActiveEcuC/Os/RES_XYZ could not be resolved.' was reported
  • Closing a dialog with "Cancel" initiated superfluous GUI updates on unmodified data
  • 'Adapt Data Element to Signal' or 'Create Port Prototypes' falsely modified the record element order
  • A software component was displayed twice in the graphic when dropped into a composition
  • Export of ECU-Extract contained invalid SIGNAL-MAPPING elements if a system signal was received and transmitted on several clusters or frames

(top)


DaVinci Developer Version 3.2 (SP4)

Tool features

  • New Data Exchange Analysis view in the ECU-Project to get an overview of the resulting port data exchange, operation invocation or signal flow within the ECU

Usability enhancements

  • End-to-End Protections can now be re-assigned to another port and remain existent if the Data-Element-Prototype is removed
  • During data mapping an existing data type is now automatically reused in the 'Create Port Prototype' functionality if the name and primitive types matches the new mapping
  • The selection in the data mapping editor now remains, when opening and closing the 'Create Port Prototype' dialog
  • Drag&Drop of multiple selected ports have been enhanced to keep their left/right position
  • Delegation Ports can now be located automatically when positioned on several sheets and shifted to a sheet manually when unconnected

Fixed issues

  • Crash in generic data selection dialogs fixed if the dialog was closed with a double-click without a selected item
  • The Copy&Paste command from the context menu didn't work in the library window
  • The RTE Generation aborted with the error 'An entry with the same key already exists' when an Application Error of an Operation Prototype was not uniquely named

(top)


DaVinci Developer Version 3.2 (SP3)

Tool features

  • Display and edit of Port-Access and Trigger Short-Names of runnables are now available in the GUI

Usability enhancements

  • Create ports from signals now allows direct specification of packages for the newly created objects
  • ECU-Project and SWC report has been enhanced to display description fields
  • Trusted functions, which weren't added by the RTE (without the 'Rte_' Prefix) are no longer displayed as error in the ECU-C synchronization difference view
  • ARXML import performance using ''substitute missing objects' option has been significantly improved
  • Separate consistency message details dialog has been replaced by an in-place display in the messages tab

Fixed issues

  • Incompatible standard generator was reported when using command line Rte generator with an ECU-Project that didn't contain a generator definition
  • Crash occurred while loading ECU-C file of a DCF workspace if the ECU-C file was split into module specific files but the main ECU-C was empty, i.e. all module definitions were missing
  • Error dialog with message "Failed to create empty document." was shown during ECU-Project reporting if it contained hierarchies of Software-Compositions
  • Button on a background view falsely worked on currently active view if two overlapping software component views were opened
  • The info message (40288 DataType with the same name as a platform type) created for a DataType/Constant was propagated to the SWC as an error
  • VFB Trace functions weren't correctly stored in DCF format if no other workspace modifications have been done.
  • Crash occurred when importing an incomplete AUTOSAR file containing a SYSTEM but neither an ECU-INSTANCE nor an ECU-SW-COMPOSITION
  • DVImEx didn't report a message when the specified item was not found in the data
  • The find function didn't find Enumerators and Record-Elements
  • The GenerateStub setting was overwritten even if a user configured value exists
  • The operation call return trigger was removed from the ARXML if several runnables were triggered by the same operation call return trigger.
  • Group-Signal selection for data mapping didn't show signals if the data mapping view is in 'Data-Element' perspective
  • Connection was deleted during ARXML update although one of the connected port prototype's import mode was set to 'keep'

(top)


DaVinci Developer Version 3.2 (SP2)

Tool features

  • Configuration support for End-To-End Protection resynchronization added
  • Configuration of Rte generation parameters is now also available for Service Components
  • Workspace checker command line tool got the new option '-s' to save the check modifications to the workspace

Usability enhancements

  • Enhanced display of consistency check messages to allow grouping of similar messages by their ID
  • ARXML import dialog now allows import of multiple files with different AUTOSAR 3.x schema versions
  • Data type dialogs now display the physical ranges according to the configured scaling information
  • Graphical Cross-Sheet Connectors now display the full port name with Component Prototype context
  • Delete objects of different types with multi-selection is now supported

Fixed issues

  • Memory leaks removed when loading/saving DCF workspace
  • Port interfaces without data element prototypes caused empty element tags in the exported ARXML file
  • Using the filter in the object selection dialog removed the package display
  • ECU Project graphic display caused a memory corruption

(top)


DaVinci Developer Version 3.2 (SP1)

Fixed issues

  • Loading a DCF workspace aborts with error message "Unknown Interface" if an obsolete task mapping was defined in the ECU-C file that refered to a deleted runnable or a deleted task
  • Rte generation aborted due to inconsistency warnings threw by the Rte generator, which were tolerable in specific cases
  • Rte generation aborted due to inconsistent record constant structure
  • ARXML import crashed if a Signal-Group and a Signal caused a namespace conflict
  • Missing object references in the ARXML file couldn't be resolved with existing workspace objects using "check for differences" option. This option is now disabled because "substitute missing objects" cannot be used when merging the objects.
  • USB dongle access caused GUI freeze in some situations

(top)


DaVinci Developer Version 3.2

Tool features

  • New Software Component Type to define End-to-End Protection Proxy Components

Usability enhancements

  • Additional export Option added to omit the End-to-End Protection Configuration in the exported ARXML

Fixed issues

  • Import of ARXML packages had overwritten existing package content instead of merging it
  • Multiple Configuration projects couldn't be created if different package structure exists in the input files
  • Root package could be illegally moved into an existing package structure that results in a deleted package even if the workspace wasn't saved
  • Signal and Signal-Groups weren't allowed to have the same name. This limitation has been removed.

(top)


DaVinci Developer Version 3.1 (SP4)

Usability enhancements

  • "Unmap Signal" in the context menu of the Data-Mapping view now supports multi-selection
  • Rte trigger and runnable offset properties are now displayed in the properties view when selecting a task mapping table cell
  • The "Show ..." option settings in the Data-Mapping dialog are now remembered between dialog sessions
  • Multi-selection is now supported for complex constant values via In-Place editing
  • Enhanced check for unique C-Symbols in generated Rte code to detect name inconsistencies prior to Rte generation
  • Import dialog options are now persistently stored in the workspace to restore them as default on the next dialog session

Fixed issues

  • Factor and offset of a data type scaling was mot imported if the ARXML didn't contain a denominator definition at the CompuMethod
  • Modification of read/write generic attributes cannot be stored because the Data Element Prototype was read-only
  • Loading DCF workspace consumed large amount of memory
  • DataSendCompletionTrigger caused a missing Rte-Event reference error in the ECUC-Sync dialog.
  • ECU-Project report didn't work for read-only workspaces
  • Create DPA project out of existing files failed in DaVinci DEV if no workspace was selected
  • Graphic was missing in the HTML report for newly created software components
  • Rte generation ran out of memory when using huge complex data types
  • The user defined block size on the NvNeed was not used for the ECU-C Synchronization. Instead a wrong calculated value was used.
  • DCF workspace save was prevented by check message due to inconsistent import
  • Adapt data element to match signals was not available for complex types
  • Import of record constant caused unresolved reference error if obsolete record elements were referenced
  • Under some circumstances newly created elements didn't get unique names within their package namespace
  • The special import 'Overwrite import mode preset' didn't work with read-only items
  • Manual service mapping allowed creation of redundant connections
  • Import aborted with COM-error 'Invalid parameter' due to an unsupported encoding
  • Adapt port prototypes function didn't copy the E2E and HandleNeverReceived settings
  • DaVinci DEV runs out of memory because of memory leaks when saving DCF workspace. For DaVinci DEV 3.1 SP4 some leaks have been fixed but there still exists some more that will be fixed in a later version.

Limitations

  • AUTOSAR 4.0 import is only possible for software components that don't use AUTOSAR 4.0 specific design features. I.e. only AUTOSAR 3.x related design features are supported.

(top)


DaVinci Developer Version 3.1 (SP3)

Tool features

  • Report generator for ECU Projects and Software Component Compositions
  • Full import of communication data from ECU-Extract defined with AUTOSAR schema version 4.0

Fixed issues

  • Tool crashed because incompatible newer workspace could be opened with older tool
  • Import aborted with "unknown error 0x80004005" if the ARXML file was located in a path containing Japanese characters, e.g. a folder on the desktop
  • Some consistency check messages were not displayed in the messages tab after Rte code generation
  • If the workspace was read-only the code generation couldn't be started because the generation dialog was read-only too
  • USB dongle access caused GUI freeze in some situations

Limitations

  • AUTOSAR 4.0 import is only possible for software components that don't use AUTOSAR 4.0 specific design features. I.e. only AUTOSAR 3.x related design features are supported.

(top)


DaVinci Developer Version 3.1 (SP2)

Tool features

  • Import of Software Components and ECU-Extract defined with AUTOSAR schema version 4.0

Usability enhancements

  • Better performance and improved layout of Software Component report

Fixed issues

  • First service mapping was not displayed in the service mapping tree if more than one mapping information exists
  • If a package has been moved within the package hierarchy the saving of a DCF workspace didn't save all package related items. This resulted in an error on loading the DCF workspace.
  • Snapshot of a newly created DCF workspace didn't contain read-only information of data-types
  • Workspace modified flag had been reset after creating a snapshot
  • DCF workspace was not properly saved if a packages was renamed
  • Properties view didn't display information for Atomic-Prototypes

Limitations

  • AUTOSAR 4.0 import is only possible for software components that don't use AUTOSAR 4.0 specific design features. I.e. only AUTOSAR 3.x related design features are supported.

(top)


DaVinci Developer Version 3.1 (SP1)

Fixed issues

  • DCF workspace couldn't be loaded due to an AUTOSAR schema violation if item short-names started with an underscore or a number
  • Error message "Type library is not registered" was thrown on opening a workspace when DaVinci Developer 3.1 and 3.0 were installed in parallel on the same PC and an active 3.0 installation has been switched to 3.1 using the DaVinci Installation Manager
  • Component Types were missing on DCF loading because of ambiguous names within a package
  • It was unable to rename an item if the name differed only in character case
  • ARXML export using DVImEx failed with workspace read-only error if DVImEx was started from within DaVinci Developer to export from the currently opened workspace.
  • Rte synchronization was started even if the workspace was inconsistent
  • Invalid record constant has thrown an "Unknown pointer" error during the consistency check of an ECU-Project

(top)


DaVinci Developer Version 3.1

Tool features

  • Report generator for Software Components
  • Support of AUTOSAR Byte-Arrays as primitive data-type
  • Support of AUTOSAR Packages

Usability enhancements

  • Specific Hex-Editor dialog to define string constants with non-printable characters
  • Network signals without frame-mapping can now be used for data-mapping

Fixed issues

  • Tool crashed during ARXML import into DCF workspace if the workspace files are read-only
  • Rte generation failed if Signal-Group degradation with internal and external receivers existed
  • No more error during backup restore after Project Assistant update, caused by the workspace still being used by DaVinci Developer
  • Command line Rte generator falsely used the Rte Generator defined at the ECU-Project in the workspace
  • An error dialog was missing when a constant was about to be deleted in the Library-Browser which was still in use by a signal

(top)


DaVinci Developer Version 3.0 (SP5)

Tool features

  • Support of AUTOSAR schema version 3.2.1
  • Introduction of object locked state to specify objects as read-only for tools editors and ARXML import
  • A Port-Terminator has been introduced to distinguish between intentionally and unintentionally unconnected ports
  • Configuration of the 'Handle Never Received' flag at the receiver communication specification added
  • Configuration of the 'Uses End-to-End Protection' flag at the sender/receiver communication specification added
  • Configuration of the 'Calibration Access' at the argument prototype of client/server port interfaces added
  • End-to-End connections are now allowed for mixed internal and external receivers
  • Service Software Component files can now be added to an observation list at the ECU-Project to automatically detect file modifications
  • Creation of Support Request Package can be started from File-Menu to pack support relevant information into a ZIP-File
  • Additional End-to-End Protection profiles to configure specific safety wrappers
  • In the Task Mapping a dedicated timing requirement can be configured at a task, to ease the configuration of timesliced systems
  • Difference Analyzer is now able to optionaly display added / removed / equal objects instead of displaying the differences only
  • Workspace snapshots can now be created at any point in time to store intermediate copies of an open workspace. By restoring a snapshot the content of the workspace is rolled-back.

Usability enhancements

  • New option in ARXML import dialog to resolve open references in ARXML files against existing objects in the workspace
  • Depending on the 'allow generation of unsaved data' setting and the version compatibility of the RTE the user will be asked if the workspace should be saved and then automatically continue with the current action.
  • If the "Synchronize workspace with ECU-Configuration file when loading a workspace" is deactivated an additional message is now shown if the ECU-Configuration file has been changed while DaVinci DEV was closed.
  • When creating a Schedule Manager task in GENy, DaVinci DEV now automatically assigns the role "BSW Scheduler" to this task
  • Generation dialog has been reworked to show more detailed generation process and error display
  • A configurable check has been added to detect if the Invalid-Value lays within the Data-Type Range
  • To allow an import, ServiceSWCs are converted automatically to ComplexDrivers if used in a regular Composition
  • The command-line importer can now handle several ARXML files in one import step
  • Harmonized the XML formalization of the ECUC-file in all Vector AUTOSAR tools

Fixed issues

  • An error message was thrown when selecting a huge number of files (> 1000) for import in the file open dialog
  • The modification state of the ECU-C file was checked too often under Windows 7
  • Port defined argument values with the same name couldn't be imported at different ports of the same software component
  • The category attribute was not exported at the CompuMethod
  • AUTOSAR XML import aborted with "item is read-only" message if an object with the same name was part of several AUTOSAR XML files and defined in different AUTOSAR packages.
  • Mapping of ECU delegation ports was missing in the exported ARXML if the port was not connected to a component type
  • Tool crashed when the Software Design was opened after referenced port has been removed during ARXML import
  • Color Highlighting of compatible ports in the structure graphic didn't work correctly with several instances of the same Component Type
  • Init value specification at Calibration Parameter Com-Spec was ignored in consistency check and Rte code generation
  • Different interpretation of file order in the Multiple-ECU overlay file causes error in ECU-C synchronization
  • On certain unresolved references to Mode Declaration Groups or Modes itself the import was aborted
  • The consistency-check for ambiguous short names in the exported ARXML is no longer case-sensitive
  • When the short name of a child element was removed or not unique the according message dialog might have reappeared endlessly
  • The OSApplication assignment to a Task is now stored in the ECUC-file even when no other OSObjects can be determined due to consistency errors
  • Checking of differences during ARXML import aborts if ModeExecutionInhibitor objects are defined at the runnable
  • Wrong error message in data mapping compatibility check has been thrown if the first record element was not mapped to a group signal
  • In some cases the DCF workspace save runs out of memory if the software component structure of the ECU-Project contained lots of Compositions if a deep hierarchy
  • The use invalid flag and scaling flag at the data types were not reset during import if there was no semantics information defined in the ARXML file
  • In rare cases DaVinci DEV crashed during ECU-C synchronize if a port prototype has been deleted while it was referenced by a Data-Reception-Trigger.
  • XML Parser error was thrown on Service Component update if an observed Service Component ARXML file was deleted
  • Reference to an AUTOSAR constant couldn't be resolved using an existing constant from the workspace
  • Com-Callback was missing for the "handle never received" and "End-to-End protection IsUpdated" use case
  • Misleading inconsistency message was thrown on ECU-C synchronization if NvM configuration was out of sync
  • Rte generation was always aborted even if the stop button has not been pressed in the current generation process
  • ARXML import of a complex constant produced an 'Unknown Error' the referenced complex data type was imported from a different file
  • Generated Rte code was invalid if a predefined standard data type was renamed to a predefined platform type, e.g. UInt32 -> uint32.
  • In case of a split ECU-C project the Rte/NvM/Os module configurations were accidently added to the central ECU-C file and to the module specific ECU-C file.
  • Template- and Contract-Header generation from the SWC-context menu didn't work for DCF workspaces
  • The ARXML import in mode 'Overwrite' crashed due to an unresolved reference to a Mode-Declaration-Group
  • Diff/Merge didn't import Port-API Options correctly
  • ARXML import crashed in resolving missing reference by the substitute functionality
  • Consistency check message 40231 was thrown because of wrong offset calculation
  • In rare cases creating a new workspace crashed on Windows 7

(top)


DaVinci Developer Version 3.0 (SP4)

Tool features

  • Definition of End-to-End Protected connections available at the ECU project delegation ports to enable external generation of safety wrappers
  • Port defined argument values (PDAV) can now be edited at the service component ports
  • Enhanced compatibility with MICROSAR RTE generators allows usage of previous Rte version 2.17.2 (and newer) as external generator for this DaVinci Developer release.
    You can find a detailed overview with the compatible MICROSAR RTE versions at www.vector.com/rte_davinci

Usability enhancements

  • Icons of the various DaVinci tools got a unique abbreviation to differentiate the tools more easily
  • Check message export function has been enhanced with the detailed description and respects now the sorting order as specified in the list view
  • Creation of mapped signal ports can now additionally create Software Component ports and connect them to the created ECU-Delegation port

Fixed issues

  • ARXML import of complex Data-Mapping was incomplete if an array data type to a signal group contains or is contained in another complex data type
  • ARXML import of complex constants with CONSTANT-REFERENCEs was not correct
  • Update of existing workspace with an ARXML import failed if a referenced Port-Interface or Mode-Declaration-Group was missing in the ARXML file
  • If a service server port is mapped to a client port, it was not possible to map the port from the server side to another client port
  • Consistency check of delegation connector ComSpec on ECU top-level was missing
  • Consistency check #40259 created an inconsistency message even if the error trigger was correctly used with invalid handling
  • Automatic creation of ports in data mapping failed in case of partially received signal group
  • Consistency violation reported if scaled signal was mapped to an opaque data element
  • Connectors in connector prototype list view were missing if a connector merge scenario was designed
  • Relocation of a connection to a compatible delegation port was not visible due to missing graphic update
  • DaVinci DEV freezes on certain handlings in the graphic if a large graphic model without sheets is designed
  • Connection inconsistency error occurred due to wrong model update when changing the Component Type of a Component Prototype
  • Service Mapping didn't show compatible ports correctly when using the 'show compatible Ports only' option in the selection dialog
  • In some cases an error message was thrown during import update of LIN cluster with Sporadic Frames
  • Import of Port Defined Argument Values with the same name was not possible
  • Superflous COM_SendSignal calls existed in Rte code if the same System-Signal was mapped to several Tx/Rx-Frames
  • Wrong consistency check message fixed that the Rx-Signal bit length didn't fit into the data element

(top)


DaVinci Developer Version 3.0 (SP3)

Tool features

  • Microsoft Windows 7 is now supported
  • DaVinci Installation Setup now allows maintenance of an existing installation and installation of a new instance in parallel with the same Service Pack version
  • Parameter for RTE online calibration can now be configured in the context of the 'Generation Parameters' View
  • Enhanced handling for Signal-Groups to allow that a receiver of a Signal-Group / complex Data-Type receives only a subset of the data
  • DaVinci Project Assistant now supports setting up projects on DBC, LDF, FIBEX files that will automatically converted into an AUTOSAR ECU-Extract
  • DaVinci Developer can now work on ECU-C files which are split into module specific files to allow different users to work on different modules in parallel
  • Extension of Multiple-ECU support to explicit overlay Tx/Rx signals and allow PDU overlay of PDUs with optional signals
  • New dialog for automatic connection of ports with enhanced matching algorithm and selection of desired connections in prior to apply the auto-connect
  • For Project Assistant projects the DaVinci workspace format can now be changed from DEV to DCF and vice versa
  • New command-line tool DVWspChecker, which allows consistency checking of an ECU-Project or Component-Type in the specified DVW- or DCF-workspace
  • New configuration option to disable the init value check for unused ports (without port-access and without calibration parameter).
    IMPORTANT NOTE: disable the check requires MICROSAR RTE version 2.17.2 for correct code generation
  • DaVinci Project Assistant now support creating of projects based on existing non-DPA projects and creation of DPA-projects with module-split ECU-C files

Usability enhancements

  • Ports list view is now available for ECU Software Composition
  • OS-Counter parameter will now initially set to Os/SystemTimer when creating new Alarms
  • Consistency message results can now be exported into a log file
  • DaVinci Project Assistant menu and Model Check menu is now available even if ECU-Project sub-items are selected
  • Service mapping update no longer closes the complete editor tree after editing service mappings
  • Graphical connections are now highlighted when selected a port or a cross-sheet connector
  • Navigation in Software Design editor is now possible by clicking on a delegation port

Fixed issues

  • Float number format in ECU-C has been adapted to match format used in DaVinci Configurator Pro and GENy to avoid file differences
  • Fixed importing an ECU-Extract using the Diff&Merge feature to avoid corrupted communication information due to wrong merge algorithm
  • ECU-C file consistency dialog no longer opens up when saving the workspace
  • Obsolete check message is no longer displayed after fixing an inconsistent Data-Element-Prototype at the Component-Type's port
  • Errors message for unconnected ports and non-matching Data-Element-Prototypes are now split into separate specific messages
  • In some cases the DaVinci DEV application couldn't be closed through the task-bar menu
  • Alive timeout handling was falsely enabled if the value was set to 0.0 instead to 0
  • In some cases an editor update was missing on creation/deletion of runnables
  • Service Need names were not checked for uniqueness
  • ComSignal(Group)s were not found in ECU-C in the Multiple-ECU configuration of PDU as Overlay-PDU which contains optional signals in the master ECU-Extract.
  • File version checking of the MECU schema version has been corrected
  • During ARXML import the remember-option is now disabled on special import mode condition, if only new-mode is allowed
  • RteEvent references will now correctly resolved if ECU-C uses short names with 32 chars but ECU-Extract uses short names with 128 characters
  • DCF load aborted when the DCF AUTOSAR version was different from the ECU-C AUTOSAR version
  • In some cases DEV requested an ECU-C lock although it was not the active application
  • Bugfix in the placeholder replacement of $(GENDATAFOLDER) when the following character is a double quote
  • ECU-Project consistency check crashed if several runnables exist which were triggered by an OnModeEntry event
  • AUTOSAR Import/Export ignored the Communication-Specifications at the ECU delegation ports
  • Missing popup menu entries at ECU-Project Connector-List editor for changing port prototypes
  • Installation setup has defined wrong working directory entry in the DaVinci Developer desktop link
  • ARXML import created Enum-Types without enumerator instead of Integer-Type if the scaling at the data type had defined an own range
  • DCF workspace couldn't be saved if multiplexed communication was used
  • DaVinci Difference analyzer stopped with error 0x800407D0 in XPath Expression at xsl:if "Too many items - string" if calibration parameter init values were defined
  • In rare cases the ECU-C synchronization moves the ECU-Configuration tag in the ARXML file if a module configuration (e.g. of a 3rd Party module) in the ECU-C file exists, that has a Short-Name that comes in the alphabetical order before the 'ActiveECUC' Package.
  • ARXML import aborts with E_FAIL error code when importing renamed record data-types referenced by record constants
  • Wrong ComSignal handles in Rte because ARXML import didn't update the message to signal relation correctly in overwrite import mode.
  • Main window could not be restored if it was minimized running on Windows 7
  • Wrong Init-Value consistency check message was reported if obsolete communication specifications existed
  • Wrong display of some dialog controls on Chinese Windows has been corrected
  • Auto-Connect created a connection between C/S and S/R which resulted in a consistency error
  • Auto-Mapping has created wrong or inconsistent signal group mapping if naming rules and compatibility of elements was ambiguously
  • If NvM memory blocks were configured and the according NvM service component was imported the consistency check may have been crashed.
  • Rte callbacks were missing if the same system signal was mapped on Rx and Tx port
  • Response on GUI actions was very slow and had 1-2 seconds latency when using Vector USB Dongle license
  • Setup threw an error message that product isn't installed when using the repair option
  • Constraints and Limits properties of the data element prototype were ignored when importing
  • In rare cases DCF load restored a wrong order index of the Task-Mapping
  • Unintended message was shown if the ECU-Configuration file has been changed while closing DaVinci workspace
  • Top-Level connections were not correctly removed during ECU-Extract update
  • Obsolete ModeDisablingDependencies were not removed correctly during import
  • Import of Multiple ECU Extract aborted with 'Item already in Set' error
  • Save Workspace As failed, if the workspace was read-only because it was created with a newer DaVinci version.
  • ARXML import of incorrect MODE-DEPENDENCY aborted with "Unknown error" instead of printing an error message
  • Special import feature couldn't be executed if a Project Assistant file was referenced in the ECU-Project
  • An update of an ECU-Project failed with the message "Invalid argument" if a mapped Per-Instance-Memory wasn't overwritten due to the Import-Mode-Preset attribute
  • Import of incorrect EXCLUSIVE-AREA-ACCESS aborted with "Unknown error" if the references to the exclusive area was invalid
  • If the P-Port was a delegation port of a SW-Composition it was unable to connect an R-Port because of wrong incompatible direction error message
  • If multiplexed ECUs exists the DaVinci DEV added ComSignal callbacks to the ECU-Configuration but the functions are not generated by the Rte generator
  • Rte generation failed with an internal error if an ARXML with multiple mapping of the same system signal has been imported in prior
  • After loading a DCF workspace the data mapping was lost for delegation ports which received a subset of a signal group
  • ARXML import crashed if LIN event triggered frames were imported
  • Import-Mode-Preset attribute didn't work for Mode Disabling Dependencies and port related triggers in the 'keep' use-case
  • Save workspace in DCF format didn't work if BSWMD files with command line macros are specified in the ECU-Project
  • OS Application dialog crashed on editing an existing OS Application if more than one OS Application is defined for a task
  • A signal was treated as received through a frame although no rx relation existed. This results in an incorrect ECU-C synchronization because the signal was actually not used on Com layer
  • Rte generation was wrong because Rx signal relation was missing for Tx/Rx signals sent between two instances of a Multiple-ECU project
  • Calibration port init values were not correctly updated on ARXML import of existing software components
  • Graphic update was missing if 'complete delegation port' has been executed in a separate view
  • Data mapping was not imported/updated correctly in ARXML import of a Multiple-Ecu configuration with complex data types
  • Data mapping was lost on loading DCF workspace if not all data elements of a delegation port were connected to an atomic port prototype
  • USB dongle access caused GUI freeze in some situations

(top)


DaVinci Developer Version 3.0 (SP2)

Tool features

  • Support of AUROSAR schema version 3.1.4 and 3.0.6 in import/export and ECU-C synchronization
  • In addition to importing an ECU-Extract of System-Description the import of a System-Description containing more than one ECU is now supported by selecting the ECU to import
  • RTE measurement supported by specifying the according parameters at the Calibration Elements, Calibration Parameters, Inter-Runnable Variables, and in the global generation parameters
  • Specification of an Rx-Filter is now possible at the receiver communication specification
  • Minimum start interval can now be specified in the runnable properties
  • Double data mapping for a signal is now allowed if the Tx/Rx direction differs, i.e. the same signal can be used as sender and receiver

Usability enhancements

  • Newly created ECU projects using the DaVinci Project Assistant now contain default entries for generators/configurators
  • Automatic creation of server runnables can now be configured with an additional pre- or post-fix for the runnable name
  • New feature in the signal data-mapping editor to create ECU delegation port prototypes, which matches the Tx/Rx-Signals of an ECU project
  • ECU-C file synchronization no longer requires a specific AUTOSAR package structure
  • Graphic export to the Windows clipboard can now be initiated with Ctrl-G. Graphic file export now supports exporting of all Sheets in one step.

Fixed issues

  • Multiple instantiation of service components in the service mapping editor is now prevented
  • Wrong consistency check message about overflow in 64 bit data type range fixed
  • In some dialogs the edit controls were disabled instead of read-only which inhibits copying of the text content
  • Unexpected additional enumeration data type was created during ARXML import if COMPU-CONSTs exists for non-integer data-types
  • Missing consistency check for init values at the port's communication specification if two SWC receiving the same signal, but the port interfaces have different init values
  • Inconsistent rounding of imported values in DBC and ARXML with a precision of more than 15 digits fixed
  • Consistency check for different receiver invalid handling didn't work for external communication
  • Unexpected empty XML element <SD GID="edve:ValRef"></SD> was exported for calibration parameters without init value
  • Show reference in object usage dialogs didn't work if the object usage dialog was started on a object from within the search result list
  • Changing an ECU-Project's ECU-C-File does not always trigger an ECU-C sync if another tools hold an ECU-C lock
  • Updating an ECU-Project with a file that contains frames with equal (case-insensitive) SHORT-NAMEs had failed
  • Automatic ECU-C synchronization haven't detected generation parameter changes if the parameters were changed the second time
  • ECU-C file couldn't be found in DCF Utility because of using relative paths
  • ECU-Project settings couldn't be edited with DaVinci Project Assistant if the DPA file reference contains a relative path
  • Import ARXML from path containing Japanese characters failed
  • Parameters for Component Implementation Template Generation and Contract Phase Header Generation were mixed up in newly created ECU-Projects using the DaVinci Project Assistant
  • Too many ECU-C signals were created if PDU routing is designed when a frame is transmitted but not all signals have a tx relation
  • DaVinci crashed when a multi-selection of ECU-Projects is about to be exported to ARXML
  • DCF workspace couldn't be saved after modification if a Port-Prototype was deleted which was referenced by a Runnable's trigger
  • DaVinci crashed after deletion of the mode declaration group prototype with already used name
  • Compiler/Linker error due to inconsistent callback definitions for ports without port access but AliveTimout > 0
  • Tx callback was exported for Rx signal if the signal was sent and received on the same network
  • Task type was not correctly imported from ECU-C if different Os BSWMD contains a platform specific package
  • In rare cases update of an ECU-Project via XML import with ECU-Extract and ECU-C file failed with error message "Item already exists"
  • Importing an ECU-Extract using the Diff&Merge feature had corrupted the data mapping if additional signals or signal groups have been added
  • Service mapping was missing when exporting service layer components to ARXML or DCF
  • Record constants with invalid element order were created based on a Signal-Group
  • In some cases the error message "Receivers of the data element prototype <SignalName> handle the Rx-Filter on a different way." was reported even if the Rx-Filter were correctly defined.
  • Rte's Com-Callbacks for Signal-Groups use wrong Group-Signal identifiers if a Fan-In of Signal-Groups with mapping different frames of the same cluster exists
  • Generated Rte contains several callback functions with the same name if a signal is mapped to one pdu which in turn is mapped to several frames and the Rte has to generate a callback function for this signal

(top)


DaVinci Developer Version 3.0 (SP1)

Tool features

  • Support of LIN Signal-Groups defined LDF files with the naming convention <signal_group_name>__<signal_name>
  • AliveTimeOut is now imported from DBC and can be propagated using a new function in the data mapping view
  • The newly introduced automatic ECU-C synchronization during workspace load/save can be switched off in the global settings dialog
  • Display of calibration objects in the graphic can be switched off in the workspace settings
  • Support of ARXML import pre-configuration using generic attribute IMPORT_MODE_PRESET
  • Constant property "Generate Symbol" can now be set in Library-Browser via multi-selection

Fixed issues

  • Wrong workspace conversion that causes missing Signal Group references during ECU-C synchronization has been fixed
  • Inconsistent connections (wrong sender/receiver direction) were not detected by a consistency check
  • Error message in the GUI when changing R-Port's "Handle Invalid" property has been fixed
  • Compatibility settings couldn't be set properly in the workspace settings dialog
  • DCF Utility didn't show Activation Offsets in the ECU-Project binary file
  • Missing check messages on inconsistent data mappings have been added
  • Additional name information for "DEFINITION-REF" objects in difference view have been added
  • Inconsistent structure of a complex constant compared to its data type have caused a generation error even if the constant was not actually generated.
  • Out-of-memory error message occurred in DCF Utility when opening large dcb files
  • Missing sorting of FIBEX-ELEMENT-REF in difference view has been fixed
  • Crash in DaVinci DEV has been fixed when switching to the ModeDelarationGroups in the properties view
  • Show in software design command for runnables in task mapping page didn't work.
  • Error Handling for ModeQueueLength '0' has been corrected
  • Within the data element prototype page the CreateNewDataType button didn't work
  • During ARXML import the renaming a child object didn't always work if the names only differ in character case
  • External tool command line parameters are changed back to default if no parameters are given in the dialog
  • The consistency check for Calibration Ports has been weaken to allow compatible interfaces that are not identical
  • ARXML import failed if existing objects only differ in character case from objects that were to be imported
  • Tool crashed when saving new SwBlockNeeds with a mirror PIM that had no data type
  • In read-only SWCs the implementation popup menus were not disabled and tool crashes if menu commands was executed
  • Tool slowed down after running several hours because of GUI resource leaks
  • Wrong setting of working folder in attached files dialog fixed that caused error message while opening generated attached SWC template file
  • Generated OSAlarm and OSEvents didn't match because the setting 'use shortnames > 32' was not consistently communicated to the RTE
  • Added multiple mapping of the same system signal on one frame to support the multiplexing use-case
  • Extended support for Tx/Rx split and signal overlay in the Multiple-ECU use-case
  • ARXML runnable import of Init-Trigger corrected if no other Trigger exists
  • Fixed error while synchronize structure of a complex constant in AUTOSAR export if the structure of the complex data type has been changed
  • Newly created graphic sheet names were not stored correctly in the workspace
  • ECU-C file data wasn't fully loaded during opening DCF workspace if the AUTOSAR schema versions have been different
  • Generic attribute definitions weren't loaded during opening DCF workspace if a corresponding generic attribute didn't exists at an AUTOSAR object
  • Missing error message while opening incompatible workspace with RTE Generator fixed
  • Generation of templates and contract headers is now allowed for service components
  • Sorting of error/warning/info icons in the messages tab has been corrected
  • The initial graphic scroll-bar position was often not correct
  • Newly created Port-Prototypes are now automatically positioned near the original port
  • Auto-mapping for wasn't working well with multi instance SWC
  • Directory placeholders with workspace variables were not working correctly for DCF workspaces
  • Service mapping was missing when exporting service layer components to ARXML or DCF
  • Property dialog for NvM block needs threw an error when using read-only Component-Types
  • Some issues in workspace merger functionality have been fixed concerning communication merge, generic attributes, and data-mapping
  • The global attribute definition file in a DCF workspace can now be modified in the DCF-file to share it among DCF workspaces
  • The Mode disabling dependencies for runnable triggers were doubled during the XML import
  • Task attributes priority / description / schedule were incorrectly loaded from DCF workspaces
  • Signal bit length was not updated from DBC file if the signal with data-type reverence already exists
  • Service needs were deleted during special diagnostic import
  • Bad performance while switching from structure design to port prototype view solved by specifiying the livst view as default editor for non-graphic use-cases
  • ECU-C sychronize of Init Values produced unnecessary warning output
  • Init value check for the Data Mapping didn't work
  • Incorrect Exclusive Area Access after DCF loading if AR 2.1 SWC are used together with AR 3.0 ECU-C file
  • Attribute definition inconsistencies weren't reported during DCF loading
  • Inconsistent NvM block and PDAV order was not reported by a check
  • Signal's unit was not imported via LDF file
  • Crash has been fixed while opening ECU Project Software Design editor after large SWC was updated by importing new SWC definition
  • Loading of global generic attribute definitions has been restructured to avoid overwriting with local attribute definition during DCF loading
  • Wrong consistency message concerning maximum values was displayed due to rounding problems in physical value calculation
  • Workspace settings were reset on saving a DCF workspace as DEV
  • Read-only ECU-Projects were missing after loading a DEV workspace which was created out of an DCF workspace
  • Crash during DCF save has been fixed if many read-only DCF files are about to be stored
  • Signal length was set to null after a LDF file has been updated through the ECU-Project signal list
  • Data mapping was missing after loading DCF workspace if atomic software components were multiply instantiated within an ECU-Project
  • Update icon was not correctly displayed in Attached-Files dialog
  • In rare cases DCF save aborted with COM Error 0x80070057 if the ECU-Project contains a large amount of Software Component Prototypes

(top)


DaVinci Developer Version 3.0

GUI rework

  • New window concept for parallel editing in several views of an ECU project
  • Modernized GUI style, icons and tool buttons
  • Reworked library browser with additional folders for service related objects
  • Reworked software design views to enable multi-editing of object properties
  • Clear separation of global user settings and workspace specific settings
  • Changed workspace file extension (.dev)

Improved cooperation with DaVinci Configurator Pro

  • Project Assistant for convenient creation and update of ECU projects
  • Overwrite protection against ECU-C editing conflicts by mutual blocking of the tools

Usability enhancements

  • Drag&Drop of component types and port interfaces into structure graphics
  • Direct invocation of template/header generation for individual component types from context menu
  • More intuitive display of consistency check messages
  • Optional display of calibration ports and connectors in structure graphics
  • Display of additional info in data mapping editor for fan-in/fan-out signals
  • Improved object selection dialogs (display of additional info, enhanced filter logic)

Graphic design improvement

  • New layout function: Automatic positioning of delegation ports near the connected port
  • New layout function: Vertical/horizontal alignment of components
  • More intuitive zoom control via zoom-in/zoom-out buttons
  • "Align spread/packed" function available for a selection of ports

Performance enhancements

  • Speed-up of ECU-C synchronization
  • Speed-up of general XML import/export and consistency check

Merging of design data

  • Detailed merge control during import via difference view: overwrite workspace object or keep it
  • Fine-grained merge control for complete library objects or individually for each sub-object, e.g. runnable entities and port prototypes
  • Merge control setting persistently stored at each object - convenience for subsequent import

Tool features

  • Definition of service needs of component types
  • Support of complex device driver component types
  • Support of LIN signal groups in imported ECU Extract
  • Configurable symbol generation of constants
  • Definition of limits for calibration element prototypes
  • Support of unconnected R-ports and unconnected ports of calibration components
  • Definition of alive timeout at delegation port prototypes
  • Explicit trigger type "Init Runnable"
  • Definition of task type (basic/extended/automatic)
  • Definition of task role (application/BSW Scheduler/non-RTE)
  • Disabling of automatic trigger generation in the OS
  • Search function to find unused objects in the workspace
  • Support of invalid values within the range of 0 ... 255 for boolean data-type
  • Command line extension for DCF Utility to directly start a DCF workspace difference analyzing from the command line by specifying the 2 workspaces

Fixed issues

  • Recent file list was too small
  • Under rare circumstances copying of a software component caused a crash because of wrong graphic stream duplication
  • Overlay of component prototypes in the Multiple-ECU use-case is now based on the component type reference
  • During ECU-C synchronization the task activation value was not considered
  • If the first ECU-C synchronization has been done with the direction from ECU-Project into ECU-C file existing COM-Signals were duplicated in the ECU-C file
  • In some dialogs the display of the description contained non-printable line-feed characters
  • When saving a DCF workspace as DVW all read-only objects were skipped and thus were missing in the resulting DVW workspace
  • AUTOSAR export of NvRamAllocation was wrong when using AUTOSAR 2.1 format
  • The AUTOSAR import didn't correctly update existing ModeDeclarationGroupPrototypes
  • The minimal graphic canvas size couldn't be set using the specific dialog
  • Missing GUI update after modification of NvM blocks corrected
  • The description attribute of enumerators wasn't imported from the AUTOSAR XML
  • In some cases the message output of external generators was truncated in the log window display
  • Wrong command line parameter usage while starting external generators if a path parameter ends with a backslash
  • Truncated display of constant names in record type combo-box fixed
  • When using a constant to initialize a SWC local Calibration Parameter the according constant definition didn't appear within the exported AUTOSAR XML
  • The check messages tab content was not cleared on closing the workspace
  • Workspace was set to modified during ECU-C synchronization even if no modifications have been made
  • Limitation in number of tabs in the software design window has been increased from 32 to 100
  • Endlessly reappearing warning box when adding a calibration parameter with a name that already exists in the calibration parameter list fixed
  • ECU-C difference dialog has displayed boolean values as 0/-1 instead of false/true
  • Update of Task Mapping View was missing when a new runnable trigger with a so far unused cycle time was added

(top)


DaVinci Tool Suite Version 2.3 (SP7)

DaVinci Difference Analyzer

  • Display of semantical differences between AUTOSAR XML files
  • Supports System Description Files, SWC Description Files and ECU-C Files
  • Integrated into Windows Explorer context menu for files with extension .arxml
  • Integrated into DaVinci Developer: show differences before importing AUTOSAR XML files

DaVinci DCF Utility

  • List the associated files of a DCF workspace
  • Show the differences between two DCF workspaces
  • Find missing files in DCF workspace
  • View the content of DCB files

Usability enhancements

  • Task mapping: improved trigger view
  • Task Mapping: new view "Component View" to show the runnables per component
  • Service Mapping: new views "Service Component View" and "Application Component View"

Tool features

  • Design support for automatic creation of service ports and server runnables
  • Automatic synchronization of ECU-C file when opening and closing an external configurator
  • Detailed report of changed ECU-C settings during synchronization of ECU-C file
  • Unified display of consistency errors and RTE generation errors
  • Definition of scalings for enumeration types
  • Definition semantical limits for data element prototypes
  • Configuration of "switch only" and "ack only" access of mode P-ports

Fixed issues

  • Wrong painting of property pages in runnable editor after resize
  • Missing error message in case of invalid constants of complex data types
  • Inter-Runnable-Variable Access-Mode was missing after ARXML import
  • Misleading info message in case of missing INTERNAL-BEHAVIOR
  • Sending the same signal on both FlexRay channels was falsely considered as signal Fan-Out
  • Consistency check result for connected homopolar ports within service mapping was missing
  • Missing reference on generic attribute table in DCF in case of adding attribute definitions without additional modifications
  • System-Signal init value compatibility check reported wrong warning due to imprecise floating point calculation
  • Frame-Node relations were not imported from ARXML for CAN and LIN Frames
  • OS-Application property of tasks and description for ECU-Project got lost in DCF format
  • Missing objects in AUTOSAR Export if started through multi-selection in Library Browser
  • Problems occurred with DCF path definitions using slash '/'
  • ECU-Project memory mapping view hasn't respected read-only attribute
  • Incorrect update behavior of Port-Prototype dialog if a different Port-Interface was selected
  • Ports are displayed overlapping when calling 'Arrange Ports | Align Packed'
  • Ports were missing in port selection dialog because of filtering for non-strict compatible ports
  • In the Properties views of port connectors, the source/destination data element prototypes were not sorted at all
  • In the Properties views of port interfaces/prototypes, the data element prototypes were sorted in fixed descending order
  • Moving a multi selection of input and output ports hasn't worked in the graphic display
  • Tx-/Rx- evaluation during ECU-C Synchronization was wrong if the same signal was mapped to multiple messages received by different ECUs
  • Faulty error message about incompatible data element to signal mapping in case of record data types
  • During DCF loading the file name of currently processed ARXML file wasn't displayed
  • Creeping performance of code generation and ECU-C Synchronization due to wrong evaluation of task mapping references fixed
  • Wrong update of complex constants during ARXML import fixed if structure of the complex data type has been modified
  • Wrong display of IOHWAbstraction in Service Mapping tab fixed
  • COM-Error code while loading DCF workspace with parameter group generic attributes fixed
  • Wrong Task-Priority value during ECU-C Synchronization on Asian Windows fixed
  • Further performance enhancement during ECU-C Synchronization and Rte generation
  • Missing consistency check for received Data-Elements
  • AUTOSAR XML import containing a CompuMethod with Factor = 0 causes endless loop

(top)


DaVinci Tool Suite Version 2.3 (SP6)

Tool features

  • Enhanced generator selection for ECU-Projects with support of RTE Generators in different versions
  • Additional option whether string data types will use a terminating NULL-byte
  • Support of open P-Ports
  • Support of signal fan-in use case in ECU Configuration
  • Enhanced auto-mapping rules for memory-mapping
  • Support of AUTOSAR component type "ECU Abstraction" for desinging IoHwAbstraction
  • Definition of communication specification at composition ports
  • Various GUI round-ups and enhanced consistency checking

XML Import/Export

  • Enhanced workflows:
    • Special overwrite of port prototypes incl. communication specification during import
    • Component implementation merge dialog during import
    • Optional export of top-level structure only
    • User notification in case the ECU-C file has been modified by another tool
  • Enumeration constants are now stored with their numeric value as defined in AUTOSAR
  • Import of communication data (e.g. signals) is now case-insensitive, i.e. signal names cannot be different in character case only
  • Support of explicit rx/tx relation for FlexRay PDUs
  • Opaque value can now be stored with byte representation as defined in AUTOSAR specification
  • Enhanced sorting of elements within exported ARXML files
  • MICROSAR standard service port interfaces are now available as AUTOSAR import file: <DaVinci>\Data\ServicePortInterfaces.arxml

Fixed issues

  • Signal invalid values were not displayed as physical value
  • Some FlexRay cluster attributes were missing in AUTOSAR export
  • Invalid values for 32 bit opaque data types couldn't be defined
  • Generic attributes were missing at the Calibration Parameter when stored in DCF format
  • Crash in AUTOSAR import fixed if file contains a ModeDeclarationGroup without a valid reference to an initial mode
  • Error during AUTOSAR export if both export options 'Export user-defined attributes' and 'Create data types/constants for signals if required' are checked
  • Crash fixed when opening large amount (>70) of Component Type editors simultaneously
  • Wrong import of extended CAN identifiers fixed
  • Missing DCF update added to avoid that deleted objects re-appear after DCF loading
  • Wrong renaming if new name only differs in character case
  • Memory leak fixed when importing large amount of data
  • Application blocking of DaVinci / MICROSAR RTE fixed when working on the same workspace

(top)


DaVinci Tool Suite Version 2.3 (SP5)

Support of Mode Management

  • Design of Mode Declaration Groups and Mode Port Prototypes
  • Runnable trigger on Mode Entry, Mode Exit, Mode Switch Acknowledge
  • Definition of Mode Disabling Dependencies for all runnable triggers

Further port and runnable trigger enhancements

  • Support of data element invalidation
  • Support of Data Reception Error trigger in case of Rx Timeout

Tool features

  • Enhanced GUI and consistency checking for mode / trigger / port access definition
  • Automatic mapping of service ports according to naming conventions
  • Enhanced automatic data mapping for complex data types
  • New consistency check to report inter runnable variables using string data-types
  • Support for recursive connections (connection between ports of the same component) within an ECU SW-Composition.
  • Selective diagnostics import depending on PDM-ID attribute

XML Import/Export

  • Support of AUTOSAR schema 3.0.2 with DCF import/export
  • Support of FlexRay ISO TP in AUTOSAR System-Description
  • Temporary workspace is no longer required for DCF import/export

Fixed issues

  • Data type was missing in DCF export if referenced by a port defined argument value
  • Unable to adapt the signal data type according to the data mapping if the init value was missing
  • Predefined data types were missing in initially created DCF workspace
  • ARXML import of cycle time causes a value overflow if the decimal precision exceeds 15 digits
  • Existing service mapping is no longer overwritten on importing an ECU-Extract
  • Incompatible Factor, Offset, Unit was not reported by data-mapping compatibility check
  • Closing the application is no longer possible while DCF saving is in progress

(top)


DaVinci Tool Suite Version 2.3 (SP4)

Support of RTE Memory Protection in DaVinci DEV

  • Definition of OS application (trusted/untrusted)
  • Assignment of tasks to OS applications

Extended consistency check

  • Allow split and merge of connectors in SW design
  • Tolerant data mapping of complex data types
  • Flexible data mapping for string types (signal length 1 byte smaller than the string type is now allowed)

Usability enhancements

  • Signal Routing in DaVinci SAR: Automatic signal routing now possible for individual signals
  • Signal Routing in DaVinci SAR: A correct routing path is now skipped by automatic signal routing
  • No more reset of global tool settings after installing a new DaVinci version

XML Import/Export

  • Improved handling of BSWMD files during ECU-C synchronization
  • Import/Export of COM-PROCESSING-PERIOD
  • For LIN import the cluster protocol version is used for the slaves if their protocol is not set

Fixed issues

  • Missing data mapping in DCF format
  • String constant values don't support full character set of ISO-8859-1
  • P-/R-port connector list views display duplicate components
  • Obsolete check messages in the output window
  • Update problems in structure graphics
  • Memory leak while saving DCF workspace removed
  • Endless loop on data-mapping of complex data-types fixed
  • Scaling of signal/data-types has not been considered correctly in data-mapping compatibility check
  • LIN diagnostics frames will now be automatically created in DaVinci Network Designer if they are not available
  • Port-Interfaces were always updated during DCF saving even if no modifications have been made
  • ECU-C file path is now adapted on workspace Save-As and is only written on ECU-C relevant modifications
  • Different generation check results were occurred depending on the generation start method by popup-menu or generator-list
  • Endless loop while opening a read-only Component-Type graphic fixed

(top)


DaVinci Tool Suite Version 2.3 (SP3)

Port API options

  • Option "Enable Indirect API"
  • Option "Enable API usage by address"

Miscellaneous

  • Consistency warning in case of runnable entities with period 0 (except for init runnables)
  • User-defined attributes for Task and ECU-Project
  • ARXML import: Support of FlexRay frames sent by different ECUs in the same slot
  • ARXML export: Support of LIN2.0 specific communication properties in ARXML 3.0
  • DVImEx.exe command line utility is now able to import/export ARXML files based on DCF workspace

Fixed issues

  • Copy&paste by keyboard shortcuts not supported in "Implementation" page of Component Type Editor
  • Data mapping displays signal groups, which don't belong to the ECU project
  • Problems in "Data Mapping" and "Service Mapping" page in case of multi-instantiated components on different hierarchy levels
  • ECU-C Sync: ComTimeoutNotificationCallback for AliveTimeout generated in wrong format (AR2.1 instead of AR3.0)
  • Range check during XML import fails in case of 64 bit signals
  • Constant- and Signal-Dialog displays wrong values in case of 64 bit data-types/signals
  • Automatic data mapping ignores child elements of composite data types
  • Consistency check does not report duplicated component prototype names
  • ARXML export: T2 values from dbc ignored when generating IPDUTiming
  • ARXML export: typo in generated XML file in case of infinite limit of real data types
  • ARXML import: problems with upper/lower case of short names during import of service components
  • Frame mapped signal group information can't be stored in DCF
  • ECU-C synchronization fails if BSWMD files are specified with path information

(top)


DaVinci Tool Suite Version 2.3 (SP2)

Miscellaneous

  • Multiple instantiation of atomic component types on the same ECU is possible now
  • Specification of RTE Compatibility mode API at the software component
  • Full AUTOSAR support of Signals with Data-Type definition and initial value constant; Legacy Signal-Type support has been removed from DaVinci SAR
  • Auto-Data-Mapping now support complex data-types that will be mapped on signal groups
  • Enhanced performance during workspace saving if many data-types or constants exists

AUTOSAR XML Import/Export

  • Support of officially released new AUTOSAR schema version 3.0 rev. 3
  • It is now allowed to work with ECU-C and BSWMD files having different AUTOSAR patch-versions
  • ARXML export has duplicated the sender-receiver mapping on R-Ports
  • ECU-C synchronization is now only done for elements if the ECU-C does contain a corresponding module configuration
  • SwComponentInstances for Calprm-ComponentPrototypes are no longer exported in ECU-C file

Fixed issues

  • Under some circumstances the data-mapping compatibility check was running into an endless loop for complex data types
  • Wrong ranges are displayed for 64 bit data types / signals in DaVinci SAR/DEV
  • Some memory leaks during ECU-C file synchronization have been fixed
  • In the ECU-Project data-mapping the Tx-Signal Groups were missing for local ECU communication

Known issues

  • AUTOSAR export will fail if the two options "Export user-define attributes" and "Create data types/constants for signals if required" are enabled both. Workaround: start the export two times with only one option enabled.

(top)


DaVinci Tool Suite Version 2.3 (SP1)

Miscellaneous

  • List view for non-graphical display of compositions
  • Support of range enumerators in enum types
  • Configurable consistency check for initial value of data element and mapped signal

XML Import/Export

  • Import/Export of FlexRay PDUs in AUTOSAR 3.0 XML

Fixed issues

  • DCF storage
    • DCF read-only error response doesn't work for port interfaces
    • Saving DCF does overwrite read-only files
    • Sheet names not stored in DCF
    • ECU-Project local signal attributes were not stored in DCF
    • Storage of unmapped Network-Signals in DCF added
  • ARXML Import/Export
    • Invalid value is not being imported with ARXML 3.0.1
    • Wrong import of signal unit attribute fixed
    • Fixed import for runnable wait points on asynchronous server calls where the runnable doesn't access the server itself
    • Import crashes if Data-Types doesn't contain min/max ranges
    • Import crashes if timeout of synchronous server call point is missing
    • Generic attributes were missing for Network-Signals
    • More detailed error-message if the AUTOSAR schema version is not supported
    • Fixed import of Network-Signal's init value if referenced constant is of type enumeration
    • Missing import of signal's min/max values / value-type added if a data-type is referenced
    • Some FlexRay node parameters were missing in import/export
    • ECU-C file is no longer re-sorted after export because element order has to be obtained
  • DaVinci swaps min and max values for data types with huge range
  • ECU-C synchronize for Os/Com/Nvm now possible even if Rte is in sync
  • Signals and Data-Type scaling calculation fixed for negative factors greater than -1.0
  • Automatic data-mapping has falsely used signals from signal-groups for primitive data elements
  • Crash in creation of NVM-Blocks if the name was already used by another NVM-Block
  • Incorrect signal-routing in DaVinci SAR fixed if signals are defined in more than one global signal group
  • Check of array data-types hasn't report an array size 0 correctly

(top)


DaVinci Tool Suite Version 2.3

XML Import/Export

  • Import/Export of component descriptions, communication descriptions, and ECU-C via AUTOSAR 3.0 XML (XSD rev. 0001 and rev. 0002)
  • Preliminary FlexRay PDU support: conversion of PDUs into signal groups during import of AUTOSAR 3.0 XML (FIBEX 2.0 compatibility)

Calibration parameters for components

  • New page "Calibration Parameters" in component type editor
  • Assignment of parameter groups via user defined attribute (enum attribute definition "PAR_GROUP_CAL" with arbitrary group names as enum values)

Calibration component types

  • Definition of calibration component types (new realization type "Calibration")
  • Definition of calibration port interfaces and calibration port prototypes
  • Referencing and connecting of calibration components within a composition type

Per-instance memory

  • Definition of per-instance memory of a component type
  • New page "Memory Mapping" in ECU project editor to map per-instance memory to NV memory blocks (DEV only)
  • Manual and automatic definition of NV memory blocks (DEV only)
  • Export and synchronization of NvM section in ECU-C file (DEV only; not available in AUTOSAR 3.0 XML)
  • BSWMD file for NvM module configurable for an ECU project (DEV only)

MICROSAR RTE Configurator

  • New exe in bin folder: DVRteConfig.exe
  • Configures the MICROSAR RTE (Task Mapping, Memory Mapping, Generation Parameters)
  • Operates directly on AUTOSAR XML (ECU Extract of System Description plus associated ECU-C)
  • Same RTE configuration functionality as DaVinci DEV. Not required, if DaVinci DEV is used.

DaVinci Configuration Files (DCF)

  • DCF: Alternative storage format for DaVinci workspaces
  • Support for file-based configuration management of DaVinci design data
  • New user manual: UserManual_Working_with_DCF.pdf

Miscellaneous

  • Support of asynchronous C/S communication
  • Support of string data types (data types larger than 8 bytes)
  • Support of explicit gateway routing in DaVinci SAR: data mapping of connected data elements to different signals supported
  • Import of user-defined attributes via DaVinci attribute XML format
  • Selection of both FlexRay channels (redundant transmission) possible in the "Signal Routing" page of DaVinci SAR
  • Performance enhancement of Data-Mapping editor in DaVinci SAR

Fixed issues

  • Missing update of VFB Tracing page after calling ECU-C synchronization
  • In rare cases RTE generation can't be initiated due to model inconsistencies even if ECU project check succeeds
  • Usage of atomic component type as top-level component of a Vehicle-Project is now checked and reported

(top)


DaVinci Tool Suite Version 2.2 (SP4)

Usability enhancements in graphical editors

  • Display of mapping info in Function Design page of Vehicle Project Editor (SAR only)
  • Automatic creation of delegation ports
  • Change of port prototype alignment by Drag&Drop
  • Automatic arrangement of port prototypes: alphabetically, connected/unconnected
  • Copy&paste of port prototypes
  • Re-connecting of connector prototypes (change the start or end port)
  • Better visibility of selected objects in graphical editors
  • Zooming with <Ctrl> + mouse wheel or with +/- keys
  • Object positioning with arrow keys

Miscellaneous usability enhancements

  • List view in ECU mapping page (SAR only)
  • Display of additional context info in ECU Pin Mapping (SAR only)
  • Wildcards supported in Object Selection Dialog
  • Display of connectors in Object Usage Dialog

Editable network topology graphics (SAR only)

  • Manual layout mode and automatic layout mode selectable
  • Manual placing of ECUs and networks
  • Drawing of networks via line segments

Automatic data mapping

  • Automatic selection of signals for unmapped data elements
  • Selection based on best guess name matching
  • Adaptation of automatically created data mappings possible

Miscellaneous

  • Connector Tracing Dialog for function design (SAR only)
  • Extended consistency check (open ports, unmapped components, incompatibility in case of queued/unqueued data elements)
  • Support of XML schema of AUTOSAR Release 2.1.4 (XSD rev. 0018)
  • Update of AUTOSAR Release 2.0 XML schema export: service mapping, scaled data types with shared base types
  • Relative paths of BSWMD files supported (DEV only)
  • XML export for AUTOSAR Release 1.0 DTD not supported any more

Fixed issues

  • Error message when trying to open properties dialog of a C/S connector
  • Crash when importing a "double" data type
  • Wrong check message about multiple runnable triggers
  • AUTOSAR XML Import/Export of C/S communication specification was not supported
  • Consistency check for enum constant values was missing

(top)


DaVinci Tool Suite Version 2.2 (SP3)

RTE features

  • Support of complex hierarchical data types like arrays-of-records
  • Convenient configuration of VFB tracing by import of trace functions from Rte_Hook.h

XML Import/Export

  • Support of short names with 128 characters (tool option)

Enhanced consistency checks

  • Detailed consistency check and data re-synchronization now available in DaVinci SAR
  • Messages page in output window now available in DaVinci SAR
  • Consistency check for individual component types supported

Usability enhancement

  • Automatic creation of delegation ports to support bottom-up design
  • Smart template generator with update functionality now available in the attached file list of a component
  • Definition of a global output path in DaVinci DEV

Miscellaneous

  • AUTOSAR 1.0 XML format not supported any more

Fixed issues

  • Import of TargetLink-generated XML files fails in some situations
  • Crash in case of incomplete imported data (missing data type reference of data element prototype)
  • Default values of Generation Parameters page do not appear correctly in ECU Configuration File
  • Duplicate DATA-SEND-COMPLETED-EVENTs in XML export in some situations

Known issues

  • Old tool versions until V2.2.44 (SP2) crash without error message when trying to open a workspace, which has been created with V2.2 SP3
  • Task mapping of service components cannot be imported from ECU Configuration File

(top)


DaVinci Tool Suite Version 2.2 (SP2)

Support of AUTOSAR release 2.1

  • XML Import/Export according to AUTOSAR 2.1 schema
  • Adaptation of object properties according to AUTOSAR 2.1
  • RTE generation according to AUTOSAR 2.1

Service mapping

Support of AUTOSAR 2.1 concept of service components and service connectors in DaVinci DEV

  • List view in Component Type Editor for non-graphical defining of service ports
  • Definition and import of service Component Types
  • New page "Service Mapping" in ECU Project Editor to create service connectors

RTE features

  • Generation of RTE memory usage report
  • Adaptation of object properties according to AUTOSAR 2.1
  • Support of activation offset for cyclic runnable entities
  • Support of AUTOSAR compiler abstraction and memory abstraction mechanism
  • Support of AUTOSAR makefile mechanism for the RTE
  • Additional APIs supported: Rte_InitMemory, Rte_IWriteRef
  • Smart template generator: Update of component implementation files after changing component description
  • Summary of generated files displayed in output window

XML Import/Export

  • Export of scalings into separate package
  • Export of various additional tags to support Elektrobit Tresos
  • Additional consistency checks during import

Miscellaneous

  • Demo workspace "InteriorLight" extended by a ComManager service component
  • Reload workspace functionality moved from view menu to file menu with (Ctrl+F5) shortcut

Fixed issues

  • Rte_Feedback returns illegal error codes in some conditions
  • Generation of multiple internal S/R buffers (unqueued communication) with identical name
  • Rounding problems with 64 bit signals
  • Multiple buffers generated for buffered Interrunnable Variables
  • DaVinci SAR: Derivation of software architecture fails if function net contains empty connectors

(top)


DaVinci Tool Suite Version 2.2 (SP1)

RTE features

  • Support of Port Defined Arguments (XML import and RTE generation)

Fixed issues

  • Import of enumerator names with more than 32 characters not possible
  • Data Mapping on FlexRay: Same signal displayed several times in selection dialog
  • Application errors of C/S port interfaces not considered in consistency check
  • Record constants missing in contract phase header

(top)


DaVinci Tool Suite Version 2.2

DaVinci DEV as standalone tool

  • Full-featured design of application components possible with DaVinci DEV
  • Setup of ECU projects without vehicle project possible
  • Signal import via DBC, FIBEX or LDF files
  • Separate command line generation tool for RTE generation: DVRTEGen.exe
  • Detailed consistency check of ECU projects (Messages page in output window)

AUTOSAR compliant ECU configuration with DaVinci DEV

  • Storage of RTE configuration as AUTOSAR ECU Configuration File
  • Synchronization of DaVinci workspace with a given ECU Configuration file possible
  • Configurable list of external configuration tools for cooperative editing of the ECU Configuration File
  • Obsolete concept of DaVinci Target Packages eliminated. Automatic building of CANoe target DLLs suspended.

RTE features

  • Support of array types and enumeration types
  • Support of exclusive areas and inter-runnable variables
  • Definition of data-send-completed trigger
  • State request API for data send points
  • Detailed configuration of VFB tracing
  • Support of symbol attribute of runnable entities

XML Import/Export

  • Merge functionality during XML import to support iterative development processes
  • Support of XML schema of AUTOSAR Release 2.0 SP3

Fixed issues

  • Task mapping in ECU Configuration file should base on RTE event references instead of runnable entity references
  • Definition of communication specifications should be only possible at assembly port prototypes
  • Derived port prototypes are not incrementally updated when changing the function network
  • Some element issues in XML export (missing data type at operation arguments, wrong number format)
  • Inconsistent event configuration when server and all client runnables are mapped to same task
  • Missing read-modify-write protection for queue overflow flags

(top)


DaVinci Tool Suite Version 2.1 PRE (SP3)

Software Design

  • Software design editor for ECU software architecture
  • Redefinition of the top-level granularity of the ECU's software architecture
    see 'DaVinci_DEV_ECU_SW_Design.pdf' in DaVinci Documentation Browser for detailed description
  • Support of user-defined ECU-Project local ComponentPrototypes
    see 'DaVinci_DEV_ECU_SW_Design.pdf' in DaVinci Documentation Browser for detailed description
  • Definition of 'Not Valid Value' and 'Initial Value' (physical) at the signal added.
  • Definition of 'Invalid Value' at the DataType added. The specification of an 'Invalid Value' creates a DataType with semantic
  • Definition of a receive timeout value at the input function port added.

XML Import/Export

  • Import/Export of INVALID_VALUE definition according to AUTOSAR 2.0 schema

Fixed issues

  • Editors remain open after deletion of corresponding context item.
  • Inconsistent display of data mapping connectivity information.
  • Internal connections between multi-instantiated SWCs are not correctly detected in DaVinci DEV.
  • Function Design editor view is not updated when adding a new function.
  • Incorrect conversion of component graphic block.
  • Incorrect alignment of Function-Net derived composition types.

(top)


DaVinci Tool Suite Version 2.1 PRE (SP2)

XML Export

  • Additional export of user-defined attributes in a separate AUTOSAR XML file
    see 'TechnicalReference_UserDefinedAttributeExport.pdf' in DaVinci Documentation Browser

(top)


DaVinci Tool Suite Version 2.1 PRE (SP1)

Software Design

  • Refinement of existing software architecture within DaVinci DEV
  • Editable runnables and generic attributes in derived software architecture

Client/Server communication

  • Support of serialized C/S communication with support of AUTOSAR attribute "Can be invoked concurrently"
  • Trigger sorted view for operation invokation trigger in task mapping editor
  • Derivation of operation invocation trigger from function trigger specification

ECU Configuration XML export (only DaVinci Developer)

  • Export of RTE requirements to Com configuration (ComNotifications)
  • Export of RTE requirements to Os configuration completed (OsAlarms, OsEvents)
  • Configurable definitions for Com module and Os module in generated XML file

Fixed issues

  • Crash when opening runnables properties dialog in task mapping editor
  • Bad performance in large function net designs
  • Wrong update of derived software architecture if function ports have been changed
  • Automatic signal routing was not available for complex data types with signal groups

(top)


DaVinci Tool Suite Version 2.1 PRE

Client/Server communication

  • Definition of C/S Port Interfaces and C/S Port Prototypes
  • Selection of Operation Invoked trigger

XML Import

  • Import of XML files according to AUTOSAR 2.0 schema
  • Multi-file import context supported
  • Workspace consistency guaranteed by pre-import check of XML files

Enhanced usability of graphical editors

  • Component Type Editor for direct editing of component types without vehicle project
  • Port alignment may be defined individually for each component prototype
  • Direct editing of port prototypes within the structure view
  • Function Editor for direct editing of functions without vehicle project

AUTOSAR 2.0 compatibility

  • Multiple triggers per runnable entity supported
  • XML export for AUTOSAR 2.0 schema available

XML Export of RTE configuration (only DaVinci Developer)

  • Export of RTE configuration as AUTOSAR ECU Configuration Description file

Code Generation (only DaVinci Developer)

  • Separate generation step for AUTOSAR RTE
  • RTE generation possible without installation of a DaVinci Target Package

Fixed issues

  • Navigation between sheets via cross reference symbols not possible
  • Mapping view table not displayed any more in some situations
  • Constants not considered in compatibility check of record data types
  • Misc. issues in XML export (wrong TREFs, empty CONSTANTS tag)
  • Port prototypes of a component type not displayed in Object Usage Dialog
  • Connectivity status not correctly updated in GUI

(top)


DaVinci Tool Suite Version 2.0 PRE (SP3)

Graphical Topology Editor

  • Network topology can be graphically displayed in the context of a vehicle project. The graphic is calculated on demand and can't be modified. The topology objects can be selected in the graphic and edited through the objects dialogs

Modeling of devices

  • Devices with electrical properties can be globally defined in the Library-Browser and assigned to pins of an ECU.
  • Device Accessors within a Function Net can be mapped to concrete devices connected to the ECU pins.
  • The ECU Pin Topology is graphically displayed in the ECU Topology Editor accessible through the ECU in the Vehicle Project.

Support for complex data types

  • Data types can be defined as record containing any number of non-record data types as record-elements
  • Data mapping is done through signal groups where each record-element has to be mapped to a compatible signal within the signal group

Support for simple data semantics

  • Simple data semantics consisting of scaling information (factor, offset, unit) can be specified at integer and real data types. This information is exported as PRIMITIVE-TYPE-WITH-SEMANTICS in the AUTOSAR XML Export
  • Scaling is relevant for data mapping, i.e. a scaled data type requires a scaled signal to be compatible

Support for Waitpoints

  • Additional "Data Access" tab page in the component type dialog to specify the access mode for Queued (Polling, Waiting) and Non-Queued (Direct, Buffered) communication

AUTOSAR Code-Generation (only DaVinci Developer)

  • Basic Software Modules updated to AUTOSAR 2.0 API specification. Existent software component code based on previous AUTOSAR specification has to be adapted to new API.
  • Support of V850 Real-Target with GreenHills 4.0.7
  • Support of M32C Real-Target with IAR 3.10

Fixed issues

  • Data-mapping calculates wrong bit-length for some data type ranges
  • Deletion of component prototypes referencing multiple instantiated component types may corrupt task mapping
  • Completion of Device Accessors within Function Net was sometimes wrong
  • MATLAB/Simulink support of signal groups was not working correctly
  • MATLAB/Simulink import does not attach the behavior model to the function

(top)


DaVinci Tool Suite Version 2.0 PRE (SP2)

AUTOSAR Code-Generation (only DaVinci Developer)

  • Support of V850 Real-Target with GreenHills 3.51

Support for direct / buffered communication

  • The access mode to the data element prototypes can be specified for each runnable entity.
    • None: The runnable doesn't access a specific data element prototype.
    • Direct: The runnable explicitly accesses a specific data element prototype. The RTE generation uses direct API calls without additional buffering.
    • Buffered: The runnable implicitly accesses a specific data element prototype. The RTE generation will use additional buffering to keep the state unchanged during runnable execution.

Performance enhancements

  • Management of workspaces with huge amount of signals has been improved
  • Faster display of tree objects in Project-Explorer and Library-Browser

Configuration management suspended

  • Due to some internal restructuring issues the configuration management support has been temporarily disabled. It will be re-activated in one of next releases.

Fixed issues

  • Various AUTOSR XML Export issues fixed
    • ENTRY-POINT is now generated for the IMPLEMENTATION
    • Ambiguous NUMERIC-CONSTANT if the same Data-Type is used in different ports at the Component-Type
    • Description for constants were missing
  • Copy/Paste of Network within the same Vehicle-Project may crash
  • Update of Signal-Routing was incorrect under some circumstances, e.g. deleting a Network
  • Data-Type ranges for real-single and real-double corrected if -INF or +INF are used
  • Data-mapping creates signals with wrong bit-length

(top)


DaVinci Tool Suite Version 2.0 PRE (SP1)

AUTOSAR Code-Generation (only DaVinci Developer)

  • Integration of Vector AUTOSAR Evaluation Bundle with Code-Generation of AUTOSAR SW-Architecture for PC- and Real-Target
  • Support of CANoe PC-Target with Microsoft Visual C++ 6.0 / 7.1
  • Support of M32C Real-Target with Renesas 5.20

Task-Mapping extension for runnables

  • Each runnable entity defined at the Component can now be mapped to a task
  • Additional external tasks can be defined through attachment of OIL-Component files at the ECU-Project

Documentation

  • Documentation of AUTOSAR XML Export: See "DaVinci AUTOSAR XML Cross Reference" in the Documentation Browser
  • User manual of Tool concepts, AUTOSAR RTE and code-generation: See "Vector AUTOSAR Evaluation Bundle" in the Documentation Browser
  • Online-Help for DaVinci Network Designer CAN is now available
  • Online-Help for DaVinci System Architect and DaVinci Developer is currently not available

AUTOSAR XML Export

  • Option in export dialog to generate full-qualified short names
  • Export of IMPLEMENTATION with ENTRY-POINT

Fixed issues

  • Various AUTOSR XML Export issues fixed
    • Wrong format of P-PORT-PROTOTYPE-REF and R-PORT-PROTOTYPE-REF
    • Short name of TIMING-EVENT missing
    • Definition of BOOLEAN-CONSTANT with BOOLEAN-TYPE-TREF corrected
    • Deleted signals may cause artifacts in the element <SYSTEM-SIGNAL>
    • In some cases a DATA-RECEIVE-POINT was exported where a DATA-SEND-POINT was expected
    • A reference to a DataElementPrototype lacks the ComponentType; a reference to a RunnableEntity lacks the InternalBehavior
    • The values created for the tags CYCLE-TIME, CYCLE-TIME-REPEAT, STARTING-TIME, and DEBOUNCE-TIME are not correctly scaled to unit second
    • Sensor/Actuator creates an internal behavior using an ATOMIC-SOFTWARE-COMPONENT-TYPE-REF instead of a SENSOR-ACTUATOR-SOFTWARE-COMPONENT-TYPE-REF
    • Constants defined in the scope of a Data-Type were not exported
    • Object references using a “*” for fully dereferencing of the current context are valid definitions according to the "Template Formalization Guide", but may be difficult to interpret for XML-Importer. The creation of references with stereotype <<instanceRef>> have been changed by adding the name of a Port-Prototype in front of the qualified name: "port_prototype_short_name*/Element1"
  • Component-Prototype can only be created within Compositions. Trying to create it within other Component-Type was not inhibited and causes a crash.
  • ECU specific signal choice dialog causes crash in data mapping
  • Object can't be renamed to a name with different character case
  • Wrong behavior of radio-buttons within Data-Type dialog
  • Autorouting of signals doesn't recognize ambiguous receiver within one network correctly
  • Mapping of runnables causes deletion of network signals
  • Drag&Drop for Sensor/Actuator in mapping page was missing
  • Runnable name and description was not stored correctly
  • In some cases the function port update in function design structure graphic was missing
  • Crash in interface editor if port interface of an exiting port prototype was deleted
  • Wrong Tool-Tip behavior in trees consumes all mouse inputs on the subjacent item
  • Deletion of a ECU-Project within the Vehicle-Configuration causes a fully deletion of the ECU-Projects itself and not of the link

(top)


DaVinci Tool Suite Version 2.0 PRE

Prerelease to introduce the new tool concept and the AUTOSAR design support. Comprised tools:

  • DaVinci System Architect 2.0 PRE
  • DaVinci Developer 2.0 PRE
  • DaVinci Network Designer CAN 1.0 PRE

Support of Code Generation/Target Packages and ECU State Management is suspended.

New tool concept

Specialized tools for each design use case:

  • DaVinci System Architect: Specialized tool for system design
  • DaVinci Developer: Specialized tool for ECU code integration
  • DaVinci Network Designer: Specialized tool for network design

New tool framework

  • Common look-and-feel for all DaVinci tools
  • Introduction of projects (vehicle project or ECU project) as "working context"
  • New concept for editor windows

Function Design (only DaVinci System Architect)

  • Definition of functions with signal interfaces
  • Definition of device accessors for specifying signal interfaces of sensors and actuators
  • Function-local specification of signal properties allowed to support preliminary integration of a function net
  • Manual and automatic definition of function port connectors
  • Graphical visualization of function net consistency
  • Definition of hierarchical signal groups
  • User-defined stereotypes for signals and functions
  • Stereotypes are configurable through the STEREOTYPE.INI file located in the DaVinci Bin\Config directory
  • Optional display of stereotypes within function graphic
  • Function trigger definition (cyclic, spontaneous, on input signal)
  • Definition of function execution sequence
  • Derivation of a function net as an equivalent AUTOSAR SW architecture

AUTOSAR-compliant SW Design (only DaVinci System Architect)

  • Definition of data types
  • Definition of port interfaces with data element prototypes
  • Graphical design of atomic software components types and composition types
  • Definition of runnable entities
  • Trigger types "periodically" and "data reception" supported
  • Graphical design of SW structure by definition of component prototypes

Data Mapping (only DaVinci System Architect)

  • Mapping of network signals to data elements
  • Analysis of data element connectivity (internal vs. external communication)

ECU Mapping (only DaVinci System Architect)

  • Mapping of functions or components to ECUs
  • Definition of mapping constraints to ensure that all sub-functions/sub-components are located on the same ECU

Signal routing (only DaVinci System Architect)

  • Definition of signal routing paths within the vehicle topology
  • Signal routing across gateway ECUs supported

Export of AUTOSAR XML-files (only DaVinci System Architect)

Export of design data into the AUTOSAR XML-format (AUTOSAR 1.0, DTD revision 12342).

  • Export of complete vehicle projects with all sub-objects
  • Export of individual objects like data types, port interfaces or component types

User-defined stereotypes (only DaVinci System Architect)

  • Stereotypes are configurable by a STEREOTYPE.INI file located in the DaVinci Bin\Config directory
  • Stereotypes supported for functions, signals and signal groups

Import/Export of MATLAB/Simulink models (only DaVinci System Architect)

  • Import of Simulink models as function hierachy
  • Export of individual functions or complete function hierarchies as Simulink model
  • Import/Export includes signal groups and stereotype annotation
  • An example model "ImportExample.mdl" is available in the "Work"-Directory of the DaVinci installation
  • An example workspace "ImportExample.dvw" having imported "ImportExample.mdl" is available in the "Data"-Directory
  • Style guide for Simulink import is available in the DaVinci documentation browser

Network design (only DaVinci Network Designer)

  • Explicit definition of CAN messages and network signals
  • Definition of Tx- and Rx-relations
  • Definition of message layout with various display schemes
  • Manual or automatic definition of DLC
  • Display of gateway tables
  • Network timing analysis
  • Import/Export of DBC
  • Import of MDC files

Task mapping (only DaVinci Developer)

  • View modes for displaying the components in a flat list or sorted by trigger types

Object Usage Dialog (only DaVinci System Architect and DaVinci Developer)

  • Tracking of usage relations between objects in the workspace
  • Two tracking directions:
    • Referencing objects: Upward tracking (which objects use me)
    • Referenced objects: Downward tracking (which objects do I use)

Search Function (only DaVinci System Architect and DaVinci Developer)

  • Searching of objects by name
  • Search for specific object types

Limitations

  • Auto-mapper for network signals not available
  • Multi-instantiation only supported for atomic software component types, not for composition types
  • All runnable entities of a component are always mapped to the same task

(top)


DaVinci Tool Suite Version 1.0 (SP4)

Support of Microsoft Visual C++ 7.1

  • PC-Target generation using CANoe OSEK library is now available for Visual C++ 7.1 compiler, which is part of Microsoft .NET 2003 release. Legacy Visual C++ 6.0 is still supported.

CANdesc Basic Diagnostics for DB-Kom

  • Support for CANdesc Basic diagnostics using DBKOMgen Version 2.51
  • Extension of initial firmware generation for application callbacks
  • Attachment of generated diagnostic files
  • Notes concerning the generated template file "AppDesc.c":
    An application diagnostic template file "AppDesc.c" will be generated in the ECU output directory at each code generation. This file has to be initially attached once at the ECU to fulfill the diagnostic functions. It is highly recommended to use an ECU specific name rather than the standard "AppDesc.c". After attachment the file may be modified to code application specific diagnostic functionality.

Event Triggered Execution

  • In addition to the cyclic execution of software components, it is now possible to defined events to tigger execution of procedures at the behavior components.
  • There may be multiple procedures with multiple trigger conditions defined at each behavior component.
  • The DaVinci ECU-Callback object is superseded by the trigger concept and thus no longer available
  • Possible triggers are: State changes, Timer, Signals
  • The Simulink/TargetLink blocksets are enhanced by a procedure block

Task-Mapping

  • Task-Mapping for software components is now defined in the mapping view of the Hardware & Mapping Editor
  • See topic "Task mapping of software components" within the DaVinci online help for detailed information

Iterative OSEK Configuration

  • Changes in the OSEK configuration made in the OIL-Configurator are now read back and stored into the DaVinci workspace.
  • Storage is done for each ECU separately and can be modified through the OIL-Configurator without losing previous modifications
  • Additional OIL-Files can be attached at the ECU or software component

TargetLink 2.0

  • Implementation of behavior components can now be done with TargetLink 2.0 using MATLAB R13.
  • An upgrade mechanism of DaVinci models from TargetLink 1.3 to 2.0 is supported
  • A data dictionary is used for each behavior component with additional pool definitions for DaVinci
  • The single XML-Files for pool definitions can be found in <DaVinci>\Generation\Behavior\Matlab\R13\TL20\config
  • The previous implementation of TargetLink 1.3 using MATLAB R12 is still available.

Fixed issues

  • Attached files are now stored with paths relatively to the working folder
  • Linker problem with multiple RTW generated Stateflow files at the same ECU
  • Under rare circumstances modifications at attached files may be lost if working on the same behavior component with both DaVinci tools in parallel
  • Unhandled exception if output dir can't be created during code generation
  • Wrong ESM procedure execution during startup of CANoe simulation
  • Usage of ESM on ECUs without mapped software component leads in code generation errors

(top)


DaVinci Tool Suite Version 1.0 (SP3)

Parallel working with both DaVinci tools on the same workspace

  • Convenient switching between the tools without closing the workspace
  • Parallel editing of the objects without mutual blocking of the tools

Enhanced Target Package architecture and selection

  • Selection of used Target Package at each ECU and Mapping-System
  • Parallel installation of Target Packages in different versions supported

DaVinci Documentation Browser

  • New convenience tool to display documents and help files of DaVinci tools and Target Packages

MATLAB/Simulink Import

  • Recursive import of a Simulink subsystem as DaVinci software component structure

Internal Perl usage

  • External Perl installation no longer required
  • DaVinci installs Perl (build from CPAN sources Version 5.8.0) locally into the DaVinci generation directory
  • Any other Perl installations may exists on the PC and will not affect DaVinci code generation

DBC file export

  • Export of a mapping systems as dbc files

DBC Import

  • Support of sub-signals
  • Renaming of attached DBC-Files
  • Some minor roundup features and fixed issues
    • Enhanced check of DBC import conflicts
    • Check on imported DBC message ID while creating DaVinci messages
    • No more inconsistencies when deleting a DBC-imported signal from a bus interface
    • Correct update of properties on DBC-imported signals
    • Interpretation of some signal attributes corrected: start bit, init value, timeout

Configuration Management

  • Permanently disconnecting a workspace from a configuration management repository

Fixed issues

  • Generation rebuild fails without warning if output files are locked by another application
  • Attachment of large files via network was extremely slow
  • Compiler parameter settings are not stored after closing/reopen workspace
  • Opening a .dvw file through Windows Explorer doesn't work under some circumstances

(top)


DaVinci Tool Suite Version 1.0 (SP2)

Rework of target package settings

Please check and adapt your settings within the Mapping-Systems

  • Communication system type is now specified the Bus and no longer at each ECU
  • New generation parameter dialog at the Mapping-System and their ECUs available
  • CANoe firmware generation is now specifiable at each ECU within the Mapping-System

New DBkom version 2.48

  • Please adapt all workspaces using older DBKom versions at the ECU and Mapping-System

CAN Multi-Channel support

  • Support for more than one CAN-Channel at an ECU with DBKom communication system

Software System Sheets

  • Graphical grouping of components on several sheets
  • Cross reference links to follow signal paths across sheets

MATLAB/Simulink Export

  • Export of a Software System as one MATLAB/Simulink model containing all models attached to the used software components

MATLAB/Simulink/TargetLink functional interface

Please re-generate your existent, attached models with the enhanced blockset

  • Enhanced signal blockset with additional parameter
  • Additional blockset for ECU State Manager and Network Management

XML Import/Export

  • Software Component exchanged (incl. attached files) via XML

New CPU-Variants available

  • S12DG128
  • HC12DG128

Attached files enhancements

  • Additional attached files at the ECU within the Mapping-System
  • Support for binary file types (OBJ, LIB)
  • Additional file categories to specify file action within the generation make process

Fixed issues

  • Objects names within the Mapping-System are not checked correctly on uniqueness
  • Online help couldn't be started through adapter dialogs
  • Messages without bus signals are deleted during Mapping-System update
  • Missing explorer update after importing or selecting bus signals through a bus interface
  • Crash in subseqently renaming of component procedures
  • Missing connections when calling 'Complete Device Accessors' function
  • Wrong model name in initial TargetLink model generation

(top)


DaVinci Tool Suite Version 1.0 (SP1)

Fixed issues

  • After installation on a clean PC, an immediate Simulink generation will fail due to missing path settings
  • Some ECU specific parameters of the communication system can't be saved
  • Wrong Signal-Prefix (dvFwSim instead of dvFw) in template generation of Initial I/O Firmware for real ECUs
  • Missing update in Hardware-System explorer after creating new ECUs or Buses
  • Missing bus signals in Mapping-System after ECU exchange
  • Renaming of configurations may corrupt workspace and configuration management interaction
  • Component interface can't be removed in interface view under some circumstances
  • The same Signal in different versions can be used within one component. This is inconsistent and must not be allowed.
  • General error during code generation if the Mapping-System is read-only (i.e. checked in)
  • Renaming of generic attributes is not possible
  • Copy & Paste of diagnostic settings for an ECU is missing
  • ECUs without bus-signals won't be generated correctly
  • Missing check on unique sensor/actuator names
  • Wrong Network Management ID generation in DBC file

(top)


DaVinci Tool Suite Version 1.0

Extra installation of ActivePerl required

It is required to install ActivePerl Version 5.6.1 build 631 or higher in a separate step. ActivePerl may be downloaded from ActiveState at http://www.activestate.com/Products/ActivePerl/

Workspace conversion

A conversion of older workspaces with DTD 1.x to DTD 2.0 has to be performed for loading with DaVinci 1.0. There are two possibilities to perform this step:

  • Implicitly: Loading a workspace will automatically display a dialog for conversion.
    Please read the notes in this dialog carefully
  • Explicitly: Use the DVCvt.exe console application to convert a workspace with parameter -d2.0
    The parameter -f is always active for conversions to DTD 2.0, i.e. the workspace will always be saved in the new version

New Interaction Layer Versions

Please adapt all workspaces using older target settings at the ECU and Mapping-System:

  • DBKom 2.46
  • GM-LAN 3.99
  • Vector-IL 3.99

Configuration Management

  • Integration of Microsoft Visual SourceSafe

Diagnostic Support

  • Integration of CANdela and CANdesc for GM-LAN
  • Automatic creation of diagnostic stubs

ECU State Manager

  • Design of ECU State Machines
  • Definition of procedures with conditional execution

MATLAB/Simulink import

  • Import of a Simulink subsystem as DaVinci software component

Support of ECUs with predefined communication (DBC-Import)

  • Import of messages and signal mapping when using the auto-mapper for bus signals

Support for PowerPC Target

  • Target Package for MPC555 with DBKom 2.46 available

Signal states

  • Specification of signal error conditions at design time
  • Extensions of DaVinci Target API for accessing the signal state

(top)


DaVinci Tool Suite Version 0.9.8

Changes in the Target API

  • Please replace the following function calls in the behavior code of the C-coded components:
    • "dvSetSignalRequest()" by "dvRequestSignal(DV_SIGREG_ALL)"
    • "dvClearSignalRequest()" by "dvReleaseSignal(DV_SIGREG_ALL)"
    • "dvSignalsAvailable()" by individual calls of "dvGetState<SignalName>()"
  • Interface to CAN-Transceiver handling changed for systems using CCL (e.g. GM-LAN)
    see CodeGenerationManual.pdf and exemplary attached file HC12_Transceiver.c at the ECUs

SoftwareSystem Table Editor

  • Tabular viewing and editing of SoftwareSystems without graphic

Display of realization type in component graphic

  • Components will now have a visual distinction if they are included, structure or behavior components

Target Selection of attached files

  • Firmware and component files get a new attribute to specify, if they are used in PC- and/or Real-Target

Support for Logical Networks (LN)

  • Support for Logical Networks (LN)
    • LN Definition in Software-System
    • Integration with GM-LAN 3.97.00 Virtual Networks
    • Import of SAAB 3FD Models into DaVinci with LN

Performance Enhancements

  • Opening Component Mapping

Fixed issues

  • Unmapped signals won't be displayed within Mapping-System check
  • Wrong display of open signal paths
  • No Mapping-System check after assigning a signal to a sensor
  • No status information text output for a missing Software- or Hardware-System

(top)


DaVinci Tool Suite Version 0.9.7 (SP1)

Fixed issues

  • Linker error with multiple Simulink R13 models in one ECU
  • Check-State of mapping system not displayed correctly
  • Assertion, when activating a Mapping-System with attached DBC-File

(top)


DaVinci Tool Suite Version 0.9.7

GM-LAN Integration

  • Support of GM-LAN for Canoe and HC12 Target without Virtual Networks

Workspace DTD Converter Tool (DVCvt.exe)

  • Conversion of workspaces to a newer data model version

Sorting of Trees

  • All Explorer Trees (Global, Favorites, Categories) are now sorted

Name length limitation of 32 characters

  • All object names are now limited to a length of 32 characters to ensure proper usage in code generation and DBC-Files

Workspace Path checking

  • Workspace naming and path length will now be checked to ensure a maximum path length of 260 characters

Performance Enhancements

  • Loading Signals and Components
  • Editing Signal Types

Fixed issues

  • Disconnecting an ECU from a Bus causes an error
  • In some situations, renaming of objects was impossible
  • "New Workspace" command doesn't work in Hardware&Mapping Editor
  • Creating a new object category with an existing name will crash

(top)


DaVinci Tool Suite Version 0.9.6 (SP1)

Support for MATLAB R13

  • Adaptation of code generation for MATLAB R13 using RTW-GRT

(top)


DaVinci Tool Suite Version 0.9.6

Support of Large Systems

  • Rework of object loading and tree display
  • Enhancements in graphic display
  • Smart update mechanisms in tools (Trees, Object-Viewer and Graphic)
  • Rework of Mapping-System data update mechanisms

Object Categories

  • User defined grouping of objects with categories
  • Favorite Lists

Enhanced checking of attached files

  • Hints on closing, saving and generating if attached files are not up-to-date

XML Import Tool (DVImEx.exe)

  • Import of SAAB 3FD Models into DaVinci

Usability

  • Stop-Button for Code Generation added
  • Generate-All command added
  • Save-Button won't be grayed if workspace is not modified

Perl Installation Check

  • New script DVPerlCheck.pl to retrieve information about current Perl installation

Fixed issues

  • Missing update on DBC-Signal import
  • Mapping system consistency: Sensor signal specified as actuator is not detected as error
  • Overlapping display of interface names
  • Property windows of a message causes a crash
  • Multiple Tx-nodes of Tx-messages crashes in DB-Kom
  • Deleting a SWS corrupts the Mapping-System

(top)


Additional Information

Copyright

Vector Informatik GmbH

Certified Quality Management System

The Quality/Process Management of Vector Informatik GmbH is being certified according to DIN EN ISO 9001:2000-12 (formerly DIN EN ISO 9001:1994-08) throughout since 1998-08-19.

Vector Informatik GmbH - Addresses

Vector Informatik GmbH
Ingersheimer Str. 24
D-70499 Stuttgart, Germany
Tel.: +49 (711) 80670-0
Fax: +49 (711) 80670-100
info@vector-informatik.de
http://www.vector-informatik.com

Subsidiaries

Vector France SAS
168, Boulevard Camlinat
92240 Malakoff
France
Tel.: +33 1 4231 4000
Fax: +33 1 4231 4009
information@vector-france.com
http://www.vector-france.com

Vector Japan Co., Ltd.
Seafort Square Center Bld.
18F, 2-3-12,
Higashi-shinagawa, Shinagawa-ku
Tokyo 140-0002
Japan
Tel.: +81 3 5769 6970
Fax: +81 3 5769 6975
info@vector-japan.co.jp
http://www.vector-japan.co.jp

VecScan AB
Theres Svenssons Gata 9
417 55 Gothenburg
Sweden
Tel.: +46 (31) 76476 00
Fax: +46 (31) 76476 19
info@vecscan.com
http://www.vecscan.com

Vector CANtech, Inc.
39500 Orchard Hill Place
Suite 550
Novi, Michigan 48375
USA
Tel.: +1 (248) 449-9290
Fax: +1 (248) 449-9704
info@vector-cantech.com
http://www.vector-cantech.com

Vector Korea IT Inc.
Daerung Post Tower III, 508
182-4 Guro-dong, Guro-gu
Seoul 152-790
Republic of Korea
Tel.: +82(0)2 2028 0600
Fax: +82(0)2 2028 0604
info@vector-korea.com
http://www.vector-korea.com

Vector GB Ltd.
Rhodium
Central Boulevard
Blythe Valley Park
Solihull, Birmingham
West Midlands B90 8AS
United Kingdom
Tel.: +44 (0) 7530 264701
info@vector-gb.co.uk
http://www.vector-gb.co.uk

(top)


3.36 -

W3C Software License

W3C SOFTWARE NOTICE AND LICENSE

http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.

Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications:

  1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
  2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body of any redistributed or derivative code.
  3. Notice of any changes or modifications to the files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.)

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders.

____________________________________

This formulation of W3C's notice and license became active on December 31 2002. This version removes the copyright ownership notice such that this license can be used with materials other than those owned by the W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the previous version and is written so as to preserve the Free Software Foundation's assessment of GPL compatibility and OSI's certification under the Open Source Definition. Please see our Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to site-policy@w3.org.
 

Joseph Reagle <site-policy@w3.org>

Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06 16:02:49 slesch Exp $

4 - GENyFramework (TL104A)

GENyFramework (TL104A)

Specific Component Tools

4.1 - WELCOME to CANbedded

Microsoft PowerPoint - WELCOME to CANbedded.ppt

4.3 - WELCOME to CANbeddeds



Welcome to CANbedded
Implement Vector’s Delivery.
Within few steps from 
<delivery>.exe to <application>.hex 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
V2.0
2006-09-13
These slide show you how to use a CANbedded software component delivery beginning with the 
installation until a first successful test run. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
1


Agenda
> Introduction
Components and Project Folders
Delivery
Step by Step
Summary
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 2
 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
2


Introduction
Your Application
CANbedded Software Components
GENy, CANgen
Application
Diagnostics
Layer
Universal
Measure-
Interaction 
Network
ment
Layer
Management
And 
Communication
Calibration

Control
Transport Protocol
Protocol
Configuration 
Layer
Tool
CAN Driver
CAN Controller
Transceiv
Transcei er
CAN Bus
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 3
 
The illustration shows the layer model of the CANbedded components, their basic functions and 
connections.  CANbedded consists of a set of source code components (CANbedded Software 
Components) you have to include in your application. The sort of components depends on your delivery.
The  Configuration Tool is the connection  between the components and your project specific needs. It 
generates files you also have to include in your application.
Configuration Tool
for parameters and configuration of all components
more see Online Help
Communication Control Layer
Software component integration and hardware abstraction. 
CAN Driver
Hardware specific CAN controller characteristics and provision of a standardized application interface
Interaction Layer
with signal interface
Network Management
to control the CAN ECU
Transport Protocol
for data exchange of more than 8 data bytes
Universal Measeurement and Calibration Protocol
Measurement and calibration of the ECU via different bus systems. 
Diagnostics Layer
according to Keyword Protocol 2000 / UDS
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
3








Introduction
Your Application
CANbedded Software Components
GENy, CANgen
Application
DC
Porsche
GM

Configuration 
VW/AUDI
BMW
Renault
Tool
OEM? 
...and others
CAN Controller
Controller?
Derivative?
Transceiv
Transcei er
Compiler? 
CAN Bus
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 4
 
Dependent on the OEM the delivery and its content can differ. 
Some components do a similar job but have a different name and a different API, e.g. the Interaction 
Layer is different for DaimlerChrysler, BMW and other OEMs. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
4



Introduction
This Delivery is:
Tailored for:
OEM X
‰ Controller
‰ Derivative
‰ Compiler
Can be used for*:
‰ Projects for one vehicle manufacturer
‰ Can be used for multiple projects or car lines for this vehicle 
manufacturer
*right of usage can differ, for specific information refer to the quotation
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 5
 
The delivery is tailored according the questionnaire you filled-out. So the delivery contains all components 
you need tested for you controller/derivative/compiler. 
You can use the delivery not only for one project but for all other projects for this vehicle manufacturer  for 
different car lines. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
5


Introduction
Basic concept is almost the same for all OEM
‰ C code CANbedded Components
‰ Configuration Tool
OEM-specific differences in
‰ Component combinations
‰ Components
‰ API
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 6
 
CANbedded component are source code components in C. You can tailor the huge amount of 
functionality of each component by using the configuration tool.
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
6


Agenda
Introduction
> Components and Project Folders
Delivery
Step by Step
Summary
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 7
 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
7



Components and Project Folders
Component, API and files
Component
API
Configuration- and component-
‰ Initialization
dependent functions (API)
‰ Service Functions
‰ Callback Functions
C/H Files
‰ Component Files
Delivered files (generated for 
CANdesc)
‰ Configuration Files
‰ Parameter Files
Generated by
‰ CANgen
‰ GENy
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 8
 
The delivered CANbedded C code components consist of:
Component files:
Files that form the component (C, H), that contain the code of the component and its functionalities. 
These files can be found in the delivery (except for the files for the CANdesc component. Those are 
generated completely).
Configuration and parameter files:
These are files that are generated by the configuration too and that tailor the component to provide 
functionality as you have selected. As these files are generated, do not change them manually. Any 
change is lost after the next generation process. 
On the other hand each component provides a large application interface. Despite this the usage of a 
component can be seen very simple: 
Initialization: there is a function to initialize the component (xxxInitPowerOn).
Service function: There are all functions so use the component (e.g. CanTransmit to send a CAN 
message).
Callback functions: at predefined states of the component it calls back to the application to get 
information how to continue. The components do not work without any interaction with the application. 
This is a very powerful means for the application to control the work flow of the CANbedded software 
components. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
8



Components and Project Folders
Customer application files
Folders for delivered and 
generated Vector files
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 9
 
On the developer side the project could look like this: 
There is a project folder containing a large amount of application files. And depending on your strategy 
there could be a folder containing all files delivered from Vector and that are generated by the 
configuration tool. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
9


Agenda
Introduction
Components and Project Folders
> Delivery
Step by Step
Summary
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 10
 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
10







Delivery
Delivery Setup.exe
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 11
 
A delivery by CD starts automatically when inserting the CD and looks similar like shown above. 
Click the link to save the install shield executable on your hard disc. For security reasons the browser 
normally does not allow to start an executable (.exe) file. 
This install shield executable has the name of the delivery followed by _Setup.exe.
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
11


Agenda
Introduction
Components and Project Folders
Delivery
> Step by Step
Summary
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 12
 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
12









Step by Step
1. Install tool and component files
...Setup.exe
Components
install
API
‰
Initialization
‰
Service Functions
GENy
‰
Callback functions
CANgen
Files
‰
Component Files
e.g.
can_drv.c
can_def.h
il.c
il_def.h
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 13
 
1. STEP – Install tool and component files
Start the install shield executable and follow the instructions coming up. Make sure to enter the correct 
path where files should be installed to. There will be installed the component files and the configuration 
tool. 
In the project folder view the configuration tool will be installed below the folder _gentool. 
‰
If you use CANgen this will be installed directly below _gentool and the folder is called CANgen. 
‰
if you use GENy there will be installed two folders, one for the framework (GENy) and one for the 
component DLLs (Components).
The component files are installed as shown above. there is a _common folder for common files and a 
_doc folder for all the delivery documentations. The component files are stored in a folder with the name 
of the component (e.g. diag for diagnostics components, drv for the CAN Driver, nm for Network 
Management, etc.).
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
13







Step by Step
2. Configure components
...Setup.exe
Components
DBC
install
API
‰
Initialization
‰
Service Functions
GENy
‰
Callback functions
CANgen
Y configure
Files
‰
Component Files
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 14
 
2. STEP – Configure components
Now start the configuration tool (CANgen or GENy – for more information about how to use the tools refer 
to the Online Help). Configure the components, switch on or of necessary functionality, callback functions, 
etc.  
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
14








Step by Step
3. Generate configuration and parameter files
...Setup.exe
Components
DBC
install
API
‰
Initialization
‰
Service Functions
GENy
‰
Callback functions
CANgen
Y configure
Files
generate
Z
‰
Component Files
‰
Configuration Files
‰
Parameter Files
e.g.
il_par.c
il_par.h
il_cfg.h
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 15
 
3. STEP – Generate configuration and parameter files
After you have configured the components start the generation process by clicking the flash button of the 
configuration tool. Make sure you have adjusted the path correctly where the tool generated the files in. 
The easiest way would be to use a folder like above, called gendata where all generated data is stored. 
Then you know that all data in this folder must not be changed by hand. 
The files that are generated for configuration and parameters are named like shown above. 
*_par – parameter files
*_cfg – configuration files
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
15







Step by Step
4. Adapt application files
...Setup.exe
Components
DBC
install
[
API
adapt
Application files 
‰
Initialization
//Include components
‰
Service Functions
GENy
#include ...
‰
Callback functions
CANgen
Y configure
//Initialize components
Files
generate
CompInitPowerOn();
Z
‰
Component Files
‰
Configuration Files
//Service functions
‰
Parameter Files
//Cyclic Component Tasks
TaskXms()
{
CompTask();
}
//Callback functions
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 16
 
4. STEP – Adapt application files
After the files are generated you have to modify your application to use the functionality of the 
CANbedded software components. 
There are the C typical points to be regarded when using functionality of a component.
Include:
Your software must know where to find the functions you want to use. Therefore you have to include the 
necessary header files of the components to be used. 
Initialization:
Before you can use a component it must be initialized. 
Service functions: 
To use the actual functionality of the component call service functions like e.g. CanTransmit.
Cyclic component tasks
A very special sort of service functions are the cyclic component tasks. Only the CAN Driver is event 
triggered (when not used in polling mode). All other components need a task function to be called 
cyclically within a predefined time. This call cycle is the base time for internal time dependent functionality 
like e.g. timeout monitoring. 
Callback functions:
interact with the component to control component’s activities. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
16






























































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































































Step by Step
4. Adapt application files
Application files 
Some examples for 
//Access to components
include, initialization, cyclic
#include fileA
#include fileB
#include ccl_inc.h //only one initialization 
cyclic component task and 
function when using CCL
service and callback functions
//Initialize components, interrupts disabled
CanInitPowerOn();
NmInitPowerOn();
CclInitPowerOn(); //only one 
..
initialization function when using CCL
enable Interrupts
//Service functions
//Callback functions
IlRxStart(); 
ApplCanMessageReceived()
{
IlTxStart();
//application code
}
//Cyclic Component Tasks
TaskXms()
{
CompATask();
}
CclScheduleTask(); //one function call
TaskYms()
for all component task functions
{
CompBTask();
}
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 17
 
4. STEP – Adapt application files
Include:
There is an order that has to be kept when including the files for CANbedded software components. If you 
use the CCL component there is only one include left, the one of ccl_inc.h. 
Initialize components with disabled interrupts:
The CanInitPowerOn() must be the first initialization followed by the higher layer components like Network 
Management or Transport Protocol, etc. If you use the CCL component, there is only one call of 
CclinitPowerOn() necessary. 
Cyclic component tasks:
In the configuration tool you have to enter the cycle time (normally in ms) in which you call the 
component’s task functions (CompATask( ), CompBTask( ), etc.). This information is the basis for the 
component to calculate its internal timing. So you have to call the function in the given cycle time. This 
can be done form a operating system task or a timer. If you use the CCL component just call 
CclScheduleTask() within a suitable cycle time and the single calls will be performed by the CCL (CCL 
provides another method for the cyclic calls, refer to the documentation of the CCL component for more 
information).
Service functions:
Service functions are e.g. CanTransmit to transmit a CAN message, IlRxStart to start the transmitting 
path of the Interaction Layer, etc. These are functions to use the components. 
Callback functions:
e.g. ApplCanMessageReceived. Callback functions are always marked with Appl... in the beginning of the 
name. The activity of the component is halted and the application is asked to meet a decision how to 
continue. Often the return code of the function is used for this decision, but now always. In some cases 
the application has to do some other action. 
Tip: for the beginning provide all necessary callback functions but leave them empty just to prevent linker 
errors. Then start to fill them with code one after the other. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
17








Step by Step
5. Files in Project or makefile
...Setup.exe
\
Components
DBC
install
[
API
adapt
Application files 
‰
Initialization
//Include components
‰
Service Functions
GENy
#include ...
‰
Callback functions
CANgen
Y configure
//Initialize components
Files
generate
CompInitPowerOn();
Z
‰
Component Files
‰
Configuration Files
//Service functions
‰
Parameter Files
//Cyclic Component Tasks
TaskXms()
{
CompTask();
}
//Callback functions
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 18
 
5. STEP – Add files in your project or makefile
Now the component files are configured (generated files) and your application is adapted to use the 
components and their functionality. What is left is to add the new files (component files and generated 
files) to your compiler or makefile. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
18







Step by Step
6/7. Compile, link and download
...Setup.exe
\
Components
DBC
install
[
API
adapt
Application files 
‰
Initialization
//Include components
‰
Service Functions
GENy
#include ...
‰
Callback functions
CANgen
Y configure
//Initialize components
Files
generate
CompInitPowerOn();
Z
‰
Component Files
‰
Configuration Files
//Service functions
‰
Parameter Files
//Cyclic Component Tasks
TaskXms()
{
CompTask();
}
compile/link
download 
//Callback functions
HW platform
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 19
 
6. STEP – Compile and link your project with CANbedded software components
Now start the compiler for a first compile and link process. Make sure you have provided all necessary 
callback functions. 
7. STEP – Download the executable to your hardware and test
The first target should be a basically working CAN communication. Upon this you can build all further 
development. So download your executable and watch the bus for communication. Use perhaps CANoe
or CANalyzer (products of Vector Informatik GmbH). If you see the CAN messages on the bus and no 
error frames, the first target is reached.
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
19


Agenda
Introduction
Components and Project Folders
Delivery
Step by Step
> Summary
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 20
 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
20



Summary
Step by Step
X.exe
Setup.exe – Install Configuration Tool (CANgen or GENy) and 
CANbedded Components
Y.gny
Configure Components with Configuration Tool and data base file
.ccf
Z_par.h
Generate Parameter and Configuration Files
_cfg.h
[appl.c
Adapt your application to utilize CANbedded Components
\.mak
Add CANbedded to your Project or makefile
].hex
Compile and Link the  Project (application with CANbedded)
^.hex
Download to target and test
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 21
 
Use the list above as a short recipe for using the CANbedded software components out of the delivery. 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
21


Summary
Documentation
‰ Beginners of CANbedded components should read the 
UserManual_Startup_<OEM>_CANbedded first (if available). 
‰ If not part of the delivery read the component specific user manuals       
UserManual_<Component>. And if you use the CCL read the CCL user manual first.
‰ There is a set of user manuals and references for every component as you see 
below.
Document Types
User Manual
Technical Reference(SW)
Technical Reference(HW)
First steps to get an example 
More detailed information about 
Hardware specific information of the 
executable running for each 
the component, API...
component if available.
component or the complete 
delivery (if available for OEM).
UserManual_CCL, 
UserManual_Startup_<OEM>_
CANbedded, ...
TechnicalReference_candrv, ...
TechnicalReference_CAN_HC12, ...
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 22
 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
22


Thank you for your attention. 
For detailed information about Vector
and our products please have a look at: 
www.vector-informatik.com
Author:
Klaus Emmert
Vector Informatik GmbH
Ingersheimer Str. 24
70499 Stuttgart
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
Slide: 23
 
© 2006. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector.
23

5.1 - ReferenceManual_HexView

HexView

5.3 - ReferenceManual_HexViews

Reference Manual HexView 
 
 
 
 
 
 
 
 
 
 
 
HexView 
Reference Manual 
 
 
Version 1.08.06 
 
 
 
 
 
 
 
 
 
 
Authors 
Armin Happel 
Status 
Released 
 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
1 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Document Information 
History 
Author 
Date 
Version 
Remarks 
Vishp 
2006-02-21 
1.0 
>  Creation 
Vishp 
2006-07-14 
1.1 
>  Description of new features for V1.2.0 
>  Main features are: 
>  Support for Ford-VBF and Ford-IHex in 
dialogs 
>  Compare-Feature 
>  Auto-detect file format on file open/save 
Vishp 
2006-09-27 
1.2 
>  Description of new features for V1.3.0 
>  Merge and compare uses now the auto-
filetype detection 
>  Merge operation available from 
commandline 
>  Address calculation from banked to linear 
addresses from commandline 
>  Checksum calculation feature from 
commandline places results into file or data. 
Vishp 
2006-12-07 
1.3 
>  Description of new features for V1.4.0 
>  Commandline: Checksum operates on 
selected section. Multiple checksum areas 
can be specified from the commandline. 
>  Postbuild operation added 
>  Fixing Ford IHex configuration problem for 
flashindicator and File-Browse in the dialog 
>  Option /CR (cut-section) added to the 
commandline 
>  Delete and  Cut&paste with internal 
clipboard added. 
>  Description of the commandline processing 
order added to the document 
>  Program returns a value depending on the 
status of operation 
>  New option combination /XG with /MPFH to 
re-position existing NOAM to adjusted 
NOAR-fields 
>  Goto start of a block (double-click to block 
descriptor)  
>  Find ASCII string in data was added 
Vishp 
2007-07-09 
1.31 
>  Description of new features for V1.4.6 
>  Support part number in GM-files (option /pn) 
2014, Vector Informatik GmbH 
Version: 1.08.06 
2 / 111 
based on template version 5.1.0 

Reference Manual HexView 
from the commandline and reading the file 
Vishp 
2007-09-19 
1.4 
>  Description of new features for V1.5 
>  Start CANflash from within Hexview 
>  Create partial datafiles for Fiat-export 
>  Support VBF V2.4 for Ford 
>  Support Align Erase (/AE) 
>  Use ranges instead of start and end address 
>  Creation of a validation structure 
>  New About-dialog with personalized license 
info 
Vishp 
2008-01-31 
1.5 
>  Fixing wrong description of checksum 
calculation for method 8 (see Table 3-3, 
index 8) 
Vishp 
2009-05-19 
1.6 
>  Description of new features for V1.6 
>  Fixing problem when HEX-file contain 
addresses until 0xFFFF.FFFF 
>  Extend expdatproc interface to allow 
insertion of data processing results into 
HEX-file 
>  Now browse for data processing parameter 
file 
>  Intel-HEX record length now adjustable 
>  This document can now be opened from 
Help menu 
>  Allow to select multiple post build files 
>  Generate structured hex file from Eeprom 
data set 
>  C-array generation supports structured list, 
Ansi-C and memmap. 
Vishp 
2009-11-27 
1.06.01 
>  Fixing problems with path names using a 
colon, e.g. “D:” 
>  Minor corrections in the documentation 
(CRC calculation algorithms) 
Vishp 
2010-10-11 
1.06.04 
>  AccessParameter for Fiat export now 
editable. 
>  Export binary blocks from commandline 
interface 
Vishp 
2011-12-05 
1.07.00 
>  Fixing Windows7 problems in dialogs. 
>  Faster HEX read operation 
>  Support dsPIC copy and ghost byte 
clearance 
>  Export splitted binary data files per segment 
>  Add checksum to last data bytes (@end) 
2014, Vector Informatik GmbH 
Version: 1.08.06 
3 / 111 
based on template version 5.1.0 

Reference Manual HexView 
>  Further support for compress+sign  
>  Padding for data encryption 
>  Scanning memory for EepM data (for 
development) 
>  S5 records are now tolerated. 
>  Swapping words or longwords 
Vishp 
2012-09-15 
1.08.00 
>  Solving further Win7 problems in dialogs. 
>  Adding SHA256 in checksum and data 
processing DLL 
>  Record type specifier in the commandline for 
Intel-HEX and Motorola S-Records. 
>  Add import and Export for HEX ASCII data 
through commandline 
>  Generate signature header for GM 
>  Support for VBF V2.5 (Volvo) 
Vishp 
2014-03-11 
1.08.04 
>  Correcting padding mode for AES 
>  Add support for IV-Vector w/ AES-CBC 
>  Support for VBF V3.0 (Ford) 
>  Improvements for the GM-header signature 
generation for cyber security. 
>  Corrections on address range definition for 
data processing. 
>  Ford-VBF allows now to omit the erase 
table. Editable now in the GUI. 
>  Call to CANflash removed. 
>  Description for validation structure 
generation added. 
>  Support multiple part numbers for VBF 
>  Merging files over commandline supports 
now wildcards. 
>  Order of identifiers for VBF corrected. 
>  Expdatproc V1.08.04 added 
>  RSA encprytion/decryption byte order 
corrected. 
>  Padding mode for AES corrected 
>  IV can be specified explicitly for AES 
CBC in the parameter 
Vishp 
2014-04-07 
1.08.05 
>  Commandline option to export MIME coded 
files 
Vishp 
2014-05-19 
1.08.06 
>  Export/Import of GAC binary files 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
4 / 111 
based on template version 5.1.0 


Reference Manual HexView 
Reference Documents 
No. 
Title 
[1] 
Fiat-Specification 07284-01, dated 2003-05-15 
[2] 
Ford/Volvo: Versatile Binary Format V2.2-V3.0 
[3] 
Ford: Module programming and Design specification, V2003.0 
[4] 
GM: GMW3110, V1.5, chapter 11 
 
 
 
 
 
Caution 
We have configured the programs in accordance with your specifications in the 
questionnaire. Whereas the programs do support other configurations than the one 
 
specified in your questionnaire, Vector´s release of the programs delivered to your 
company is expressly restricted to the configuration you have specified in the 
questionnaire. 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
5 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Contents 
1  Introduction .................................................................................................................. 12 
1.1  Important notes ...................................................................................................... 12 
1.2  Terminology ............................................................................................................ 13 
2  User Interface ............................................................................................................... 14 
2.1  With a Double Click to the Main Menu .................................................................... 15 
2.1.1 
Edit a HEX data line ...................................................................................... 15 
2.1.2 
Change the base address of a data block, erase it or jump directly to the 
beginning of the block data............................................................................ 15 

2.2  Menu ...................................................................................................................... 16 
2.2.1 
Menu: “File” ................................................................................................... 16 
2.2.1.1 
New ........................................................................................................ 16 
2.2.1.2 
Open ...................................................................................................... 16 
2.2.1.2.1  Auto-file format analysing process ................................................... 16 
2.2.1.3 
Merge ..................................................................................................... 17 
2.2.1.4 
Compare ................................................................................................ 18 
2.2.1.5 
Save ....................................................................................................... 19 
2.2.1.6 
Save as .................................................................................................. 19 
2.2.1.7 
Log Commands ...................................................................................... 19 
2.2.1.8 
Import ..................................................................................................... 19 
2.2.1.8.1  Import Intel-Hex/Motorola S-Record ................................................ 20 
2.2.1.8.2  Read 16-Bit Intel Hex....................................................................... 20 
2.2.1.8.3  Import binary data ............................................................................ 20 
2.2.1.8.4  Import HEX ASCII ............................................................................ 20 
2.2.1.8.5  Import GM data................................................................................ 20 
2.2.1.8.6  Import Fiat data ............................................................................... 20 
2.2.1.8.7  Import Ford IHex data ...................................................................... 20 
2.2.1.8.8  Import Ford VBF data ...................................................................... 20 
2.2.1.8.9  Import GAC binary file ..................................................................... 20 

2.2.1.9 
Export ..................................................................................................... 21 
2.2.1.9.1  Export as S-Record ......................................................................... 21 
2.2.1.9.2  Export as Intel-HEX ......................................................................... 22 
2.2.1.9.3  Export as HEX-ASCII....................................................................... 22 
2.2.1.9.4  Export as CCP Flashkernel .............................................................. 23 
2.2.1.9.5  Export as C-Array ............................................................................ 25 
2.2.1.9.6  Export Mime coded data .................................................................. 28 
2.2.1.9.7  Export Binary data ........................................................................... 28 
2.2.1.9.8  Export binary block data .................................................................. 29 
2.2.1.9.9  Export Fiat Binary File ..................................................................... 29 

2014, Vector Informatik GmbH 
Version: 1.08.06 
6 / 111 
based on template version 5.1.0 

Reference Manual HexView 
2.2.1.9.10  Export Ford Ihex data container ....................................................... 30 
2.2.1.9.11  Export Ford VBF data container ...................................................... 31 
2.2.1.9.12  Export GM data ............................................................................... 32 
2.2.1.9.13  Export GM-FBL header info ............................................................. 33 
2.2.1.9.14  Export VAG data container .............................................................. 34 
2.2.1.9.15  Export GAC binary files ................................................................... 37 
2.2.1.10  Print / Print Preview / Printer Setup ........................................................ 37 
2.2.1.11  Exit ......................................................................................................... 37 

2.2.2 
Edit ................................................................................................................ 37 
2.2.2.1 
Undo ...................................................................................................... 38 
2.2.2.2 
Cut / Copy / Paste .................................................................................. 38 
2.2.2.3 
Copy dsPIC like data .............................................................................. 40 
2.2.2.4 
Data Alignment ....................................................................................... 41 
2.2.2.5 
Fill block data ......................................................................................... 42 
2.2.2.6 
Create Checksum ................................................................................... 43 
2.2.2.7 
Run Data Processing.............................................................................. 44 
2.2.2.8 
Edit/Create OEM Container-Info ............................................................. 45 
2.2.2.9 
Remap S12 Phys->Lin ........................................................................... 45 
2.2.2.10  Remap S12x Phys->Lin .......................................................................... 45 
2.2.2.11  General Remapping ............................................................................... 45 
2.2.2.12  Generate file validation structure ............................................................ 46 
2.2.2.13  Run Postbuild ......................................................................................... 49 
2.2.3 
View .............................................................................................................. 49 
2.2.3.1 
Goto address… ...................................................................................... 50 
2.2.3.2 
Find record ............................................................................................. 50 
2.2.3.3 
Repeat last find ...................................................................................... 50 
2.2.3.4 
View OEM container info ........................................................................ 50 
2.2.4 
Flash Programming ....................................................................................... 51 
2.2.4.1 
Scan CANoe trace log ............................................................................ 51 
2.2.4.2 
Build ID based EEP download file. ......................................................... 52 
2.2.4.3 
Scan EepM data section ......................................................................... 53 
2.2.5 
Info operation (?) ........................................................................................... 54 
2.3  Accelerator Keys (short-cut keys) ........................................................................... 55 
3  Command line arguments description ....................................................................... 57 
3.1  Command line options summary ............................................................................ 57 
3.2  General command line operation order .................................................................. 63 
3.2.1 
Align Data (/ADxx or /AD:yy) ......................................................................... 64 
3.2.2 
Align length (/AL[:length]) .............................................................................. 64 
3.2.3 
Specify erase alignment value (/AE:xxx) ....................................................... 64 
3.2.4 
Specify fill character (/AF:xx, /AFxx) .............................................................. 65 
2014, Vector Informatik GmbH 
Version: 1.08.06 
7 / 111 
based on template version 5.1.0 

Reference Manual HexView 
3.2.5 
Address range reduction (/AR:’range’) .......................................................... 65 
3.2.6 
Cut out data from loaded file (/CR:’range1[:’range2’:…] ................................ 65 
3.2.7 
Checksum calculation method (/CSx[:target[;limited_range][/no_range]) ....... 66 
3.2.8 
Run Data Processing interface (/DPn:param[,section,key][;outfilename]) ...... 70 
3.2.9 
Create error log file (/E:errorfile.err) ............................................................... 76 
3.2.10  Create single region file (/FA) ........................................................................ 76 
3.2.11  Fill region (/FR:’range1’:’range2’:…) .............................................................. 76 
3.2.12  Specify fill pattern (/FP:xxyyzz…) .................................................................. 77 
3.2.13  Import HEX-ASCII data (/IA:filename[;AddressOffset]) .................................. 77 
3.2.14  Execute logfile (/L:logfile) .............................................................................. 77 
3.2.15  Merging files (/MO, /MT) ................................................................................ 77 
3.2.16  Run postbuild operation (/pb=postbuild-file) .................................................. 78 
3.2.16.1  OpenPBFile ............................................................................................ 79 
3.2.16.2  ClosePBFile ........................................................................................... 79 
3.2.16.3  ClosePBFile ........................................................................................... 80 
3.2.16.4  GetPBData ............................................................................................. 80 

3.2.17  Specify output filename (-o outfilename) ....................................................... 81 
3.2.18  Run in silent mode (/s) .................................................................................. 81 
3.2.19  Specify an INI-file for additional parameters (/P:ini-file) ................................. 81 
3.2.20  Remapping address information (/remap) ..................................................... 82 
3.2.21  Create validation structure (/vs) ..................................................................... 83 
3.3  Output-control command line options (/Xx) ............................................................. 84 
3.3.1 
Output of HEX ASCII data (/XA[:linelen[:separator]]) ..................................... 84 
3.3.2 
Output a Fiat specific data file (/XB) .............................................................. 85 
3.3.3 
Output data into C-Code array (/XC) ............................................................. 86 
3.3.4 
Output a Ford specific data file (/XF, /XVBF) ................................................. 87 
3.3.4.1 
Output Ford files in Intel-HEX format ...................................................... 87 
3.3.4.2 
Output Ford files in VBF format .............................................................. 91 
3.3.5 
Output a GM-specific data file ....................................................................... 97 
3.3.5.1 
Manipulating Checksum and address/Length field within an existing 
header (/XG) .......................................................................................... 98 

3.3.5.2 
Creating the GM file header for the operating software 
(/XGC[:address]) .................................................................................. 100 

3.3.5.3 
Creating the GM file header for the calibration software 
(/XGCC[:address]) ................................................................................ 100 

3.3.5.4 
Creating the GM file header with 1-byte HFI (/XGCS[:address]) ........... 101 
3.3.5.5 
Specify the SWMI data (/SWMI=xxxx) .................................................. 101 
3.3.5.6 
Adding the part number to the header (/PN) ......................................... 101 
3.3.5.7 
Specify the DLS values (/DLS=xx) ........................................................ 102 
3.3.5.8 
Specify the Module-ID parameter (/MODID=value)............................... 102 
3.3.5.9 
Specify the DCID-field (/DCID=value) ................................................... 102 
2014, Vector Informatik GmbH 
Version: 1.08.06 
8 / 111 
based on template version 5.1.0 

Reference Manual HexView 
3.3.5.10  Specify the MPFH field (/MPFH[=file1+file2+…] ................................... 102 
3.3.5.11  Signature version (/sigver=value) ......................................................... 103 
3.3.5.12  Signature Key ID (/sigkeyid=value) ....................................................... 103 
3.3.5.13  Generate Routine header (/XGCR[:header-address]) ........................... 103 
3.3.5.14  Generate key exchange header (/XGCK) ............................................. 104 
3.3.6 
Output a VAG specific data file (/XV) ........................................................... 104 
3.3.7 
Output data as Intel-HEX (/XI[:reclinelen[:rectype]]) .................................... 104 
3.3.8 
Output data as Motorola S-Record (/XS[:reclinelen[:rectype]]) .................... 104 
3.3.9 
Outputs to a CCP/XCP kernel file (/XK) ....................................................... 105 
3.3.10  Output to a GAC binary file (/XGAC, /XGACSWIL) ...................................... 105 
4  EXPDATPROC ............................................................................................................ 107 
4.1  Interface function for checksum calculation .......................................................... 107 
4.2  Interface function for data processing ................................................................... 108 
4.3  Software licenses ................................................................................................. 109 
5  Glossary and Abbreviations ...................................................................................... 110 
5.1  Glossary ............................................................................................................... 110 
5.2  Abbreviations ....................................................................................................... 110 

6  Contact......................................................................................................................... 111 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
9 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Illustrations 
Figure 2-1 
Main Menu of HexView ............................................................................. 14 
Figure 2-2 
Edit-Line dialog ......................................................................................... 15 
Figure 2-3 
Change the base address of a segment ................................................... 15 
Figure 2-4: 
Customizing merge data in the merge dialog ............................................ 17 
Figure 2-5 
Overlapping data when merging a file ....................................................... 17 
Figure 2-6 
Compare Info dialog ................................................................................. 18 
Figure 2-7 
Export data in the Motorola S-Record format ............................................ 21 
Figure 2-8 
Export dialog for the Intel-Hex output ........................................................ 22 
Figure 2-9 
Export HEX ASCII data ............................................................................. 23 
Figure 2-10 
Export flashkernel data for CCP/XCP ....................................................... 23 
Figure 2-11 
Export data into a C-Array ........................................................................ 25 
Figure 2-12 
Export binary block data ........................................................................... 29 
Figure 2-13: 
Export dialog for the FIAT binary file ......................................................... 29 
Figure 2-14: 
Export dialog for Ford I-Hex output file...................................................... 31 
Figure 2-15: 
Export dialog for the Ford/VolvoCars-VBF data file format ........................ 32 
Figure 2-16: 
The output information for the GM data export .......................................... 33 
Figure 2-17: 
Export dialog to generate the GM-FBL header information for GENy ........ 33 
Figure 2-18 
Exports data into a VAG-compatible data container .................................. 34 
Figure 2-19 
Example of ‘Copy window’ when Ctrl-C or “Paste” pressed using start- 
and end-address ....................................................................................... 39 

Figure 2-20 
Example of cut-data using start-address and length as a parameter ......... 39 
Figure 2-21: 
Pasting the clipboard data into the document specifying the target 
address ..................................................................................................... 40 

Figure 2-22: 
Copy dsPIC like data ................................................................................ 41 
Figure 2-23 
Data alignment option ............................................................................... 42 
Figure 2-24 
Dialog that allows to fill data ..................................................................... 43 
Figure 2-25 
Dialog to operate the checksum calculation .............................................. 44 
Figure 2-26 
Dialog for Data Processing ....................................................................... 44 
Figure 2-27: 
Configuration window for general remapping ............................................ 46 
Figure 2-28 
Generate the validation structure for your target memory. ......................... 47 
Figure 2-29: 
Jump to a specific address in the display window ..................................... 50 
Figure 2-30: 
Find a string or pattern within the document ............................................. 50 
Figure 2-31:  
Dialog to run a CANoe trace ..................................................................... 51 
Figure 2-32:  
Example output for building ID based download files. ............................... 53 
Figure 2-33: 
Scan EepM dialog and example ............................................................... 53 
Figure 3-1 
Order of commandline operations within Hexview. .................................... 63 
Figure 3-2 
Example on how to select the checksum calculation methods in the 
“Create Checksum” operation ................................................................... 66 

Figure 3-3: 
Calling sequence of the post-build  functions ............................................ 79 
Figure 3-4: 
Mapping pysical to linear address spaces ................................................. 82 
Figure 4-1 
Build the list box entries for the GUI ........................................................ 107 
Figure 4-2 
Function calls when running checksum calculation ................................. 108 
 
Tables 
Table 1-1  
Terminology .............................................................................................. 13 
Table 2-1  
Auto-file format detection .......................................................................... 17 
Table 2-2  
Currently available commands in the log-file ............................................. 19 
Table 2-3  
Description of the elements for the VAG SGML output container .............. 36 
Table 2-4  
Accelerator keys (short-cut keys)  available in Hexview ............................ 56 
Table 3-1  
Command line options summary ............................................................... 62 
2014, Vector Informatik GmbH 
Version: 1.08.06 
10 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Table 3-2  
Checksum location operators used in the commandline ........................... 68 
Table 3-3: 
Functional overview of checksum calculation methods in “expdatproc.dll” 70 
Table 3-4  
Functional overview of data processing methods in “expdatproc.dll” ......... 76 
Table 3-5  
OpenPBFile .............................................................................................. 79 
Table 3-6  
OpenPBFile .............................................................................................. 80 
Table 3-7  
ClosePBFile .............................................................................................. 80 
Table 3-8  
GetPBData ............................................................................................... 81 
Table 3-9  
INI-file information fort he Fiat file container generation ............................ 86 
Table 3-10  
INI-File definition fort he C-Code array export function ............................. 87 
Table 3-11  
INI-file description for Ford I-Hex file generation ....................................... 89 
Table 3-12  
INI-File description for Ford VBF export configuration ............................... 93 
2014, Vector Informatik GmbH 
Version: 1.08.06 
11 / 111 
based on template version 5.1.0 


Reference Manual HexView 
1  Introduction 
This  document  describes  the  usage  of  the  PC-Tool  “HexView”.  Originally  a  study  of  the 
usage of the MFC library to display the contents of Intel-HEX or Motorola S-Record files, it 
has been enhanced to create data containers for some OEMs used for flash download.  
Another purpose is to manipulate this data or file contents to adapt it to the specific needs 
for a flash download. 
An open interface has been designed to allow data processing and checksum calculation. 
  
Some of the features of Hexview can be used by the graphical user interface.  But there 
are also powerful features available via a command line interface. Some features are even 
just accessible via the command lines. 
 
Thanks to André Caspari for his Icon. 
1.1 
Important notes 
 
 
Caution 
The application of this product can be dangerous. Please use it with care. 
 
 
 
Note that  this tool may be used to alter the program or data intended to be downloaded 
into an ECU for series production. The results of this data manipulation must be observed 
very carefully and thoroughly tested. 
 
Vector Informatik GmbH is furnishing this item "as is" and free of charge. Vector Informatik 
GmbH does not provide any warranty of the item whatsoever, whether express, implied, or 
statutory,  including,  but  not  limited  to,  any  warranty  of  merchantability  or  fitness  for  a 
particular purpose or any warranty that the contents of the item will be error-free. 
 
In  no  respect  shall  Vector  Informatik  GmbH  incur  any  liability  for  any  damages, 
including, but limited to, direct, indirect, special, or consequential damages arising 
out of, resulting from, or any way connected to the use of the item, whether or not 
based  upon  warranty,  contract,  tort,  or  otherwise;  whether  or  not  injury  was 
sustained  by  persons  or  property  or  otherwise;  and  whether  or  not  loss  was 
sustained from, or arose out of, the results of, the item, or any services that may be 
provided by Vector Informatik GmbH. 

2014, Vector Informatik GmbH 
Version: 1.08.06 
12 / 111 
based on template version 5.1.0 

Reference Manual HexView 
1.2 
Terminology 
Item 
Description 
>  Address Region 
Area of coherent data that can be described 
by a start address and length of data. 
>  PMA 
>  Section  
>  Block  
>  Segment 
Table 1-1   Terminology 
2014, Vector Informatik GmbH 
Version: 1.08.06 
13 / 111 
based on template version 5.1.0 


Reference Manual HexView 
2  User Interface 
This chapter describes the user interface and menu items of the program. 
To understand the user interface, some basics of file contents need to be clarified. 
First, an Intel-HEX or Motorola S-Record consists of data assigned to specific addresses. 
The  data  can  be  continuous  from  a  specific  start  address.  A  continuous  data  block  is 
named as a section or segment. Such files can contain one or more data sections. 
 
Figure 2-1  Main Menu of HexView 
The figure above shows the main menu of HexView after a HEX-.File has been loaded. In 
the upper part of the tool the sections of the file are listed. In the example above, the file 
consists  of  2  section2,  named  “Block  0..1”.  For  each  block  the  start  and  end  address  is 
given, as well as the length in hexadecimal and decimal value. 
After the block section description, the data itself are displayed. Two adjacent blocks are 
separated by a blank line (between 00000190 and 0009000). 
A HEX-display line consists of the start address and its data. On the right side, the data is 
partly interpreted as characters if possible (if the data is lower 32, the character is shown 
as a ‘.’). 
Any mouse click with the left button restores the display in the window. 
On the bottom of the window some status information is displayed.  
From left to right: 
  Information about the selected menu option 
  Total number of bytes (decimal) of the currently loaded file (Size=Xxxxx) 
  The file format of the data file that is currently loaded (see section 2.2.1.2.1 for 
possible values). 
2014, Vector Informatik GmbH 
Version: 1.08.06 
14 / 111 
based on template version 5.1.0 



Reference Manual HexView 
2.1 
With a Double Click to the Main Menu 
To edit a hex-line, make a double click on the corresponding line you want to edit. This will 
open the Edit-Line dialog. 
2.1.1 
Edit a HEX data line  
You can edit the line in two different modes. In the upper line the data can be entered in 
hexadecimal mode. In the lower line, the data can be entered as ASCII-characters. The left 
field shows which base address the line is assigned to. 
 
Figure 2-2  Edit-Line dialog 
If only a few characters or hex values are entered, HexView will only change these lines. 
All others will remain. 
2.1.2 
Change the base address of a data block, erase it or jump directly to the 
beginning of the block data 

It is also possible to make a double click onto the block info which is on top of the main 
menu. This opens the block shift address menu: 
 
Figure 2-3  Change the base address of a segment 
This  dialog  allows  you  to  change  the  address  of  a  block.  Simply  enter  the  new  base 
address. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
15 / 111 
based on template version 5.1.0 

Reference Manual HexView 
You can also jump to the beginning of the specified block to display the data by selecting 
the “Goto”-button (Note that it may also shift the address if another value in “New Address 
will be specified). 
It  is  also  possible  to  delete  the  whole  block  from  the  list  by  pushing  the  button  “Erase 
entire block” button. 
2.2 
Menu 
The main menu is grouped into the categories  
  File 
  Edit 
  View 
  Flash Programming 
The  file  menu  operates  directly  on  complete  files.  The  view  menu  allows  searching  for 
options and the Edit menu can operate on the data. 
Each of the elements of the menu will be described now.  
2.2.1 
Menu: “File” 
2.2.1.1 
New 
Closes the current file and restarts a new session 
2.2.1.2 
Open 
This dialog allows to open a data file. Hexview analyses the data container and checks for 
a known format. The resulting data format is displayed in the status line in the bottom area. 
2.2.1.2.1 
Auto-file format analysing process 
The format analyse process uses the following method and order: 
File-format detection  Scan process and order during file-read operation 
>  Fiat File 
Check the filename extension if it is a “.prm” - file, and try to read it as a 
Fiat parameter and BIN-File combination. 
>  GM binary files 
Check the filename extension if it is a “.gbf” - or “.bin” – file, and try to 
(GBF) 
load it in the GM-binary file format. 
>  Binary file, if no 
Read the first line with non-zero length and check if it contains non-
ASCII is found 
ASCII characters. If so, read the file as a binary block 
>  I-Hex if the line 
If the first 25 lines of the file corresponds to an ASCII string and starts 
begins with ‘:’ 
with a ‘:’, the data are read as Intel-HEX. 
>  S-Rec if the line 
If the ASCII-string starts with the character ‘S’ it  will be read as Motorola 
begins with ‘S’ 
S-Record 
>  Ford VBF-File 
Check, if the contains the string “vbf_version”. Load it as VBF-file in that 
case. 
>  Ford I-Hex 
Check if the file contains one of the Ford’s Intel-HEX header information 
and read it as Ford-IHex file. 
>  Binary file in all 
In all other cases, read the file as a binary data input with the base 
2014, Vector Informatik GmbH 
Version: 1.08.06 
16 / 111 
based on template version 5.1.0 



Reference Manual HexView 
File-format detection  Scan process and order during file-read operation 
other cases 
address of 0. 
Table 2-1   Auto-file format detection 
2.2.1.3 
Merge 
This item reads a file and adds the data to the current document data. After selecting this 
item,  a  file-select  dialog  will  open.  You  can  select  any  of  the  files  in  the  format  of  the 
autofile-type selections (see section  2.2.1.2.1). After selsecting the file and pressing OK, 
the following dialog will appear: 
 
Figure 2-4:  Customizing merge data in the merge dialog 
The specified range shows the area of data from the merge file. A smaller range can be 
selected that shall be merged to the current document. An offset can be specified that will 
be applied to each segment that will be merged. The offset can be positive or negative and 
will be added or subtracted. Use a minus-sign to subtract the offset from the base address 
of each segment. 
If the data of the merged file overlaps with the file data, a warning will be displayed. 
 
Figure 2-5  Overlapping data when merging a file 
2014, Vector Informatik GmbH 
Version: 1.08.06 
17 / 111 
based on template version 5.1.0 


Reference Manual HexView 
If “Overwriting existing data” is accepted, the newly read data will overwrite the data that is 
internally present. If this is not accepted, the internal data is kept and just the surrounding 
data is read into the internal memory. 
All filetypes  can  be merged  that  are  also  supported  with  the automatic filetype  detection 
method. 
2.2.1.4 
Compare 
This item provides the means to compare the internal data against the data in an external 
file. The compare option can load the same filetypes as supported with “File open”.  
After selecting this item, a file select dialog will open. Select the file that contains the data 
you want to compare. Afterwards, the file compare dialog will be opened. 
 
Figure 2-6  Compare Info dialog 
The  left  window  displays  the  internal  data,  whereas  the  right  window  displays  the  data 
from  the  external  file.  All  differences  are  marked  in  colors.  Data  sections  that  are  not 
present in the internal or external document are marked with ‘-‘. 
The  green  up-  and  down  arrows  in  the  upper  middle  can  be  used  to  search  for  further 
differences in the file. The next/previous search procedure starts always from the first line 
displayed in the window. 
As mentioned above, the next/prev search algorithm starts from the top line of the window. 
It uses the next/previous line and searches for the next equal data. If equal data found, it 
searches  for  the  next  difference  or  non-presence  of  data.  If  this  is  found,  the  first 
appearance will be displayed on top of the window. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
18 / 111 
based on template version 5.1.0 

Reference Manual HexView 
2.2.1.5 
Save 
After any modification of the data (e.g. modifying a hexline or the base address of a block), 
the  save  option  will  be  enabled.  This  indicates,  that  the  file  has  been  modified.  In  that 
case,  the  “Save”  option  enables  you  to  store  the  data  to  the  current  file  name.  Hexview 
writes the data in the current file format. The current file format is displayed in the status 
line. 
2.2.1.6 
Save as 
Enables you to store the internal data to a file with a different filename. Hexview uses the 
current  file  format  displayed  in  the  status  line.  If  a  file  format  cannot  be  stored  (e.g.  the 
Intel-Hex/Motorola S-Record “Mixed” file type), a warning will be shown and no data can 
be saved. Use the export function of Hexview to store the data in a different format. 
2.2.1.7 
Log Commands 
This option is reserved for future use. It is intended as a certain kind of macro recorder. If 
selected, the “save as” dialog will open. Within it, a log file can be selected. HexView will 
create a new  file or delete the contents  of an existing file.  Once this has been selected, 
some commands will be stored within it.  
The following commands are implemented at the moment: 
 
Command name  Command option 
Description 
FileOpen 
filename 
Opens a file. 
FileClose 

Close the file 
FileNew 

Deletes the current file and creates a new 
object 
 
   
 
 
Table 2-2   Currently available commands in the log-file 
This might be extended in the future. 
The LOG-File commands can be executed through the command line options. 
2.2.1.8 
Import 
The  Import  option  allows  to  read  files  in  different  other  file  formats.  The  following  file 
formats are supported: 
  Motorola S-Record or Intel-Hex data 
  Binary data 
  GM data 
  Fiat data 
  Ford Intel-HEX data 
  Ford VBF-Data 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
19 / 111 
based on template version 5.1.0 

Reference Manual HexView 
2.2.1.8.1 
Import Intel-Hex/Motorola S-Record 
This item is used to provide backward compatibility to the File->Open function available in 
previous versions of Hexview (V1.1.2 or lower). It scans a textfile and analyses each line if 
it is an Intel-HEX or a Motorola S-Record line and reads the data. 
The resulting file type will be displayed in the filetype-area of  the status line (‘S-Record’, 
‘Intel-Hex’ or ‘Mixed’) 
2.2.1.8.2 
Read 16-Bit Intel Hex 
This option reads an Intel-hex file and treats the address and data as 16-bit values. Every 
address information is multiplied by two. Then the data is read into the buffer.  
2.2.1.8.3 
Import binary data 
Reads a data file content as a binary. The data is treated as one binary block starting at 
address 0. The base address can be changed by a double click to the block info line at the 
top of the file. 
2.2.1.8.4 
Import HEX ASCII 
This option provides the ability to read text  information in  HEX ASCII  format. Every byte 
will be represented as a pair or single HEX characters, e.g. 34, 5, F3. All non-HEX-ASCII 
characters like spaces or carriage returns will be dropped and treated as separators. 
The base address of the read operation is always set to 0. 
Note: The current file in the editor is not deleted. So, the HEX ASCII is rather merged to 
the existing one. Use “File -> New” to read in only the ASCII data. 
2.2.1.8.5 
Import GM data 
Reads  a  binary  file  that  contains  the  GM  header  information.  Since  the  header  should 
contain address and length information, all sections can be restored from the file. Note that 
this option can only be used if the file actually contains a GM binary header. 
2.2.1.8.6 
Import Fiat data 
This option reads the file in the Fiat binary format. The Fiat files are split into two files, the 
parameter  file  (*.prm)  and  the  binary  file  (*.bin).  The  parameter  file  contains  section 
information, the checksum, etc. The binary file contains the actual data. HexView reads the 
PRM  file  and  interprets  the  section  information.  Then  it  reads  the  actual  data  from  the 
binary file. 
2.2.1.8.7 
Import Ford IHex data 
Reads  the  header  container  information  used  by  Ford  and  the  following  Intel-HEX 
information from the file. 
All information from the Ford header will be stored in an INI-file. 
2.2.1.8.8 
Import Ford VBF data 
Reads the Ford VBF data file. This version of Hexview manages the vbf-version V2.2.  
All information from the header will be stored in an INI-File. 
2.2.1.8.9 
Import GAC binary file 
Allows to read in GAC binary files. The header information like DCID, S/W version etc. are 
stored  in  an  internal  buffer  and  are  hidden  from  the  user.  The  address  and  length 
information from the binary will be taken to re-construct the memory representation of the 
2014, Vector Informatik GmbH 
Version: 1.08.06 
20 / 111 
based on template version 5.1.0 


Reference Manual HexView 
binary data. Hence, the GAC binary files without address information (e.g. for the  SWIL) 
will not displayed as GAC files and must be handled like binaries. 
 
2.2.1.9 
Export 
This item groups a number of different options to store the internal data into different file 
formats. Each export can contain some options to adjust the output information. 
2.2.1.9.1 
Export as S-Record 
This item exports the data in the Motorola S-Record format. 
 
Figure 2-7  Export data in the Motorola S-Record format 
The  record  type  will  be  selected  automatically  depending  on  the  length  of  the  highest 
address information. 
The  default  values  for  start  and  end  address  will  be  the  lowest  respectively  the  highest 
address of the file. The Output range specifier can be used if just a portion of the internal 
data  shall  be  exported.  The  range  can  be  specified  using  the  start  and  end  address 
separated by a ‘-‘, or can be specified using the start address and length separated by a 
comma.  Several  ranges  can  be  separated  by  a  colon  ‘:’.  Address  and  length  can  be 
specified in hexadecimal with a preceding ‘0x’. Otherwise it is treated as a decimal value. 
Examples:     0x190,0x20:0x9020-0x903f 
The option “Max. bytes per record line” specifies the number of bytes per block for the S-
Record file. The [Browse] option allows to locate the file with the file dialog. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
21 / 111 
based on template version 5.1.0 


Reference Manual HexView 
2.2.1.9.2 
Export as Intel-HEX 
 
Figure 2-8  Export dialog for the Intel-Hex output 
Exports the data in Intel-HEX record format. This opens the following dialog for the export: 
The  address  range  of  the  output  can  be  limited  (see  2.2.1.9.1  for  a  description  on  the 
format and how to use the range specifier).  
Hexview supports two different types of output on the Intel-HEX file format, the extended 
linear segment  and the extended segment. The extended linear segment  can store  data 
with  address  ranges  up  to  20  bits,  whereas  the  extended  linear  segment  format  can 
support  address  ranges  with  up  to  32  bits  (address  ranges  with  up  to  16  bit  length  of 
addresses are not using any extended segments). 
In the auto-mode, the used segment mode depends on the address length of each line. If 
the address length of a line that shall be written exceeds 16 bits, but is lower or equal than 
20 bits, the extended segment will be used. If the size of the address is larger than 20 bits, 
the extended linear segment type will be used. 
Sometimes it is necessary to restrict the number of bytes per record line in the output file. 
This can be adjusted with the “Max bytes per record line” parameter. 
2.2.1.9.3 
Export as HEX-ASCII 
The  internal  data  will  be  exported  as  HEX-ASCII.  Each  byte  will  be  written  as  a  pair  of 
characters. A  separator  between  bytes  can  be  specified  as  well  as  the  number  of  bytes 
that shall be written per line before a newline will be inserted. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
22 / 111 
based on template version 5.1.0 



Reference Manual HexView 
 
Figure 2-9  Export HEX ASCII data 
2.2.1.9.4 
Export as CCP Flashkernel 
This  option  generates  the  internal  data  into  an  Intel-HEX  file,  including  the  data  section 
necessary for the CCP/XCP flash kernel. 
 
Figure 2-10  Export flashkernel data for CCP/XCP 
The section information is directly copied into the FKL-header section. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
23 / 111 
based on template version 5.1.0 



Reference Manual HexView 
The  kernel  header  contains  a  few  information  about  the  kernel  file  name,  both  the 
addresses of the RAM and the start address of the main application in the flash kernel.  
 
 
Note 
The main application of each flash kernel starts with the function: 
  ccpBootLoaderStartup(), ensure FLASH_KERNEL_RAM_START has got the right 
function address. Sometimes the flash kernel location is at the same address like a 
vector interrupt table, to prove this, the developer must add the size of the kernel to the 
FLASH_KERNEL_RAM_START address. For Example here 
FLASH_KERNEL_RAM_START + FLASH_KERNEL_SIZE = 1533. That mean the 
RAM area from 0x1000 – 0x1533 must be clear. 
 
 
FLASH_KERNEL_NAME="xxxxx.fkl" 
FLASH_KERNEL_COMMENT="Flash Kernel for xxxxxx" 
FLASH_KERNEL_FILE_ADDR=0x1000 
FLASH_KERNEL_SIZE=0x0533 
FLASH_KERNEL_RAM_ADDR=0x1000 
FLASH_KERNEL_RAM_START=0x1000 
The parameters of the flash kernel reflect directly the input of the dialog. 
These parameters are also written to an INI-file, so that it can be retrieved the next time 
when this dialog will be opened. An example of the INI-file is shown below: 
[FLASH_KERNEL_CONFIG] 
;FLASH_KERNEL_NAME=”S12D64kernel.fkl” 
FLASH_KERNEL_COMMENT=”CCP Flash Kernel for Star12D64@16Mhz Version 
1.0.0” 
;FLASH_KERNEL_FILE_ADDR=0x039A 
;FLASH_KERNEL_SIZE=0x0426 
;FLASH_KERNEL_RAM_ADDR=0x039A 
FLASH_KERNEL_RAM_START=0x039A 
; or: FLASH_KERNEL_RAM_START=@S12D64Kernel.map:  
ccpBootLoaderStartup                      %lx 
 
 
Note 
FLASH_KERNEL_NAME: If omitted, HexView will use the filename of the loaded file. 
  FLASH_KERNEL_ADDR: If omitted, HexView will use the lowest address of the block 
FLASH_KERNEL_SIZE: If omitted, HexView will use the total size of the block 
FLASH_KERNEL_RAM_START: If omitted, HexView will use the lowest address of the 
block. See also description below. 
 
 
Usually, the value of FLASH_KERNEL_RAM_START must specify the address location of 
the function ccpBootLoaderStartup() in the flash kernel. Since this value can change 
after  changing  the  CCP-kernel  files,  a  special  feature  has  been  added  to  extract  the 
address information from a MAP-file. Even though the implementation is very basic, it can 
be  very  helpful.  A  special  syntax  enables  this  feature.  The  line  must  start  with  the  ‘@’ 
followed by the MAP-file. A ‘:’ separates this information from the following line. This line is 
2014, Vector Informatik GmbH 
Version: 1.08.06 
24 / 111 
based on template version 5.1.0 


Reference Manual HexView 
used for a scan process of the MAP-file. HexView reads every line and tries to interpret the 
MAP-file  line  by  using  the  remaining  parameter  in  an  SSCANF  function  call.  The 
parameter “%lx” must represent the address value of the function ccpBootLoaderStartup. 
If  the  scan  process  was  not  successful,  HexView  will  add  the  complete  line  to  the 
parameter. 
The  example  above  extracts  successfully  the  information  from  the  following  map-file 
(extract of a Metrowerks compiler output): 
MODULE:                 -- boot_ccp.obj – 
- PROCEDURES: 
     ccpBootLoaderStartup                      38EB      1E      
30       0   .text        
 
2.2.1.9.5 
Export as C-Array 
This option writes the data into a C-style file format: 
 
Figure 2-11  Export data into a C-Array 
The array size can be either 8-, 16- or 32-bit. If 16-bit or 32-bit is selected, the output can 
be chosen as either Motorola (big-endian) or Intel (little-endian) style. 
The  array  can  be  exported  as  plain  C-data.  But  it  is  also  possible  to  encrypt  it.  The 
encryption  will  be  an  XOR  operation  with  the  specified  parameter.  The  decryption 
parameter is also given in C-style. 
The data is written into a C-array. The array name will use the prefix given from the dialog. 
If  the  block  contains  several  blocks,  the  data  will  be  written  into  several  C-Arrays.  Each 
block will contain the block number as a postfix. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
25 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
 
Example for the C-File 
/**************************************************************** 
*  Filename:      D:\Usr\Armin\VC\HexView\_page4a.C 
  *  Project:       C-Array of Flash-Driver 
*  File created:  Sun Jan 15 20:59:35 2006 
****************************************************************/ 
 
#include <fbl_inc.h> 
#include <_page4a.h> 
 
#if (FLASHDRV_GEN_RAND!=1739) 
# error “Generated header and C-File inconsistent!!” 
#endif 
 
V_MEMROM0 MEMORY_ROM unsigned char flashDrvBlk0[FLASHDRV_BLOCK0_LENGTH] = { 
  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 
0x0E, 0x0F, 
  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 
0x1E, 0x1F, 
  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 
0x2E, 0x2F, 
  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 
0x3E, 0x3F, 
  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 
0x4E, 0x4F, 
  0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 
0x5E, 0x5F, 
  0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 
0x6E, 0x6F, 
  0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 
0x7E, 0x7F, 
  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 
0x8E, 0x8F, 
  0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 
0x9E, 0x9F, 
  0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 
0xAE, 0xAF, 
  0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 
0xBE, 0xBF, 
  0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 
0xCE, 0xCF, 
  0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 
0xDE, 0xDF, 
  0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 
0xEE, 0xEF, 
  0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 
0xFE, 0xFF 
}; 
 
Example of the Header-File: 
/**************************************************************** 

*  Filename:      D:\Usr\Armin\VC\HexView\_page4a.h 
*  Project:       Exported definition of C-Array Flash-Driver 
*  File created:  Sun Jan 15 20:59:35 2006 
 

****************************************************************/ 
 
#define FLASHDRV_GEN_RAND 1739 
 
#define FLASHDRV_DECRYPTDATA(a)   (unsigned char)a 
#define FLASHDRV_BLOCK0_ADDRESS  0x9000 
#define FLASHDRV_BLOCK0_LENGTH 0x100 
#define FLASHDRV_BLOCK0_CHECKSUM 0x7F80u 
 
extern V_MEMROM0 MEMORY_ROM unsigned char flashDrvBlk0[FLASHDRV_BLOCK0_LENGTH]; 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
26 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
 
Example for the C-File 
/**************************************************************** 
  *  Filename:      D:\Usr\Armin\VC\HexView\_page4a.C 
*  Project:       C-Array of Flash-Driver 
*  File created:  Sun Jan 15 20:59:35 2006 
****************************************************************/ 
 
#include <fbl_inc.h> 
#include <_page4a.h> 
 
#if (FLASHDRV_GEN_RAND!=1739) 
# error “Generated header and C-File inconsistent!!” 
#endif 
 
V_MEMROM0 MEMORY_ROM unsigned char flashDrvBlk0[FLASHDRV_BLOCK0_LENGTH] = { 
 
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 
0x0E, 0x0F, 
 
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 
0x1E, 0x1F, 
 
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 
0x2E, 0x2F, 
 
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 
0x3E, 0x3F, 
 
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 
0x4E, 0x4F, 
 
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 
0x5E, 0x5F, 
 
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 
0x6E, 0x6F, 
 
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 
0x7E, 0x7F, 
 
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 
0x8E, 0x8F, 
 
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 
0x9E, 0x9F, 
 
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 
0xAE, 0xAF, 
 
0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 
0xBE, 0xBF, 
 
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 
0xCE, 0xCF, 
 
0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 
0xDE, 0xDF, 
 
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 
0xEE, 0xEF, 
 
0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 
0xFE, 0xFF 
}; 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
27 / 111 
based on template version 5.1.0 



Reference Manual HexView 
 
 
Example of the Header-File 
/**************************************************************** 
  * 
*  Filename:      D:\Usr\Armin\VC\HexView\_page4a.h 
*  Project:       Exported definition of C-Array Flash-Driver 
*  File created:  Sun Jan 15 20:59:35 2006 
 

****************************************************************/ 
 
#define FLASHDRV_GEN_RAND 1739 
 
#define FLASHDRV_DECRYPTDATA(a)   (unsigned char)a 
#define FLASHDRV_BLOCK0_ADDRESS  0x9000 
#define FLASHDRV_BLOCK0_LENGTH 0x100 
#define FLASHDRV_BLOCK0_CHECKSUM 0x7F80u 
 
extern V_MEMROM0 MEMORY_ROM unsigned char flashDrvBlk0[FLASHDRV_BLOCK0_LENGTH]; 
 
 
The macro [Prefix-name]_DECRYPTDATA() can be used to extract and encrypt the data. It 
will be generated according to the encryption option and value. 
The  output  can  also  generated  via  the  command  line.  Refer  to  section  3.3.3  for  further 
information. 
The declaration of the C-arrays are dedicated to the Vector 28ootloader. In some cases, it 
might  be  necessary  to  use  these  structures  in  a  pure  C-environment  without  compiler 
abstraction used by Vector’s naming convention. Use the “Use strict Ansi-C declaration” in 
this case. 
Another option is to use so-called memmap-statements. Hexview will generate statements 
to delare a define and then include the file memmap.h: 
 
 
Example 
Memmap declarations generated by Hexview: 
  #define FLASHDRV_START_SEC_CONST 
#include “memmap.h” 
 
The file memmap.h may look like this: 
#ifdef FLASHDRV_START_SEC_CONST 
#undef FLASHDRV_START_SEC_CONST 
#pragma section .flashdrv 
#endif 
 
 
2.2.1.9.6 
Export Mime coded data 
This item exports the data file in MIME-coded format with BASE64 coding. 
2.2.1.9.7 
Export Binary data 
This item will write all data contents in the order of their appearance into a binary file. 
All segments will be written linear into the data block 
2014, Vector Informatik GmbH 
Version: 1.08.06 
28 / 111 
based on template version 5.1.0 



Reference Manual HexView 
2.2.1.9.8 
Export binary block data 
This item will export the data into a binary file. However,  if the internal data file contains 
several  blocks,  the  data  is  written  to  different  files.  Each  filename  will  have  the  base 
address as a postfix. 
 
Figure 2-12  Export binary block data 
File output names: 
  _page3_overlap_fe2.bin 
  _page3_overlap_4020.bin 
  _page3_overlap_9000.bin 
 
2.2.1.9.9 
Export Fiat Binary File 
This exports data in the FIAT file format. 
 
Figure 2-13: Export dialog for the FIAT binary file 
2014, Vector Informatik GmbH 
Version: 1.08.06 
29 / 111 
based on template version 5.1.0 

Reference Manual HexView 
The  dialog  shown  above  can  only  be  understood  if  the  Fiat  file  format  is  known.  This 
document  does  not  intend  to  explain  this  file  format.  Refer  to  0728401.pdf  for  further 
explanation. 
During the export, an INI-file will be updated or generated. If the INI-File was specified by 
the commandline, this file will be used. Otherwise, an existing file will be updated or new 
file will be generated with the same name and location as the export filename. For the INI-
file format, refer to section 3.3.2, “Output a Fiat specific data file (/XB)”. 
2.2.1.9.10  Export Ford Ihex data container 
The  file  format  generated  with  this  output  is  based  on  the  Ford-specification  “Module 
Programming  &  Configuration  Design  Specification”,  V  2003.0,  dated:  25  April  2005, 
Annex C. 
Besides the download data itself, there are some optional and mandatory values added to 
the output file. The optional fields can be selected/unselected with the option checkbox. 
All values entered in the dialog below will be written to the INI-File. The INI-file can also be 
used for the command line option to generate the output without the needs of a user input. 
For detailed description of each item of the data fields, refer to the document mentioned 
above. Further information can be found in section 3.3.4.1, “Output Ford files in Intel-HEX 
format”.
 
Information: The file format has been replaced by VBF. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
30 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
Figure 2-14: Export dialog for Ford I-Hex output file 
2.2.1.9.11  Export Ford VBF data container 
The  VBF  file  format  is  the  Versatile  Binary  Format  used  by  Ford  and  VolvoCars.  The 
output of this file is based on the specification “Versatile Binary Format”, V2.2 until V2.5. 
All values entered in the dialog below will be written to the INI-File. The INI-file can also be 
used for the command line option to generate the output without the needs of a user input. 
Refer to section 3.3.4.2, “Output Ford files in VBF format” for further information. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
31 / 111 
based on template version 5.1.0 



Reference Manual HexView 
 
Figure 2-15: Export dialog for the Ford/VolvoCars-VBF data file format 
2.2.1.9.12  Export GM data 
This item is just present to indicate, that the tool also supports GM-data export. In fact, the 
GM data preparation must be done through the commandline option. More information can 
be found in section 3.3.5ff,”Output a GM-specific data file”.  
The GM data container is simply a binary file stream. It can be exported through the binary 
export. 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
32 / 111 
based on template version 5.1.0 


Reference Manual HexView 
Figure 2-16: The output information for the GM data export 
2.2.1.9.13  Export GM-FBL header info 
This  option provides  the possibility  to export  the  address  and  length  information of  each 
segment into an XML-File. Also, the number of segments and the checksum value will be 
written  into  the  XML-file.  If  the  checksum  target  address  is  located  within  the  segment 
array,  the  tool  will  automatically  split  this  region  into  two  to  spare  the  location  of  the 
checksum. Thus, the checksum can be re-calculated. 
The purpose of this output is to read the XML-file into the configuration and generation tool 
“Geny”. It is used to generate the GM-header info for the GM flash Bootloader. It allows the 
Bootloader to calculate the checksum on its own data.  
It  may  require  two  rounds  (generate  the  configuration,  compile  and  link  the  Bootloader, 
generate the XML-file with Hexview) for a valid header. 
 
Figure 2-17: Export dialog to generate the GM-FBL header information for GENy 
The XML-file has the following format: 
<!—Created by HexView v2006 (Vector Informatik GmbH)  
<ECU xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” 
xsi:noNamespaceSchemaLocation=”FBLConfiguration.xsd”> 
    <FBLConfiguration
        <PMA ID=”1”> 
            <Checksum Value=”51434”/> 
            <NumberOfPMA Value=”2”/> 
            <PMAField
              <Address Value=”8380416”/> 
              <Length Value=”1932”/> 
            </PMAField
            <PMAField
              <Address Value=”8388368”/> 
              <Length Value=”240”/> 
            </PMAField
        </PMA
2014, Vector Informatik GmbH 
Version: 1.08.06 
33 / 111 
based on template version 5.1.0 



Reference Manual HexView 
    </FBLConfiguration
</ECU
2.2.1.9.14  Export VAG data container 
This item exports the data into a VAG-compatible data container format. 
 
Figure 2-18  Exports data into a VAG-compatible data container 
 
 
Note 
The generated VAG data file is NOT compatible with the ODX-F format used for UDS. 
 
 
 
The  VAG  data  container  is  a  SGML-file  that  can  be  divided  into  five  sections.  Three 
sections are merged from external files, two others are generated. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
34 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Section 1: 
<!DOCTYPE SW-CNT PUBLIC “-//Volkswagen AG//DTD 
Datencontainer fuer die SG-Programmierung 
 “SGM pre-header file”. 
V00.80:MiniDC08.DTD//GE” “minidc08.dtd”> 
<SW-CNT> 
HexView parses this file and checks, if the fields  <IDENT> 
in [1], [2] or [3] are blank. If not blank, it will copy      <CNT-DATEI>  [1] </CNT-DATEI> 
the contents as is from the file. But if the fields 
    <CNT-VERSION-TYP>cvt_pfu_01</CNT-VERSION-
TYP> 
are left blank, it will be filled with parameters 
    <CNT-VERSION-INHALT>0.80</CNT-VERSION-
from the dialog box: 
INHALT> 
    <CNT-IDENT-TEXT>MyProject</CNT-IDENT-TEXT> 
[1] = filename from “destination file” without the 
    <SW-VERSION-KURZ> [2] </SW-VERSION-KURZ> 
path 
    <SW-VERSION-LANG> [3] </SW-VERSION-LANG> 
</IDENT> 
[2] = the value from “S/W version” 
<INFO> 
[3] = the value from “Part number”
    <ADRESSEN> 
 
      <ADRESSE> 
        <FIRMENNAME>S/W-Development 
GmbH</FIRMENNAME> 
        <ROLLE>Entwicklung VAG-Software</ROLLE> 
        <ABTEILUNG>ESVG</ABTEILUNG> 
        <PERSON>Klaus Mustermann</PERSON> 
        <ANSCHRIFT>Gewerbestrasse 40, D-03421 
Ingolsheim</ANSCHRIFT> 
        <TELEFON>+49-6234-123-456</TELEFON> 
        <FAX>+49-6234-123-200</FAX> 
        <EMAIL>Klaus.Mustermann@sw-
develop.de</EMAIL>
 
      </ADRESSE> 
    </ADRESSEN> 
    <REVISIONEN> 
      <REVISION> 
        <WANN></WANN> 
        <WER></WER> 
        <WAS></WAS> 
        <WARUM></WARUM> 
        <VERSION></VERSION> 
      </REVISION> 
    </REVISIONEN> 
</INFO> 
<ABLAEUFE> 
    <ABLAUF> 
      <ABLAUF-NAME>abn_pfu</ABLAUF-NAME> 
      <KWP-2000> 
        <KWP-2000-TGT>0x62</KWP-2000-TGT> 
        <KWP-2000-REI> 
          <KWP-2000-PSTAT-BIT0>255</KWP-2000-
PSTAT-BIT0> 
          <KWP-2000-PSTAT-BIT1>6</KWP-2000-
PSTAT-BIT1> 
          <KWP-2000-PSTAT-BIT2>10</KWP-2000-
PSTAT-BIT2> 
          <KWP-2000-PSTAT-BIT3>0</KWP-2000-
PSTAT-BIT3> 
          <KWP-2000-PSTAT-BIT4>0</KWP-2000-
PSTAT-BIT4> 
          <KWP-2000-PSTAT-BIT5>0</KWP-2000-
PSTAT-BIT5> 
          <KWP-2000-PSTAT-BIT6>0</KWP-2000-
PSTAT-BIT6> 
          <KWP-2000-PSTAT-BIT7>0</KWP-2000-
PSTAT-BIT7> 
        </KWP-2000-REI> 
        <KWP-2000-ACP> 
          <KWP-2000-P2MIN>0xFF</KWP-2000-P2MIN>  
          <KWP-2000-P2MAX>0xFF</KWP-2000-P2MAX>  
          <KWP-2000-P3MIN>0xFF</KWP-2000-P3MIN>  
          <KWP-2000-P3MAX>0xFF</KWP-2000-P3MAX>  
          <KWP-2000-P4MIN>0xFF</KWP-2000-P4MIN>  
        </KWP-2000-ACP> 
        <KWP-2000-
SA2>0x12,0x23,0x23,0x34,0x45,0x56C</KWP-2000-
SA2> 
      </KWP-2000> 
2014, Vector Informatik GmbH 
Version: 1.08.06 
35 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Section 2: 
      <DATEN-VERWEISE> 
        <DATEN-VERWEIS>FLASHDRV</DATEN-VERWEIS> 
Generated “Data Reference section” 
        <DATEN-VERWEIS>dav_pfu_01</DATEN-
VERWEIS> 
The reference section contains a reference to 
      </DATEN-VERWEISE> 
each segment or block. An external Hex-file can 
be added for reference, e.g. a HIS-flash driver.  It 
is necessary that this hex field contains only one 
segment or block. 
Section 3: 
    </ABLAUF> 
</ABLAEUFE> 
 “SGM post-header file”. 
Section 4: 
        <DATENBLOCK-
NAME>dav_pfu_01</DATENBLOCK-NAME> 
Generated “data section”. 
        <DATENBLOCK-FORMAT-
NAME>dfn_mime</DATENBLOCK-FORMAT-NAME> 
This section contains the current data. On the 
        <START-ADR>0x9000</START-ADR> 
right side an example of the output is shown. 
        <DATENBLOCK-FORMAT>0x00</DATENBLOCK-
FORMAT> 
Start and end address is taken from the block 
        <GROESSE-DEKOMPRIMIERT>0xFA2</GROESSE-
information. The checksum is calculated with the  DEKOMPRIMIERT> 
given checksum method (see section 2.2.2.6 or          <LOESCH-BEREICH> 
         <START-ADR>0x9000</START-ADR> 
3.2.7 for further details on  checksum 
         <END-ADR>0x9FA1</END-ADR> 
calculation). The erase section is calculated out          </LOESCH-BEREICH> 
        <DATENBLOCK-CHECK> 
of the section length. The value of 
         <START-ADR>0x9000</START-ADR> 
<DATENBLOCK-FORMAT> is taken from the 
         <END-ADR>0x9FA1</END-ADR> 
“Data Format ID” field in the dialog box.
         <CHECKSUMME>0xA866</CHECKSUMME> 
 
        </DATENBLOCK-CHECK> 
The <DATENBLOCK-DATEN> contains the data          <DATENBLOCK-DATEN> 
of the block or segment in a MIME
MIME-Version: 1.0 
-coded format.   
WflaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp
7fH1+f4CbgoOE 
hYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6Slpqe
oqaqrrK2ur7Cx 
srO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09T
V1tfY2drb3N3e 
        </DATENBLOCK-DATEN> 
      </DATENBLOCK> 
    </DATENBLOECKE> 
</DATEN> 
Section 5: 
</SW-CNT> 
Appending file contents from „SGM footer file“ 
Table 2-3   Description of the elements for the VAG SGML output container 
It should be noted, that the filename is automatically generated out of the part number and 
the S/W-version fields whenever the fields are changed. You can overwrite the name if the 
filename is changed at last. When editing the filename or [Browse] for a file, the name will 
not automatically adapted. 
It  is  also  possible to preprocess the  data before  it  is  MIME-coded. This  process  is  done 
after the checksum calculation. It is intended to be used for e.g. Data Encryption. 
It uses the standard interface functions from the EXPDATPROC.DLL (refer to section 4.2, 
2.2.2.7 and 3.2.8 for further details). 
INI-File info for VAG export 
The dialog information is stored in an INI-file. This file has the same name as the HEX-file, 
but with the file extension INI. Every time this dialog will be opened, CANflash checks for 
such  an  INI-file  and  retrieves  the  information  from  there.  This  allows  to  store  project 
2014, Vector Informatik GmbH 
Version: 1.08.06 
36 / 111 
based on template version 5.1.0 


Reference Manual HexView 
information in separate files. It is a prerequisite that the INI-file resides in the same folder 
as the HEX-file. 
This INI-File can then also be used in the command line option. 
The following list file shows an example of the INI-file: 
[SGMDATA] 
DATENBLOCKNAME=dav_pfu 
FLASHDRVSECTION=FLASHDRV 
FLASHDRV=D:\Usr\Armin\VC\HexView\FLASHCODE_SH70XXF_704.hex 
SGMHEADERPRE=header1.txt 
SGMHEADERPOST=header2.txt 
SGMFOOTER=footer.txt 
CHECKSUMTYPE=2 
DATAPROCESSINGTYPE=0 
DATAPROCESSINGPARAMETER=1234567890 
PARTNUMBER=123456789ab 
SW_VERSION=cdef 
FLASHDRV_DLID=12 
DATA_DLID=24 
MAXBLOCKLEN=0x400 
 
 
 
Note 
This INI-file is automatically created when executing this dialog. 
 
 
 
 
2.2.1.9.15  Export GAC binary files 
This option allows to write the internal data from Hexview to a GAC binary file. 
The header information will be taken from the INI-file info section and written to the binary. 
With this option it is only possible to write GAC files with address information. 
If  you  want  to  generate  GAC  files  without  address  info,  use  the  commandline  option 
“/xgacswil”. 
 
2.2.1.10  Print / Print Preview / Printer Setup 
There is no special support for printer output other than that from the MFC. Thus, the view 
output will directly sent to the printer. 
2.2.1.11  Exit 
Leaves the program. 
2.2.2 
Edit 
This menu item collects some options that can be used to manipulate data in HexView. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
37 / 111 
based on template version 5.1.0 

Reference Manual HexView 
2.2.2.1 
Undo 
This option is currently not supported by HexView. 
2.2.2.2 
Cut / Copy / Paste 
Hexview  uses  an  internal  clipboard  (not  the  Windows  clipboard).  Cut  and  Copy  can  put 
data into this clipboard. Even if files are closed and others are opened, the data remain in 
clipboard. 
It allows, to cut or copy data regions and put it into the data section. As a new challenge, 
another  syntax  to  specify  range  has  been  introduced.  Different  from  the  other  regions, 
where  start  and  end  address  must  be  specified  as  HEX-values,  the  range  can  now 
specified  in  one  single  string.  The  range  can  be  specified  in  two  ways:  Using  start-  and 
end address or with startaddress and length. 
Start and end address is separated with a ‘-‘ sign. Startaddress and length are separated 
with a ‘,’. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
38 / 111 
based on template version 5.1.0 




Reference Manual HexView 
 
 
Example 
Address range with start and end address: 0x9020-0x903f 
  This specifies start- and end-address in hexadecimal value. A ‘0x’ is required to 
preceed. If ‘0x‘ is omitted, the value is treated as a decimal value. This allows to use 
the parameters in both hexadecimal or decimal values. 
 
Figure 2-19  Example of ‘Copy window’ when Ctrl-C or “Paste” pressed using start- and end-address 
Address range with start address and length: 0x9020,32 
This specifies a range from 0x9020 with length of 32 bytes (0x20 bytes). It is the  
range of 0x9020-0x903f. 
The standard short-cuts (acceleration keys) for delete (del or Ctrl-x), copy (Ctrl-
c) and paste (Ctrl-V) are supported by Hexview. 
 
Figure 2-20  Example of cut-data using start-address and length as a parameter 
Cut or paste can only be used if data are present inside Hexview. 
The  paste-operation  is  activated  when  something  is  present  in  Hexview’s 
internal clipboard. 
When  ‘Paste’    (Ctrl-V)  is  entered,  a  window  will  open  where  the  target  paste 
address can be specified. By default, the clipboard’s start address will be shown 
as a default value. This can be overwritten. An address offset will be applied to 
the pasting range from the clipboard. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
39 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
Figure 2-21: Pasting the clipboard data into the document specifying the target address 
 
 
2.2.2.3 
Copy dsPIC like data 
The dsPIC24/33 has a 24-bit addressing format. The flash memory only contains 3 bytes 
per  4  words.  Direct  data  access  can  be  accomplished  by  addressing  the  lower  2  bytes, 
disregarding the the upper byte. The 4th byte is also known as the ghost byte and is always 
read  as  0.  Since  the  machine  is  a  16-bit  machine,  its  internal  words  are  normally 
addressed  16-bit  wise,  Thus,  address  0x1000  specifies  e.g.  0xABCD,  whereas  0x1001 
then specifies 0x00EF and so on. Intel-HEX or Motorola S-records uses byte addresses. 
The Microchip toolchain generates therefore hexfiles with double address. The values from 
the example above is then represented on address 0x2000 with bytes 00 EF CD AB. 
In somve cases it can be helpful to change the representation in a HEX file from “outer” to 
“inner”  addresses  and  vice  versa.  The  copy  procedure  of  Hexview  allows  to  copy  any 
section from outer addressed (doubled address) to inner (word) address (Shrink option in 
dialog) and vice versa (Expand option in the dialog). 
2014, Vector Informatik GmbH 
Version: 1.08.06 
40 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
Figure 2-22: Copy dsPIC like data 
When expanding data, Hexview will add 2 zero bytes to the expanded location, one for the 
ghost byte and one for the remaining byte. After flashing these data into dsPIC memory, 
the data can be access using a byte pointer to data. The correct data will be read now. 
When shrink operation is used, the upper two high bytes will not copied, only the lower two 
bytes are copied to the new location. 
When selecting the “Clear ghost byte” Copy type, no data will be copied, but the highest of 
the four bytes will be set to 0. This allows to calculate a correct checksum over the data, 
since internally of the dsPIC the ghost byte is always read with 0. 
A target location is only required if the shrink or expand address is not double or half of the 
specified source address. This option is also available through commandline. 
2.2.2.4 
Data Alignment 
Data Alignment  operates  on  the  block  start  address  and  its  length.  This  can  be  used  to 
adjust the start address and length on all blocks/segments. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
41 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
Figure 2-23  Data alignment option 
This option ensures, that the start address of all blocks is a multiple of the segment size 
alignment value. E.g., if this parameter is 2, then HexView ensures that all addresses are 
even (dividable by 2 without remainder). If an odd address is detected, HexView fills bytes 
with the “Fill character” at the beginning of a block until the address is even. 
If  “Align  size”  is  selected,  too,  the  size  of  all  blocks  is  a  multiple  of  the  given  segment 
alignment  value.  If  a  length  of  a  block  is  not  a multiple  of  the  segment  align  value,  a fill 
pattern will be added until the size meets this condition. 
Some export file formats contain separate address and length information used to specify 
the erasable ranges of a flash memory. These address ranges require different alignment 
definition. This align value can be specified in the “Erase segment alignment”. It is mainly 
used  with  Ford-VBF  and  Fiat  binary/parameter  files.  This  value  can  also  be  specified 
through the commandline option /AE. 
2.2.2.5 
Fill block data  
This option provides the ability to fill data regions. This is possible with either random data 
or with a pattern that will be added repetitively. 
Within  the  dialog,  one  or  more  block  ranges  must  be  given.  This  parameter  is  used  to 
generate the block base address and its size. 
The overwrite method specifies how to treat the fill data with the existing data. If the new 
data overlaps, the new data may overwrite it or will be weaved into the existing data as a 
fill pattern. 
The data pattern can either be a random data value or can be filled with a given pattern. 
Here, you can even specify several ranges, each one separated by ‘:’. 
If  you push  the  “Get fill  all  region”  button,  the  Fill  address  range will  be filled  in  with  the 
smallest and largest address of the currently loaded hey data to create a single region file. 
With  the  button  “Get  Geny  block  config”  you  can  read  the  .gny  file  from  geny.  Hexview 
then tries to load the Flash block configuration for the address ranges. That can be used to 
create a test file that fills all known flash blocks for a download. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
42 / 111 
based on template version 5.1.0 


Reference Manual HexView 
You 
may 
have 
to 
generate 

Document 
from 
the 
GENy-component 
“GenTool_GenyPluginConfigDocumentor”.  Make  sure  you  have  selected  the  checkbox 
(Ignore Default Values). 
 
 
Figure 2-24  Dialog that allows to fill data 
2.2.2.6 
Create Checksum 
There are two different methods to allow to operate on the data set of the loaded file info:  
  data processing 
  checksum calculation.  
Data processing operates directly on the data set and change it. The checksum calculation 
operates on the data without changing them. The resulting value can be added to the data 
set. 
The  dialog  above  shows  the  method  to  operate  on the data. The  checksum  range  can 
limit the data section where the checksum calculation operates on. Please note, that you 
can specify only one range. If several ranges are specified using the colon separator, only 
the first one will be used to limit the data area. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
43 / 111 
based on template version 5.1.0 



Reference Manual HexView 
 
Figure 2-25  Dialog to operate the checksum calculation 
The  checksum  type  depends  on  the  capability  of  the  underlying  checksum  DLL.  For  the 
interfaces,  refer  to  section  4.1.  Also,  section  “Checksum  calculation  method 
(/CSx[:target[;limited_range][/no_range])” pro
vides further details on checksum calculation. 
The button [Calculate] will run the calculation and shows the result in the field checksum 
value
. If [Insert] is selected, the checksum calculation will be performed and the result will 
be added to the internal data blocks on the given address. 
2.2.2.7 
Run Data Processing 
The  second  method  that  uses  the  EXPDATPROC.DLL  functions  is  the  data  processing 
field.  As  already  mentioned  in  the  Checksum  calculation  section,  the  data  processing 
directly operates on the internal data.  Most of these operations requires a parameter for 
this operation. Typically, the resulting data is the manipulated data. Therefore, no result of 
the data processing can be inserted or added to the data sections. 
 
Figure 2-26  Dialog for Data Processing 
The  data  processing  allows  to  operate  on  the  data.  Typical  applications  are  data 
decryption/encryption or compression/decompression. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
44 / 111 
based on template version 5.1.0 

Reference Manual HexView 
The  string  value  given  in  the  Parameter  field  is  passed  to  the  routines  for  the  data 
processing.  
The  Data  processing  range  can  limit  the  data  range,  where  the  data  processing  will 
operate on. The parameter will be stored in the registry, to retrieve the information the next 
time this option is activated. Please note, that you can specify only one range. If several 
ranges are specified using the colon separator, only the first one will be used to limit the 
data area. 
See  also  section  4.2  for  further  details  on  the  DLL-interface.  Please,  read  also  section 
“Run Data Processing interface (/DPn:param[,section,key][;outfilename])” for more details 
on available data processing functions. 
Some  data  processing  options  allow  to  use  a  file  that  contains  the  parameter.  You  can 
browse for the specific file using the “Browse” button. 
2.2.2.8 
Edit/Create OEM Container-Info 
This option is currently not available. 
2.2.2.9 
Remap S12 Phys->Lin 
This  option  is  used  to  remap  all  blocks  from  physical  paged  addressing  to  the  linear 
address mode. It is dedicated to be used with HEX-files with paged address information for 
the  Motorola  Star12  (MC9S12  family).  The  Star12  paged  addressing  mode  uses  24-bit 
addresses,  where  the  upper  8-bit  specifies  the  bank  address  in  the  range  from  0x30  to 
0x3F.  The  lower  16-bit  address  is  the  physical  bank  address  in  the  range  from  0x8000-
0xBFFF.  These  address  ranges  are  shifted  to  the  linear  addresses  starting  from 
0x0C.0000 for Bank 0x30 up to the highest address 0xF.FFFF.  
The non-banked addresses from 0x4000-0x7FFF and 0xC000-0xFFFF are mapped to the 
linear address range of the corresponding pages (0x4000-0x7FFF mapped to 0x0F.8000-
0x0F.BFFF  [Bank  0x3E]  and  0xC000-0xFFFF  mapped  to  0x0F.C000-0x0F.FFFF  (Bank 
0x3F]). See also chapter 3.2.20 for further explanations. 
2.2.2.10  Remap S12x Phys->Lin 
This  option  is  used  to  remap  all  blocks  from  physical  paged  addressing  to  the  linear 
address mode. It is dedicated to be used with HEX-files with paged address information for 
the Motorola Star12X (MC9S12X family). The Star12X paged addressing mode uses 24-
bit addresses, where the upper 8-bit specifies the bank address in the range from 0xE0 to 
0xFF.  The  lower  16-bit  address  is  the  physical  bank  address  in  the  range  from  0x8000-
0xBFFF. These address ranges are shifted to the linear addresses starting from 0x78.0000 
for Bank 0xE0 up to the highest address 0x7F.FFFF.  
The non-banked addresses from 0x4000-0x7FFF and 0xC000-0xFFFF are mapped to the 
linear address range of the corresponding pages (0x4000-0x7FFF mapped to 0x7F.4000-
0x7F.7FFF  [Bank  0xFD]  and  0xC000-0xFFFF  mapped  to  0x7F.C000-0x7F.FFFF  (Bank 
0xFF]). See also chapter 3.2.20 for further explanations. 
2.2.2.11  General Remapping 
This option can be used to remap any banked address information into a linear address 
range, e.g. for the Motorola MCS08 or NEC 78k0. 
Detailed information about banked and linear addresses can be found in chapter 3.2.20. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
45 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
Figure 2-27: Configuration window for general remapping 
2.2.2.12  Generate file validation structure 
This  menu  item  provides  a  powerful  way  to  generate  a  validation  structure  over  the 
complete  download  data. The  purpose  is  to  generate  a  list  of  target  address  and  length 
information that can be located  at a specific address within the flash memory. The target 
location  can  be  used  to  verify  the  complete  that  all  download  information  is  available  in 
your target memory. This validation information must be spared out from this range. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
46 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
Figure 2-28  Generate the validation structure for your target memory. 
The following options are available: 
  Target address: 
The fixed address where the validation structure shall be placed into the currently 
open file. 
  External C-structure   
A  C-file  and  header  will  be  generated  that  helps  you  to  access  all  the  individual 
elements of the generated structure 
2014, Vector Informatik GmbH 
Version: 1.08.06 
47 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
Example 
Below is an example of the generated C and H-file: 
   
_page3a.h
/*************************************************************** 
*  Filename:      D:\uti\_page3a.h 
*  Project:       Header-File for validation structure 
*  File created:  Tue Mar 11 19:59:54 2014 
****************************************************************/ 
 
#ifndef ___PAGE3A_H__ 
#define ___PAGE3A_H__ 
 
/* Structure describing a single block info */ 
typedef struct tVsBlockInfo { 
  unsigned short blockAddress; 
  unsigned short blockLength; 
  unsigned short blockChecksum; 
} tVsBlockInfo; 
 
typedef struct tValidateInfo { 
  unsigned short tagBegin; 
  unsigned char  blockCount; 
  tVsBlockInfo   blockInfo[1]; 
  unsigned long  fileChecksum; 
  unsigned short tagEnd; 
  unsigned short validateSum; 
} tValidateInfo; 
 
/* Extern definition of the data generated structure */ 
#define VALIDATEINFO_START_SEC_CONST_EXPORT 
#include "memmap.h" 
 
extern const tValidateInfo ValidateInfo; 
 
#define VALIDATEINFO_STOP_SEC_CONST_EXPORT 
#include "memmap.h" 
 
 
#endif 
 
_page3a.c
/**************************************************************** 
*  Filename:      D:\uti\_page3a.c 
*  Project:       C-File for validation structure 
*  File created:  Tue Mar 11 19:59:54 2014 
****************************************************************/ 
 
#include "_page3a.h" 
 
#define VALIDATEINFO_START_SEC_CONST 
#include "memmap.h" 
 
const tValidateInfo ValidateInfo = { 
  0x1234u,    /* Magic Tag begin */ 
  1   /* Number of block elements */ 
  ,0x9000u, 0xFA2u, 0xE321 
  ,0xA893AF42ul    /* Total file checksum*/ 
  ,0x4321u    /* Magic Tag end */ 
  ,0x2F0u /* 16-bit byte-sum on validation area. */}; 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
48 / 111 
based on template version 5.1.0 

Reference Manual HexView 
#define VALIDATEINFO_STOP_SEC_CONST 
#include "memmap.h" 
 
 
  Word type:   
This specifies the endianess for 16- and 32-bit fields of the generated data structure 
  ID tag begin:  
Will  be  placed  at  the  beginning  of  the  address/length  list.  This  can  be  used  to 
uniquely identify if the address/length field is actually present there. 
  Data source:.  
For sure, the internal data of Hexview will be used. A limited range of the data can 
be  specified.  In  addition,  a  range  can  be  specified  if  an  address  range  shall  be 
spared  out.  It  could  be  useful  to  add  also  address/length  information  from  other 
files.  These  files  can  be  specified  In  the  file  list  as  well.  Hexview  will  scan  the 
address/length information and will add it to the list, and also calculate its checksum 
if soecified. 
  Block Checksum: 
If  checked,  Hexview  will  calculate  and  add  the  specified  checksum  to  each 
address/length field. 
  Total checksum:   
if checked, a checksum/CRC will be calculated over the complete set of data. This 
checksum can be calculated in addition or instead to the block checksum values. 
  ID tag end:  
Here  you  can  specify  a  magic  number  that  indicates  the  end of  the  list.  It  can be 
used to verify if the complete validation list is present. 
  16-bit byte checksum:   
This is a checksum that is generated over the complete validation array. It can be 
used in addition to check if the complete validation structure is present. 
When generating the data, all parameters will be written to the INI-file. This INI-file can be 
used for the commandline option. 
 
2.2.2.13  Run Postbuild 
This  option  allows  to  scan  for  postbuild  files.  Typically,  a  postbuild  file  contains  address 
and  length  information  as  well  as  data  information  which  shall  be  used  to  overwrite  the 
current  contents  within  a  hexfile.  With  Hexview  V1.6  and  higher  it  is  even  possible  to 
create segment blocks based on the information in a postbuild file. 
Note, that the postbuild option is only available if the pbuild.dll is available. After selecting 
the item Edit -> Run postbuild, you can select one or more XML files that follows the data 
scheme for postbuild. Normally, the postbuild files will be generated by Geny. If you need 
further information about the postbuild options, please contact Vector. 
2.2.3 
View 
This menu item provides some features to control the view. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
49 / 111 
based on template version 5.1.0 



Reference Manual HexView 
2.2.3.1 
Goto address… 
This item allows to jump to a specific address within the view. 
 
Figure 2-29: Jump to a specific address in the display window 
If the address is valid, the slider will be moved to the beginning of the address. Thus, the 
address information will be shown on the top of the display. The line is not highlighted. 
A way to jump to the beginning of an address block can be done by jump to the beginning 
of the file (press POS1 or Ctrl-Pageup button) 
2.2.3.2 
Find record 
This option allows to search for a pattern within the file. 
 
Figure 2-30: Find a string or pattern within the document 
The format of the pattern can be selected on the right side of the window. By default, the 
data pattern is given as a hexadecimal data byte stream. The search algorithm searches 
from the beginning until the presence of this pattern is found. HexView tries to display the 
value on the top of the screen. If a pattern has been found, the search can be repeated 
from the last position where the pattern has been found. 
If the “Find-string format” is changed to “ASCII-string”, the pattern entered in “Find what” 
will be treated as an ASCII pattern and will search for the ASCII values. 
2.2.3.3 
Repeat last find 
This option is only present after a successful search operation. This item will continue the 
search given from “View -> Find record”. 
2.2.3.4 
View OEM container info 
This  option  was  implemented  to  present  some  OEM-specific  information  available  in  the 
file. However, at the moment only the GM header information will be shown. 
This may be extended in the future. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
50 / 111 
based on template version 5.1.0 


Reference Manual HexView 
2.2.4 
Flash Programming 
This menu item is directly related to the flash process. 
2.2.4.1 
Scan CANoe trace log 
This menu allows you to backtrace a download of CAN data. You need an ASCII-based log 
file from CANoe. 
 
Figure 2-31:  Dialog to run a CANoe trace 
You  need  to  go  through  the  menu  step-by-step.  First,  you  need  browse  for  the  CANoe 
trace file, which normally has the file extension “.ASC”. Then, select the channel. Hexview 
will  show  the  available  channel  numbers  in  the  list  box.  Then  select  the  functional  and 
physical CAN identifier. Also here, Hexview will show you all available CAN IDs found in 
the trace file. 
Not only UDS downloads are supported, but also KWP2000 and GMLAN. Pre-select the 
desired option before running the scan. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
51 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Select  the  checkbox  “Scan  Data”  if  the  resulting  data  information  shall  be  scanned  and 
placed into the memory buffer. Now you can run the trace by clicking on the “Run Trace” 
button. An output window like shown above can be seen. Depending on the “log verbosity 
level”,  more  or  less  information  per  trace  can  be  seen.  The  internal  Transport  layer 
analyser  will  analyse  the  timing  of  each  service  and  indicated  in  the  list  box.  The 
information can be stored into a CSV file through the “Save log” button, to further process 
this with a spreadsheet. 
After finishing the trace you can exit through the “Exit” button. But if you have selected the 
“Scan data” checkbox and the trace ran successfully,  you can also  leave using the “Exit 
and insert scan” button. Then, all scanned data will be placed into the memory buffer with 
the  specified  addresses,  length  and  data  found  in  the  RequestDownload/TransferData 
services. 
2.2.4.2 
Build ID based EEP download file. 
This  option  is  intended  to  be  used  to  create  an  address  based  data  file  with  EEPROM 
information. Each segment in the memory represents one entry of an EEPROM block. The 
virtual  address  space  shall  address  a  special  driver  that  extracts  the  block  number  and 
data from each record and writes the data to an EEPROM emulation. 
Hexview takes the information from an XML-file with the following format: 
<?xml version=”1.0”?> 
<DataFlash> 
  <AdministrativeSection> 
   
<SectionSize>0x0800</SectionSize> 
   
<Offset>0x0000</Offset> 
   
<VirtualBaseAddress>0x100000</VirtualBaseAddress> 
   
<IdMultiplier>256</IdMultiplier> 
  </AdministrativeSection> 
  <Record> 
   
<ID>0x80</ID> 
   
<Length>4</Length> 
   
<Data> 
   
   0x47, 0x48, 0x49, 0x4a 
   
</Data> 
  </Record> 
  <Record> 
   
<ID>0x81</ID> 
   
<Length>8</Length> 
   
<Data> 
   
   0x20, 0x30, 0x31, 0x32, 
   
   0x40, 0x40, 0x41, 0x42 
   
</Data> 
  </Record> 
</DataFlash> 
Each  record  consists of  its  ID,  length  and  data. The  block  address  of  a  segment  will  be 
created by the formula: 
 
<VirtualBaseAddress> + <IdMultipler> * <ID> 
The above example generates the following output: 
2014, Vector Informatik GmbH 
Version: 1.08.06 
52 / 111 
based on template version 5.1.0 



Reference Manual HexView 
 
Figure 2-32:  Example output for building ID based download files. 
The offset and SectionSize information is not used and just present for compatibility. 
2.2.4.3 
Scan EepM data section 
The EepM is a software component from Vector to emulate EEPROM in data or program 
flash. If EepM has written data into a flash memory, it is often difficult to re-trace the block 
information. This option is used to provide the possibility to upload the memory contents of 
the flash memory into a HEX file and then let Hexview trace back the block number, length 
and information and put the results into an XML file. 
 
Figure 2-33: Scan EepM dialog and example 
The above picture shows the flash memory data in the background and the dialog for scan 
in  the  foreground.  You  need  to  specify  the  flash  segment  size  (flash  sector  size,  the 
minimum write unit of the flash memory), but also specify the range of data and the XML 
output file.  
If the scan could be executed successfully, an output fiel as shown below can be seen: 
2014, Vector Informatik GmbH 
Version: 1.08.06 
53 / 111 
based on template version 5.1.0 

Reference Manual HexView 
<?xml version=”1.0”?> 
<DataFlash> 
   <AdministrativeSection> 
      <SectionSize>0x2</SectionSize> 
      <Offset>0x0000</Offset> 
      <VirtualBaseAddress>0x400</VirtualBaseAddress> 
      <IdMultiplier>1</IdMultiplier> 
   </AdministrativeSection> 
   <Record> 
      <ID>12</ID> 
      <Length>17</Length> 
      <Data> 
           0x10, 0x4D, 0x16, 0x0F,  
   
   0x10, 0x11, 0x02, 0x03,  
   
   0x04, 0x05, 0x06, 0x07,  
   
   0x08, 0x09, 0x0A, 0x0B,  
   
   0x0C 
      </Data> 
  </Record> 
   <Record> 
      <ID>13</ID> 
      <Length>17</Length> 
      <Data> 
           0x10, 0x4E, 0x17, 0x0D,  
   
   0x0E, 0x0F, 0x10, 0x11,  
   
   0x02, 0x03, 0x04, 0x05,  
   
   0x06, 0x07, 0x08, 0x09,  
   
   0x0A 
      </Data> 
  </Record> 
   <Record> 
      <ID>11</ID> 
      <Length>1</Length> 
      <Data> 
           0xFD 
      </Data> 
  </Record> 
</DataFlash> 
 
2.2.5 
Info operation (?) 
This option contains the About information of HexView. It shows the version of the tool and 
displays also the copyright information.  
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
54 / 111 
based on template version 5.1.0 

Reference Manual HexView 
2.3 
Accelerator Keys (short-cut keys) 
Some of the menu items mentioned above can be entered by hotkeys or accelerator keys. 
This can be helpful to activate functions from the keyboard without using the menu and the 
mouse. 
The following table provides a list of available accelerator keys: 
Accelerator key 
Description 
Ctrl+A 
Align data 
Ctrl+B 
Run postbuild configuration 
Ctrl+C 
Copy data to the internal clipboard 
Ctrl+D 
Data Processing 
Ctrl+F 
Find record 
Ctrl+G 
Goto address 
Ctrl+K 
Open checksum calculation dialog 
Ctrl+L 
Opens the fill data dialog 
Ctrl+N 
File new 
Ctrl+O 
Open file 
Ctrl+P 
Print file 
Ctrl+S 
Save current file 
Ctrl+T 
Generate validation structure information 
Ctrl+V 
Paste data from clipboard into the currently 
loaded document 
Ctrl+X 
Remove data from current document and put 
them into the internal clipboard 
Alt+A 
Export as HEX-ASCII 
Alt+B 
Export Fiat binary 
Alt+C 
Export C-Array 
Alt+E 
Export Ford Intel-HEX format 
Alt+F 
Export Ford VBF format 
Alt+G 
Export GM file format 
Alt+I 
Export Intel-HEX 
Alt+L 
Export GM-FBL data 
Alt+M 
Export MIME-Data 
Alt+N 
Export Binary data 
Alt+S 
Export S-Record 
Alt+V 
Export VAG-Data 
Alt+Y 
Export splitted binary file. 
F3 
Repeat last find 
Alt+F4 
Exit application 
DEL 
Delete a range from the currently loaded 
2014, Vector Informatik GmbH 
Version: 1.08.06 
55 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Accelerator key 
Description 
document 
Table 2-4   Accelerator keys (short-cut keys)  available in Hexview 
2014, Vector Informatik GmbH 
Version: 1.08.06 
56 / 111 
based on template version 5.1.0 

Reference Manual HexView 
3  Command line arguments description 
HexView cannot only be used as a PC-program with a GUI to display information. It is also 
possible  to  manipulate  the  data  via  command  line.  There  are  even  some  options  only 
available through command lines. 
The following section describes the usage of the command line. 
The command line can be grouped roughly into two groups: general options that operates 
generally and OEM-related command line options. The OEM command line options control 
the generation of files in OEM specific file formats. 
3.1 
Command line options summary 
This section provides a summary of all command line options. An option must start either 
with a ‘/’ or a ‘-‘. In this description, a slash is used. The switches are not case-sensitive. 
Some  options  require  additional  parameter  information.  Some  parameters  are  followed 
directly  by  the  option,  some  others  require  a  separator. The  separator  can  either  be  the 
equal-sign or a colon. 
 
Hexview infile  [options] [-o outfile] 
 
Command line option 
Description 
Infile 
This is the input filename either in Intel-HEX or 
Motorola S-Record format  
/Ad:xx 
Align data. Xx is specified in standard-C 
/Adyy 
notation, e.g. 0xFF, whereas yy are only hex-
digits. Format is distinguished by the 
separator ‘:’ or ‘=’. 
/AE:zzzz 
Specify AlignErase section size, e.g. for VBF 
or Fiat Erase sections aligned to a multiple of 
this value. 
/AL 
Align length.  
/Afxx 
Specifies the fill character for /AL, /AD and /FA 
as hexadecimal value 
/Af:xx 
Same as above: specifies the fill character for 
/AL, /AD, but xx can either be specified as 
decimal (no suffix), hex value (0x-suffix) or 
binary (b-suffix) 
/AR:’range’1 
Load a limited range of data. 
The ‘range’ is an address range, that can be 
specified in two ways: either with start address 
and length, separated by a comma, or with 
start address and end address, separated by 
a minus-sign. 
/cdspx:range[;target][:range[;target]] 
Expand dsPIC like data from range (0x1000-
0x103ff/0x1000,0x400) to the target address. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
57 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Command line option 
Description 
If target is not specified, the doubled address 
(0x2000) will be used  (see section “Copy 
dsPIC like data”
). 
/cdsps:range[;target][:range[;target]]… 
Same as /cdspx, but it’s the shrink operation 
(see section “Copy dsPIC like data”) 
/cdspg:range[:range]… 
Clear ghost byte in the specified range. 
/CR:’range1’:’range2’:… 
Cut out data ranges from the loaded file 
/CSxx:target[;limited_range]  
This option specifies the checksum calculation 
    [/exclude_range1]  
method. If the optional location parameter is 
    [/exclude_range2]  
added, the checksum value is written into this 
    [:target[;limited_range] 
file. The result can also be placed into the file 
    [/exclude_range1] 
using the @ operator.  
    [/exclude_range2]]… 
Note: ‘location’ is a pre-requisit in most cases. 
/DLS=AA or /DLS=ABC 
This option is used in combination with the 
/XG group option to specify the DLS code and 
length. 
The DLS code can be 2 or 3 characters. A ‘=’ 
is required between the option and the 
characters itself.  
Do not use this option for GM cyber security 
files. 
/DCID=0x8000 
This option is used in combination with the 
/DCID:32238 
/XG group option to specify the DCID code. 
The value can be represented in integer or 
hexadecimal. In the latter case, a ‘0x’ must 
preceed the value. The value is treaded as a 
16-bit value and will be added to the header 
when creating the GM-header. 
Do not use this option for GM cyber security 
files. 
/DPn:param 
Run the data processing interface from 
expdatproc.dll. The value ‘n’ specifies the 
method, ‘param’ is used as the string 
parameter to the DoDataProcessing function 
(see section 3.2.8 for parameter details). 
/E=errorfile 
This specifies an error log file. HexView can 
/e:errorfile 
run in silent mode. In that case, no error will 
be displayed to the GUI. However, error 
messages are also suppressed. This option 
allows an error report to the file in the silent 
mode. 
/FA 
Create a single region file (fill all) 
/FR:’range1’:’range2’:… 1 
Fill regions. 
/FP:11223344 
Fill pattern in hex. Used by the /FR parameter 
/II2=filename.hex 
Special import for 16-bit addressed Intel-HEX 
files 
/IA=filename[;startAddress] 
Read Hex data from a file. Startaddress 
2014, Vector Informatik GmbH 
Version: 1.08.06 
58 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Command line option 
Description 
specifies the address of the block.Cannot be 
combined with infile. 
/L:logfile.log 
Load and execute a commandfile 
/M:path-to-licensefile 
Specify a path to the license.liz file (if not 
specified, hexview looks in its own folder). 
/MPFH[=cal1.hex+cal2.hex+…] 
Special option for /XG. Sets the MPFH flag 
and optionally adds the address, length and 
DCID-info to the GM-header. 
/MPFH must be specified if an existing NOAM-
field shall be re-positioned adjacent to the new 
NOAR-field. 
Do not use this option for GM cyber security 
files. 
/MODID:value 
Special option for GM-header creation. Sets 
the Module-ID for this header. 
Do not use this option for GM cyber security 
files. 
/MO:file1[;offset] 
Merges the file(s) from the filelist into the 
  [+file2][;offset] 
memory in Opaque mode (existing data will be 
overwritten). The optional offset may be added 
to all addresses of the file that is merged. 
File names can have wildcards such as ? or *. 
/MT:file1 
Merges the file(s) or portions of it from the 
  [;offset][:range1] 
filelist into the memory in transparent mode 
  [+file2][;offset][:range1] 
(existing data not overwritten). The optional 
offset will be applied to all addresses of the file 
that is merged. The range limits the  before 
the offset  
File names can have wildcards such as ? or *. 
-o outfilename 
Specifies the output filename. The filename 
must follow directly the –o option separated 
with a blank character. 
/P:ini-file 
Specifies the path and file for the INI-
information partly used by some conversion 
routines. 
/PB:”PostbuildXML-file1”;”XML-File2”;… 
Applies Postbuild operation to the specified 
file. 
/PN 
Add part number to the GM-header. This 
option is only useful in combination with /XGC 
or /XGCC. The part number must not be 
specified and will be taken from the SWMI 
value. 
Do not use this option for GM cyber security 
files. 
/remap 
This option was intended to be used for 
  [:range,bankbase,banksize,linearbase] 
controllers using a memory banked 
 
addressing scheme. The option calculates 
2014, Vector Informatik GmbH 
Version: 1.08.06 
59 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Command line option 
Description 
from physical banked addressing to a linear 
addressing scheme. 
One of the most popular controllers using 
banked method, the Star12 and Star12x, is 
directly supported with the special option 
/s12map resp. /s12xmap (see below). 
/swmi:value 
Specifies the SWMI parameter when creating 
the GM-header 
Do not use this option for GM cyber security 
files. 
/s 
Run HexView in silent mode. 
/s08map 
Re-maps the physical address spaces of the 
Freescale Star08 to its linear address spaces, 
e.g. maps segments in the range of 0x4000-
0x7FFF to 0x104.000 or from 0x02.8000-
0x02.BFFF to 0x10.8000-0x10.BFFF and so 
on. 
/s12map 
Re-maps the physical address space to the 
linear address space of the Freescale Star12 
to its linear address spaces, e.g. maps 
segments in the range of 0x4000-0x7FFF to 
0xF8000 or from 0x308000-0x30BFFF to 
0xC0000-0xC3FFF and so on. 
/s12xmap 
Re-maps the physical address space to the 
linear address space of the Freescale Star12x 
to its linear address spaces, e.g. maps 
segments in the range of 0x4000-0x7FFF to 
0x7F4000-0x7F7FFF or from 0xE08000-
0xE0BFFF to 0x780000-0x783FFF and so on. 
/swapword 
Swaps the byte on an even address with its 
successor. AA BB becomes BB AA. 
/swaplong 
Swaps 4 bytes on longword addresses. AA BB 
CC DD becomes DD CC BB AA 
/tms570-parity 
Generates the parity data for the TMS570 
flash file 
/tms570-ECC 
Generates the ECC data for the TMS570 flash 
file. 
/vs 
Create validation structure. All necessary 
information are provided through an INI-file. 
See section 3.2.21 for further details. 
/XA[:Linelen[:ExportSeparator]] 
Exports the data as HEX ASCII data. Use 
doublequotes if separator shall contain 
spaces. 
/XB 
Outputs the data in the Fiat binary format 
including the PRM- and BIN-file . 
/XC 
Outputs the data into a C-like array. All 
configuration options are provided through an 
2014, Vector Informatik GmbH 
Version: 1.08.06 
60 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Command line option 
Description 
INI-file. 
/XF 
Exports data in the Ford-HEX specific file 
format. Adds the Ford header information  and 
data in an Intel-HEX like file format. 
/XGAC 
Exports data into a GAC binary file format. 
The data information will be taken from an INI-
file. Address and length information will be 
added accordingly. 
/XGACSWIL 
Like the /XGAC export option, but the 
address/length information will not be added. 
Typical use-case for the SWIL (software 
interlock). 
/XG[:header-address] 
Completes the information in an existing GM-
header 
/XGC[:header-address] 
Generates the GM-file header and completes 
the information. 
/XGCC[:header-address] 
Generates the header information for a single-
region calibration file. 
/XGCS 
Generates the header, but with a 1-byte HFI 
information (backward compatibility with 
previous “SAAB”-specific header). 
/XGC_APP_PLAIN 
Generate the GM file header applicable for 
/XGC_APP_SIGN 
GM Cyber security. 
/XGC_CAL_PLAIN 
/XGC_CAL_SIGN 
/XML:xml-file 
Specifies an XML file used for some additional 
command options (mainly for the new GM 
header generation) 
/XGMFBL 
Exports the GM-FBL XML-data file 
/XI[:reclinelen[:rectype]] 
Exports in Intel-HEX format 
/XK 
Outputs the data into an FKL-file for CCP/XCP 
kernel 
/XN 
Exports data into the binary file format 
/XP 
Exports data into a single region binary file 
and appends a checksum. Typically used by a 
Porsche download (KWP2000). 
/XS[:reclinelen[:rectype]] 
Exports in Motorola S-Record format 
/XSB 
Export each section of a hex file into a binary 
file. The start address of the block is used as a 
postfix for the binary name. 
/XV 
Outputs the VAG-compatible SGML file 
format. 
/XVBF 
Generates the Ford-specific VBF file format. 
All parameters are specified through an INI-
file. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
61 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Table 3-1   Command line options summary 
1  A range defines a section area. It can be entered in two ways, either with start address 
and  length  or  with  start  address  and  end  address.  Examples  are:  0x1000,0x200  or 
0x1000-0x11FF.  Both  parameters  spans  the  same  range  and  will  be  treaded  the  same 
way. Note that the end address must be higher than the start address. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
62 / 111 
based on template version 5.1.0 



Reference Manual HexView 
 
 
Note 
Parameter /Xx cannot be combined. /Xx can be specified only once in the parameter 
  list. 
/Mt and /MO cannot be combined as well. 
 
 
3.2 
General command line operation order 
 
Figure 3-1  Order of commandline operations within Hexview. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
63 / 111 
based on template version 5.1.0 



Reference Manual HexView 
The  commandlines  can  be  specified  in  any  order.  Hexview  will  first  summarize  the 
commandline  operations  and  will  then  execute  them.  Since  some  operations  may  have 
influences to subsequent operations, the commandline operation sequence within hexview 
is important to know. The following commandline sequence will be applied (if specified): 
This  section  describes  command  line  options  of  HexView,  that  can  be  used  in  general. 
There is no restriction or limitation in the combination of the options (as long as they are 
useful). 
3.2.1 
Align Data (/ADxx or /AD:yy) 
The start address of each block will be aligned to multiples of the given parameter xx. If 
the separator ‘:’ or ‘=’ is omitted, the parameter xx is a hexadecimal value. If the separator 
is  used,  the  value  xx  is  interpreted  in  C-style,  e.g.  /AD:0xFF  is  the  same  as  /AD:255  or 
/AD:11111111b. This value can only be an unsigned char value. 
 
 
Example 
/AD2       

  Aligns address to be a multiple of 2.  
If a block starts at 0xFE01 a fill byte will be inserted at 0xFE00. The inserted character 
will be 0xFF by default. The default character can be overwritten with the /AF 
parameter.    
An address starting at 0xE000 will be left unchanged. No characters are inserted. 
 
/AD:0x80     
Align the addresses of all sections to a multiple of 128   
If an address starts at e.g. 0xE730, the address will be aligned to 0xE700. 
 
 
3.2.2 
Align length (/AL[:length]) 
This option is useful in combination with the /AD parameter. It aligns also the length of all 
blocks to be a multiple of the parameter given in the /Adxx option. The option corresponds 
to the “Align size” option in section 2.2.2.4: “Data Alignment”. 
 
 
Example 
/AD4 /AL
 
  A block 0xE432-0xE47E will be aligned to 0xE430-0xE47F. All characters will be filled 
with 0xFF or the value specified by /Afxx. 
 
 
3.2.3 
Specify erase alignment value (/AE:xxx) 
This parameter specifies the erase alignment parameter. This value is used to align data 
blocks that specifies erase blocks for certain output file formats for Ford and Fiat. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
64 / 111 
based on template version 5.1.0 




Reference Manual HexView 
 
 
Example 
/AE:0x200
     
  Erase blocks are always aligned to multiples of 0x200 
 
 
3.2.4 
Specify fill character (/AF:xx, /AFxx) 
This option specifies the fill character used for the align options (/AL, /AD or /FA). If the fill 
parameter is located directly after the option, it is treaded as a hex-string. If the parameter 
is  separated  by  a  colon,  the  parameter  must  use  the  C-convention  for  characters,  e.g. 
0xCC for hexadecimal values.  
Important: Distinguish if a colon or equal-sign is in-between the option field or not. If the fill 
value follows directly the /AF option, then xx is always treated as HEX value. If you put a 
colon  or  equal  in-between,  it  can  be  either  dec,  hex  or  binary  like  “128dec”,  “0xAAhex”  or 
“b01001100bin”. Thus, /AFdd is the same as /AF:0xdd or /AF:221,. 
This option corresponds to the “Fill character” in section 2.2.2.4: “Data Alignment”. 
 
 
Example 
/AF:0xEF   
 
  Fill character is 0xEF 
/AFCD     
Fill character is 0xCD 
 
 
3.2.5 
Address range reduction (/AR:’range’) 
This option can limit the range of data to be loaded into the memory. This is useful if only a 
reduced range of data shall be processed within HexView.  
An address range is specified by its block start address and its length. Address and length 
are  separated  by  a  comma.  You  can  also  specify  the    range  with  the  start  and  end 
address. Then, the two values must be  separated by ‘-‘. 
 
 
Example 
/AR:0x1000,0x200
 
  Only the data between 0x1000 and 0x11FF are loaded to the memory and then further 
processed. 
/AR:0x7000-0x7FFF 
This loads the data from 0x7000 to 0x7FFF 
 
 
3.2.6 
Cut out data from loaded file (/CR:’range1[:’range2’:…] 
The parameter option /CR is used to cut out a range from the loaded data file. It removes 
any data within the specified ranges. More than one range can be specified. Each range 
must be separated by a colon ‘:’. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
65 / 111 
based on template version 5.1.0 




Reference Manual HexView 
 
 
 
 
Example 
/CR:0x1000,0x200 

  If a data section in the range from 0x1000-0x11FF exist, the data will be removed from 
the file. All successive operations will operate on data that don’t include this section. All 
other sections remain unchanged. If this section is located within a segment or block, it 
will be splitted into two. 
/CR:0x7000-0x7FFF 
This removes the data from 0x7000 to 0x7FFF if present. 
 
 
3.2.7 
Checksum calculation method (/CSx[:target[;limited_range][/no_range]) 
This option is used to specify the checksum calculation method provided by the checksum 
calculation feature. The checksum calculation  
When  using,  The  parameter  x  in  the  option  /CSx  denotes  the  index  to  the  checksum 
calculation  algorithm.  The  function  in  the  EXPDATPROC.DLL  will  be  called  that 
corresponds to this parameter value. The index can be calculated by counting the list  of 
checksum methods in the checksum dialog starting with index 01. 
 
 
Example 
 
 
Figure 3-2  Example on how to select the checksum calculation methods in the “Create Checksum” operation 
 
 
 
                                            
1 Newer versions of expdatproc.dll (V1.3 and higher) shows the function index in the dialog. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
66 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
Example 
 
  /CS6:csum.txt 
Runs the checksum calculation method “Wordsum LE into 16-Bit, 2’s Compl LE-Out 
(GM new style)” and writes the results into the file CSUM.TXT. 
This example uses the checksum method “Wordsum LE into 16-Bit, 2’s Compl LE-Out 
(GM new style)”, as this is the 7th option in the checksum dialog menu shown above. 
 
/CS1:@append;0x1000-0x7FFF  or  /CS1:@append;0x1000,0x7000 
Runs the checksum calculation method “Bytesum into a 16-Bit LE-out” and appends 
the checksum at the very end of the internal file. The checksum is calculated over the 
limited range from 0x1000-0x7FFF as specified. 
A range within the checksum range can be excluded, if for example a data array shall 
not be used for checksum calculation, Such an excluded range can be specified with a 
preceding ‘/’. 
/CS7:@upfront;0x2000-0x3fff/0x2800-0x29ff/0x3000,0x200 
The option above calculates the checksum using method 7 (the 8th) on data within the 
range from 0x2000-0x3ffff. The range from 0x2800-0x29ff and 0x3000-0x31ff will be 
excluded for the checksum calculation. The exclude has no affect to the real data. The 
result of the checksum calculation will be written before the very beginning of the file 
data (Note: it will be written not upfront to 0x2000, but to the very beginning of the 
loaded file. This applies to all other labelled address specifier, such as ‘upfront’, ‘begin’ 
and ‘append’). 
 
 
With  HexView  version  V1.2.0  and  higher,  the  results  of  the  checksum  can  now  also  be 
written into an output file or placed into a location within the internal data. The location is 
separated by  a  ‘:’  or  ‘=’  sign,  followed  by  the  target  where  the  resulting  checksum  value 
shall  be  placed  in. The  example  above  shows  how  to  write  the  results  of  the  checksum 
calculation into the file “csum.txt”. 
The following target IDs can be used: 
 
 
 
Filename (e.g. csum.txt) 
Writes the result into a file. The value is 
written from high to low byte in hexadecimal 
form. Each byte is separated by a comma. 
@append 
The results of the checksum will be added at 
the very end of the file. 
@begin 
Writes the contents at the very beginning of 
the file. 
Important Note: It will overwrite the first bytes 
of your data. The number of bytes that will be 
overwritten depends on the checksum 
method. 
@upfront 
Write the checksum results prior to the 
2014, Vector Informatik GmbH 
Version: 1.08.06 
67 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
beginning of the first block. No data will be 
overwritten. 
@end 
Places the checksum on the last bytes of the 
last section of the file. The address is 
automatically calculated.  
Important Note: It will overwrite the last bytes 
of your data. The number of bytes that will be 
overwritten depends on the checksum 
method. 
@0x1234 
Writes the checksum result into the address 
location given after the @ operator. 
Caution 
Whenever using the @ operator to write the results into the file, make sure that the 
  checksum is at the proper location and is not  overwriting accidentally any imported 
data! 
 
 
Table 3-2   Checksum location operators used in the commandline 
The  available  checksum  methods  depends on  the  expdatproc.dll.  Version  1.05.00  of  the 
DLL provides the following methods: 
 
 
 

ByteSum into 16-Bit, BE-out 
Sums the bytes of all segments into a 
16-bit value. The result is a 16-Bit 
value in Big-Endian order (high byte 
first). 

ByteSum into 16-Bit, LE-out 
Sums the bytes of all segments into a 
16-bit value. The result is a 16-Bit 
value in Little-Endian order (low-byte 
first) 

Wordsum BE into 16-Bit, BE-Out 
Sums the data of every segment as 
16-bit words. The result is a 16-bit 
value. 
The input stream is treaded as big-
endians (high-byte first), the 16-bit 
checksum result is given in big-
endian format (high-byte first). 
Note that this routine requires aligned 
data. The number of bytes per 
segment and the start address of 
each segment must be a multiple of 
two. If not, Hexview/expdatproc will 
generate the errors “Base address 
mis-alignment” or “Data length mis-
alignment” 

Wordsum LE into 16-Bit, LE-Out 
Same as above, but the data are 
treaded as 16-bit values with low byte 
2014, Vector Informatik GmbH 
Version: 1.08.06 
68 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
 
first. The 16-bit result is also stored 
with low-byte first 

ByteSum w/ 2s complement into 16-Bit BE (GM 
Each byte of the segments are 
old-style) 
complemented with its 2’s 
complement and then added to a 16-
bit sum value. The result is stored in 
big-endian format (high-byte first). 

Wordsum BE into 16-Bit, 2's Compl BE-Out (GM  Sums the data of every segment as 
new style) 
16-bit words. The result is the 2’s 
complement of the  16-bit sum. 
The input stream is treaded as big-
endians (high-byte first), the 16-bit 
checksum result is given in big-
endian format (high-byte first). 
Note that this routine requires aligned 
data. The number of bytes per 
segment and the start address of 
each segment must be a multiple of 
two. If not, Hexview/expdatproc will 
generate the errors “Base address 
mis-alignment” or “Data length mis-
alignment” 

Wordsum LE into 16-Bit, 2's Compl LE-Out (GM  Same as above, but the input data is 
new style) 
managed in little-endian format. The 
result is also given as 16-bit little-
endian. 

CRC-16 (Standard) 
Calculation of a CRC-16 using the 
polynomial: 
  215+214+27+26+20 ($C0C1) 

CRC-16 (non-standard) 
This is a 16-bit checksum algorithm 
that can easily implemented in a 
microcontroller. The used algorithm is 
as follows: 
CS = 0xffff;    // pre-initialize CS 
Foreach 8-bit data byte do 
Swap(CS)     // swap upper and lower 
bytes 
CS = CS XOR data-byte 
CS = CS XOR  ((CS AND 0xFF) SHR 
4) 
CS = CS XOR  ((CS SHL 8) SHL 4) 
CS = CS XOR (((CS AND 0xFF) SHL 
4) SHL 1) 
Endeach 
CS = NOT CS   // Inverse CS after 
operation 
 

CRC-32 
Calculation of the CRC-32 according 
2014, Vector Informatik GmbH 
Version: 1.08.06 
69 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
 
to IEEE, using the polynomial: 
  0x04C11DB7. The start value is 
0xFFFFFFFF. 
The result is inverted. 
10 
SHA-1 Hash Algorithm 
Creating a 20-byte hash value based 
on the SHA-1 algorithm. 
11 
RIPEMD-160 Hash Algorithm 
Dto for RIPE-MD 160 
12 
Wordsum LE into 16-Bit, 2's Compl BE-Out (GM  Same as method 6, but the resulting 
new style) 
16-bit value will be represented as 
16-bit big-endian. 
13 
CRC-16 (CCITT) LE out 
16-Bit CRC using the non-reflected 
CCITT polynomial with start value 
0xFFFF: 
212 + 25 + 20   ($1021) 
The function returns the 16-bit 
checksum in Little-Endian format 
(low-byte first) 
The start value is 0xFFFF. 
The result is inverted. 
14 
CRC-16 (CCITT) BE out 
Same as method 13, but result is in 
Big-Endian format. 
15 
MD5 Hash algorithm 
The MD5 has value. 
16 
Constant expression 
Doesn’t calculate a checksum but 
places a constant string to the 
specified location. The constant is 
taken from an INI-file with the name 
“expdatproc.ini” located in the same 
folder as the HEX file. The INI-file 
must have the following format: 
[constant] 
NumBytes=8 
HexDataString=0123456789ABCDEF 
17 
CRC16 CCITT LE-Out 
Sames as method 13, but with start 
value 0. 
18 
CRC16 CCITT BE-Out 
Same as method 17, but in big-
endian output format. 
19 
RIPEMD-128 Hash Algorithm 
The RIPEMD128 Hash value. 
20 
SHA-256 Hash Algorithm 
Build the Hash value on the data 
using SHA-256. 
Table 3-3:  Functional overview of checksum calculation methods in “expdatproc.dll” 
3.2.8 
Run Data Processing interface (/DPn:param[,section,key][;outfilename]) 
This  option  will  run  the  data  processing  interface. This  method  is  called  right  before  the 
data export commands are executed. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
70 / 111 
based on template version 5.1.0 


Reference Manual HexView 
The parameter ‘n’ specifies the method. The value ‘n’ can be calculated in a similar way to 
the checksum calculation method. The number can be found from the list box in the Edit-
>Run  Data  processing”  option  dialog.  Count  the  number  of  entries  in  this  dialog  starting 
from 0. The number of processing methods depends on the EXPDATPROC.DLL. 
Some  of  the  data  processing  interface  functions  may  take  over  useful  (optional) 
parameters. This parameter is separated by a colon directly after the command line option. 
 
 
Examples 
HexView testfile.dat /DP1:CC
 
  This option runs the second data processing method in the list. It passes the parameter 
string “CC” to the function. 
Hexview testfile.dat /dp11:00112233445566778899aabbccddeeff;RFC1321#IV=0 
This command encrypts a file using AES128 in CBC-mode. The initialization vector is 0 
and the padding mode according to RFC1321 is applied. 
 
 
The  EXPDATPROC  that  comes  with  this  delivery  of  Hexview  can  manage  the  following 
data processing methods: 
 
 
 
 
 
 
 
 

No action 
Does no modification on 

the data  

XOR data with byte 
Runs XOR operation on 
If no parameter is given, all data 
parameter 
the data 
will be inverted (XOR by 0xFF). 
Otherwise, it will run a byte-wise 
operation with a HEX-string 
passed as a parameter 

AES-128 encryption 
Encrypts the data with the  A 16 byte hex string 
AES-128 standard 
00112233445566778899aabbcc
encryption method 
ddeeff[;padding method] 
This is security class AAA.  Padding to 16 byte block is 
optional. The following padding 
methods are accepted: 

PKCS7 

RFC1321 

ANSIX.923 
Example: /DP: 
00112233445566778899 
aabbccddeeff;PKCS7 

AES-128 decryption 
Decrypts data with the 
A 16 byte hex string 
AES-128 method 
00112233445566778899aabbcc
ddeeff[;padding method] 
Use the same padding method 
for decryption to reconstruct the 
original size of the block. 

HMAC (ANSI-X9.71) 
Creates a signature based  The key-parameter as HEX-
2014, Vector Informatik GmbH 
Version: 1.08.06 
71 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
 
 
with SHA-1 
on Runs the HMAC using 
string or an ASN-formatted string 
SHA-1. 
The ASN-string must be 
By default, the signature is  preceeded by the tag bytes 
written to a file 
FF59 or FF5B. 
signd_sha1.txt. 
Example: /dp:mykeyfile[;outfile] 
/dp:647262756473[;outputfile] 

HMAC /w SHA-1 on 
Creates a signature based  The key-parameter as HEX-
addr+len+data 
on HMAC using SHA-1 
string or an ASN-formatted 
including the address and 
string. 
length information for each  The ASN-string must be 
segment 
preceeded by the tag bytes 
By default, the signature is  FF59 or FF5B 
written to the file 
Example: /dp:mykeyfile[;outfile] 
signdal_sha1.txt. 
/dp:647262756473[;outputfile] 
This is security class C. 

HMAC (ANSI-X9.71) 
Creates a signature based  The key-parameter as HEX-
with RIPEMD-160 
on HMAC using 
string or an ASN-formatted 
RIPEMD160 including the 
string. 
address and length 
The ASN-string must be 
information for each 
preceeded by the tag bytes 
segment. 
FF59 or FF5B 
By default, the signature is  Example: /dp:mykeyfile[;outfile] 
written to the file 
/dp:647262756473[;outputfile] 
SignD_Ripemd160.HMAC. 

HMAC /w RIPEMD-160  Creates a signature based  The key-parameter as HEX-
on addr+len+data 
on HMAC using 
string or an ASN-formatted 
RIPEMD160. 
string. 
By default, the signature is  The ASN-string must be 
written to the file 
preceeded by the tag bytes 
SignDAL_Ripemd160.HMA FF59 or FF5B 

Example: /dp:mykeyfile[;outfile] 
This is security class C.. 
/dp:647262756473[;outputfile] 

RSA-Signature /w SHA- Creating the hash-value 
The private key as an ASN 
1 on data 
using the SHA-1 algorithm  formatted string. The string must 
the data (only) for every 
be preceeded by the tag FF49 or 
segment and encrypt the 
FF4B. The tag for the exponent 
result with the RSA 
is 0x91 and the tag for the 
algorithm. By default, the 
modulo is 0x81. 
output is written to 
Example: /dp:mykeyfile[;outfile] 
SignD_SHA1.RSA. 
Note: Signature follows the 
EMSA-PKCS1-v1_5 format. 

RSA-Signature /w 
Creating the hash-value 
The private key as an ASN 
RIPEMD160 on 
using the RIPEMD160 
formatted string. The string must 
Addr+Len+Data 
algorithm on address, 
be preceeded by the tag FF49 or 
length and data for every 
FF4B. The tag for the exponent 
segment and encrypt the 
is 0x91 and the tag for the 
result with the RSA 
modulo is 0x81. 
algorithm. By default, the 
Example: /dp:mykeyfile[;outfile 
2014, Vector Informatik GmbH 
Version: 1.08.06 
72 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
 
 
output is written to 
Note: Signature follows the 
SignDAL_RIPEMD160.RS
EMSA-PKCS1-v1_5 format. 
A. 
This is security class CCC. 
10 
RSA-Signature /w SHA- Creating the hash-value 
The private key as an ASN 
1 on Addr+Len+data 
using the RIPEMD160 
formatted string. The string must 
algorithm on address, 
be preceeded by the tag FF49 or 
length and data for every 
FF4B. The tag for the exponent 
segment and encrypt the 
is 0x91 and the tag for the 
result with the RSA 
modulo is 0x81. 
algorithm. By default, the 
Example: /dp:mykeyfile[;outfile] 
output is written to 
Note: Signature follows the 
SignDAL_SHA1.RSA 
EMSA-PKCS1-v1_5 format. 
This is security class CCC. 
11 
AES-CBC Encryption 
Encrypts the data with AES  The IV will be taken from the first 
128-Bit 
in CBC-mode using an 
16 bytes of the data stream. The 
initialisation vector (IV).  
data for the IV will be skipped for 
encryption operation. Instead, 
the IV can also defined explicitly 
in the parameter field separated 
by the Hash sign. Example: 
“00112233445566778899aabbcc
ddeeff;RFC1321#IV=0” 
IV=0 sets the IV explicitly to 0. 
Use a 32 char hex string if you 
want to define an explicit vector 
(remaining values will be set to 0 
by default). 
See option 2 for further 
description. 
12 
AES-CBC Decryption 
Counter operation of AES-
See operation #11 for further 
128-Bit 
CBC Encryption.  
description. 
13 
HMAC (ANSI-X9.71) 
Calculating the Hash-MAC  The key-parameter as HEX-
with MD-5" 
based on MD5 
string or an ASN-formatted string 
The ASN-string must be 
preceeded by the tag bytes 
FF59 or FF5B. 
Example:  
/dp:mykeyfile[;outfile] 
/dp:647262756473[;outputfile] 
14 
HMAC /w MD-5 on 
Same as #13, but also 
The key-parameter as HEX-
addr+len+data 
including address and 
string or an ASN-formatted string 
length of each block to the  The ASN-string must be 
hash value. 
preceeded by the tag bytes 
FF59 or FF5B. 
Example:  
/dp:mykeyfile[;outfile] 
/dp:647262756473[;outputfile] 
2014, Vector Informatik GmbH 
Version: 1.08.06 
73 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
 
 
15 
RSA-Signature /w MD5  Creating the hash-value 
The private key as an ASN 
on data 
using the MD5 algorithm 
formatted string. The string must 
the data (only) for every 
be preceeded by the tag FF49 or 
segment and encrypt the 
FF4B. The tag for the exponent 
result with the RSA 
is 0x91 and the tag for the 
algorithm. By default, the 
modulo is 0x81. 
output is written to 
Example: /dp:mykeyfile[;outfile] 
SignD_MD5.RSA. 
Note: Signature follows the 
EMSA-PKCS1-v1_5 format. 
16 
RSA-Signature /w MD5  Creating the hash-value 
The private key as an ASN 
on Addr+Len+data 
using the MD5 algorithm on  formatted string. The string must 
address, length and data 
be preceeded by the tag FF49 or 
for every segment and 
FF4B. The tag for the exponent 
encrypt the result with the 
is 0x91 and the tag for the 
RSA algorithm. By default,  modulo is 0x81. 
the output is written to 
Example: /dp:mykeyfile[;outfile] 
SignDAL_MD5.RSA 
Note: Signature follows the 
EMSA-PKCS1-v1_5 format. 
17 
RSA Encryption 
Encrypt data using a 
Example: /dp:mykeyfile 
private RSA key. 
18 
RSA Decryption 
Decrypt data using a 
Example: /dp:mykeyfile 
private/public RSA key. 
19 
LZ Vector data 
LZSS with Vector specific 
Uses 8 bits for sliding window 
compression (0) 
coding of compressed 
and 4 bits for repeated 
data.  
characters 
This is the default and 
preferred algorithm! 
20 
LZ Vector data 
LZSS with Vector specific 
Uses 9 bits for sliding window 
compression (1) 
coding of compressed 
and 4 bits for repeated 
data.  
characters 
21 
LZ Vector data 
LZSS with Vector specific 
Uses 12 bits for sliding window 
compression (2) 
coding of compressed 
and 6 bits for repeated 
data.  
characters 
22 
LZ Vector data 
LZSS decompression of 
Counter operation of #19 
decompression (0) 
Vector specific method 
23 
LZ Vector data 
LZSS decompression of 
Counter operation of #20 
decompression (1) 
Vector specific method 
24 
LZ Vector data 
LZSS decompression of 
Counter operation of #21 
decompression (2) 
Vector specific method 
25 
RSA-RIPEMD sign. 
Calculates the hash with 
This is the only way to add 
A+L+D /w Vector data 
RIPEMD-160 with address  address and uncompressed 
compression (0) 
and uncompressed length  length to the signature while 
over compressed data, 
compressing the file at the same 
encrypts the signature 
time. The uncompressed 
using RSA-1024 and writes  memory size is transferred in 
the result to the signature 
RequestDownload and added to 
file. Outputs compressed 
the hash value. Input parameter 
2014, Vector Informatik GmbH 
Version: 1.08.06 
74 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
 
 
data. Thus, signature and 
like in operation #9. 
compression is done in one  It can fulfull Security class CCC 
step. 
w/ compression. 
This method is not needed when 
using “LifeCompression” 
26 
LZSS data compression  This is a pure LZSS 
Sliding window is 10 bit length, 
(10Bit/4Bit acc. Ford-
compression with bit coded  repeat character is 4 bits. 
SWDL005) 
value of plain text or 
repeated data. 
27 
LZSS data compression  The LZSS decompression  Counter operation of #26. 
(10Bit/4Bit acc. Ford-
algorithm  
SWDL005) 
28 
RSA-Signature /w 
RSA signature without 
Like e.g. in operation #9. 
RIPEMD160 on Data 
address and length info. 
30 
HMAC-RIPEMD sign. 
Calculates the hash with 
This is the only way to add 
A+L+D /w Vector 
RIPEMD-160 with address  address and uncompressed 
compression (0) 
and uncompressed length  length to the signature while 
over compressed data, 
compressing the file at the same 
encrypts the signature 
time. The uncompressed 
using RSA-1024 and writes  memory size is transferred in 
the result to the signature 
RequestDownload and added to 
file. Outputs compressed 
the has value. Input parameter 
data. Thus, signature and 
like in operation #9. It can fulfull 
compression is done in one  Security class C w/ 
step. 
compression. 
This method is not needed when 
using “LifeCompression” 
31 
HMAC-SHA256 
Calculate the Hash MAC 
Segment address and length is 
with SHA256 
not added to the hash value. 
A symmetric key as parameter is 
required. 
32 
HMAC-SHA256 on 
Calculate the Hash-MAC 
A symmetric key as parameter is 
segment-
with SHA256, hashing also  required. 
address+segment-
start address and length 
length+data 
per segment. 
33 
RSA-Signature on data  Builds the signature on the  The private key as an ASN 
using SHA256. 
data  
formatted string. The string must 
be preceeded by the tag FF49 or 
FF4B. The tag for the exponent 
is 0x91 and the tag for the 
modulo is 0x81. 
Example: /dp:mykeyfile[;outfile] 
Note: Signature follows the 
EMSA-PKCS1-v1_5 format. 
34 
RSA-Signature using 
Builds the signature on the  The private key as an ASN 
SHA256 on 
segment start 
formatted string. The string must 
address+length+data. 
address+segment 
be preceeded by the tag FF49 or 
length+segmentdata (per 
FF4B. The tag for the exponent 
2014, Vector Informatik GmbH 
Version: 1.08.06 
75 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
 
 
all segments) 
is 0x91 and the tag for the 
modulo is 0x81. 
Example: /dp:mykeyfile[;outfile] 
Note: Signature follows the 
EMSA-PKCS1-v1_5 format. 
 
Table 3-4   Functional overview of data processing methods in “expdatproc.dll” 
With  EXPDATPROC.DLL,  V1.02,  it  is  also  possible  to  pass  the  parameters  not  only 
directly but through a file or an INI-file. The parameter must be passed as follows: 
Passing the parameter through a file: 
 /DP:input-filename[;output-filename] 
 
Passing the parameter through an INI-file: 
 
 
 /DP:input-filename,sectionname, keyname[;out-filename] 
 
 
 
  The INI-file has the format: 
 
 
 
     [sectionname] 
 
 
 
      keyname=’0011223344’ 
In  every  case,  an  output-filename  can  be  optionally  entered,  preceeded  by  a  “;”.  This 
output-filename will overwrite the default output filename. 
The output is always written relative to the location of the Hex-File loaded by HexView. 
3.2.9 
Create error log file (/E:errorfile.err) 
This specifies an error log file. HexView can run in silent mode (see 3.2.18). In that case, 
no error will be displayed to the GUI. However, error messages are important to know. This 
option allows to re-direct the output to a file. 
3.2.10  Create single region file (/FA) 
This option  can  be  used  to  create  a  single  block  file.  In  that  case,  HexView  will  use  the 
start  address  of  the  first  block  and  the  end  address  of  the  last  block  and  will  fill  all 
remaining holes in-between with the fill character given with the /AFxx parameter. 
Note that some files should be a single region file, e.g. the flashdrivers are not allowed to 
have more than 1 region. This option can ensure that the file is a single region file.  
3.2.11  Fill region (/FR:’range1’:’range2’:…) 
This option is used to create and fill memory regions. If the /FP parameter is not provided, 
HexView will create random data to fill the blocks or regions. Otherwise, the value given by 
the /FP parameter will be used repetitively. The fill-operation does not touch existing data. 
Thus, it can even be used to fill data between segments. Ranges are either specified by its 
start  and  length,  separated  by  a  coma,  or  by  start  and  end  address,  separated  by  the 
minus sign (e.g. /FR:0x1000,0x200:0x2000-0x2FFF). 
2014, Vector Informatik GmbH 
Version: 1.08.06 
76 / 111 
based on template version 5.1.0 

Reference Manual HexView 
3.2.12  Specify fill pattern (/FP:xxyyzz…) 
This option can be used to specify a fill pattern that’s been used to fill regions. This option 
is  only  useful  in  combination  with  the  /FR  parameter.  The  parameter  for  /FP  is  a  list  of  
(see /FR option). The parameter will be treaded as a data stream in hexadecimal format. 
3.2.13  Import HEX-ASCII data (/IA:filename[;AddressOffset]) 
This option is used to  instruct Hexview to read in  HEX-ASCII  data values to the internal 
data memory. Since HEX-ASCII files are not detected automatically, it cannot be read in as 
a normal input file. However, if you want to use this option, you cannot read in a normal 
HEX  file  while  you are  also  want  to  read  in  HEX-ASCII  data. The  accepted format  is as 
follows: 
  23456789 
  0x12, 0x23, 0x34, … 
 
All data are expected to be in HEX data format. No integers will be recognized. 
Typically, the input data will be located at start address 0. An offset can be specified with 
the  parameter,  e.g.  /IA:myhexstring.asc;0x1000,  which  will  place  the  string  at  address 
0x1000.  No  data  overlapping  is  allowed  with  data  from  the  input  file!  If  data  overlaps,  a 
warning is generated and the HEX input is completely ignored. 
Hint: Set the filename in double quotes if spaces or other untypical characters are used for 
the filename itself. 
3.2.14  Execute logfile (/L:logfile) 
This option is intended to load a logfile command. Similar to a macro recorder, actions in 
the GUI can be logged and later on re-executed using this command line option. Refer to 
section 2.2.1.7 for further description). 
3.2.15  Merging files (/MO, /MT) 
One or more files can be merged into the internal data memory of the program. The files 
are  read  using  the  auto-detect  filetype  mechanism  described  in  chapter  2.2.1.2.1.  The 
commandline operation has some optional parameters to control the merge operation. 
First,  the  type  of  merge  operation  need  to  be  chosen.  The  merge  can  done  in  a 
transparent (/MT) or opaque (/MO) mode. Both cannot be mixed. Only one can be chosen 
in one commandline operation.  
In the transparent mode, the loaded filedata will not overwrite data in the internal memory. 
The  opaque  mode  does  not  check  if  data  already  exist  and  will  load  the  data  from  the 
merged file unconditionally. Already existing data may be overwritten. 
Option extensions: file1[;offset][:’range’][+file2;offset][:’range’] 
The filename must be followed directly to the option, separated by either a ‘: or the ‘=’ sign 
(/Mx:file or /Mx=file). An optional offset parameter can be added. The offset can be positive 
or  negative,  specified  in  hexadecimal  or  integer.  In  addition,  a  data  range  that’s  been 
loaded from the merge-file can be specified. This can be given with or without the offset. 
Note, that the range will be applied on the unshifted data, then the address shift operation 
will be applied. 
Further files to merge can be added using the ‘+’ character to separate the next file to load. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
77 / 111 
based on template version 5.1.0 




Reference Manual HexView 
 
 
Example 
HexView will merge the file “cal1.hex” with address offset -0x1000, then loads 
  “cal2.s19” with address offset 128. Existing address information in the internal memory 
will not be overwritten. 
 
 
 
 
 
Example 
/MT:cal1.hex;-0x1000+cal2.s19;128
 
   
/MO:testfile.hex;0x2000-0x3FFF 
Simply reads the address range from 0x2000-0x3FFF from the file “testfile.hex” into the 
memory. No offset will be added or subtracted. Existing data on the same address will 
be overwritten. 
/MT:testfile1.hex;0x2000:0x1000,0x4000+cal2.s19;-0x3000:0x1000-0x1FFF 
Merges the address range 0x1000-0x4FFF of testfile1.hex and shifts all block 
addresses of these ranges by the offset 0x2000. Afterwards, merges the address range 
0x1000-0x1FFF of file cal2.s19 and changes the block start addresses by -0x3000. 
Note: /MT and /MO cannot be combined in one commandline. Only the last in the 
commandline-list will be used, in that case. 
 
 
 
 
 
Caution 
Since this operation can manipulate data in a post process, make sure HexView 
  creates the resulting file containing the desired data and applies the correct changes. 
 
 
3.2.16  Run postbuild operation (/pb=postbuild-file) 
This  option  applies  the  postbuild  operation.  This  option  requires  a  valid  PBUILD.DLL  to 
read the data from a postbuild file. The results will be applied to the internal document. 
Originally, it is used to read the generated postbuild XML-file using the PBUILD.DLL that 
comes  along  with  Hexview.  However,  it  can  also  be  used  to  apply  your  own  postbuild 
configuration or to apply data changes to the currently loaded document. 
The only pre-requisite is that the DLL provides the correct interface functions. 
The DLL interface functions will be called in the following sequence: 
2014, Vector Informatik GmbH 
Version: 1.08.06 
78 / 111 
based on template version 5.1.0 

Reference Manual HexView 
OpenPBFile(Filename)
GetPBSegmentInfo(Address[], Length[], 
maxNoOfSegments)
GetPBData(srcAddress, dstAddress, 
length)
ClosePBFile( )
 
Figure 3-3:  Calling sequence of the post-build  functions 
The following function interface will be applied: 
3.2.16.1  OpenPBFile 
Prototype 
Long __declspec(dllexport) __cdecl OpenPBFile  ( LPCSTR filename ) 
Parameter 
Filename 
Pointer to the location of the file that shall be opened. This is the full-path of 
the file that has been selected in the file dialog when slecting the “Apply 
postbuild options”. 
Return code 
Long 
Number of segments found in the postbuild file and shall be applied to. 
Functional Description 
Requests to open a file used for the postbuild operation process. Typically, it is the XML file generated by 
GENy to apply the postbuild configuration data. 
Particularities and Limitations 
>  The function must return the number of segments that shall be applied to the postbuild operation 
Call context 
>  
Table 3-5   OpenPBFile 
3.2.16.2  ClosePBFile 
Prototype 
Void __declspec(dllexport) __cdecl ClosePBFile  ( void ) 
Parameter 


Return code 


2014, Vector Informatik GmbH 
Version: 1.08.06 
79 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Functional Description 
Closes the previously opened file. Concludes all operations within the DLL. 
Particularities and Limitations 
>  
Call context 
>  
Table 3-6   OpenPBFile 
3.2.16.3  ClosePBFile 
Prototype 
Long __declspec(dllexport) __cdecl GetPBSegmentInfo  ( DWORD address[], DWORD 
length[], long maxSegments ) 
Parameter 
Address 
Pointer to a list of addresses. Will be filled by the operation. 
Length 
Pointer to a list of length values. Each field for one segment. The index 
 
corresponds to the address field. 
Long maxSegments 
Size of the fields where Address and Length points to. The interface function 
shall not place more address and length information into the list as specified 
by maxSegments (will exceeds internal data structures within Hexview). 
Return code 
Long 
Number of segments found in the postbuild file and loaded to the segment 
arrays of Address[] and Length[].. 
Functional Description 
Provides all segments from the postbuild file that shall be loaded.- 
Particularities and Limitations 
>  The function must return the number of segments that has been loaded to the arrays. 
>  Segments provided in the list of address[] and length[] shall not overlap, length shall be greater than 0 in 
all cases (otherwise, the element in the list should be omitted). 
Call context 
>  
Table 3-7   ClosePBFile 
3.2.16.4  GetPBData 
Prototype 
Long __declspec(dllexport) __cdecl GetPBData  ( DWORD srcAddress, char 
*dstBuffer, DWORD length) 
2014, Vector Informatik GmbH 
Version: 1.08.06 
80 / 111 
based on template version 5.1.0 


Reference Manual HexView 
Parameter 
srcAddress 
Pointer to the segment that shall be read. Corresponds to at least one of 
Length 
the Addresses  of addresses. Will be filled by the operation. 
 
Pointer to a list of length values. Each field for one segment. The index 
Long maxSegments 
corresponds to the address field. 
Size of the fields where Address and Length points to. The interface function 
shall not place more address and length information into the list as specified 
by maxSegments (will exceeds internal data structures within Hexview). 
Return code 
Long 
Number of bytes read for post-building. 
Functional Description 
Reads the segment data from the postbuild file and applies it to the current document. 
Particularities and Limitations 
>  The function must return the number of bytes read from the segment. 
>  The number of bytes read from the segment must correspond to the size previously specified for the 
segment that belongs to the address given in the parameter. 
Call context 
>  
Table 3-8   GetPBData 
3.2.17  Specify output filename (-o outfilename) 
This option is used to overwrite the default output filename when exporting data to a file.  
3.2.18  Run in silent mode (/s) 
This option is used to suppress any output to the GUI. After executing all commands given 
in the command line options, HexView will be closed. 
 
3.2.19  Specify an INI-file for additional parameters (/P:ini-file) 
Some output  control functions require complex parameters that  cannot be passed on by 
command lines. These output controls reads parameters from the INI-file. By default, if the 
/P parameter is not given, HexView will extract the path and file information from the input 
file and will search for the same file and location, but with the INI-extension. It will read the 
contents from there. However, it could be useful to specify the INI-file explicitly. This is for 
example useful, if several output controls shall be used with the same parameters. 
 
 
Note 
Some export functions from the GUI automatically generates an INI-file with the same 
  name and path location as the output file, to write these parameters into it. These 
values will then automatically taken when reading or converting the file through 
commandline. 
 
 
The path and filename for the INI-file must follow directly the /P parameter, but separated 
either with a colon or an Equal sign. No blank character is allowed for separation or within 
the file and path name (or use double quotes to specify such file and path names). 
2014, Vector Informatik GmbH 
Version: 1.08.06 
81 / 111 
based on template version 5.1.0 








Reference Manual HexView 
 
 
Example 
/P:testfile.ini
 
  HexView will read the data from the path of the input file. If no explicit path is used for 
the input file, HexView will search for the file in its current path. 
/P=c:\testpath\testfile.ini 
HexView reads the INI-file from the specified path and filename. 
 
 
3.2.20  Remapping address information (/remap) 
The remap option is used to shift the start address of block. This can be useful to remap 
several  address  blocks  from physical  to  logical  addresses. A  use-case for  that  is the  re-
mapping of address spaces in banked mode to a contiguous linear address space2. 
Physical address space
Virtual, linear address space
Bank no. 
#3
Bank no. 
#2
Bank no. 
#1
Bank size
Linear base 
address
Non-
Non-
banked 
banked 
section #2
Bank end 
section #2
address
Bank no. 
Bank no. 
Bank no. 
„Peep-
#1
#2
#3
Hole“
Bank start 
address
Non-
Non-
banked 
banked 
section #1
section #1
 
Figure 3-4:  Mapping pysical to linear address spaces 
The parameters to this option are as follows: 
/remap:BankStartAddress-BankEndAddress,LinearBaseAddress,BankSize,BankIncrement 
Figure 3-4 gives a reference to the parameters of the memory map. The BankStartAddress 
and  BankEndAddress  spans  a  range  of  the  memory  region,  where  the  remap  shall  be 
applied to. The LinearBaseAddress is the base address, where the first BankStartAddress 
                                            
2  Such  linear  address  spaces  are  also  called  „virtual“  addresses,  because  the  address  itself  does  cannot 
directly used for a read operation on the micro. An address calculation of the virtual address is necessary to 
split it to a banked and a physical address.  
2014, Vector Informatik GmbH 
Version: 1.08.06 
82 / 111 
based on template version 5.1.0 

Reference Manual HexView 
shall be mapped to. The BankSize is the maximum size of a block that shall be remapped 
and the BankIncrement is the difference of address between two banks, e.g. the difference 
between BankStartAddress of bank #1 and BankStartAddress of bank #2. 
Please note, that just blocks can be remapped, that fits within the BankStartAddress and 
BankEndAddress or multiples of BankIncrement. That is to say, only blocks with maximum 
size  of  BankSize  can  be  remapped.  A  continuous  block  section  cannot  be  splitted  and 
remapped into linear addresses (this is not necessary. In that case, only the whole base 
address of a block may be shifted). 
The following example shows, how address shift operations are applied: 
Assuming, the input file contains the following data sections: 
Non-Banked addresses from 0x0000 – 0x7FFF. 
Banked addresses:  0x018000-0x01BFFF; 0x028000-0x02BFFF. 
In  this  example,  the  address  mapping  consists  of  a  non-banked  section  and  two  bank 
sections. The bank numbers are  0x01 and  0x02. The  physical  bank  addresses  are from 
0x8000-0xBFFF.  The bank size is 0x4000. 
The following option will remap the addresses to a linear address space: 
 
 
/remap:0x018000-0x02BFFF,0x008000,0x4000,0x010000 
This remaps the address space in the example above to 0x0000-0xFFFF.  
3.2.21  Create validation structure (/vs) 
This  item  is  used  to  create  an  information  structure  intended  to  be  used  for  application 
validation. It is typically used for flash download systems where it is difficult or impossible 
to determine if all elements necessary for a download are available and complete. 
There are some flash download procedures, where it is impossible to verify if the download 
is  completed.  For  example,  if  partial  download  is  used  without  an  information  in  the 
download procedure, where the complete download can be verified, or where a download 
can be interrupted at a certain state that appears like a completed download. 
For  a  successful  usage  of  the  validation  structure,  it  is  necessary,  some  important 
precautions  must  be  considered.  To  use  the  structure  it  is  necessary  to  be  able  to  re-
program it with every download, even if it is just a partial download. Before the validation 
structure  itself  can  be  used,  it  is  necessary  to  determine  if  the  validation  structure  is 
present and complete. There are three options that can be used in combination to verify if 
the structure is complete. A magic value at the beginning and the end can be added to the 
structure In addition, a simple byte checksum can be inserted that is added at the very end 
to the structure. 
The key information for the validation is the block  structure  containing the segment  start 
address and length for each segment or block. The data information is not only (and not 
necessarily) taken from the internal data but also from external files. A list of files can be 
provided  in  the  list  box. An  optional  checksum  per  block  can  be  added.  The  checksum 
method  can be  chosen from the available  checksum methods from  EXPDATPROC.DLL. 
Instead or in  addition to the block  checksum a total checksum that is calculated over all 
segment and block data can be added. The total checksum method can be different from 
the block checksum. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
83 / 111 
based on template version 5.1.0 

Reference Manual HexView 
The  resulting  data  structure  can  now  generated  in  two  ways,  or  even  in  both  if  wanted. 
First, a C-structure can be generated that can be  compiled and linked together with your 
program  data.  If  the  data  don’t  change,  the  resulting  HEX-files  should  be  the  same  just 
with the additional structure added to the HEX-file. A header-file may helps you to access 
the data structure during the validation method. 
A second method is to insert the data directly into the HEX-data file. Since 16-bit or 32-Bit 
values are generated, it is important to select if the CPU uses little- or big-endian format. 
The 16- and 32-Bit values will be generated according to the selected option. 
When  using  this  commandline  option,  all  parameters  will  be  taken  from  the  INI-file  (see 
section 3.2.19). The contents of the INI-file has the following parameters: 
[VALIDATION] 
GenerateCFiles=1  ; 0=no, 1=yes 
InsertData=1 
CFilename=D:\uti\_page3a.c 
HFilename=D:\uti\_page3a.h 
BlockChecksumType=0 
FileChecksumType=9 
ValidateChecksum=1 
IdTagBegin=0x1234 
IdTagEnd=0x4321 
BaseAddress=0x10000 
SpareRange= 
EndianType=0 
 
See section 2.2.2.12: “Generate file validation structure” for further information. 
3.3 
Output-control command line options (/Xx) 
The  following  chapter  describes  the  options  used  to  control  the  output  generator  of 
HexView. Note that only one output can be generated per execution. That is, you cannot 
combine several output generator options (/X..) in one command line call of HexView. 
The  output  control  is  used  to  generate  a  file  in  a  specific  output  format.  Some  of  the 
formats correspond to a file format used for flash download in the OEM specific download 
process. Therefore, the output control is named in combination with a car manufacturer’s 
brand name. 
3.3.1 
Output of HEX ASCII data (/XA[:linelen[:separator]]) 
This option provides the possibility to output the data into a file as HEX ASCII. 
There are two optional parameters to control the output. The first option is the length of the 
output  line. The second option is the separator between bytes within  a line.  Each option 
will  be  separated  by  a  semicolon.  The  line  number  always  comes  first,  followed  by  the 
separator. If you want to use spaces for the separator, you need to use doublequotes. The 
separator is only placed between two HEX values within a line, not at the beginning or end 
of it. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
84 / 111 
based on template version 5.1.0 



Reference Manual HexView 
 
 
Example #1 
Output HEX ASCII as a number of HEX strings 
  .   /XA:32 
  0102030405060708090A0B0C0D0E0F10 
  1112131415161718191A1B1C1D1E1F20 
 
 
 
 
 
Example #2 
Output HEX ASCII in a formatted string using the separator. 
    /XA:32:”, “ 
  01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10 
  11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20 
 
 
3.3.2 
Output a Fiat specific data file (/XB) 
This option commands to create the BIN- and PRM file used for the Fiat specific download. 
The  format  of  the  file  will  not  described  here,  but  can  be  found  in  the  Fiat  specific 
documentations (07284-01). Refer also to section 2.2.1.9.9. 
The Fiat file contains a number of parameters. These parameters are too complex to pass 
them all through command line options. Therefore, HexView reads this information from an 
INI-file. This INI-file can either be specified explicitly with the command line option /P (see 
section  3.2.19)  or  will  use  the  filename  of  the  input  file,  but  with  the  file  extension  ‘.INI’ 
(same location of INI as the HEX-file). 
The base address and length of the erase sections within the parameter file fields will be 
aligned with the erase alignment value. See sections  2.2.2.4 and 3.2.3 on how to specify 
this value. 
The following table shows the options for the INI-File used with the Fiat output. 
 
 
HFIType=4 
HFIType: Header Format Identifier. Should be 
4 for 07209 or 2 for 07274 
DownloadMethod=0 
DownloadMethod or Fingerprint (FPM):  
0=all Fingerprints,  
1=Prog+Data,  
2=Prog-only 
ChecksumMethod=1 
ChecksumMethod:  
0=Files and Segments,  
1=File only 
ChecksumType=1 
ChecksumType=Type of Checksum 
calculation. Same paramter value as in 
section 3.2.7 resp. 2.2.2.6. 
ECUAddress=0x20 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
85 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
 
TesterAddress=0xf1 
 
TesterCanID=0x18DA20F1 
 
EcuCanID=0x18DAF120 
 
TypeOfSeedKey=0 
 
AccessMethod=0 
 
AccessParameter=0 
 
ReqDLMethod=0 
 
ReqDLType=0 
 
P2Min=5 
 
P2Max=2 
 
P3Min=1 
 
P3Max=20 
 
P4=0 
 
AddressLengthSize 
The size for the used addresses and length of 
the segment information in the parameter file.  
The default value is 0x33, which denotes, that 
3-bytes will be used for address and length 
values. 
ReqDLParam 
The parameter to the data processing 
algorithm. See “Data Processing” chapter for 
more information. 
UseParialDownload 
This flag is set to 1 if a partial download 
parameter file shall be generated. The partial 
download is used if the binary data file 
consists of the application and data file. In this 
case, the partial download extracts the 
parameter file info for the data section only. A 
data range must be specified for the data field. 
PartialRange 
This is the range for the data field if the binary 
download is used for application and data. It’ll 
be used to generate a separate parameter file 
that specifies only the data section within the 
combined binary section. 
PartialPrmFile 
Specifies the separate parameterfile that will 
be generated if partial download is used. 
Table 3-9   INI-file information fort he Fiat file container generation 
3.3.3 
Output data into C-Code array (/XC) 
This  option  allows  to  create  arrays  in  a  C-language.  This  allows  to  compile  and  link 
complex  data  packets  with  a  program.  This  option  directly  reflects  the  GUI-option  in 
section 2.2.1.9.4. 
The  parameter  for  this  output  can  also  controlled  by  an  INI-file  (for  INI-file  rule,  refer  to 
section 3.2.19). 
2014, Vector Informatik GmbH 
Version: 1.08.06 
86 / 111 
based on template version 5.1.0 


Reference Manual HexView 
The following list shows the options of the INI-file for this output: 
 
 
Decryption=0 
Option: 
0=Off,   
1=On 
Decryptvalue=0xCC    
Value for encryption using XOR with each 
uchar/ushort/ulong 
Prefix=flashDrv 
 
WordSize=0   
0=uchar,  
1=ushort,  
2=ulong 
WordType=0   
Only used if WordSize > 0. 
0=Intel,  
1=Motorola  
Table 3-10   INI-File definition fort he C-Code array export function 
 
 
Example 
HexView test.dat /XC 

  Reads data from test.dat as Intel-HEX or S-Record and outputs to test.c/test.h. Tries to 
read the INI-Info from test.ini in the same folder where test.dat is located. 
HexView /XC test.dat /P:myini.ini –o outfile.c 
Reads the data from test.dat and the parameter from myini.ini and outputs the file 
outfile.c/outfile.h. 
 
 
3.3.4 
Output a Ford specific data file (/XF, /XVBF) 
The Ford data container comes along in two resp. three different formats. One is the Intel-
HEX format with additional information at the beginning of the file and the other is the VBF-
format. 
This section describes the two different formats: 
3.3.4.1 
Output Ford files in Intel-HEX format 
The Ford files in Intel-HEX format consist of a header information with some Ford specific 
information and the data itself in Intel-HEX format. The header has the following format: 
2014, Vector Informatik GmbH 
Version: 1.08.06 
87 / 111 
based on template version 5.1.0 

Reference Manual HexView 
APPLICATION>FORD FNOS-DemoIL 
MASK NUMBER>7 or later 
FILE NAME>APPL.hex 
RELEASE DATE>10/05/2001 
MODULE TYPE>Restraint Control Module 
PRODUCTION MODULE PART NUMBER>XL5A-14B321-AA 
WERS NOTICE>DE00E10757919001 
COMMENTS>Any comments can be entered here. 
RELEASED BY>Armin Happel 
MODULE NAME>RESTRAINTS CONTROL MODULE 
MODULE ID>0x7B0 
DOWNLOAD FORMAT>0x01 
FILE CHECKSUM>0xBF76 
FLASH INDICATOR>1 
FLASH ERASE 
SECTORS>:0xFC0002,0x5716:0xFF9D00,0xC:0xFF9F54,0x8C:0xFF9F54,0x8C 

:0200000400FCFE 
:2000020011AA0001230000BC614E4141000AFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFF1A 
… 
The whole file format can be written by HexView. The only information that HexView needs 
in addition to the data itself are the parameters for the header shown above. 
Some  information  can  be  generated  automatically  by  the  tool.  Further  information  is 
necessary and will be given by the INI-file parameter. The parameters from the INI-file are 
controlled according to the INI parameter rule (see section 3.2.19). 
The base address and length of the erase sections in the “flash erase sections” field will be 
aligned with the erase alignment value. See sections  2.2.2.4 and 3.2.3 on how to specify 
this value. 
The following table shows the INI-information: 
[FORDHEADER] 
 
APPLICATION=FORD FNOS-DemoIL 
Mandatory text field 
MASK NUMBER=7 or later 
Mandatory text field 
FILE NAME=APPL.hex 
Optional If omitted, the file-output name will be 
used. Otherwise, the text field paramter is 
used. 
RELEASE DATE=10/05/2001 
If omitted, the current PC-date will be used. 
Otherwise, if specified, the textfield will be 
used. 
MODULE TYPE=Restraint Control Module 
Mandatory text field 
PRODUCTION MODULE PART 
Mandatory text field 
NUMBER=XL5A-14B321-AA 
WERS NOTICE=DE00E10757919001 
Mandatory text field 
COMMENTS=Henrys header for flashdata 
Mandatory text field 
RELEASED BY=Armin Happel 
Mandatory text field 
2014, Vector Informatik GmbH 
Version: 1.08.06 
88 / 111 
based on template version 5.1.0 

Reference Manual HexView 
[FORDHEADER] 
 
MODULE NAME=RESTRAINTS CONTROL 
Mandatory text field 
MODULE 
MODULE ID=0x7B0 
Mandatory text field 
DOWNLOAD FORMAT=0x01 
Specifies the download method: 
0: Download Application file 
1: Download SBL 
;FILE CHECKSUM=0x0A33 
Will be generated by HexView. This is a byte 
sum of the data in the datafield. 
FLASH INDICATOR=1 
0: for Flashdriver aka. SBL, 
1: for normal file download 
Note: Writes 0 if paramter is omitted. 
;FLASH ERASE 
Can be given as a textual information. If 
SECTORS=:0xF0000,0x4000:0xF4000,0x4000:0 omitted, the block sections will be listed. This 
xF8000,0x4000:0xFC000,0x4000:0xFD800,0x04 can be used with GGDS and I3 to specify the 
00 
erase values (Note: for I3 und GGDS, usually 
the VBF-format is used). 
 
In 14230/KWP2000, the Erase indicator must 
be given here.   
0: Erase all 
1: Any erase section numbers 
1,3,5: erase section number as a list. 
Table 3-11   INI-file description for Ford I-Hex file generation 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
89 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
Example 1 
Output an application file for FNOS 101 (KWP2000 based): 
       HexView /FR:0x4000,0x200 /XF /P:test.ini /AD2 /AL –o demo_fill1.hex 
INI File contents of test.ini: 
[FORDHEADER] 
APPLICATION=FORD 
FNOS-Demo 
DemoAppl, 
adapted 
for 
Bootloader 
MASK NUMBER=Must be adapted by TIER I 
;FILE NAME=appl.hex  ; Will be filled out automatically 
if not present. 
;RELEASE DATE=02/18/2005 ; dto. 
MODULE TYPE=Demo Software 
PRODUCTION MODULE PART NUMBER=XL5A-14B321-AA 
WERS NOTICE=DE00E10757919001 
COMMENTS=This is just an example software 
RELEASED BY=Armin Happel 
MODULE NAME=Test software 
MODULE ID=0x7B0 
DOWNLOAD FORMAT=0x00 
;FILE CHECKSUM=0x0A33  ; dto. 
FLASH INDICATOR=1 
FLASH ERASE SECTORS=0 
 
HEX file output: 
APPLICATION>FORD 
FNOS-Demo 
DemoAppl, 
adapted 
for 
Bootloader 
MASK NUMBER>Must be adapted by TIER I 
FILE NAME>Demo_Fill1_f.hex 
RELEASE DATE=17/02/2004 
MODULE TYPE>Demo Software 
PRODUCTION MODULE PART NUMBER>XL5A-14B321-AA 
WERS NOTICE>DE00E10757919001 
COMMENTS>This is just an example software 
RELEASED BY>Armin Happel 
MODULE NAME>Test software 
MODULE ID>0x7B0 
DOWNLOAD FORMAT>0x00 
FILE CHECKSUM>0x1BFB 
FLASH INDICATOR>1 
FLASH ERASE SECTORS>0 

:02000004000EEC 
:20000000E25C9D40D6874BEAFAF1C7824BF70FE1CAE157397509A05577408C2
29C6D716FD1 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
90 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
Example 2 
Output an SBL aka. Flashdriver file: 
       HexView flash_s12.hex /XF /P:flashdrv.ini /FA 
INI File contents of flashdrv.ini: 
[FORDHEADER] 
APPLICATION=FORD FNOS-Secondary Bootloader 
MASK NUMBER=Must be adapted by TIER I 
;FILE  NAME=Flash_S12.hex    ;  Will  be  filled  out 
automatically if not present. 
;RELEASE DATE=02/18/2005 
MODULE TYPE=Restraint Control Module 
PRODUCTION MODULE PART NUMBER=XL5A-14B321-AA 
WERS NOTICE=DE00E10757919001 
COMMENTS=Henrys header for flashdata 
RELEASED BY=Armin Happel 
MODULE NAME=RESTRAINTS CONTROL MODULE 
MODULE ID=0x7B0 
DOWNLOAD FORMAT=0x01 
;FILE CHECKSUM=0x0A33 
;FLASH INDICATOR=1 Set to 0 if not present 
FLASH ERASE SECTORS= 
 
HEX file output: 
APPLICATION>FORD FNOS-Secondary Bootloader 
MASK NUMBER>Must be adapted by TIER I 
FILE NAME>Flash_S12_f.hex 
RELEASE DATE=17/02/2004 
MODULE TYPE>Restraint Control Module 
PRODUCTION MODULE PART NUMBER>XL5A-14B321-AA 
WERS NOTICE>DE00E10757919001 
COMMENTS>Henrys header for flashdata 
RELEASED BY>Armin Happel 
MODULE NAME>RESTRAINTS CONTROL MODULE 
MODULE ID>0x7B0 
DOWNLOAD FORMAT>0x01 
FILE CHECKSUM>0x0A01 
FLASH INDICATOR>0 
FLASH ERASE SECTORS>:0x0,0x480 

:200000000B00021202DF02D8036E02976CADB745EEE018B746EDE81AC60E15F
A04306B8211 
 
 
3.3.4.2 
Output Ford files in VBF format 
Another output format used by Ford, especially in the FNOS I3 and GGDS projects, is the 
VBF format. This file format is typically generated during the export of a VBF-file using the 
2014, Vector Informatik GmbH 
Version: 1.08.06 
91 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Ford  VBF-export  function  of  Hexview.  The  INI-file  is  necessary  to  generate  the  VBF-file 
from the command line. It is also used to adjust the dialog options for a specific file. 
The  values  for  ERASE_ADDRESS  and  ERASE_LENGTH  will  be  aligned  with  the  erase 
alignment value in a way that erase address and length are a multiple of this parameter. 
See sections 2.2.2.4 and 3.2.3 on how to specify this value. 
Options  and  data  generation  is  also  controlled  by  an  INI-file.  The  following  INI-file 
parameters are used to control the output: 
[VBFHEADER] 
 
SW_PART_NUMBER=12345678 
Part-number. Any arbitrary text string. 
SW_PART_TYPE=EXE 
Software part type can be: 
EXE, DATA, GBL, CAFCFG, CUSTOM, 
SIGCFG, TEST 
SW_CALL_ADDRESS 
Only used if SW_PART_TYPE=SBL or TEST. 
When SW_PART_TYPE is SBL, the call 
address is mandatory. 
SW_VERSION 
The software version. Only used for VBF V2.5. 
FRAME_FORMAT=CAN_STANDARD 
FRAME Format can be: 
CAN_STANDARD, CAN_EXTENDED 
DESCRIPTION1=This is the demo application 
Description field, part #1.  
for 
DESCRIPTION2=the FJ16LX FBL-Ford FNOS-
Description field, part #2 
I3.                           *) 
NETWORK=CAN_MS                *) 
Network parameter. Can be: 
CAN_HS, CAN_MS, SUB_MOST, 
SUB_CAN1, SUB_CAN2, SUB_LIN1, 
SUB_LIN2, SUB_OTHER 
ECU_ADDRESS=0x7E0             *) 
ECU-Address 
ERASE_LIST_GEN_MODE 
This specifies how the erase table shall be 
generated: 
0 = Generate no erase table 
1 = AUTO. Each segment of the input file will 
correspond to an address range. The values 
can be aligned to a multiple of a factor given 
with the /AE parameter. This is useful to let 
Hexview generate automatically the erase 
table. 
2 = Manual: You must specify erase address 
and length value in this INI file (see below)! 
ERASE_ADDRESS                 *) 
Erase address and length information. This 
 
paramter is not allowed if 
SW_PART_TYPE=SBL. 
 
ERASE_LENGTH                  *) 
 
 
DATA_FORMAT_ID 
Data format identifier for VBF 2.4 and higher 
2014, Vector Informatik GmbH 
Version: 1.08.06 
92 / 111 
based on template version 5.1.0 

Reference Manual HexView 
[VBFHEADER] 
 
DATPROC_PARAM 
Data processing parameter. Normally empty if 
no data processing or just data compression is 
used. 
DATPROC_METHOD 
ID of the data processing method (see chapter 
3.2.8). 
 
Table 3-12   INI-File description for Ford VBF export configuration 
*) The parameters marked with *) can be specified as a single parameter or in a list format. 
In the list format, a continuous counter number is added at the end of the parameter starts 
with ‘1’, e.g. NETWORK1, NETWORK2, etc. If the iterator is used, the non-iterator name 
will be ignored (e.g. NETWORK will not be used). It is much more convenient to generate 
this  file  during  an  export  through  the  GUI  than  writing  this  INI-file  by  hand.  Make 
modifications after it has been generated. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
93 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
Example1 
Convert an SBL resp. flashdriver 
    HexView.exe flashdrv.mhx /FA /s /e:flashdrv.err /xvbf /P:flashdrv.ini 
flashdrv.ini-File: 
[VBFHEADER] 
SW_PART_NUMBER=12345678 
SW_PART_TYPE=SBL 
SW_CALL_ADDRESS=0x1000 
FRAME_FORMAT=CAN_STANDARD 
DESCRIPTION1=This is the flashdriver (SBL) for 
DESCRIPTION2=the FJ16LX microcontroller. 
NETWORK=CAN_MS 
ECU_ADDRESS=0x7E0 
 
Output of flashdrv.vbf: 
vbf_version = 2.2; 
header { 
  //**************************************************
******** 
  //* 
  //*   Vector Informatik GmbH 
  //* 
  //*   This file was created by HEXVIEW V1.01 
  //* 
  //**************************************************
******** 
  //Description 
  description = {"This is the flashdriver (SBL) for", 
                 "the FJ16LX microcontroller." 
                }; 
  //Software part number 
  sw_part_number = "12345678"; 
 
  //Software part type 
  sw_part_type = SBL; 
 
  //Network type or list 
  network = CAN_MS; 
 
  //ecu_address or list 
  ecu_address = 0x7E0; 
 
  //Format frame 
  frame_format = CAN_STANDARD; 
 
  //call address 
  call = 0x1000; 
2014, Vector Informatik GmbH 
Version: 1.08.06 
94 / 111 
based on template version 5.1.0 

Reference Manual HexView 
 
  //file checksum 
  file_checksum = 0xab8650b7; 
}. 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
95 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
Example2 
Convert an application file 
    HexView.exe testsuit.mhx /AD2 /AL /s  /e:testsuit.err /xvbf 
testsuit.ini-File: 
[VBFHEADER] 
SW_PART_NUMBER=12345678 
SW_PART_TYPE=EXE 
FRAME_FORMAT=CAN_EXTENDED 
DESCRIPTION1=This the demo application for 
DESCRIPTION2=the FJ16LX FBL-Ford FNOS-I3. 
NETWORK1=CAN_MS 
NETWORK2=SUB_CAN1 
//ERASE_LIST_GEN_MODE:  
// 0=Off (generate no erase list);  
// 1=Auto (generate erase list from segment list and, 
if given, from the erase alignment parameter /AE) ;  
// 2=Manual (the erase list is specified in this INI-
file)! 
ERASE_LIST_GEN_MODE=1 
;ERASE_ADDRESS1=0xff0000 
;ERASE_LENGTH1=0x10000 
ECU_ADDRESS1=0x00 
ECU_ADDRESS2=0x06 
ECU_ADDRESS3=0x65 
 
testsuit.vbf-File: 
vbf_version = 2.2; 
header { 
  //**************************************************
******** 
  //* 
  //*   Vector Informatik GmbH 
  //* 
  //*   This file was created by HEXVIEW V1.01 
  //* 
  //**************************************************
******** 
  //Description 
  description = {"This the demo application for", 
                 "the FJ16LX FBL-Ford FNOS-I3." 
                }; 
  //Software part number 
  sw_part_number = "12345678"; 
 
  //Software part type 
2014, Vector Informatik GmbH 
Version: 1.08.06 
96 / 111 
based on template version 5.1.0 

Reference Manual HexView 
  sw_part_type = EXE; 
 
  //Network type or list 
  network = { CAN_MS, SUB_CAN1}; 
 
  //ecu_address or list 
  ecu_address = { 0x00, 0x06, 0x65}; 
 
  //Format frame 
  frame_format = CAN_EXTENDED; 
 
  //erase block 
  erase = { { 0x00ff0002, 0x00007764}, 
            { 0x00ff7f00, 0x0000008c} 
          }; 
 
  //file checksum 
  file_checksum = 0x73940915; 
 
}. 
 
 
3.3.5 
Output a GM-specific data file 
A file used for a flash download within GM contains important information necessary for its 
download  at  the  very  beginning.  This  is  the  so-called  GM  file-header.  It  contains  a 
description of the download data and also some version information. A detailed description 
of this file-header can be found in GMW3110, V1.5, section 11. 
Roughly,  the  header  can  be  divided  up  into  two  groups,  the  header  for  the  operational 
respectively  executable  software  and  the  calibration file. The main  difference  is,  that  the 
operational  software  contains  the  address  information  of  both  the  operational  and  the 
calibration  software.  The  calibration  software  therefore  doesn’t  contain  any  address 
information, even not about itself. 
 
The file header can roughly be divided up into two parts, a static part and a dynamic part. 
The  static  part  contains  information  that  changes  only  the  version  management  and 
contains, e.g. version information and other file descriptions like module-id, DLS-code and 
DCID. The information is static in respect to the compile and link process. 
The dynamic data part contains the address and length of all sections of a file and also the 
total  checksum  over  all  sections.  Thus,  the  dynamic  data  contents  is  changing  by  the 
compile and link process and must therefore be adapted after every link process. 
 
The command line options of HexView are therefore adapted to these two stages and can 
roughly  be  divided  up  into  two  groups:  manipulating  the  dynamic  part  within  an  existing 
header of the hex-file or to create the complete header information including the static and 
dynamic parts, without the existence of any predefined data.  
2014, Vector Informatik GmbH 
Version: 1.08.06 
97 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
If only the dynamic part is inserted, the static part must already be present in the loaded 
file. In that case, HexView analyzes the static part and checks if enough placeholder has 
been  reserved  to  insert  the  dynamic  part.  To  avoid  the  risk  that  HexView  accidentally 
overwrites important software part data, a unique ID must be written at the very beginning 
of the header block. This ID has the value 0x11AA.  
If  it’s  commanded  to  HexView  to  create  also  the  static  part,  the  whole  header  will  be 
generated. This  also  implies,  that  the information of the static part must  be given by the 
command line options. These options are the /DLS, /SWMI, /DCID and the /MPFH.  
This document does not describe completely the format and meaning of the header. You 
must refer to GMW3110 for further details. 
3.3.5.1 
Manipulating Checksum and address/Length field within an existing 
header (/XG) 

The  option  /XG  is  used  to  command  HexView  to  change  the  checksum,  address  and 
length information (the dynamic part) within the existing header data fields of the hex-file. It 
is  a  prerequisite,  that  the  header  is  at  the  very  beginning  of  a  block  or  a  section.  The 
header must contain all static information like Module-ID, SWMI, DLS and HFI. There must 
also already be data as a placeholder for the PMA and the checksum. The placeholder for 
the  checksum  must  have  the  value  0x11AA,  the  placeholder  data  for  the  address  and 
length information can be of any value. 
 
 
Note 
HexView will overwrite these data during the conversion process. Make sure that no 
  important data is overwritten. Test the output results carefully!!
 
 
By  default,  HexView  checks  the  presence  of  the  header  on  the  lowest  address  of  the 
block. However, if the header is at the beginning of another block, the address information 
of this block can be specified in this command line, separated by the colon. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
98 / 111 
based on template version 5.1.0 




Reference Manual HexView 
 
 
Example 
/XG /CS5 test.dat 

  Reads in the file test.dat as Intel-HEX or S-Record file and tries to fill in the header 
information into the lowest address. The value 0x11AA must be specified there. 
Outputs the data into test.bin (GM-binary format) and test.hex (Intel-HEX). 
/XG:0x1000 /CS6 
HexView searches for the block at address 0x1000. If this is not the first block in the 
internal list (e.g. it’s not the lowest address of the block), the block will be moved to the 
front. The specified address must be the beginning of a segment or block.  
moduleId01.hex /XG /CS6 /MPFH –o myGMfile.bin 
The hex-file “moduleId01” contains a header with placeholder 0x11aa for the 
checksum, SWMI, DLS, the HFI and a NOAR with dummy address/length information 
and optional DCID. It also contains values for the additional modules (NOAM-fields). 
Hexview will fill the placeholder 0x11AA with the calculated checksum, will adjust the 
NOAR and address/length information from the address fields of “moduleId01.hex” and 
then copies the NOAM fields to the end of the last address/length information.  
 
 
 
 
 
Note 
The parameter /CSx must be given when manipulating the header to specify the 
  checksum method for the checksum value. 
If the existing header already contains data for the additional modules (NOAM-data), 
the option /MPFH can be specified to let Hexview copy the contents of the NOAM field 
adjacent to the end of the new address region. Extensive checks are done internally to 
avoid overwriting existing data. Do not use the /MPFH option if you don’t use 
calibration information within the GM file. 
 
 
Besides the presence of the value 0x11AA, the parameter NOAR in the static part must be 
equal or greater than the number of sections available in the hex-file. If the NOAR in the 
static part is lower, HexView generates an error and does not write the output. 
After the NOAR parameter, there must be at least 8*NOAR data bytes within the header, 
reserved for the address and length information.  
 
 
Note 
HexView will overwrite these reserved data bytes with the address and length 
  information of the sections. Also, the value 0x11AA for the checksum will be overwritten 
with the result of the checksum calculation value. 
 
 
The output file format of HexView is a BIN-file. 
If the –o parameter is not given, HexView will use the input filename and will replace the 
file extension of the input file with “.bin” to specify the output filename.  
In addition, HexView will create an Intel-HEX file with the extension “.hex”. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
99 / 111 
based on template version 5.1.0 


Reference Manual HexView 
If the output filename already contains the extension .hex, HexView will create a Motorola 
S-record file with the extension “.s19”. 
3.3.5.2 
Creating the GM file header for the operating software (/XGC[:address]) 
This  option  is  used  to  create  the  header  for  the  operational  software  respectively  the 
executable.  
Without  any  address  information  in  the  parameter,  the  header  will  be  added  at  the  very 
beginning of the first section (lowest address of the file). The address information will be 
adapted  according  to the necessary  size  of  the header  (the  size  can  vary  depending on 
the information in the header). If the header doesn’t fit to the lowest address, an error will 
be generated and the output file will not be written. 
Using the /XGC parameter, the HFI will always be a two byte value. If the parameter /DCID 
and  /MPFH  are  given,  the  corresponding  bits  in  the  HFI  field  will  be  set  and  the  values 
from the parameters will be added. If the parameters /SWMI and /DLS are not given, the 
default values will be used. 
 
 
 
Example 
myHexFile.hex /XGC /CS5 /DCID=0x8000 /DLS=AA /SWMI=12345678 

  /MODID=1 /AL /AD4 /MPFH=cal1.hex+cal2.hex –o myGmFile.bin 
This will create a full header with all options passed through command line. It 
will put the header data upfront to the first block data on the lowest address. 
The base address of the header will be shifted down to match the header size. 
The data will be filled in to the block. The DCID-field will be added and the flag 
in the HFI as well. The NOAM-field will be 2 followed either with the placeholder 
or the real data of cal1.hex and cal2.hex. If placeholder or real data are used 
depends on if HexView can read the contents of the data from cal1.hex and/or 
cal2.hex. 
Please note, that a GM-binary file cannot be used as an input file of CAL-files, 
as this file doesn’t contain address information. 
 
myHexFile.hex /XGC:0x1000 /CS5 /DCID=0x8000 /DLS=AA 
/SWMI=12345678 /MODID=1 /MPFH=cal1.hex+cal2.hex /AL /AD4 –o 
myGmFile.bin 
This will create the file header at the address 0x1000. The created section will be 
located at the very beginning of the data. Thus, the header will be the first data in the 
output file, regardless if there are any sections with lower addresses. 
 
 
3.3.5.3 
Creating the GM file header for the calibration software (/XGCC[:address]) 
The  option  /XGCC  is  used  to  create  the  header  for  the  calibration  software.  The  major 
difference is, that the calibration file does not contain the PMA-field for address information 
and the NOAR-field. The corresponding PMA-bitfield is not set in the HFI (typically 0x22). 
 
The parameters /DCID, /SWMI, /DLS and /CS are also accepted. The /MPFH parameter 
must not be added to the command line. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
100 / 111 
based on template version 5.1.0 


Reference Manual HexView 
 
 
Example 
myCalHexFile.hex /XGCC /CS5 /DCID=0x8000 /DLS=AA /SWMI=12345678 

  /MODID=2 /FA /AL /AD4  –o myCalFile.bin 
This will create a full header with all options passed through command line. It 
will put the header data upfront to the first block data on the lowest address. 
The base address of the header will be shifted down to match the header size. 
The data will be filled in to the block. The DCID-field will be added and the flag 
in the HFI as well. A NOAM-field is not allowed in CAL-files. Therefore, the 
/MPFH option is not allowed to be used.  
Please note, that a GM-binary file cannot be used as an input file of CAL-files, 
as this file doesn’t contain address information. However, Hexview will 
automatically generate a myCalFile.hex in parallel to the bin-file. Make sure, 
that your input file has not the same name as the output file as this will overwrite 
your origin. 
Note: The option /FA should be used for CAL-files, because CALs are always 
single-region files! 
 
myHexFile.hex /XGCC:0x1000 /CS5 /DCID=0x8000 /DLS=AA 
/SWMI=12345678 /MODID=2 /FA /AL /AD4 –o myGmFile.bin 
This will create the file header at the address 0x1000. The created section will be 
located at the very beginning of the data. Thus, the header will be the first data in the 
output file, regardless if there are any sections with lower addresses. 
 
 
3.3.5.4 
Creating the GM file header with 1-byte HFI (/XGCS[:address]) 
For backward compatibility, it is also possible to create the header with one-byte HFI.  
In that case, the parameters /DCID and /MPFH shall not be given as an option. 
All other information are in accordance with the other options described above. 
3.3.5.5 
Specify the SWMI data (/SWMI=xxxx) 
The parameter /SWMI is used to specify the value within the SWMI field. The parameter in 
the  command  line  option  is  used  to  add  it  to  the  field.  The  parameter  is  treaded  as  a 
integer value and added to a 4-byte field in the SWMI-field of the header. The data can be 
represented in decimal or in hex by a leading ‘0x’. 
If the /SWMI parameter is omitted, HexView will use the default value 0x12345678. 
This parameter is only useful in combination with /XGC, /XGCC or /XGCS. 
3.3.5.6 
Adding the part number to the header (/PN) 
In some cases, the part number needs to be added to the GM-header. The part number is 
an ASCII representation of the SWMI value. If the option /PN is added in combination with 
any /XGC option, the ASCII representation of the part number will be added to the header. 
The corresponding bit of the 2nd byte of the HFI-field will be set if the option is given. 
This parameter is only useful in combination with the option /XGC or /XGCC. 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
101 / 111 
based on template version 5.1.0 




Reference Manual HexView 
3.3.5.7 
Specify the DLS values (/DLS=xx) 
The  DLS  parameter  is  used  to  specify  the  DLS  field  information  in  the  header.  The 
parameter is interpreted as ASCII characters and added to the DLS-field. The number of 
characters  in  the  DLS-field  can  either  be  two  or  three  characters.  The  HFI-field  will  be 
adapted according to the number of characters given in the parameters. 
This parameter is only useful in combination with /XGC, /XGCC or /XGCS. 
 
 
Example 
/ DLS=AA 
  The DLS is AA. The HFI field specifies a two-byte DLS field. 
 
/DLS=ABC 
The DLS is ABC. The HFI field is set to be a three-byte field. 
 
 
3.3.5.8 
Specify the Module-ID parameter (/MODID=value) 
The /MODID parameter specifies the module id of the header. The parameter specifies the 
number. The parameter can be either a decimal or a hexadecimal value if a ‘0x’ is added 
upfront. 
This parameter is only useful in combination with /XGC, /XGCC or /XGCS. 
 
 
Example 
/modid=1 

  The module-ID is 0001 in the module-id field 
 
/MODID:0x0051 
The Module-ID is set to 81dez resp. 51hex. 
 
 
3.3.5.9 
Specify the DCID-field (/DCID=value) 
The /DCID parameter specifies the DCID-value in the GM-header. This option can only be 
used for a 2-byte HFI. Thus, it can only combined with the options /XGC or /XGCC (not 
with /XGCS or /XG). 
The value can either a decimal or a hexadecimal value if it precedes with ‘0x’. 
 
 
Example 
/XGC /DCID:32238 

  /XGCC /DCID=0x8000 
 
 
3.3.5.10  Specify the MPFH field (/MPFH[=file1+file2+…] 
The  /MPFH  option  is  added  to  specify  the  MPFH  data.  In  combination  with  /XGC  the 
header will be extended to store the NOAM, DCID and address/length information from the 
files  specified  in  the  options field. The  value  of  NOAM  is  taken from  the number  of files 
specified in the parameter field. Each file is separated by the ‘+’ sign. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
102 / 111 
based on template version 5.1.0 

Reference Manual HexView 
In combination with the /XG  or /XGC parameter,  HexView  will scan the files listed in  the 
parameter  field.  If  they  could  be  found,  the  address,  length  and  DCID-fields  will  be 
extracted and added to the header information.  
Note that the files listed in the MPFH parameter must be single region files. If they contain 
multiple sections, an error will be generated and the address/length information will not be 
added.  
File format: HexView first tries to read the files as Intel-Hex or Motorola-S-Record files. If 
this is not possible, that means, if it results in a zero data container, it will try to read it as a 
GM-binary file. 
 
In  combination  with  the  /XGC  option,  HexView  will  create  sufficient  data  information  to 
store the information for the calibration files. 
If  this  option  is  added  with  /XG,  Hexview  will  analyse  for  existing  data  of  additional 
modules and will copy this field to the end of the address- and length field. 
3.3.5.11  Signature version (/sigver=value
With Global Bootloader specification V2.2, GM introduces signature verification within the 
Bootloader. The GM-header requires to contain signature information that the Bootloader 
will use for signature verification. These values are the signature version, the signature key 
ID  and  the  signature  itself.  With  Hexview  V1.08.00,  it  is  possible  to  generate  this 
information in the header file. 
One essential parameter for hexview is the signature version. This value is placed into the 
header at the required position and is passed to Hexview with this option. The value can 
either  be  an  integer  or  a  HEX-number.  Example  #1  (integer  value):  /sigver=12345678. 
Example #2 (hex value): /sigver=0x12345678. 
The signature version is a 4 byte value in the header. 
 
Note, that the parameter /DP must be used in conjunction with this parameter to instruct 
Hexview  to  calculate  the  correct  signature.  Normally,  the  /DP  parameter  outputs  the 
signature value into a file. But here with this option, Hexview will place the results into the 
corresponding position of the header within the data. 
If this option is given, Hexview outputs a concatenated file without the signature. It is the 
exact same output, but without the signature itself. So, this file can be given to GM to let 
them generate and insert the signature with real keys. 
3.3.5.12  Signature Key ID (/sigkeyid=value
This  option  is  also  required  for  the  signature  header  generation.  It  provides  the  key  ID 
information used for the signature  calculation.  It identifies  uniquely the private/public key 
combination for the signature. The value can be given in HEX or integer format, similar to 
the  sigver  option.  The  value  will  be  placed  as  a  2-byte  value  into  the  corresponding 
location of the header. 
3.3.5.13  Generate Routine header (/XGCR[:header-address]) 
This  option  is  similar  to  the  /XGC,  but  generates a  header  suitable  for  the  routines,  e.g. 
flashdriver, etc. The major difference is, that the start address will not decrease while the 
2014, Vector Informatik GmbH 
Version: 1.08.06 
103 / 111 
based on template version 5.1.0 



Reference Manual HexView 
header is placed upfront. Instead, the header is placed at the same start address where 
the routines itself are placed to . This is because the Vector bootloader does use the start 
address  of  the  header  as  the  start  address  for  the  code  itself  and  will  use  the  header 
information  only  for  internal  processes  but  will  not  locate  this  into  the  memory  (typically 
RAM). 
3.3.5.14  Generate key exchange header (/XGCK) 
This  option  is  used  to  generate  a  key  exchange  file.  It  contains  only  the  header  and 
signature  information. The data after the header contains the new public key information 
for proceeding signature values. 
Note, that the signature must be built from the previous keys, not the new key! 
3.3.6 
Output a VAG specific data file (/XV) 
This  option  generates  an  SGM-file  that  can  be  used  for  the  VAS-tester.  The  file  is 
generated as described in section 2.2.1.9.14.  
The VAG-export also requires parameters from an INI-file as described in section 0.  
 
 
Example 
HexView testappl.mhx /XV /P:vagparam.ini –o demoappl.sgm 
 
 
 
3.3.7 
Output data as Intel-HEX (/XI[:reclinelen[:rectype]]) 
This option generates the data in the Intel-HEX file format.  
The  output  can  be  either  as  Extended  Segment  or  Extended  Linear  Segment.  Hexview 
selects the appropriate format automatically, depending on the highest address of the data 
file.  If  you  want  to  force  Hexview  to  use  a  specific  output  file  format,  use  the  rectype 
selector. The following selection is possible: 
  Rectype = 0: Auto selection (same as omitting the parameter) 
  Rectype = 1: Extended Linear Segment 
  Rectype = 2: Extended Segment 
Also,  the  number  of  data  bytes  in  the  output  line  can  be  specified  using  the  reclinelen 
parameter. 
 
 
Example 
HexView anyfile.hex /XI:32 –o intelhex.hex 
  Hexview myhexfile.S19 /s /xi:16:2 –o myihex.hex 
 
 
3.3.8 
Output data as Motorola S-Record (/XS[:reclinelen[:rectype]]) 
This option generates the data in the Motorola S-Record format. 
The format (S1, S2 or S3) is  automatically detected by HexView according to the size of 
the highest address. If this address is 16-bit, the S1-record format is used. If it is up to 24-
bit, the S2-record type is used. If it is up to 32 bit long, the S3-record format is used. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
104 / 111 
based on template version 5.1.0 



Reference Manual HexView 
However, it could be useful to select the record type, e.g. when S2 or S3 is desired even 
though  the  highest  address  is  below  its  threshold.  In  that  case,  the  “rectype”  parameter 
can be selected. Use the following settings: 
  Rectype = 0: S1-Record 
  Rectype = 1: S2-Record 
  Rectype = 2: S3-Record. 
Note that Hexview will throw an error if you select a rectype lower than the address ranges 
can handle. No data will be generated. “Reclinelen” must be specified when usrecord type 
shall be selected. 
The number of data bytes per S-Record line can be specified in the reclinelen parameter. 
The  parameter  is  separated  by  a  colon.  It  can  be  specified  in  integer  or  hexadecimal 
format. 
 
 
Example 
HexView intelfile.hex /XS:32 –o srecord.s19 
  Hexview myhexfile.S19 /s /xs:16:2 –o mysrecord.s3 
 
 
3.3.9 
Outputs to a CCP/XCP kernel file (/XK) 
This option generates the flash kernel data file according to the file format necessary for 
CANape to read the file. This file format specifies a header and the data itself as Intel-HEX 
record format. 
For detailed description refer to section 2.2.1.9.4. 
 
3.3.10  Output to a GAC binary file (/XGAC, /XGACSWIL) 
The  GAC  binary  file  can  be  generated  in  two  ways.  The  standard  file  format  contains  a 
header information with some container information such as DCIDs, software version, part 
numbers, etc. A complete list of supported IDs are listed in the example for the INI-file.  
 
 
Example 
The following is an example of the INI-file information for the GAC header 
  [GACHEADERINFO] 
DCID_0=0x00 
DCID_1=0x01 
DCID_2=0x00 
SoftwareVersion="123" 
SoftwarePartNumber="1234567890ABCD" 
AppOrCalVersion="123" 
EcuCodeAndSupplierId="123456789" 
 
 
The required information will take the tool from an INI-file. The corresponding format and 
item is listed in the example above. 
2014, Vector Informatik GmbH 
Version: 1.08.06 
105 / 111 
based on template version 5.1.0 

Reference Manual HexView 
Besides this information, the GAC header also includes the address and length information 
and the number of address/length info. Thus, the GAC  binary file header contains three 
sections: 
  The GAC software information 
  The number of address/length, the address and length itself 
  The data of the file. 
We  distinguish  two  file  formats,  the  GAC  file  with  complete  information  of  all  three 
sections,  which  is  typically  for  the  program  and  calibration  files,  and  the  file  for  the 
software interlock (SWIL, sometimes also called as the “flash driver”). 
The flash driver itself has no GAC software information and consists only of the two parts, 
the address/length info and the binary data itself. Note that the SWIL should have just one 
region, so it should start with the binary value ‘01’ as the first byte. 
The SWIL file can only be generated through the commandline with the option /xgacswil, 
whereas the standard GAC file can be generated through the commandline or with “File -> 
Export -> GAC Binary File”. For the latter one it is required, that the corresponding INI-file 
contains the valid entries (see example in this section). 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
106 / 111 
based on template version 5.1.0 

Reference Manual HexView 
4  EXPDATPROC 
HexView  provides  an  open  interface  for  data  processing  and  checksum  calculation. The 
interface is realized by a DLL, called EXPDATPROC.DLL (EXPorted DATa PROCessing). 
This item describes how HexView calls these functions.  
4.1 
Interface function for checksum calculation 
The checksum calculation is called whenever the /CSn parameter is used in the command 
line or when “Edit ->Checksum calculation” is used in the GUI. 
The checksum calculation is also called during the export of  Fiat-binary,  GM-header and 
the VAG-export. 
The  following  diagram  shows  the  collaboration  of  function  calls  between  HexView  and 
Expdatproc.dll. 
To run the checksum calculation via the GUI, HexView first reads all available checksum 
calculation methods from the DLL. It first reads the number of available methods by calling 
the GetChecksumFunctionCount(), then reads the corresponding name by an iterate 
call to GetChecksumFunctionName(). This builds the list box entries in the dialog. 
 
sd Build GUI entry
Hexv iew
Expdatproc
GetChecksumFunctionCount()
GetChecksumFunctionName()
 
Figure 4-1  Build the list box entries for the GUI 
After the method has been selected, HexView runs the calculation in three steps. First, it 
initializes the calculation,  runs the calculation by passing the data block  wise  to the DLL 
and then concludes the calculation.  
Init and Deinit has the purpose to construct and destruct a context sensitive data section. 
This section is passed to the calculation together with the data. 
The function GetChecksumSizeOfResult() has been introduced to check the length of 
the  results  of  the  checksum  calculation.  This  allows  HexView  to  prepare  the  data 
container.  It  also  allows  HexView  to  spare  the  address  section  where  the  checksum 
calculation shall be placed to. 
The  following  diagram  shows  the  message  flow  when  processing  the  checksum 
calculation method: 
2014, Vector Informatik GmbH 
Version: 1.08.06 
107 / 111 
based on template version 5.1.0 


Reference Manual HexView 
An error code can be passed to HexView during the calculation. HexView asks for the text 
description  in  a  separate  function.  This  error  text  description  is  then  shown  in  the  error 
report.  
 
sd Run Checksum calculation
Hexv iew
Expdatproc
GetChecksumSizeOfResult(methodIndex)
InitChecksum(TExportDataInfo)
DoCalculateChecksum(TExportDataInfo,CSumActionBegin)
RepeatPerSection
DoCalculateChecksum(TExportDataInfo,CSumActionDoData)
DoCalculateChecksum(TExportDataInfo,CSumActionEnd)
 
Figure 4-2  Function calls when running checksum calculation 
The  diagram  above  shows  the  function  interface  and  the  message  sequence  chart. The 
function  DoCalculateChecksum  with  the  parameter  CSumActionDoData  is  called 
several  times.  Typically,  once  per  section.  The  segInData  contains  the  pointer  to  the 
section  data,  dataInLength  specifies  the  length  of  the  data,  and  dataInAddress  contains 
the base address of the section. 
 
 
Note 
segInData is a pointer to the internal data buffer of HexView. The function can therefore 
  operate and destroy the data. Be careful not to write to any location where segInData 
or segOutData points to in the DoCalculateChecksum() function. 
 
 
After the calculation has been completed, the DoCalculateChecksum function is called 
the  last  time,  but  with  the  parameter  CSumActionEnd.  The  segOutData  must  contain 
pointer  to  the  data  buffer,  that  holds  the  checksum.  The  segOutLength  specifies  the 
number  of  bytes  in  segOutData. The  segOutAddress  parameter  is  not  used  and  ignored 
here. 
4.2 
Interface function for data processing 
The  data  processing  interface  is  similar to  the  interface  of  the  checksum  calculation.  It’s 
the  same  way  how  HexView  gets  the  available  methods  by  calling  the  functions 
GetDataProcessingFunctionCount() that returns the number of available methods, 
2014, Vector Informatik GmbH 
Version: 1.08.06 
108 / 111 
based on template version 5.1.0 

Reference Manual HexView 
and then repetitively the function GetDataProcessingFunctionName() until one name 
per method has been read.  
It  also  runs  first  the  function  InitDataProcessing(TExportDataInfo*)  before 
running the DoDataProcessing(). But with the difference, that the DoDataProcessing is 
called  only  once.  HexView  does  not  distinguish  between  the  Begin,  DoData  and  End 
function,  but  calls  the  DoDataProcessing  once.  But  the  TExportDataInfo  structure  also 
contains  the  segInData,  segInLength  and  segInAddress  information.  It  also  contains  the 
structure  segOutData,  segoutLength  and  segOutAddress.  Before  HexView  calls 
DoDataProcessing, it initializes segOutData and segOutLength with the values and pointer 
of segInData and segInLength. Thus, if the data remains the same, HexView will use the 
same data set.  
However, if the DoDataProcessing() function wants to manipulate the data, it can overwrite 
the default output. HexView will then replace the returned data with the new contents. The 
memory buffer where segOutBuffer points to will be used instead. The former segInBuffer 
will  be  released    If  segOutLength  is  different,  the  segment  length  will  be  adapted.  The 
operation is done for every segment or block. 
It is also possible to manipulate the data in segInData without restructuring the data buffer 
(only possible if the resulting data is not larger than the input data). The manipulation can 
operate directly on the segInData buffer which is the internal data buffer of HexView. This 
allows  to  run  data  encryption,  decryption,  compression  and  decompression  with  this 
method. 
Since most of these data processing operation requires a parameter, the TExportDataInfo-
>generalParam contains a pointer to a parameter string. The parameter typically points to 
the  data  buffer  from  the  ‘parameter’  field  of  the  dialog  (see  section:  Run  Data 
Processing
”)
, or it points to the buffer of the command line if the  command line option is 
used  (option  ‘param’  in  section  3.2.8:  Run  Data  Processing  interface 
(/DPn:param[,section,key][;outfilename])
”).
 
4.3 
Software licenses 
Some algorithms in the expdatproc.dll are based on free code from the internet. To honor 
the efforts of the authors, the following disclose the authors and their work: 
  Code for SHA1 is based upon free code from Dominik Reichl. 
  The code for RIPEMD-160 is based upon the code from K.U.Leuven Department of 
Electrical Engineering-ESAT/COSIC. RIPEMD-160 software written by Antoon 
Bosselaers, available at http://www.esat.kuleuven.ac.be/~cosicart/ps/AB-9601/. 
  Algorithms for AES encryption/decryption are based upon the following authors (public 
domain): 
  @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> 
  @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> 
  @author Paulo Barreto <paulo.barreto@terra.com.br> 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
109 / 111 
based on template version 5.1.0 

Reference Manual HexView 
5  Glossary and Abbreviations 
5.1 
Glossary 
Term 
Description 
 
 
 
 
5.2 
Abbreviations 
Abbreviation 
Description 
 
 
 
 
2014, Vector Informatik GmbH 
Version: 1.08.06 
110 / 111 
based on template version 5.1.0 

Reference Manual HexView 
6  Contact 
Visit our website for more information on 
 
  News 
  Products 
  Demo software 
  Support 
  Training data 
  Addresses 
 
www.vector.com 
Send feedback to:  mailto:fblsupport@vector-informatik.de 
2014, Vector Informatik GmbH 
Version: 1.08.06 
111 / 111 
based on template version 5.1.0 

Document Outline


6 - Python (TL112A)

Python (TL112A)

Specific Component Tools

6.1 - sgml_input

  MetalCristalDeuterioEnerga  
160.6363.40639.230-80/3.965

Flotas (max. 9)
Num.MisinCantidadComienzoSalidaObjetivoLlegadaOrden
1Espionaje (F)3[2:250:6]Wed Aug 9 18:00:02[2:242:5]Wed Aug 9 18:01:02
2Espionaje (V)3[2:250:6]Wed Aug 9 17:59:55[2:242:1]Wed Aug 9 18:01:55
Nueva misin: elegir naves
NavesDisponibles--
Nave pequea de carga10 mx
Nave grande de carga19 mx
Crucero6 mx
Reciclador1 mx
Sonda de espionaje139 mx
Ninguna naveTodas las naves


6.2 - test_difflib_expect


from
to
f1f1
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
61236123
71237123
81238123
91239123
1012310123
1112311123
1212312123
1312313123
1412314123
1512315123
1616
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
2112321123
2212322123
2312323123
2412324123
2512325123
2612326123
2712327123
2812328123
2912329123
3012330123
3131
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.
3612336123
3712337123
3812338123
3912339123
4012340123
4112341123
4212342123
4312343123
4412344123
4512345123
Legends
Colors
 Added 
Changed
Deleted
Links
(f)irst change
(n)ext change
(t)op

Context (first diff within numlines=5(default))


from
to
f1f1
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
61236123
71237123
81238123
91239123
1012310123
1212312123
1312313123
1412314123
1512315123
1616
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
2112321123
2212322123
2312323123
2412324123
2512325123
2712327123
2812328123
2912329123
3012330123
3131
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.
3612336123
3712337123
3812338123
3912339123
4012340123

Context (first diff after numlines=5(default))


from
to
74567456
84568456
94569456
1045610456
1111
n12   1. Beautiful is beTTer than ugly.n12   1. Beautiful is better than ugly.
13   2. Explicit is better than implicit.
14   3. Simple is better than complex.13   3.   Simple is better than complex.
15   4. Complex is better than complicated.14   4. Complicated is better than complex.
15   5. Flat is better than nested.
1612316123
1712317123
1812318123
1912319123
2012320123
2212322123
2312323123
2412324123
2512325123
2626
n27   1. Beautiful is beTTer than ugly.n27   1. Beautiful is better than ugly.
28   2. Explicit is better than implicit.
29   3. Simple is better than complex.28   3.   Simple is better than complex.
30   4. Complex is better than complicated.29   4. Complicated is better than complex.
30   5. Flat is better than nested.
3112331123
3212332123
3312333123
3412334123
3512335123
3712337123
3812338123
3912339123
4012340123
4141
t42   1. Beautiful is beTTer than ugly.t42   1. Beautiful is better than ugly.
43   2. Explicit is better than implicit.
44   3. Simple is better than complex.43   3.   Simple is better than complex.
45   4. Complex is better than complicated.44   4. Complicated is better than complex.
45   5. Flat is better than nested.
4612346123
4712347123
4812348123
4912349123
5012350123

Context (numlines=6)


from
to
f1f1
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
61236123
71237123
81238123
91239123
1012310123
1112311123
1212312123
1312313123
1412314123
1512315123
1616
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
2112321123
2212322123
2312323123
2412324123
2512325123
2612326123
2712327123
2812328123
2912329123
3012330123
3131
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.
3612336123
3712337123
3812338123
3912339123
4012340123
4112341123

Context (numlines=0)


from
to
n2   1. Beautiful is beTTer than ugly.n2   1. Beautiful is better than ugly.
3   2. Explicit is better than implicit.
4   3. Simple is better than complex.3   3.   Simple is better than complex.
5   4. Complex is better than complicated.4   4. Complicated is better than complex.
5   5. Flat is better than nested.
n17   1. Beautiful is beTTer than ugly.n17   1. Beautiful is better than ugly.
18   2. Explicit is better than implicit.
19   3. Simple is better than complex.18   3.   Simple is better than complex.
20   4. Complex is better than complicated.19   4. Complicated is better than complex.
20   5. Flat is better than nested.
t32   1. Beautiful is beTTer than ugly.t32   1. Beautiful is better than ugly.
33   2. Explicit is better than implicit.
34   3. Simple is better than complex.33   3.   Simple is better than complex.
35   4. Complex is better than complicated.34   4. Complicated is better than complex.
35   5. Flat is better than nested.

Same Context


from
to
t No Differences Found t No Differences Found 

Same Full


from
to
t1t1
2   1. Beautiful is beTTer than ugly.2   1. Beautiful is beTTer than ugly.
3   2. Explicit is better than implicit.3   2. Explicit is better than implicit.
4   3. Simple is better than complex.4   3. Simple is better than complex.
5   4. Complex is better than complicated.5   4. Complex is better than complicated.
61236123
71237123
81238123
91239123
1012310123
1112311123
1212312123
1312313123
1412314123
1512315123
1616
17   1. Beautiful is beTTer than ugly.17   1. Beautiful is beTTer than ugly.
18   2. Explicit is better than implicit.18   2. Explicit is better than implicit.
19   3. Simple is better than complex.19   3. Simple is better than complex.
20   4. Complex is better than complicated.20   4. Complex is better than complicated.
2112321123
2212322123
2312323123
2412324123
2512325123
2612326123
2712327123
2812328123
2912329123
3012330123
3131
32   1. Beautiful is beTTer than ugly.32   1. Beautiful is beTTer than ugly.
33   2. Explicit is better than implicit.33   2. Explicit is better than implicit.
34   3. Simple is better than complex.34   3. Simple is better than complex.
35   4. Complex is better than complicated.35   4. Complex is better than complicated.
3612336123
3712337123
3812338123
3912339123
4012340123
4112341123
4212342123
4312343123
4412344123
4512345123

Empty Context


from
to
t No Differences Found t No Differences Found 

Empty Full


from
to
t Empty File t Empty File 

tabsize=2

f1f1
t2    Line 1: preceeded by from:[tt] to:[ssss]t2    Line 1: preceeded by from:[tt] to:[ssss]
3      Line 2: preceeded by from:[sstt] to:[sssst]3      Line 2: preceeded by from:[sstt] to:[sssst]
4      Line 3: preceeded by from:[sstst] to:[ssssss]4      Line 3: preceeded by from:[sstst] to:[ssssss]
5Line 4:   has from:[sst] to:[sss] after :5Line 4:   has from:[sst] to:[sss] after :
6Line 5: has from:[t] to:[ss] at end 6Line 5: has from:[t] to:[ss] at end

tabsize=default

f1f1
t2                Line 1: preceeded by from:[tt] to:[ssss]t2    Line 1: preceeded by from:[tt] to:[ssss]
3                Line 2: preceeded by from:[sstt] to:[sssst]3        Line 2: preceeded by from:[sstt] to:[sssst]
4                Line 3: preceeded by from:[sstst] to:[ssssss]4      Line 3: preceeded by from:[sstst] to:[ssssss]
5Line 4:         has from:[sst] to:[sss] after :5Line 4:   has from:[sst] to:[sss] after :
6Line 5: has from:[t] to:[ss] at end     6Line 5: has from:[t] to:[ss] at end

Context (wrapcolumn=14,numlines=0)

n4line 2n4line 2    adde
 >d
n6line 4   changn6line 4   chanG
>ed>Ed
7line 5   chang7line 5a  chanG
>ed>ed
8line 6   chang8line 6a  chang
>ed>Ed
n10line 8  subtran10line 8
>cted 
t1212345678901234t121234567890
>56789012345689 
>012345 
13short line13another long l
 >ine that needs
 > to be wrapped
14just fits in!!14just fitS in!!
15just fits in t15just fits in t
>wo lines yup!!>wo lineS yup!!

wrapcolumn=14,splitlines()

f1line 0f1line 0
212345678901234212345678901234
>56789012345689>56789012345689
>012345>012345
3line 13line 1
n4line 2n4line 2    adde
 >d
5line 35line 3
n6line 4   changn6line 4   chanG
>ed>Ed
7line 5   chang7line 5a  chanG
>ed>ed
8line 6   chang8line 6a  chang
>ed>Ed
9line 79line 7
n10line 8  subtran10line 8
>cted 
11line 911line 9
t1212345678901234t121234567890
>56789012345689 
>012345 
13short line13another long l
 >ine that needs
 > to be wrapped
14just fits in!!14just fitS in!!
15just fits in t15just fits in t
>wo lines yup!!>wo lineS yup!!
16the end16the end

wrapcolumn=14,splitlines(True)

f1line 0f1line 0
212345678901234212345678901234
>56789012345689>56789012345689
>012345>012345
3line 13line 1
n4line 2n4line 2    adde
 >d
5line 35line 3
n6line 4   changn6line 4   chanG
>ed>Ed
7line 5   chang7line 5a  chanG
>ed>ed
8line 6   chang8line 6a  chang
>ed>Ed
9line 79line 7
n10line 8  subtran10line 8
>cted 
11line 911line 9
t1212345678901234t121234567890
>56789012345689 
>012345 
13short line13another long l
 >ine that needs
 > to be wrapped
14just fits in!!14just fitS in!!
15just fits in t15just fits in t
>wo lines yup!!>wo lineS yup!!
16the end16the end

7 - SwcSuprt (TL109A)

SwcSuprt (TL109A)

Component Documentation

7.1 - SwcSuprt_Usage

VersionDateAuthorDescription
101-Dec-2016Owen ToshInitial version
207-Dec-2016Owen ToshAdded Polyspace report generation

Table of Contents

Introduction 3

Running the Tool 4

The Main Menu 5

The Component Menu 6

File and Directory Structure 8

Introduction

SwcSuprt is a component support script for EA4 component development. It automates many redundant tasks, and is useful to easily update a component to the latest standards.

Both GUI and command-line interfaces are supported. If this script is run with both a path to a component and a command, the script continues running in the command line. Otherwise, the GUI is initialized.

Dependencies

This tool requires the TL112A_Python component. This component contains the Nexteer Python library nxtr.py, which is required by this tool (a vanilla Python environment will not contain this library).

Running the Tool

Launch.bat

In the tools directory, running Launch.bat will load the tool directly with no arguments. The tool prompts the user with the main menu, which can be used to create a new component or select an existing component. Once this is done, the user is prompted with the component menu.

SWCSupport.bat

Once the tool is integrated with a component, it can be launched with SWCSupport.bat, located in the component’s tools directory. This will immediately launch the component menu.

Command Line Usage

The expected command line format is as follows:

swcsuprt.py ["/path/to/component" [command]]

If no arguments are provided, the tool will present the main menu. If run with a single argument, the tool will open the component menu for the component at the path provided. The path may be relative or absolute.

If run with two arguments, the tool will run in a non-interactive command line format. command may be one of the following:

  • initialize – create basic directories if they don't already exist

  • migrate – perform component migration to latest directory format. Also runs:

    • generate_greenhills

    • generate_davinci

    • generate_integration_files

    • generate_generation_script

  • generate_greenhills – generate Green Hills project file

  • generate_davinci – generate DaVinci component files

  • generate_integration_files – generate integration files

  • generate_generation_script – generate generation batch script, or remove it if not necessary

  • generate_local_headers – generate local header files from Configurator

  • generate_polyspace_files – generate Polyspace project files and stubs

  • unzip_polyspace – unzip Polyspace archives

  • open_bugfinder – open Polyspace Bug Finder project

  • open_codeprover – open Polyspace Code Prover project

  • zip_polyspace – zip current Polyspace results into archives

See the description of the functions in the component menu for more details on each command.

The Main Menu

Click New Component to create a folder template for a new component. The tool will prompt for a full component name and parent directory, and then present the component menu for the newly created component. The new component will only contain the basic folder structure, and the SWCSupport.bat script.

Click Select Existing to open the component menu for an existing component. The tool will prompt for the main component directory. If the selected directory is missing the standard component subfolders (e.g. autosar, src, include), the tool will display a warning.

Click ? to open this usage document.

Click Quit to close the tool.

The Component Menu

The main menu contains five sections:

Component

The component short name is shown here.

If the component appears to be of an older format (e.g. contains a tools/contract directory), this section will also contain an additional button. Click Migrate to automatically update this component to the latest format, moving files as needed. Note that this will also run all commands in the Create/Update section.

Create/Update

Click Green Hills to generate the Green Hills project file (.gpj).

Click DaVinci to generate the DaVinci Configurator project files. This includes the DaVinci Project file (.dpa) and some files in the tools/local/autosar directory. Note that if a .bswmd.arxml file is added to the autosar folder, this function must be run in order to include it in the component configuration.

Click Integration Files to generate files for integration. This feature checks for any .bswmd.arxml files in the autosar directory, then creates an integration script in the tools/integrate folder. If no .bswmd.arxml files are found, no integration script is needed and it is removed.

Click Generation Script to generate the batch script used by Configurator when generating configuration files from ARTT text template files. This feature checks for any template files (.tt) in the tools/template directory, and creates a generation script if found. Otherwise, the generation script is removed.

Generate

Click Configurator to generate the RTE files from the project, as well as the contract header files. If an error occurs, log files may exist in the tools directory, as well as the tools/local/generate directory.

Polyspace

Click Generate Files to generate all project and related files to the tools/Polyspace directory. This function checks for all source files and include directories, adding them to the Polyspace projects. It also looks for a corresponding design component in the component’s parent directory. If not automatically found, the user is prompted to locate it manually or proceed without using a data dictionary. Note that not using a data dictionary causes many orange errors in Code Prover. It is recommended to run this function before analysis is performed.

Click Unzip Results to decompress any saved results from previous analyses. Previous results are stored in the tools/Polyspace/Saved directory.

Click Open Bug Finder to open the Bug Finder Polyspace project.

Click Open Code Prover to open the Code Prover Polyspace project.

Click Create Reports to generate XML reports from the Bug Finder and Code Prover results. These will be used for statistical analysis on components, so these reports should be regenerated after any code change.

Click Zip Results to delete backup comment folders and archive the current results to the tools/Polyspace/Saved directory.

Other Buttons

Click ? to open this usage document.

Click Quit to close the tool.

File and Directory Structure

The following directories exist in every software component:

autosar – contains all Developer/Configurator files

doc – documentation

generate – all generated source and header files (used in the integration project)

include – component header files

src – component source files

tools – contains the component DaVinci project file, the Green Hills Project file, and a script to launch the SwcSuprt tool

tools/integrate – all integration-related files

tools/local – all files used in local component development, but not used at the integration project level. This contains any stubs required for static analysis, as well as configurator files used to create a local environment. Each directory in this path resembles the base directory structure (e.g. autosar, generate, include, src).

tools/Polyspace – Polyspace Bug Finder and Code Prover project files, along with project-related files. Also contains the archived results from previous analyses.

tools/template – any files involved in generation from text templates at both the component and integration project level

7.2 - TL109A_SwcSuprt Peer Review Checklist


Overview

Summary Sheet
Synergy Project


Sheet 1: Summary Sheet
























Rev 1.28-Jun-15

Peer Review Summary Sheet


























Synergy Project Name:


kzshz2: Intended Use: Identify which component is being reviewed. This should be the Module Short Name from Synergy Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. TL109A_SwcSuprt
Revision / Baseline:


kzshz2: Intended Use: Identify which Synergy revision of this component is being reviewed Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. 1.1.0

























Change Owner:


kzshz2: Intended Use: Identify the developer who made the change(s) Rationale: A change request may have more than one resolver, this will help identify who made what change. Change owner identification may be required by indusrty standards. Matthew Leser
Work CR ID:


EA4#9522





























kzshz2: Intended Use: Intended to identify at a high level to the reviewers which areas of the component have been changed. Rationale: This will be good information to know when ensuring appropriate reviews have been completed. Modified File Types:















































































































































































kzshz2: Intended Use: Identify who where the reviewers, what they reviewed, and if the reviewed changes have been approved to release the code for testing. Comments here should be at a highlevel, the specific comments should be present on the specific review form sheet. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. ADD DR Level Move reviewer and approval to individual checklist form Review Checklist Summary:






















































Reviewed:































N/AMDD


N/ASource Code


N/APolySpace









































N/AIntegration Manual


N/ADavinci Files








































































Comments:

Tool component. Only files and folder structure were reviewed.






Functional Changes made by Owen Tosh. Reviewed by Matt Leser, taking over component.



















































































General Guidelines:
- The reviews shall be performed over the portions of the component that were modified as a result of the Change Request.
- New components should include FDD Owner and Integrator as apart of the Group Review Board (Source Code, Integration Manual, and Davinci Files)
- Enter any rework required into the comment field and select No. When the rework is complete, review again using this same review sheet and select Yes. Add date and additional comment stating that the rework is completed.
- To review a component with multiple source code files use the "Add Source" button to create a Source code tab for each source file.
- .h file should be reviewed with the source file as part of the source file.





















Sheet 2: Synergy Project

Peer Review Meeting Log (Component Synergy Project Review)



















































Quality Check Items:




































Rationale is required for all answers of No










New baseline version name from Summary Sheet follows








Yes
Comments:



naming convention





































Project contains necessary subprojects








Yes
Comments:










































Project contains the correct version of subprojects








Yes
Comments:










































Design subproject is correct version








N/A
Comments:











































General Notes / Comments:



























































LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Matthew Leser


Review Date :

01/30/17
































Lead Peer Reviewer:


Lucas Wendling


Approved by Reviewer(s):



Yes































Other Reviewer(s):