继续学习AUTOSAR的文档,看一下《AUTOSAR_TR_FrancaIntegration》。

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_程序集

       3.5 Franca 连接器

       Franca 连接器声明Franca实例以及 Franca 实例和 AUTOSAR 组件原型之间的连接。  Franca 实例实现了一组 Franca 接口。 该集合也可能为空,可用于声明使用 AUTOSAR 操作的 Franca 实例,但其提供的接口与 Franca 集成无关。

       Franca 实例被转换为 AUTOSAR 组件原型。 此组件原型的类型由 Franca 实例实现的接口列表确定。对于 Franca 连接器的实例声明部分中出现的每个已实现接口列表,都会生成一个 AUTOSAR ApplicationSwComponentType。 对于列表中的每个 Franca 接口,它包含三个端口。 第一个是由客户端服务器接口键入的提供端口,其中包含表示方法的操作以及 Franca 接口中包含的属性的 getter 和 setter 操作。 第二个也是提供的端口,由发送者接收者接口键入,该接口包含表示属性更改通知的数据元素和包含 Franca 接口的广播。 第三个是必需的端口,也是由发送方接收方接口键入的,其中包含表示 Franca 接口的即发即弃方法的数据元素。

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_autosar_02

       Franca 实例映射到 AUTOSAR 组件原型和 AUTOSAR 应用程序组件类型

       实现 Franca Interfaces F1, ..., Fn 的 Franca 实例 g 被映射到具有 shortName g 的 SwComponentPrototype componentInstance。

       根据出现 componentInstance g 的 Franca 连接器的链接,确定包含 g 的 CompositionSwComponentType。如果存在包含 g 的链接,则 g 的容器是 CompositionSwComponentType 的容器,该容器还包含链接另一端的 SwComponentPrototype。 如果没有任何链接包含 componentInstance,则其容器是新创建的 CompositionSwComponentType。

       g 的类型由以下(现在应该是以上了) ApplicationSwComponentType componentType 给出。

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_客户端服务器_03

       由 Franca 实例实现的每个 Franca 接口都会为上面定义的组件实例的类型 componentType 引入端口。  Franca 接口的方法和广播分别提供了两个端口,一个即发即忘方法所需的端口。 回想一下,后者被映射到发送到组件实例的数据元素。

       Franca 实例实现的 Franca 接口产生 componentType 的 AUTOSAR 端口

       相关的说明参考几个表格,包括上面这个以及下面这几个:

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_程序集_04

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_数据_05

       图 3.1,“Franca 链接到 AUTOSAR 的转换”表示 Franca 连接器中包含的链接的转换。 本质上,Franca 链接会生成 AUTOSAR 装配软件连接器。 链接的方向 – AUTOSAR-to-Franca 或 Franca-to-AUTOSAR – 以及链接的 AUTOSAR 端口的类型 – 客户端-服务器接口或发送器-接收器接口 – 确定组件的上下文组件和目标端口 提供者和请求者。 下面将讨论四种链接的转换(参见第 2.2 节“链接”)。

       在整个讨论中,我们使用图 3.1“Franca 链接到 AUTOSAR 的转换”中介绍的端口、接口和链接的名称。 我们首先考虑这样一种情况,其中每个 Franca 实例都可以放置在与其链接的 AUTOSAR 组件原型相同的容器 (CompositionSwComponentType) 中。 如果包含 Franca 实例的所有链接在另一侧具有包含在同一个容器中的 AUTOSAR 组件原型,则此方法成立。 这也是为链接生成的 AssemblySwConnectors 的容器。 更一般的情况在第 3.5.6 节“在不相交的容器中连接实例”中讨论。

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_autosar_06

       3.5.1 AUTOSAR-to-Franca 客户端服务器链接

       AUTOSAR-to-Franca 客户端服务器链接 autosar_port a : reqPort_CS !  franca_instance g :F1 被转换为 AssemblySwConnector assemblyConnector,其 PPortInCompositionInstanceRef assemblyProvider 和 RPortInCompositionInstanceRef assemblyRequester 定义如下。

       提供的上下文组件是由 Franca 组件实例 g 的转换生成的 componentInstance g。

