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.kt1950 行核心基类)是所有场景模式的引擎。两个子类:

  • DriveModePreferenceController(文字 Toggle,10 模式,2 列)
  • DriveModeButtonIconPreferenceController(大 ICON,9 模式,去掉 CRAB_ROW)

10 种场景模式(DrivingConstants)

模式控制信号写入值场景
超级省电 ECO+STEERING_MODEDriveMode.ECO_PLUS极限延长续航
湿滑 WETSTEERING_MODEDriveMode.WET_MODE雨雪低附着
越野辅助 OFFROADSTEERING_MODEDriveMode.OFF_ROAD_MODE非铺装路面
防晕车STEERING_MODEDriveMode.ANT_MTNSICK_MODE降低加减速冲击
陡坡缓降 HDCHDC_FUNCTION_SWITCHOnOff.ON长下坡自动限速
直线竞速 DRAGDRAG_RACING_MODE_SWITCHACTIVE0-加速直线竞速
涉水 WADINGWADING_MODE_STATUSON_WADING_MODE积水路段
蟹行 CRAB_ROWCRAB_MODE_STATUSOnOff.ON后轮转向横向挪车
拖挂 TOWTOW_MODE_SET_OPEN/CLOSECLICK拖挂房车
脱困起步 ESCESCEscOnOff.OFF沙地泥地脱困(ESC 关)

模式互斥

所有模式通过 INHIBIT_REASON 互斥(见《02》第四节)。如 BATTLE 激活时禁止 ECO/WET/OFFROAD/MOTION_SICKNESS;反过来 BATTLE 也禁止直线竞速。

车型三选一 UI(DrivingSettingsFragment 裁剪)

  • MS11P(SU7 Ultra)special_steering_mode_u(大 ICON)
  • Kunlun/LeMansGTspecial_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()(CCP RACING_MODE)/ isTrackSettingsEnable()(CCP RACING_MODE_INCLUDE_ENDURANCE 耐久赛道)

五、直线竞速 DRAG_RACING(最强保护)

3 核心信号:

  • DRAG_RACING_MODE_SWITCH(ACTIVE/NOT_ACTIVE)
  • DRAG_RACING_MODE_UNAVL_REASON20 种不可用原因,最多)
  • DRAG_RACE_MODE_LOADING_STATE(LOADING/FINISHED 冷却阶段)+ DRAG_RACE_MODE_SETTING_TIMER(倒计时秒)

特殊保护

  1. Open Dialog 60 秒倒计时(强制冷却,CountDownTimer(60999, 1000)),倒计时期间 positive 按钮禁用
  2. EXAM_FAILED 时弹考试确认UNAVAILABLE_EXAM_FAILEDshowExamConformDialog() → 跳 H5 考试
  3. 账号无效/网络未授权特殊处理(要求 P 挡+登录/CTA 授权)
  4. 车主模式/安全驾驶模式激活时禁止(SAFE_DRIVING_MODE_ACTIVE)
  5. 配置字CarConfigManager.isDragRacingEnable()MS11P/SU7 Ultra 强制 true

六、弹射起步 LAUNCH(仅教程)

设置端只有教程入口,无 toggle——真正弹射靠物理操作(刹车+油门同时踩)。

  • 入口:LaunchModePreferenceController 点击直接 launchFragment(LaunchModeGuideFragment)
  • 教程文案:按 isContainSportPlusMode × isMasterSettingsEnable/isTrackSettingsEnable 4 选 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/CLOSETOW_MODE_STATUS_TO_DCD
Dialog触发
TowModeOpen/CloseTab 点击
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_MODE ActionHandler,接收云端 WetSlipperyModePopUpWindow Spec
  • 按 sceneId 路由:SnowReminder/RainReminder → 灵动岛通知;WetOpen/WetClose → 直接弹 Dialog
  • 智能开启动画(WetModeSmartOpenDialog):Ultra/GT 车型若 Custom1/2 都不是湿滑,自动改写 Custom1 为湿滑

十二、其他场景模式要点

模式信号不可用原因
涉水WADING_MODE_STATUS10 bit(非静止/电量/系统故障/车门/智驾/HDC/湿滑/越野/代客/天窗)
蟹行CRAB_MODE_STATUS6(静止&方向盘/系统故障/智驾/拖车/大师)
HDCHDC_FUNCTION_SWITCHHdcException.AVAILABLE
ESC 脱困ESC6(ESC故障/赛道/试驾/ADAS/车速)