02 · 车门信号与属性定义

propId 定义:base/settingsBaseLib/.../MiCarPropertyIds.java(内部类 Door/Window/LockCtrl/Gate) 枚举值:外部 aar mi.car.config.Door(本仓库无源码,以运行时日志为准)

1. 核心 propId 速查表

信号名(App 枚举)propIdarea 类型类型含义关联 JIRA
Door.STATE0x66403101DOOR(6 区域)int车门/盖开闭状态(1=OPEN, 0=CLOSE)1839
Door.DOOR_NOT_CLOSED_LOCK_FAILED0x61403156GLOBALint32离车锁车失败提醒(1=LOCK_FAIL, 2=CANCEL)只读1838/1839
Door.POWER_OPERATED_DOOR_MOVING_STATUSDOORint 枚举电动门运动状态(6 态)
Door.POWER_OPERATED_DOOR_BUTTON_STATUSDOORint 枚举电动门按键命令(ON/OFF/STOP,下行)
Door.POWER_OPERATED_DOOR_DISABLE_REASONDOORint 枚举电动门不可用原因(高速/防玩/温度)
Door.CENTER_LOCKint中央锁状态
Door.CHILD_LOCK_STATEDOORint童锁状态
Door.ELECTRIC_TAIL_GATEint电动尾门状态
Door.CHARGE_PORT_STATEint充电口盖状态
Door.FRUNK_MAX_OPEN_HEIGHTint前备箱最大开启高度
Door.FUEL_LID_STATUSint加油口盖状态
Door.DOOR_CINCH_ENABLE_STATUSint车门自动吸合使能
Door.APPROACHING_UNLOCKint靠近自动解锁开关
Door.LEAVING_AUTO_LOCKint离车自动锁车开关
Window.LOCK_AUTO_CLOSEint锁车自动关窗
AutoPilot.DOWBODY(REAR)int 枚举开门预警(OFF/WARNING/DELAY_OPEN)

完整定义见 MiCarPropertyIds.javaDoor / DoorCtrl / WindowCtrl / LockCtrl 内部类。

2. Door.STATE(0x66403101)详解——JIRA 1839 核心

这是车门可视化展示最关键的信号。areaType = DOOR,6 个区域各自独立上报。

2.1 area 位掩码(VehicleAreaDoor,AOSP 标准)

区域位掩码AOSP 常量俗称
左前0x1DOOR_ROW_1_LEFT主驾
右前0x4DOOR_ROW_1_RIGHT副驾
左后0x10DOOR_ROW_2_LEFT左后
右后0x40DOOR_ROW_2_RIGHT右后
引擎盖0x10000000DOOD_HOOD前备箱盖
尾门0x20000000DOOR_REAR后备箱

⚠️ 位掩码易读反:JIRA 1839 评论里韩国良把 a=64(0x40) 标成「左后」,实际 AOSP 标准 0x40 = ROW_2_RIGHT = 右后。代码层 DoorUnLockActivity== 精确匹配 area,未犯此错。

2.2 value 枚举(Door.DoorState)

枚举含义
0CLOSE关闭
1OPEN打开

AOSP 标准:1 = OPEN,未反转。DoorUnLockActivity:110 判断 value == DoorState.OPEN → *_model_unlock(开态图标),== CLOSE → *_model(关态)。

3. Door.DOOR_NOT_CLOSED_LOCK_FAILED(0x61403156)详解——JIRA 1838 核心

离车锁车失败提醒,只读(access=READ,App 物理上不能写),changeMode=ON_CHANGE。

3.1 value 枚举(Door.DoorNotClosedLockFailed)

枚举含义App 反应
0IDLE空闲复位(不 finish)
1LOCK_FAIL锁车失败(活体检测到未关门)拉起 DoorUnLockActivity 弹窗
2CANCEL取消DoorUnLockActivity 自杀(finish()

3.2 CAN 总线对应(5 层命名)

名字
CAN 总线function 0xfd9f / cmd 33667
信号矩阵(车端)LockFltRemdForAlive
VHAL vendor 属性0x61403156(VENDOR | GLOBAL | INT32)
SceneService 处理类com.micar.scene.lock.UnlockDoorTrigger(aar,无源码)
App 枚举Door.DOOR_NOT_CLOSED_LOCK_FAILED

4. 电动门 6 态枚举(Door.PowerOperatedDoorMovingStatus)

枚举含义
CLOSED关闭
OPENING开启中
CLOSING关闭中
FULL_OPEN完全开启
STOP_NEXT_OPEN停止,下次操作=开
STOP_NEXT_CLOSE停止,下次操作=关

具体数值在外部 aar,以运行时日志为准。

5. 电动门不可用原因(Door.PowerOperatedDoorDisableReason)

枚举含义UI 提示
HIGH_SPEED车速过高「车速过高,请停车后操作」
ANTI_PLAY防玩功能防玩提示
THERMAL温度保护温度过高提示

6. 加油口盖不可用原因(Door.FuelLidUnavlReason)

枚举含义
CRASH_EVNT碰撞事件
PWR_FLT电源故障
VCU_GEAR_FLTP 档故障
WASH_MOD洗车模式

7. propId 注册集合(Controller 批量订阅用)

Controller 不一个个写 propId,而是从 Map 类取集合:

// DoorVehiclePropertysMap.java
sVehicleDoorPropertyIds = {
    Door.POWER_OPERATED_DOOR_MOVING_STATUS,
    Door.POWER_OPERATED_DOOR_BUTTON_STATUS,
    Door.POWER_OPERATED_DOOR_DISABLE_REASON,
    ...
}
 
// LockVehiclePropertysMap.java
sVehicleChildLockPropertyIds = {
    WindowCtrl.REAR_LOCK_STATUS,   // 车窗锁
    LockCtrl.CHILDREN_LOCK          // 童锁
}

Controller 通过 getPropertyIdSet() 返回这些集合,基类在 onPropertyManagerPreparedregisterPropertyCallback(ids) 批量订阅。

8. 如何在代码里定位某个车门信号

# 1. 找 propId 定义
grep -rn "POWER_OPERATED_DOOR_MOVING_STATUS" base/settingsBaseLib/
 
# 2. 找谁在用这个信号
grep -rn "POWER_OPERATED_DOOR_MOVING_STATUS" --include="*.java" --include="*.kt" .
 
# 3. 找 Controller 注册了哪些门信号
cat settingsPage/micarLockSettings/.../DoorVehiclePropertysMap.java

下一篇:03-门开关业务流程图.md