/* * 主机侧单测桩:net_socket.h(含内联 net_types.h 子集) * 模块功能:为 App/sync/time_sync.c 提供主机可编译的网络 Socket API 声明与类型。 * * ⚠ 仅供 test/host/time_sync/ 使用,不参与 MCU 构建。 * 真实头(Drivers/BSP/NET/net_socket.h)包含 net_types.h → net_config.h,并经 * FreeRTOS.h / task.h 拖入整套 FreeRTOS;本桩改为包含同名桩头。 * * 保真点: * - 地址族/类型/特殊地址常量与 Drivers/BSP/NET/net_types.h 逐字一致; * - struct net_sockaddr / net_in_addr / net_sockaddr_in 字段与真实头一致 * (被测代码写 sin_family / sin_port / sin_addr.s_addr,桩按同布局读取); * - 7 个被测代码调用的接口签名与真实头一致(net_socket / net_bind / net_listen / * net_accept / net_close / net_recv_to / net_get_generation / net_htons)。 * 全部由测试单元给强符号桩(脚本化返回值 + 调用记录)。 * * 创建日期:2026-10-10 */ #ifndef NET_SOCKET_H #define NET_SOCKET_H #include #include "FreeRTOS.h" #include "task.h" #ifdef __cplusplus extern "C" { #endif /* ===== 以下取自 Drivers/BSP/NET/net_types.h(逐字) ===== */ #define NET_AF_INET 2 /* IPv4 */ #define NET_SOCK_STREAM 1 /* TCP */ #define NET_SOCK_DGRAM 2 /* UDP */ #define NET_INADDR_ANY 0 /* 任意地址 */ #define NET_INADDR_NONE 0xFFFFFFFF /* 无效地址 */ struct net_sockaddr { uint16_t sa_family; /* 地址族 */ char sa_data[14]; /* 地址数据 */ }; struct net_in_addr { uint32_t s_addr; /* IP 地址(网络字节序) */ }; struct net_sockaddr_in { uint16_t sin_family; /* 地址族,必须为 AF_INET */ uint16_t sin_port; /* 端口号(网络字节序) */ struct net_in_addr sin_addr; /* IP 地址(网络字节序) */ char sin_zero[8]; /* 填充字节 */ }; /* ===== 被测代码用到的 Socket API(签名与真实头一致) ===== */ int net_socket(int domain, int type); int net_bind(int sockfd, const struct net_sockaddr *addr, int addrlen); int net_listen(int sockfd); int net_accept(int sockfd, struct net_sockaddr *addr, int *addrlen); int net_close(int sockfd); int net_drop_conn(int sockfd); int net_recv_to(int sockfd, void *buf, int len, uint32_t timeout_ms); uint32_t net_get_generation(void); uint16_t net_htons(uint16_t hostshort); #ifdef __cplusplus } #endif #endif /* NET_SOCKET_H */