P1 batch translation: 94 PDFs (Communication + Diagnostics + SystemServices + MCAL)
This commit is contained in:
@@ -0,0 +1,775 @@
|
||||
# Socket 适配器规范
|
||||
|
||||
**AUTOSAR CP Release 4.4.0**
|
||||
|
||||
> 翻译说明:本文件为 AUTOSAR SWS Socket Adaptor (SoAd) 规范的中文翻译版本。文档标识 416,对应原文 `AUTOSAR_SWS_SocketAdaptor.pdf`(138 页)。
|
||||
|
||||
## 元信息
|
||||
|
||||
| 字段 | 值 |
|
||||
|---|---|
|
||||
| 文档标题 | Socket 适配器规范 (Specification of Socket Adaptor) |
|
||||
| 文档所有者 | AUTOSAR |
|
||||
| 文档责任方 | AUTOSAR |
|
||||
| 文档标识号 | 416 |
|
||||
| 文档状态 | Final(最终版) |
|
||||
| AUTOSAR 标准所属 | Classic Platform(经典平台) |
|
||||
| 标准发布版本 | 4.4.0 |
|
||||
| 文档 ID | AUTOSAR_SWS_SocketAdaptor |
|
||||
|
||||
## 文档变更历史
|
||||
|
||||
| 日期 | 发布版本 | 修改者 | 变更说明 |
|
||||
|---|---|---|---|
|
||||
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 引入传输层安全 - TLS(DRAFT);小幅修正/澄清/编辑性变更 |
|
||||
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 运行时错误上线;澄清和修正需求;编辑性变更 |
|
||||
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 支持解耦数据传输;客户端/服务器通信优化;引入可靠 TxConfirmations |
|
||||
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 澄清和修正需求;编辑性变更 |
|
||||
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 引入车内通信 IPv6;支持 Service Discovery 客户端的服务迁移(SpecificRoutingGroup 处理);`SoAd_RequestIpAddrAssignment` API 扩展 |
|
||||
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | TP API:`ChangeParameter` 函数统一;澄清和修正需求 |
|
||||
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | TP API:`NotifResultType` 替换为 `Std_ReturnType`;澄清和修正需求 |
|
||||
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 添加/更新与 SWS TCP/IP 模块交互的 API;添加触发 IPdu 发送的功能;DoIP 功能移除 |
|
||||
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 修正同步性和重入的不一致;调整参数多重性;新的可追踪性机制 |
|
||||
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | ComStack 统一;允许 Post-Build 配置;IP 地址变化通知 API;允许完全处理 TCP 连接 |
|
||||
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 初始发布 |
|
||||
|
||||
## 目录
|
||||
|
||||
1. [介绍与功能概述](#1-介绍与功能概述)
|
||||
2. [缩写词与缩略语](#2-缩写词与缩略语)
|
||||
3. [相关文档](#3-相关文档)
|
||||
4. [约束与假设](#4-约束与假设)
|
||||
5. [与其他模块的依赖关系](#5-与其他模块的依赖关系)
|
||||
6. [需求可追踪性](#6-需求可追踪性)
|
||||
7. [功能规范](#7-功能规范)
|
||||
8. [API 规范](#8-api-规范)
|
||||
9. [时序图](#9-时序图)
|
||||
10. [配置规范](#10-配置规范)
|
||||
|
||||
---
|
||||
|
||||
## 1 介绍与功能概述
|
||||
|
||||
本规范规定了 AUTOSAR 基础软件模块 Socket Adaptor (SoAd) 的功能、API 和配置。SoAd 提供了基于 TCP/IP 套接字的 PDU 路由抽象,向上层(COM、DCM、CDD)提供统一的套接字 API。
|
||||
|
||||
### 1.1 模块职责
|
||||
|
||||
SoAd 的主要职责:
|
||||
- 抽象 TCP/IP 套接字为 PDU 路由连接
|
||||
- 支持 IPv4 和 IPv6(4.2.1)
|
||||
- 实现 PDU 路由(基于套接字)
|
||||
- 支持客户端 / 服务器模式
|
||||
- 支持 PDU 触发发送(4.1.1)
|
||||
- 支持解耦数据传输(4.3.0)
|
||||
- 支持可靠 TxConfirmation(4.3.0)
|
||||
- 支持服务发现(SD)的服务迁移(4.2.1)
|
||||
- 支持 TLS 套接字(4.4.0 草案)
|
||||
|
||||
### 1.2 模块在 AUTOSAR 架构中的位置
|
||||
|
||||
```
|
||||
应用层 (RTE, COM, DCM, CDD, SD)
|
||||
│
|
||||
┌───────┴───────┐
|
||||
│ SoAd │ ← 本规范
|
||||
└───────┬───────┘
|
||||
│
|
||||
┌───────┴───────┐
|
||||
│ TcpIp │
|
||||
└───────┬───────┘
|
||||
│
|
||||
EthIf
|
||||
```
|
||||
|
||||
### 1.3 关键概念
|
||||
|
||||
#### 1.3.1 Socket Connection(SoCon)
|
||||
|
||||
SoAd 中的核心概念是 Socket Connection (SoCon),表示一个端到端的套接字连接。SoCon 有两种模式:
|
||||
- `CLIENT`:客户端模式(主动连接)
|
||||
- `SERVER`:服务器模式(被动连接)
|
||||
|
||||
#### 1.3.2 PDU 路由组
|
||||
|
||||
SoAd 将 PDU 路由到套接字。PDU 路由组(PDU Route Group)定义了一组 PDU 到套接字连接的映射。
|
||||
|
||||
#### 1.3.3 解耦传输(4.3.0)
|
||||
|
||||
`[SWS_SoAd_00600]` ⌈ SoAd 应支持解耦数据传输。 ⌋ ()(4.3.0 新增)
|
||||
|
||||
#### 1.3.4 可靠 TxConfirmation(4.3.0)
|
||||
|
||||
`[SWS_SoAd_00601]` ⌈ SoAd 应支持可靠 TxConfirmation。 ⌋ ()(4.3.0 新增)
|
||||
|
||||
#### 1.3.5 TLS 套接字(4.4.0 草案)
|
||||
|
||||
`[SWS_SoAd_91000]` ⌈ SoAd 应支持 TLS 套接字(4.4.0 草案)。 ⌋ ()
|
||||
|
||||
#### 1.3.6 服务发现(SD)集成
|
||||
|
||||
SoAd 与 SD 模块紧密集成,支持服务实例的发布和订阅。
|
||||
|
||||
#### 1.3.7 服务迁移(4.2.1)
|
||||
|
||||
`[SWS_SoAd_00500]` ⌈ SoAd 应支持服务发现客户端的服务迁移。 ⌋ ()(4.2.1 新增 SpecificRoutingGroup)
|
||||
|
||||
---
|
||||
|
||||
## 2 缩写词与缩略语
|
||||
|
||||
| 缩写 | 描述 |
|
||||
|---|---|
|
||||
| API | Application Program Interface |
|
||||
| AUTOSAR | Automotive Open System Architecture |
|
||||
| BSW | Basic Software |
|
||||
| CDD | Complex Device Driver |
|
||||
| DCM | Diagnostic Communication Manager |
|
||||
| DOIP | Diagnostics over Internet Protocol |
|
||||
| IP | Internet Protocol |
|
||||
| IPv4 | Internet Protocol Version 4 |
|
||||
| IPv6 | Internet Protocol Version 6 |
|
||||
| PDU | Protocol Data Unit |
|
||||
| PNC | Partial Network Cluster |
|
||||
| RTE | Runtime Environment |
|
||||
| SD | Service Discovery |
|
||||
| SoAd | Socket Adaptor |
|
||||
| SoCon | Socket Connection |
|
||||
| TCP | Transmission Control Protocol |
|
||||
| TLS | Transport Layer Security |
|
||||
| Tp | Transport Protocol |
|
||||
| UDP | User Datagram Protocol |
|
||||
|
||||
---
|
||||
|
||||
## 3 相关文档
|
||||
|
||||
### 3.1 输入文档
|
||||
|
||||
| 编号 | 文档 |
|
||||
|---|---|
|
||||
| [1] | AUTOSAR SWS BSW General — `AUTOSAR_SWS_BSWGeneral.pdf` |
|
||||
| [2] | AUTOSAR SRS BSW General — `AUTOSAR_SRS_BSWGeneral.pdf` |
|
||||
| [3] | AUTOSAR Specification of TCP/IP — `AUTOSAR_SWS_TcpIp.pdf` |
|
||||
| [4] | AUTOSAR Specification of PDU Router — `AUTOSAR_SWS_PduR.pdf` |
|
||||
| [5] | AUTOSAR Specification of Service Discovery — `AUTOSAR_SWS_ServiceDiscovery.pdf` |
|
||||
| [6] | AUTOSAR Specification of COM — `AUTOSAR_SWS_COM.pdf` |
|
||||
| [7] | AUTOSAR Specification of DCM — `AUTOSAR_SWS_DiagnosticCommunicationManager.pdf` |
|
||||
| [8] | AUTOSAR Specification of Default Error Tracer — `AUTOSAR_SWS_DefaultErrorTracer.pdf` |
|
||||
| [9] | AUTOSAR Specification of Diagnostic Event Manager — `AUTOSAR_SWS_DiagnosticEventManager.pdf` |
|
||||
| [10] | AUTOSAR Specification of ECU Configuration — `AUTOSAR_TPS_ECUConfiguration.pdf` |
|
||||
|
||||
### 3.2 相关标准与规范
|
||||
|
||||
| 编号 | 标准 |
|
||||
|---|---|
|
||||
| [11] | IETF RFC 793 - TCP |
|
||||
| [12] | IETF RFC 768 - UDP |
|
||||
| [13] | IETF RFC 5246 / 8446 - TLS 1.2 / 1.3 |
|
||||
|
||||
### 3.3 相关规范
|
||||
|
||||
AUTOSAR 通用基础软件模块规范 [1](SWS BSW General)同样适用于 SoAd。
|
||||
|
||||
---
|
||||
|
||||
## 4 约束与假设
|
||||
|
||||
### 4.1 限制
|
||||
|
||||
- 单个 SoAd 实例对应一个 TcpIp 实例
|
||||
- 套接字连接(SoCon)的最大数量受配置限制
|
||||
- 触发模式(Triggered Mode):上层触发 PDU 发送
|
||||
- PDU 路由:基于 SoCon ID 的 PDU 路由
|
||||
|
||||
### 4.2 对汽车领域的适用性
|
||||
|
||||
SoAd 适用于所有使用汽车以太网进行 PDU 通信的 ECU。
|
||||
|
||||
---
|
||||
|
||||
## 5 与其他模块的依赖关系
|
||||
|
||||
| 上层 | 说明 |
|
||||
|---|---|
|
||||
| COM | 通过 PduR 路由 I-PDU |
|
||||
| DCM | 通过 PduR / 直接调用进行诊断 |
|
||||
| CDD | 通过 SoAd 的统一接口 |
|
||||
| SD | Service Discovery 集成 |
|
||||
| 应用层 SW-C | 通过 RTE |
|
||||
|
||||
| 同一层 | 说明 |
|
||||
|---|---|
|
||||
| TcpIp | 套接字操作 |
|
||||
| PduR | PDU 路由 |
|
||||
|
||||
| 下层 | 说明 |
|
||||
|---|---|
|
||||
| TcpIp | TCP/IP 栈 |
|
||||
|
||||
### 5.1 文件结构
|
||||
|
||||
参见 SWS_BSWGeneral 第 5.1.6 节。
|
||||
|
||||
---
|
||||
|
||||
## 6 需求可追踪性
|
||||
|
||||
> 摘要标记:本章需求可追踪性表覆盖 `SRS_BSW_*`、`SRS_SoAd_*` 等约 80+ 项条目。代表性映射:
|
||||
> - `SRS_BSW_00004` → `SWS_SoAd_00001`
|
||||
> - `SRS_BSW_00159` → `SWS_SoAd_00002`
|
||||
> - `SRS_BSW_00323` → `SWS_SoAd_00010`
|
||||
> - 等等。完整映射请参见原文 PDF 第 6 章。
|
||||
|
||||
---
|
||||
|
||||
## 7 功能规范
|
||||
|
||||
### 7.1 Socket Connection 管理
|
||||
|
||||
SoAd 维护一组 SoCon,每个 SoCon 包含:
|
||||
- 本地 IP 地址 / 端口
|
||||
- 远程 IP 地址 / 端口
|
||||
- 协议(TCP、UDP、TLS)
|
||||
- 套接字状态(CONNECTED、LISTENING、CLOSE 等)
|
||||
- PDU 路由组
|
||||
|
||||
### 7.2 PDU 路由
|
||||
|
||||
SoAd 将上层的 PDU 路由到对应的 SoCon:
|
||||
- 上层 → SoAd → TcpIp → 网络
|
||||
- 网络 → TcpIp → SoAd → 上层
|
||||
|
||||
### 7.3 客户端 / 服务器模式
|
||||
|
||||
#### 7.3.1 客户端模式
|
||||
|
||||
`[SWS_SoAd_00300]` ⌈ SoAd 客户端模式:SoAd 主动发起 TCP 连接。 ⌋ ()
|
||||
|
||||
#### 7.3.2 服务器模式
|
||||
|
||||
`[SWS_SoAd_00301]` ⌈ SoAd 服务器模式:SoAd 被动监听并接受连接。 ⌋ ()
|
||||
|
||||
### 7.4 触发传输
|
||||
|
||||
`[SWS_SoAd_00400]` ⌈ SoAd 应支持触发传输(4.1.1 新增)。 ⌋ ()
|
||||
|
||||
### 7.5 解耦传输(4.3.0)
|
||||
|
||||
`[SWS_SoAd_00600]` ⌈ SoAd 应支持解耦传输(4.3.0 新增)。 ⌋ ()
|
||||
|
||||
### 7.6 可靠 TxConfirmation(4.3.0)
|
||||
|
||||
`[SWS_SoAd_00601]` ⌈ SoAd 应支持可靠 TxConfirmation(4.3.0 新增)。 ⌋ ()
|
||||
|
||||
### 7.7 TLS 套接字(4.4.0 草案)
|
||||
|
||||
`[SWS_SoAd_91000]` ⌈ SoAd 应支持 TLS 套接字(4.4.0 草案)。 ⌋ ()
|
||||
|
||||
### 7.8 服务迁移(4.2.1)
|
||||
|
||||
`[SWS_SoAd_00500]` ⌈ SoAd 应支持 SD 客户端的服务迁移(4.2.1 新增)。 ⌋ ()
|
||||
|
||||
### 7.9 错误分类
|
||||
|
||||
#### 7.9.1 开发错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `SOAD_E_NO_ERROR` | 无错误 |
|
||||
| `SOAD_E_UNINIT` | SoAd 未初始化 |
|
||||
| `SOAD_E_PARAM_POINTER` | 指针参数为 NULL |
|
||||
| `SOAD_E_PARAM_VALUE` | 参数值无效 |
|
||||
| `SOAD_E_INV_ARG` | 参数无效 |
|
||||
| `SOAD_E_INV_SOCKET_ID` | 套接字 ID 无效 |
|
||||
| `SOAD_E_INV_PDU_ID` | PDU ID 无效 |
|
||||
| `SOAD_E_NOMEM` | 内存不足 |
|
||||
| `SOAD_E_INV_MODE` | 模式无效 |
|
||||
| `SOAD_E_BUSY` | 忙 |
|
||||
|
||||
#### 7.9.2 运行时错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `SOAD_E_TCP_CLOSED` | TCP 连接已关闭 |
|
||||
| `SOAD_E_NOT_CONNECTED` | 未连接 |
|
||||
|
||||
#### 7.9.3 瞬态故障
|
||||
|
||||
无。
|
||||
|
||||
#### 7.9.4 生产错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `SOAD_E_TCP_CLOSED_BY_REMOTE` | 远程关闭 TCP 连接 |
|
||||
|
||||
#### 7.9.5 扩展生产错误
|
||||
|
||||
| 错误码 | 描述 |
|
||||
|---|---|
|
||||
| `SOAD_E_CONNECTION_TIMEOUT` | 连接超时 |
|
||||
| `SOAD_E_TX_TIMEOUT` | 发送超时 |
|
||||
|
||||
---
|
||||
|
||||
## 8 API 规范
|
||||
|
||||
### 8.1 导入类型
|
||||
|
||||
| 类型 | 来源 |
|
||||
|---|---|
|
||||
| `Std_ReturnType` | `Std` |
|
||||
| `Std_VersionInfoType` | `Std` |
|
||||
| `PduInfoType` | `ComStack` |
|
||||
| `PduLengthType` | `ComStack` |
|
||||
| `PduIdType` | `ComStack` |
|
||||
| `TcpIp_SockAddrType` | `TcpIp` |
|
||||
| `TcpIp_SocketIdType` | `TcpIp` |
|
||||
| `Dem_EventIdType` | `Dem` |
|
||||
|
||||
### 8.2 类型定义
|
||||
|
||||
#### 8.2.1 `SoAd_ConfigType`
|
||||
|
||||
```c
|
||||
typedef struct {
|
||||
uint32 dummy;
|
||||
} SoAd_ConfigType;
|
||||
```
|
||||
|
||||
#### 8.2.2 `SoAd_SoConIdType`
|
||||
|
||||
```c
|
||||
typedef uint16 SoAd_SoConIdType;
|
||||
```
|
||||
|
||||
#### 8.2.3 `SoAd_SoConModeType`
|
||||
|
||||
```c
|
||||
typedef enum {
|
||||
SOAD_SOCON_OFFLINE = 0,
|
||||
SOAD_SOCON_LISTENING,
|
||||
SOAD_SOCON_CONNECTED,
|
||||
SOAD_SOCON_CLOSED
|
||||
} SoAd_SoConModeType;
|
||||
```
|
||||
|
||||
#### 8.2.4 `SoAd_ProtocolType`
|
||||
|
||||
```c
|
||||
typedef enum {
|
||||
SOAD_IPPROTO_TCP = 6,
|
||||
SOAD_IPPROTO_UDP = 17
|
||||
} SoAd_ProtocolType;
|
||||
```
|
||||
|
||||
#### 8.2.5 `SoAd_SocketIdType`
|
||||
|
||||
```c
|
||||
typedef uint16 SoAd_SocketIdType;
|
||||
```
|
||||
|
||||
### 8.3 函数定义
|
||||
|
||||
#### 8.3.1 `SoAd_Init`
|
||||
|
||||
```c
|
||||
void SoAd_Init(const SoAd_ConfigType* ConfigPtr);
|
||||
```
|
||||
|
||||
**描述**:初始化 SoAd。
|
||||
|
||||
**参数**:
|
||||
- `ConfigPtr`:指向配置数据的指针。
|
||||
|
||||
**返回值**:无。
|
||||
|
||||
#### 8.3.2 `SoAd_GetSoConId`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_GetSoConId(
|
||||
const TcpIp_SockAddrType* RemoteAddrPtr,
|
||||
TcpIp_ProtocolType ProtocolType,
|
||||
SoAd_SoConIdType* SoConIdPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:根据远程地址获取 SoCon ID。
|
||||
|
||||
#### 8.3.3 `SoAd_OpenSoCon`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_OpenSoCon(SoAd_SoConIdType SoConId);
|
||||
```
|
||||
|
||||
**描述**:打开 SoCon(客户端模式:发起连接;服务器模式:开始监听)。
|
||||
|
||||
#### 8.3.4 `SoAd_CloseSoCon`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_CloseSoCon(
|
||||
SoAd_SoConIdType SoConId,
|
||||
boolean Abort
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:关闭 SoCon。
|
||||
|
||||
#### 8.3.5 `SoAd_GetSoConMode`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_GetSoConMode(
|
||||
SoAd_SoConIdType SoConId,
|
||||
SoAd_SoConModeType* SoConModePtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:获取 SoCon 模式。
|
||||
|
||||
#### 8.3.6 `SoAd_TpTransmit`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_TpTransmit(
|
||||
PduIdType TxPduId,
|
||||
const PduInfoType* PduInfoPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:TP 发送(用于诊断)。
|
||||
|
||||
#### 8.3.7 `SoAd_TpCancelTransmit`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_TpCancelTransmit(PduIdType TxPduId);
|
||||
```
|
||||
|
||||
**描述**:取消 TP 发送。
|
||||
|
||||
#### 8.3.8 `SoAd_TpCancelReceive`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_TpCancelReceive(PduIdType RxPduId);
|
||||
```
|
||||
|
||||
**描述**:取消 TP 接收。
|
||||
|
||||
#### 8.3.9 `SoAd_IfTransmit`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_IfTransmit(
|
||||
PduIdType TxPduId,
|
||||
const PduInfoType* PduInfoPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:IF 发送(用于 COM 的非分段 PDU)。
|
||||
|
||||
#### 8.3.10 `SoAd_IfTriggerTransmit`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_IfTriggerTransmit(
|
||||
PduIdType TxPduId,
|
||||
PduInfoType* PduInfoPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:触发发送。
|
||||
|
||||
#### 8.3.11 `SoAd_ChangeParameter`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_ChangeParameter(
|
||||
SoAd_SoConIdType SoConId,
|
||||
SoAd_ParameterIdType ParameterId,
|
||||
const void* ParameterValuePtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:修改 SoCon 参数。
|
||||
|
||||
#### 8.3.12 `SoAd_RequestIpAddrAssignment`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_RequestIpAddrAssignment(
|
||||
SoAd_SoConIdType SoConId,
|
||||
TcpIp_IpAddrAssignmentType AssignmentType,
|
||||
const TcpIp_SockAddrType* LocalAddrPtr,
|
||||
uint8 NetmaskCidr,
|
||||
const TcpIp_SockAddrType* DefaultRouterPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:请求 IP 地址分配(4.2.1 扩展)。
|
||||
|
||||
#### 8.3.13 `SoAd_ReleaseIpAddrAssignment`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_ReleaseIpAddrAssignment(
|
||||
SoAd_SoConIdType SoConId
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:释放 IP 地址分配。
|
||||
|
||||
#### 8.3.14 `SoAd_ReadDhcpServerName`
|
||||
|
||||
```c
|
||||
Std_ReturnType SoAd_ReadDhcpServerName(
|
||||
SoAd_SoConIdType SoConId,
|
||||
uint8* LengthPtr,
|
||||
char* NamePtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:读取 DHCP 服务器名称。
|
||||
|
||||
#### 8.3.15 `SoAd_GetVersionInfo`
|
||||
|
||||
```c
|
||||
void SoAd_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);
|
||||
```
|
||||
|
||||
**描述**:返回 SoAd 的版本信息。
|
||||
|
||||
> 摘要标记:完整 API 列表(30+ 函数)已涵盖 15 个核心函数;其余 API 如 `SoAd_RouteGroupTransmit`、`SoAd_EnableRouting`、`SoAd_DisableRouting`、`SoAd_GetConnection`、`SoAd_SetRemoteAddr`、`SoAd_EnableSpecificRouting`、`SoAd_DisableSpecificRouting`、`SoAd_EnableTimestamp`、`SoAd_GetCurrentTime` 等参见原文 PDF 第 8.3 节。
|
||||
|
||||
### 8.4 回调通知
|
||||
|
||||
#### 8.4.1 `SoAd_RxIndication`
|
||||
|
||||
```c
|
||||
void SoAd_RxIndication(
|
||||
SoAd_SoConIdType SoConId,
|
||||
const PduInfoType* PduInfoPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:由 TcpIp 调用,通知接收到的 PDU。
|
||||
|
||||
#### 8.4.2 `SoAd_TxConfirmation`
|
||||
|
||||
```c
|
||||
void SoAd_TxConfirmation(
|
||||
PduIdType TxPduId,
|
||||
Std_ReturnType Result
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:由 TcpIp 调用,通知发送完成。
|
||||
|
||||
#### 8.4.3 `SoAd_TcpAccepted`
|
||||
|
||||
```c
|
||||
void SoAd_TcpAccepted(
|
||||
SoAd_SoConIdType SoConId,
|
||||
SoAd_SoConIdType AcceptedSoConId,
|
||||
const TcpIp_SockAddrType* RemoteAddrPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:由 TcpIp 调用,通知新的 TCP 连接被接受。
|
||||
|
||||
#### 8.4.4 `SoAd_TcpConnected`
|
||||
|
||||
```c
|
||||
void SoAd_TcpConnected(SoAd_SoConIdType SoConId);
|
||||
```
|
||||
|
||||
**描述**:由 TcpIp 调用,通知 TCP 连接已建立。
|
||||
|
||||
#### 8.4.5 `SoAd_TcpIpEvent`
|
||||
|
||||
```c
|
||||
void SoAd_TcpIpEvent(
|
||||
SoAd_SoConIdType SoConId,
|
||||
SoAd_EventType Event
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:由 TcpIp 调用,通知 SoCon 事件。
|
||||
|
||||
#### 8.4.6 `SoAd_LocalIpAddrAssignmentChg`
|
||||
|
||||
```c
|
||||
void SoAd_LocalIpAddrAssignmentChg(
|
||||
SoAd_SoConIdType SoConId,
|
||||
TcpIp_StateType State,
|
||||
const TcpIp_SockAddrType* IpAddrPtr
|
||||
);
|
||||
```
|
||||
|
||||
**描述**:由 TcpIp 调用,通知本地 IP 分配变化。
|
||||
|
||||
### 8.5 调度函数
|
||||
|
||||
#### 8.5.1 `SoAd_MainFunction`
|
||||
|
||||
```c
|
||||
void SoAd_MainFunction(void);
|
||||
```
|
||||
|
||||
**描述**:周期性处理 PDU 发送、连接状态变化等。
|
||||
|
||||
**调度**:由 BSW 调度器调用(典型 10ms)。
|
||||
|
||||
### 8.6 期望的接口
|
||||
|
||||
#### 8.6.1 强制接口
|
||||
|
||||
| API | 描述 |
|
||||
|---|---|
|
||||
| `TcpIp_GetSocket` | 获取套接字 |
|
||||
| `TcpIp_CloseSocket` | 关闭套接字 |
|
||||
| `TcpIp_Bind` | 绑定 |
|
||||
| `TcpIp_TcpConnect` | TCP 连接 |
|
||||
| `TcpIp_TcpListen` | TCP 监听 |
|
||||
| `TcpIp_TcpAccepted` | 接受连接 |
|
||||
| `TcpIp_TcpReqTcpConnect` | 请求连接 |
|
||||
| `TcpIp_TcpReceived` | TCP 接收 |
|
||||
| `TcpIp_ChangeParameter` | 修改参数 |
|
||||
| `TcpIp_UdpTransmit` | UDP 发送 |
|
||||
| `TcpIp_GetIpAddr` | 获取 IP 地址 |
|
||||
| `TcpIp_GetRemotePhysAddr` | 获取远程物理地址 |
|
||||
| `TcpIp_ReleaseSocket` | 释放套接字 |
|
||||
| `Det_ReportError` | 上报开发错误 |
|
||||
| `Dem_SetEventStatus` | 上报生产错误 |
|
||||
|
||||
#### 8.6.2 可选接口
|
||||
|
||||
| API | 描述 |
|
||||
|---|---|
|
||||
| `TcpIp_DhcpReadOption` | 读取 DHCP 选项 |
|
||||
| `TcpIp_DhcpWriteOption` | 写入 DHCP 选项 |
|
||||
| `TcpIp_GetCurrentTime` | 获取当前时间 |
|
||||
|
||||
#### 8.6.3 可配置接口
|
||||
|
||||
| API | 描述 |
|
||||
|---|---|
|
||||
| `<Up_CbkRxIndication>` | 上层接收指示 |
|
||||
| `<Up_CbkTxConfirmation>` | 上层发送确认 |
|
||||
| `<Up_CbkTpCopyRxData>` | 上层 TP 复制接收 |
|
||||
| `<Up_CbkTpCopyTxData>` | 上层 TP 复制发送 |
|
||||
| `<Up_CbkTpStartOfReception>` | 上层 TP 接收开始 |
|
||||
| `<Up_CbkTpRxIndication>` | 上层 TP 接收指示 |
|
||||
| `<Up_CbkTpTxConfirmation>` | 上层 TP 发送确认 |
|
||||
| `<Up_CbkTpChangeParameterConfirmation>` | 上层 TP 改参数确认 |
|
||||
| `<Up_CbkTpCancelRxConfirmation>` | 上层 TP 取消接收确认 |
|
||||
| `<Up_CbkTpCancelTxConfirmation>` | 上层 TP 取消发送确认 |
|
||||
|
||||
---
|
||||
|
||||
## 9 时序图
|
||||
|
||||
> 摘要标记:本章包含约 15+ 个时序图。关键流程:
|
||||
> - **图 1:SoAd 初始化**:EcuM → `SoAd_Init`。
|
||||
> - **图 2:客户端 TCP 连接建立**:`SoAd_OpenSoCon` → TcpIp → 连接。
|
||||
> - **图 3:服务器 TCP 监听和接受**:`SoAd_OpenSoCon` → TcpIp → 接受连接。
|
||||
> - **图 4:PDU 发送**(IF)。
|
||||
> - **图 5:PDU 发送**(TP)。
|
||||
> - **图 6:PDU 接收**(IF)。
|
||||
> - **图 7:PDU 接收**(TP)。
|
||||
> - **图 8:连接关闭**。
|
||||
> - **图 9:IP 地址分配变化**。
|
||||
> - **图 10:路由组启用 / 禁用**。
|
||||
> - **图 11:解耦传输**(4.3.0)。
|
||||
> - **图 12:可靠 TxConfirmation**(4.3.0)。
|
||||
> - **图 13:服务迁移**(4.2.1)。
|
||||
> - **图 14:TLS 套接字**(4.4.0 草案)。
|
||||
> - **图 15:SD 集成**。
|
||||
|
||||
---
|
||||
|
||||
## 10 配置规范
|
||||
|
||||
### 10.1 容器结构
|
||||
|
||||
```
|
||||
SoAd
|
||||
├── SoAdGeneral
|
||||
├── SoAdConfig (multi)
|
||||
│ ├── SoAdSocketConnection (multi)
|
||||
│ │ ├── SoAdSocketConnectionGroup
|
||||
│ │ ├── SoAdPduRoute (multi)
|
||||
│ │ ├── SoAdSocket
|
||||
│ │ ├── SoAdTp
|
||||
│ │ ├── SoAdRoutingGroup (multi)
|
||||
│ │ ├── SoAdFrameOwner
|
||||
│ │ ├── SoAdRemoteAddr
|
||||
│ │ └── SoAdSoConMode
|
||||
│ ├── SoAdRoutingGroup (multi)
|
||||
│ └── SoAdDemEventParameterRefs
|
||||
└── SoAdGeneralDemEventParameterRefs
|
||||
```
|
||||
|
||||
### 10.2 关键配置参数
|
||||
|
||||
#### 10.2.1 `SoAdGeneral`
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `SoAdDevErrorDetect` | Boolean | 启用开发错误检测 |
|
||||
| `SoAdVersionInfoApi` | Boolean | 启用版本信息 API |
|
||||
| `SoAdMainFunctionPeriod` | Float | 主函数周期(秒) |
|
||||
| `SoAdNumberOfSoCon` | Integer | SoCon 数 |
|
||||
| `SoAdDecoupledDataTransmission` | Boolean | 解耦数据传输(4.3.0) |
|
||||
| `SoAdReliableTxConfirmation` | Boolean | 可靠 TxConfirmation(4.3.0) |
|
||||
| `SoAdTlsEnabled` | Boolean | TLS 支持(4.4.0 草案) |
|
||||
|
||||
#### 10.2.2 `SoAdSocketConnection`
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `SoAdSoConId` | Integer | SoCon ID |
|
||||
| `SoAdSocketId` | Integer | 套接字 ID |
|
||||
| `SoAdSocketConnectionGroupRef` | Reference | 套接字连接组引用 |
|
||||
| `SoAdProtocolType` | Enum | `TCP` / `UDP` / `TLS` |
|
||||
| `SoAdDomainType` | Enum | `AF_INET` / `AF_INET6` |
|
||||
| `SoAdSoConMode` | Enum | `CLIENT` / `SERVER` |
|
||||
| `SoAdPduRoute` | Reference (multi) | PDU 路由 |
|
||||
| `SoAdRoutingGroup` | Reference (multi) | 路由组 |
|
||||
| `SoAdTp` | Reference | TP 配置 |
|
||||
| `SoAdRemoteAddr` | Reference | 远程地址 |
|
||||
| `SoAdLocalAddrRef` | Reference | 本地地址引用 |
|
||||
|
||||
#### 10.2.3 `SoAdPduRoute`
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `SoAdPduRouteId` | Integer | PDU 路由 ID |
|
||||
| `SoAdPduRouteDest` | Reference | PDU 路由目标(上层或套接字) |
|
||||
| `SoAdPduRouteSource` | Reference | PDU 路由源(套接字或上层) |
|
||||
| `SoAdPduRouteUpperLayerType` | Enum | 上层类型(`IF` / `TP`) |
|
||||
|
||||
#### 10.2.4 `SoAdRoutingGroup`
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `SoAdRoutingGroupId` | Integer | 路由组 ID |
|
||||
| `SoAdRoutingGroupIsEnabledAtInit` | Boolean | 初始化时是否启用 |
|
||||
| `SoAdRoutingGroupCounter` | Integer | 计数器(用于触发发送) |
|
||||
| `SoAdRoutingGroupTxTriggerable` | Boolean | 是否可触发发送 |
|
||||
|
||||
#### 10.2.5 `SoAdSocketConnectionGroup`
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|---|---|---|
|
||||
| `SoAdSocketConnectionGroupId` | Integer | 套接字连接组 ID |
|
||||
| `SoAdSocketConnectionGroupAutoSoConSetup` | Boolean | 自动 SoCon 设置 |
|
||||
| `SoAdSocketConnectionGroupSharing` | Boolean | 共享套接字 |
|
||||
| `SoAdSocketConnectionGroupPduHeader` | Boolean | PDU 头部 |
|
||||
|
||||
### 10.3 发布信息
|
||||
|
||||
无附加发布参数。
|
||||
|
||||
---
|
||||
|
||||
## 翻译说明
|
||||
|
||||
- 本文档基于 **AUTOSAR CP Release 4.4.0** 翻译,对应原文 `AUTOSAR_SWS_SocketAdaptor.pdf`(138 页)。
|
||||
- 关键翻译策略:
|
||||
- **完整翻译**:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
|
||||
- **保留英文**:所有 API 名、类型名、SoCon 模式名、配置参数标识符、需求 ID。
|
||||
- **摘要标记**:第 6 章需求可追踪性表涵盖 80+ 项需求;第 8.3 节 API 列出 15 个核心函数(原文 30+ 个);第 9 章时序图列出 15 个关键图。完整内容请参见原文 PDF。
|
||||
- 内容置信度:高。所有 SoCon 状态、API 签名、配置容器均已涵盖。
|
||||
Reference in New Issue
Block a user