4. 简易GATT服务(GATT_simple)介绍

4.1. 简介

  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

    "图1.1 BLE_TEST宏定义选择“

    图1.1 BLE_TEST宏定义选择

  4. 连接间隔支持标准和私有配置,可根据需要进行选择;
    • 配置标准间隔参数时,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:连接参数表,可选择修改:
    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
    
"图1.2 从机连接参数说明“

图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,实际连接间隔为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:搜索的设备名


4.4. 公共接口

4.4.1. 函数void ble_clock_init(void)

备注

该函数实现初始化蓝牙时钟,使用蓝牙功能前必须要调用!

  1. 返回值:无;

4.4.2. 函数int get_buffer_vaild_len(void *priv)

备注

该函数实现查询蓝牙当前可写入缓存的发送数据长度

  1. priv:传0即可;

  2. 返回值:当前可发送的数据长度;

4.4.3. 函数ble_state_e get_ble_work_state(void)

备注

该函数实现获取当前蓝牙状态

  1. 返回值:当前蓝牙状态;


4.5. BLE_SLAVE接口

4.5.1. 函数const char *bt_get_local_name()

备注

该函数实现配置从机名称

  1. 返回值:从机名称;

4.5.2. 函数void bt_ble_slave_init(void)

备注

该函数实现初始化蓝牙从机相关配置

  1. 返回值:无;

4.5.3. 函数void bt_ble_slave_exit(void)

备注

该函数实现关闭蓝牙从机相关配置

  1. 返回值:无;

4.5.4. 函数int bt_ble_slave_send_api(u8 *data, u16 len)

备注

该函数实现从机发送数据给远端

  1. data:发送的数据buff;

  2. len:发送的数据长度;

  3. 返回值:0:成功 非0:失败;

4.5.5. 函数void bt_ble_slave_recv_register(int (*callback_func)(u8 *buf, u16 len))

备注

该函数实现注册接收回调函数

  1. callback_func:主机接收从机的回调函数;

  2. buf:数据接收buff;

  3. len:数据接收长度;

  4. 返回值:0:成功 非0:失败;

4.5.6. 函数u32 bt_ble_slave_update_conn_parm(u16 interval)

备注

该函数实现请求修改当前连接interval,使用该功能需要connection_update_enable=1

  1. interval:新的连接interval;

  2. 返回值:0:成功 非0:失败;


4.6. BLE_MASTER接口

4.6.1. 函数void bt_ble_master_init(void)

备注

该函数实现初始化蓝牙主机相关配置

  1. 返回值:无;

4.6.2. 函数void bt_ble_master_exit(void)

备注

该函数实现关闭蓝牙主机相关配置

  1. 返回值:无;

4.6.3. 函数int bt_ble_master_send_api(u8 *data, u16 len)

备注

该函数实现主机发送数据给远端

  1. data:发送的数据buff;

  2. len:发送的数据长度;

  3. 返回值:0:成功 非0:失败;

4.6.4. 函数void bt_ble_master_recv_register(int (*callback_func)(u8 *buf, u16 len))

备注

该函数实现注册接收回调函数

  1. callback_func:主机接收从机的回调函数;

  2. buf:数据接收buff;

  3. len:数据接收长度;

  4. 返回值:0:成功 非0:失败;

4.6.5. 函数u32 bt_ble_master_update_conn_parm(u16 interval)

备注

该函数实现修改当前连接interval

  1. interval:新的连接interval;

  2. 返回值:0:成功 非0:失败;