This is the multi-page printable view of this section. Click here to print.
Tools (scripting, external tools...)
- 1: Artt (TL105A)
- 1.1: ReleaseNotes_Artt_Generator
- 1.2: ReleaseNotes_Artt_Generator_ind
- 1.3: ReleaseNotes_Artt_Generators
- 2: CptRteGen (TL101A)
- 2.1: TL101A_CptRteGen Peer Review Checklists
- 2.2: about
- 2.3: about
- 2.4: about
- 2.5: about
- 2.6: about
- 2.7: about
- 2.8: about
- 2.9: about
- 2.10: about
- 2.11: about
- 2.12: about
- 2.13: about
- 2.14: cpl-v10
- 2.15: DOM-LICENSE
- 2.16: DVCfg_AutomationInterfaceDocumentation
- 2.17: DVCfg_AutomationInterfaceDocumentation_ind
- 2.18: DVCfg_AutomationInterfaceDocumentations
- 2.19: epl-v10
- 2.20: epl-v10
- 2.21: epl-v10
- 2.22: license
- 2.23: license
- 2.24: license
- 2.25: SAX-LICENSE
- 2.26: Welcome
- 2.27: Welcome
- 2.28:
- 3: Davinci (TL102A)
- 3.1: TL102A_Davinci Peer Review Checklists
- 3.2: about
- 3.3: about
- 3.4: about
- 3.5: about
- 3.6: AN-ISC-8-1102_IdentityManager_MultipleECUs
- 3.7: AN-ISC-8-1102_IdentityManager_MultipleECUs_ind
- 3.8: AN-ISC-8-1102_IdentityManager_MultipleECUss
- 3.9: ApplicationNotes_DifferenceAnalyzer
- 3.10: ApplicationNotes_DifferenceAnalyzer_ind
- 3.11: ApplicationNotes_DifferenceAnalyzers
- 3.12: LicenseManagerHelp
- 3.13: LicenseManagerHelp_ind
- 3.14: LicenseManagerHelps
- 3.15: TechnicalReference_AutoConnect
- 3.16: TechnicalReference_AutoConnect_ind
- 3.17: TechnicalReference_AutoConnects
- 3.18: TechnicalReference_DataTypes_AR4
- 3.19: TechnicalReference_DataTypes_AR4_ind
- 3.20: TechnicalReference_DataTypes_AR4s
- 3.21: TechnicalReference_EcuConfigurationFiles
- 3.22: TechnicalReference_EcuConfigurationFiles_ind
- 3.23: TechnicalReference_EcuConfigurationFiless
- 3.24: TechnicalReference_UserDefinedAttributeExport
- 3.25: TechnicalReference_UserDefinedAttributeExport_ind
- 3.26: TechnicalReference_UserDefinedAttributeExports
- 3.27: UserManual_DataImport
- 3.28: UserManual_DataImport_ind
- 3.29: UserManual_DataImports
- 3.30: UserManual_Working_with_DCF
- 3.31: UserManual_Working_with_DCF_ind
- 3.32: UserManual_Working_with_DCFs
- 3.33: Welcome
- 3.34:
- 3.35:
- 3.36:
- 4: GENyFramework (TL104A)
- 5: HexView (TL106A)
- 6: Python (TL112A)
- 6.1: sgml_input
- 6.2: test_difflib_expect
- 7: SwcSuprt (TL109A)
1.1 - ReleaseNotes_Artt_Generator
1.2 - ReleaseNotes_Artt_Generator_ind
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
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 - CptRteGen (TL101A)
CptRteGen (TL101A)
Component Documentation
Specific Component Tools
- about.html
- about.html
- about.html
- about.html
- about.html
- about.html
- about.html
- about.html
- about.html
- about.html
- about.html
- about.html
- cpl-v10.html
- DOM-LICENSE.html
- DVCfg_AutomationInterfaceDocumentation.html
- DVCfg_AutomationInterfaceDocumentation.pdf
- DVCfg_AutomationInterfaceDocumentation_ind.html
- DVCfg_AutomationInterfaceDocumentations.html
- epl-v10.html
- epl-v10.html
- epl-v10.html
- license.html
- license.html
- license.html
- SAX-LICENSE.html
- Welcome.html
- Welcome.html
2.1 - TL101A_CptRteGen Peer Review Checklists
Overview
Summary SheetSynergy Project
Sheet 1: Summary Sheet

