全部学习汇总: GitHub - GreyZhang/hack_autosar: learning autosar documents, aha, very hard!
继续学习AUTOSAR,看一下官方文档。

4.2.5 模式通信
通过端口进行模式通信有两种不同的用例:
1. 可以将实际模式转换从模式管理器组件传送到其客户端组件以强制执行模式切换。
2. 模式转换请求可以从任何组件传送到模式管理器。
模式信息的传播
对于通信模式切换(即第一个用例),软件组件模板描述了 ModeDeclarationGroupPrototypes 通信的概念,类似于 VariableDataPrototypes 的通信,但使用了特殊类型的 PortInterface:所需或提供的 ModeDeclarations 的集合 由 SwComponentType 定义(如图 4.6 所示),通过 ModeSwitchInterfaces 定义 SwComponentType 拥有的 PortPrototypes。

由于与用于处理模式切换的 RTE 的强交互,第一个用例不允许跨 ECU 边界的通信:
模式开关的本地通信
带有 ModeSwitchInterfaces 的端口不能跨 ECU 边界连接。

不同的ModeDeclarationGroups 应该有不同的shortNames。
不允许软件组件使用 ModeSwitchInterfaces 键入多个 PortPrototypes,其中包含的 ModeDeclarationGroupPrototypes 引用具有相同 shortNames 但不同 ModeDeclarations 的 ModeDeclarationGroups。
显然,[constr_2049] 的基本原理是避免生成的 RTE 文件中的冲突。
例如:定义了两个具有相同shortName“Foo”的ModeDeclarationGroups。
ModeDeclarationGroup “Foo” 包含 ModeDeclaration “X”、“Y”、“Z” ModeDeclarationGroup “Foo*” 包含 ModeDeclarations “W”、“X”、“Y”、“Z” 在这种情况下,软件组件只允许 使用“Foo”或“Foo*”。

模式切换接口声明要发送和接收的 ModeDeclarationGroupPrototype。

ModeDeclarationGroupPrototype 指定在给定上下文中提供或需要的一组模式 (ModeDeclarationGroup)。

请注意,通过在角色 swCalibrationAccess 中聚合 SwCalibrationAccessEnum,ModeDeclarationGroupPrototype 可以获得变得可测量的能力。 这意味着以下约束:
ModeDeclarationGroupPrototype 的 SwCalibrationAccessEnum 允许值
ModeDeclarationGroupPrototype 聚合的 swCalibrationAccess 唯一允许的值是 notAccessible 和 readOnly。

确定对数据对象的访问权限 w.r.t. 测量和校准。

在 FlatInstanceDescriptor 的上下文中为 MCD 系统定义文字
如果 ModeDeclarationGroupPrototype.swCalibrationAccess 设置为只读,则被引用的 FlatInstanceDescriptor.swDataDefProps 可能又会引用 CompuMethod,该 CompuMethod 定义了在 MCD 系统中使用的特定文字,用于显示测量的 ModeDeclarationGroupPrototypes 的值。
这个用例的存在是将“AI”放在 compuMethod 和 FlatInstanceDescriptor 的交叉点的原因。
另一种可能的情况(不一定与 ModeDeclarationGroupPrototypes 有关,但与一般 MCD 系统的文字定义有关)是 FlatInstanceDescriptor 不存在(例如,因为受影响的数据片段存在于基本软件中)但仍然存在 能够定义特定文字以在 MCD 系统中显示值会很好。
通过将“AI”放在表 5.39 中的 compuMethod 和 McDataInstance 的交集处,AUTOSAR 标准也可以支持这种情况。

每个 ModeSwitchInterface 的 ModeDeclarationGroupPrototype
ModeDeclarationGroupPrototype 到 ModeSwitchInterface 的聚合的多样性在实际应用中被限制为 1。
诚然,支持 0..* 多重性没有技术限制,但另一方面,似乎不存在这种场景的任何合理用例。
如果以某种方式 SwComponentType 必须考虑两个甚至更多 ModeDeclarationGroupPrototypes,它们很可能是不同 ModeSwitchInterfaces 的一部分。
在 ModeSwitchInterface 中包含 ModeDeclarationGroupPrototype 允许显式定义 SwConnector,它在 SwComponentPrototypes 之间进行通信,并定义用于与 ServiceSwComponentTypes 通信的服务接口。 由于 PortInterfaces 的兼容性规则(参见第 6 章),每个 SwComponentType 都可以依赖于所需模式激活的可用性。

