7. vble_simple无线收发接口介绍
7.1. 简介
- 本章介绍应用层封装、管理简易GATT收发接口的vble_simple管理:
该封装层统一收发接口忽略主从特性,让用户聚焦于蓝牙数据收发
该封装层管理的相关章节:简易GATT服务(GATT_simple)介绍
该接口非蓝牙标准协议,仅为应用层管理接口!
- 主要涉及的文件如下:
apps/app/bsp/common/bt_user/vble_gatt/vble_simple.c
apps/app/bsp/common/bt_user/vble_gatt/vble_simple.h
从v1.3.0 版本开始,更新连接间隔(interval)与连接超时的时间(timeout)配置移到apps/app/bsp/common/bt_user/vble_gatt/vble_simple.h
- vble_simple基于简易GATT服务管理分层;
![]()
vble_simple基于简易GATT服务管理分层
7.2. 数据发送/接收流程
vble_gatt_simple管理旨在统一主从机接口,通过挂载ble_master_ops接口或者ble_slave_ops接口到vble_att_ops中,选择成为主机或者从机;
使用流程(可参考BLE对讲机应用流程):
/*******************相关初始化*******************/ 1、蓝牙硬件初始化: 调用函数ble_clock_init()进行蓝牙硬件初始化; 2、蓝牙配置为从机或者主机: 调用函数vble_smpl_master_select()或函数vble_smpl_slave_select()配置成为主机或从机; 3、 蓝牙初始化: 调用函数vble_smpl_init()进行初始化; 4、注册接收回调中断: 调用函数vble_smpl_recv_register()注册接收回调函数; 5、注册更新间隔成功回调(选做) 调用函数vble_smpl_update_parm_succ_register()注册更新间隔成功回调函数; /*******************蓝牙使用*******************/ 6、使用蓝牙发送数据: 调用函数vble_smpl_send_api()发送数据; 7、蓝牙接收数据: 在第4步注册的接收回调函数接收。 8、 使用ioctl获取蓝牙相关信息: 如调用函数vble_smpl_ioctl(VBLE_SMPL_GET_STATUS, &ble_status)获取当前蓝牙状态; /*******************退出蓝牙*******************/ 9、注销蓝牙接收回调函数; 调用函数vble_smpl_recv_register(NULL, NULL); 10、蓝牙退出; 调用vble_smpl_exit();详细具体使用demo可查看下方gitee链接的《简易GATT服务蓝牙收发接口demo》部分:
7.3. 具体各自接口说明
7.3.1. 函数void vble_smpl_master_select(void)
备注
该函数实现选择蓝牙主机配置,调用该函数后再调用init函数即初始化主机
返回值:无
7.3.2. 函数void vble_smpl_slave_select(void)
备注
该函数实现选择蓝牙从机配置,调用该函数后再调用init函数即初始化从机
返回值:无
7.3.3. 函数void vble_smpl_init(void)
备注
该函数实现初始化蓝牙并根据主/从机身份开启搜索/广播
返回值:无
7.3.4. 函数void vble_smpl_exit(void)
备注
该函数实现断开连接并退出蓝牙
返回值:无
7.3.5. 函数int vble_smpl_send_api(u8 *data, u16 len)
备注
该函数实现发送数据给远端
data:发送数据buff;
len:发送数据长度;
返回值:0:成功 非0:失败;
7.3.6. 函数void vble_smpl_recv_register(void *priv, int (*callback_func)(u8 *buf, u16 len))
备注
该函数实现注册接收回调函数
priv:私有参数;
callback_fun:注册的接收回调;
返回值:无;
7.3.7. 函数u32 vble_smpl_ioctl(u32 cmd, int arg)
备注
该函数实现获取或者设置蓝牙相关状态和配置;
- cmd:命令;
VBLE_SMPL_UPDATE_CONN_INTERVAL:配置连接interval参数,在配置该参数时,由于timeout的时间至少满足interval与latency的2倍(timeout>=interval*latency*2),因此在配置interval时也需要重新配置一下timeout;
VBLE_SMPL_GET_NAME:获取主从机标识名;
VBLE_SMPL_GET_STATUS:获取当前连接状态;
arg:参数;
返回值:0:成功 非0:失败;
7.3.8. 函数void vble_smpl_update_parm_succ_register(void (*callback_func)(int))
备注
该函数实现注册更新连接间隔成功回调。
callback_func:注册的回调函数;
返回值:无;