feat(core): 移除状态监控任务并优化系统资源

移除原有的周期性状态监控任务,减少系统负载和内存占用。

perf(relay): 优化OTA中继挑战响应验证逻辑

重构挑战响应验证流程,统一响应长度定义,并改进验证算法。

fix(wifi): 修复OTA中继重复触发问题

确保中继状态正确重置,防止在非空闲状态下重复触发中继。

perf(transport): 优化SPI通信时序参数

调整CS片选信号的前后延时参数,提高SPI通信稳定性。

refactor(ui): 分离ESP32和GD32文件上传界面

重构前端界面,为ESP32和GD32分别提供独立的文件上传区域。
This commit is contained in:
小龙虾
2026-05-28 23:40:19 +08:00
parent e014ca7704
commit 235b9c0420
7 changed files with 296 additions and 307 deletions
+1 -105
View File
@@ -1,8 +1,6 @@
/*
* ESP32-C3FH4 OTA 中继 - 程序入口
* 四个 FreeRTOS 任务:System Monitor / OTA Relay / WiFi Server / BLE GATT
*
* 新增:周期性状态监控任务,每 10 秒打印系统状态
* 三个 FreeRTOS 任务:OTA Relay / WiFi Server / BLE GATT
*/
#include <stdio.h>
#include "freertos/FreeRTOS.h"
@@ -20,12 +18,6 @@
#include "transport/protocol.h"
#include "monitor/debug_log.h"
/**
* @brief 状态监控任务
* @param pvParameters
*/
static void status_monitor_task(void *pvParameters);
/**
* @brief 程序主入口,初始化系统组件并创建各 FreeRTOS 任务。
*/
@@ -130,22 +122,6 @@ extern "C" void app_main(void)
DEBUG_INFO("MAIN", "BLE OTA 任务已创建");
}
// 状态监控任务(低优先级,周期性打印系统状态)
xRet = xTaskCreatePinnedToCore(
status_monitor_task,
"status_mon",
4096,
NULL,
configMAX_PRIORITIES - 5,
NULL,
0
);
if (xRet != pdPASS) {
DEBUG_ERR("MAIN", "创建 status_monitor_task 失败");
} else {
DEBUG_INFO("MAIN", "状态监控任务已创建");
}
DEBUG_INFO("MAIN", "========================================");
DEBUG_INFO("MAIN", "所有任务创建完成,OTA Relay 运行中");
DEBUG_INFO("MAIN", "调试日志输出: UDP(%s:%d) + UART0(GPIO21/TX, 115200)",
@@ -153,83 +129,3 @@ extern "C" void app_main(void)
DEBUG_INFO("MAIN", "========================================");
}
// ============================================================
// 状态监控任务 - 每 10 秒打印系统状态
/**
* @brief 周期性打印系统运行状态,包括内存、WiFi 和 OTA 中继信息。
* @param pvParameters
*/
static void status_monitor_task(void *pvParameters)
{
(void)pvParameters;
DEBUG_INFO("STAT", "状态监控任务启动");
uint32_t loop_count = 0;
while (1) {
loop_count++;
uint32_t free_heap = esp_get_free_heap_size();
uint32_t min_free_heap = esp_get_minimum_free_heap_size();
health_state_t health = health_get_current();
relay_state_t relay = ota_relay_get_state();
int8_t rssi = wifi_get_rssi();
bool wifi_conn = wifi_is_connected();
// 打印状态头
DEBUG_INFO("STAT", "========== 系统状态 #%lu ==========", (unsigned long)loop_count);
// 内存状态
DEBUG_INFO("STAT", "内存: 空闲=%lu 字节, 最低=%lu 字节",
(unsigned long)free_heap, (unsigned long)min_free_heap);
// 健康状态
const char *health_str;
switch (health) {
case SYS_NORMAL: health_str = "正常"; break;
case SYS_WARNING: health_str = "警告"; break;
case SYS_CRITICAL: health_str = "危险"; break;
case SYS_SAFE_SHUTDOWN: health_str = "安全关机"; break;
default: health_str = "未知"; break;
}
DEBUG_INFO("STAT", "健康状态: %s (%d)", health_str, health);
// WiFi 状态
if (wifi_conn) {
DEBUG_INFO("STAT", "WiFi: 已连接, RSSI=%d dBm", rssi);
} else {
DEBUG_INFO("STAT", "WiFi: 未连接");
}
// OTA 中继状态
const char *relay_str;
switch (relay) {
case RELAY_IDLE: relay_str = "空闲"; break;
case RELAY_HANDSHAKE_IDLE: relay_str = "等待握手"; break;
case RELAY_HANDSHAKE_SENT: relay_str = "握手请求已发送"; break;
case RELAY_CHALLENGE_SENT: relay_str = "挑战已发送"; break;
case RELAY_CHALLENGE_RESPOND: relay_str = "收到握手响应"; break;
case RELAY_SESSION_KEY_SENT: relay_str = "会话密钥已发送"; break;
case RELAY_AUTH_COMPLETE: relay_str = "认证完成"; break;
case RELAY_SIZE_SENT: relay_str = "大小已发送"; break;
case RELAY_SIZE_ACK: relay_str = "大小确认"; break;
case RELAY_RECEIVING: relay_str = "接收中"; break;
case RELAY_RELAY_ACTIVE: relay_str = "转发中"; break;
case RELAY_PACKET_SENT: relay_str = "数据包已发送"; break;
case RELAY_PACKET_ACK_OK: relay_str = "ACK 正常"; break;
case RELAY_PACKET_ACK_RETRY: relay_str = "需要重试"; break;
case RELAY_RECEIVE_DONE: relay_str = "接收完成"; break;
case RELAY_TRANSFER_DONE: relay_str = "传输完成"; break;
case RELAY_FINISH_SENT: relay_str = "结束已发送"; break;
case RELAY_DONE: relay_str = "OTA 完成"; break;
case RELAY_ERROR: relay_str = "错误"; break;
default: relay_str = "未知"; break;
}
DEBUG_INFO("STAT", "OTA 中继: %s (%d)", relay_str, relay);
DEBUG_INFO("STAT", "======================================");
// 每 10 秒打印一次
vTaskDelay(pdMS_TO_TICKS(10000));
}
}