请注意,每个 SwComponentType 可以定义(通过它们的 PortPrototypes 和 ModeSwitchInterfaces)需要和提供的 ModeDeclarationGroupPrototypes 的列表。

CompositionSwComponentType 需要并提供其包含的 SwComponentPrototype 所需或提供的模式
最终, CompositionSwComponentType 需要并提供其包含的 SwComponentPrototype 所需或提供的模式。 这些模式从 SwComponentPrototypes 到封闭的 CompositionSwComponentType 的委托由 DelegationSwConnectors 明确描述。
软件组件的正式描述不会对所需和提供的 ModeDeclarationGroupPrototypes 的语义做出任何假设。
它只需要并按名称提供 ModeDeclarationGroupPrototypes。 有关模式声明的更多信息,请参阅第 9.1 节。


请求模式更改
请求模式的能力(即 第二个用例)通过 SenderReceiverInterface 在 VFB 上建模,对于 RTE,它就像通常的通信,这意味着连接器也可以跨越 ECU 边界,并且通信的数据元素必须基于 AutosarDataType。
然而,为了与第一个用例的语义一致性,通信模式请求也应映射到相应的 ModeDeclarationGroup。 这可以通过映射类来定义,如图 4.7 所示。
然后可以在 PortInterface 中使用映射到某个 ModeDeclarationGroup 的 ImplementationDataType 将关联的 ModeDeclarationGroup 的 ModeDeclaration 表示为数值:
模式到数据类型的明确映射
在一个 DataTypeMappingSet 中,ModeDeclarationGroup 不应映射到不同的 ImplementationDataType。

指定 ModeDeclarationGroup 和 ImplementationDataType 之间的映射。 该ImplementationDataType 将用于实现ModeDeclarationGroup。

ModeRequestTypeMap 的限制
对于由 ModeSwitchInterface 类型化的 PortPrototype 中使用的 ModeDeclarationGroupPrototype 所引用的每个 ModeDeclarationGroup,应存在指向 ModeDeclarationGroup 和合格的 ImplementationDataType 的 ModeRequestTypeMap。
ModeRequestTypeMap 应由 DataTypeMappingSet 聚合,该 DataTypeMappingSet 是从 SwcInternalBehavior 引用的,该 SwcInternalBehavior 由 ApplicationSwComponentType 拥有,而 ApplicationSwComponentType 也拥有 PortPrototype。



用作 ModeRequestTypeMap.implementationDataType 的实现数据类型
ModeRequestTypeMap 引用的ImplementationDataType 要么属于VALUE 类,要么属于TYPE_REFERENCE 类,后者又引用了类VALUE 的ImplementationDataType。
由ImplementationDataType 引用的baseType 应将属性BaseTypeDirectDefinition.baseTypeEncoding 的值设置为NONE。

ApplicationDataType 定义了 ModeDeclarationGroup 中使用的值的子集
请注意,相应的 ApplicationDataType 定义了 ModeDeclarationGroup 中使用的值的子集,并且使用的标签可能与 ModeDeclarations 使用的名称不同。
根据功能需要维护数据类型和 ModeDeclarationGroups 是系统设计者的责任。
例如,ModeRequester 可能只请求可用模式的一个子集(通过 SenderReceiverInterface 或 ClientServerInterface)。 ModeManager 可以另外决定指示失败。
有关将 ModeSwitchInterface 键入的不同类型 PortPrototype 相互连接的能力的更多信息,请参阅 [constr_1204] 和 [constr_1205]。

4.2.6 参数通信
当然,作为 ParameterInterface 一部分的 ParameterDataPrototypes 的“通信”并没有建立实际的数据传输。
该术语用于概念性含义; 并且类似 ParameterInterface 之类的东西的存在仅仅因为将校准参数在软件组件表面的公开与其他数据的公开在同一正式级别上统一的想法来证明是合理的,即通过 PortPrototype 类型化,而它本身通过PortInterface类型化。
这部分主要看了通信模式以及参数通信,通信模式之中了解了简单的概念以及相关端口的作用域。比如,带有模式切换功能的接口,应该不可跨ECU使用等。这些其实在开发过程中会容易一些,因为都是工具支持帮开发人员进行了错误问题的避免。
















