跳转至

BT (蓝牙) 指令

对应源码: components/airlink/src/luat_airlink_cmds.c

启用宏: LUAT_USE_AIRLINK_EXEC_BLUETOOTH (主指令), LUAT_USE_AIRLINK_EXEC_BLUETOOTH_RESP (异步响应)

蓝牙指令用于主机控制从机的蓝牙模块. 当前为通用 opcode 透传模式, 详细 BLE/GAP/GATT 协议由从机解析.

通用 payload 头

所有 driver 指令的 data 字段前 8 字节是 seq_id (uint64_t, 小端, 单调递增), 用于匹配 cmd 0x08 result 回调. 详见 指令层描述.

指令列表

cmd 名称 方向 说明
0x500 bt_request 主→从 蓝牙通用请求
0x510 bt_resp_cb 从→主 蓝牙异步数据回调
0x511 bt_resp_result_cb 从→主 蓝牙操作结果回调

各指令详细定义

bt_request (0x500)

蓝牙通用请求, opcode 透传.

字段 长度 含义
seq_id 8B 序列号
opcode 2B 蓝牙操作码 (自定义)
data NB 操作参数, 由 opcode 决定解析方式

opcode 的具体含义由对端蓝牙协议栈决定. 当前版本主要用作命令透传, 复杂的 BLE/GAP/GATT 协议在从机侧处理.

bt_resp_cb (0x510)

蓝牙异步数据回调. 从机主动发送, 用于推送通知类数据 (例如扫描结果、连接状态变化).

字段 长度 含义
opcode 2B 对应的请求 opcode
data NB 回调数据

bt_resp_result_cb (0x511)

蓝牙操作结果回调. 从机主动发送, 用于返回 bt_request 的同步结果.

字段 长度 含义
req_pkgid 8B 对应 bt_request 的 seq_id
result_code 2B 0 = 成功, 负值 = 错误
data NB 结果数据 (可选)

典型用法

蓝牙的操作通常分两类:

  1. 命令-响应模式: 主机发 bt_request (0x500), 从机通过 bt_resp_result_cb (0x511) 异步回送结果
  2. 事件订阅模式: 主机发 bt_request (0x500) 订阅事件, 从机通过 bt_resp_cb (0x510) 持续推送

具体的 opcode 编号、data 格式由从机侧蓝牙协议栈定义. 建议在主机 SDK 层封装, 不直接使用裸 opcode.

问一下 AI