目录
一、事件概述
二、事件格式及参数
2.1. HCI_Connection_Request 事件格式
2.2. BD_ADDR
2.3. Class_Of_Device
2.4. Link_Type
三、主机响应
3.1. ACL链接类型
3.2. SCO或eSCO链接类型
四、应用场景
4.1. 设备配对场景
4.2. 蓝牙文件传输场景
4.3. 蓝牙物联网设备连接场景
4.4. 多设备蓝牙连接场景(如车载蓝牙系统)
五、注意事项
5.1. 事件解析与参数校验
5.2. 连接策略与安全性要求
5.3. 资源管理与连接状态
5.4. 链路类型与响应命令
5.5. 事件屏蔽与自动接受
5.6. 角色转换与兼容性
5.7. 事件反馈与后续处理
HCI_Connection_Request 是蓝牙协议栈中一个非常重要的事件,事件代码为 0x04。主要用于指示有一个新的传入连接正在尝试建立。这个事件标志着蓝牙设备间通信过程中的一个关键环节,决定了是否接受新的连接请求,从而影响后续的数据传输等操作。
一、事件概述
HCI_Connection_Request事件用于指示有一个新的入站连接尝试正在建立。主机(Host)在接收到此事件后,可以根据链接类型(Link_Type)参数来决定是接受还是拒绝该连接请求。
二、事件格式及参数
2.1. HCI_Connection_Request 事件格式
HCI_Connection_Request 事件由事件代码(Event Code)和事件参数(Event Parameters)组成。
事件通常包含以下参数:
- BD_ADDR:蓝牙设备地址(Bluetooth Device Address),表示尝试建立连接的远程设备的地址。
- Class_Of_Device:设备类别(Class of Device),表示远程设备的类别信息,用于描述设备的主要功能和特性。
- Link_Type:链接类型,指示尝试建立的连接类型。可以是异步无连接链路(ACL,Asynchronous Connection-Less),也可以是同步面向连接链路(SCO,Synchronous Connection-Oriented)或其增强版(eSCO)。
2.2. BD_ADDR
BD_ADDR在蓝牙通信中用于唯一标识一个蓝牙设备。当本地蓝牙设备接收到HCI_Connection_Request事件时,会检查事件中的BD_ADDR来确定是哪个远程设备正在尝试建立连接。
本地蓝牙设备可以根据BD_ADDR来决定是否接受连接请求。例如,可以将BD_ADDR与已知设备列表或白名单进行比较,以确定是否允许连接。
2.3. Class_Of_Device
Class_Of_Device用于在蓝牙协议的事件参数中精确地传递设备类别信息。
- 0xXXXXXX:是一个占位符,表示实际的设备类别值。在实际通信中,这个值会被替换为发起连接请求的远程设备的实际设备类别。
- X:表示十六进制数字(0-9, A-F),每个X代表一个4位的二进制数(即半个字节)。
- 因此,整个设备类别值由6个十六进制数字组成,每个数字占4位,总共24位。
- 0x000000:一个特殊的值,表示“未知的设备类别”。当蓝牙设备没有提供其设备类别时,可能会使用这个值。
2.4. Link_Type
Link_Type在HCI_Connection_Request事件中用于指示发起连接请求的远程设备希望建立的链接类型。
- 0x00:表示请求建立同步面向连接链路(SCO)连接。SCO链接通常用于语音传输,如蓝牙耳机中的音频流。
- 0x01:表示请求建立异步无连接链路(ACL)连接。ACL链接是蓝牙通信中最常用的链接类型,用于传输异步数据包,支持较大的数据量和较高的数据传输速率。
- 0x02ÿ