提供的目标端口 csProvPort_F1 由 Franca 接口 F1 请求的上下文组件 SwComponentPrototype 的转换生成。

       请求的目标端口 RPortPrototype reqPort_CS。

       类型为 reqPort_CS 的 ClientServerInterface reqCS 更新如下。

       对于接口 prov_operations_F1 中输入 csProvPort_F1 的每个 ClientServerOperation op,都会将 op 的副本添加到 reqCS。 这意味着 reqCS 包含 F1 的所有方法和 getter/setter 操作的表示。

       转换的实现必须确保更新的接口 reqCS 中客户端服务器操作的名称是唯一的。 如果 reqCS 已经包含一个与从 prov_operations_F1 继承的操作 op 同名的操作,那么必须为副本生成一个新名称——例如 op 的全限定名称。 除此之外,必须由 assemblyConnector 添加和引用与这两个名称相关的 ClientServerInterfaceMapping。

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_数据_07

       3.5.2 AUTOSAR-to-Franca Sender Receiver Link AUTOSAR-to-Franca 发送者接收者链接

       autosar_port a : provPort_SRPush à  franca_instance g 被转换为一个 AssemblySwConnector assemblyConnector,其 PPortInCompositionInstanceRef assemblyProvider 和 RPortInCompositionInstanceRef assemblyRequester 定义如下。

       提供上下文组件 SwComponentPrototype a。

       提供目标端口 PPortPrototype provPort_SRPush。

       请求的上下文组件是由 Franca 组件实例 g 的翻译生成的 componentInstance g。

       请求的目标端口 provPort_SRPush 的副本,该副本附加到由 Franca 组件实例的转换生成的 ApplicationSwComponentType componentType。 如果 componentType 已经包含与 provPort_SRPush 同名的端口,则必须为在 componentType 的名称空间内唯一的副本生成新名称。

       新的 RPortPrototype 的类型是接口 provSRPush,它也输入了 provPort_SRPush。

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_程序集_08

       3.5.3 AUTOSAR-to-Franca 发送器接收器链接,用于 Fire-And-Forget-Methods

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_autosar_09

       3.5.4 Franca 到 AUTOSAR 客户端服务器链接

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_autosar_10

       3.5.5 Franca 到 AUTOSAR 发射器接收器链路

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_程序集_11

802_AUTOSAR_TR_FrancaIntegration8_Franca到AUTOSAR的转换4_客户端服务器_12

       3.5.6 在不相交的容器中连接实例

       上述定义的前提是 Franca 实例和链接的 AUTOSAR 组件原型包含在同一个容器 (CompositionSwComponentType) 中。 一旦有两个链接将 Franca 实例连接到包含在不同组合类型中的两个 AUTOSAR 组件原型,此前提条件就不再成立。 在这种情况下,必须生成委托和程序集连接器链而不是单个程序集连接器。 令 C0 是包含(通过包含和类型关系链)Franca 实例 f 和 AUTOSAR 组件原型 a 的最少组合类型。 图 3.2,“不同组合组件类型中组件原型的连接”。 显示了一个典型的例子。  CompositionSwComponentType C2 包含 AUTOSAR SwComponentPrototype a;  CompositionSwComponentType C1 包含一个类型为 C2 的 SwComponentPrototype c2,C0 包含一个类型为 C1 的 SwComponentPrototype c1。 用于包含 Franca 实例 f 的类似层次结构显示在图的右侧。 为了连接 a 和 f,DelegationSwConnector del2_p 和 del1_p 必须分别添加到组件类型 C2 和 C1。 在此步骤中,还必须将新的 PortPrototypes 添加到 C2 和 C1 作为应连接的起始端口 p 的代理。 在此步骤中,必须避免新委派和新端口的名称冲突。 必须在另一端生成类似的委托和端口。 最后在 C0 中可以生成 AssemblySwConnector 程序集。

       有点囫囵吞枣地把这部分看完了,越看越觉得与我现在的工作偏差有点大。但是还是坚持着把大部分的框架给看完了。这个文件还剩下一个章节,基本上是对前面所描述的一个使用场景的反向描述,也就是AUTOSAR转Franca。我会自己简单浏览一下,如果没有特殊的需要梳理总结的,这部分就不再整理了。