# Changelog

> 本文件记录项目重大版本变更。v1.0.0 之后的每次 beta 迭代详见 `release/v1.0.0-betaX/RELEASE_INFO.txt` 和 `git log`。

## 后续 beta 迭代（v1.0.0 之后）

### v1.0.0-beta12 — 2026-07-02

- **测试程序统一**：将 `mcu_full_test/`、`mcu_test_toolkit/`、`test_Serial/` 中的多个历史 C 测试程序，统一为一份基于 beta12 Service native 协议栈的独立测试程序 `test_Serial/qsjnic_test`。
- **协议一致性**：`test_Serial/qsjnic_test` 的 `mcu_protocol.c` / `mcu_transport.c` / `mcu_upgrade.c` 与 `service/src/main/cpp/` 保持逻辑一致。
- **目录清理**：删除过时的 `mcu/`、`mcu_full_test/`、`mcu_test_toolkit/`，以及 `test_Update/` 中的旧 Android 测试 app、临时脚本和预编译二进制。
- **OTA Demo URL**：默认固件下载地址更新为 `http://wtb.anzhitek.com/ota/0018/mcu_app.bin`。
- **文档更新**：重写根目录 `README.md` 和 `test_Update/README.md`，移除过时的 `test_serial.c` / `step_test.md` / `fail_reason.md` 等误导性文件。

### v1.0.0-beta9 ~ beta11

- **协议状态机修正**：对齐 MCU 协议文档，将 `MCU_ACK_RETRY_COUNT` 调整为 2，修复 DATA 帧最终超时后 `send_seq` 推进、心跳帧序列号与回应类型、Transfer 帧发送后无条件推进 `send_seq` 等问题。
- **Service 稳定性**：`FrameRouter` worker 改为可重启，修复 Service 重启后 MCU 帧被丢弃的问题；`QsMcuSystemService` 单例初始化顺序优化。
- **按键去抖**：增加 KeyFeature 去抖兼容层，移除 Input 注入实现。
- **NFC 支持**：新增 `McuNfcClient`、`NfcFeature`、`NfcBroadcastHelper` 及 NFC demo。
- **OTA 完善**：升级期间暂停重复探测、修复空 `projectId`、增强 OTA demo UI。
- **SDK 权限**：`sdk.aar` 增加 `INTERACT_ACROSS_USERS_FULL` 等系统权限配置。

## v1.0.0 — 2026-05-16

### 架构升级
- **cpp 协议栈重构**: 基于 `mcu_structured_test.c` 重写，OTA 经实测验证 (commit 90449d4)
- **新增 `:domain` 模块**: 纯 Java 命令编码器 (Commands) + 帧解码器 (Decoders) + DTOs，≥74 单元测试
- **AIDL v2**: 新增 `sendCommand` / `postCommand` 通用通道 + `IMcuFrameListener` 统一回调
- **Service 重构**: `DomainBus` + `VehicleFeature` / `RadioFeature` / `UpgradeFeature` 替代旧 Manager

### Release 工程化
- 生产签名 `qsjnic_release.jks` + `signature|privileged` 权限隔离
- composite-build 把 demos 纳入主仓库 CI
- `release-template/` 集成说明 + API 参考

## v0.1.0 — 2026-05-05

首次工程化打包,完成 16 步实施计划的 15 步。

### 新增

- **`:contract` 模块**:4 个 AIDL 接口(IMcuService / IMcuVehicleListener / IMcuRadioListener / IMcuUpgradeListener)+ 6 个 Parcelable
- **`:service` 模块**:`QsMcuSystemService` Privileged App,内含 `libmcujni.so`(C 协议引擎,复用自 `test_Serial/`)
  - 三个域 Manager(VehicleManager / RadioManager / UpgradeManager),`RemoteCallbackList` 自动清理死亡客户端
  - 24 个 AIDL 方法(2 元 + 8 vehicle + 9 radio + 5 upgrade)
  - `dumpsys mcu_service` 输出链路状态、延迟统计 P50/P95/P99、各域 listener 数
  - 延迟统计 ring buffer(128 样本)
- **`:sdk` 模块**:`McuClient` 单例 + 三个域 Facade(VehicleClient / RadioClient / UpgradeClient)
  - `bindService` 自动重连(`linkToDeath`)
  - 重连后 Listener 自动 re-register(`addReadyListener` 钩子)
- **三个独立 AS 工程 demo**:`vehicle-demo` / `radio-demo` / `ota-demo`,各自内嵌 aar,源码交付
- **打包任务**:`./gradlew packRelease` 一键产出 `release/` 全部交付物

### 验收测试结果

12 用例 / 8 PASS / 0 FAIL / 1 NA / 3 PASS\*(机制 OK,样本受 MCU 状态限制),详见 `doc/验收测试报告模板.md`。

- 端到端延迟 P95 = 7.8 ms,Max = 16.9 ms(目标 ≤ 50 ms)
- 多进程隔离、重连自愈、权限控制全 PASS
