Files
story/docs/device-call-restart-20261005.md
Codex Local bf1233d5df
ci / verify (push) Canceled after 0s
feat: expand companion platform, device controls, and memoir workflows
Add customer and operator login, BLE provisioning, device fleet controls, call memory, memoir generation, and refreshed family and maintenance portals. Include API contracts, migrations, firmware sources, tests, assets, and deployment documentation.
2026-10-08 10:06:44 +08:00

4.5 KiB
Raw Permalink Blame History

挂断后再次开聊无回应修复

2026-10-05,用户反馈:首次轻触屏幕可正常聊天,轻触挂断后再次启动不能聊天。当前目标为 KP01-8995ACF5E69E,公开编号 3ef575a6-bbc0-4e00-9a5c-58a8157d9520,运行 1.7.0-controls.29 / code 12。

只读云端检查确认设备在线、有效绑定 1、配置 2/2,最近三通均已结束并收到 SDK 停止回执。COM6 的 VID:PID 和硬件标识与此前确认的目标一致;没有复位或启动通话,仅发送 diag-state 读取数字诊断。设备在结束通话后内部空闲内存仅为 695 字节,最大可分配块 128 字节。

已定位并修复

  • 正常录音关闭在停止管线后立即将句柄置空,后面的 esp_gmf_pipeline_destroy 永远不会执行。现在保留句柄,待读取者退出后完整销毁;启动失败也释放已分配的录音资源池。
  • 收音停止以前没有等待旧工作任务退出,录音 FIFO 可能在读取者仍持有数据块时被销毁,下一次启动也可能与旧任务重叠。现在先关闭采集入口、终止阻塞读取,等待工作任务结束,再回收任务、缓冲和句柄。读取者计数保护 FIFO 生命周期。
  • 收音和通话任务由 xTaskCreatePinnedToCoreWithCaps 创建,原来通过普通自删除退出,未使用相应的 WithCaps 回收。现在收音控制方和通话管理器分别从其他任务上下文释放原始任务句柄;结束事件处理完毕才重新开放通话入口。
  • 检查收音初始化和任务创建结果,启动失败进入既有结束流程,避免继续显示成功连接却没有收音。

以上代码问题和当前内存不足有明确证据;尚未通过更新后的实机连续聊天验证,因此不将所有第二次无回应原因视为已经排除。

本地验证与交付

ESP-IDF 5.5.1 编译通过。对照已交付 .29 检查 5403 项生产输入,仅改动录音处理、收音 HAL、通话任务、通话管理器、版本头五个文件,保留其余输入。

四项提取真实生产 C 的主机测试通过 UBSan。新增测试运行 100 次带并发读取的收音/待机切换,覆盖阻塞读取终止、成功 PCM 回调、管线/任务/缓冲回收、重复停止、启动失败恢复和最终销毁。屏幕点击测试验证管理器调用 WithCaps 回收;原有显示、静默计时和诊断回归通过。主机调度模拟不代替 ESP32 实物验收。

固件 1.7.0-controls.30,应用镜像 3,772,992 字节,SHA256 3a20b71f6c8d1f376b05a9520dc16e3227728d8f8fed038a803bf2818522bbb3,符合 4 MiB OTA 槽限制。交付目录为 artifacts/firmware/1.7.0-controls.30,包含应用、manifest、验证记录和五个冻结源文件。可比对的旧源差异单独标为 source-delta.partial.patch;录音处理和收音 HAL 未找到哈希匹配的旧源副本,不把部分差异称为完整差异。

证据保存在 E:/Codex/story/.local-evidence/call-restart-20261005。没有保存通话正文或音频。

授权前部署状态

本次尝试通过现有 SSH service 维护流程上传冻结包并创建云端发布时,自动审批在命令执行前拒绝:用户已授权修复和验证,但尚未明确授权向现有云平台发布或部署固件。未上传、创建新发布或启动 OTA,设备仍为 .29。已请求授权将 .30 发布到 https://82.157.201.114,并仅升级当前设备。

授权后需核对设备空闲和 OTA 状态,发布并校验 HTTPS 全量回读,沿用已登录家庭端安装,确认新版心跳及绑定/配置保留。设备连续轻触开聊、挂断、再开聊和实际双向语音仍需实机验收。

已安装(2026-10-05)

用户明确回复“升级”后,已将 .30 / code 13 发布到现有云平台,service 维护审计及 HTTPS 全量回读哈希均通过。首次发布工具因 API 运行镜像已由 .35 更新为 .40 而在维护执行前停止;只读核对后更新校验基线,没有改生产镜像或服务。

第一次 OTA b488ec0d-d049-4bac-b2f4-5a24189fbd7a 下载完整,但校验阶段返回 ESP_ERR_NO_MEM / 0x101,原版保留。通过真实家庭端重启后重试,OTA 4691317b-f698-475b-a7a2-f2e9353f1f0f 于 2026-10-05 14:49:32 北京时间回报成功,设备已运行 1.7.0-controls.30 / code 13。两次新版在线快照确认心跳推进;绑定数 1、绑定代次 1、配置 2/2 保留。

安装耗时摘要:OTA ms=32264 erase=6305 read=13810 write=7430 sha=1413 buf=8192。本次没有启动通话或保存音频/正文;连续点击开聊、挂断、再开聊的实际语音验收仍需实物操作。