bt
BR (Basic Rate) 提供经典蓝牙BR/EDR协议栈的设备发现、配对、连接与断连管理功能,支持回调注册与设备信息获取。
头文件清单
#include "protocol/bt/host/include/bs_service/bs_br_service_acquire.h"
#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"
#include "protocol/bt/host/include/bs_service/bs_br_service_config.h"
接口清单
| 接口名称 | 功能简述 |
|---|---|
| bs_br_acquire | 获取BR设备信息 |
| bs_br_register_callbacks | 注册BR/EDR回调函数 |
| bs_br_enable | 使能BR协议栈 |
| bs_br_disable | 去使能BR协议栈 |
| bs_br_start_discovery | 进入BR/EDR设备发现模式 |
| bs_br_stop_discovery | 退出BR/EDR设备发现模式 |
| bs_br_start_pair | 基于BR/EDR发起设备配对流程 |
| bs_br_remove_pair | 删除配对信息并断开连接 |
| bs_br_start_auto_conn | 启动BR/EDR设备自动回连 |
| bs_br_stop_auto_conn | 停止BR/EDR设备自动回连 |
| bs_br_accept_connect | 接受或拒绝远端设备的连接请求 |
| bs_br_disconnect | 断开与远端设备的BR/EDR连接 |
| bs_br_get_remote_device_info | 根据设备ID获取远端设备信息 |
Functions
bs_br_acquire
头文件清单
功能说明
- 根据指定的获取类型,获取BR设备相关信息
- 输出参数param携带获取到的数据内容
- 输出参数len指示获取到的数据长度
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| type | bs_br_acquire_type_t | 获取类型 | BR_ACQUIRE_REMOTE_BOND_LIST(0x0100) |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| param | bs_br_acquire_t* | 获取到的数据内容,根据type返回对应的联合体成员 |
| len | uint16_t* | 获取到的数据长度 |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_register_callbacks
头文件清单
功能说明
- 注册BR/EDR服务的回调函数集合
- 通过app_id标识上层应用身份
- 注册后协议栈事件通过回调结构体中的各回调函数上报上层
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| app_id | uint8_t | 上层应用ID | 0 ~ 255 |
| cbks | const bs_br_callbacks_t* | 回调函数结构体指针 | 非NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_enable
头文件清单
功能说明
- 使能BR/EDR协议栈
- 使能后协议栈进入可用状态
- 使能成功后通过stack_state_cb回调上报BR_STATE_ENABLED状态
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_disable
头文件清单
功能说明
- 去使能BR/EDR协议栈
- 去使能后协议栈进入关闭状态
- 去使能成功后通过stack_state_cb回调上报BR_STATE_DISABLED状态
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_start_discovery
头文件清单
功能说明
- 根据指定的发现模式类型进入BR/EDR设备发现模式
- 作为中央设备时启动inquiry查询外围设备
- 作为外围设备时进入scan状态等待被查询
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| type | bs_br_discovery_type_t | 设备发现模式类型 | BR_DISCOVERY_CENTRAL(0) / BR_DISCOVERY_PERIPHERAL(1) |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_stop_discovery
头文件清单
功能说明
- 退出指定的BR/EDR设备发现模式
- 停止中央设备的inquiry查询
- 停止外围设备的scan状态
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| type | bs_br_discovery_type_t | 设备发现模式类型 | BR_DISCOVERY_CENTRAL(0) / BR_DISCOVERY_PERIPHERAL(1) |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_start_pair
头文件清单
功能说明
- 根据远端设备地址发起BR/EDR配对流程
- 配对完成后通过pair_complete_cb回调上报配对结果
- 配对信息包含link key及密钥类型
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| addr | const bs_addr_t* | 远端设备地址指针 | 非NULL |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_remove_pair
头文件清单
功能说明
- 删除指定设备的配对信息并断开连接
- 删除成功后通过pair_remove_cb回调上报
- 断开与该设备的BR/EDR连接
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 远端设备ID | 0 ~ 65535 |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_start_auto_conn
头文件清单
功能说明
- 启动BR/EDR设备自动回连流程
- 自动回连已配对的历史设备
- 回连结果通过connect_state_cb回调上报
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_stop_auto_conn
头文件清单
功能说明
- 停止BR/EDR设备自动回连流程
- 停止后不再尝试回连已配对设备
- 已建立的连接不受影响
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_accept_connect
头文件清单
功能说明
- 接受或拒绝远端设备的BR/EDR连接请求
- 当accept为true时接受连接请求
- 当accept为false时拒绝连接请求,可通过reason指定拒绝原因
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 远端设备ID | 0 ~ 65535 |
| accept | bool | 是否接受连接 | true / false |
| reason | uint8_t | 拒绝连接原因 | BR_CONNECT_REJECT_REASON_LIMITED_RESOURCES(0) / BR_CONNECT_REJECT_REASON_SECURITY_REASONS(1) / BR_CONNECT_REJECT_REASON_UNACCEPTABLE_BD_ADDR(2) |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_disconnect
头文件清单
功能说明
- 断开与指定远端设备的BR/EDR连接
- 断连结果通过connect_state_cb回调上报
- 断连后设备状态变为BR_CONNECT_DISCONNECTED
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 远端设备ID | 0 ~ 65535 |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
bs_br_get_remote_device_info
头文件清单
功能说明
- 根据设备ID获取远端设备的详细信息
- 输出参数包含设备地址、设备类型和设备名称
- 设备名称包含字符串结束符
入参
| 名称 | 参数类型 | 详细说明 | 约束取值范围 |
|---|---|---|---|
| dev_id | uint16_t | 远端设备ID | 0 ~ 65535 |
出参
| 名称 | 数据类型 | 输出说明 |
|---|---|---|
| device_info | bs_br_remote_device_info_t* | 远端设备信息,包含地址、设备类型和名称 |
返回值
- 返回类型:errcode_t
| 返回值 | 文字含义 | 触发场景 |
|---|---|---|
| ERRCODE_BT_SUCCESS(0x00) | 执行成功 | 请求成功发起 |
| Other | 其他错误码,参考errcode_bt_t | 执行失败 |
Type definitions
bs_br_stack_state_cbk
使用说明
- 调用时机:BR协议栈使能或去使能后,该回调函数上报上层
- 参数 state:BR协议栈状态
- 作为bs_br_callbacks_t结构体成员stack_state_cb的类型定义
bs_br_connect_request_cbk
typedef void (*bs_br_connect_request_cbk)(uint16_t dev_id, const bs_addr_t *dev_addr, uint32_t dev_class);
使用说明
- 调用时机:远端设备请求连接时,该回调函数上报上层
- 参数 dev_id:设备ID
- 参数 dev_addr:设备地址
- 参数 dev_class:设备类型
- 作为bs_br_callbacks_t结构体成员connect_request_cb的类型定义
bs_br_connect_state_cbk
typedef void (*bs_br_connect_state_cbk)(uint16_t dev_id, uint8_t conn_state, uint8_t encrypt_state, uint32_t reason);
使用说明
- 调用时机:BR连接或断连后,该回调函数上报上层
- 参数 dev_id:设备ID
- 参数 conn_state:BR连接状态
- 参数 encrypt_state:BR加密状态
- 参数 reason:BR断连原因或加密失败原因
- 作为bs_br_callbacks_t结构体成员connect_state_cb的类型定义
bs_br_pair_complete_cbk
使用说明
- 调用时机:设备配对完成后,该回调函数上报上层
- 参数 dev_id:设备ID
- 参数 pair_info:配对信息
- 作为bs_br_callbacks_t结构体成员pair_complete_cb的类型定义
bs_br_pair_remove_cbk
使用说明
- 调用时机:设备配对移除后,该回调函数上报上层
- 参数 dev_id:设备ID
- 作为bs_br_callbacks_t结构体成员pair_remove_cb的类型定义
bs_br_discovery_result_cbk
使用说明
- 调用时机:发现新设备后,该回调函数上报上层
- 参数 discovery_result:设备发现结果
- 作为bs_br_callbacks_t结构体成员discovery_result_cb的类型定义
bs_br_remote_name_changed_cbk
typedef void (*bs_br_remote_name_changed_cbk)(uint16_t dev_id, const uint8_t *name, uint8_t length);
使用说明
- 调用时机:远端设备名称变更后,该回调函数上报上层
- 参数 dev_id:设备ID
- 参数 name:设备名称
- 参数 length:设备名称长度
- 作为bs_br_callbacks_t结构体成员remote_name_changed_cb的类型定义
Associations
bs_br_acquire_t
typedef union {
struct bs_br_bond_device_info {
uint8_t addr[BS_ADDR_LEN];
uint16_t dev_id;
uint32_t class_of_device;
uint8_t name[BR_DEVICE_NAME_LEN];
} bond_device_info;
} bs_br_acquire_t;
| 成员名称 | 类型 | 描述 | 接口使用逻辑 |
|---|---|---|---|
| bond_device_info | bs_br_bond_device_info | 已配对设备信息 | bs_br_acquire出参载体 |
Enumerations
bs_br_acquire_type_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_ACQUIRE_REMOTE_BOND_LIST | 0x0100 | 获取远端已配对设备列表 |
注:BR_ACQUIRE_REMOTE = 0x0100 | (BS_PROTOCOL_BREDR << BS_PROTOCOL_CONFIG_SHIFT_BITS),BS_PROTOCOL_BREDR=0,BS_PROTOCOL_CONFIG_SHIFT_BITS=13,故 BR_ACQUIRE_REMOTE = 0x0100,BR_ACQUIRE_REMOTE_BOND_LIST = 0x0100。
bs_br_state_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_STATE_ENABLED | 0 | 协议栈开启 |
| BR_STATE_DISABLED | 1 | 协议栈关闭 |
bs_br_discovery_type_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_DISCOVERY_CENTRAL | 0 | 作为中央设备进入发现态,即查询外围设备 |
| BR_DISCOVERY_PERIPHERAL | 1 | 作为外围设备进入发现态,即进入scan状态 |
bs_br_connect_state_t
typedef enum {
BR_CONNECT_NONE,
BR_CONNECT_CONNECTED,
BR_CONNECT_DISCONNECTED,
} bs_br_connect_state_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_CONNECT_NONE | 0 | 默认连接状态 |
| BR_CONNECT_CONNECTED | 1 | 已连接状态 |
| BR_CONNECT_DISCONNECTED | 2 | 断连状态 |
bs_br_encrypt_state_t
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_ENCRYPT_NONE | 0 | 默认加密状态 |
| BR_ENCRYPT_SUCCESS | 1 | 加密成功 |
| BR_ENCRYPT_FAILED | 2 | 加密失败 |
bs_br_connect_reject_reason_t
typedef enum {
BR_CONNECT_REJECT_REASON_LIMITED_RESOURCES,
BR_CONNECT_REJECT_REASON_SECURITY_REASONS,
BR_CONNECT_REJECT_REASON_UNACCEPTABLE_BD_ADDR,
} bs_br_connect_reject_reason_t;
| 枚举成员 | 取值 | 描述 |
|---|---|---|
| BR_CONNECT_REJECT_REASON_LIMITED_RESOURCES | 0 | 资源有限 |
| BR_CONNECT_REJECT_REASON_SECURITY_REASONS | 1 | 未满足安全要求 |
| BR_CONNECT_REJECT_REASON_UNACCEPTABLE_BD_ADDR | 2 | 不接受该地址,只接受特定地址连接 |
Structures
bs_br_pair_info_t
typedef struct {
uint8_t link_key[BS_BR_LINK_KEY_LEN]; /*!< 配对密钥。 */
uint8_t key_type; /*!< 密钥类型。 */
} bs_br_pair_info_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| link_key | uint8_t[] | 配对密钥 |
| key_type | uint8_t | 密钥类型 |
bs_br_discovery_result_t
typedef struct {
bs_addr_t addr;
uint8_t name[BS_BR_DEVICE_NAME_MAX_LEN];
uint32_t device_class;
int8_t rssi;
} bs_br_discovery_result_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| addr | bs_addr_t | 设备地址 |
| name | uint8_t[] | 设备名称 |
| device_class | uint32_t | 设备类型 |
| rssi | int8_t | 信号强度 |
bs_br_remote_device_info_t
typedef struct {
uint8_t addr[BS_ADDR_LEN]; /*!< 设备地址。 */
uint32_t class_of_device; /*!< 设备类型。 */
uint8_t name[BS_BR_DEVICE_NAME_MAX_LEN]; /*!< 设备名称, 包含字符串结束符。 */
} bs_br_remote_device_info_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| addr | uint8_t[] | 设备地址 |
| class_of_device | uint32_t | 设备类型 |
| name | uint8_t[] | 设备名称,包含字符串结束符 |
bs_br_callbacks_t
typedef struct {
bs_br_stack_state_cbk stack_state_cb;
bs_br_connect_request_cbk connect_request_cb;
bs_br_connect_state_cbk connect_state_cb;
bs_br_pair_complete_cbk pair_complete_cb;
bs_br_pair_remove_cbk pair_remove_cb;
bs_br_discovery_result_cbk discovery_result_cb;
bs_br_remote_name_changed_cbk remote_name_changed_cb;
} bs_br_callbacks_t;
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| stack_state_cb | bs_br_stack_state_cbk | 协议栈使能/去使能回调 |
| connect_request_cb | bs_br_connect_request_cbk | 连接请求回调 |
| connect_state_cb | bs_br_connect_state_cbk | 连接/断连状态回调 |
| pair_complete_cb | bs_br_pair_complete_cbk | 配对完成回调 |
| pair_remove_cb | bs_br_pair_remove_cbk | 配对移除回调 |
| discovery_result_cb | bs_br_discovery_result_cbk | 设备发现结果回调 |
| remote_name_changed_cb | bs_br_remote_name_changed_cbk | 远端设备名称变更回调 |
bs_addr_t
成员说明
| 成员名称 | 数据类型 | 描述 |
|---|---|---|
| addr | uint8_t[] | 设备地址 |
| type | uint8_t | 地址类型 |