目录
一、命令概述
二、命令格式和参数说明
2.1. HCI_Write_Page_Scan_Activity命令格式
2.2. Page_Scan_Interval
2.3. Page_Scan_Window
三、响应事件及参数说明
3.1. HCI_Command_Complete事件
3.2. Status
3.3. 示例
四、命令执行流程
4.1. 命令发起阶段(主机端)
4.2. 命令传输阶段
4.3. 命令接收与解析阶段(蓝牙控制器端)
4.4. 执行寻呼扫描活动设置阶段(蓝牙控制器端)
4.5. 完成操作与事件反馈阶段(蓝牙控制器端)
4.6. 主机接收反馈阶段
4.7. 示例代码
五、使用场景
5.1. 设备连接场景
5.2. 低功耗场景
5.3. 多设备协同场景
六、注意事项
6.1. 命令格式与参数
6.2. 命令执行与响应
6.3. 设备兼容性与互操作性
6.4. 功耗与性能权衡
6.5. 安全与隐私保护
HCI_Write_Page_Scan_Activity 是蓝牙主机控制器接口(HCI)中的一个命令。它主要用于控制蓝牙设备的寻呼扫描(Page Scan)活动。寻呼扫描是蓝牙设备在被其他设备寻呼(建立连接请求)时的一种监听机制,通过这个命令可以设置扫描的开启、关闭以及扫描的参数等,从而使设备能够响应其他设备的连接请求。
一、命令概述
HCI_Write_Page_Scan_Activity命令用于写入Page_Scan_Interval(寻呼扫描间隔)和Page_Scan_Window(寻呼扫描窗口)这两个配置参数的值。这两个参数共同决定了蓝牙设备在进行寻呼扫描时的行为。
- 参数关系:Page_Scan_Window必须小于或等于Page_Scan_Interval。这是因为寻呼扫描窗口是在寻呼扫描间隔所设定的时间范围内实际进行扫描的时间部分。
- 寻呼扫描的启用:Page Scan 仅在 Page_Scan 启用时执行,这表示,即使设置了寻呼扫描间隔和窗口,如果寻呼扫描功能(Page_Scan)没有被启用,设备也不会执行寻呼扫描。寻呼扫描的启用通常通过另一个命令(如HCI_Write_Scan_Enable)来控制。【0x001A】HCI_Write_Scan_Enable详解-CSDN博客
-
参数影响:改变 Page_Scan_Interval 可能会影响本地 Page Scan Repetition Mode,寻呼扫描间隔的改变可能会影响设备的寻呼扫描重复模式。寻呼扫描重复模式决定了设备在多长时间内重复进行寻呼扫描,以及每次扫描之间的间隔。
例如,在蓝牙设备实际应用场景中,假设一个蓝牙耳机,它平时处于待机状态,当用户想要将其与手机连接时,手机会向蓝牙耳机发送连接请求(寻呼)。蓝牙耳机的主机需要先确保 “Page_Scan” 功能是开启的,然后之前通过 “HCI_Write_Page_Scan_Activity” 命令设置好的 “Page_Scan_Interval” 和 “Page_Scan_Window” 参数才能起作用,让蓝牙耳机在合适的时间范围内开启射频接收来监听手机的寻呼信号,从而建立连接。并且,如果调整了 “Page_Scan_Interval”,蓝牙耳机的寻呼扫描重复模式可能会随之改变,这可能会影响它对其他设备后续连接请求的响应方式和效率。
二、命令格式和参数说明
2.1. HCI_Write_Page_Scan_Activity命令格式
HCI_Write_Page_Scan_Activity命令通常遵循蓝牙核心规范中定义的HCI(Host Controller Interface)命令格式。
具体来说,它包含以下几个部分:
- HCI_type:1个字节,用于标识命令的类型。对于HCI命令包,该字段的值通常为0x01。
- OpCode:2个字节,用于唯一标识命令的操作码(Opcode)。
- OpCode:2个字节,用于唯一标识命令的操作码(Opcode)。这个操作码由操作码组字段(OGF)和操作码命令字段(OCF)组成。
- OGF:占用高6位字节,表示命令所属的组。
- OCF:占用低10位字节,表示在特定组内的命令。
- Parameter Length:1个字节,表示后续参数的长度。
- Parameters:这是命令的核心部分,用于传递具体的设置信息,主要包括寻呼扫描间隔(Page_Scan_Interval)和寻呼扫描窗口(Page_Scan_Window)的值,还可能包含扫描模式等信息。
2.2. Page_Scan_Interval
Page_Scan_Interval这个配置参数用于明确连续两次寻呼扫描之间相隔的时间量。具体而言,它所规定的时间间隔是从蓝牙控制器启动上一次寻呼扫描的那个时间点开始,一直到其启动下一次寻呼扫描为止的这一段时长。可以说,这个参数掌控着设备进行寻呼扫描操作的节奏,对设备能否及时响应其他设备的连接请求以及设备自身的功耗情况有着关键影响。
- 大小:该参数占用2个八位字节(octets),即16位。
- 值范围:从0x0012到0x1000,且仅偶数值有效。其取值通过十六进制数值
N = 0xXXXX
来表示。 - 默认值:Page_Scan_Interval的默认值为0x0800。
- 时间(Time):表示Page_Scan_Interval所对应的时间长度,计算公式为N × 0.625毫秒(ms)。时间范围:
- 最小值:当N=0x0012时,Time=0x0012 × 0.625 ms = 11.25 ms。
- 最大值:当N=0x1000时,Time=0x1000 × 0.625 ms = 2560 ms(即2.56秒)。
- 默认时间:当N为默认值0x0800时,Time=0x0800 × 0.625 ms = 1280 ms(即1.28秒)。
Page_Scan_Interval的设置会影响设备的寻呼扫描频率。较小的值意味着设备会更频繁地进行寻呼扫描,从而可能更快地响应其他设备的连接请求。然而,这也可能增加设备的功耗。相反,较大的值会降低设备的寻呼扫描频率,减少功耗,但可能延长连接建立的时间。
2.3. Page_Scan_Window
Page_Scan_Window这个配置参数主要用于定义一次寻呼扫描持续的时间长度。简单来讲,就是在每次寻呼扫描过程中,蓝牙设备开启扫描以接收其他设备发出的寻呼信号的实际时间段。可以将其想象成设备打开了一个 “窗口”,在这个 “窗口” 时间内来监听其他设备的寻呼信号,而这个 “窗口” 打开多久就是由Page_Scan_Window来确定的。