如何在xpand中为另一个模型调用模型的模板以用于AUTOSAR

时间:2015-04-06 10:04:27

标签: xpand autosar

我一直在尝试使用Xpand / Xtend开发AUTOSAR 4.2.1模块来生成代码。我正在使用artext示例1.6.0。但我的疑问是,当我在演示器中创建一个新的Ecu平台项目时(或者我不熟悉如何查找)时,在PDF(ECUConfigurationParameters.arxml)中找不到定义变化点的概念。

默认情况下,我可以从arxml中获取参数值。但是当在不同的构建后变体条件中定义的参数有多个值时,我只得到第一个值。 例如,如果arxml包含此

<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF"> /AUTOSAR/EcucDefs/Com/ComConfig/ComIPdu/ComIPduCancellationSuppo rt</DEFINITION-REF>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION">/EcucDemo/PostBuildConfigSet</MATCHING-CRITERION-REF>
<VALUE>1</VALUE>
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
<VALUE>1</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>
<ECUC-NUMERICAL-PARAM-VALUE>
<DEFINITION-REF DEST="ECUC-BOOLEAN-PARAM-DEF"> /AUTOSAR/EcucDefs/Com/ComConfig/ComIPdu/ComIPduCancellationSuppo rt</DEFINITION-REF>
<VARIATION-POINT>
<POST-BUILD-VARIANT-CONDITIONS>
<POST-BUILD-VARIANT-CONDITION>
<MATCHING-CRITERION-REF DEST="POST-BUILD-VARIANT-CRITERION">/EcucDemo/PostBuildConfigSet</MATCHING-CRITERION-REF>
<VALUE>2</VALUE>
</POST-BUILD-VARIANT-CONDITION>
</POST-BUILD-VARIANT-CONDITIONS>
</VARIATION-POINT>
<VALUE>0</VALUE>
</ECUC-NUMERICAL-PARAM-VALUE>

它给了我价值,因为&#39;真实&#39;在Xpand,如果我做Com.ComConfig.ComIpdus.ComIPduCancellationSupport。我无法访问第二个值'false'。

如何根据构建后的变体条件继续获取参数值?

我试图执行以下操作:

«DEFINE Gen1 FOR varianthandling::VariationPoint»
    «EXPAND Gen1::GetThings»
«ENDDEFINE»

«DEFINE GenMain FOR AUTOSAR::EcucDefs::Com»
        «EXPAND Gen1 FOR varianthandling::VariationPoint»
«ENDDEFINE»

这给了我一个错误,因为&#39; 无法找到类型为xpand2 :: Type &#39;的定义ComOtherVarGen。我如何实现上述目标? 请注意,我不是要在“MainObj”的模板中添加/修改任何功能。所以&#39; AROUND&#39;不是我想要的。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您用来创建模型的工具(从PDF文件+ EcuC Values文件创建)必须能够构建一个与构建后兼容的模型。

如果您确定,这样做 - 然后尝试以下方法

Com.ComConfig.ComIpdus.ComIPduCancellationSupport更改为

<FOREACH Com.ComConfig.ComIpdus.ComIPduCancellationSupport AS ele>
<ele>
<ENDFOREACH>

Com.ComConfig.ComIpdus.ComIPduCancellationSupport.get(0) Com.ComConfig.ComIpdus.ComIPduCancellationSupport.get(1)