4.9. BLE透传

概述

使用demo_ble工程的BLE透传功能的使用说明

4.9.1. 操作说明

    1. 在app_config.h文件中使能以下宏

  • #define TCFG_USER_BLE_ENABLE 1 //BLE功能使能

  • #define TRANS_DATA_EN 1 //从机 传输数据

    1. 配置GATT服务和属性

  • (1)修改profile_data数据表,通过工具[make_gatt_services](SDK目录下sdk_tools/make_gatt_services)进行自定义修改,将新的profile_data数据表和对应的handle编号存放在le_trans_data.h。详细操作请参考[make_gatt_services工具说明](sdk_tools/make_gatt_services/make_gatt_services工具说明.pdf)。

  • (2)带有READ属性的handle放到 att_read_callback 函数中

static uint16_t att_read_callback(hci_con_handle_t connection_handle, uint16_t att_handle, uint16_t offset, uint8_t *buffer, uint16_t buffer_size)
{
    //......省略
    switch (handle) {
        //带有READ权限的handle
        case ATT_CHARACTERISTIC_2a00_01_VALUE_HANDLE:
            //以下为对应属性的操作处理
            att_value_len = gap_device_name_len;
            if ((offset >= att_value_len) || (offset + buffer_size) > att_value_len) {
                break;
            }
            if (buffer) {
                memcpy(buffer, &gap_device_name[offset], buffer_size);
                att_value_len = buffer_size;
                log_info("\n------read gap_name: %s \n", gap_device_name);
            }
            break;
    //......省略
    }
}
  • (3)将带有WRITE属性的handle放到 att_write_callback 函数中

static int att_write_callback(hci_con_handle_t connection_handle, uint16_t att_handle, uint16_t transaction_mode, uint16_t offset, uint8_t *buffer, uint16_t buffer_size)
{
    //......省略
    switch (handle) {
        //带有WRITE权限的handle
        case ATT_CHARACTERISTIC_ae03_01_VALUE_HANDLE:
                //以下为对应属性的操作处理
                printf("\n-ae03_rx(%d):", buffer_size);
                //收发测试,自动发送收到的数据;for test
                if (app_send_user_data_check(buffer_size)) {
                    app_send_user_data(ATT_CHARACTERISTIC_ae05_01_VALUE_HANDLE, buffer, buffer_size, ATT_OP_AUTO_READ_CCC);
                }
                break;
    //......省略
}
  • (4)将带有NOTIFY或者INDICATION属性的 handle 通过传参到发送数据的函数中。对于带有NOTIFY或者INDICATION属性的characteristic,主机端需要使能CCCD才能接收notify和indicate命令。

app_send_user_data(ATT_CHARACTERISTIC_ae05_01_VALUE_HANDLE, buffer, buffer_size, ATT_OP_AUTO_READ_CCC);
    1. 编译工程,烧录镜像,复位启动

    1. 在手机或其他终端打开BLE助手;连接成功后,在通过BLE助手进行收发测试

  • (1)蓝牙连接成功后,点击“蓝牙服务”查看当前蓝牙设备的service列表,如图1所示;

  • (2)点击第二项service,点击UUID为ae03的characteristic对应的箭头,表示发送该characteristic对应的数据,如图2所示;

  • (3)点击UUID为ae05的characteristic对应的按钮,表示使能该characteristic的CCD,即接收其indicate命令,如图2所示;

  • (4)点击“实时日志”,在发送栏编辑数据后点击“发送”,通过日志可看到BLE助手发送数据成功,并且成功接收到从机发送的数据,如图3所示。

  • 图1

../../_images/BLE_Utility_1.jpg

  • 图2

../../_images/BLE_Utility_2.jpg

  • 图3

../../_images/BLE_Utility_3.jpg