全部学习汇总: https:///GreyZhang/hack_autosar
继续学习AUTOSAR的文档,看一下《AUTOSAR_TR_FrancaIntegration》。

3.3.1 Franca 类型集合
Franca 类型集合是 Franca 数据类型的容器,对应于 AUTOSAR 包。 根据上面的讨论,每个类型集合产生两个包,一个用于生成的应用程序数据类型,一个用于生成的实现数据类型。
Franca 类型集合映射到 AUTOSAR 包
FTypeCollection fTypeCollection 映射到应用程序类型包 FrancaApplicationDataTypes 的子包和在 [TR_FRANCA_00010] 中定义的实现类型包 FrancaImplementationDataTypes 的子包,如表 3.8“fTypeCollection 映射到应用程序类型包”和表 3.9 中所述 , “fTypeCollection 映射到实现类型包”。

3.3.2 原始类型
Franca IDL 有一组预定义的,所谓的原始数据类型:整数、浮点数、布尔值和字符串。 AUTOSAR 平台类型涵盖整数、浮点数和布尔值,而字符串必须进行编码。 在下文中,我们定义了由 Franca-toAUTOSAR 转换生成的应用程序和实现数据类型,以表示 Franca IDL 的原始类型。 应用程序和实现类型都获得表 3.10 中给出的短名称。

与 Franca 原始类型对应的 AUTOSAR 数据类型的简称
小结:看起来这个数据类型的统一还真是一个让人头疼的地方啊,因为除了这部分之外,还有一个stdint吧?还有MATLAB模型的数据类型。一套套,太多了!

与 Franca 原始类型对应的 AUTOSAR 数据类型的简称
Franca 基元类型映射到 ApplicationPrimitiveDataType,其类别和数据属性在表 3.11“与 Franca 基元类型相对应的 AUTOSAR 应用程序数据类型的类别和属性”中定义。

与 Franca 原始类型对应的 AUTOSAR 应用程序数据类型的类别和属性

应用原始数据类型由 AUTOSAR 中的元类 ApplicationPrimitiveDataType 直接定义。 为了表示实现数据类型表示 AUTOSAR 中的原始类型,其名称必须与 AUTOSAR 平台类型之一(参见 [8])一致,并且必须与没有本机声明的基类型相关联。 这反映在以下 Franca 原始数据类型到 AUTOSAR 实现类型的转换定义中。
Primitive Type 映射到 AUTOSAR 平台类型对应的 ImplementationDataType
除了基本类型 String 之外,Franca 基本类型被映射到具有表 3.10 中定义的短名称的 ImplementationDataType。 这些实现数据类型中的每一种的基本类型都不能具有本机声明。
Franca 的原始类型 String 被解释为一个字符数组。 Franca 没有定义字符串的大小是固定的还是可变的。 这可以在 Franca 部署定义中定义。 固定大小的字符串可以直接表示为 AUTOSAR 中的固定大小数组。 可变大小的数组在 AUTOSAR 中被编码为具有两个元素的结构:定义数组实际大小的整数字段和包含数组本身的数组字段。 后者还包含数组实例的最大大小。

原类型固定大小的字符串映射到 AUTOSAR 数组实现数据类型
Franca 原始类型 String 的属性 FixedStringLength 设置为 true 并且属性 MaxStringLength 为 n 然后类型 String 映射到 ImplementationDataType stringImplType 定义如下。
• stringImplType.shortName = String
• stringImplType.category = ARRAY
• stringImplType.subElement = subElement
• shortName = CharElement
• subElement.category = VALUE
• subElement.arraySize = n
• subElement.arraySizeSemantics = fixedSize
两个 String 属性的默认值是 FixedStringLength = false 和 MaxStringLength = 256。

大小可变的原始类型String映射到AUTOSAR结构实现数据类型
如果 Franca 原始类型 String 的 FixedStringLength 属性未设置(这意味着它具有默认值 false)并且属性 MaxStringLength 为 n,则类型 String 映射到如下定义的 ImplementationDataType stringImplType。
• stringImplType.shortName = String
• stringImplType.category = STRUCTURE
• stringImplType.subElements = {size, chars} 与 ImplementationDataTypeElements 大小和字符
• size.shortName = size
• size.category = TYPE_REFERENCE
• size.swDataDefProps.implementationDataType = uint8
• chars .shortName = chars
• chars.category = ARRAY
• chars.subElement = char,with
• char.shortName = char
• char.category = TYPE_REFERENCE
• char.arraySize = n
• char.arraySizeSemantics = variableSize
• char.swDataDefProps.implementationDataType = uint8
默认值 MaxStringLength 是 256。

3.3.3 Franca 内联数组
方法的类型和广播参数、属性以及联合和结构类型的字段可以在 Franca 中定义为内联数组。 这意味着可以使用内联符号 t[] 元素代替显式定义的数组类型。
由于 AUTOSAR 不支持内联数组,因此必须将隐式定义的 Franca 数组类型转换为显式 AUTOSAR 应用程序和实现数组类型。这是按照 [TR_FRANCA_00200]、[TR_FRANCA_00205] 和 [TR_FRANCA_00206] 中的规定实现的。
为了在将 AUTOSAR 描述转换回 Franca 时恢复原始 Franca 模型,这些数组类型使用 Franca 特殊数据组中的特殊数据进行注释。 由于这不影响翻译的语义,而只影响句法表示,因此这里不再进一步说明。
在下文中,我们没有明确指出内联数组的处理方式,而是理所当然地将内联数组转换为明确定义的 AUTOSAR 数组类型。

3.3.4 用户定义类型
Franca 的用户定义类型包括复合类型,如数组、结构和联合。 到 AUTOSAR 数据类型的转换是以这样一种方式定义的,即每种类型要么完全转换,要么根本不转换。 例如,考虑一个 Franca 数组类型,它的元素由联合类型进行类型化。 Franca 数组类型可以转换为 AUTOSAR 应用程序数据类型; 但是,Franca 联合类型无法转换为 AUTOSAR 应用程序数据类型。 因此,上面提到的 Franca 联合数组示例未转换为 AUTOSAR 应用程序数据类型。
另一方面,数组和联合类型都可以转换为 AUTOSAR 实现数据类型。因此,联合类型的 Franca 数组也可以转换为 AUTOSAR 实现数据类型。
唯一无法转换为 AUTOSAR 数据类型的 Franca 数据类型是地图类型。如果这发生在复合类型中,整个复合类型也不会映射到任何 AUTOSAR 数据类型。
这一部分其实没有什么太多的技术类的难度信息,都是一些平铺直述。不过,倒是借此可以了解一些Franca的一些设计的方式。
















