VehicleBody 车辆控制模块 · 知识库
本知识库由 5 个 Explore Agent 并行调研 + 源码对抗验证产出(2026-07-12)。 其中「信号梳理」「功能差异」「信号流动特有机制」因 Agent 限流失败,由作者直接读源码补全(确定性数据,更可靠)。 对抗验证发现的偏差见《04-功能清单与车型差异》末尾。
模块定位
VehicleBody(车辆控制)是首页默认选中的首屏(VehicleControlSettingsFragment,pageAlias = PAGE_QUICK_CONTROL)。它是「车控功能聚合页」——把用户高频操作的车身硬件(后视镜、方向盘、座椅侧翼、雨刮、手套箱、电动踏板、无线充电、PUI 热键自定义等)集中在一页。
关键认知(对抗验证纠正的常见误解):
- ❌ 以为「快控」是首页快捷卡片专用组件 → ✅ 实际
VehicleQuickCtrl是所有车控信号绑定的 Preference 的通用数据载体(10 个模块共用)。 - ❌ 以为「车辆控制」只用自己的
BodyCtrl信号域 → ✅ 实际它是跨域聚合页,引用了 DrivingCtrl / LockCtrl / EnergyManagement / Service / SeatAdjustControl / MirrorControl / Steering / BodyCtrl 8 个域的信号。 - ❌ 以为车型差异靠 sourceSet 分目录 → ✅ 本模块没有 dcddif/xcddif/global 目录,差异完全靠运行时配置字(CarConfigManager + MiCarSettings.isXxx)。
子系统速览(12 个)
| 子系统 | 功能 | 主要信号域 |
|---|---|---|
| mirror 后视镜 | 折叠/调节/锁车折叠/倒车下翻/防眩目/加热 | MirrorControl, LockCtrl |
| steeringwheel 方向盘 | 方向盘调节、PUI 热键自定义(标准/左键/右键) | Steering, DrivingCtrl |
| consolekey 中控键 | 中控键 3/4 自定义(HyperTask) | mis-device SDK(非 CarProperty) |
| wiper 雨刮 | 雨刮调节、自动灵敏度、前挡深度清洁 | Service |
| seat 座椅 | 主驾侧翼支撑、侧翼随安全带 | SeatAdjustControl |
| pedal 电动踏板 | 单次开启、自动模式 | DrivingCtrl |
| glovebox 手套箱 | 开关 + 密码 + MIS 远程开箱 | DrivingCtrl(GLOVE_BOX) + compartment SDK |
| pui 方控热键 | 滚轮自定义(kunlun 左/右键) | mis-device SDK |
| hood 前机盖 | 未关闭提醒(信号驱动弹窗) | DrivingCtrl |
| childseat 童锁座椅 | 安装位置设置 + IoT 设备识别 | SeatAdjustControl + IoT |
| NFC/无线充电 | 卡片钥匙检测、主副驾无线充电 | BodyCtrl, EnergyManagement |
| EasyEntry 便利进出 | 开关 + 离车位置设置 | DrivingCtrl |
文档导航
| 文档 | 内容 |
|---|---|
| 01-代码结构与子系统 | 入口 Fragment、12 子系统构成、36 项 XML 全表、Controller 继承体系 |
| 02-信号梳理 | 8 个域的信号清单、跨域映射、值定义、areaId、Controller→信号对照 |
| 03-信号流动 | 标准读写回流链路 + VehicleBody 特有机制(调节心跳、互斥窗口、手套箱密码、MIS) |
| 04-功能清单与车型差异 | 36 个功能点、配置字门控规则、车型代号、对抗验证记录 |
关键文件索引
| 类型 | 路径 |
|---|---|
| 入口 Fragment | settingsPage/VehicleBodyControl/.../vehicle/VehicleControlSettingsFragment.java |
| 右栏 | .../vehicle/VehicleControlRightFragment.kt(仅 15 行,静态车模图) |
| 主 XML | .../res/xml/miauto_vehicle_body_ctrl_settings_fragment.xml(36 项) |
| 快控工厂 | .../vehicle/VehicleBodyPropertyMap.kt |
| 调节心跳 | .../miauto/VehicleAdjustHeartBeat.kt |
| 手套箱 MIS | .../vehicle/glovebox/GloveBoxNavigationHandler.kt + GloveBoxModulePublishService.kt |
| 童锁 | .../vehicle/childseat/ChildSeatEntryController.kt |
| 信号 ID 定义 | base/settingsBaseLib/.../vehicle/MiCarPropertyIds.java |
| 快控数据模型 | base/settingsVehicleLib/.../VehicleQuickCtrl.kt + VehicleAreaQuickCtrl.kt |
| Controller 基类 | base/settingsVehicleLib/.../vehicle/BaseVehicle*Controller |