
HOGP_GATT btsnoop分析
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
本篇文档深入探讨了蓝牙协议栈中的HOGP(Human Interface Device HID over GATT Profile)与btsnoop日志的解析方法,旨在帮助开发者理解并优化蓝牙设备间的通信效率。
### HOGP_GATT btsnoop 分析
#### 概述
本段落主要聚焦于HOGP(Human Interface Device over GATT Profile)上ATT(Attribute Protocol)层的btsnoop日志分析,具体涉及从GATT服务搜索到HOGP service的过程,以及详细解析characteristic的获取流程,并解释report、report map及report ID之间的相互关系。
#### HOGP_GATT btsnoop 分析要点
##### 1. 配对与详细搜索阶段
在蓝牙设备通过bluedroid连接的过程中,GATT搜索被划分为两个阶段:
1. **初步搜索**:这一阶段主要目的是发现目标设备所支持的服务,通常被称为“配对”。
2. **详细搜索**:在确定了某个感兴趣的服务后,进一步获取该服务下的所有特征(characteristics)。
对于HOGP而言,成功配对的关键在于获取到HID (Human Interface Device) 的服务UUID(0x1812)。随后,GATT将依据特定的ATT命令来获取UUID等于0x1812的所有特征。
##### 2. 搜索Device的所有服务
接下来,我们将详细探讨btsnoop_hci日志中的服务搜索过程,特别是如何搜索设备的所有服务。
- **读取所有主服务 (Read by Group Type Request)**:本地设备发送Read by Group Type Request命令以获取设备端所有主服务的列表。
- **读取包含的服务 (Read by Type Request)**:读取每个主服务内所包含的服务。
- **读取特征 (Read by Type Request)**:读取每个主服务的特性(characteristics)。
- **查找特征配置 (Find Information Request)**:请求每个主服务的特性的详细信息。
##### 3. Discovery All Primary Services
在这一阶段,我们将通过具体的btsnoop日志帧来展示如何搜索所有主要的服务:
- **Frame526**:本地发送Read by Group Type Request命令:
- 操作码(Opcode): 0x10
- 起始处理号(Start Handle): 1
- 结束处理号(End Handle): 0xFFFF
- 分组类型 (Group Type): 主服务
- **Frame533**:远程设备响应Read by Group Type Request命令,返回部分主服务的信息:
- 操作码(Opcode): 0x11
- 长度(Length): 6
- 主服务列表:
- 处理号范围 (Handle): 1-4 – GAP Profile
- 处理号范围 (Handle): 5-13 – GAP Profile
- 处理号范围 (Handle): 14-17 – Battery Service
由于初始请求的结束处理号(End Handle)为0xFFFF,因此需要继续发送Read by Group Type Request命令来获取剩余的服务。
- **Frame535**:再次发送Read by Group Type Request:
- 操作码(Opcode): 0x10
- 起始处理号 (Start Handle): 18 (基于前一次请求的结果)
- 结束处理号(End Handle): 0xFFFF
- 分组类型 (Group Type): 主服务
- **Frame540**:远程设备再次响应,返回剩余的主服务信息:
- 操作码(Opcode): 0x11
- 长度(Length): 6
- 主服务列表:
- 处理号范围 (Handle): 18-26 – 设备信息
- 处理号范围 (Handle): 27-65535 – HID Service
至此,所有主服务已经被成功搜索完毕。具体包括以下:
- Handle: 1-4 – GAP Profile
- Handle: 5-13 – GAP Profile
- Handle: 14-17 – Battery Service
- Handle: 18-26 – 设备信息
- Handle: 27-65535 – HID Service
##### 4. Find Included Services
接下来,主机发送Read by Type Request命令以请求第一个主服务中包含的服务信息:
- 操作码(Opcode): 0x08
- 起始处理号 (Start Handle): 1 (针对第一个服务)
- 结束处理号(End Handle): 4 (针对第一个服务的结束)
- ATT类型:0x2802
至此,我们完成了初步搜索过程,并成功发现所有相关的主服务。下一步将深入探索这些服务的具体特性及其相互作用。通过对btsnoop日志进行详细分析,可以更好地理解HOGP服务的工作原理及与设备交互的方式。
全部评论 (0)


