Biu~笔记:高通蓝牙ADK(28)--BLE广播长长了

Biu~最近看BLE的代码发现一个新的功能,好家伙,现在的BLE广播数据可以长长了,从245版本开始再也不用为短小而苦恼啦。


但是这功能在默认状态下是关闭的,也没有看到文档有使用介绍,看着代码兜兜转转终于开启了,步骤不多,大家也可以玩一下,有问题一起交流(步骤真的是简单得可怜,我都怀疑会不会出错,没有大量测试过,各位有遇到什么问题可以发来看看罒ω罒)

BLE广播数据的扩展,可以允许我们在广播中放入超过31 bytes的数据,这样就可以在广播数据中实现更多的应用。好,懂的都懂,那我们开始说说怎么用起来吧。首先我们知道le_adv_data_set_t这个结构体是用来设置广播数据的用途的,这个可以看我以前的博文介绍。以前只有三个参数,现在多了一个le_adv_data_set_extended_handset,就是多了一个广播数据扩展的数据集,在这个结构体定义的地方下面有两个语句,也是这个功能最关键的语句


从这两个语句就可以看出,可扩展的只有le_adv_data_set_extended_handset,那如果我想peer的广播扩展,就只需要把le_adv_data_set_peer放到LE_ADV_MGR_ADVERTISING_SET_EXTENDED中就可以了,


程序在设置广播数据时就会根据这里判断是否是扩展广播,是的话就会用扩展广播的操作函数把数据广播出去。

以上是本期博文的全部内容,如有疑问就别在博文下方评论留言了,有什么疑问或想了解的当面和我说(如果你知道我是谁的话ヽ( ̄▽ ̄)و),我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。

  

 











如果有那么简单小编就不用兜兜转转了,单单这样改,系统会报unsupported feature(Σ(⊙▽⊙”a 没这个功能写什么代码呀),一开始小编还以为还有什么参数没有设置,可是代码写的基本似乎大概差不多略等于无懈可击,简单的设置一下这里就好了。问题出在协议栈,协议栈尚未开启这个功能才会给应用层报unsupported feature,然后小编就去翻阅MIBkey的描述,找到了LE_SUPPORTED_FEATURES_MASK

到这里按理说,把这功能加进去就好了,但是→_→

默认代码没有写这个key的默认值,阿西吧!!!总不能为了单独使能这个功能而关了别的默认功能吧!

       所以,下面教大家如何读取默认代码中的隐藏MIBkey。

       首先,要装个最新的Bluesuite,打开里面的configAPP,使用方法可以参考这篇博文,这里我们说说里面的解码功能。

       按下图加载ADK下的这个目录ADK\bin\patches\wlcsp94,你就会发现新大陆

       


        然后再反手保存为text的方式,导出里面的MIBkey

导出来的文件是可阅读的文件,从里面搜索LE_SUPPORTED_FEATURES_MASK就可以看到他完整的默认值,把他整个数组copy到蓝牙地址的htf文件后面,修改扩展广播位为1


完成以上两个修改点才能真正打开扩展广播。

       以下展示一下把广播名字加长来体现扩展广播的效果

原来的样子:


修改gattServerGap_IsNameReturned函数,让他在peer配对广播中也可以广播名字(还不理解这里设定原理的,可以回看15篇的视频讲解


修改gattServerGap_GetAdvNameItem函数,让他提供我设定的名字


效果图(注意接收的手机或设备也要支持扩展广播才能看到):

 




        以上真的是本期博文的全部内容,如有疑问就别在博文下方评论留言了,有什么疑问或想了解的当面和我说(如果你知道我是谁的话ヽ( ̄▽ ̄)و),我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。

  

      简单是长期努力的结果,而不是起点

                                                           —— 不是我说的


 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论

czz

czz

2021年11月19日
刚看了一下都289.1了,跟不上速度了,刚移植完一个版本又来一个版本
czz

czz

2021年11月19日
好家伙,高通的软件都出到284.1了你还在用245.1,扣鸡腿