android: match official libcoresdk handshake - 66f cali-info, 670+EP0x84 cali fetch w/ cache, drop legacy 66b/pre-start FFC
This commit is contained in:
@@ -290,6 +290,32 @@
|
||||
- 预期:本轮装上后,日志应出现 `first reads [0] n=...` 与递增的 frames/rendered,
|
||||
画面出图。若 timeouts 持续上涨且 reads=0,再看 5s re-kick 与 halted 状态。
|
||||
|
||||
## 用户反馈修复 第十五轮(2026-09-10,BREAKTHROUGH:逆向官方 libcoresdk 找到缺失握手)
|
||||
|
||||
- [x] **用户回传第三轮日志**:clear_halt 修复已生效(0x81 每 500ms 健康轮询 25s
|
||||
无遗漏),但相机确实 0 字节;66b 仅在相机上电后响应一次,随后对一切命令
|
||||
沉默,~27s 后相机掉线重启。**官方 App 在同一手机正常** → 排除供电/硬件。
|
||||
- [x] **逆向 analysis/ida/export 的 libcoresdk(arm64) 反编译(官方在用的库)**:
|
||||
- `CNetComm` 命令层全貌:66f=ReadCaliInfo(响应 0x5BB5B55E pair={u64 标定
|
||||
文件大小, u64 版本});**670=GetCaliFile**(响应带大小 → 从 **EP 0x84**
|
||||
按 ≤512KB 块、60s 超时读回标定文件;日志串 "First running on new host,
|
||||
it will cost some time for initializing...");672=FFC;673=START;
|
||||
674=STOP;676/677=省电参数(AutoPowerSave,非图像传输)。
|
||||
- **官方安卓连接序列根本不发 66b/66c**(66b 是 PC libmagcore 旧演示遗留),
|
||||
也不发预启动 FFC;序列 = 66f →(缓存缺失)670+0x84 拉取 → 读线程 →
|
||||
50ms → START。FFC 由帧驱动(pipeline onFfc)。
|
||||
- 推断:我们一直发的 66b 把该固件带入旧式握手模式并卡死(66b 有响应、
|
||||
之后全哑、看门狗 ~25s 重启)——与全部日志吻合。
|
||||
- [x] **IrSession 按官方序列重写连接**:66f(1000ms 读,解析 pair)→ 缓存
|
||||
`files/cali/magcore.cali.<version>` 命中则直接用 → 否则 670 + EP 0x84
|
||||
拉取(60s/块,进度日志,成功后写缓存)→ loadDdt(拉取文件优先,失败回退
|
||||
内置 DDT)→ 50ms → START。删除 66b/66c/预启动 FFC×2;首帧后补发一次
|
||||
66b 拿 info 块(MDT 用)。UsbTransport 加 endpointByAddress()。
|
||||
- [x] 构建+单测全过;APK 已更新(11.87MB)。
|
||||
- 预期日志特征:`66f cali-info ok` + `cali pair: size=1856416...` →
|
||||
`first run on this host: fetching cali file...` → `cali fetched+cached` →
|
||||
`first reads [0] n=...` → frames 递增 → 出图。
|
||||
|
||||
## 待办
|
||||
|
||||
- 真机USB实测(温度绝对值标定、FFC/录像/MDT保存端到端)——进行中:
|
||||
|
||||
Reference in New Issue
Block a user