android: USB hardening from device logs - async stream reader, CLEAR_HALT recovery, session mutex, detach handling, fast init

This commit is contained in:
ZXCLI
2026-09-10 01:21:29 +08:00
parent dbb4f24608
commit 0f2aa11196
5 changed files with 229 additions and 59 deletions
+24 -2
View File
@@ -249,10 +249,32 @@
- 注:取日志时 DCIM/MAG160C 和 Download/MAG160C 都看一眼(文件头 sink= 注明
实际位置);若在前者失败会自动落后者。
## 用户反馈修复 第十三轮(2026-09-10,真机日志分析:端点静默 + 重枚举)
- [x] **用户回传 debug 日志**vivo V2509A, Android16):相机识别/DDT/66b 响应全正常
SN 160043865),但 66c/66f 响应超时、FFC/START 第一轮写失败(write=-1
端点疑似 halt)、流端点 19 秒 0 字节;00:51:10 相机重新枚举(权限再次弹出)
——相机在会话中途疑似断电/复位;且新旧两个 Activity 的会话同时在抢同一设备
claimInterface 互相夺走)。
- [x] **IrSession 加固**:流端点改 **UsbRequest 异步**API30+position=字节数;
低版本回退同步 bulkTransfer);任何 transfer 失败先 GET_STATUS 诊断 +
**CLEAR_FEATURE(HALT)** 再重试一次;66b/66c/66f 响应读取缩短为 400ms 且
失败不阻断(与 C 参考一致);**会话互斥**companion active,新会话先停旧
会话);stop() 时序修复(STOP 在 close 之前发,由 streamLoop 收尾)。
- [x] **LiveViewModel**:注册 USB **DETACHED** 接收器(VID 匹配→停会话+no_device);
connect() 800ms 去抖;流 10 秒 0 数据 notify `no_stream_data`
LiveScreen 屏显"已连接但无数据流")。
- [x] 构建+单测全过;APK 已更新(11.87MB)。
- ⚠️ **下一步排查(若仍无流)**:相机中途重枚举强烈怀疑 **OTG 供电不足**
(vivo 口限流 → 相机 MCU 帧处理起来后掉电复位)。请用户:① 换一根好点的
短线/带供电的 OTG 转接器再试;② 在同一台手机装官方普通版 MAG-Cx 对照
(若官方也掉,就是供电/兼容问题,与我们的代码无关);③ 新日志看
`usb detached``get_status halted=` 行。
## 待办
- 真机USB实测(温度绝对值标定、FFC/录像/MDT保存端到端)——当前进行中:
第11轮日志落盘 APK 待用户回传 debug_*.log 分析
- 真机USB实测(温度绝对值标定、FFC/录像/MDT保存端到端)——进行中:
第13轮加固 APK 待用户复测;若仍无流,按上方供电排查三步走
- 网络互连远程预览(用户需求:UDP自动发现+手动IP)
- 离线MDT温度解码(ConvertResponse2Temperature+标定参数,待真机文件对照)
- 厂商12调色板精确提取(需运行时抓取)