概述
AliOS Things 3.3提供支持符合蓝牙4.0/4.2/5.0核心协议规范的BLE Host软件协议栈组件,方便用户使用蓝牙BLE功能。
ble_host组件功能框图如下图红色部分:

功能支持
ble_host组件主要支持如下功能:
- Generic Access Profile(GAP)角色支持
- Peripheral&Central
- Observer&Broadcaster
- Generic Attribute Profile(GATT)连接支持
- GATT client
- GATT server
- Security Manager(SM)支持
- Legacy Pairing
- 多安全等级设定Security Level 1, 2, 3, 4
- 安全连接Security Connection
- LE Privacy(RPA地址生成)
- HCI接口支持
- 标准HCI接口,支持host-only,host通过HCI硬件接口(以UART为主)和controller对接
- 虚拟HCI接口,支持host+controller,适合SoC的硬件平台
版权说明
Apache license v2.0
目录结构
|-- ble_profiles #BLE服务
|-- bt_crypto #BLE安全
|-- bt_defconfig #BLE配置项
|-- bt_host #BLE Host核心代码
|-- bt_preconfig #BLE预配置项
|-- bt_shell #BLE控制台命令
|-- include #头文件
|-- package.yaml #makefile
|-- README.md #README文档
|-- SConscript
|-- script
依赖组件
- osal_aos
常用配置
配置列表
配置在组件的package.yaml中定义,均已默认打开,用户可根据需求裁剪。
CONFIG_BT_CENTRAL | BLE Central角色功能开关 |
---|---|
CONFIG_BT_PERIPHERAL | BLE 外设角色功能开关 |
CONFIG_BT_SMP | BLE SMP功能开关 |
CONFIG_BT_GATT_CLIENT | BLE GATT Client功能开关 |
CONFIG_BT_OBSERVER | BLE 广播扫描功能开关 |
API说明
API列表
ble_stack_init | BLE协议栈初始化 |
---|---|
ble_stack_event_register | 注册BLE事件处理函数 |
ble_stack_adv_start | BLE 广播开始 |
ble_stack_adv_stop | BLE 广播停止 |
ble_stack_scan_start | BLE 扫描开始 |
ble_stack_scan_stop | BLE 扫描停止 |
ble_stack_gatt_mtu_get | GATT,获取当前连接MTU大小 |
ble_stack_gatt_registe_service | GATT server,服务注册 |
ble_stack_gatt_notificate | GATT server,属性notificate方式上报 |
ble_stack_gatt_indicate | GATT server,属性indicate方式上报 |
ble_stack_gatt_mtu_exchange | GATT client,协商MTU大小 |
ble_stack_gatt_discovery | GATT client,发现对端GATT服务 |
ble_stack_gatt_read | GATT client,读取对端GATT server属性 |
ble_stack_gatt_read_multiple | GATT client,读取对端GATT server多个属性 |
ble_stack_gatt_write | GATT client,写入对端GATT server属性 |
ble_stack_connect | 开始BLE连接 |
ble_stack_disconnect | 断开BLE连接 |
ble_stack_connect_param_update | BLE连接参数协商 |
ble_stack_security | BLE连接安全等级设置 |
ble_stack_iocapability_set | BLE SMP IO能力配置 |
ble_stack_smp_cancel | BLE SMP配对请求取消 |
ble_stack_smp_passkey_entry | BLE SMP passkey输入 |
ble_stack_smp_passkey_confirm | BLE SMP passkey确认 |
ble_stack_dev_unpair | PIN SMP配对解绑 |
API详情
ble_stack_init
BLE模块初始化。
函数原型
int ble_stack_init(init_param_t *param)
输入参数
args | description |
---|---|
param.dev_name | 设备名,string类型,不超过28字符 |
param.dev_addr | 设备mac地址,仅设置为random类型时生效 |
param.conn_num_max | 最大连接数 |
返回参数0:
成功, 其他值
:失败。
ble_stack_event_register
注册BLE协议栈事件回调函数。
注意:入参不能是一个局部变量。
函数原型
int ble_stack_event_register(ble_event_cb_t *callback)
输入参数
args | description |
---|---|
callback.callback | 回调函数 |
callback.next | 无需填写,由API函数处理 |
返回参数0:
成功, 其他值
:失败。
ble_stack_adv_start
打开BLE广播功能。
函数原型
int ble_stack_adv_start(adv_param_t *param)
输入参数
args | description |
---|---|
param.type | 广播类型,定义如下 0x00 普通广播 0x01 直连广播 0x02 可连接可扫描广播 0x03 不可连接广播, 0x04 低占空直连广播 |
param.ad | ADV广播内容数组 |
param.sd | Scan Response广播内容数组 |
param.ad_num | ADV广播内容数组大小 |
param.sd_num | Scan Response广播内容数组大小 |
param.interval_min | 广播发送间隔最小值 |
param.interval_max | 广播发送间隔最大值 |
param.filter_policy | 广播过滤开关,定义如下 0x00 接受所有连接与扫描请求 0x01 接受所有连接请求,接受白名单设备的扫描请求 0x02 接受白名单的连接请求,接受所有扫描请求 0x03 仅接受白名单内的扫描与连接请求 |
param.channel_map | 广播信道设置, bit0: 37信道 bit1: 38信道 bit2: 39信道 |
param.direct_peer_addr | 直连广播设备地址,仅在广播类型为直连类型时才生效 |
返回参数0:
成功, 其他值
:失败。
ble_stack_adv_stop
关闭BLE广播功能。
函数原型
int ble_stack_adv_stop()