【0x001C】HCI_Write_Page_Scan_Activity详解

目录

一、命令概述

二、命令格式和参数说明

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来确定的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/17310.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测

背景 如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当…

突破工业管理新高度:AI多模态引擎赋能设备维护管理

结合AI技术,可以帮助企业提升设备维护效率和管理复杂信息的能力。以下是一个详细流程和思路: 1. 项目背景概述 在高端制造业领域,如飞机、轮船、光刻机等设备的操作手册及零件图纸涉及大量的零配件信息和操作维护流程。传统方式难以高效管理…

C++重写和重定义和重载

重写 概念: 重写发生在类的继承体系中,是指在派生类中重新定义基类中已声明为虚函数(使用 virtual 关键字修饰)的函数。其目的是让派生类根据自身的需求对基类的虚函数提供不同的具体实现,从而实现运行时多态。 规则及…

centos7在使用yum源安装依赖时报错

1.在centos7中使用yum命令时候报错如下类似信息: Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock error was 14: curl#6 - "Could not resol…

小版本大不同 | Navicat 17 新增 TiDB 功能

近日,Navicat 17 迎来了小版本更新。此次版本新增了对 PingCap 公司的 TiDB 开源分布式关系型数据库的支持,进一步拓展了 Navicat 的兼容边界。即日起,Navicat 17 所有用户可免费升级至最新版本,通过 Navicat 工具实现 TiDB 数据库…

python 编程 在 Matplotlib 中 默认预定的所有颜色,可以使用多种方法来指定颜色,包括预定义的颜色名称、十六进制颜色代码、

在 Matplotlib 中,可以使用多种方法来指定颜色,包括预定义的颜色名称、十六进制颜色代码、RGB 元组等。如果你想要一个比较深的颜色,你可以选择一些预定义的深色名称,或者使用较低的亮度值来定义自己的颜色。 以下是一些预定义的…

【基于Java Springboot敬老院管理系统

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库…

JRebel插件,全教程

JRebel是一套JavaEE开发工具。相信大家都用过,但是频繁的需要激活,已经让java开发者烦不胜烦。 本篇文章来给大家解决这个烦恼。当然没有用过的同行,我也跟大家介绍一下: 简单来说,Jrebel 可快速实现热部署,在本地开发…

PPPoE技术详解

一 , 背景 随着运营商对宽带接入技术要求的不断提高,以xDSL,CableModem和以太网为主的几种宽带接入技术在用户管理和计费等方面的不足开始显露,已无法满足运营商的需求。 在众多的技术中,以太网接入方式经济实惠&…

[JAVA]MyBatis环境配置介绍

什么是MyBatis环境配置? MyBatis是基于JDBC对数据库进行操作,在我们进行数据操作时,我们需要告诉MyBatis我们连接哪个数据库,ip地址,数据库名称,用户名密码等。以此来进行环境配置。 首先,MyB…

Javascirpt时区——脱坑指南

最近业务反馈了一个约课功能的问题,澳大利亚的用户反馈,无法进行选课。排查之后发现是时区不对引起的,由于时区的偏差已经超过时间,导致无法选课。 这里对js中处理时区的问题做一些总结。 时区 时区(Time Zone&#xf…

不用来回切换,一个界面管理多个微信

你是不是也有多个微信号需要管理? 是不是也觉得频繁切换账号很麻烦? 是不是也想提升多账号管理的效率? 在工作中,好的辅助工具,能让我们的效率加倍增长! 今天, 就给大家分享一个多微管理工具…

每日OJ题_牛客_AB32【模板】哈夫曼编码_C++_Java

目录 牛客_AB32【模板】哈夫曼编码 题目解析 C代码 Java代码 牛客_AB32【模板】哈夫曼编码 【模板】哈夫曼编码_牛客题霸_牛客网 描述: 给出一个有n种字符组成的字符串,其中第ii种字符出现的次数为ai​。请你对该字符串应用哈夫曼编码,…

UDP协议

​ UDP协议 前置知识一、应用层的进程为什么要bind端口号二、如何确定网络中的一个进程三、进程 服务 协议 端口之间的关系四、常见的协议对应的端口五、一些命令六、一个进程能不能绑定多个端口号,一个端口号能不能被多个进程绑定七、对任何一个协议报文的认识 UD…

KkFileView4.1.0部署文档--linux

先看下官方文档:kkFileView - 在线文件预览 环境要求中的JDK8如果没有的,需先安装JDK8,这里不做展示。 第二个office相关环境要求在linux中会自动下载安装,不用管。 1、下载地址 Linux 或 MacOS 版: https://kkfil…

[论文笔记]An LLM Compiler for Parallel Function Calling

引言 今天带来一篇优化函数调用的论文笔记——An LLM Compiler for Parallel Function Calling。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 当前的函数(工具)调用方法通常需要对每个函数进行顺序推理和操作&…

基于JAVA的资源检索系统(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

展望:多模态融合与marker推断

技术进步使得利用高维、高通量、多尺度的生物医学数据从多个角度研究患者和疾病成为可能。在肿瘤学中,正在生成大量数据,从分子、组织病理学到临床记录。深度学习的引入极大地促进了生物医学数据的分析。然而,大多数方法都侧重于单一模态&…

AI在电商平台中的创新应用:提升销售效率与用户体验的数字化转型

1. 引言 AI技术在电商平台的应用已不仅仅停留在基础的数据分析和自动化推荐上。随着人工智能的迅速发展,越来越多的电商平台开始将AI技术深度融合到用户体验、定价策略、供应链优化、客户服务等核心业务中,从而显著提升运营效率和用户满意度。在这篇文章…

基于Java Springboot餐厅点餐系统(加入商家版)

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA 数据库:MySQL5.7…