BLE 扫描结果的上报

BLE Scan 上报

在这里插入图片描述

BLE扫描的目的是为了获取到周围环境中的BLE设备信息上报给应用层apk使用,本篇就来简单聊聊scan上报的那点事。

根据协议可知,蓝牙芯片层会将扫描到的设备信息通过 LE Advertising Report event 事件上报到bluedroid,单个或者多个BLE设备的信息都可以同时上报,但是现行的芯片层处理方式都是依次上报,所以上报事件中参数Num_Reports都为1。还有同学不清楚 HCI_LE_Advertising_Repor 事件的直接点击这里《低功耗蓝牙BLE扫描》,里面详细介绍了该事件中各参数的具体含义。
在这里插入图片描述

蓝牙芯片通过初始化设置的回调函数上报HCI事件,啥?你问我哪个回调函数……好家伙我直接一个链接 疯狂点我点我,还懵逼的同学里面请啊。HCI事件上报到协议栈无非就是解析数据,继续上报到蓝牙服务层进行数据封装处理,最后服务层再通过应用设置的回调函数直接上报这几个步骤,接下来就以时序图简单过下安卓系统中scan上报流程:
在这里插入图片描述

经过如上流程,蓝牙芯片依次上报 HCI_LE_Advertising_Repor 事件
在这里插入图片描述

应用层apk就成功接收到周围环境中所扫描到的BLE设备信息,这些数据中相对而言比较重要的有如下两种数据:

  • Event Types:对方BLE设备所发广播的类型,决定了该广播的用途
  • Addresses:BLE设备的地址值
    在这里插入图片描述

在蓝牙服务层GattService处理上报数据时,会再次过滤数据将符合条件的BLE设备上报给相对应的应用apk,因此BLE扫描一般会有如下两个地方进行过滤操作:

  1. 蓝牙芯片,芯片里有多个过滤器,因此可以同时过滤多个条件,多个过滤器是或的关系,只要符合一个过滤器的要求,则该BLE设备信息就会上报
  2. 蓝牙服务层,过滤符合单个apk的要求,并将达标的BLE设备信息上报给该应用

Scan filter 过滤器功能能够最大程度上避免不必要的设备信息上报,从而只关注自己感兴趣的信息,大大提高了效率。

本期分享到这儿就结束了,感兴趣的小伙伴欢迎私信留言一起讨论,共同学习,一起进步!

更多互联互通技术,欢迎关注微信公众号:Connectivity
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值