TcpIp 模块是 AUTOSAR 的 TCP/IP 协议栈实现。位于 EthIf 之上、SoAd 等用户模块之下。提供 TCP/UDP/IPv4/IPv6/ICMP/ARP/DHCP/TLS 等协议服务。R4.4 引入 TLS 草案支持传输层安全(TLS 1.2/1.3)。
TcpIp / TCP / UDP / IP / IPv4 / IPv6 / ICMP / ARP / DHCP / DNS / TLS / TCP/IP / Socket / SoAd / SD / DoIP / Network Layer / Transport Layer / Security / DoS
[1] AUTOSAR SWS Ethernet Interface
[2] AUTOSAR SWS SocketAdaptor
[3] AUTOSAR SWS ServiceDiscovery
[4] AUTOSAR SWS DoIP
[5] AUTOSAR SWS UdpNm
[6] AUTOSAR SRS Ethernet
[7] IETF RFC 768 (UDP) / RFC 793 (TCP) / RFC 791 (IPv4) / RFC 8200 (IPv6) / RFC 826 (ARP) / RFC 2131 (DHCP) / RFC 5246 (TLS 1.2) / RFC 8446 (TLS 1.3)
TcpIp 应:
TcpIp 依赖:EthIf(接口)/ Eth(驱动)/ Dem(错误上报)/ KeyM(TLS 密钥)/ SchM(调度器)/ 上层(SoAd/SD/DoIP/UdpNm/CDD)。
TcpIp 位于 TCP/IP 协议栈中:
支持 IPv4 / IPv6 双协议栈;可同时运行多个 Network Interface(多 NetIf)。
TcpIp 包含:
TcpIp 维护 TCP/UDP Socket:
void TcpIp_Init(const TcpIp_ConfigType* ConfigPtr):初始化 TcpIp 协议栈。
void TcpIp_DeInit(void):去初始化。
TcpIp_SocketIdType TcpIp_CreateSocket(TcpIp_DomainType Domain, TcpIp_ProtocolType Protocol):创建 Socket(Domain:AF_INET / AF_INET6;Protocol:TCP / UDP)。
Std_ReturnType TcpIp_CloseSocket(TcpIp_SocketIdType SocketId, boolean Abort):关闭 Socket。
Std_ReturnType TcpIp_Bind(TcpIp_SocketIdType SocketId, TcpIp_LocalAddrIdType LocalAddrId, uint16 Port):绑定本地地址和端口。
Std_ReturnType TcpIp_Connect(TcpIp_SocketIdType SocketId, const TcpIp_SockAddrType* RemoteAddrPtr):建立连接(TCP 客户端模式)。
Std_ReturnType TcpIp_Listen(TcpIp_SocketIdType SocketId, uint16 MaxConnections):监听(TCP 服务器模式)。
Std_ReturnType TcpIp_Accept(TcpIp_SocketIdType SocketId, TcpIp_SocketIdType* AcceptSocketId, TcpIp_SockAddrType* RemoteAddrPtr):接受新连接。
Std_ReturnType TcpIp_Send(TcpIp_SocketIdType SocketId, const uint8* DataPtr, uint32 DataLength, boolean Force):发送数据。
Std_ReturnType TcpIp_Recv(TcpIp_SocketIdType SocketId, uint8* DataPtr, uint32* DataLengthPtr):接收数据。
Std_ReturnType TcpIp_Shutdown(TcpIp_SocketIdType SocketId):Shutdown(半关闭)。
Std_ReturnType TcpIp_ResetSocket(TcpIp_SocketIdType SocketId, TcpIp_ResetReasonType Reason):重置 Socket。
Std_ReturnType TcpIp_SetSocketOption(TcpIp_SocketIdType SocketId, TcpIp_SocketOptionIdType OptionId, const void* OptionValuePtr, uint32 OptionLength):设置 Socket 选项(如 TCP_NODELAY, SO_KEEPALIVE, SO_LINGER, IP_TTL 等)。
Std_ReturnType TcpIp_GetSocketOption(TcpIp_SocketIdType SocketId, TcpIp_SocketOptionIdType OptionId, void* OptionValuePtr, uint32* OptionLengthPtr):获取 Socket 选项。
TcpIp_LocalAddrIdType TcpIp_AddDynamicNdpUnicastEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr, const uint8* PhysAddrPtr):添加 NDP 单播条目(IPv6)。
Std_ReturnType TcpIp_RemoveDynamicNdpUnicastEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr):移除 NDP 条目。
Std_ReturnType TcpIp_AddArpEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr, const uint8* PhysAddrPtr, boolean Permanent):添加 ARP 条目(IPv4)。
Std_ReturnType TcpIp_RemoveArpEntry(TcpIp_LocalAddrIdType LocalAddrId, const TcpIp_SockAddrType* IpAddrPtr):移除 ARP 条目。
Std_ReturnType TcpIp_DhcpV4ReadOption(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_DhcpV4OptionType OptionId, uint8* OptionValuePtr, uint32* OptionLengthPtr):读取 DHCPv4 选项。
Std_ReturnType TcpIp_DhcpV6ReadOption(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_DhcpV6OptionType OptionId, uint8* OptionValuePtr, uint32* OptionLengthPtr):读取 DHCPv6 选项。
Std_ReturnType TcpIp_RequestIpAddrAssignment(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_IpAddrAssignmentType Type, TcpIp_IpAddrAssignmentStrategyType Strategy, uint32 TimeoutMs):请求 IP 地址分配(STATIC / LINKLOCAL / DHCPv4 / DHCPv6 / AUTOCONF / RA)。
Std_ReturnType TcpIp_ReleaseIpAddrAssignment(TcpIp_LocalAddrIdType LocalAddrId):释放 IP 地址。
Std_ReturnType TcpIp_GetLocalAddr(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_SockAddrType* LocalAddrPtr, uint8* NetmaskPtr, TcpIp_PhysAddrType* PhysAddrPtr):获取本地地址。
Std_ReturnType TcpIp_GetPhysAddr(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_PhysAddrType* PhysAddrPtr):获取物理地址(MAC)。
Std_ReturnType TcpIp_GetRemoteAddr(TcpIp_SocketIdType SocketId, TcpIp_SockAddrType* RemoteAddrPtr):获取远端地址。
TcpIp_StateType TcpIp_GetState(TcpIp_SocketIdType SocketId, TcpIp_StateType* StatePtr):获取 Socket 状态(TCP_CLOSED / TCP_LISTEN / TCP_SYN_SENT / TCP_SYN_RECEIVED / TCP_ESTABLISHED / TCP_FIN_WAIT_1 / TCP_FIN_WAIT_2 / TCP_CLOSE_WAIT / TCP_CLOSING / TCP_LAST_ACK / TCP_TIME_WAIT;UDP_UNBOUND / UDP_BOUND / UDP_ACTIVE)。
Std_ReturnType TcpIp_ChangeParameter(TcpIp_SocketIdType SocketId, TcpIp_ParameterIdType ParameterId, const void* ParameterValuePtr):更改 Socket 参数。
Std_ReturnType TcpIp_VTableTransmit(TcpIp_SocketIdType SocketId, const uint8* DataPtr, uint32 DataLength):通过 VTable 发送(用于 CDD)。
void TcpIp_RxIndication(uint8 CtrlIdx, Eth_FrameType FrameType, boolean IsBroadcast, const uint8* PhysAddrPtr, const uint8* DataPtr, uint16 LenByte):接收指示。
void TcpIp_TxConfirmation(uint8 CtrlIdx, uint8 BufIdx, Std_ReturnType Result):发送确认。
void TcpIp_LocalIpAddrAssignmentChg(TcpIp_LocalAddrIdType LocalAddrId, TcpIp_IpAddrStateType State):本地 IP 地址分配变化。
void TcpIp_ArpReceiveIndication(uint8 CtrlIdx, TcpIp_ArpPacketType* ArpPacketPtr):ARP 接收指示。
void TcpIp_ArpTxConfirmation(uint8 CtrlIdx, TcpIp_ArpPacketType* ArpPacketPtr, Std_ReturnType Result):ARP 发送确认。
void TcpIp_SoConModeChg(TcpIp_SocketIdType SocketId, TcpIp_StateType State):Socket 模式变化(SoCon Change)。
void TcpIp_AcceptReady(TcpIp_SocketIdType SocketId, TcpIp_SocketIdType AcceptSocketId):Accept 准备就绪。
void TcpIp_TcpConnected(TcpIp_SocketIdType SocketId):TCP 已连接。
void TcpIp_TcpIpEvent(TcpIp_SocketIdType SocketId, TcpIp_EventType Event):TCP/IP 事件。
void TcpIp_MainFunction(void):周期性主函数。处理 ARP / DHCP / TCP 超时 / Socket 状态等。
TcpIp 配置类:
TCPIP_E_UNINIT:模块未初始化。
TCPIP_E_PARAM_POINTER:参数指针为空。
TCPIP_E_PARAM:参数无效。
TCPIP_E_INV_SOCKET_ID:Socket ID 无效。
TCPIP_E_INV_ADDR_ID:地址 ID 无效。
TCPIP_E_BUSY:模块忙。
TCPIP_E_NOBUFS:无可用缓冲区。
TCPIP_E_MSGSIZE:消息过大。
TCPIP_E_ARP_TIMEOUT:ARP 超时。
TCPIP_E_TCP_RST:TCP 收到 RST 报文。
TCPIP_E_DHCP_FAILURE:DHCP 失败。
校对轮次:L1 自动校对(2026-06-13)