.. _vble_simple无线收发接口介绍: vble_simple无线收发接口介绍 ======================================= 简介 ######################## 本章介绍应用层封装、管理简易GATT收发接口的vble_simple管理: - 该封装层统一收发接口忽略主从特性,让用户聚焦于蓝牙数据收发 - 该封装层管理的相关章节::ref:`简易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服务管理分层; .. image:: incomplete_gatt_profile_position.png :alt: "vble_simple基于简易GATT服务管理分层“ :align: center .. centered:: vble_simple基于简易GATT服务管理分层 数据发送/接收流程 ######################## 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》部分: `FAQ:AW30N 快速使用蓝牙接口 `_ 具体各自接口说明 ######################## 函数void vble_smpl_master_select(void) ********************************************************************** .. note:: 该函数实现选择蓝牙主机配置,调用该函数后再调用init函数即初始化主机 1. 返回值:无 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数void vble_smpl_slave_select(void) ********************************************************************** .. note:: 该函数实现选择蓝牙从机配置,调用该函数后再调用init函数即初始化从机 1. 返回值:无 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数void vble_smpl_init(void) ********************************************************************** .. note:: 该函数实现初始化蓝牙并根据主/从机身份开启搜索/广播 1. 返回值:无 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数void vble_smpl_exit(void) ********************************************************************** .. note:: 该函数实现断开连接并退出蓝牙 1. 返回值:无 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数int vble_smpl_send_api(u8 \*data, u16 len) *************************************************************************** .. note:: 该函数实现发送数据给远端 1. data:发送数据buff; 2. len:发送数据长度; 3. 返回值:0:成功 非0:失败; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数void vble_smpl_recv_register(void \*priv, int (\*callback_func)(u8 \*buf, u16 len)) **************************************************************************************** .. note:: 该函数实现注册接收回调函数 1. priv:私有参数; 2. callback_fun:注册的接收回调; 3. 返回值:无; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数u32 vble_smpl_ioctl(u32 cmd, int arg) *************************************************************************** .. note:: 该函数实现获取或者设置蓝牙相关状态和配置; 1. 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:获取当前连接状态; 2. arg:参数; 3. 返回值:0:成功 非0:失败; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 函数void vble_smpl_update_parm_succ_register(void (\*callback_func)(int)) *************************************************************************** .. note:: 该函数实现注册更新连接间隔成功回调。 1. callback_func:注册的回调函数; 2. 返回值:无;