感应解锁使用 BLE 辅助核心实例,根据车端 RSSI(接收信号强度)触发。需要认证 BLE 连接、校准存储和真实解锁执行器。
开启型号能力
在后台型号开启 vehicle.proximity.unlock(bit 11,MOTO_PROXIMITY_UNLOCK),收到签名 CONFIG 后生效。用户还需完成校准。手动锁车 MOTO_LOCK(bit 3)单独授权,两者控制同一把锁。使用同一包的 ABI 8 头文件和静态库。
APP 中的校准流程
车辆首页的“无感解锁”入口打开雷达引导,每次打开都重新校准:
- 站在距车辆约两米处,点击开始。
- 保持位置,雷达显示采样进度和相对信号强度。
- 车端保存成功后显示完成,并开启感应解锁。
只采集约两米边界的一组稳定信号,不另采两米外的数据。雷达不显示精确米数。取消、断开或失败时保留上一次成功记录;首次校准未完成时不会开启。APP 保留安装标识,重连后恢复对应的车端记录。
现有 BLE RSSI 只能估算接近程度,人体遮挡、手机、天线和停车环境都会影响触发位置,不能保证精确的两米边界。
接入车端采样与存储
感应解锁使用核心头文件 moto/sdk.h、moto/proximity.h,配置在认证 BLE 辅助实例的 moto_config.proximity 中。这不是 moto_terminal_config 字段;不要把核心 API 的句柄换成 moto_terminal *。
| 接口 | 接入要求 |
|---|---|
proximity.load |
按认证 owner 与 APP 安装标识读取;无记录时输出全零 profile 并返回 MOTO_OK |
proximity.save |
原子持久化 moto_proximity_profile,成功落盘才返回 MOTO_OK;失败返回错误 |
moto_proximity_sample(sdk, connection_id, rssi_dbm) |
约每 500 ms 提交该 BLE 连接的新鲜 RSSI,连接编号与 moto_connect 一致 |
moto_proximity_reset(sdk) |
手动锁车成功或安全联锁变化后调用,使下一次解锁必须重新离开再靠近 |
这些核心调用在 SDK 所属线程串行执行,不能从回调中重入。存储回调参数只在回调期间有效;不要保留借用指针或记录 owner 凭据。安装 UUID 用于区分记录,不是认证凭据。重连后先完成 owner 认证与签名 CONFIG,再查询该安装标识的记录。
必须由车端接收器测 RSSI,不能直接使用手机测得的阈值。不可用读数传 127 重置判定,不重复提交失效的缓存样本。校准需要稳定采样,窗口填满后持续 3 秒。可接受的校准范围为 −90 至 −30 dBm,近阈值取校准结果,远阈值低 8 dB。
低于远阈值持续 3 秒后进入待触发状态;达到近阈值持续 1.5 秒后触发一次。启用、重连、校准、无效采样或样本间隔超过 2 秒后,都需要重新离开再靠近。不会自动锁车,也不会在车辆旁反复解锁或自动重试失败动作。
执行解锁并同步锁状态
SDK 在 BLE 辅助实例产生本地 MOTO_EVENT_VEHICLE_COMMAND:message=56、target=0、value=0。手机不能发送这个触发命令。
车辆驱动接到事件后检查截止时间、车速及控制器允许条件,再操作真实执行器。排队时保留事件的 session / request 和宿主记录的 BLE 连接编号,执行前核对连接仍有效;核心事件没有独立的连接代次字段。使用原事件的 session 和 request,在产生事件的同一个 SDK 实例调用 moto_complete_command 回报结果。不要把 BLE 动作转交 Wi-Fi 实例完成;Wi-Fi 断线也不应取消仍有效的 BLE 动作。
本地请求超时为 3 秒,无法确认时记为 MOTO_UNKNOWN。发出 CAN 帧不等于解锁成功。控制器确认后上报实际锁状态(field 3),首页锁图标据此更新,手动解锁与感应解锁共用同一状态。车况接线见车况上报。
连接与后台运行
RSSI 采样和触发由车端执行,只在已认证 BLE 链路有效时工作。断连后须重新连接并认证,重新离开再靠近。不能保证用户强退 APP 后自动恢复连接。
故障排查
- 没有入口:核对型号能力、签名 CONFIG、BLE 认证与 PROFILE key 33。
- 校准失败:检查当前连接的新鲜 RSSI、有效范围和存储回调。
- 校准后不解锁:先离开再靠近,检查车辆联锁、事件来源和执行结果。
- 锁图标未更新:检查控制器确认后的 field 3 上报。
校准请求由 APP 和 SDK 处理;BSP 无需拼装报文。完整字段见包内 docs/PROXIMITY_UNLOCK.md。
