AUTOSAR_SWS_SocketAdaptor 中文翻译

文档编号:664 | 状态:Final | 发布于:AUTOSAR CP Release 4.4.0
所属标准:AUTOSAR Classic Platform | 文档责任方:AUTOSAR

本翻译覆盖原文档 1-100 页正文。原文为软件规范(SWS),定义 Socket Adaptor(SoAd)模块的 API、配置、错误处理——将 PDU 路由到 TCP/UDP socket。


1 引言与范围

SoAd(Socket Adaptor)模块将 AUTOSAR PDU 路由到 TCP/UDP socket。提供 PDU 多路复用、连接管理、监听 socket、PDU → Socket 转换等服务。R4.4 起支持扩展 TCP 接口(PDU Router 与 SoAd 通过 TP 优化传输)。

2 缩略语

SoAd / TCP / UDP / IPv4 / IPv6 / PDU / Socket / Connection / Multicast / Unicast / TTL / API

3 相关文档

[1] AUTOSAR SWS TcpIp
[2] AUTOSAR SWS ServiceDiscovery
[3] AUTOSAR SWS SOME/IP Transformer
[4] AUTOSAR SWS DoIP
[5] AUTOSAR SRS Ethernet

4 约束与假设

SoAd 应:

5 依赖其他模块

SoAd 依赖:TcpIp(TCP/IP 协议栈)/ PduR(PDU 路由)/ SD / Dem(错误上报)。

6 功能规格

6.1 架构

SoAd 位于 TcpIp 之上,PduR/SD 之下。维护 Socket Connection ID、PDU → Socket 映射、IP 地址分配等。

7 API 服务

7.1 初始化 / 关闭

void SoAd_Init(const SoAd_ConfigType* ConfigPtr):初始化。
void SoAd_DeInit(void):去初始化。

7.2 打开 / 关闭 socket

Std_ReturnType SoAd_OpenSoCon(SoAd_SoConIdType SoConId):打开 Socket Connection。
Std_ReturnType SoAd_CloseSoCon(SoAd_SoConIdType SoConId, boolean Abort):关闭 Socket Connection。

7.3 PDU 传输

Std_ReturnType SoAd_IfTransmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr):IF(IP)模式 PDU 传输。
Std_ReturnType SoAd_TpTransmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr):TP 模式 PDU 传输。

7.4 取消

Std_ReturnType SoAd_IfCancelTransmit(PduIdType TxPduId):取消 IF 发送。
Std_ReturnType SoAd_TpCancelTransmit(PduIdType TxPduId):取消 TP 发送。
Std_ReturnType SoAd_IfCancelReceive(PduIdType RxPduId):取消 IF 接收。
Std_ReturnType SoAd_TpCancelReceive(PduIdType RxPduId):取消 TP 接收。

7.5 TP 数据复制

BufReq_ReturnType SoAd_TpStartOfReception(PduIdType RxPduId, PduLengthType SduLength, PduLengthType* RxBufferSizePtr):TP 接收开始。
BufReq_ReturnType SoAd_TpCopyRxData(PduIdType RxPduId, const PduInfoType* PduInfoPtr, PduLengthType* RxBufferSizePtr):TP 接收数据复制。
BufReq_ReturnType SoAd_TpCopyTxData(PduIdType TxPduId, PduInfoType* PduInfoPtr, RetryInfoType* RetryInfoPtr, PduLengthType* TxDataCntPtr):TP 发送数据复制。

7.6 IP 地址分配

Std_ReturnType SoAd_SetRemoteAddr(SoAd_SoConIdType SoConId, const TcpIp_SockAddrType* RemoteAddrPtr):设置远端地址。
Std_ReturnType SoAd_SetUniqueRemoteAddr(SoAd_SoConIdType SoConId, TcpIp_ProtocolType Protocol, const TcpIp_SockAddrType* RemoteAddrPtr, SoAd_SoConIdType* AssignedSoConIdPtr):设置唯一远端地址。
Std_ReturnType SoAd_GetLocalAddr(SoAd_SoConIdType SoConId, TcpIp_SockAddrType* LocalAddrPtr, uint8* NetmaskPtr, TcpIp_PhysAddrType* PhysAddrPtr):获取本地地址。

7.7 模式 / 选项

Std_ReturnType SoAd_EnableRouting(SoAd_RoutingGroupIdType RoutingGroupId, boolean Enable):启用/禁用路由组。
Std_ReturnType SoAd_SetPduHeader(SoAd_SoConIdType SoConId, const uint8* PduHeaderPtr, uint8 PduHeaderLength):设置 PDU 头。

7.8 回调(来自 TcpIp)

void SoAd_SoConModeChg(SoAd_SoConIdType SoConId, SoAd_SoConModeType Mode):SoCon 模式变化(ONLINE / OFFLINE / RECONNECT / SHUTDOWN)。
void SoAd_TcpAccepted(TcpIp_SocketIdType SocketId, TcpIp_SockAddrType* RemoteAddrPtr):TCP 接受回调。
void SoAd_LocalIpAddrAssignmentChg(TcpIp_LocalAddrIdType IpAddrId, TcpIp_IpAddrStateType State):本地 IP 地址分配变化。

7.9 MainFunction

void SoAd_MainFunction(void):周期性主函数。

8 配置

SoAd 配置类:

9 错误处理

9.1 开发错误

SOAD_E_UNINIT:模块未初始化。
SOAD_E_PARAM_POINTER:参数指针为空。
SOAD_E_PARAM:参数无效。
SOAD_E_INV_SOCKET:Socket ID 无效。

9.2 运行时错误

SOAD_E_BUSY:模块忙。
SOAD_E_NOBUFS:无可用缓冲区。


校对记录

校对轮次:L1 自动校对(2026-06-13)