白话BLE技术 第十二篇 BLE日志分析

获取日志的方式有很多种,比如使用logalong日志文件和btsnoop文件,使用硬件可以获取air log,可以进行更加详细的分析。

首先,我们先看一下用logalong获取的btsnoop文件。我们使用的是Frontline公司的Viewer工具。获取的日志文件可以从下面的连接进行下载。

https://download.csdn.net/download/fanxinshr/11090441

打开以后,界面如下。

白话BLE技术 第十二篇 BLE日志分析_第1张图片

这是一个耳机和手机使用BLE连接的过程的日志。右边显示的是ATT的每一个包,左边显示的是每一个包的具体内容。点击不同的包,会在左边显示不同的包的内容。

因为我们的日志是在手机上获取的,所以在日志里,手机是Host端,耳机是Controller。

 

我们主要分析一下ATT里面的内容。

白话BLE技术 第十二篇 BLE日志分析_第2张图片

从这个部分,我们可以看出,这是手机在向耳机请求耳机上的信息,手机作为host端会发起request请求,耳机会给出response响应,一个请求,一个响应。如果手机发出请求以后,没有收到响应的话,就不会发送下一个请求。

首先host想要读取group type,获取了主要服务的信息。然后通过读取type的信息,来获取特性的内容。

具体来看

白话BLE技术 第十二篇 BLE日志分析_第3张图片

Host发出一个请求包,请求的内容是要求服务器提供主要服务的内容,查询句柄从1到65535的内容。

然后服务器给出了下面的响应。

白话BLE技术 第十二篇 BLE日志分析_第4张图片

在这个响应包中,我们可以看到,服务器告诉客户端,在句柄1到81的属性上,有一个主要服务的声明,这个服务是GAP Generic Access Profile,从句柄256到274上,有一个主要服务的声明,提供的这个服务是Generic Attribute Profile。并且从句柄512到641上,也哟䘝主要服务的声明,这个服务的内容是Device Information。

从这个响应包的内容上,手机作为客户端就可以知道服务器提供了GAP,GATT和Device Information的服务并且知道了这些服务的具体位置(可以根据句柄的号来定位服务的位置)。那么就可以在以后的交互中使用这些服务了。

 

接下来在frame 379的位置,客户端就开始询问服务器关于第一个GAP服务的具体内容。

白话BLE技术 第十二篇 BLE日志分析_第5张图片

因为在第一次询问的过程中,已经知道了GAP的位置在句柄1到81的地方,所以再次请求的时候,参数就是从句柄1到81。

白话BLE技术 第十二篇 BLE日志分析_第6张图片

服务器就对客户端的请求进行了响应,并且回复了关于GAP服务的具体内容。

在句柄16的位置上,内容是Device Name,在句柄32的位置上,内容是Appearance,在句柄48的位置上,内容是Peripheral Privacy Flag。对于每个属性,都有信息的权限规定。

然后客户端继续请求属性的内容,并且是从句柄49开始到句柄结束81的位置。

白话BLE技术 第十二篇 BLE日志分析_第7张图片

关于从49到81的内容,服务器会继续给客户端响应。

白话BLE技术 第十二篇 BLE日志分析_第8张图片

在句柄64 的位置,内容是Reconnection Address。在句柄是80的位置上,内容是Peripheral Preferred Connection Parameters。

客户端就是这样,通过一次又一次的请求,来获取到服务器上属性的全部内容。

你可能感兴趣的:(蓝牙源码分析)