车控SOA信号流程查看说明

主要说明如何通过:

  1. SC 文档:车控系统需求 系统需求7- 语音控制方向盘加热和雨刮
  2. SOA 信号定义 SOA 服务接口定义表格 MS11(E2/E3 备份 | 弃用)
  3. 关于异常值的 TTS 回复以产品定义的表格为准 语音控制类功能&配置清单

查找到汽车小爱 APP(其他 APP 通用)中如何使用系统中间件(mi.car:vehicle.support)提供的信号 API。

一个车控设备通常涉及三个信号

  • 1 车控设备状态信号 propId
  • 2 车控设备使能信号 propId,与车控状态信号 propId 一致
  • 3 车控设备异常信号 propId

以”打开方向盘加热”需求中的信号 SteerWhlHeatFcnStsSteerWhlHeatFcnAvlStsSteerWhlHeatFcnNotAvlRsn 为例。

方向盘加热三信号流程图:语音"打开方向盘加热"时若 SteerWhlHeatFcnSts != 0x0(OFF) 则当前已是目标状态 DCD 不发指令;若 == 0x0 则前置条件1满足,继续判断前置条件2。语音"关闭方向盘加热"时逻辑对称。

1 SC 文档中功能总览信号列表,找到信号描述

  • SteerWhlHeatFcnSts 对应方向盘加热状态
  • SteerWhlHeatFcnAvlSts 对应方向盘加热可用状态

方向盘加热信号描述:SteerWhlHeatFcnAvlSts 可用状态 0x0=Available / 0x1=Not Available;SteerWhlHeatFcnSts 加热状态 0x0=OFF / 0x1=level1 / 0x2=level2 / 0x3=level3。

2 SOA 文档中的 A 列和 C 列找到系统中间件的信号 propId

2.1 SteerWhlHeatFcnSts 对应方向盘加热状态

在 SOA 表中全局搜索 SteerWhlHeatFcnSts

  • SOA 信号(SignalName,M 列)SteerWhlHeatFcnSts
  • SOA 文档中的 tab 对应中间件信号的类Body 对应 mi.car.config.Body —— 需要通过信号名字全局 excel 查找
  • 中间件信号 propId(Area1 + Area2,A + C 列)StreeringWheel + HEAT 对应中间件信号 Body.STEERING_WHEEL_HEAT。通过 mi.car:vehicle.support 源码中 Body 类可找到对应信号 propId 定义
  • JAVA API NAME(E 列):待后续补充,对应的中间件信号 api name,能直接对应到代码里面的下划线的 STEERING_WHEEL_HEAT,不需要看 SC 文档的猜测
  • ValueForCockpit(Y 列)对应信号的值:通过代码中 propId 对应的信号的 ValueDef 注解,可找到信号返回值的范围

📷 [图片: Java 代码片段] — 定义方向盘加热状态信号。STEERING_WHEEL_HEAT 值为 0x503,属于 MiVehiclePropertyGroup.MI_CARMiVehicleArea.GLOBALVehiclePropertyType.INT32MiVehicleZone.BODYValueDef 注解中 range 被 @Range(from = 0, to = 3) 标识,值范围 0-3。(原图 authcode 失效,无法下载,详见文末说明)

文档中说明了数据范围 0-3,没有说明哪个档位是最大、哪个是最小。需要结合 SC 系统需求文档中找对应说明:具体档位调节:

“方向盘加热调到最高/最低/中间档位”

“方向盘加热调到 OFF/Level1/Level2/Level3”

关于信号的值:

  • 本地执行通过接口 Signalvalue 字段获取
  • 系统能力 SDK 通过中间件提供的 CarPropertyValuevalue 字段获取

2.2 SteerWhlHeatFcnAvlSts 对应方向盘加热可用状态

在 SOA 表中全局搜索 SteerWhlHeatFcnAvlSts

  • SOA 信号(SignalName,M 列)SteerWhlHeatFcnAvlSts
  • SOA 文档中的 tab 对应中间件信号的类Body 对应 mi.car.config.Body
  • 中间件信号 propId(Area1 + Area2,A + C 列)StreeringWheel + HEAT 对应中间件信号 Body.STEERING_WHEEL_HEAT(与状态信号同一个 propId)
  • JAVA API NAME(E 列):待后续补充
  • ValueForCockpit(Y 列)对应信号的值0 = available1 = unavailable

关于使能信号的值:

  • 本地执行通过接口 Signalstatus 字段获取
  • 系统能力 SDK 通过中间件提供的 CarPropertyValuestatus 字段获取

3 SOA 文档中查找异常信号对应中间件信号的值

SC 系统需求文档中有关于异常信号的描述:

方向盘加热控制无法操作原因表 1.1:信号名 SteerWhlHeatFcnNotAvlRsn,信号值 0x0~0x5,分别对应无异常、驱动故障保护、电压保护、碰撞保护、低压能量限制、温度限制,分类为故障或功能限制,含语音回复示例。

SteerWhlHeatFcnNotAvlRsn

在 SOA 表中全局搜索 SteerWhlHeatFcnNotAvlRsn

  • SOA 信号(SignalName,M 列)SteerWhlHeatFcnNotAvlRsn
  • SOA 文档中的 tab 对应中间件信号的类Body 对应 mi.car.config.Body
  • 中间件信号 propId(Area1 + Area2,A + C 列)StreeringWheel + HeatException 对应中间件信号 Body.STEERING_WHEEL_HEAT_EXCEPTION
  • JAVA API NAME(E 列):待后续补充,对应代码下划线名 STEERING_WHEEL_HEAT_EXCEPTION
  • ValueForCockpit(Y 列)对应信号的值0 - 5。代码中 mi.car.config.Body 定义的异常信号枚举可以引用到异常信号值定义

📷 [图片: Java 代码片段] — 定义中间件信号 Body.STEERING_WHEEL_HEAT_EXCEPTION 的属性。value 通过 @ValueDef 注解引用 SteeringWheelHeatException.class(异常信号枚举);STEERING_WHEEL_HEAT_EXCEPTION = 0x504。(原图 authcode 失效,无法下载,详见文末说明)

SteeringWheelHeatException 枚举类:NO_ERR=0、MOTOR_FAULT=1、VOLT_PROTECT=2、VEH_IMPACT=3、LOW_ENERGY_LIMIT=4、TEMPERATURE_LIMIT=5。

关于异常信号的值:

  • 本地执行通过接口 SignalexceptionCode 字段获取
  • 系统能力 SDK 通过中间件提供的 CarPropertyValuevalue 字段获取

4 产品定义回复 TTS 与信号异常值关联

📷 [图片: 第4节标题占位] — 原文止于标题”产品定义回复 TTS 与信号异常值关联”,正文内容未在源文档中给出。


本地化处理说明

  • 图片来源:飞书 docx X4rSdQucYofcWZxaaUNcEAMMnN2b,6 张图中 4 张通过 authcode 下载成功并转存至图床(minio.898311.xyz);2 张(STEERING_WHEEL_HEAT 定义代码、STEERING_WHEEL_HEAT_EXCEPTION 定义代码)authcode 服务端返回 400,已用详细描述性占位 > 📷 **[图片: ...]** 替代,文字内容已由 alt 文本完整转述。
  • 关联文档:3 个 cite 已转为飞书直链(1 docx + 2 sheets)。
  • & → &、合并多余空行、保留代码标识与列表层级。