Sheet 2: Synergy Project
2.2 - about
Copyright
Vector Informatik GmbH
2.3 - about
Copyright
Vector Informatik GmbH
2.4 - about
Copyright
Vector Informatik GmbH
2.5 - about
Copyright
Vector Informatik GmbH
2.6 - 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 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 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 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 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
Copyright
Vector Informatik GmbH
2.12 - 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 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
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
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.
Copyright © 2009 W3C ® ( MIT , ERCIM , Keio) Usage policies apply.
2.16 - DVCfg_AutomationInterfaceDocumentation
2.17 - DVCfg_AutomationInterfaceDocumentation_ind
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
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"5 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
- 1 Introduction
- 2 Getting started with Script Development
- 3 AutomationInterface Architecture
- 4 AutomationInterface API Reference
- 4.1 Introduction
- 4.2 Script Creation
- 4.3 Script Task Types
- 4.4 Script Task Execution
- 4.4.1 Execution Context
- 4.4.2 Task Execution Sequence
- 4.4.3 Script Path API during Execution
- 4.4.4 Script logging API
- 4.4.5 User Interactions and Inputs
- 4.4.6 Script Error Handling
- 4.4.7 User defined Classes and Methods
- 4.4.8 Usage of Automation API in own defined Classes and Methods
- 4.4.9 User defined Script Task Arguments in Commandline
- 4.4.10 Stateful Script Tasks
- 4.5 Project Handling
- 4.6 Model
- 4.6.1 Introduction
- 4.6.2 Getting Started
- 4.6.3 BswmdModel in AutomationInterface
- 4.6.4 MDF Model in AutomationInterface
- 4.6.4.1 Reading the MDF Model
- 4.6.4.2 Writing the MDF Model
- 4.6.4.3 Simple Property Changes
- 4.6.4.4 Creating single Child Members (0:1)
- 4.6.4.5 Creating and adding Child List Members (0:*)
- 4.6.4.6 Updating existing Elements
- 4.6.4.7 Deleting Model Objects
- 4.6.4.8 Duplicating Model Objects
- 4.6.4.9 Special properties and extensions
- 4.6.4.10 AUTOSAR Root Object
- 4.6.4.11 ActiveEcuC
- 4.6.4.12 DefRef based Access to Containers and Parameters
- 4.6.4.13 Ecuc Parameter and Reference Value Access
- 4.6.5 SystemDescription Access
- 4.6.6 Transactions
- 4.6.7 Post-build selectable Variance
- 4.7 Generation
- 4.8 Validation
- 4.8.1 Introduction
- 4.8.2 Access Validation-Results
- 4.8.3 Model Transaction and Validation-Result Invalidation
- 4.8.4 Solve Validation-Results with Solving-Actions
- 4.8.5 Advanced Topics
- 4.8.5.1 Access Validation-Results of a Model-Object
- 4.8.5.2 Access Validation-Results of a DefRef
- 4.8.5.3 Filter Validation-Results using an ID Constant
- 4.8.5.4 Identification of a Particular Solving-Action
- 4.8.5.5 Validation-Result Description as MixedText
- 4.8.5.6 Further IValidationResultUI Methods
- 4.8.5.7 IValidationResultUI in a variant (Post Build Selectable) Project
- 4.8.5.8 Erroneous CEs of a Validation-Result
- 4.8.5.9 Examine Solving-Action Execution
- 4.8.5.10 Create a Validation-Result in a Script Task
- 4.9 Update Workflow
- 4.10 Domains
- 4.11 Persistency
- 4.12 Utilities
- 4.13 Advanced Topics
- 5 Data models in detail
- 5.1 MDF model - the raw AUTOSAR data
- 5.2 Post-build selectable
- 5.3 BswmdModel details
- 5.3.1 BswmdModel - DefinitionModel
- 5.3.1.1 Types of DefinitionModels
- 5.3.1.2 DefRef Getter methods of Untyped Model
- 5.3.1.3 References
- 5.3.1.4 Post-build selectable with BswmdModel
- 5.3.1.5 Creation ModelView of the BswmdModel
- 5.3.1.6 Lazy Instantiating
- 5.3.1.7 Optional Elements
- 5.3.1.8 Class and Interface Structure of the BswmdModel
- 5.3.1.9 BswmdModel write access
- 5.3.1 BswmdModel - DefinitionModel
- 5.4 Model utility classes
- 6 AutomationInterface Content
- 7 Automation Script Project
- 8 AutomationInterface Changes between Versions
- 8.1 Changes in MICROSAR AR4-R17 - Cfg5.14
- 8.2 Changes in MICROSAR AR4-R16 - Cfg5.13
- 9 Appendix
2.19 - epl-v10
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 - 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 - 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
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):
- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)
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:
- 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.
- 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.
- 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
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):
- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)
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:
- 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.
- 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.
- 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
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):
- Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)
- Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
- Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
- Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
- Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)
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:
- 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.
- 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.
- 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
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 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 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 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:
- 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.)
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.
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
- about.html
- about.html
- about.html
- about.html
- AN-ISC-8-1102_IdentityManager_MultipleECUs.html
- AN-ISC-8-1102_IdentityManager_MultipleECUs.pdf
- AN-ISC-8-1102_IdentityManager_MultipleECUs_ind.html
- AN-ISC-8-1102_IdentityManager_MultipleECUss.html
- ApplicationNotes_DifferenceAnalyzer.html
- ApplicationNotes_DifferenceAnalyzer.pdf
- ApplicationNotes_DifferenceAnalyzer_ind.html
- ApplicationNotes_DifferenceAnalyzers.html
- LicenseManagerHelp.html
- LicenseManagerHelp.pdf
- LicenseManagerHelp_ind.html
- LicenseManagerHelps.html
- TechnicalReference_AutoConnect.html
- TechnicalReference_AutoConnect.pdf
- TechnicalReference_AutoConnect_ind.html
- TechnicalReference_AutoConnects.html
- TechnicalReference_DataTypes_AR4.html
- TechnicalReference_DataTypes_AR4.pdf
- TechnicalReference_DataTypes_AR4_ind.html
- TechnicalReference_DataTypes_AR4s.html
- TechnicalReference_EcuConfigurationFiles.html
- TechnicalReference_EcuConfigurationFiles.pdf
- TechnicalReference_EcuConfigurationFiles_ind.html
- TechnicalReference_EcuConfigurationFiless.html
- TechnicalReference_UserDefinedAttributeExport.html
- TechnicalReference_UserDefinedAttributeExport.pdf
- TechnicalReference_UserDefinedAttributeExport_ind.html
- TechnicalReference_UserDefinedAttributeExports.html
- UserManual_DataImport.html
- UserManual_DataImport.pdf
- UserManual_DataImport_ind.html
- UserManual_DataImports.html
- UserManual_Working_with_DCF.html
- UserManual_Working_with_DCF.pdf
- UserManual_Working_with_DCF_ind.html
- UserManual_Working_with_DCFs.html
- Welcome.html
3.1 - TL102A_Davinci Peer Review Checklists
Overview
Summary SheetSynergy Project
Sheet 1: Summary Sheet

