跳转至

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

errcode_t bs_br_acquire(bs_br_acquire_type_t type, bs_br_acquire_t *param, uint16_t *len)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_acquire.h"

功能说明

  • 根据指定的获取类型,获取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

errcode_t bs_br_register_callbacks(uint8_t app_id, const bs_br_callbacks_t *cbks)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 注册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

errcode_t bs_br_enable(void)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 使能BR/EDR协议栈
  • 使能后协议栈进入可用状态
  • 使能成功后通过stack_state_cb回调上报BR_STATE_ENABLED状态

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_BT_SUCCESS(0x00) 执行成功 请求成功发起
Other 其他错误码,参考errcode_bt_t 执行失败

bs_br_disable

errcode_t bs_br_disable(void)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 去使能BR/EDR协议栈
  • 去使能后协议栈进入关闭状态
  • 去使能成功后通过stack_state_cb回调上报BR_STATE_DISABLED状态

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_BT_SUCCESS(0x00) 执行成功 请求成功发起
Other 其他错误码,参考errcode_bt_t 执行失败

bs_br_start_discovery

errcode_t bs_br_start_discovery(bs_br_discovery_type_t type)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 根据指定的发现模式类型进入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

errcode_t bs_br_stop_discovery(bs_br_discovery_type_t type)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 退出指定的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

errcode_t bs_br_start_pair(const bs_addr_t *addr)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 根据远端设备地址发起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

errcode_t bs_br_remove_pair(uint16_t dev_id)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 删除指定设备的配对信息并断开连接
  • 删除成功后通过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

errcode_t bs_br_start_auto_conn(void)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 启动BR/EDR设备自动回连流程
  • 自动回连已配对的历史设备
  • 回连结果通过connect_state_cb回调上报

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_BT_SUCCESS(0x00) 执行成功 请求成功发起
Other 其他错误码,参考errcode_bt_t 执行失败

bs_br_stop_auto_conn

errcode_t bs_br_stop_auto_conn(void)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 停止BR/EDR设备自动回连流程
  • 停止后不再尝试回连已配对设备
  • 已建立的连接不受影响

返回值

  • 返回类型:errcode_t
返回值 文字含义 触发场景
ERRCODE_BT_SUCCESS(0x00) 执行成功 请求成功发起
Other 其他错误码,参考errcode_bt_t 执行失败

bs_br_accept_connect

errcode_t bs_br_accept_connect(uint16_t dev_id, bool accept, uint8_t reason)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 接受或拒绝远端设备的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

errcode_t bs_br_disconnect(uint16_t dev_id)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 断开与指定远端设备的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

errcode_t bs_br_get_remote_device_info(uint16_t dev_id, bs_br_remote_device_info_t *device_info)

头文件清单

#include "protocol/bt/host/include/bs_service/bs_br_service_api.h"

功能说明

  • 根据设备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

typedef void (*bs_br_stack_state_cbk)(uint8_t state);

使用说明

  • 调用时机: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

typedef void (*bs_br_pair_complete_cbk)(uint16_t dev_id, const bs_br_pair_info_t *pair_info);

使用说明

  • 调用时机:设备配对完成后,该回调函数上报上层
  • 参数 dev_id:设备ID
  • 参数 pair_info:配对信息
  • 作为bs_br_callbacks_t结构体成员pair_complete_cb的类型定义

bs_br_pair_remove_cbk

typedef void (*bs_br_pair_remove_cbk)(uint16_t dev_id);

使用说明

  • 调用时机:设备配对移除后,该回调函数上报上层
  • 参数 dev_id:设备ID
  • 作为bs_br_callbacks_t结构体成员pair_remove_cb的类型定义

bs_br_discovery_result_cbk

typedef void (*bs_br_discovery_result_cbk)(const bs_br_discovery_result_t *discovery_result);

使用说明

  • 调用时机:发现新设备后,该回调函数上报上层
  • 参数 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

typedef enum {
    BR_ACQUIRE_REMOTE_BOND_LIST           = BR_ACQUIRE_REMOTE | 0x0,
} 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

typedef enum {
    BR_STATE_ENABLED,
    BR_STATE_DISABLED,
} bs_br_state_t;
枚举成员 取值 描述
BR_STATE_ENABLED 0 协议栈开启
BR_STATE_DISABLED 1 协议栈关闭

bs_br_discovery_type_t

typedef enum {
    BR_DISCOVERY_CENTRAL,
    BR_DISCOVERY_PERIPHERAL,
} 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

typedef enum {
    BR_ENCRYPT_NONE,
    BR_ENCRYPT_SUCCESS,
    BR_ENCRYPT_FAILED,
} 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

typedef struct {
    uint8_t addr[BS_ADDR_LEN];
    uint8_t type;
} bs_addr_t;

成员说明

成员名称 数据类型 描述
addr uint8_t[] 设备地址
type uint8_t 地址类型

Macros

BR_DEVICE_NAME_LEN

#define BR_DEVICE_NAME_LEN 32

BS_BR_DEVICE_NAME_MAX_LEN

#define BS_BR_DEVICE_NAME_MAX_LEN 32
#define BS_BR_LINK_KEY_LEN 16

BS_ADDR_LEN

#define BS_ADDR_LEN 6