- 新增 ota_channel_t(WiFi/BLE) + m_otaEpoch 会话代次, abortCurrentIfEpoch 防止同类型重启后旧 handler 误清新会话 - 同通道再次发起 OTA 时自动中止旧会话并重开 - 统一 prepareGd32Storage(validate+begin+erase+meta), 消除 BLE/WiFi 两路径隐式差异 - OtaRelay 拆分子步骤(doRelayPackets/doFinishAndVerify), 状态成员私有化消除数据竞争 - Gd32FlashStore NVS 读写加 mutex,metaUpdate 原子化 - BLE OTA 新增 0xFB 中止命令(保持连接)+ 0x20 ABORTED 处理 - HTTP handler 改 per-request buffer 支持并发 - 修复 CRITICAL 状态 RSSI 恢复无法降级的缺陷 - main.cpp 关键任务失败触发看门狗重启 - style.css 增强动画 + prefers-reduced-motion 兼容
1.9 KiB
1.9 KiB
- 仓库根临时文件已删除:
old_wifi_ota.cpp.tmp、original_app.js.tmp、appjs_diff.txt、build_baseline.log、build_output.log不存在 OtaCoordinator::isIdle()仅调用一次getSystemState()(即一次lock())OtaCoordinator::getSystemStateString()仅调用一次getSystemState()- 8 个 GD32 存储 wrapper(
writeGd32Chunk/saveGd32Meta/loadGd32Meta/updateGd32Meta/clearGd32Meta/verifyGd32Firmware/finalizeGd32Checksum/eraseGd32Partition)已改为inline并在头文件中实现,.cpp中对应实现已删除 - 调用方(
http_handlers.cpp、ble_ota.cpp等)无需改动即可编译通过(签名不变) wifi_ota.cpp::httpServerStart()使用路由表 + 循环注册,9 个端点及其 OPTIONS 预检全部注册- HTTP 路由注册行为与原实现等价(端点、method、handler 对应关系一致)
OtaRelay新增commonRejecthelper,各handle*开头拒绝分支等价于原实现handleTransferring的RELAY_EVT_HEALTH_CRIT拒绝分支保留forwardFirmware()不再使用goto cleanup,5 步驱动顺序与超时检查时机不变SpiMaster删除syncTransferUnlocked/sendUnlocked,公共 API 通过LockGuard+ Impl 实现SpiMaster::transferWithRetry调用路径更新为 Impl,无递归加锁HealthMonitor新增LockGuard内部类,getState/setState/getLastTemperature/getLastWifiRssi/tempMonitorCallback使用 RAII 守卫- 评审"不建议改的地方"全部未动:5 步驱动顺序、健康检查时机、watchdog 自愈、
forceCleanup仅isIdle()、Esp32OtaCore双层 mutex 语义 idf.py build编译通过,无新增警告(15 个源文件 0 warning / 0 error)main/目录行数较变更前减少(主要削减:httpServerStart173→67、ota_coordinator.cpp8 wrapper 删除、spi_master.cpp2 Unlocked 删除、ota_relay.cppgoto 重构)