[Android源码解析]蓝牙扫描结果反馈的分析

本文深入探讨了Android系统如何处理蓝牙扫描命令,分析了蓝牙控制器如何反馈搜索到的设备,以及上层如何处理这些设备。内容涵盖inquiry result event的定义、实现,以及inquiry result with RSSI event和extended inquiry result event的介绍,详细解析了EIR Data Types,如Service Class UUIDs、Local Name、Flags、Manufacture Specific Data和TX Power Level。
摘要由CSDN通过智能技术生成

       在前面两篇文章中,晓东和大家一起分析了android是如何向蓝牙发送扫描命令的,这篇文章我们将继续来看,蓝牙在收到扫描命令之后是如何向android上层反馈搜索到的设备以及上层对这些搜索到的设备是如何进行进一步处理的。

7inquiry result event的分析

         Inquiry result的意思大概就是在收到inquiryresponse的时候会从controller回应这个event上来,需要注意的是一个event可能会有多个response,并不是一个response对应一个event

         7.1 inquiry resulteventspec中的定义

    它在spec中的格式如下所示:


其中各个参数的意思如下:

Num_Responses:表示response的设备数目。上文我们有提到一个event是可以包含多个response的,这里就是表明究竟有多少个response的。

BD_ADDR:这个很好理解,就是每个responsebd addr。是按照顺序存储的,每个占6byte

Page scan repetition mode:这个其实大家也不要太关心,大概的意思就是page的时候采取的策略.他们具体的差别在于:

         R0对连接的时间要求很严格,并且pagingdevice需要有很好的clock,在这种模式下,别的连接是完全没有机会进来的。当然总的来说,他的功耗也是最大的.

         R1可以理解为连接时间要求还是很严格(和R0接近),但是设备没有足够好的蓝牙clock,就会建议使用这个模式,在这种模式下,别的设备时有机会连接上来的,当然功耗就没有R0大了,可以说他是R0R1之间的一个模式。

         R2 就是连时间要求都不是那么的严格了。其他就更不谈了,功耗当然也不是很大的。

         Reserved12这两个都是在早起的spec中才看到,v1.1之前。现在4.1都要出来了,所以我们就不用管了。

         Class of device:这个表示设备的类型。他分为主要设备类和次要设备类。其中主要设备类是其中的[12:8]位来表示,次要设备类是其中的[7:2]位来表示。


              主要设备类表


12

11

10

9

8

主要设备类

0

0

0

0

0

其他 [Ref #2]

0

0

0

0

1

计算机(台式机、笔记本、PDAorganizer ....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值