目录
2.1. HCI_LE_Read_Maximum_Advertising_Data_Length 命令
2.2. 响应事件(HCI Command Complete)格式
3.2. Max Advertising Data Length
HCI_LE_Read_Maximum_Advertising_Data_Length
是一个低功耗蓝牙(Bluetooth Low Energy, BLE)的HCI( Host Controller Interface ) 命令,用于读取设备支持的最大广播数据长度。该命令是蓝牙核心规范的一部分,并在蓝牙 5.0 及更高版本中引入。广播数据长度在蓝牙广播过程中非常关键,因为它决定了设备在单次广播事件中能够发送的信息量。
一、命令概述
HCI_LE_Read_Maximum_Advertising_Data_Length 命令的主要功能是读取控制器所支持的最大广播数据长度。这个长度决定了在广播事件、扫描响应或周期性广播中,设备能够发送的最大数据量。
BLUETOOTH CORE SPECIFICATION Version 5.4 | Vol 4, Part E page 2467
- OCF(Opcode Command Field,操作码命令字段):0x003A
- Parameters(参数):通常不需要输入参数
- ReturnParameters(返回参数):
- Status(状态):用于表示命令执行的结果状态。成功执行时,通常会返回状态码0x00。如果执行失败,则返回相应的错误状态码。
- Advertising_Data_Length(广播数据长度):命令的目的是获取这个值。在命令执行成功后,设备会通过事件响应提供这个信息。
- 应用场景:在BLE设备配置广播数据时,需要了解控制器支持的最大长度,以确保广播数据包的大小不会超过设备的处理能力。
- 数据碎片化:值得注意的是,最大量的广播数据可能需要在多个PDU(协议数据单元)中分片传输(见Spec [Vol 6] Part B, Section 2.3.4.9)。这意味着,尽管控制器支持一定的最大长度,但实际传输时可能需要根据PDU的大小进行分片。
LE Read Maximum Advertising Data Length命令是一个用于获取蓝牙设备最大广播数据长度的HCI命令,它不需要输入参数,并返回一个状态值和广播数据长度来表示命令的执行结果。
二、命令格式
HCI_LE_Read_Maximum_Advertising_Data_Length 命令的格式通常遵循蓝牙核心规范中定义的HCI命令结构。
2.1. HCI_LE_Read_Maximum_Advertising_Data_Length 命令
HCI_LE_Read_Maximum_Advertising_Data_Length 命令的格式通常包括以下几个部分:
- OGF(Opcode Group Field,操作码组字段):值:0x08或者0X20
- OCF(Opcode Command Field,操作码命令字段):0x003A
- 命令参数:HCI_LE_Read_Maximum_Advertising_Data_Length命令通常不包含任何额外的命令参数。
- 命令长度:由于该命令不包含额外的参数,因此其命令长度为0。
2.2. 响应事件(HCI Command Complete)格式
HCI_LE_Read_Maximum_Advertising_Data_Length命令执行后,控制器会返回一个HCI命令完成事件,其中包含状态码和最大广播数据长度等信息。
- 该事件包含以下字段:
- Event Code:0x0E,表示这是一个命令完成事件。
- Packet Length:事件的总长度,包括Event Code、Number of HCI Command Packets、Command Opcode和返回参数。
- Number of HCI Command Packets:表示此事件响应的HCI命令包的数量,对于此命令,通常为1。
- Command Opcode:与发送的命令相同的操作码,用于确认这是对哪个命令的响应。
- 返回参数:
- Status:一个无符号8位值,表示命令执行的结果。0x00表示成功,其他值表示失败,并带有特定的错误代码。
- Max Advertising Data Length:一个无符号16位值,表示控制器支持的最大广播数据长度(单位:字节)。
2.3. 示例
- 发送命令:
0x08 0x003A
(OGF和OCF的组合) - 假设响应为成功,则可能的事件响应为:
0x0E [Packet Length] 0x01 0x08 0x003A 0x00 [Max Advertising Data Length]
- 其中,[Packet Length]是事件的总长度,取决于Max Advertising Data Length的值(因为需要额外2个字节来表示它)。
0x01
表示此事件响应了一个HCI命令包。0x08 0x003A
是确认这是对HCI_LE_Read_Maximum_Advertising_Data_Length命令的响应。0x00
表示命令成功执行。[Max Advertising Data Length]
是控制器支持的最大广播数据长度。