# AI 会话上下文 — QSJNIC Radio Debug

## 当前状态

正在排查 QSJNIC 项目（车机 Android 中间件）的 MCU Radio 数据问题。已完成全部排查。

## 项目概要

- **项目名**：QSJNIC，车载 Android 中间件
- **架构**：MCU ←串口(/dev/ttyS7, 460800 8N1)→ libmcujni.so(C) → JNI → QsMcuSystemService(Java) → AIDL → qsmw-sdk → App
- **5 个模块**：contract(AIDL/Parcelable) → service(系统APK) → sdk(客户端AAR) + 3个demo
- **MCU 固件**：swVersion=0302_20260527
- **协议文档**：`docs/MCU_ARM_Reference/20260513/Radio.xlsx`
- **测试车机 IP**：192.168.0.66:5555

## 已确认的 Bug

MCU 固件系统性缺陷：**所有 MCU→ARM 帧的数据载荷字节全部为零。**

| 帧类型 | cmd | body长度 | 现象 |
|--------|-----|---------|------|
| FREQ | 0x01 | 7 字节 | P0-P3 正常，P4-P6 全零（valid=0, signal=0, PTY=0） |
| PS_PTY | 0x02 | 9 字节 | 全部 0x00（PTY=0, PS 为空） |
| RT | 0x03 | 64 字节 | 全部 0x00（RT 为空） |

## 验证方法

在 `FrameRouter.java` handleRadio() 中增加了 hex dump（release 版本 package `com.qsjnic.mcu.service`）：

```
FREQ_BODY[7]=XX XX XX XX XX XX XX | Byte12=0xXX (valid=X) Byte14(signal)=0xXX
PS_PTY[9]=XX XX XX ... | PTY=0xXX PS="..."
RT[64]=XX XX XX ... | RT="..."
```

构建：`./gradlew :service:assembleRelease`
部署：`adb -s 192.168.0.66:5555 install -r service/build/outputs/apk/release/service-release.apk`
日志过滤：`adb -s 192.168.0.66:5555 logcat -s FrameRouter:I`

## 关键文件路径

- 协议定义：`docs/MCU_ARM_Reference/20260513/Radio.xlsx`
- 诊断代码：`service/src/main/java/com/qsjnic/mcu/service/FrameRouter.java`（handleRadio 方法）
- RadioFeature：`service/src/main/java/com/qsjnic/mcu/service/feature/RadioFeature.java`
- Decoders：`contract/src/main/java/com/qsjnic/mcu/domain/Decoders.java`
- JNI 桥接：`service/src/main/cpp/jni_bridge.cpp`
- 协议层：`service/src/main/cpp/mcu_protocol.c`
- 传输层：`service/src/main/cpp/mcu_transport.c`
- 排查报告：`/Users/admin/workspace/jyq/imgs/bug_report.md`
- Bug 描述：`/Users/admin/workspace/jyq/imgs/bug.md`

## 数据流关键点

1. C 层帧解析：`mcu_decode_complete_frame()` — payload = raw + 6（跳过帧头2+len2+seq+ft）
2. JNI 提取 body：`jni_notify_cb()` — body = payload + 2（跳过 msgType + cmd）
3. Java：`FrameRouter.onMcuFrame()` → `DomainBus.onFrame()` → `RadioFeature.onFrame()`
4. FREQ body 映射：p[0]=Byte8(FreqH), p[4]=Byte12(valid@bit7), p[6]=Byte14(signal)
5. Debug APK 包名是 `.dev`，Release APK 包名是 `.service`

## 下一步

1. 将 bug_report.md 发给 MCU 固件供应商
2. 等待固件修复后再验证
3. 如固件无问题，可能是协议版本不匹配，需要确认最新协议文档
