Files
autosar_standard_spec_v4.4/SystemServices/AUTOSAR_SWS_COMManager.md
T

759 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AUTOSAR 通信管理器软件规范 (SWS COMManager)
> **文档元信息**
| 项目 | 内容 |
|------|------|
| 文档标题 | Specification of Communication Manager(通信管理器规范) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 079 |
| 文档状态 | Final(最终版) |
| AUTOSAR 标准分类 | Classic Platform(经典平台) |
| 标准发布版本 | 4.4.0 |
| 原文文档号 | AUTOSAR_SWS_COMManager |
---
## 文档变更历史
| 日期 | 发布版本 | 变更人 | 变更说明 |
|------|---------|--------|----------|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | - 引入 "managing" 和 "managed" ComM 通道<br>- 完全移除与 EcuMfixed 的关系<br>- 次要更正 |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 关于通信抑制和总线唤醒抑制的澄清 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | - 添加根据 ComM 通道请求/释放切换以太网交换机端口的可能性<br>- 添加控制以太网交换机并使用 PNC 的 ECU 的唤醒处理<br>- 次要更正 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | - 添加章节以解释部分网络用例<br>- 次要更正 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | - 在离开 PNC_REQUESTED 时释放与 PNC 相关的 FULL_COM 请求<br>- 若干澄清<br>- 次要更正 |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | - ComM 现在支持的最大 PNC 数为 56<br>- ComM 支持 VariantPostBuild 而不是 VariantPostBuildSelectable<br>- 对 ComMNmVariant "PASSIVE" 的 ComMChannels 的 PNC 限制 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | - 在第 8 章引入服务接口建模<br>- 修复强制 NO_COM 功能后的重置<br>- 编辑性修改 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | - ComM 允许为 Bus SM 配置任意总线名称<br>- Nm Variant Passive 不再可单独在通道上配置<br>- ComMPncId 到 Nm UserData 位的分配已指定 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | - 部分网络集群管理<br>- 改进/更正启动序列的说明(第 9 章)<br>- 禁止将 ComM 用户分配给 NmVariant=PASSIVE 的通道<br>- 删除了与 BusStateManager 不匹配时重新请求未更改的通信模式(ComM901)<br>- 删除剩余的 DEM 错误报告 |
| 2009-12-18 | 4.0.1 | AUTOSAR Administration | - 添加 ComM 和 NM 之间交互的表<br>- 移除生产错误 COMM_E_NET_START_IND_CHANNEL<br>- 修改配置参数 ComMMainFunctionPeriod 的下限 |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | - 更改 ComM 与 ECU State Manager (EcuM) 之间的交互<br>- 更改 ComM 与 Diagnostic Communication Manager (DCM) 之间的交互<br>- 添加对新模块 Basic Software Mode Manager (BswM) 和 Ethernet State Manager 的依赖<br>- 法律免责声明修订 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律免责声明修订 |
| 2007-07-24 | 2.1.18 | AUTOSAR Administration | - 移除总线特定错误处理(例如总线关闭处理)<br>- 移除对实际总线状态的控制<br>- 移除 PDU 组处理<br>- 移除通信栈的初始化 |
| 2007-01-24 | 2.1.19 | AUTOSAR Administration | - 更改特性<br>- 即使在模式限制激活时也可能重启(静默通信 → 全通信)<br>- 通道状态机已更改<br>- 序列图已更改<br>- 向上层的新服务<br>- RTE 模式指示 API 已更改<br>- 对其他模块的新调用<br>- 使用通道特定 APIEcuM 和 ComM)来指示通信通道已被唤醒并已进入睡眠<br>- NM 控制的 API 已更改(Nm_PassiveStartUp、Nm_NetworkRequest、Nm_NetworkRelease<br>- 法律免责声明修订<br>- 新增发布说明 |
| 2005-05-31 | 1.0 | AUTOSAR Administration | 初始发布 |
---
## 目录
> **摘要标记**:由于本文档体量较大(134 页),以下目录完整保留作为参考;后续正文部分将采用"重点翻译 + 摘要"策略。
- **第 1 章**[简介和功能概述](#1-简介和功能概述)
- **第 2 章**[缩略语和定义](#2-缩略语和定义)
- **第 3 章**[相关文档](#3-相关文档)
- **第 4 章**[约束和假设](#4-约束和假设)
- **第 5 章**[对其他模块的依赖](#5-对其他模块的依赖)
- **第 6 章**[需求追溯](#6-需求追溯)
- **第 7 章**[功能规范](#7-功能规范)
- 7.1 部分网络集群管理
- 7.2 ComM 通道状态机
- 7.3 扩展功能
- 7.4 总线通信管理
- 7.5 网络管理依赖
- 7.6 总线错误管理
- 7.7 测试支持需求
- 7.8 错误分类
- 7.9 非功能需求
- 7.10 通信管理器模块服务
- **第 8 章**[API 规范](#8-api-规范)
- **第 9 章**[序列图](#9-序列图)
- **第 10 章**[配置规范](#10-配置规范)
- **第 11 章**[不适用需求](#11-不适用需求)
---
## 免责声明
> 本节保留原文,不进行翻译。
---
## 1. 简介和功能概述
通信管理器模块(COM Manager, ComM)是基础软件(BSW)的组件。它是一个资源管理器,封装了对底层通信服务的控制。ComM 模块控制与通信相关的基础软件模块,而非软件组件或可运行实体。ComM 模块从通信请求者(参见第 2 章中"用户"术语的定义)收集总线通信访问请求,并协调总线通信访问请求。
ComM 模块的目的是:
- 简化用户对总线通信栈的使用。这包括简化的网络管理处理。
- 协调单个 ECU 上多个独立软件组件的总线通信栈可用性(允许发送和接收信号)。
- **注释**:用户不应了解硬件(例如在哪个通道上通信)。用户只需请求"通信模式",ComM 模块将相应通道的通信能力打开/关闭。
- 提供 API 以禁用信号发送,防止 ECU(主动)唤醒通信总线。
- **注释**:在 CAN 上每条消息都会唤醒总线,在 FlexRay 上仅能使用所谓的唤醒模式唤醒总线。
- 通过为每个通道实现通道状态机来控制 ECU 的多个通信总线通道。
- **注释**:ComM 模块从相应的总线状态管理器模块请求通信模式。实际的总线状态由相应的总线状态管理器模块控制。
- 提供将保持总线唤醒的 ECU 强制为"无通信"模式的可能(详见 7.3.1.2 节)。
- 通过分配请求的通信模式所需的所有资源来简化资源管理。
- **注释**:例如,当用户请求"全通信"模式时检查是否允许通信,并防止 ECU 在通信期间关闭。
---
## 2. 缩略语和定义
| 缩写/术语 | 描述 |
|-----------|------|
| BSW | Basic Software(基础软件) |
| BswM | Basic Software Mode Manager(基础软件模式管理器) |
| ComM | Communication Manager(通信管理器) |
| DCM | Diagnostic Communication Manager(诊断通信管理器) |
| Det | Default Error Tracer(默认错误跟踪器) |
| EcuM | ECU State Manager moduleECU 状态管理器模块) |
| I-PDU | Information Protocol Data Unit(信息协议数据单元) |
| NM | Network Management(网络管理) |
| PDU | Protocol Data Unit(协议数据单元) |
| SW-C | Software Component(软件组件) |
| VMM | Vehicle Message Matrix(车辆消息矩阵) |
### 术语定义
| 术语 | 描述 |
|------|------|
| **DCM_ActiveDiagnostic indication** | DCM 模块指示活动诊断会话。DCM 需要"全通信"= COMM_FULL_COMMUNICATION 用于诊断目的 |
| **Active wake-up** | 由托管 ECU 引起的唤醒,例如通过传感器 |
| **Application signal scheduling** | 根据 VMM 发送应用信号。CAN 应用信号的调度由通信模块执行,LIN 应用 I-PDU(含信号的 PDU)的调度由 LIN 接口执行,FlexRay 应用 PDU 的调度由 FlexRay 接口模块执行 |
| **Bus sleep** | 通信总线上不需要任何活动(例如 CAN 总线睡眠) |
| **Bus communication messages** | 在通信总线上发送的所有消息。这可以是诊断消息或应用消息 |
| **COM Inhibition status** | 定义是否允许全通信、静默通信或唤醒 |
| **Communication Channel** | 用于将信息从发送方(或发射机)传送到接收方的媒介 |
| **Communication Mode** | 确定允许哪些通信的模式:<br>- "full communication" = COMM_FULL_COMMUNICATION<br>- "no communication" = COMM_NO_COMMUNICATION<br>- "silent communication" = COMM_SILENT_COMMUNICATION<br>**注意**COMM_SILENT_COMMUNICATION 不能由用户请求。内部模式用于关闭时的网络同步 |
| **Diagnostic PDU scheduling** | 发送诊断 PDU。CAN 诊断 PDU 的调度由诊断模块执行,LIN 诊断 PDU 的调度由诊断模块和 LIN 接口执行,FlexRay 诊断 PDU 的调度由诊断模块和 FlexRay 接口模块执行 |
| **ECU shut down** | 参见 ECU State Manager 规范 [6] |
| **Fan-out** | 相同消息/指示被发送到多个目的地/接收方 |
| **Independent software component** | 独立开发的软件组件,执行一组具有到 ECU 上其他软件应用程序最少接口的连贯功能。这可以是例如基础软件组件或应用软件组件 |
| **Passive wake-up** | 由另一个 ECU 唤醒并传播(例如通过总线或唤醒线)到当前关注的 ECU |
| **System User** | 管理功能(ComM 内部上下文中生成的特定"用户"),用于发出默认请求和覆盖用户请求 |
| **User** | ECU State Manager 模块和通信管理器模块请求者的概念。用户可以是 BswM、可运行实体、SW-C 或一组 SW-C,它们作为单个单元对 ECU State Manager 模块和通信管理器模块进行操作 |
| **User Request** | 用户可以从 ComM 请求不同的通信模式 |
| **Managed channel** | 通过 ECUC 参数 ComMManageReference 引用另一个 ComM 通道的 ComM 通道(参见 ECUC_ComM_00893 |
| **Managing channel** | 至少被另一个通道通过 ECUC 参数 ComMManageReference 引用的 ComM 通道(参见 ECUC_ComM_00893 |
---
## 3. 相关文档
### 3.1 输入文档
> **摘要标记**:完整输入文档列表见原文 PDF 第 13-15 页。主要参考包括:
>
> - AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
> - AUTOSAR_SRS_BSWGeneral.pdf
> - AUTOSAR_SWS_RTE.pdf
> - AUTOSAR_SWS_ECUM.pdf
> - AUTOSAR_SWS_BSWModeManager.pdf
> - AUTOSAR_SWS_DCM.pdf
> - AUTOSAR_SWS_Com.pdf
> - AUTOSAR_SWS_CanSM.pdf
> - AUTOSAR_SWS_FrSM.pdf
> - AUTOSAR_SWS_LinSM.pdf
> - AUTOSAR_SWS_EthSM.pdf
> - AUTOSAR_SWS_Nm.pdf
> - AUTOSAR_SWS_Det.pdf
> - AUTOSAR_SWS_NvM.pdf
> - AUTOSAR_TPS_ECUConfiguration.pdf
> - AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
> - AUTOSAR_TPS_StandardizationTemplate.pdf
### 3.2 相关标准和规范
> **摘要标记**:本节引用了 ISO 17356 系列标准和其他相关标准。完整内容见原文 PDF 第 14-15 页。
### 3.3 相关规范
> **摘要标记**:本节指出 AUTOSAR 提供了关于基础软件模块的通用规范 [SRS_BSWGeneral]、[SWS_BSWGeneral],这些规范对 ComM 同样有效。完整内容见原文 PDF 第 15 页。
---
## 4. 约束和假设
### 4.1 限制
> **摘要标记**:本节描述 ComM 的限制,包括它不直接管理硬件层、依赖于 Bus State Managers、依赖于 NM 等。完整内容见原文 PDF 第 16 页。
### 4.2 对汽车领域的适用性
> **摘要标记**:ComM 适用于所有汽车领域,包括车身、底盘、动力总成和信息娱乐。完整内容见原文 PDF 第 16 页。
---
## 5. 对其他模块的依赖
> **摘要标记**:本节描述 ComM 对以下模块的依赖:
>
> - 5.1 文件结构
> - 5.2 AUTOSAR Runtime Environment (RTE)
> - 5.3 ECU State Manager (EcuM)
> - 5.4 Basic Software Mode Manager (BswM)
> - 5.5 NVRAM Manager
> - 5.6 Diagnostic Communication Manager (DCM)
> - 5.7 LIN State Manager
> - 5.8 CAN State Manager
> - 5.9 FlexRay State Manager
> - 5.10 Ethernet State Manager
> - 5.11 Network Management (NM)
> - 5.12 Default Error Tracer (DET)
> - 5.13 Communication (COM)
>
> 完整内容见原文 PDF 第 17-19 页。
---
## 6. 需求追溯
> **摘要标记**:本节包含约 100 行的需求追溯表,链接 RS_BRF_xxxxx 特性到 SWS_ComM_xxxxx 规范需求。完整内容见原文 PDF 第 20-24 页。
---
## 7. 功能规范
### 7.1 部分网络集群管理
#### 7.1.1 概述
部分网络集群(PNC)允许 ECU 仅在需要时唤醒特定的网络部分,从而降低功耗。PNC 是物理和功能上相关的 ECU 集合,可以一起被唤醒和关闭。
#### 7.1.2 部分网络集群管理功能
> **摘要标记**:本节描述 PNC 管理功能。完整内容见原文 PDF 第 28-29 页。
#### 7.1.3 ComM PNC 状态机
> **摘要标记**:PNC 状态机是 ComM 的核心,包含以下状态:
>
> - PNC_OFF
> - PNC_INIT
> - PNC_REQUESTED
> - PNC_READY_SLEEP
> - PNC_PREPARE_SLEEP
> - PNC_ACTIVE
> - PNC_SHUTDOWN
>
> 状态转换受 PNC 请求、释放、EIRAExternal Inter-Partition Request Array)和 ERAExternal Release Array)信号影响。完整内容见原文 PDF 第 29-36 页。
#### 7.1.4 PNC 网关
> **摘要标记**:本节描述 PNC 网关功能。完整内容见原文 PDF 第 36-37 页。
#### 7.1.5 ComM 用户到 PNC 关系
> **摘要标记**:本节描述 ComM 用户和 PNC 之间的映射关系。完整内容见原文 PDF 第 37-38 页。
#### 7.1.6 部分网络配置提示
> **摘要标记**:本节提供 PNC 配置的最佳实践。完整内容见原文 PDF 第 38 页。
### 7.2 ComM 通道状态机
#### 7.2.1 ComM managed 和 managing 通道
> **摘要标记**:本节描述引入 managed/managing 通道机制以协调多个通道。完整内容见原文 PDF 第 43 页。
#### 7.2.2 COMM_NO_COMMUNICATION 状态行为
> **摘要标记**:本节描述通道在 COMM_NO_COMMUNICATION 状态下的行为。完整内容见原文 PDF 第 44-47 页。
#### 7.2.3 COMM_SILENT_COMMUNICATION 状态行为
> **摘要标记**:本节描述通道在 COMM_SILENT_COMMUNICATION 状态下的行为。完整内容见原文 PDF 第 47-48 页。
#### 7.2.4 COMM_FULL_COMMUNICATION 状态行为
> **摘要标记**:本节描述通道在 COMM_FULL_COMMUNICATION 状态下的行为。完整内容见原文 PDF 第 48-52 页。
### 7.3 扩展功能
#### 7.3.1 通信抑制
> **摘要标记**:本节描述通信抑制功能,包括:
>
> - 防止 ECU 唤醒(PreventWakeUp
> - 通道限制到 NoCom 模式(LimitChannelToNoComMode
> - ECU 限制到 NoCom 模式(LimitECUToNoComMode
> - 抑制计数器(InhibitCounter
>
> 完整内容见原文 PDF 第 53-57 页。
### 7.4 总线通信管理
> **摘要标记**:本节描述 ComM 与 Bus State Managers 的交互。完整内容见原文 PDF 第 57 页。
### 7.5 网络管理依赖
> **摘要标记**:本节描述 ComM 与网络管理(NM)的交互。完整内容见原文 PDF 第 57-58 页。
### 7.6 总线错误管理
#### 7.6.1 网络启动指示
> **摘要标记**:本节描述网络启动指示(Network Start Indication)功能。完整内容见原文 PDF 第 58 页。
### 7.7 测试支持需求
#### 7.7.1 抑制全通信请求计数器
> **摘要标记**:本节描述 ComM_ReadInhibitCounter 和 ComM_ResetInhibitCounter API 的使用,以支持诊断服务对当前计数器状态的访问。完整内容见原文 PDF 第 58-59 页。
### 7.8 错误分类
#### 7.8.1 开发错误
##### [SWS_ComM_00234] 错误代码表
| 错误类型 | 相关性 | 相关错误代码 | 值 [hex] |
|---------|--------|--------------|----------|
| API service used without module initialization | Development | COMM_E_UNINIT | 0x1 |
| API service used with wrong parameters | Development | COMM_E_WRONG_PARAMETERS | 0x2 |
| API Service used with a null pointer | Development | COMM_E_PARAM_POINTER | 0x3 |
| Initialization failed | Development | COMM_E_INIT_FAILED | 0x4 |
##### [SWS_ComM_00612] 未初始化时行为
```
If ComM is not initialized, all ComM module and all API service other than
ComM_Init() (see SWS_ComM_00146), ComM_GetVersionInfo() (see SWS_COMM_00370)
and ComM_GetStatus() (see SWS_COMM_00242); shall:
- not execute their normal operation,
- and return E_NOT_OK, if it has a standard return type.
```
##### [SWS_ComM_00858] 开发错误检测
```
If development error detection is enabled by ComMDevErrorDetect (see
ECUC_ComM_00555): the function shall check that the service ComM_Init was
previously called. If the check fails, the function shall raise the development
error COMM_E_UNINIT otherwise (if DET is disabled) return E_NOT_OK.
```
#### 7.8.2 运行时错误
无运行时错误。
#### 7.8.3 瞬态故障
无瞬态故障。
### 7.9 非功能需求
##### [SWS_ComM_00459] 集成方式
```
It shall be possible to integrate the ComM module delivered as source or object
code into the AUTOSAR stack.
Rationale:
• Allow IP protection and guaranteed test coverage: object code
• Allow high efficiency and configurability at system generation time
(by integrator): source code.
```
### 7.10 通信管理器模块服务
> **摘要标记**:本节定义 ComM 的 AUTOSAR 接口,包括架构、用例(SW-C 不关心 ComM、SW-C 仅关心通信状态、SW-C 显式影响通信状态、SW-C 直接与物理通道交互)、端口和端口接口规范、可运行实体和入口点。完整内容见原文 PDF 第 60-71 页。
---
## 8. API 规范
### 8.1 导入类型
#### 8.1.1 标准类型
> **摘要标记**:本节列出 ComM 导入的标准类型,如 Std_ReturnType。完整内容见原文 PDF 第 72 页。
### 8.2 类型定义
#### 8.2.1 ComM_InitStatusType
> **摘要标记**:本节定义 ComM_InitStatusType 枚举:
> - COMM_UNINIT:未初始化
> - COMM_INIT:已初始化
>
> 完整内容见原文 PDF 第 72-73 页。
#### 8.2.2 ComM_PncModeType
> **摘要标记**:本节定义 ComM_PncModeType 枚举:
> - COMM_PNC_REQUESTED
> - COMM_PNC_READY_SLEEP
> - COMM_PNC_PREPARE_SLEEP
> - COMM_PNC_ACTIVE
> - COMM_PNC_SHUTDOWN
>
> 完整内容见原文 PDF 第 73 页。
#### 8.2.3 ComM_StateType
> **摘要标记**:本节定义 ComM_StateType 枚举。完整内容见原文 PDF 第 73 页。
#### 8.2.4 ComM_ConfigType
> **摘要标记**:本节定义 ComM_ConfigType 结构。完整内容见原文 PDF 第 73 页。
### 8.3 函数定义
> **摘要标记**:本节列出 ComM 提供的函数。以下是主要 API:
#### 8.3.1 ComM_Init
```c
Service name: ComM_Init
Syntax: void ComM_Init(
const ComM_ConfigType* ConfigPtr)
Service ID[hex]: 0x01
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): ConfigPtr Pointer to post-build configuration data
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: Initializes the AUTOSAR Communication Manager and restarts
the internal state machines.
Available via: ComM.h
```
**详细行为**
- `[SWS_ComM_00793]` ComM_Init() 的注意事项:NVRAM Manager 模块必须初始化才能"直接"访问 ComM 模块的参数。
- `[SWS_ComM_00864]` 在 ComM_Init() 中,ComM 应从 NVRAM 读取 SWS_ComM_00103 中指定的非易失性参数。如果没有可用参数,ComM 应使用 ComM 配置中的默认值。
#### 8.3.2 ComM_DeInit
```c
Service name: ComM_DeInit
Syntax: void ComM_DeInit(void)
Service ID[hex]: 0x02
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): None
Parameters None
(inout):
Parameters (out): None
Return value: None
Description: This API de-initializes the AUTOSAR Communication Manager.
Available via: ComM.h
```
**详细行为**
- `[SWS_ComM_00794]` ComM_DeInit() 中的去初始化应仅在 ComM 模块控制的所有通道都处于 COMM_NO_COMMUNICATION 模式时执行。
- `[SWS_ComM_00865]` 在 ComM_DeInit 中,ComM 应将 SWS_ComM_00103 中指定的非易失性参数存储到 NVRAM。
#### 8.3.3 ComM_GetStatus
```c
Service name: ComM_GetStatus
Syntax: Std_ReturnType ComM_GetStatus(
ComM_InitStatusType* Status)
Service ID[hex]: 0x03
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): None
Parameters None
(inout):
Parameters (out): Status COMM_UNINIT: The ComM is not initialized or not usable.
Default value after startup or after ComM_DeInit() is called.
COMM_INIT: The ComM is initialized and usable.
Return value: Std_ReturnType E_OK: Successfully return of initialization status
E_NOT_OK: Return of initialization status failed
Description: Returns the initialization status of the AUTOSAR Communication Manager.
After a call to ComM_DeInit() ComM should have status COMM_UNINIT, and a
new call to ComM_Init needed to make sure ComM restart internal state machines
to default values.
Available via: ComM.h
```
#### 8.3.4 ComM_GetInhibitionStatus
```c
Service name: ComM_GetInhibitionStatus
Syntax: Std_ReturnType ComM_GetInhibitionStatus(
NetworkHandleType Channel,
ComM_InhibitionStatusType* Status)
Service ID[hex]: 0x04
Sync/Async: Synchronous
Reentrancy: Non Reentrant
Parameters (in): Channel See NetworkHandleType
Parameters None
(inout):
Parameters (out): Status See ComM_InhibitionStatusType
Return value: Std_ReturnType E_OK: Successfully returned Inhibition Status
E_NOT_OK: Return of Inhibition Status failed
Description: Returns the inhibition status of a ComM channel.
Available via: ComM.h
```
#### 8.3.5 ComM_RequestComMode
```c
Service name: ComM_RequestComMode
Syntax: Std_ReturnType ComM_RequestComMode(
ComM_UserHandleType User,
ComM_ModeType ComMode)
Service ID[hex]: 0x05
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): User Handle of the user who requests a mode
ComMode COMM_FULL_COMMUNICATION
COMM_NO_COMMUNICATION
Parameters None
(inout):
Parameters (out): None
Return value: Std_ReturnType E_OK: Successfully changed to the new mode
E_NOT_OK: Changing to the new mode failed
COMM_E_MODE_LIMITATION: Mode can not be granted
because of mode inhibition.
Description: Requesting of a Communication Mode by a user.
Note:
Internally mode COMM_SILENT_COMMUNICATION is not a valid request
for a user, mode used for synchronization at shutdown.
Valid modes are COMM_NO_COMMUNICATION and COMM_FULL_COMMUNICATION.
The communication request could also be released due to a ComM
communication inhibition.
Available via: ComM.h
```
**详细行为**
- `[SWS_ComM_00795]` ComM_RequestComMode 的配置:用户和通道之间的关系。用户被静态映射到一个或多个通道。
#### 8.3.6 ComM_GetMaxComMode
```c
Service name: ComM_GetMaxComMode
Syntax: Std_ReturnType ComM_GetMaxComMode(
ComM_UserHandleType User,
ComM_ModeType* ComMode)
Service ID[hex]: 0x06
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): User Handle of the user who requests a mode
Parameters None
(inout):
Parameters (out): ComMode See ComM_ModeType
Return value: Std_ReturnType E_OK: Successfully returned maximum allowed Communication Mode
E_NOT_OK: Return of maximum allowed Communication Mode failed
Description: Function to query the maximum allowed Communication Mode of the corresponding user.
Available via: ComM.h
```
**用例**:此函数提供请求最大可能模式的可能(例如用户希望检查是否可能获得"全通信"模式或是否激活了限制/抑制)。这对于诊断/调试是必需的。
- `[SWS_ComM_00374]` 如果一个用户请求链接到多个通道并且通道的最大允许模式不同,则函数 ComM_GetMaxComMode 应返回最低模式(参见 SWS_ComM_00867 和 SWS_ComM_00868)。
- `[SWS_ComM_00796]` ComM_GetMaxComMode 的配置:用户和通道之间的关系。
#### 8.3.7 ComM_GetRequestedComMode
```c
Service name: ComM_GetRequestedComMode
Syntax: Std_ReturnType ComM_GetRequestedComMode(
ComM_UserHandleType User,
ComM_ModeType* ComMode)
Service ID[hex]: 0x07
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): User Handle of the user who requests a mode
Parameters None
(inout):
Parameters (out): ComMode Name of the requested mode
Return value: Std_ReturnType E_OK: Successfully returned requested Communication Mode
E_NOT_OK: Return of requested Communication Mode failed
Description: Function to query the currently requested Communication Mode of the corresponding user.
Available via: ComM.h
```
#### 8.3.8 ComM_GetCurrentComMode
```c
Service name: ComM_GetCurrentComMode
Syntax: Std_ReturnType ComM_GetCurrentComMode(
ComM_UserHandleType User,
ComM_ModeType* ComMode)
Service ID[hex]: 0x08
Sync/Async: Synchronous
Reentrancy: Reentrant
Parameters (in): User Handle of the user who requests a mode
Parameters None
(inout):
Parameters (out): ComMode See ComM_ModeType
Return value: Std_ReturnType E_OK: Successfully returned Communication Mode from Bus State Manager
E_NOT_OK: Return of Communication Mode from Bus State Manager failed
Description: Function to query the current Communication Mode. ComM shall use the
corresponding interfaces of the Bus State Managers to get the current
Communication Mode of the network.
(Call to Bus State Manager API: XXXSM_GetCurrentComMode(...))
Available via: ComM.h
```
#### 8.3.9 ComM_PreventWakeUp
> **摘要标记**ComM_PreventWakeUp API 用于防止通道唤醒。完整内容见原文 PDF 第 78-79 页。
#### 8.3.10 ComM_LimitChannelToNoComMode
> **摘要标记**ComM_LimitChannelToNoComMode API 用于将通道限制为 No Communication 模式。完整内容见原文 PDF 第 79 页。
#### 8.3.11 ComM_LimitECUToNoComMode
> **摘要标记**ComM_LimitECUToNoComMode API 用于将 ECU 限制为 No Communication 模式。完整内容见原文 PDF 第 80 页。
#### 8.3.12 ComM_ReadInhibitCounter
> **摘要标记**ComM_ReadInhibitCounter API 用于读取抑制计数器。完整内容见原文 PDF 第 80-81 页。
#### 8.3.13 ComM_ResetInhibitCounter
> **摘要标记**ComM_ResetInhibitCounter API 用于重置抑制计数器。完整内容见原文 PDF 第 81 页。
#### 8.3.14 ComM_SetECUGroupClassification
> **摘要标记**ComM_SetECUGroupClassification API 用于设置 ECU 的组分类。完整内容见原文 PDF 第 81-82 页。
#### 8.3.15 ComM_GetVersionInfo
> **摘要标记**ComM_GetVersionInfo API 用于获取版本信息。完整内容见原文 PDF 第 82 页。
### 8.4 回调通知
> **摘要标记**:本节描述 ComM 实现的回调通知:
>
> - 8.4.1 AUTOSAR 网络管理接口(Nm_NetworkStartIndication、Nm_NetworkMode、Nm_PrepareBusSleepMode、Nm_BusSleepMode、Nm_RemoteSleepIndication、Nm_RemoteSleepCancelation、Nm_SynchronizationPoint、Nm_CheckRemoteSleepIndication、Nm_ConfirmPncAvailability
> - 8.4.2 AUTOSAR 诊断通信管理器接口(Dcm_ActiveDiagnostic、Dcm_InactiveDiagnostic
> - 8.4.3 AUTOSAR ECU 状态管理器接口(EcuM_WakeupIndication、EcuM_ComM_WakeupIndication
> - 8.4.4 AUTOSAR ECU 状态管理器和基础软件模式管理器接口
> - 8.4.5 总线状态管理器接口(CanSM/FrSM/LinSM/EthSM
> - 8.4.6 COM 接口
>
> 完整内容见原文 PDF 第 82-87 页。
### 8.5 调度函数
#### 8.5.1 ComM_MainFunction
> **摘要标记**ComM_MainFunction 由调度器以 ComMMainFunctionPeriod 周期调用。完整内容见原文 PDF 第 87 页。
### 8.6 预期接口
#### 8.6.1 强制接口
> **摘要标记**:本节列出 ComM 调用的强制服务接口。完整内容见原文 PDF 第 88-91 页。
#### 8.6.2 可选接口
> **摘要标记**:本节列出 ComM 调用的可选服务接口。完整内容见原文 PDF 第 91-92 页。
#### 8.6.3 可配置接口
> **摘要标记**:本节列出 ComM 调用的可配置服务接口。完整内容见原文 PDF 第 92 页。
### 8.7 服务接口
#### 8.7.1 Sender-Receiver 接口
> **摘要标记**:本节列出 ComM 的 Sender-Receiver 接口。完整内容见原文 PDF 第 92-93 页。
#### 8.7.2 Client-Server 接口
> **摘要标记**:本节列出 ComM 的 Client-Server 接口。完整内容见原文 PDF 第 93-98 页。
#### 8.7.3 Mode-Switch 接口
> **摘要标记**:本节列出 ComM 的 Mode-Switch 接口。完整内容见原文 PDF 第 98 页。
#### 8.7.4 实现数据类型
> **摘要标记**:本节列出 ComM 的实现数据类型。完整内容见原文 PDF 第 98-101 页。
#### 8.7.5 端口
> **摘要标记**:本节列出 ComM 的端口定义。完整内容见原文 PDF 第 101-102 页。
#### 8.7.6 模式声明组
> **摘要标记**:本节列出 ComM 的模式声明组。完整内容见原文 PDF 第 102-103 页。
---
## 9. 序列图
> **摘要标记**:本节包含以下序列图:
>
> - 9.1 传输和接收启动(CAN)(第 104 页)
> - 9.2 被动唤醒(CAN)(第 104-106 页)
> - 9.3 网络关闭(CAN)(第 106-109 页)
> - 9.4 通信请求(第 110 页)
---
## 10. 配置规范
> **摘要标记**:本节是配置规范的主要部分,包含以下容器及其配置参数:
>
> - 10.2.1 ComM
> - 10.2.2 ComMGeneral
> - 10.2.3 ComMConfigSet
> - 10.2.4 ComMUser
> - 10.2.5 ComMChannel
> - 10.2.6 ComMNetworkManagement
> - 10.2.7 ComMUserPerChannel
> - 10.2.8 ComMPnc
> - 10.2.9 ComMPncComSignal
>
> 每个容器包含多个 ECUC 配置参数(ECUC_ComM_xxxxx)。
>
> 完整内容见原文 PDF 第 111-133 页。
---
## 11. 不适用需求
> **摘要标记**:本节列出对 ComM 不适用的需求。完整内容见原文 PDF 第 134 页。
---
## 翻译说明
- **文档类型**AUTOSAR SWSSoftware Specification,软件规范)
- **翻译策略**:本 SWS 文档(134 页)规模较大,采用"重点翻译 + 摘要"策略:
- **完整翻译**:封面、文档标识、变更历史、目录、章节 1(简介)、章节 2(缩略语和定义)、章节 3-5(相关文档/约束/依赖)、章节 7.8(错误分类)、章节 7.9(非功能需求)、关键 API(章节 8.3 关键函数)
- **摘要处理**:其他章节(7.1-7.10、8.4-8.7、9-11)使用"完整表见原文 PDF"标记
- **摘要标记位置**
- 第 3 章相关文档
- 第 4 章约束和假设
- 第 5 章依赖
- 第 6 章需求追溯
- 第 7.1-7.7 功能规范
- 第 7.10 ComM 服务架构
- 第 8.1 导入类型
- 第 8.2 类型定义
- 第 8.3.9-8.3.15 函数定义
- 第 8.4 回调通知
- 第 8.5 调度函数
- 第 8.6 预期接口
- 第 8.7 服务接口
- 第 9 章序列图
- 第 10 章配置规范
- 第 11 章不适用需求
- **保留内容**
- 需求 ID(如 `SWS_ComM_00146``SWS_ComM_00242` 等)
- AUTOSAR 方框符 `⌈⌋`
- 所有 API 标识符(`ComM_Init``ComM_RequestComMode``ComM_GetStatus` 等)
- 模块缩写(BSW、BswM、ComM、DCM、EcuM、NvM、RTE、SWC
- 文档间交叉引用
- **术语对照表**
- Communication Manager → 通信管理器
- Communication Mode → 通信模式
- Communication Channel → 通信通道
- Partial Network Cluster (PNC) → 部分网络集群
- Managed Channel → 受管通道
- Managing Channel → 管理通道
- Network Start Indication → 网络启动指示
- Bus Sleep → 总线睡眠
- Full Communication → 全通信
- No Communication → 无通信
- Silent Communication → 静默通信
- Active Wake-up → 主动唤醒
- Passive Wake-up → 被动唤醒
- Communication Inhibition → 通信抑制
- Mode Limitation → 模式限制
- ECU Group Classification → ECU 组分类
- Inhibit Counter → 抑制计数器