【0x001C】HCI_Write_Page_Scan_Activity详解

devtools/2024/11/17 8:41:42/

目录

一、命令概述

二、命令格式和参数说明

HCI_Write_Page_Scan_Activity%E5%91%BD%E4%BB%A4%E6%A0%BC%E5%BC%8F-toc" style="margin-left:40px;">2.1. HCI_Write_Page_Scan_Activity命令格式

2.2. Page_Scan_Interval

2.3. Page_Scan_Window

三、响应事件及参数说明

HCI_Command_Complete%E4%BA%8B%E4%BB%B6-toc" style="margin-left:40px;">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”,蓝牙耳机的寻呼扫描重复模式可能会随之改变,这可能会影响它对其他设备后续连接请求的响应方式和效率。

二、命令格式和参数说明

HCI_Write_Page_Scan_Activity%E5%91%BD%E4%BB%A4%E6%A0%BC%E5%BC%8F">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来确定的。


http://www.ppmy.cn/devtools/134664.html

相关文章

基于BERT的命名体识别(NER)

基于BERT的命名实体识别(NER) 目录 项目背景项目结构环境准备数据准备代码实现 5.1 数据预处理 (src/preprocess.py)5.2 模型训练 (src/train.py)5.3 模型评估 (src/evaluate.py)5.4 模型推理 (src/inference.py) 项目运行 6.1 一键运行脚本 (run.sh)6…

AI写作(十)发展趋势与展望(10/10)

一、AI 写作的崛起之势 在当今科技飞速发展的时代,AI 写作如同一颗耀眼的新星,迅速崛起并在多个领域展现出强大的力量。 随着人工智能技术的不断进步,AI 写作在内容创作领域发挥着越来越重要的作用。据统计,目前已有众多企业开始…

async 和 await的使用

一、需求 点击按钮处理重复提交,想要通过disabled的方式实现。 但是点击按钮调用的方法里有ajax、跳转、弹窗等一系列逻辑操作,需要等方法里流程都走完,再把disabled设为false,这样下次点击按钮时就可以继续走方法里的ajax等操作…

Java读取WPS excel.xlsx嵌入图片

1. 背景&原因 经常有读取Excel文件的需求,开发者大多使用apache poi或者基于此的工具进行excel内容读取,前不久遇到了一个需求,读取每一行内容,但每一行都包含图片文件,发现无法通过已封装的工具读取excel的图片内…

无人机检测车辆——多目标检测

目录 YOLOv3(You Only Look Once version 3)简介 YOLOv3 的主要特点 YOLOv3 的结构 1. 特征提取网络(Backbone) 2. 检测头(Head) 3. 输出层 YOLOv3 损失函数 YOLOv3 的优势 YOLOv3 的应用 YOLOv3…

Scrapy并发请求深度解析:如何高效控制爬虫速度

标题:Scrapy并发请求深度解析:如何高效控制爬虫速度 引言 在Python的Scrapy框架中,合理设置并发请求数量是提高爬虫效率和遵守网站爬取规则的关键。本文将详细解释如何在Scrapy中设置并发请求的数量,并提供代码示例,…

鸿蒙进阶篇-定时器、递归

“在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。” 各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今…

6. Keepalived配置Nginx自动重启,实现7x24提供服务

一. Keepalived配置Nginx自动重启,实现7x24提供服务 1.编写不停的检查nginx服务器状态,停止并重启,重启失败后则停止keepalived脚本 cd /etc/keepalived/ vim check_nginx_alive_or_not.sh #---内容如下:--------------- #!/bin/bash A=`ps -C nginx --no-header |wc -l