Sheet 2: Synergy Project
3.2 - 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 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 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 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
3.7 - AN-ISC-8-1102_IdentityManager_MultipleECUs_ind
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
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
- 2.3.1 Specifying the ECU Extracts to be merged
- 2.3.2 Specifying the merged ECU instance name
- 2.3.3 PDU overlay
3.9 - ApplicationNotes_DifferenceAnalyzer
3.10 - ApplicationNotes_DifferenceAnalyzer_ind
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
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
3.13 - LicenseManagerHelp_ind
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
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
a 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
- 1 Overview
- 2 Activate / Update a License
- 3 Extend a License
- 4 Return a License
- 5 Repair Licenses
- 6 FAQs and Background Information
- 7 Contact
3.15 - TechnicalReference_AutoConnect
3.16 - TechnicalReference_AutoConnect_ind
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
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
3.19 - TechnicalReference_DataTypes_AR4_ind
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
3.20 - TechnicalReference_DataTypes_AR4s
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) Platform 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
C
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
- 1 Introduction
- 2 Data Types and Data Prototypes
- 3 Design of data prototypes in DaVinci tool chain
- 4 Design examples
- 5 Additional information
- 6 Glossary and Abbreviations
- 7 Contact
3.21 - TechnicalReference_EcuConfigurationFiles
3.22 - TechnicalReference_EcuConfigurationFiles_ind
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
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
w
2014, Vector Informatik GmbH
Version: 1.13
18 / 34

ECU-C File Handling Technical Reference
ServiceComponentPrototypeRef
w
SoftwareComponentPrototypeRef
w
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/
r
SchMMainFunctionSymbol
r
SchMBswActivationOffset
r
SchMMappedToTask
r
SchMPositionInTask
r
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,
a
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/
w
ShortName
(r)
ComDataInvalidAction
w
ComInvalidNotification
w
ComSignalDataInvalidValue
w
SystemTemplateSystemSignalRef
(r)/w
ComSignalInitValue
w
ComErrorNotification
w
ComNotification
w
ComTimeoutNotification
w
ComTimeoutFactor
w
ComSignalType
w
ComFilter/
ComFilterAlgorithm
w
ComFilterMask
w
ComSignalGroup/
w
ShortName
(r)
ComDataInvalidAction
w
ComErrorNotification
w
ComInvalidNotification
w
ComNotification
w
ComTimeoutFactor
w
ComTimeoutNotification
w
SystemTemplateSignalGroupRef
(r)/w
2014, Vector Informatik GmbH
Version: 1.13
21 / 34

