BLE广播包和扫描响应包的数据类型说明

  • Flags (0x01)

    • 用于标识设备的可发现性模式。
    • 数据长度:1 字节
    • 示例:0x01 (LE General Discoverable Mode | BR/EDR Not Supported)
  • Incomplete List of 16-bit Service Class UUIDs (0x02)

    • 服务的不完整UUID列表。
    • 数据长度:2*n 字节
    • 示例:0x180D (Heart Rate Service)
  • Complete List of 16-bit Service Class UUIDs (0x03)

    • 服务的完整UUID列表。
    • 数据长度:2*n 字节
    • 示例:0x180D (Heart Rate Service), 0x180F (Battery Service)
  • Incomplete List of 32-bit Service Class UUIDs (0x04)

    • 部分32位UUID列表。
    • 数据内容:一个或多个32位UUID。
  • Complete List of 32-bit Service Class UUIDs (0x05)

    • 完整的32位UUID列表。
    • 数据内容:一个或多个32位UUID。
  • Incomplete List of 128-bit Service Class UUIDs (0x06)

    • 服务的不完整UUID列表。
    • 数据长度:16*n 字节
    • 示例:128-bit UUID
  • Complete List of 128-bit Service Class UUIDs (0x07)

    • 服务的完整UUID列表。
    • 数据长度:16*n 字节
    • 示例:128-bit UUID
  • Shortened Local Name (0x08)

    • 设备名称的简短版本。
    • 数据长度:可变
    • 示例:"Nordic"
  • Complete Local Name (0x09)

    • 设备的完整名称。
    • 数据长度:可变
    • 示例:"Nordic_HRM"
  • Tx Power Level (0x0A)

    • 发射功率级别。
    • 数据长度:1 字节
    • 示例:0x04 (4 dBm)
  • Service Data (0x16)
    • 包含服务UUID和与服务相关的数据。
    • 数据长度:可变
    • 示例:0x180D (Heart Rate Service) + Data
  • Manufacturer Specific Data (0xFF)
    • 制造商特定的数据。
    • 数据长度:可变,包含公司标识符(2字节)和制造商数据。
    • 示例:0x0059 (Nordic Semiconductor) + Data

然后在部分开发平台上面添加广播包数据不是简单的在对应数组中添加,可能是已经跟你分配了对应的结构体,比如nordic中的:

static void advertising_init(void)
{
    uint32_t      err_code;
    ble_advdata_t advdata;
    ble_advdata_t scanrsp;
    uint8_t       flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;

    ble_uuid_t adv_uuids[] = {{BLE_UUID_HEART_RATE_SERVICE, BLE_UUID_TYPE_BLE},
                              {BLE_UUID_BATTERY_SERVICE, BLE_UUID_TYPE_BLE},
                              {BLE_UUID_DEVICE_INFORMATION_SERVICE, BLE_UUID_TYPE_BLE}};

    // Manufacturer specific data
    uint8_t manufacturer_data[3] = {0x01, 0x02, 0x03};
    ble_advdata_manuf_data_t manuf_specific_data;
    manuf_specific_data.company_identifier = 0x0059;  // Nordic Semiconductor's company ID
    manuf_specific_data.data.p_data = manufacturer_data;
    manuf_specific_data.data.size = sizeof(manufacturer_data);

    // Service data
    uint8_t service_data[4] = {0x04, 0x05, 0x06, 0x07};
    ble_advdata_service_data_t service_data_array[1];
    service_data_array[0].service_uuid = BLE_UUID_HEART_RATE_SERVICE;
    service_data_array[0].data.p_data = service_data;
    service_data_array[0].data.size = sizeof(service_data);

    // Initialize advertising data
    memset(&advdata, 0, sizeof(advdata));
    advdata.name_type               = BLE_ADVDATA_FULL_NAME;
    advdata.include_appearance      = true;
    advdata.flags                   = flags;
    advdata.p_manuf_specific_data   = &manuf_specific_data;
    advdata.p_service_data_array    = service_data_array;
    advdata.service_data_count      = 1;

    // Initialize scan response data
    memset(&scanrsp, 0, sizeof(scanrsp));
    scanrsp.uuids_complete.uuid_cnt = sizeof(adv_uuids) / sizeof(adv_uuids[0]);
    scanrsp.uuids_complete.p_uuids  = adv_uuids;
    scanrsp.p_manuf_specific_data   = &manuf_specific_data;
    scanrsp.p_service_data_array    = service_data_array;
    scanrsp.service_data_count      = 1;

    // Encode advertising data
    uint8_t adv_data[BLE_GAP_ADV_SET_DATA_SIZE_MAX];
    uint16_t adv_data_len = sizeof(adv_data);

    err_code = ble_advdata_encode(&advdata, adv_data, &adv_data_len);
    APP_ERROR_CHECK(err_code);

    // Encode scan response data
    uint8_t scan_rsp_data[BLE_GAP_ADV_SET_DATA_SIZE_MAX];
    uint16_t scan_rsp_data_len = sizeof(scan_rsp_data);

    err_code = ble_advdata_encode(&scanrsp, scan_rsp_data, &scan_rsp_data_len);
    APP_ERROR_CHECK(err_code);

    // Set advertising parameters
    ble_gap_adv_data_t adv_data_struct = {
        .adv_data.p_data = adv_data,
        .adv_data.len    = adv_data_len,
        .scan_rsp_data.p_data = scan_rsp_data,
        .scan_rsp_data.len    = scan_rsp_data_len,
    };

    ble_gap_adv_params_t adv_params;
    memset(&adv_params,
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮若于心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值