6394853fef
实施方案 docs/网络/N34-自愈审计/实施方案.md §5 项1/2/3/5(项4 U15受E6暂缓): - 3a 合并reconciler:net_listener_pump删除,与net_reconcile_tick合并为 单一100ms tick;判据读驱动状态缓存(唯一刷新点=net_poll每轮全量刷新, E2背书18.1us);去抖分级②=1/③④⑤=2/①=4轮(M3让位窗400ms保留)+冷却1s; 链路态订阅留痕(F-DRV-13);探针去抖删除(F-MS-9) - 3b 忙等统一(P2b):listen/connect open重试与close排空循环改 net_sock_reset_sync(驱动sock_reset:读空RX→CLOSE→排空事件→等 byte0=00H,内置LISTEN态二段CLOSE补发);close不再读清全局中断寄存器 (F-NET-7);net_poll每轮步进活跃复位状态机(驱动契约,防搁浅) - 3c 镜像降级:net_sock_state_t声明为本层会话投影,芯片事实源=驱动缓存 - E-02收口:新API net_drop_conn(拆会话保监听,QUARANTINE语义,幂等; 模拟器双端实现;timeSync 30s预算耗尽接入;主机单测TC-TS-027d) 定案:CH395F close无RST,对内核存活不close的对端停FIN_WAIT_2, 监听恢复受限于对端close(Trap 07补充),兜底=E13 keepalive/TIMEOUT 台架全绿(Code=211348 RW=1104 ZI=154232):@test PASS;[STACK] net 1116/3840;Trap22 :7003 50/50+:21三档各50/50;Trap23 RST10/10+FIN5/5; Trap25 n30 11/11;E-02双PASS;iec104 18/18;对时跨会话连续; ftp_regression 11/11;integrity 15/15 SHA;ci_local L0+L0.5全过。
73 lines
2.6 KiB
C
73 lines
2.6 KiB
C
/*
|
|
* 主机侧单测桩: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 <stdint.h>
|
|
|
|
#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 */
|