feat(relay): OTA可用版本,添加OTA中继阶段健康检查和APP存活验证功能

- 新增health_check_before_ota_relay函数,用于OTA中继转发阶段的健康检查,
  跳过WiFi相关检查,只检查温度等本地状态
- 添加APP存活验证阶段,OTA完成后等待GD32 APP启动并通过ping确认存活
- 实现更精确的响应帧类型匹配和轮询机制,提高协议可靠性
- 添加多个阶段的响应匹配器(is_handshake_echo_ack、is_challenge_payload_ack等)
- 优化poll_until_expected_ack_shape函数,处理残留ACK和超时情况
- 将调试日志级别从INFO降级为DBG,减少日志输出
- 修复handshake阶段重试机制,添加最大重试次数限制
- 优化Flash擦除期间的WATI状态处理,使用短超时避免长阻塞
- 添加完整的会话数据清理,防止状态污染
- 增加详细的注释说明各阶段的处理逻辑
This commit is contained in:
小龙虾
2026-05-30 20:04:04 +08:00
parent 235b9c0420
commit 6f4be9189c
13 changed files with 923 additions and 111 deletions
+10 -1
View File
@@ -1,4 +1,4 @@
/*
/*
* health_monitor.h - 系统健康监控头文件
*/
#pragma once
@@ -45,6 +45,15 @@ void health_monitor_task(void *pvParameters);
*/
health_status_t health_check_before_ota(void);
/**
* @brief 在 OTA 中继转发阶段执行健康检查,跳过 WiFi 相关检查。
*
* SPI 中继阶段固件已存储在 ESP32 Flash 中,不依赖 WiFi 连接,
* 因此跳过 WiFi 连接状态和 RSSI 检查,只检查温度等本地状态。
* @return 健康检查结果,决定是否允许 OTA。
*/
health_status_t health_check_before_ota_relay(void);
/**
* @brief 记录一条健康相关事件日志,便于故障追踪与状态回溯。
* @param event 事件名称字符串。