继续学习AUTOSAR,看一下SWC的模板部分。文档看到现在,感觉现在看的很多东西跟最初看的VFB部分对应起来了。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_无符号整数

NonqueuedReceiverComSpec 和 enableUpdate

将属性 enableUpdate 设置为 true 的 NonqueuedReceiverComSpec 可能不会引用 dataElement,而 dataElement 又由角色 dataReadAccess 中的 VariableAccess 引用。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_无符号整数_02

initValue 应存在于 RPortPrototype 中

如果封闭的 NonqueuedReceiverComSpec 由 RPortPrototype 拥有,则可选属性 initValue 应存在。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据_03

swImplPolicy 和 NonqueuedReceiverComSpec

NonqueuedReceiverComSpec 引用的数据元素的属性 swImplPolicy 不应设置为队列的值。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据过滤_04

swImplPolicy 和 QueuedReceiverComSpec

QueuedReceiverComSpec 引用的数据元素的属性 swImplPolicy 应设置为队列。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据_05

ReceiverComSpec.replaceWith 的存在

当且仅当至少满足以下条件之一时,角色 ReceiverComSpec.replaceWith 中的 VariableAccess 聚合才应存在:

• 属性 ReceiverComSpec.handleOutOfRange 设置为值 externalReplacement。

• 属性SenderReceiverInterface.invalidationPolicy.handleInvalid 设置为值externalReplacement。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_autosar_06

swImplPolicy 和 NonqueuedSenderComSpec

NonqueuedSenderComSpec 引用的数据元素的属性 swImplPolicy 不应设置为队列。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_autosar_07

swImplPolicy和QueuedSenderComSpec

QueuedSenderComSpec 引用的数据元素的属性 swImplPolicy 应设置为队列的值。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据过滤_08

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据_09

initValue 定义了一个初始值,如果尚未收到相应的数据元素,则应采用该初始值

角色 initValue 中 ValueSpecification 的聚合定义了一个初始值,如果尚未接收到相应的 dataElement 但应用程序软件正在尝试访问其值,则应采用该初始值。

这是数据传输初始值的唯一相关定义。 也就是说,在 VariableDataPrototype 的上下文中定义的任何 initValue 都将被忽略!

发送方的通信属性如图 4.33 所示。

图 4.32 显示了与定义数据过滤器相关的通信属性模型。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_应用程序_10

数据过滤器

对于由 SenderReceiverInterface 输入的每个 RPortPrototype,如果预见到非排队通信,可以定义一个 DataFilter。

元模型中由枚举类型 DataFilterTypeEnum 正式描述的 15 种过滤器算法取自 RTE 规范 [2] 引用的 OSEK COM 3.0.3 规范 [18]。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_应用程序_11

数据过滤器的可用性

该 OSEK 规范声明“过滤仅用于可以解释为 C 语言无符号整数类型(字符、无符号整数和枚举)的消息。”

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_无符号整数_12

这是相关的约束条件

根据 DataFilter 的起源,即 OSEK COM 3.0.3 规范 [18],DataFilters 只能应用于具有整数基类型的值。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_应用程序_13

数据过滤器的基类。 过滤器的类型在属性 dataFilterType 中指定。一些过滤器类型需要额外的参数,这些参数被指定为此类的属性。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据_14

此枚举指定支持的 DataFilterTypes。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_应用程序_15

属性 ReceiverComSpec.transformationComSpecProps 的语义

ReceiverComSpec.transformationComSpecProps 用于配置特定于 PortPrototype 的属性,以便在接收 ECU 间通信的情况下进行数据转换。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据过滤_16

ReceiverComSpec.usesEndToEndProtection 属性的适用性

对于在角色transformationComSpecProps 中聚合EndToEndTransformationDescription 的所有ReceiverComSpec,属性ReceiverComSpec.usesEndToEndProtection 应设置为false。

有关详细信息,请参阅第 4.5.6 章。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_autosar_17

图 4.33:PPortPrototype 与 senderreceiver 通信相关的通信属性。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_应用程序_18

发送方端口的通信属性(由 SenderReceiverInterface 输入的 PPortPrototype)。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据_19

特定于事件分发的通信属性(PPortPrototype、SenderReceiverInterface 和 dataElement 携带“事件”)。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_autosar_20

非队列发送方/接收方通信的通信属性(发送方)

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据过滤_21

请求传输确认数据已成功发送。通过 RunnableEntity 的 SendPoint 报告成功/失败。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_autosar_22

这种类型的值用于控制 AUTOSAR RTE 的范围检查行为。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据_23

networkRepresentation 定义了如何在通信总线上表示特定的数据元素

对于发送方-接收方通信,如果通信需要使用专用通信总线,则可以指定数据元素的表示方式。

也就是说,通过 networkRepresentation 可以定义特定数据元素在通信总线上的表示方式。 为此目的,networkRepresentation 被实现为 SwDataDefProps 的聚合。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_autosar_24

dataElement 的 CompuMethods 和 networkRepresentation 用于转换目的

dataElement 和 networkRepresentation 的附加 CompuMethods 可用于识别两者之间的转换。 这种方法的优点是,它也可以在不进行任何修改的情况下与不同 SwComponentType 之间的数据元素的一般重新映射和重新缩放结合使用,无论它们是位于相同还是不同的 ECU 上。

请注意,是否采用网络表示进行数据映射的决定是在 AUTOSAR 系统模板 [11] 的上下文中完成的。 请在适用规范中找到有关这方面的更多详细信息。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据过滤_25

网络表示对 ApplicationCompositeDataType 的适用性

ReceiverComSpec 或 SenderComSpec 处的 networkRepresentation 聚合仅适用于 ApplicationPrimitiveDataTypes 类型化的数据元素。 对于使用 ApplicationCompositeDataType 的情况,应使用附加机制。

特别地,compositeNetworkRepresentation 将用于定义ApplicationCompositeDataTypes 的叶元素的networkRepresentation。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_无符号整数_26

网络表示与复合网络表示的存在

如果 ReceiverComSpec 或 SenderComSpec 聚合了 networkRepresentation,则它不应同时聚合 CompositeNetworkRepresentation(反之亦然)。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_无符号整数_27

复合网络表示的存在应该是全面的

如果至少存在一个 CompositeNetworkRepresentation,那么对于受影响的 ApplicationCompositeDataType 的每个叶 ApplicationCompositeElementDataPrototype,应准确定义一个 CompositeNetworkRepresentation。

当然,[constr_1197] 的定义在某种程度上具有递归特性。 意思是,如果它实际上是要定义一个复合网络表示,那么该定义应完全覆盖相应 ApplicationCompositeDataType 的整个叶元素集。 换句话说,要么全有,要么全无。

916_AUTOSAR_TPS_SoftwareComponentTemplate21_发送器-接收器通信具体要求2_数据过滤_28

该元类用于定义复合应用程序数据类型的叶元素的网络表示。

这部分看完了发送器-接收器通信的具体要求,很多内容逐渐开始熟悉,主要的原因可能就是整体的脉络其实跟VFB的表述是类似相近的,至少是有一定相关性的。