Files
STM32F4-Base/Drivers/BSP/NET/net_config.h
T
wandering1 d770e36c7c refactor(NET): 源码注释去阶段化 + 网络两份文档重构 + 不稳根因图更新
- 源码注释:删去自愈收敛阶段
1/1.5/3等 scaffolding 称谓,改为语义引用
  (E-02 收口 / F-NET-2/3/4 / docs/网络/网络自愈架构设计.md §5.2 E13);
  涉及 net_socket/.h、net_events、net_listener、net_pending、net_types、
  net_config、ch395f、time_sync、iec104_serv、ui_net_sink、lftpd、
  simulator/sim/net_socket_sim、board/host 测试与探针
- 文档重构:网络自愈架构设计.md 与 Net层阻塞模型架构设计.md 改为现状口径
  (删历史节与阶段叙事),NET/README.md、docs/README.md 同步
- 工具与配图:gen_net_instability_svg.py 与
  docs/images/网络不稳根因总览.svg 随源码口径一并更新
- 门禁:@build 0 错误 0 警告
2026-10-14 22:05:53 +08:00

95 lines
3.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* 模块名称:Network Configuration
* 模块功能:网络子系统编译期参数——Socket 数量、收发超时、TCP KeepAlive。
* 仅保留**实际被引用**的宏;未使用项已清理。
* 适用平台:STM32F4 系列(CH395F 以太网芯片)
* 作者:王建锋
* 创建日期:2026-07-18
* 修改记录:
* 2026-09-10 王建锋 清理未引用宏(TCP Server 监听 Socket 索引、收发缓冲、
* 连接/接受超时、select/队列/轮询);KeepAlive 三宏改为
* 实际生效值 60s/5s/3 并在 net_socket.c 引用(原宏为无效遗留值)
* 2026-09-22 新增 NET_RETRANS_COUNT/NET_RETRANS_PERIOD_MS(P0-a:重传周期
* 500→200ms 治 D1 症状),net_socket.c 的字面量 8/500 移入本文件
* 2026-10-13 recv 语义主流化:删除 NET_RECV_TIMEOUT_MS(30s 默认预算)——
* recv 超时改为调用方策略(net_recv 无限阻塞 /
* net_recv_to 显式预算 / net_select 首选),API 不再强加默认值
* 2026-10-14 SEND pending 化:新增 NET_SEND_SPIN_MS(发送快速路径有界自旋
* 预算,超预算转挂起登记)——netTask 发送最坏停滞由
* NET_SEND_TIMEOUT_MS(1s)压到本值,健康路径行为不变
*/
#ifndef NET_CONFIG_H
#define NET_CONFIG_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* 最大支持的 Socket 数量(CH395F 支持 0~7)
*/
#ifndef NET_MAX_SOCKETS
#define NET_MAX_SOCKETS 8
#endif
/*
* 超时时间配置(毫秒)
* 0 = 无限等待(阻塞模式)
* 注:recv 侧无编译期默认预算(NET_RECV_TIMEOUT_MS 已删除)——
* 超时是调用方策略:net_recv() 无限阻塞、net_recv_to() 显式预算、
* net_select() 首选机制。
*/
#ifndef NET_SEND_TIMEOUT_MS
#define NET_SEND_TIMEOUT_MS 1000 /* 发送超时 */
#endif
/*
* 发送快速路径有界自旋预算(毫秒,SEND pending 配套)
* 分块发送时"等发送缓冲腾出"的正常代价实测仅 219µs(中位,max 378µs,
* 见《链路延迟测试说明.md》§6.2 chunk_wait)——留约 5 倍余量用有界自旋吃掉,
* 使**健康路径逐位不变**(多块帧仍在一次分派内发完,不额外引入 tick 延迟);
* 一旦单次等待超过本预算即登记挂起请求,把等待交回调用方上下文,
* netTask 的最坏停滞由 NET_SEND_TIMEOUT_MS(1s)压到本值。
*/
#ifndef NET_SEND_SPIN_MS
#define NET_SEND_SPIN_MS 2
#endif
/*
* TCP 重传配置(由 net_socket.c 的 net_init() 在 ch395f_init() 之前下发)
* P0-a(2026-09-22):周期 500→200ms——单次丢包代价 500→200ms(治 D1 症状),
* 总窗口 8×200=1.6s,链路真断时判失败更快(对远端显示重连有利)。
* 手册 §5.18 仅标注上限(≤1000ms)未标注下限;200ms 已经台架验证芯片接受
*(GET_CMD_STATUS=0x00 + 全套件无回归,见《链路延迟测试说明.md》§10.2 记录)。
*/
#ifndef NET_RETRANS_COUNT
#define NET_RETRANS_COUNT 8 /* 重传次数(手册:最大 20,默认 12) */
#endif
#ifndef NET_RETRANS_PERIOD_MS
#define NET_RETRANS_PERIOD_MS 200 /* 重传周期 ms(手册:最大 1000,默认 500) */
#endif
/*
* TCP KeepAlive 配置(单位 ms;须为 500 的倍数且 IDLE > INTVL)
* 由 net_socket.c 的 net_init() 在 ch395f_init() 之前下发
*/
#ifndef NET_KEEPALIVE_IDLE_MS
#define NET_KEEPALIVE_IDLE_MS 60000 /* 空闲 60 秒后开始探测 */
#endif
#ifndef NET_KEEPALIVE_INTVL_MS
#define NET_KEEPALIVE_INTVL_MS 5000 /* 5 秒探测一次 */
#endif
#ifndef NET_KEEPALIVE_CNT
#define NET_KEEPALIVE_CNT 3 /* 最多探测 3 次 */
#endif
#ifdef __cplusplus
}
#endif
#endif /* NET_CONFIG_H */