/* * 模块名称:主机侧单测桩 - net_socket.h(lftpd 协议层模块专用) * 模块功能:给 FTP 协议层四个地址/字节序入口(PASV 要用本机 IP 拼 227 响应), * 并照做真实头对 FreeRTOS.h / task.h 的 include 链。地址结构与 * NET_AF_INET / NET_SOCK_STREAM 取**真实** net_types.h。 * ⚠ 仅供主机侧单测使用,不参与 MCU 构建。 * 创建日期:2026-10-23 */ #ifndef NET_SOCKET_H #define NET_SOCKET_H #include "FreeRTOS.h" #include "task.h" /* 主机侧必要清理:lftpd.c 会 include ff.h,而这份 FatFs 在 Windows 支路上会把 * winsock.h 拉进来,它带着 "#define s_addr S_un.S_addr" 这个 BSD 兼容宏——于是真实 * net_types.h 里的字段声明 uint32_t s_addr; 被展开成 uint32_t S_un.S_addr; 直接炸 * (实测报 C2143:在 "." 前面缺 ";",再级联出一串"sin_addr 使用未定义的 struct")。 * 这里只 #undef 掉这个污染宏,让**固件那份结构体定义原样参与编译**:字段名仍是真实 * 的 s_addr,被测代码读的也是它。(lftpd_inet 批次不 include ff.h,所以没撞上。) */ #ifdef s_addr #undef s_addr #endif #include "net_types.h" int net_getsockname(int sockfd, struct net_sockaddr *addr, int *addrlen); int net_getpeername(int sockfd, struct net_sockaddr *addr, int *addrlen); uint16_t net_htons(uint16_t hostshort); uint16_t net_ntohs(uint16_t netshort); uint32_t net_htonl(uint32_t hostlong); char *net_inet_ntoa(uint32_t in, char *p_buf); /* 两参:调用方给缓冲 */ #endif /* NET_SOCKET_H */