BLE 扫描结果的上报
BLEScan上报
文章图片
BLE扫描的目的是为了获取到周围环境中的BLE设备信息上报给应用层apk使用 , 本篇就来简单聊聊scan上报的那点事 。
根据协议可知 , 蓝牙芯片层会将扫描到的设备信息通过LEAdvertisingReportevent事件上报到bluedroid , 单个或者多个BLE设备的信息都可以同时上报 , 但是现行的芯片层处理方式都是依次上报 , 所以上报事件中参数Num_Reports都为1 。 还有同学不清楚HCI_LE_Advertising_Report事件的请查收《低功耗蓝牙BLE扫描》 , 里面详细介绍了该事件中各参数的具体含义 。
文章图片
蓝牙芯片通过初始化设置的回调函数上报HCI事件 , 啥?你问我哪个回调函数…好家伙我直接一个《安卓系统蓝牙协议栈bluedroid使能流程》请收好 , 还懵逼的同学再次学习学习啊 。 HCI事件上报到协议栈无非就是解析数据 , 继续上报到蓝牙服务层进行数据封装处理 , 最后服务层再通过应用设置的回调函数直接上报这几个步骤 , 接下来就以时序图简单过下安卓系统中scan上报流程:
文章图片
【BLE 扫描结果的上报】经过如上流程 , 蓝牙芯片依次上报HCI_LE_Advertising_Report事件
文章图片
应用层apk就成功接收到周围环境中所扫描到的BLE设备信息 , 这些数据中相对而言比较重要的有如下两种数据:
EventTypes:对方BLE设备所发广播的类型 , 决定了该广播的用途
Addresses:BLE设备的地址值
文章图片
在蓝牙服务层GattService处理上报数据时 , 会再次过滤数据将符合条件的BLE设备上报给相对应的应用apk , 因此BLE扫描一般会有如下两个地方进行过滤操作:
蓝牙芯片 , 芯片里有多个过滤器 , 因此可以同时过滤多个条件 , 多个过滤器是或的关系 , 只要符合一个过滤器的要求 , 则该BLE设备信息就会上报
蓝牙服务层 , 过滤符合单个apk的要求 , 并将达标的BLE设备信息上报给该应用
Scanfilter过滤器功能能够最大程度上避免不必要的设备信息上报 , 从而只关注自己感兴趣的信息 , 大大提高了效率 。
本期分享到这儿就结束了 , 感兴趣的小伙伴欢迎私信留言一起讨论 , 共同学习 , 一起进步!
- 就是|搞笑GIF: 这就是自行车在太阳下暴晒的结果
- 婴幼儿能不能看电视?国内外均有研究结果,宝妈不妨直接参考建议
- 班主任|开心一刻: 第一次去按摩, 非常紧张, 结果看到服务员是前任…
- 屏幕真的是升级?红米K40对比小米10和红米K30至尊,结果纠结了!手机屏幕成为关键看点好的屏幕在使用过程中会非常舒服红米K30至尊版跟不上节奏红米K
- 玉兔二号果真去调查那块“石碑”,专家称不寻常,结果如何?
- 原神:刻晴VS北斗,谁才是雷系一姐,伤害测试结果令人无语!
- 自投罗网!醉驾司机见车就跟,结果跟着警车开进公安大院
- 宋亚轩自曝当《王牌》常驻嘉宾被嫉妒,当众点名,结果却让人意外
- 3月春风来,桃花朵朵开,这些星座的爱情,终于开花结果
- 环剥|核桃树结果少?环剥来帮忙?如何操作?