Files
ESP32_COMM/.trae/specs/fix-ble-ota-spurious-ack/checklist.md
T
小龙虾 fedb08e215 fix: 修复:改进OTA错误处理和BLE OTA性能
- 重构app.js中的OTA错误处理,以准确报告获取失败而不假设重启,从而实现正确的状态轮询。
- 通过将握手状态封装在SpiLinkState类中来增强SPI主状态管理,提高清晰度并减少直接的状态操作。
 引入otaSendAndPoll方法,以更好地处理SPI通信中的命令发送和响应轮询。
- 调整BLE OTA数据包确认逻辑,防止导致固件录变慢的虚假确认,确保仅在实际取得进展时才发送确认。
- 修改确认超时设置,以更好地适应闪存写入速度,减少不重传。
2026-07-09 02:49:24 +08:00

1010 B

Checklist

  • ESP32 路径:process_esp32_packet() 中窗口边界 ACK 触发条件包含 progressMade 检查
  • ESP32 路径:重复包(seq < expected)到达窗口边界时不发送 ACK
  • ESP32 路径:乱序缓存包(seq > expected,存入 reorder buffer)到达窗口边界时不发送 ACK
  • ESP32 路径:按序包写入 + flush 后 getReceived() 增长时,正常发送 ACK
  • ESP32 路径:transferComplete 和 isLastPacket 的 ACK 仍在实际写入时触发
  • GD32 路径:重复包(seq <= last_seq)不发送任何 ACK,仅跳过
  • GD32 路径:重复包的 DEBUG_DBG 日志保留
  • 发送端:首轮窗口 ACK 超时为 5000ms
  • 发送端:续发重试路径 ACK 超时保持 3000ms
  • 编译通过:ESP32 固件编译无错误(代码语法验证通过,ESP-IDF 环境需用户本地编译确认)
  • 逻辑验证:BLE OTA 刷写 ESP32 时不再出现每窗口"丢失 32 包"的稳定模式(需用户运行时测试)