Driving 驾驶模块 · 知识库
本知识库由 5 个 Explore Agent 并行调研 + 源码对抗验证产出(2026-07-12)。Driving 是 5 个车控模块中最大最复杂的(高性能车驾驶动态深度自定义,对标保时捷/法拉利 Individual)。因驾驶模式+自定义模式两大专题,共 6 篇。
模块定位
Driving 模块(settingsPage/micarDrivingSettings)是「驾驶」设置页,入口 DrivingSettingsFragment。这是高性能车(SU7 Ultra / LeMans-GT)的驾驶动态深度自定义核心,覆盖驾驶模式/场景模式/地形模式/赛道模式/完全自定义/悬架/能量/DMS/AVM。
车型代号完整破译(跨模块价值,来自 DeviceUtil + MiCarSettings)
| 项目代号 | DeviceUtil | VehicleNameConfig | 市场名 | Driving 特性 |
|---|---|---|---|---|
| Modena | isWattDevice() | MS11/12/13 | SU7 | 基础 |
| Modena-U | isHertzDevice()/isHenryDevice(海外) | MS11_P | SU7 Ultra | Battle 赛道 + 安全考试 + 直线竞速强制 + 车内外声浪 |
| LeMans-GT | isMachDevice() | — | Lemans-9 顶级性能版 | Battle 赛道 + 安全考试 + 声浪风格屏蔽 |
| Modena-26A | isKeplerDevice() | MS12 | 26A | 双风格声浪 |
| Modena-27B | isFaradayDevice() | MS13 | 27B | — |
| Lemans-Base | isLemans() | MX11 | MX11/SU8 | Lemans 转向辅助 |
| KunLun | isKunLun() | KUNLUN_00/10/20/30 | 昆仑 SUV | 转向手感大类 + 后视影像 + AVM子页;四驱也不显示扭矩分配 |
| Lux/Mann | — | MODENA_L / MM21 | Lux/Mann | 定制能量回收 + 制动踏板感 + 阻尼经济挡 |
MiCarSettings.isLeMansGT()==DeviceUtil.isMachDevice();isBattleSettingsValid()=isMachDevice || isHertzDevice(仅 SU7 Ultra + LeMans-GT)。
关键认知(对抗验证纠正,最重要)
| 常见误解 | 源码真相 |
|---|---|
STEERING_MODE 是转向模式 | ❌ = Driving.DRIVE_MODE 驾驶模式总开关(90 次引用,命名陷阱) |
BRAKING_MODE 是制动模式 | ❌ = Energy.REGENERATION_MODE 能量回收(命名陷阱) |
| Driving 用 VehicleStageUtils/E4U3 阶段判断 | ❌ 0 处使用(与 Lock 不同!差异全靠运行时配置字) |
| Driving 用 LicenseControlMgr | ❌ 用 MiCarLcsControlHelper+LicenseMaster;且高性能功能完全不受 License(仅 DMS+泊车预警受 License) |
| Driving 有 dcddif/xcddif/global 差异代码 | ❌ 三目录全空,BuildConfig.FLAVOR 0 处使用 |
| SpecialSteeringMode 是核心 Controller | ❌ SpecialSteeringModePreferenceController.java/..U.. 是 0 字节空文件!真正生效是 DriveModePreferenceController/DriveModeButtonIconPreferenceController |
| BATTLE 是 toggle | ❌ BATTLE 是主驾驶模式的一个值(非 toggle),SU7 Ultra 四驱支持前后扭矩分配 |
| LAUNCH 弹射有软件开关 | ❌ 仅教程入口(物理踏板触发,设置无 toggle) |
| Wade(地形) = WADING(涉水场景) | ❌ 两套独立机制(前者地形 5 选 1,后者场景 toggle) |
| MotionWave 是防晕车 | ❌ 是模拟引擎声浪(电动车模拟 V8 声效),走 AudioSettings 接口非 CarProperty;防晕车是 ANT_MTNSICK_MODE |
| 四驱就能自定义扭矩分配 | ❌ isTransmissionDrivelineAllWheel && !isKunLun(昆仑即使四驱也隐藏) |
模式层级心智模型
主驾驶模式 (SteeringModePreferenceController, 主Tab)
个性化M1/M2 / ECO / COMFORT / SPORT / SPORT_PLUS / BATTLE(大师)
└─ BATTLE 支持 BATTLE_MODE_FRONT_REAR_TRACTION_TORQUE (四驱扭矩分配)
地形模式 (TerrainModePreferenceController, 5选1独立Tab)
Auto / Snow / Mud / Sand / Wade
驾驶场景模式 (DriveModeBasePreferenceController, 10个toggle, 1950行核心基类)
ECO(超级省电) / WET(湿滑) / OFFROAD(越野) / MOTION_SICKNESS(防晕车) /
HDC(陡坡缓降) / DRAG_RACING(直线竞速) / WADING(涉水) /
CRAB_ROW(蟹行) / TOW(拖挂) / ESC(脱困起步)
高性能教程 (二级页)
LAUNCH(弹射起步) — 仅教程,物理踏板触发
高性能四重门(SU7 Ultra / LeMans-GT)
直线竞速/弹射/赛道模式受四重保护:①账号登录 ②CTA 联网授权 ③安全考试(safety://exam H5)④车主模式/驾驶安全保护开关。考试通过→解锁车主模式→关闭驾驶安全保护→才能用高性能模式。
文档导航
| 文档 | 内容 |
|---|---|
| 01-代码结构与子系统 | 入口 Fragment、11 Category XML、80+ Controller、三大包分工 |
| 02-信号梳理 | DrivingCtrl 363 常量(最大域)、25 子域、不可用原因矩阵 |
| 03-驾驶模式与高性能专题 | 10 场景模式 + 地形 + 赛道 BATTLE/DRAG/LAUNCH + 四重门 + 拖挂 |
| 04-自定义驾驶模式专题 | 18 维度 + M1/M2 双信号 + 预设分享 + 对比表 |
| 05-功能差异与对抗验证 | 车型功能矩阵、17 CarConfigManager、License、ECE、对抗记录 |
关键文件索引
| 类型 | 路径 |
|---|---|
| 入口 Fragment | micarDrivingSettings/.../miauto/driving/DrivingSettingsFragment.java |
| 自定义页 | .../micar/settings/driving/custom/CustomSteeringModeFragment.java |
| 场景模式基类 | .../micar/settings/driving/DriveModeBasePreferenceController.kt(1950 行核心) |
| 模式常量 | .../micar/settings/common/DrivingConstants.java |
| 自定义数据模型 | .../custom/SteeringModeData.java + SteeringModeViewModel.kt |
| 信号域 | base/settingsBaseLib/.../MiCarPropertyIds.java(DrivingCtrl 907-1499 行 363 常量 + BattleCtrl 1504-1556) |