CSR867x — 广播数据设置接口以及如何添加厂商数据

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 XX  作       者:ZHS(文化人)

 XX  联系方式:文章末尾Chat快问

 XX  版权声明:原创文章,欢迎评论和转载~转载时能告诉我一声就最好了

 XX  要说的话:作者水平有限,难免有不足之处,恳请指正!

 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

写在前面:CSR8670广播时是怎么填充广播数据呢?又是如何实现添加自定义厂商数据呢?经过与别的协议栈对比,在工程中找到了相应的接口;

一、广播数据设置接口:

        sink_ble_gap.c文件中

        sinkBleGapReadLocalNameComplete();

        sink_ble_advertising.c文件中

        bleSetupAdvertisingData();

CSR867x — 广播数据设置接口以及如何添加厂商数据

        我们选两个函数,看下:

        函数1:setupFlagAdData()

CSR867x — 广播数据设置接口以及如何添加厂商数据

           函数2:setupLocalNameAdvertisingData()

CSR867x — 广播数据设置接口以及如何添加厂商数据

         注意:return返回的是广播包数据净荷的长度

         ad_data[ad_index]:当前AD Structure长度,包含type和data;

         AD_DATA_HEADER_SIZE:广播数据头的长度,包含length和type;

         ad_index:当前AD Structure之前的数据净荷的长度;

         因为多算了一次type,所以减1;

二、添加自定义厂商数据:

        仿照上面的函数,自己完成一个接口就可以了;

        setupManufacturerDataAdData()

CSR867x — 广播数据设置接口以及如何添加厂商数据