Files
ESP32_COMM/.trae/specs/simplify-arch-boilerplate/checklist.md
T
小龙虾 a93dba60d2 feat(ota): 会话 epoch/通道标识 + BLE 中止命令 + NVS 线程安全
- 新增 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 兼容
2026-06-28 04:32:18 +08:00

1.9 KiB
Raw Blame History

  • 仓库根临时文件已删除: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 新增 commonReject helper,各 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/ 目录行数较变更前减少(主要削减:httpServerStart 173→67、ota_coordinator.cpp 8 wrapper 删除、spi_master.cpp 2 Unlocked 删除、ota_relay.cpp goto 重构)