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)و。谢谢大家浏览,我们下期再见。
简单是长期努力的结果,而不是起点
—— 不是我说的
评论
czz
2021年11月19日
czz
2021年11月19日