Biu~笔记:高通蓝牙ADK(14)--添加BLE广播数据

       Biu~老伙计们。

 

我们来说说BLE的使用吧,这部分可能会比别的功能难搞,因为有大量的封装和数据处理,还有很多协议参数和系统变量,更难的是没有文档参考。ε=(´ο`*)))唉~接下来几篇,带大家由浅入深去了解这部分功能。

       首先我们先学习一个最简单的事情,在原有的ble广播上加入自己的数据。这数据可不是乱加的哈,ble的广播数据是有格式的,按照格式来加,这样即便你的数据没有意义,也可以被手机的调试软件(如nrf connect)识别出来,这样看起来也方便一点。不知道ble广播数据结构的,请自行百度学习

       接下来就是要找到一个突破口去了解ble的数据是在哪里设置进去的。这里用一个简单的默认应用去了解,Tx power可以说是最简单ble数据了。 我们看到tx_power.c 这个文件,代码并不多,但是跟下去还是需要点时间的,这里直接说个结论。这个文件中主要有两个地方是添加数据的关键,一个是le_adv_data_callback_t的结构体类型,这个结构体有三个函数指针变量

GetNumberOfItems:获取数据块个数。在ble数据格式中,一个数据块是由多个字节组成。第一个字节表示该组数据长度,第二个字节表示数据类型,和后面N个字节表示数据内容。在自定义的数据中有多少个数据块,就返回多少。

GetItem:获取数据块的数据,根据数据块数量,一个个检索出数据

ReleaseItems:释放存储数据块数据的指针,有时候数据不是固定长度固定内容时,就会用到动态申请空间去保存,等使用完之后就需要释放。而当数据内容是固定差不多时,可以不用这样做,直接用个全局变量保存数据。

另外这三个函数都有共同的形参le_adv_data_params_t,这个变量是用来筛选数据的,也就是说,只有和传进来的参数一致或兼容才能被广播(下篇详讲这筛选的逻辑)

le_adv_data_set_t: 可以简单的理解为这个广播的用途

le_adv_data_set_handset_identifiable  ——  配对状态的广播

le_adv_data_set_handset_unidentifiable  —— 非配对状态的广播

le_adv_data_set_peer —— peer配对状态的广播

le_adv_data_completeness_t:表示这个数据块能不能简短或跳过,常用于UUID和名字这些能缩短的广播数据

le_adv_data_completeness_full      ——  必须完整

le_adv_data_completeness_can_be_shortened     ——  可以缩短

le_adv_data_completeness_can_be_skipped          ——  可以不要

le_adv_data_placement_t:表示这个数据块要放在哪种广播包里面

le_adv_data_placement_advert      ——  广播包

le_adv_data_placement_scan_response ——  响应包

le_adv_data_placement_dont_care         ——  无所谓包

第二个重点就是了解完这些函数作用之后,就需要把这些API告诉系统,让他在广播时候会评估这些数据。

LeAdvertisingManager_Register就是把这些API注册到系统中


其中第一个参数task是用来接收广播状态变化的处理函数,如果不管这些状态的变化,可以直接写NULL;第二个参数就是前面提到的API结构体;而返回值就是这个API存在系统database的指针。完成以上两点的内容即可把自己的数据加到ble广播数据中了。


以上是本期博文的全部内容,如有疑问请在博文下方评论留言,或者有什么想了解的都可以留言,我会尽量安排上(o´ω`o)و。谢谢大家浏览,我们下期再见。

 

 

多看文档,多上官网

多看文档,多上官网

多看文档,多上官网

 

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

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

评论

方老板

方老板

2021年8月27日
20210827 到此一游
我很菜

我很菜

2021年8月3日
Biu 哥,牛逼格拉斯
realhjt

realhjt

2021年4月19日
太棒了,qcc3040平台添加manufacturer_data这个问题困扰了我很久,高通也不能提供demo code或文档,终于幸运了看到博主这篇文章,理解深刻非常受益~感谢!!!
tiger

tiger

2021年4月7日
很好的文章!!
Biu~

Biu~

2020年12月29日
为什么我的后续还没上
Biu~

Biu~

2020年12月28日
没得人留言,自己充个观众
Biu~

Biu~

2020年12月18日
没得人留言,自己充个观众
Biu~

Biu~

2020年12月11日
没得人留言,自己充个观众