目录
2.1. HCI_Connection_Request 事件格式
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ÿ