链路时延M1-M3收尾:Phase12-14基线与生产路径Δ实测、D10/E-02/D17修复、D20定位与硬化、文档整理

This commit is contained in:
2026-09-22 06:12:16 +08:00
parent ac48c6d716
commit e5733b3454
42 changed files with 18294 additions and 1168 deletions
+41
View File
@@ -37,6 +37,8 @@ typedef enum {
NET_MSG_CONNECT,
NET_MSG_LISTEN,
NET_MSG_ACCEPT,
NET_MSG_RESYNC_LISTEN, /* 仅修 MCU 侧状态(ESTABLISHED→LISTENING),不发芯片命令 */
NET_MSG_RELISTEN, /* 无条件芯片侧重监听(open+listen,含 Trap 09 重试) */
} net_msg_type_t;
typedef struct {
@@ -45,6 +47,7 @@ typedef struct {
void *buf; /* 数据缓冲区(send/recv) */
int len; /* 数据长度/缓冲区大小 */
int flags; /* 接收标志 */
uint32_t timeout_ms; /* 接收超时(入队方向;0 = 用默认 NET_RECV_TIMEOUT_MS) */
TaskHandle_t caller; /* 调用方任务句柄 */
int result; /* 操作结果 */
/* 连接参数 */
@@ -185,6 +188,20 @@ int net_send(int sockfd, const void *buf, int len, int flags);
*/
int net_recv(int sockfd, void *buf, int len, int flags);
/*
* 函数功能:接收数据(**带调用方指定超时**的阻塞版,用于分片有界读)
* 入口参数:sockfd - Socket 描述符
* buf/len - 接收缓冲与容量
* timeout_ms - 单次调用在 netTask 内的最长等待(毫秒,>0)
* 返回值:>0 实际字节数;0 = 对端关闭(EOF);-1 = 真错误(errno 可查);**-2 = 超时无数据**
* 限定条件:非 netTask 上下文;Socket 已连接
* 函数说明:为"不能长时间占用 netTask"的调用方(如 lftpd 控制行/数据读)提供
* **分片**阻塞:每次调用最多占用 netTask timeout_ms,返回 -2 表示这段
* 时间内无数据,调用方自行累计总预算并决定是否继续(E-02 头阻塞修复)。
* 超时用独立返回码而非 errno → 无跨任务 errno 竞态。
*/
int net_recv_to(int sockfd, void *buf, int len, uint32_t timeout_ms);
/*
* 函数功能:发送 UDP 数据
* 入口参数:sockfd - socket 描述符
@@ -249,6 +266,30 @@ int net_set_event_cb(int sockfd, net_event_cb_t cb, void *arg);
*/
int net_get_errno(void);
/*
* 函数功能:查询 socket 当前状态(只读快照,可能滞后于 netTask)
* 返回值:状态值(net_sock_state_t);描述符无效/未占用 → -1
*/
int net_sock_state(int sockfd);
/*
* 函数功能:断连重同步——仅把 MCU 侧状态对齐到 LISTENING,不发任何芯片命令
* 适用场景:芯片"静默回收"(peer 发 FIN 后芯片自行把 Socket 回收回监听
* 且不发 DISCONNECT 中断,2026-09-22 台架实证)→ MCU 状态滞留
* ESTABLISHED。调用方须确信连接已死/芯片已回收(如会话超时中止后);
* 连接仍存活时严禁调用(会把活连接标记成监听态)。
* 返回值:0 - 已同步(或原本即 LISTENING);-1 - 失败(描述符/队列无效)
*/
int net_resync_listen(int sockfd);
/*
* 函数功能:无条件重新监听(芯片侧 open+listen,含 Trap 09 失败重试)
* 适用场景:断连后需确保监听器确定在位的自愈(监听短暂中断 ~1s,调用方
* 的重连逻辑须容忍)
* 返回值:0 - 成功;-1 - 失败
*/
int net_relisten(int sockfd);
/*
* 函数功能:将 IP 地址字符串转为网络字节序
* 入口参数:cp - 点分十进制字符串 "192.168.1.100"