ECU-C File Handling Technical Reference
ComGroupSignal/
(r)/w
ShortName
(r)
ComSignalDataInvalidValue
w
ComSignalInitValue
w
ComSignalType
w
SystemTemplateSystemSignalRef
(r)/w
ComFilter/
ComFilterAlgorithm
w
ComFilterMask
w
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/
w
Implicit
OsAlarmAccessingApplication
w
Implicit
OsAlarmAction/
Implicit
OsAlarmActivateTask/
Implicit
OsAlarmActivateTaskRef
w
Implicit
OsAlarmSetEvent/
Implicit
OsAlarmSetEventRef
w
Implicit
OsAlarmSetEventTaskRef
w
Implicit
OsAlarmCounterRef
w
Explicit
OsEvent/
w
Implicit
OsEventMask
w
Implicit
OsApplication/
w
Explicit / Implicit
OsTrusted
r/w
Explicit / Implicit
OsAppAlarmRef
w
Implicit
OsAppResourceRef
w
Implicit
OsAppTaskRef
w
Implicit
OsApplicationTrustedFunction/
Implicit
OsTrustedFunctionName
w
Implicit
OsApplicationParams (MICROSAR)
w
Implicit
OsApplicationReturnType (MICROSAR)
w
Implicit
OsApplicationGenerateStub (MICROSAR)
w
Implicit
OsCounter
w
Explicit
OsResource/
w
Implicit
OsResourceProperty
w
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
w
Implicit
OsTaskAutostart/
Implicit
OsTaskAppModeRef
r/w
Implicit
OsTaskAppMode
w
Implicit
OsTaskEventRef
w
Implicit
OsTaskResourceRef
w
Implicit
OsTaskAccessingApplication
w
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
w
Implicit/Explicit
NvmRamBlockDataAddress
w
Implicit
NvmRomBlockDataAddress
w
Implicit
NvmNvramBlockIdentifier
r/w
Explicit
NvmBlockUseSyncMechanism
w
Implicit
NvmWriteRamBlockToNvCallback
w
Implicit
NvmReadRamBlockFromNvCallback
w
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)
r
(Explicit)
BoardEnableSnvPrefixes (MICROSAR)
r
(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
3.25 - TechnicalReference_UserDefinedAttributeExport_ind
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
3.28 - UserManual_DataImport_ind
Page 2
Page 3
Page 4
Page 5
Page 6
Page 7
Page 8
Page 9
Page 10
Page 11
Page 12
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
3.31 - UserManual_Working_with_DCF_ind
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
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 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 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
Copyright (c) 2000-2015 by Vector Informatik GmbH
Table of contents
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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"
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
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
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'
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
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
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.
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.
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
DaVinci Tool Suite Version 0.9.6 (SP1)
Support for MATLAB R13
- Adaptation of code generation for MATLAB R13 using RTW-GRT
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
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.comVector 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.jpVecScan 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.comVector 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.comVector 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.comVector 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
3.36 -
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:
- 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.)
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.
Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06 16:02:49 slesch Exp $
4.1 - WELCOME to CANbedded
4.2 - WELCOME to CANbedded_ind
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
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
X 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
X 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
X 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
X 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
X 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
X 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
5.2 - ReferenceManual_HexView_ind
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
5.3 - ReferenceManual_HexViews
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
a
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])” provides 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:
0
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).
1
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)
2
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”
3
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
4
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).
5
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”
6
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.
7
CRC-16 (Standard)
Calculation of a CRC-16 using the
polynomial:
215+214+27+26+20 ($C0C1)
8
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
9
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:
0
No action
Does no modification on
-
the data
1
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
2
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
3
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.
4
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]
5
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.
6
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.
7
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
C
Example: /dp:mykeyfile[;outfile]
This is security class C..
/dp:647262756473[;outputfile]
8
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.
9
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
- 1 Introduction
- 2 User Interface
- 2.1 With a Double Click to the Main Menu
- 2.2 Menu
- 2.2.1 Menu: “File”
- 2.2.1.1 New
- 2.2.1.2 Open
- 2.2.1.3 Merge
- 2.2.1.4 Compare
- 2.2.1.5 Save
- 2.2.1.6 Save as
- 2.2.1.7 Log Commands
- 2.2.1.8 Import
- 2.2.1.9 Export
- 2.2.1.9.1 Export as S-Record
- 2.2.1.9.2 Export as Intel-HEX
- 2.2.1.9.3 Export as HEX-ASCII
- 2.2.1.9.4 Export as CCP Flashkernel
- 2.2.1.9.5 Export as C-Array
- 2.2.1.9.6 Export Mime coded data
- 2.2.1.9.7 Export Binary data
- 2.2.1.9.8 Export binary block data
- 2.2.1.9.9 Export Fiat Binary File
- 2.2.1.9.10 Export Ford Ihex data container
- 2.2.1.9.11 Export Ford VBF data container
- 2.2.1.9.12 Export GM data
- 2.2.1.9.13 Export GM-FBL header info
- 2.2.1.9.14 Export VAG data container
- 2.2.1.9.15 Export GAC binary files
- 2.2.1.10 Print / Print Preview / Printer Setup
- 2.2.1.11 Exit
- 2.2.2 Edit
- 2.2.2.1 Undo
- 2.2.2.2 Cut / Copy / Paste
- 2.2.2.3 Copy dsPIC like data
- 2.2.2.4 Data Alignment
- 2.2.2.5 Fill block data
- 2.2.2.6 Create Checksum
- 2.2.2.7 Run Data Processing
- 2.2.2.8 Edit/Create OEM Container-Info
- 2.2.2.9 Remap S12 Phys->Lin
- 2.2.2.10 Remap S12x Phys->Lin
- 2.2.2.11 General Remapping
- 2.2.2.12 Generate file validation structure
- 2.2.2.13 Run Postbuild
- 2.2.3 View
- 2.2.4 Flash Programming
- 2.2.5 Info operation (?)
- 2.2.1 Menu: “File”
- 2.3 Accelerator Keys (short-cut keys)
- 3 Command line arguments description
- 3.1 Command line options summary
- 3.2 General command line operation order
- 3.2.1 Align Data (/ADxx or /AD:yy)
- 3.2.2 Align length (/AL[:length])
- 3.2.3 Specify erase alignment value (/AE:xxx)
- 3.2.4 Specify fill character (/AF:xx, /AFxx)
- 3.2.5 Address range reduction (/AR:’range’)
- 3.2.6 Cut out data from loaded file (/CR:’range1[:’range2’:…]
- 3.2.7 Checksum calculation method (/CSx[:target[;limited_range][/no_range])
- 3.2.8 Run Data Processing interface (/DPn:param[,section,key][;outfilename])
- 3.2.9 Create error log file (/E:errorfile.err)
- 3.2.10 Create single region file (/FA)
- 3.2.11 Fill region (/FR:’range1’:’range2’:…)
- 3.2.12 Specify fill pattern (/FP:xxyyzz…)
- 3.2.13 Import HEX-ASCII data (/IA:filename[;AddressOffset])
- 3.2.14 Execute logfile (/L:logfile)
- 3.2.15 Merging files (/MO, /MT)
- 3.2.16 Run postbuild operation (/pb=postbuild-file)
- 3.2.17 Specify output filename (-o outfilename)
- 3.2.18 Run in silent mode (/s)
- 3.2.19 Specify an INI-file for additional parameters (/P:ini-file)
- 3.2.20 Remapping address information (/remap)
- 3.2.21 Create validation structure (/vs)
- 3.3 Output-control command line options (/Xx)
- 3.3.1 Output of HEX ASCII data (/XA[:linelen[:separator]])
- 3.3.2 Output a Fiat specific data file (/XB)
- 3.3.3 Output data into C-Code array (/XC)
- 3.3.4 Output a Ford specific data file (/XF, /XVBF)
- 3.3.5 Output a GM-specific data file
- 3.3.5.1 Manipulating Checksum and address/Length field within an existing header (/XG)
- 3.3.5.2 Creating the GM file header for the operating software (/XGC[:address])
- 3.3.5.3 Creating the GM file header for the calibration software (/XGCC[:address])
- 3.3.5.4 Creating the GM file header with 1-byte HFI (/XGCS[:address])
- 3.3.5.5 Specify the SWMI data (/SWMI=xxxx)
- 3.3.5.6 Adding the part number to the header (/PN)
- 3.3.5.7 Specify the DLS values (/DLS=xx)
- 3.3.5.8 Specify the Module-ID parameter (/MODID=value)
- 3.3.5.9 Specify the DCID-field (/DCID=value)
- 3.3.5.10 Specify the MPFH field (/MPFH[=file1+file2+…]
- 3.3.5.11 Signature version (/sigver=value)
- 3.3.5.12 Signature Key ID (/sigkeyid=value)
- 3.3.5.13 Generate Routine header (/XGCR[:header-address])
- 3.3.5.14 Generate key exchange header (/XGCK)
- 3.3.6 Output a VAG specific data file (/XV)
- 3.3.7 Output data as Intel-HEX (/XI[:reclinelen[:rectype]])
- 3.3.8 Output data as Motorola S-Record (/XS[:reclinelen[:rectype]])
- 3.3.9 Outputs to a CCP/XCP kernel file (/XK)
- 3.3.10 Output to a GAC binary file (/XGAC, /XGACSWIL)
- 4 EXPDATPROC
- 5 Glossary and Abbreviations
- 6 Contact
6.1 - sgml_input
|
|
Flotas (max. 9) | |||||||
Num. | Misin | Cantidad | Comienzo | Salida | Objetivo | Llegada | Orden |
---|---|---|---|---|---|---|---|
1 | Espionaje (F) | 3 | [2:250:6] | Wed Aug 9 18:00:02 | [2:242:5] | Wed Aug 9 18:01:02 | |
2 | Espionaje (V) | 3 | [2:250:6] | Wed Aug 9 17:59:55 | [2:242:1] | Wed Aug 9 18:01:55 |
6.2 - test_difflib_expect
from | to | ||||
---|---|---|---|---|---|
f | 1 | f | 1 | ||
n | 2 | 1. Beautiful is beTTer than ugly. | n | 2 | 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. | ||||
6 | 123 | 6 | 123 | ||
7 | 123 | 7 | 123 | ||
8 | 123 | 8 | 123 | ||
9 | 123 | 9 | 123 | ||
10 | 123 | 10 | 123 | ||
11 | 123 | 11 | 123 | ||
12 | 123 | 12 | 123 | ||
13 | 123 | 13 | 123 | ||
14 | 123 | 14 | 123 | ||
15 | 123 | 15 | 123 | ||
16 | 16 | ||||
n | 17 | 1. Beautiful is beTTer than ugly. | n | 17 | 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. | ||||
21 | 123 | 21 | 123 | ||
22 | 123 | 22 | 123 | ||
23 | 123 | 23 | 123 | ||
24 | 123 | 24 | 123 | ||
25 | 123 | 25 | 123 | ||
26 | 123 | 26 | 123 | ||
27 | 123 | 27 | 123 | ||
28 | 123 | 28 | 123 | ||
29 | 123 | 29 | 123 | ||
30 | 123 | 30 | 123 | ||
31 | 31 | ||||
t | 32 | 1. Beautiful is beTTer than ugly. | t | 32 | 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. | ||||
36 | 123 | 36 | 123 | ||
37 | 123 | 37 | 123 | ||
38 | 123 | 38 | 123 | ||
39 | 123 | 39 | 123 | ||
40 | 123 | 40 | 123 | ||
41 | 123 | 41 | 123 | ||
42 | 123 | 42 | 123 | ||
43 | 123 | 43 | 123 | ||
44 | 123 | 44 | 123 | ||
45 | 123 | 45 | 123 |
Legends | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
Context (first diff within numlines=5(default))
from | to | ||||
---|---|---|---|---|---|
f | 1 | f | 1 | ||
n | 2 | 1. Beautiful is beTTer than ugly. | n | 2 | 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. | ||||
6 | 123 | 6 | 123 | ||
7 | 123 | 7 | 123 | ||
8 | 123 | 8 | 123 | ||
9 | 123 | 9 | 123 | ||
10 | 123 | 10 | 123 | ||
12 | 123 | 12 | 123 | ||
13 | 123 | 13 | 123 | ||
14 | 123 | 14 | 123 | ||
15 | 123 | 15 | 123 | ||
16 | 16 | ||||
n | 17 | 1. Beautiful is beTTer than ugly. | n | 17 | 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. | ||||
21 | 123 | 21 | 123 | ||
22 | 123 | 22 | 123 | ||
23 | 123 | 23 | 123 | ||
24 | 123 | 24 | 123 | ||
25 | 123 | 25 | 123 | ||
27 | 123 | 27 | 123 | ||
28 | 123 | 28 | 123 | ||
29 | 123 | 29 | 123 | ||
30 | 123 | 30 | 123 | ||
31 | 31 | ||||
t | 32 | 1. Beautiful is beTTer than ugly. | t | 32 | 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. | ||||
36 | 123 | 36 | 123 | ||
37 | 123 | 37 | 123 | ||
38 | 123 | 38 | 123 | ||
39 | 123 | 39 | 123 | ||
40 | 123 | 40 | 123 |
Context (first diff after numlines=5(default))
from | to | ||||
---|---|---|---|---|---|
7 | 456 | 7 | 456 | ||
8 | 456 | 8 | 456 | ||
9 | 456 | 9 | 456 | ||
10 | 456 | 10 | 456 | ||
11 | 11 | ||||
n | 12 | 1. Beautiful is beTTer than ugly. | n | 12 | 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. | ||||
16 | 123 | 16 | 123 | ||
17 | 123 | 17 | 123 | ||
18 | 123 | 18 | 123 | ||
19 | 123 | 19 | 123 | ||
20 | 123 | 20 | 123 | ||
22 | 123 | 22 | 123 | ||
23 | 123 | 23 | 123 | ||
24 | 123 | 24 | 123 | ||
25 | 123 | 25 | 123 | ||
26 | 26 | ||||
n | 27 | 1. Beautiful is beTTer than ugly. | n | 27 | 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. | ||||
31 | 123 | 31 | 123 | ||
32 | 123 | 32 | 123 | ||
33 | 123 | 33 | 123 | ||
34 | 123 | 34 | 123 | ||
35 | 123 | 35 | 123 | ||
37 | 123 | 37 | 123 | ||
38 | 123 | 38 | 123 | ||
39 | 123 | 39 | 123 | ||
40 | 123 | 40 | 123 | ||
41 | 41 | ||||
t | 42 | 1. Beautiful is beTTer than ugly. | t | 42 | 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. | ||||
46 | 123 | 46 | 123 | ||
47 | 123 | 47 | 123 | ||
48 | 123 | 48 | 123 | ||
49 | 123 | 49 | 123 | ||
50 | 123 | 50 | 123 |
Context (numlines=6)
from | to | ||||
---|---|---|---|---|---|
f | 1 | f | 1 | ||
n | 2 | 1. Beautiful is beTTer than ugly. | n | 2 | 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. | ||||
6 | 123 | 6 | 123 | ||
7 | 123 | 7 | 123 | ||
8 | 123 | 8 | 123 | ||
9 | 123 | 9 | 123 | ||
10 | 123 | 10 | 123 | ||
11 | 123 | 11 | 123 | ||
12 | 123 | 12 | 123 | ||
13 | 123 | 13 | 123 | ||
14 | 123 | 14 | 123 | ||
15 | 123 | 15 | 123 | ||
16 | 16 | ||||
n | 17 | 1. Beautiful is beTTer than ugly. | n | 17 | 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. | ||||
21 | 123 | 21 | 123 | ||
22 | 123 | 22 | 123 | ||
23 | 123 | 23 | 123 | ||
24 | 123 | 24 | 123 | ||
25 | 123 | 25 | 123 | ||
26 | 123 | 26 | 123 | ||
27 | 123 | 27 | 123 | ||
28 | 123 | 28 | 123 | ||
29 | 123 | 29 | 123 | ||
30 | 123 | 30 | 123 | ||
31 | 31 | ||||
t | 32 | 1. Beautiful is beTTer than ugly. | t | 32 | 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. | ||||
36 | 123 | 36 | 123 | ||
37 | 123 | 37 | 123 | ||
38 | 123 | 38 | 123 | ||
39 | 123 | 39 | 123 | ||
40 | 123 | 40 | 123 | ||
41 | 123 | 41 | 123 |
Context (numlines=0)
from | to | ||||
---|---|---|---|---|---|
n | 2 | 1. Beautiful is beTTer than ugly. | n | 2 | 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. | ||||
n | 17 | 1. Beautiful is beTTer than ugly. | n | 17 | 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. | ||||
t | 32 | 1. Beautiful is beTTer than ugly. | t | 32 | 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 | ||||
---|---|---|---|---|---|
t | 1 | t | 1 | ||
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. | ||
6 | 123 | 6 | 123 | ||
7 | 123 | 7 | 123 | ||
8 | 123 | 8 | 123 | ||
9 | 123 | 9 | 123 | ||
10 | 123 | 10 | 123 | ||
11 | 123 | 11 | 123 | ||
12 | 123 | 12 | 123 | ||
13 | 123 | 13 | 123 | ||
14 | 123 | 14 | 123 | ||
15 | 123 | 15 | 123 | ||
16 | 16 | ||||
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. | ||
21 | 123 | 21 | 123 | ||
22 | 123 | 22 | 123 | ||
23 | 123 | 23 | 123 | ||
24 | 123 | 24 | 123 | ||
25 | 123 | 25 | 123 | ||
26 | 123 | 26 | 123 | ||
27 | 123 | 27 | 123 | ||
28 | 123 | 28 | 123 | ||
29 | 123 | 29 | 123 | ||
30 | 123 | 30 | 123 | ||
31 | 31 | ||||
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. | ||
36 | 123 | 36 | 123 | ||
37 | 123 | 37 | 123 | ||
38 | 123 | 38 | 123 | ||
39 | 123 | 39 | 123 | ||
40 | 123 | 40 | 123 | ||
41 | 123 | 41 | 123 | ||
42 | 123 | 42 | 123 | ||
43 | 123 | 43 | 123 | ||
44 | 123 | 44 | 123 | ||
45 | 123 | 45 | 123 |
Empty Context
from | to | ||||
---|---|---|---|---|---|
t | No Differences Found | t | No Differences Found |
Empty Full
from | to | ||||
---|---|---|---|---|---|
t | Empty File | t | Empty File |
tabsize=2
f | 1 | f | 1 | ||
t | 2 | Line 1: preceeded by from:[tt] to:[ssss] | t | 2 | 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] | ||
5 | Line 4: has from:[sst] to:[sss] after : | 5 | Line 4: has from:[sst] to:[sss] after : | ||
6 | Line 5: has from:[t] to:[ss] at end | 6 | Line 5: has from:[t] to:[ss] at end |
tabsize=default
f | 1 | f | 1 | ||
t | 2 | Line 1: preceeded by from:[tt] to:[ssss] | t | 2 | 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] | ||
5 | Line 4: has from:[sst] to:[sss] after : | 5 | Line 4: has from:[sst] to:[sss] after : | ||
6 | Line 5: has from:[t] to:[ss] at end | 6 | Line 5: has from:[t] to:[ss] at end |
Context (wrapcolumn=14,numlines=0)
n | 4 | line 2 | n | 4 | line 2 adde |
> | d | ||||
n | 6 | line 4 chang | n | 6 | line 4 chanG |
> | ed | > | Ed | ||
7 | line 5 chang | 7 | line 5a chanG | ||
> | ed | > | ed | ||
8 | line 6 chang | 8 | line 6a chang | ||
> | ed | > | Ed | ||
n | 10 | line 8 subtra | n | 10 | line 8 |
> | cted | ||||
t | 12 | 12345678901234 | t | 12 | 1234567890 |
> | 56789012345689 | ||||
> | 012345 | ||||
13 | short line | 13 | another long l | ||
> | ine that needs | ||||
> | to be wrapped | ||||
14 | just fits in!! | 14 | just fitS in!! | ||
15 | just fits in t | 15 | just fits in t | ||
> | wo lines yup!! | > | wo lineS yup!! |
wrapcolumn=14,splitlines()
f | 1 | line 0 | f | 1 | line 0 |
2 | 12345678901234 | 2 | 12345678901234 | ||
> | 56789012345689 | > | 56789012345689 | ||
> | 012345 | > | 012345 | ||
3 | line 1 | 3 | line 1 | ||
n | 4 | line 2 | n | 4 | line 2 adde |
> | d | ||||
5 | line 3 | 5 | line 3 | ||
n | 6 | line 4 chang | n | 6 | line 4 chanG |
> | ed | > | Ed | ||
7 | line 5 chang | 7 | line 5a chanG | ||
> | ed | > | ed | ||
8 | line 6 chang | 8 | line 6a chang | ||
> | ed | > | Ed | ||
9 | line 7 | 9 | line 7 | ||
n | 10 | line 8 subtra | n | 10 | line 8 |
> | cted | ||||
11 | line 9 | 11 | line 9 | ||
t | 12 | 12345678901234 | t | 12 | 1234567890 |
> | 56789012345689 | ||||
> | 012345 | ||||
13 | short line | 13 | another long l | ||
> | ine that needs | ||||
> | to be wrapped | ||||
14 | just fits in!! | 14 | just fitS in!! | ||
15 | just fits in t | 15 | just fits in t | ||
> | wo lines yup!! | > | wo lineS yup!! | ||
16 | the end | 16 | the end |
wrapcolumn=14,splitlines(True)
f | 1 | line 0 | f | 1 | line 0 |
2 | 12345678901234 | 2 | 12345678901234 | ||
> | 56789012345689 | > | 56789012345689 | ||
> | 012345 | > | 012345 | ||
3 | line 1 | 3 | line 1 | ||
n | 4 | line 2 | n | 4 | line 2 adde |
> | d | ||||
5 | line 3 | 5 | line 3 | ||
n | 6 | line 4 chang | n | 6 | line 4 chanG |
> | ed | > | Ed | ||
7 | line 5 chang | 7 | line 5a chanG | ||
> | ed | > | ed | ||
8 | line 6 chang | 8 | line 6a chang | ||
> | ed | > | Ed | ||
9 | line 7 | 9 | line 7 | ||
n | 10 | line 8 subtra | n | 10 | line 8 |
> | cted | ||||
11 | line 9 | 11 | line 9 | ||
t | 12 | 12345678901234 | t | 12 | 1234567890 |
> | 56789012345689 | ||||
> | 012345 | ||||
13 | short line | 13 | another long l | ||
> | ine that needs | ||||
> | to be wrapped | ||||
14 | just fits in!! | 14 | just fitS in!! | ||
15 | just fits in t | 15 | just fits in t | ||
> | wo lines yup!! | > | wo lineS yup!! | ||
16 | the end | 16 | the end |
7.1 - SwcSuprt_Usage
Version | Date | Author | Description |
---|---|---|---|
1 | 01-Dec-2016 | Owen Tosh | Initial version |
2 | 07-Dec-2016 | Owen Tosh | Added Polyspace report generation |
Table of Contents
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 SheetSynergy Project
Sheet 1: Summary Sheet
