蓝牙设备改参数教程_传统蓝牙 BR/EDR 的搜索Inquiry

news/2025/3/14 17:25:13

传统蓝牙BR/EDR的搜索Inquiry

59589b0f0b9078b9c9e58dd580bdfe4b.png

一提到蓝牙想必大家都会随口而出蓝牙音乐、蓝牙免提电话等等蓝牙技术提供的这些功能,这也是用户使用蓝牙的目的。但所有这些功能得以正常使用,有一个必要条件——蓝牙搜索。操作蓝牙的这些功能必须得知道对端蓝牙设备的存在,再与之建立ACL连接,那这就离不开这期的主题,本篇文章就简单介绍下传统蓝牙搜索Inquiry。

蓝牙搜索协议简介

参考文件:蓝牙核心协议  《Core_v5.0.pdf》  ,第二卷,F部分

搜索Inquiry顾名思义就是检测和收集周围环境中的蓝牙设备,根据询问的方式可分为 One-Time Inquiry(一次性询问) 和 Periodic inquiry(周期性询问) 两种搜索模式。需要周期性地搜索蓝牙设备的情况下才会采用周期性询问这种方式,但是由于该种模式使用的场景有限且对功耗是个不小的负担,所以现在市面上的蓝牙设备基本不采用这种搜索模式,接下来就主要介绍下一次性询问。

One-Time Inquiry

步骤1:蓝牙Host通过命令HCI_Inquiry告知控制器Controller进入查询模式,用于发现周围环境中的其他蓝牙设备。

f2ac57918464fc18054ca7bcebc1b1bd.png

步骤2:蓝牙控制器Controller接收到上层开启搜索指令后将以指定的查询访问代码(IAC)和查询时长启动蓝牙基带搜索查询流程,对外发送ID包。周围环境中的蓝牙设备接收到ID包后会自己的设备信息封装到FHS包中做出响应,控制器解析FHS包获取所需的信息,并使用一个或多个查询结果事件将找到的设备相关信息返回给主机Host。

22a52844577e5fd9b7148f41165fec2d.png

步骤3(a):如果主机Host希望停止搜索查询,则使用HCI_Inquiry_Cancel命令通知控制器Controller立即停止查询过程,控制器接收到指令就会停止对外发送ID包执行停止查询流程。

6834b7a0731810ab5d4129d2af1d4b8d.png

步骤3(b):如果主机Host没有主动停止查询,则控制器Controller会在查询上报的结果已达数量限制或者查询时长已到而停止查询,并将查询的完成事件上报给Host。

7e61898627f82548852186d57827dddb.png

经过以上三步,一个完整的搜索查询Inquiry流程就完成了。对于流程中涉及到的HCI命令或事件再做如下说明:

1、HCI_Inquiry

87597c31697cdbf3da4ce68423376791.png

命令中三个参数的含义如下所示

LAP:上述步骤2中的查询访问代码就是从该值派生得到的,具体取值范围为是0x9E8B00 ~ 0x9E8B3F,但是只有 0x9E8B00 和 0x9E8B33 这两个数值是有效的,其他值保留供将来使用。

  • 0x9E8B33 代表一般/无限制查询访问代码(GIAC)

  • 0x9E8B00 代表有限的专用查询访问代码(LIAC)

由于LIAC的使用有其局限性,所以参数LAP基本上都是使用GIAC这一固定参数。

详细介绍可以参考蓝牙SIG官网Assigned Numbers中的Baseband部分。

链接:https://www.bluetooth.com/specifications/assigned-numbers/baseband/

3dac9c8e33a2c5d87dc65bbfd63b0bc6.png

Inquiry_Length:查询模式的总持续时间,当此时间超时后查询将被停止,该参数的取值范围及对应的超时时间如下图:

afd2d9a91a7d74b66b4251485b7d1264.png

Num_Responses:在查询停止之前可以接收的响应数,当响应数达到该值后,控制器Controller停止当前的查询,并上报Host查询完成事件。该参数的取值范围如下:

e733e6fe410b83e521057a14a07e0a27.png

2、上报查询的结果

在当前查询期间响应的蓝牙设备如果未被上报过且该设备没有被命令Set_Event_Filter过滤掉应始终以如下三种事件之一(Inquiry Result、Inquiry Result with RSSI或者Extended Inquiry Result)上报主机Host查询的结果,不管采用哪个事件上报Host,都是将查询到的设备信息告知主机。事件中具体包含什么信息感兴趣的同学可以执行查看具体协议中HCI COMMANDS AND EVENTS部分。主机协议栈依次接收到这些设备信息后,解析出相应的数据保存并上报蓝牙服务层。

