【0x0035】HCI_LE_Set_Advertising_Set_Random_Address命令全面解析

目录

一、命令概述

二、命令格式

2.1.示例命令格式

2.2. 参数

2.3. 注意事项

2.4. 示例

三、命令参数详细说明 

3.1. 命令代码(Opcode)

3.2. 参数长度(Parameter Length)

3.3. 广播句柄(Advertising_Handle)

3.4. 随机地址(Random Address)

3.4. 其他可能参数(取决于实现)

3.5. 注意事项

四、返回参数详解

4.1. 命令状态

4.2. 错误代码

4.3. 随机地址状态

4.4. 其他相关信息

4.5. 注意事项

五、命令执行流程

5.1. 命令准备与发送

5.2. BLE控制器接收与验证

5.3. 地址更新与内部处理

5.4. 广播启动/重新配置

5.5. 后续操作

5.6. 注意事项

六、应用场景

6.1. 隐私保护

6.2. 广播过滤

6.3. 设备配对

6.4. 其他应用场景

七、注意事项

7.1. 地址类型

7.2. 地址唯一性

7.3. 隐私保护

7.4. 命令执行时机

7.5. 兼容性

7.6. 参数验证

7.7. 错误处理

八、示例代码


LE Set Advertising Set Random Address command(设置广播随机地址命令)是蓝牙低功耗(BLE)技术中用于指定广播过程中使用的随机设备地址的命令。此命令由主机(Host)发出,用于设置由Random_Address参数指定的随机地址。该地址将被控制器(Controller)用于在由Advertising_Handle参数指定的广播集中,包含在广播协议数据单元(PDU)中的广播者地址。

一、命令概述

来源:BLUETOOTH CORE SPECIFICATION Version 5.4 | Vol 4, Part E page 2444  

  • 命令用途:此命令允许主机为特定的广播集设置一个随机地址。这对于增强设备的隐私保护至关重要,因为使用随机地址可以显著降低设备被跟踪和识别的风险。

  • 参数

    • Advertising_Handle:用于标识特定的广播集的句柄。该句柄是在使用HCI_LE_Set_Extended_Advertising_Parameters命令创建广播集时分配的。
    • Random_Address:要设置的随机地址值,通常是一个48位的蓝牙地址。
  • 执行时机:此命令可以在使用HCI_LE_Set_Extended_Advertising_Parameters命令创建广播集后的任何时间发出。然而,如果主机在广播集(由Advertising_Handle标识)正在使用可连接广播并且已启用时发出此命令,控制器将返回错误代码“Command Disallowed”(命令不允许,错误码0x0C)。

  • 生效时间:如果此命令用于更改地址,则新随机地址将在下一个成功的HCI_LE_Set_Extended_Advertising_Enable命令执行后(对于普通广播)或下一个成功的HCI_LE_Periodic_Advertising_Enable命令执行后(对于周期性广播)生效。

二、命令格式

LE Set Advertising Set Random Address具体的命令格式和参数可能会根据不同的蓝牙协议栈实现而有所不同。以下是一个基于通用蓝牙API(例如,Bluetooth SIG定义的蓝牙核心规范)的示例格式,但请注意,实际使用时需要参考特定蓝牙栈的文档。

2.1.示例命令格式

以下是一个简化的示例,用于说明LE Set Advertising Set Random Address命令的可能格式:

LE Set Advertising Set Random Address (Command Code: 0xXXXX)  
Length: X bytes  
Parameters:  
    - Advertising Handle (2 octets): 广播的句柄,用于标识特定的广播集。  
    - Random Address (6 octets): 要设置的随机地址,通常为静态随机地址(Static Random Address)或私有随机地址(Private Random Address)。

2.2. 参数

  • Advertising Handle:这是一个唯一的标识符,用于区分不同的广播集。在创建广播集时,蓝牙协议栈会分配一个广播句柄。
  • Random Address:这是要设置的随机地址。在BLE中,设备可以使用随机地址来减少被追踪的风险。随机地址可以是静态的(在设备重启之间保持不变)或私有的(每次设备启动时都会改变)。

2.3. 注意事项

  • 命令代码0xXXXX是一个占位符,表示实际的命令代码。不同的蓝牙协议栈可能会有不同的命令代码。
  • 长度X bytes表示命令的总长度,包括命令代码、参数长度和参数本身。这个长度也会因蓝牙协议栈的不同而有所变化。
  • 参数格式:参数通常以字节(octet)为单位进行传输,每个参数都占据一定的字节数。
  • 广播句柄:确保广播句柄是有效的,并且与要设置的广播集相对应。
  • 随机地址:随机地址应符合BLE规范的要求,并且应避免与已知的设备地址冲突。

2.4. 示例

假设有一个蓝牙芯片或协议栈的实现中,LE Set Advertising Set Random Address命令的格式如下:

  • 命令代码:0xXXXX(具体代码由制造商定义)
  • 参数长度:2+6=8字节(广播句柄2字节+随机地址6字节)
  • 广告句柄:0x0001(示例值,实际值由设备或应用程序分配)
  • 随机地址:AA:BB:CC:DD:EE:FF(示例值,实际值应为随机生成的地址)

则命令的二进制表示可能如下(以十六进制为例): 

XX XX XX XX 02 00 01 AA BB CC DD EE FF
  • 其中XX XX XX XX表示命令代码及其后的参数长度字段(具体值取决于制造商的定义和命令的打包方式)。
  • 02表示参数长度为2+6=8字节。
  • 00 01表示广播句柄为0x0001。
  • AA BB CC DD EE FF表示要设置的随机地址为AA:BB:CC:DD:EE:FF。

三、命令参数详细说明 

来源:BLUETOOTH CORE SPECIFICATION Version 5.4 | Vol 4, Part E page 2444  

3.1. 命令代码(Opcode)

  • 功能:标识该命令的类型和目的,即设置广播设置中的随机地址。
  • 格式:通常为1或2个字节,具体取决于BLE协议栈或芯片的实现。
  • 说明:该代码是固定的,用于告诉BLE控制器或芯片,这是一个用于更改广播随机地址的命令。

3.2. 参数长度(Parameter Length)

  • 功能:指示紧随命令代码之后的参数的总长度。
  • 格式:通常为1个字节。
  • 说明<

猜你喜欢

转载自blog.csdn.net/weixin_37800531/article/details/142989729