6. vble_complete无线收发接口介绍
6.1. 简介
本章介绍应用层封装、管理完整GATT收发接口的vble_complete管理,该封装层能让用户聚焦于蓝牙数据收发;
该封装层管理的相关章节:完整GATT服务(GATT_complete)介绍
该接口非蓝牙标准协议,仅为应用层管理接口!
- 主要涉及的文件如下:
apps/app/bsp/common/bt_user/vble_gatt/vble_complete.c
- vble_complete基于完整GATT服务管理分层;
![]()
vble_complete基于完整GATT服务管理分层
6.2. 数据发送/接收流程
- 使用vble实现主机发送数据给从机:
主机分别调用函数 vble_master_init_api() 进行初始化;
主机调用函数vble_slave_recv_cb_register(),注册主机用的att通道对应的接收回调函数;
主机调用函数vble_master_send_api(),使用与2步相同at第t通道发送数据给从机;
- 使用vble实现从机发送数据给主机:
从机分别调用函数vble_slave_init_api()进行初始化;
从机调用函数vble_slave_recv_cb_register(),注册从机用的att通道对应的接收回调函数;
从机调用函数vble_master_send_api(),使用与第2步相同att通道发送数据给主机;
详细具体使用demo可查看下方gitee链接的《完整GATT服务蓝牙收发接口demo》:
6.3. 接口说明
6.3.1. 函数int vble_master_recv_cb_register(u32 slv_att_idx, void *priv, void *callback_fun)
备注
该函数实现将回调函数注册到vble_slv2mstr_info中指定的slv_att_idx序号
slv_att_idx:vble_slv2mstr_info结构体支持的att通道号;
priv:私有参数;
callback_fun:注册对应ATT通道号的接收回调函数;
返回值:0
6.3.2. 函数int vble_slave_recv_cb_register(u32 mstr_att_idx, void *priv, void *callback_fun)
备注
该函数实现将回调函数注册到vble_slv2mstr_info中指定的slv_att_idx序号
slv_att_idx:vble_slv2mstr_info结构体支持的att通道号;
priv:私有参数;
callback_fun:注册对应ATT通道号的接收回调函数;
返回值:0;
6.3.3. 函数int vble_master_send_api(u32 mstr_att_idx, u8 *data, u16 len)
备注
该函数实现主机通过mstr_att_idx序号对应的att_handle发送数据给从机
mstr_att_idx:att通道号;
data:发送数据buff;
len:发送数据长度;
返回值:0;
6.3.4. 函数int vble_slave_send_api(u32 slv_att_idx, u8 *data, u16 len)
备注
该函数实现从机通过mstr_att_idx序号对应的att_handle发送数据给主机
slv_att_idx:att通道号;
data:发送数据buff;
len:发送数据长度;
返回值:0;
6.3.5. 函数int vble_ioctl(u32 cmd, int arg)
备注
该函数实现获取或者设置蓝牙相关状态和配置
- cmd:命令;
VBLE_IOCTL_GET_SLAVE_STATUS:获取从机当前连接状态,只能在从机模式下使用,当返回的arg为0x21时为连接成功;
VBLE_IOCTL_GET_MASTER_STATUS:获取主机当前连接状态,只能在主机模式下使用,当返回的arg为0x50时即为连接成功;
arg:参数;
返回值:0:成功 非0:失败;