SoAd(Socket Adaptor)模块将 AUTOSAR PDU 路由到 TCP/UDP socket。提供 PDU 多路复用、连接管理、监听 socket、PDU → Socket 转换等服务。R4.4 起支持扩展 TCP 接口(PDU Router 与 SoAd 通过 TP 优化传输)。
SoAd / TCP / UDP / IPv4 / IPv6 / PDU / Socket / Connection / Multicast / Unicast / TTL / API
[1] AUTOSAR SWS TcpIp
[2] AUTOSAR SWS ServiceDiscovery
[3] AUTOSAR SWS SOME/IP Transformer
[4] AUTOSAR SWS DoIP
[5] AUTOSAR SRS Ethernet
SoAd 应:
SoAd 依赖:TcpIp(TCP/IP 协议栈)/ PduR(PDU 路由)/ SD / Dem(错误上报)。
SoAd 位于 TcpIp 之上,PduR/SD 之下。维护 Socket Connection ID、PDU → Socket 映射、IP 地址分配等。
void SoAd_Init(const SoAd_ConfigType* ConfigPtr):初始化。
void SoAd_DeInit(void):去初始化。
Std_ReturnType SoAd_OpenSoCon(SoAd_SoConIdType SoConId):打开 Socket Connection。
Std_ReturnType SoAd_CloseSoCon(SoAd_SoConIdType SoConId, boolean Abort):关闭 Socket Connection。
Std_ReturnType SoAd_IfTransmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr):IF(IP)模式 PDU 传输。
Std_ReturnType SoAd_TpTransmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr):TP 模式 PDU 传输。
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 接收。
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 发送数据复制。
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):获取本地地址。
Std_ReturnType SoAd_EnableRouting(SoAd_RoutingGroupIdType RoutingGroupId, boolean Enable):启用/禁用路由组。
Std_ReturnType SoAd_SetPduHeader(SoAd_SoConIdType SoConId, const uint8* PduHeaderPtr, uint8 PduHeaderLength):设置 PDU 头。
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 地址分配变化。
void SoAd_MainFunction(void):周期性主函数。
SoAd 配置类:
SOAD_E_UNINIT:模块未初始化。
SOAD_E_PARAM_POINTER:参数指针为空。
SOAD_E_PARAM:参数无效。
SOAD_E_INV_SOCKET:Socket ID 无效。
SOAD_E_BUSY:模块忙。
SOAD_E_NOBUFS:无可用缓冲区。
校对轮次:L1 自动校对(2026-06-13)