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