03 · 驾驶模式与高性能专题
Driving 模块核心:4 层模式体系 + 高性能车(SU7 Ultra/LeMans-GT)的赛道能力与”准驾”机制。
一、模式层级图
主驾驶模式 (SteeringModePreferenceController, 主Tab)
个性化M1/M2 / ECO / COMFORT / SPORT / SPORT_PLUS / BATTLE(大师)
└─ BATTLE 支持 BATTLE_MODE_FRONT_REAR_TRACTION_TORQUE (四驱扭矩分配, SU7 Ultra)
地形模式 (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(弹射起步) — 仅教程, 物理踏板触发
二、驾驶场景模式(10 种,DriveModeBasePreferenceController)
DriveModeBasePreferenceController.kt(1950 行核心基类)是所有场景模式的引擎。两个子类:
DriveModePreferenceController(文字 Toggle,10 模式,2 列)DriveModeButtonIconPreferenceController(大 ICON,9 模式,去掉 CRAB_ROW)
10 种场景模式(DrivingConstants)
| 模式 | 控制信号 | 写入值 | 场景 |
|---|---|---|---|
| 超级省电 ECO+ | STEERING_MODE | DriveMode.ECO_PLUS | 极限延长续航 |
| 湿滑 WET | STEERING_MODE | DriveMode.WET_MODE | 雨雪低附着 |
| 越野辅助 OFFROAD | STEERING_MODE | DriveMode.OFF_ROAD_MODE | 非铺装路面 |
| 防晕车 | STEERING_MODE | DriveMode.ANT_MTNSICK_MODE | 降低加减速冲击 |
| 陡坡缓降 HDC | HDC_FUNCTION_SWITCH | OnOff.ON | 长下坡自动限速 |
| 直线竞速 DRAG | DRAG_RACING_MODE_SWITCH | ACTIVE | 0-加速直线竞速 |
| 涉水 WADING | WADING_MODE_STATUS | ON_WADING_MODE | 积水路段 |
| 蟹行 CRAB_ROW | CRAB_MODE_STATUS | OnOff.ON | 后轮转向横向挪车 |
| 拖挂 TOW | TOW_MODE_SET_OPEN/CLOSE | CLICK | 拖挂房车 |
| 脱困起步 ESC | ESC | EscOnOff.OFF | 沙地泥地脱困(ESC 关) |
模式互斥
所有模式通过 INHIBIT_REASON 互斥(见《02》第四节)。如 BATTLE 激活时禁止 ECO/WET/OFFROAD/MOTION_SICKNESS;反过来 BATTLE 也禁止直线竞速。
车型三选一 UI(DrivingSettingsFragment 裁剪)
- MS11P(SU7 Ultra):
special_steering_mode_u(大 ICON) - Kunlun/LeMansGT:
special_steering_mode_kunlun(大 ICON) - 其他(MX11 等):
special_steering_mode(文字 Toggle)
三、地形模式(TerrainMode,5 选 1 独立)
TerrainModePreferenceController.kt 继承 BaseVehicleTabPreferenceController(非 DriveModeBase),独立 5 选 1 Tab:
- 信号:
TERRAIN_MODE(写)/TERRAIN_MODE_STATUS(处理中)/TERRAIN_MODE_AVAILABLE(整组可用) - 5 档:Auto(自动)/Snow(雪地)/Mud(泥地)/Sand(沙地)/Wade(涉水)
- 显示:
MiCarSettings.isTerrainModeEnable()(CCP41==0x03)
⚠️ Wade 地形子模式 vs WADING 涉水场景模式是两套独立机制:前者写
TERRAIN_MODE(动力/VDC 调校),后者写WADING_MODE_STATUS(涉水传感器+密封)。
四、赛道模式 BATTLE(大师模式,SU7 Ultra 四驱)
BATTLE 不是 toggle,是主驾驶模式的一个值。SU7 Ultra 四驱支持前后扭矩分配:
- 信号:
BATTLE_MODE_FRONT_REAR_TRACTION_TORQUE_MODE(AUTO/MANUAL/MANUAL_2)+..._RATIO(比例值) _M1/_M2:个性化 1/2 独立存储槽- UI:
TractionRatioModeParamPreferenceController(自动/手动 Tab)+TractionRatioParamPreferenceController(比例 Slider)+TractionRatioManualCompensationParamPreferenceController(补偿 Switch) - 配置字:
MiCarSettings.isMasterSettingsEnable()(CCPRACING_MODE)/isTrackSettingsEnable()(CCPRACING_MODE_INCLUDE_ENDURANCE耐久赛道)
五、直线竞速 DRAG_RACING(最强保护)
3 核心信号:
DRAG_RACING_MODE_SWITCH(ACTIVE/NOT_ACTIVE)DRAG_RACING_MODE_UNAVL_REASON(20 种不可用原因,最多)DRAG_RACE_MODE_LOADING_STATE(LOADING/FINISHED 冷却阶段)+DRAG_RACE_MODE_SETTING_TIMER(倒计时秒)
特殊保护:
- Open Dialog 60 秒倒计时(强制冷却,
CountDownTimer(60999, 1000)),倒计时期间 positive 按钮禁用 - EXAM_FAILED 时弹考试确认:
UNAVAILABLE_EXAM_FAILED→showExamConformDialog()→ 跳 H5 考试 - 账号无效/网络未授权特殊处理(要求 P 挡+登录/CTA 授权)
- 车主模式/安全驾驶模式激活时禁止(SAFE_DRIVING_MODE_ACTIVE)
- 配置字:
CarConfigManager.isDragRacingEnable()(MS11P/SU7 Ultra 强制 true)
六、弹射起步 LAUNCH(仅教程)
设置端只有教程入口,无 toggle——真正弹射靠物理操作(刹车+油门同时踩)。
- 入口:
LaunchModePreferenceController点击直接launchFragment(LaunchModeGuideFragment) - 教程文案:按
isContainSportPlusMode×isMasterSettingsEnable/isTrackSettingsEnable4 选 1 - 配置字:
LAUNCH_MODE_CONFIG(CCP199) - 显示:
!isMS11P() && !isKunLun() && (isDragRacingEnable || isLaunchModeEnable)
七、高性能四重门(核心安全机制)
直线竞速/弹射/赛道的四重保护链:
用户想开直线竞速
│
├─ Tab.isAvailable? → DRAG_RACING_MODE_UNAVL_REASON 检查
│ ├─ 账号未登录 → 提示登录(P挡)
│ ├─ CTA 未授权 → 联网授权 Dialog
│ ├─ EXAM_FAILED → showExamConformDialog → safety://exam H5 考试 ★
│ ├─ SAFE_DRIVING/OwnerMode 激活 → Toast(区分文案)
│ ├─ BATTLE/ECO/WET/OFFROAD/MOTION_SICKNESS 激活 → 互斥 Toast
│ └─ 未静止/充电/低SoC/地理围栏 → Toast
│
├─ Open Dialog 60s 倒计时(强制冷却)
│
└─ 倒计时结束点"我已知晓" → setCarProperty(DRAG_RACING_MODE_SWITCH, ACTIVE)
├─ 车端返回 LOADING → Tab 显示倒计时
└─ FINISHED → Tab 显示"准备就绪"
本质:把高性能车赛道能力用”账号+联网+考试+模式开关”四重门锁起来,对应法规免责与安全诉求。
八、安全考试(SafetyExamReview)
SafetyExamReviewPreferenceController.kt:高性能车型(仅 SU7 Ultra + LeMans-GT)的赛道/直线竞速前置安全考试。
- 显示条件:
isLeMansGT() || isMS11P() - 三层前置:登录 + CTA 网络授权 + P 挡
- 启动外部 H5:
micar.intent.action.SAFETY_EXAM+safety://exam/?is_exam_entrance=false(复习) - 考试入口(首次/补考):
safety://exam/?is_exam_entrance=true(由直线竞速 EXAM_FAILED 触发)
九、车主模式(OwnerMode,高性能总闸)
OwnerModeEntranceController.kt:车主模式 / 驾驶安全保护二选一统一入口(一个 BasicLinkPreference,标题随 SAFE_MODE_DISPLAY_FOR_APP 信号动态切换)。
- 车主模式(OwnerMode):车主通过考试后获得的高信任模式,开启后解锁直线竞速/弹射
- 驾驶安全保护(SafeDrivingMode):默认开启,限制极速/急加,开启时高性能模式禁用
- 两者互斥,由
CarConfigManager.isOwnerModeActive()区分 - 具体 OwnerMode/SafeDrivingMode Open/Close Dialog 在
micarSafetyServiceSettings模块
十、拖挂模式(7 Dialog,最复杂)
TowBar(拖车钩物理执行器)vs TowMode(拖挂动力学)耦合:
- TowBar:电动球头伸缩,信号
ELECTRIC_TOW_BAR_SET_OPEN/CLOSE/STATUS - TowMode:拖挂动力学模式,信号
TOW_MODE_SET_OPEN/CLOSE、TOW_MODE_STATUS_TO_DCD
| Dialog | 触发 |
|---|---|
| TowModeOpen/Close | Tab 点击 |
| TowModeCloseRequest | 拖挂连接中断车端请求关闭(TOW_MODE_CLOSE_REQUEST) |
| TowModeOpenFailed/CloseFailed | 失败检测(TOW_BAR_LAST_COMMAND_FAIL_REASON),CloseFailed Type2 有”仍要关闭”强制按钮 |
| TowBarExtend/Retract | 拖车钩电动伸缩(TowModeWarningPreferenceController 异常告警入口) |
配置字:isSupportTowMode()(CCP228 == FULL_ELECTRIC_TOW_BAR);拖车钩类型 TOW_BAR_TYPE_CONFIG(CCP228)。
十一、湿滑模式云端推荐(WetModeRecommendNotify)
WetModeRecommendNotifyController.kt:主动推荐机制(区别于被动 toggle)。
- 注册 MIS
RECOMMEND_OPEN_WET_MODEActionHandler,接收云端WetSlipperyModePopUpWindowSpec - 按 sceneId 路由:SnowReminder/RainReminder → 灵动岛通知;WetOpen/WetClose → 直接弹 Dialog
- 智能开启动画(WetModeSmartOpenDialog):Ultra/GT 车型若 Custom1/2 都不是湿滑,自动改写 Custom1 为湿滑
十二、其他场景模式要点
| 模式 | 信号 | 不可用原因 |
|---|---|---|
| 涉水 | WADING_MODE_STATUS | 10 bit(非静止/电量/系统故障/车门/智驾/HDC/湿滑/越野/代客/天窗) |
| 蟹行 | CRAB_MODE_STATUS | 6(静止&方向盘/系统故障/智驾/拖车/大师) |
| HDC | HDC_FUNCTION_SWITCH | HdcException.AVAILABLE |
| ESC 脱困 | ESC | 6(ESC故障/赛道/试驾/ADAS/车速) |