02 · 车门信号与属性定义
propId 定义:
base/settingsBaseLib/.../MiCarPropertyIds.java(内部类 Door/Window/LockCtrl/Gate) 枚举值:外部 aarmi.car.config.Door(本仓库无源码,以运行时日志为准)
1. 核心 propId 速查表
| 信号名(App 枚举) | propId | area 类型 | 类型 | 含义 | 关联 JIRA |
|---|---|---|---|---|---|
Door.STATE | 0x66403101 | DOOR(6 区域) | int | 车门/盖开闭状态(1=OPEN, 0=CLOSE) | 1839 |
Door.DOOR_NOT_CLOSED_LOCK_FAILED | 0x61403156 | GLOBAL | int32 | 离车锁车失败提醒(1=LOCK_FAIL, 2=CANCEL)只读 | 1838/1839 |
Door.POWER_OPERATED_DOOR_MOVING_STATUS | — | DOOR | int 枚举 | 电动门运动状态(6 态) | — |
Door.POWER_OPERATED_DOOR_BUTTON_STATUS | — | DOOR | int 枚举 | 电动门按键命令(ON/OFF/STOP,下行) | — |
Door.POWER_OPERATED_DOOR_DISABLE_REASON | — | DOOR | int 枚举 | 电动门不可用原因(高速/防玩/温度) | — |
Door.CENTER_LOCK | — | — | int | 中央锁状态 | — |
Door.CHILD_LOCK_STATE | — | DOOR | int | 童锁状态 | — |
Door.ELECTRIC_TAIL_GATE | — | — | int | 电动尾门状态 | — |
Door.CHARGE_PORT_STATE | — | — | int | 充电口盖状态 | — |
Door.FRUNK_MAX_OPEN_HEIGHT | — | — | int | 前备箱最大开启高度 | — |
Door.FUEL_LID_STATUS | — | — | int | 加油口盖状态 | — |
Door.DOOR_CINCH_ENABLE_STATUS | — | — | int | 车门自动吸合使能 | — |
Door.APPROACHING_UNLOCK | — | — | int | 靠近自动解锁开关 | — |
Door.LEAVING_AUTO_LOCK | — | — | int | 离车自动锁车开关 | — |
Window.LOCK_AUTO_CLOSE | — | — | int | 锁车自动关窗 | — |
AutoPilot.DOW | — | BODY(REAR) | int 枚举 | 开门预警(OFF/WARNING/DELAY_OPEN) | — |
完整定义见
MiCarPropertyIds.java的Door/DoorCtrl/WindowCtrl/LockCtrl内部类。
2. Door.STATE(0x66403101)详解——JIRA 1839 核心
这是车门可视化展示最关键的信号。areaType = DOOR,6 个区域各自独立上报。
2.1 area 位掩码(VehicleAreaDoor,AOSP 标准)
| 区域 | 位掩码 | AOSP 常量 | 俗称 |
|---|---|---|---|
| 左前 | 0x1 | DOOR_ROW_1_LEFT | 主驾 |
| 右前 | 0x4 | DOOR_ROW_1_RIGHT | 副驾 |
| 左后 | 0x10 | DOOR_ROW_2_LEFT | 左后 |
| 右后 | 0x40 | DOOR_ROW_2_RIGHT | 右后 |
| 引擎盖 | 0x10000000 | DOOD_HOOD | 前备箱盖 |
| 尾门 | 0x20000000 | DOOR_REAR | 后备箱 |
⚠️ 位掩码易读反:JIRA 1839 评论里韩国良把
a=64(0x40)标成「左后」,实际 AOSP 标准0x40 = ROW_2_RIGHT = 右后。代码层DoorUnLockActivity用==精确匹配 area,未犯此错。
2.2 value 枚举(Door.DoorState)
| 值 | 枚举 | 含义 |
|---|---|---|
| 0 | CLOSE | 关闭 |
| 1 | OPEN | 打开 |
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 反应 |
|---|---|---|---|
| 0 | IDLE | 空闲 | 复位(不 finish) |
| 1 | LOCK_FAIL | 锁车失败(活体检测到未关门) | 拉起 DoorUnLockActivity 弹窗 |
| 2 | CANCEL | 取消 | 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_FLT | P 档故障 |
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() 返回这些集合,基类在 onPropertyManagerPrepared 时 registerPropertyCallback(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