如果搜索到的蓝牙设备在当前查询或查询期间已经被上报过,则该设备这次可能被上报,也可能不被上报,这取决于控制器Controller中的实现(对同一设备是只上报一次,还是只要设备响应就上报)。

最后随着HCI_Inquiry_Complete事件的上报,查询流程就完结了。那本篇传统蓝牙查询协议分享就到这,感兴趣的小伙伴欢迎私信留言一起讨论。

文章来源:https://blog.csdn.net/weixin_39626089/article/details/111675844
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-3822796.html

相关文章

python的idle无法输入中文_Mac 下 Python 的 IDLE 无法输入中文

这个问题之前认为不必要就忽略了, 今天重新试了下.问题之前系统上用pyenv装的python 2.7.10, tk是mac默认版本, 有中文问题;解决问题依然存在;pyenv install 2.7.10 重装之后问题解决.原因这一节:How Python Chooses Which Tk Library To UseThe Tcl/Tk major version is deter…

企业机房建设方案

选址要求 1.电力供给应充足可靠,通信应快速畅通,交通应便捷; 2.采用水蒸发冷却方式制冷的数据中心机房,水源应充足。 3.自然环境应清洁,环境温度应有利于节约能源; 4.应远离产生粉尘、油烟、有害气体以及生产或贮存具有腐蚀性、易燃、易爆物品的场所 5.应远离水灾、地震等…

【重磅】AlphaZero炼成最强通用棋类AI,DeepMind强化学习算法8小时完爆人类棋类游戏...

2019独角兽企业重金招聘Python工程师标准>>> 世界最强围棋AI AlphaGo Zero带给世人的震撼并没有想象中那么久——不是因为大家都去看谁(没)跟谁吃饭了,而是DeepMind再次迅速超越了他们自己,超越了我们剩下所有人的想象…

python是一种机器语言类型的编程语言_新手无从下手?十大机器学习编程语言任你选...

近几年来各行业对机器学习专家的需求不断增长,人们对了解可用于机器学习的编程语言的兴趣也逐渐增加。GitHub是微软旗下的代码库,它发布了一个著名的用于机器学习的编程语言纲要。虽然Python一直保持着领先地位,但实用的构建机器学习算法的语…

H3C WX2510h无线控制器如何网关式部署无线网络

环境: H3C-WX2510H AC控制器 H3C Comware Software, Version 7.1.064, Release 5457 AP H3CWA6320-C 问题描述: H3C wx2510h无线控制器如何网关式部署无线网络 解决方案: 1.配置DHCP服务,开启vlan1为DHCP服务器 2.新建地址…

pandas遍历每一行_pandas:快速处理字符串方法

前言当我们遇到一个超级大的DataFrame,里面有一列类型为字符串,要将每一行的字符串都用同一方式进行处理,一般会想到遍历整合DataFrame,但是如果直接这样做的话将会耗费很长时间,有时几个小时都处理不完。于是就有了本…

亿联会议系统操作使用全教程

环境: 终端VC800 亿联会议pc.v4.2.11 教程: 一、下载安装亿联会议PC/手机APP 官网下载 1.以下教程为Windows版演示 2.安装亿联会议软件(具体操作按软件提示步骤进行) 3.注册账号 3.1点击免费注册按钮,自动跳转至…

pd.DataFrame存在错位的循环对齐

pd.DataFrame存在错位的循环对齐(python) 问题描述: 在用tabula处理从pdf抓取的表格过程中,遇到了识别错位导致存在nan(空值)的情况, 需要对pd.DataFrame做调整。初始结构如下: 函数…

Win10 系统对话框一圈多出蓝色杂边,右边关闭按键看不见

环境: 联想E14笔记本 Windows 10 专业版 显卡驱动版本30.0 问题描述: Win10 系统对话框一圈多出蓝色杂边,右边关闭按键看不见 解决方案: 1.临时解决,禁用启用集显 2.重新安装集显驱动

python结构模式_Python设计模式(3):结构型

承接Python设计模式(2):创建型6. Adapter Class/Object(适配器)意图:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。适用性:你想使用一个已经存在的类,而…