dsads
1.概述
HCI支持四种类型的分组:
-
命令分组 Command Packet
-
异步数据分组 Asynchronous Data Packet
-
同步数据分组 Synchronous Data Packet
-
事件分组 Event Packe
分组类型是在HCI分组之前的一个字节值。 数据包类型具有以下值:
Packet |
Packet Type |
Command |
1 |
Asynchronous Data |
2 |
Synchronous Data |
3 |
Event |
4 |
HCI Packet Types
2.Command Packet
HCI命令包格式由三部分组成:用来确认发送命令的操作码(2字节)、参数长度(1字节)以及命令参数。每个命令都有自己一套独特的参数。
BLE中有三种基本命令类型,分别实现如下功能:
- 配置控制器状态
- 请求执行特定的操作
- 管理连接
2.1 OpCode
OGF Range (6 bits): 0x00-0x3F (0x3F reserved for vendor-specific debug commands)
- 参数最多255字节,不包括HCI命令包头。
- Opcode参数分为两个字段,称为OpCode组字段(OGF)和OpCode命令字段(OCF)
- 组域(OGF)(最高有效位6比特) 命令域(OCF)(最低有效位10比特)
- 0x3F的OGF保留用于特定于供应商的调试命令。
2.2 OGF
Link Control Commands: 1
Link Policy Commands: 2
Controller and Baseband Commands: 3
Informational Parameters: 4
Status Parameters: 5
Testing Commands: 6
LE Only Commands: 8
2.3 OGF 与OCF 组合
BT Commands for LE |
OGF |
OCF |
Opcode |
LE Set Event Mask |
8 |
1 |
0x2001 |
LE Read Buffer Size |
8 |
2 |
0x2002 |
LE Read Local Supported Features |
8 |
3 |
0x2003 |
LE Set Random Address |
8 |
5 |
0x2005 |
LE Set Advertising Parameters |
8 |
6 |
0x2006 |
LE Read Advertising Channel TX Power |
8 |
7 |
0x2007 |
LE Set Advertising Data |
8 |
8 |
0x2008 |
LE Set Scan Response Data |
8 |
9 |
0x2009 |
LE Set Advertise Enable |
8 |
10 |
0x200A |
LE Set Scan Parameters |
8 |
11 |
0x200B |
LE Set Scan Enable |
8 |
12 |
0x200C |
LE Create Connection |
8 |
13 |
0x200D |
LE Create Connection Cancel |
8 |
14 |
0x200E |
LE Read White List Size |
8 |
15 |
0x200F |
LE Clear White List |
8 |
16 |
0x2010 |
LE Add Device To White List |
8 |
17 |
0x2011 |
LE Remove Device From White List |
8 |
18 |
0x2012 |
LE Connection Update |
8 |
19 |
0x2013 |
LE Set Host Channel Classification |
8 |
20 |
0x2014 |
LE Read Channel Map |
8 |
21 |
0x2015 |
LE Read Remote Used Features |
8 |
22 |
0x2016 |
LE Encrypt |
8 |
23 |
0x2017 |
LE Rand |
8 |
24 |
0x2018 |
LE Start Encryption |
8 |
25 |
0x2019 |
LE Long Term Key Requested Reply |
8 |
26 |
0x201A |
LE Long Term Key Requested Negative Reply |
8 |
27 |
0x201B |
LE Read Supported States |
8 |
28 |
0x201C |
LE Receiver Test |
8 |
29 |
0x201D |
LE Transmitter Test (max TX power for CC2541 is 0 dBm) |
8 |
30 |
0x201E |
LE Test End Command |
8 |
31 |
0x201F |
LE Remote Connection Parameter Request Reply |
8 |
32 |
0x2020 |
LE Remote Connection Parameter Request Negative Reply |
8 |
33 |
0x20 |
Disconnect |
1 |
6 |
0x0406 |
Read Remote Version Information |
1 |
29 |
0x041D |
Set Event Mask |
3 |
1 |
0x0C01 |
Reset |
3 |
3 |
0x0C03 |
Read Transmit Power Level |
3 |
45 |
0x0C2D |
Set Controller To Host Flow Control (optional) |
3 |
49 |
0x0C31 |
Host Buffer Size (optional) |
3 |
51 |
0x0C33 |
Host Number Of Completed Packets (optional) |
3 |
53 |
0x0C35 |
Set Event Mask Page 2 |
3 |
63 |
0x0C63 |
Read Authenticated Payload Timeout |
4 |
123 |
0x0C7B |
Write Authenticated Payload Timeout |
4 |
124 |
0x0C7C |
Read Local Version Information |
4 |
1 |
0x1001 |
Read Local Supported Commands (optional) |
4 |
2 |
0x1002 |
Read Local Supported Features |
4 |
3 |
0x1003 |
Read BD_ADDR |
4 |
9 |
0x1009 |
Read RSSI |
5 |
5 |
0x1405 |
2.4 供应商特定的操作码(TI)
- 供应商特定的操作码由OGF值63 (0x3f)表示。
- 供应商可以根据需要使用剩余的10位(即OCF)。
- TI通过将10位细分为3bit MSB命令子组(CSG)和7bit LSB命令(CMD)来定义其供应商特定的OCF值。
- HCI使用CSG将命令路由到BLE堆栈内的指定子系统。
- 通过这种方式,可以为任何BLE堆栈层指定供应商特定的命令。
命令子组定义如下:
- 对于命令子组0到6,其余7位Command为每个子组提供最多128个命令。
- 对于子组7,剩余的7位指定128个配置文件中的一个,并指示后续字节将用作该特定配置文件的命令(即每个配置文件最多256个命令)。
HCI Extension Set Rx Gain |
63 |
0 |
0 |
0xFC00 |
HCI Extension Set Tx Power |
63 |
0 |
1 |
0xFC01 |
HCI Extension One Packet Per Event |
63 |
0 |
2 |
0xFC02 |
HCI Extension Clock Divide On Halt |
63 |
0 |
3 |
0xFC03 |
HCI Extension Declare NV Usage |
63 |
0 |
4 |
0xFC04 |
HCI Extension Decrypt |
63 |
0 |
5 |
0xFC05 |
HCI Extension Set Local Supported Features |
63 |
0 |
6 |
0xFC06 |
HCI Extension Set Fast Tx Response Time |
63 |
0 |
7 |
0xFC07 |
HCI Extension Modem Test Tx |
63 |
0 |
8 |
0xFC08 |
HCI Extension Modem Hop Test Tx |
63 |