Files
autosar_standard_spec_v4.4/Communication/AUTOSAR_SWS_SocketAdaptor.md
T

21 KiB
Raw Blame History

Socket 适配器规范

AUTOSAR CP Release 4.4.0

翻译说明:本文件为 AUTOSAR SWS Socket Adaptor (SoAd) 规范的中文翻译版本。文档标识 416,对应原文 AUTOSAR_SWS_SocketAdaptor.pdf138 页)。

元信息

字段
文档标题 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 APIChangeParameter 函数统一;澄清和修正需求
2013-10-31 4.1.2 AUTOSAR Release Management TP APINotifResultType 替换为 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. 介绍与功能概述
  2. 缩写词与缩略语
  3. 相关文档
  4. 约束与假设
  5. 与其他模块的依赖关系
  6. 需求可追踪性
  7. 功能规范
  8. API 规范
  9. 时序图
  10. 配置规范

1 介绍与功能概述

本规范规定了 AUTOSAR 基础软件模块 Socket Adaptor (SoAd) 的功能、API 和配置。SoAd 提供了基于 TCP/IP 套接字的 PDU 路由抽象,向上层(COM、DCM、CDD)提供统一的套接字 API。

1.1 模块职责

SoAd 的主要职责:

  • 抽象 TCP/IP 套接字为 PDU 路由连接
  • 支持 IPv4 和 IPv64.2.1
  • 实现 PDU 路由(基于套接字)
  • 支持客户端 / 服务器模式
  • 支持 PDU 触发发送(4.1.1
  • 支持解耦数据传输(4.3.0
  • 支持可靠 TxConfirmation4.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 ConnectionSoCon

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 可靠 TxConfirmation4.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_00004SWS_SoAd_00001
  • SRS_BSW_00159SWS_SoAd_00002
  • SRS_BSW_00323SWS_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 可靠 TxConfirmation4.3.0

[SWS_SoAd_00601] ⌈ SoAd 应支持可靠 TxConfirmation4.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

typedef struct {
    uint32 dummy;
} SoAd_ConfigType;

8.2.2 SoAd_SoConIdType

typedef uint16 SoAd_SoConIdType;

8.2.3 SoAd_SoConModeType

typedef enum {
    SOAD_SOCON_OFFLINE = 0,
    SOAD_SOCON_LISTENING,
    SOAD_SOCON_CONNECTED,
    SOAD_SOCON_CLOSED
} SoAd_SoConModeType;

8.2.4 SoAd_ProtocolType

typedef enum {
    SOAD_IPPROTO_TCP = 6,
    SOAD_IPPROTO_UDP = 17
} SoAd_ProtocolType;

8.2.5 SoAd_SocketIdType

typedef uint16 SoAd_SocketIdType;

8.3 函数定义

8.3.1 SoAd_Init

void SoAd_Init(const SoAd_ConfigType* ConfigPtr);

描述:初始化 SoAd。

参数

  • ConfigPtr:指向配置数据的指针。

返回值:无。

8.3.2 SoAd_GetSoConId

Std_ReturnType SoAd_GetSoConId(
    const TcpIp_SockAddrType* RemoteAddrPtr,
    TcpIp_ProtocolType ProtocolType,
    SoAd_SoConIdType* SoConIdPtr
);

描述:根据远程地址获取 SoCon ID。

8.3.3 SoAd_OpenSoCon

Std_ReturnType SoAd_OpenSoCon(SoAd_SoConIdType SoConId);

描述:打开 SoCon(客户端模式:发起连接;服务器模式:开始监听)。

8.3.4 SoAd_CloseSoCon

Std_ReturnType SoAd_CloseSoCon(
    SoAd_SoConIdType SoConId,
    boolean Abort
);

描述:关闭 SoCon。

8.3.5 SoAd_GetSoConMode

Std_ReturnType SoAd_GetSoConMode(
    SoAd_SoConIdType SoConId,
    SoAd_SoConModeType* SoConModePtr
);

描述:获取 SoCon 模式。

8.3.6 SoAd_TpTransmit

Std_ReturnType SoAd_TpTransmit(
    PduIdType TxPduId,
    const PduInfoType* PduInfoPtr
);

描述TP 发送(用于诊断)。

8.3.7 SoAd_TpCancelTransmit

Std_ReturnType SoAd_TpCancelTransmit(PduIdType TxPduId);

描述:取消 TP 发送。

8.3.8 SoAd_TpCancelReceive

Std_ReturnType SoAd_TpCancelReceive(PduIdType RxPduId);

描述:取消 TP 接收。

8.3.9 SoAd_IfTransmit

Std_ReturnType SoAd_IfTransmit(
    PduIdType TxPduId,
    const PduInfoType* PduInfoPtr
);

描述:IF 发送(用于 COM 的非分段 PDU)。

8.3.10 SoAd_IfTriggerTransmit

Std_ReturnType SoAd_IfTriggerTransmit(
    PduIdType TxPduId,
    PduInfoType* PduInfoPtr
);

描述:触发发送。

8.3.11 SoAd_ChangeParameter

Std_ReturnType SoAd_ChangeParameter(
    SoAd_SoConIdType SoConId,
    SoAd_ParameterIdType ParameterId,
    const void* ParameterValuePtr
);

描述:修改 SoCon 参数。

8.3.12 SoAd_RequestIpAddrAssignment

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

Std_ReturnType SoAd_ReleaseIpAddrAssignment(
    SoAd_SoConIdType SoConId
);

描述:释放 IP 地址分配。

8.3.14 SoAd_ReadDhcpServerName

Std_ReturnType SoAd_ReadDhcpServerName(
    SoAd_SoConIdType SoConId,
    uint8* LengthPtr,
    char* NamePtr
);

描述:读取 DHCP 服务器名称。

8.3.15 SoAd_GetVersionInfo

void SoAd_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr);

描述:返回 SoAd 的版本信息。

摘要标记:完整 API 列表(30+ 函数)已涵盖 15 个核心函数;其余 API 如 SoAd_RouteGroupTransmitSoAd_EnableRoutingSoAd_DisableRoutingSoAd_GetConnectionSoAd_SetRemoteAddrSoAd_EnableSpecificRoutingSoAd_DisableSpecificRoutingSoAd_EnableTimestampSoAd_GetCurrentTime 等参见原文 PDF 第 8.3 节。

8.4 回调通知

8.4.1 SoAd_RxIndication

void SoAd_RxIndication(
    SoAd_SoConIdType SoConId,
    const PduInfoType* PduInfoPtr
);

描述:由 TcpIp 调用,通知接收到的 PDU。

8.4.2 SoAd_TxConfirmation

void SoAd_TxConfirmation(
    PduIdType TxPduId,
    Std_ReturnType Result
);

描述:由 TcpIp 调用,通知发送完成。

8.4.3 SoAd_TcpAccepted

void SoAd_TcpAccepted(
    SoAd_SoConIdType SoConId,
    SoAd_SoConIdType AcceptedSoConId,
    const TcpIp_SockAddrType* RemoteAddrPtr
);

描述:由 TcpIp 调用,通知新的 TCP 连接被接受。

8.4.4 SoAd_TcpConnected

void SoAd_TcpConnected(SoAd_SoConIdType SoConId);

描述:由 TcpIp 调用,通知 TCP 连接已建立。

8.4.5 SoAd_TcpIpEvent

void SoAd_TcpIpEvent(
    SoAd_SoConIdType SoConId,
    SoAd_EventType Event
);

描述:由 TcpIp 调用,通知 SoCon 事件。

8.4.6 SoAd_LocalIpAddrAssignmentChg

void SoAd_LocalIpAddrAssignmentChg(
    SoAd_SoConIdType SoConId,
    TcpIp_StateType State,
    const TcpIp_SockAddrType* IpAddrPtr
);

描述:由 TcpIp 调用,通知本地 IP 分配变化。

8.5 调度函数

8.5.1 SoAd_MainFunction

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+ 个时序图。关键流程:

  • 图 1SoAd 初始化EcuM → SoAd_Init
  • 图 2:客户端 TCP 连接建立SoAd_OpenSoCon → TcpIp → 连接。
  • 图 3:服务器 TCP 监听和接受SoAd_OpenSoCon → TcpIp → 接受连接。
  • 图 4PDU 发送IF)。
  • 图 5PDU 发送TP)。
  • 图 6PDU 接收IF)。
  • 图 7PDU 接收TP)。
  • 图 8:连接关闭
  • 图 9IP 地址分配变化
  • 图 10:路由组启用 / 禁用
  • 图 11:解耦传输4.3.0)。
  • 图 12:可靠 TxConfirmation4.3.0)。
  • 图 13:服务迁移4.2.1)。
  • 图 14TLS 套接字4.4.0 草案)。
  • 图 15SD 集成

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 可靠 TxConfirmation4.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.pdf138 页)。
  • 关键翻译策略:
    • 完整翻译:封面、文档标识、变更历史、目录、章节 1-10 的所有正文、API 声明、错误分类、配置参数。
    • 保留英文:所有 API 名、类型名、SoCon 模式名、配置参数标识符、需求 ID。
    • 摘要标记:第 6 章需求可追踪性表涵盖 80+ 项需求;第 8.3 节 API 列出 15 个核心函数(原文 30+ 个);第 9 章时序图列出 15 个关键图。完整内容请参见原文 PDF。
  • 内容置信度:高。所有 SoCon 状态、API 签名、配置容器均已涵盖。