4. 简易GATT服务(GATT_simple)介绍
4.1. 简介
- 本章主要介绍基于简易GATT服务的主从收发接口(GATT_simple),该服务有以下特点:
具有简易的GATT profile
仅支持简单数据收发
不支持连接手机
使用固定att_handle通道收发数据
支持主从切换,主机可切换到从机进行蓝牙升级
支持私有连接间隔配置(支持大于2000us的任意间隔)
- 该主从收发接口受上层应用 vble_simple 管理,应用示例可参考:
BLE对讲机应用
- 从机运行需要在bt_ble.h文件中使能宏定义TESTE_BLE_EN,并将HID和SPPLE宏置0,涉及的文件如下:
apps/app/bsp/common/bt_commonn/bt_test/bt_ble.c
![]()
图1.1 BLE_TEST宏定义选择
- 连接间隔支持标准和私有配置,可根据需要进行选择;
配置标准间隔参数时,conn_interval参数需小于600,配置的conn_interval时间 = interval * 1.25(ms)
配置私有间隔参数时,conn_interval参数需大于30000,配置的conn_interval时间 = interval(us)
4.2. 从机相关参数配置
- 配置文件为ble_slave.c,其中参数:
ATT_LOCAL_MTU_SIZE:ATT发送包长
ADV_INTERVAL_MIN:未连接广播周期(unit:0.625ms)
connection_update_enable:从机使能参数请求更新控制;默认为0,由主机决定连接参数;
- connection_param_table:连接参数表,可选择修改:
conn_interval:连接间隔
latency:连接延迟(unit:interval)
timeout:连接超时时间(unit:10ms)
注:conn_interval:连接间隔说明
interval >= 3000配置为私有连接参数,此时底层默认unit=1us(单位为微秒);
例如:interval=3000,实际连接间隔为3000usinterval < 600 配置为标准连接参数,,此时底层默认unit=1.25ms(单位为1.25毫秒);
例如:interval=30,实际连接间隔为30*1.25ms=37.5ms![]()
图1.2 从机连接参数说明
4.3. 主机相关参数配置
- 配置文件为ble_master.c,其中参数:
ATT_LOCAL_MTU_SIZE:ATT发送包长
SET_SCAN_INTERVAL:搜索周期大小(unit:0.625ms)
SET_SCAN_WINDOW:搜索窗口大小(unit:0.625ms)
- SET_CONN_INTERVAL:连接周期大小
interval >= 3000配置为私有连接参数,此时底层默认unit=1us(单位为微秒);
例如:interval=3000,实际连接间隔为3000usinterval < 600 配置为标准连接参数,此时底层默认unit=1.25ms(单位为1.25毫秒);
例如:interval=30,实际连接间隔为30*1.25ms=37.5msSET_CONN_LATENCY:连接latency
SET_CONN_TIMEOUT:连接超时时间(unit:10ms)
test_remoter_name1:搜索的设备名
4.4. 公共接口
4.4.1. 函数void ble_clock_init(void)
备注
该函数实现初始化蓝牙时钟,使用蓝牙功能前必须要调用!
返回值:无;
4.4.2. 函数int get_buffer_vaild_len(void *priv)
备注
该函数实现查询蓝牙当前可写入缓存的发送数据长度
priv:传0即可;
返回值:当前可发送的数据长度;
4.4.3. 函数ble_state_e get_ble_work_state(void)
备注
该函数实现获取当前蓝牙状态
返回值:当前蓝牙状态;
4.5. BLE_SLAVE接口
4.5.1. 函数const char *bt_get_local_name()
备注
该函数实现配置从机名称
返回值:从机名称;
4.5.2. 函数void bt_ble_slave_init(void)
备注
该函数实现初始化蓝牙从机相关配置
返回值:无;
4.5.3. 函数void bt_ble_slave_exit(void)
备注
该函数实现关闭蓝牙从机相关配置
返回值:无;
4.5.4. 函数int bt_ble_slave_send_api(u8 *data, u16 len)
备注
该函数实现从机发送数据给远端
data:发送的数据buff;
len:发送的数据长度;
返回值:0:成功 非0:失败;
4.5.5. 函数void bt_ble_slave_recv_register(int (*callback_func)(u8 *buf, u16 len))
备注
该函数实现注册接收回调函数
callback_func:主机接收从机的回调函数;
buf:数据接收buff;
len:数据接收长度;
返回值:0:成功 非0:失败;
4.5.6. 函数u32 bt_ble_slave_update_conn_parm(u16 interval)
备注
该函数实现请求修改当前连接interval,使用该功能需要connection_update_enable=1
interval:新的连接interval;
返回值:0:成功 非0:失败;
4.6. BLE_MASTER接口
4.6.1. 函数void bt_ble_master_init(void)
备注
该函数实现初始化蓝牙主机相关配置
返回值:无;
4.6.2. 函数void bt_ble_master_exit(void)
备注
该函数实现关闭蓝牙主机相关配置
返回值:无;
4.6.3. 函数int bt_ble_master_send_api(u8 *data, u16 len)
备注
该函数实现主机发送数据给远端
data:发送的数据buff;
len:发送的数据长度;
返回值:0:成功 非0:失败;
4.6.4. 函数void bt_ble_master_recv_register(int (*callback_func)(u8 *buf, u16 len))
备注
该函数实现注册接收回调函数
callback_func:主机接收从机的回调函数;
buf:数据接收buff;
len:数据接收长度;
返回值:0:成功 非0:失败;
4.6.5. 函数u32 bt_ble_master_update_conn_parm(u16 interval)
备注
该函数实现修改当前连接interval
interval:新的连接interval;
返回值:0:成功 非0:失败;