04 · 功能差异与对抗验证
一、完整功能清单(25 项,XML 顺序)
外部灯组(pk_settings_quickctrl_light_category,11 项)
| 功能 | Controller | 配置/差异控制 |
|---|
| 外灯模式(OFF/位置灯/近光/AUTO) | ExteriorLightsTabLay | 默认;按 reason 置灰/二次确认 |
| 后雾灯 | FogLightButton | 默认 |
| 大灯延时(15/30/60s) | HeadLightsDelay | 默认 |
| 近光高度(低/中/标准/高) | HeadLightsHeight | isHeadlampHeightEnable |
| A2 位置灯(白天十字灯) | PositionA2LAMP | 外灯=AUTO + isFrontPosLampConfigVariable |
| 自适应远光 | HighBeamAutoAdjust | hiddenFeatures=lemans_ece;isAHBHighBeamConfig 切文案 |
| 转向灯自动取消 | LightAutoCancelTurn | hiddenFeatures=lemans_ece + License |
| 迎宾灯(昆仑 Switch) | KunLunWelcomeLight | DeviceUtil.isKunLun 二选一 |
| 迎宾灯(通用 Tab) | WelcomeLightTab | 非 KunLun 二选一 |
| 迎宾光毯 | WelcomeCarpet(在 micarLockSettings) | getWelcomeCarpetConfig==STATIC |
| 迎宾尾翼随动 | WelcomeWithTailSwing(在 micarLockSettings) | isCfgARSEnabled |
氛围灯组(pk_settings_display_atmosphere_lights_category)
| 功能 | Controller | 配置/差异控制 |
|---|
| 氛围灯总开关(OFF/ON/AUTO) | AtmosphereLightTab | 默认(父信号) |
| 模式(常亮/呼吸/音乐) | AtmosphereMode | dependKey=总开关 |
| 亮度(1-100) | AtmosphereBrightness | 仅常亮模式 |
| 呼吸(慢/快) | LightBreathState | 仅呼吸模式 |
| 律动(保持色/跟随封面) | MusicRhythm | 仅音乐模式 |
| [非26A] 主题(6 圆形)+ 取色板 | DisplayAtmosphereTheme + ColorPick | !isDualLayerAtmosphereLightEnable |
| [26A] 颜色模式 + 单色 + 双色 + 双层取色板 | ColorMode + Single + Double + DoubleColorPick | isDualLayerAtmosphereLightEnable |
| 上下车迎宾联动 | WelcomeLightSwitch | dependKey=总开关 |
| 夜间减弱 | AmbientLightDimmingDown | isContourLightsOffEnabled |
| 照脚灯 | FootLight | !isWattDevice && !isHertzDevice |
更多组(pk_lights_more_category)
| 功能 | Controller | 信号 |
|---|
| 阅读灯(OFF/ON/AUTO) | ReadingLamp | READING_LEAM |
| 按键背光亮度 | KeyBgLightLevel | KEY_BG_LEVEL |
二、getPreferenceKeyResIdsToRemove 八条规则
1. !isHeadlampHeightEnable() → 近光高度
2. !isCfgARSEnabled() → 迎宾尾翼随动
3. !LicenseControlMgr.isLicenseFeatureVisible(LCS_ID_LIGHT_AUTO_CANCEL_TURN)
→ 转向灯自动取消
4. getWelcomeCarpetConfig() != STATIC → 迎宾光毯
5. isKunLun() → 通用迎宾灯 Tab ; else → 昆仑迎宾灯 Switch (二选一)
6. isDualLayerAtmosphereLightEnable() → 非26A组 ; else → 26A组 (二选一)
7. !isContourLightsOffEnabled() → 夜间减弱
8. isWattDevice() || isHertzDevice() → 照脚灯 (反向:Modena 系列反而移除)
三、12 项车型/配置差异汇总
| 功能 | 差异判定 | 来源 |
|---|
| 迎宾灯形态 | DeviceUtil.isKunLun() | KunLun→Switch / 其他→Tab |
| 照脚灯 | isWattDevice() || isHertzDevice() | Modena/Modena-U 移除 |
| 氛围灯主题组 | isDualLayerAtmosphereLightEnable() | 26A(Modena-26A)→双层 / 其他→单层 |
| 夜间减弱 | isContourLightsOffEnabled() | 配置字 |
| 近光高度 | isHeadlampHeightEnable() | CONFIG_HEADLAMP_HEIGHT==MANUAL |
| 迎宾尾翼 | isCfgARSEnabled() | CONFIG_ARS==电动升降 |
| 迎宾光毯 | getWelcomeCarpetConfig()==STATIC | CONFIG_WELCOME_CARPET_LAMP |
| A2 位置灯 | 外灯=AUTO + isFrontPosLampConfigVariable | ccp123 |
| 自适应远光文案 | isAHBHighBeamConfig() | 智能远光配置字 |
| 右栏布局 | isCfgWHudEnable() | W-HUD 配置字 |
| 自适应远光/转向灯(ECE) | hiddenFeatures=lemans_ece + isEce() | ROM_BUILD_REGION==ECE |
| 转向灯(License) | LicenseControlMgr.isLicenseFeatureVisible | 远程 license |
四、CarConfigManager 4 个方法
| 方法 | 配置字 | 控制 |
|---|
isAHBHighBeamConfig() | IntelligentHighBeamConfig.AUTO_HIGH_BEAM | 远光文案切换 |
isDualLayerAtmosphereLightEnable() | ZONE_2_UPPER_LOWER_TUNING | 26A 双层氛围灯 |
isContourLightsOffEnabled() | CONTOUR_LIGHTS_OFF | 夜间减弱 |
isFrontPosLampConfigVariable() | VARIABLE_LIGHT_INTENSITY | A2 位置灯显隐 |
五、hiddenFeatures 机制(仅 2 处)
XML 中 settings:hiddenFeatures="@string/micar_common_settings_lemans_ece"(字面量=“lemans_ece”):
- 自适应远光灯(
pk_settings_high_beam_auto_adjust_entry)
- 转向灯自动关闭(
pk_settings_light_auto_turn_entry)
机制(HiddenFeaturesKeyListHelper):isHidden = "lemans_ece".equals(hiddenFeatures) && MiCarSettings.isEce()。isEce() 判 SystemProperties.get("rom.build.region")==ECE_REGION。
⚠️ AmbientLightDimmingDown 没有 hiddenFeatures 标记(线索有误),它靠 isContourLightsOffEnabled 裁剪。
六、3 套不可用原因机制
① A2 位置灯(A2_POSITION_LAMP_NOT_AVAILABLE_REASON)
禁用点击 → EXTREME_ECONOMY_NOT_AVAILABLE → Toast「车辆处于超级省电模式」。
② 转向灯(LIGHT_AUTO_CANCEL_TURN_UNAVL_RSN)
| Reason | Toast |
|---|
| DEFAULT | 系统启动中,请稍后再试 |
| PRIVACY_MODE | 请先关闭一键隐私模式 |
| LOW_POWER_MODE | 辅助驾驶休眠中 |
| ERROR_DETECTED | 功能故障,联系服务中心 |
③ 外部灯功能组(EXTERIOR_LIGHT_FUNCTION_SET_NOT_AVAILABLE_REASON,CAN 0x6140211b,最复杂)
| Reason | OFF Tab | 位置灯 Tab | 点击行为 |
|---|
| AVAILABLE(0) | 可用 | 可用 | 直接切换 |
| OFF_POPUP_NOT_IN_PARK_DAY…(4) | 二次确认 | 二次确认 | 弹 AlertDialog |
| OFF_NOT_AVAILABLE_NOT_IN_PARK_NIGHT…(1) | 置灰 | 二次确认 | OFF→Toast 行驶中;位置灯→Dialog |
| _ADAS_LEVEL2(2) | 置灰 | 置灰 | 辅助驾驶无法操作 |
| _ADAS_LEVEL3(3) | 置灰 | 置灰 | 同上 |
近光/AUTO Tab 不受影响。Dialog 是内联 AlertDialog.MiCarBuilder(非 FrontHoodCloseRemind),取消时 refreshTabSelectedStatus 回滚 Tab 选中态。
七、对抗验证记录(Light 模块发现)
| # | 常见误解 / 偏差 | 源码真相 |
|---|
| ① | 车型差异靠 sourceSet 分目录 | ✅ Light 无 dcddif/xcddif/global 目录,BuildConfig.FLAVOR 0 次使用,差异完全靠运行时配置字(同 VehicleBody) |
| ② | 26A 是随机代号 | ✅ 26A = Modena-26A 双层氛围灯车型(DEVICE_KEPLER,isDualLayerAtmosphereLightEnable) |
| ③ | 音乐律动 app 监听音频 | ✅ app 无 AudioManager/MediaController,车端做音频分析上报 MUSIC_RHYTHM_STATE+ATMOSPHERE_COLOR_IN_RHYTHM(专辑色),app 仅消费 |
| ④ | 灯光状态用实际灯泡信号 | ✅ 右栏用仪表 Warning 域信号(单泡故障不影响设置项展示) |
| ⑤ | 「迎宾灯」是一个功能 | ✅ 三态歧义:WELCOME_LIGHT(外灯,Tab/昆仑Switch) + WELCOME_LIGHT_SWITCH(氛围灯迎宾联动) |
| ⑥ | AmbientLightDimmingDown 有 lemans_ece 标记 | ❌ hiddenFeatures 只在自适应远光+转向灯 2 处;DimmingDown 靠 isContourLightsOffEnabled |
| ⑦ | READING_LEAM 正确 | ❌ 拼写错误(LAMP);BEAM_AUTOADJUST 命名误导(值=氛围灯模式,未用) |
| ⑧ | 车型代号不可知 | ✅ 破译:KunLun=昆仑/Watt=Modena/Hertz=Modena-U/Kepler=Modena-26A/Faraday=Modena-27B/Suiren=Lemans |
| ⑨ | FrontHoodCloseRemind 在 Light | ❌ 它在 VehicleBodyControl 模块;Light 的外灯弹窗是内联 AlertDialog |
八、可信度
| 结论 | 可信度 |
|---|
| 45 个 LightCtrl 信号、Controller→信号映射、枚举值 | 🟢 信号梳理 Agent + 源码核对 |
| 25 功能、XML 结构、16 Controller | 🟢 代码结构 Agent + 功能差异 Agent 互证 |
| 12 车型差异、8 条裁剪规则、3 套不可用原因 | 🟢 功能差异 Agent + 源码 grep |
| 车型代号映射(Kepler=Modena-26A 等) | 🟢 DeviceUtil.java 源码 |
| 氛围灯双拼色同步、256 色色盘、律动真相 | 🟢 氛围灯 Agent + 源码核对 |
Light 模块 4 个 Agent 全部成功,结论高度互证,可信度整体 🟢。