801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_autosar

       3.3.4.1 映射到应用程序数据类型

       应用数组类型

       FArrayType fArrayType 映射到由以下定义的 AUTOSAR ApplicationArrayDataType arArrayType

       • arArrayType.shortName =

       • arArrayType.category = ARRAY

       • arArrayType.element = elment defined

       • element.shortName = + "element"

       • element.maxNumberOfElements  = fArrayType.ArraySize

       • element.arraySizeSemantics = fixedSize if fArrayType.ArrayFixedSize == true element.arraySizeSemantics =variableSize ifArray  = false

       • element.type = ARType(fArrayType.elementType)

       • element.category = ARType(fArrayType.elementType).category

        值 fArrayType.ArraySize 和 fArrayType.ArrayFixedSize 在包含数据类型的 Franca 模型的部署定义中定义。如果 ARType(fArrayType.elementType) 未定义,则 fArrayType 的翻译也未定义。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_autosar_02

       类似的,还有其他的数据类型的处理,不再详细看。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_客户端服务器_03

       3.3.4.2 映射到数据类型实现

       类似于固定大小字符串 ([TR_FRANCA_00120]) 和可变大小字符串 ([TR_FRANCA_00121]) 的区别,Franca 数组类型到 AUTOSAR 实现数据类型的转换区分了固定大小和可变大小的数组类型。

       上面是固定大小的处理方式。

       可变大小的数组在 AUTOSAR 中的实现类型级别表示为一个结构,其第一个元素是一个整数,表示数组的实际大小,第二个元素是数组本身。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_autosar_04

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据类型_05

       这是变化大小的处理方法。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_特殊数据_06

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据类型_07

       这是枚举、结构体、联合等类型的具体的实施方法。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_autosar_08

       3.3.5 类型继承

       Franca IDL 允许枚举、结构和联合的类型继承。 由于 AUTOSAR 不支持继承,因此在转换为 AUTOSAR 时必须解析 Franca 类型定义。 这意味着 Franca 枚举的结果 AUTOSAR 类型直接包含通过其基本类型链直接或间接包含在 Franca 枚举中的所有文字。 类似地,Franca 结构或联合类型的翻译包含为该类型直接或间接定义的所有字段。

       此表达方式不会更改数据类型的语义; 但是,它会影响它们的句法表示。 为了在将转换转换为 AUTOSAR 时能够尽可能接近地重建原始 Franca 数据类型定义,对目标 AUTOSAR 数据类型及其元素进行了注释。  AUTOSAR 表示为此目的是特殊数据。 引入了包含此注释的具有 gid Franca_Transformation 的特定特殊数据组。 此特殊数据组中包含的任何数据都不会影响由翻译产生的 AUTOSAR 软件组件描述的语义。 此特殊数据仅表示有关句法结构的信息。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据_09

       3.4 Franca接口

       3.4.1 Franca接口

       单个Franca接口可能包含方法、属性和广播。  AUTOSAR 端的相应元素是操作和数据元素。 由于 AUTOSAR 操作只能包含在客户端服务器接口中,而 AUTOSAR 数据元素只能包含在发送方接收方接口中,因此必须为一个 Franca 接口生成至少两个 AUTOSAR 接口。  Franca IDL 支持映射到数据元素(发送方接收方通信)而不是操作(客户端服务器通信)的即发即弃方法。  Franca 实例提供的即发即弃方法由 AUTOSAR 组件原型调用,因为后者将相应的数据元素发送到 Franca 实例。 与实现相应接口的 Franca 实例提供的方法和广播相反,Franca 实例需要解释为数据元素的即发即弃方法。这反映在相应端口 ([TR_FRANCA_00310]) 的定义中,并导致定义与 Franca 接口相对应的第三个 AUTOSAR 端口接口,以表示即发即弃方法。

       下面给出的规则基本上定义了:

       • Franca 方法映射到 AUTOSAR 操作,但 Franca 即发即弃方法映射到 AUTOSAR 数据元素

       • Franca 属性映射到 getter 操作, setter 操作和通知数据元素,

       • Franca 广播映射到 AUTOSAR 数据元素。

       与 Franca 属性对应的 getter 操作始终存在。 如果设置了 Franca 标志 readonly 或 noSubscriptions,则分别禁止生成 setter 操作和通知数据元素。 因此,如果所有属性都是只读且不可修改的,并且没有广播,则不会生成任何数据元素。 在这种情况下,也不会生成提供的发送方接收方接口。 如果没有即发即弃的方法,则不会生成所需的发送方接收方接口。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据类型_10

       Franca 接口映射到 AUTOSAR 客户端服务器接口和 AUTOSAR 发送方接收方接口,下面是相关的一系列表格:

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据_11

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据类型_12

       3.4.2 Franca 方法

       Franca 方法映射到 AUTOSAR 客户端服务器操作。 一个例外是即发即弃的方法,它们在调用时被使用但不提供返回值。 它们被映射到 AUTOSAR 数据元素。

       Franca 方法映射到 AUTOSAR 客户端服务器操作

       上面的表格中给出了一些具体的解释。这个跟前面看到的一些描述也是类似的。

       数据元素 srDataElement 的类型是结构类型 fMethod_type,其元素对应于 fMethod 的输入参数的类型。 根据输入参数的类型,fMethod_type 是 ApplicationRecordDataType 或 ImplementationDataType。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据类型_13

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_特殊数据_14

       而这一部分,介绍了一个基础的方法的一个转换。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_数据_15

       属性的转换,被映射到了一个获取的操作上。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_autosar_16

       3.4.4 Franca 广播 Franca 广播映射到 AUTOSAR 数据元素。 数据元素的类型是一种结构类型,其元素由广播的输出参数确定。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_特殊数据_17

       小结:理解起来,这个广播的概念跟我现在接触到的协议栈的广播报文似乎完全不是一回事儿。这里强调的是一种方法。

801_AUTOSAR_TR_FrancaIntegration7_Franca到AUTOSAR的转换3_客户端服务器_18

       3.4.5 接口继承 Franca 接口继承的处理方式与 Franca 数据类型继承相同。 转换根据其继承层次结构为直接或间接包含在 Franca 接口中的所有元素生成目标元素。 间接包含的元素由 Franca_Transformation 特殊数据组中的特殊数据注释。 使用此注释,可以通过从 AUTOSAR 到 Franca IDL 的逆向转换来适当地处理它们。

       这一次的梳理暂且到此,这里面看到了很多Franca的具体的实现细节信息。从伪代码的信息表述看,其实这个设计的理念跟AUTOSAR采用的理念就是不相同的,一定程度上有面向对象开发的感觉。可能类似的应用控制器的硬件存储等资源其实也是很丰富的,不像控制类的模块,资源也捉襟见肘。