首页 > 其他分享 >【0x001A】HCI_Write_Scan_Enable详解

【0x001A】HCI_Write_Scan_Enable详解

时间:2024-11-13 10:15:20浏览次数:3  
标签:Enable Scan 扫描 蓝牙 Write HCI 设备

目录

一、命令概述

二、命令格式及参数说明

2.1. HCI Write Scan Enable命令格式

2.2. Scan_Enable

三、响应事件及参数说明

3.1. HCI_Command_Complete事件

3.2. Status

四、命令执流程

4.1. 命令发起与准备

4.2. 命令传输

4.3. 命令接收与解析(蓝牙控制器端)

4.4. 扫描功能配置

4.5. 完成操作与事件反馈

4.6. 主机接收事件并处理

4.7. 示例代码

五、使用场景

5.1. 设备发现与配对场景

5.2. 连接状态管理场景

5.3. 低功耗管理场景

5.4. 安全与隐私场景

六、注意事项

6.1. 参数设置的准确性

6.2. 命令执行顺序和时机

6.3. 事件处理的完整性

6.4. 硬件和资源限制

6.5. 其他注意事项


HCI_Write_Scan_Enable是一个蓝牙主机控制器接口HCI(Host Controller Interface)指令,它主要用于控制蓝牙设备的扫描功能开启或关闭状态。这个命令对于蓝牙设备在发现周围其他蓝牙设备或者被其他设备发现的过程中起到关键作用。

一、命令概述

HCI_Write_Scan_Enable指令允许主机(Host)控制蓝牙控制器(Controller)是否进入扫描状态。

扫描状态包括两种:Page Scan和Inquiry ScanPage Scan用于响应其他设备的连接请求,而Inquiry Scan则用于发现周围的蓝牙设备。

二、命令格式及参数说明

2.1. HCI Write Scan Enable命令格式

HCI Write Scan Enable命令的格式通常遵循HCI命令包的通用结构。

包括:

  • 指令类型:标识该数据包为HCI命令包。
  • 操作码(OpCode):由操作码字段(OCF)和操作组字段(OGF)组成,用于唯一标识该命令。对于HCI_Write_Scan_Enable命令,OGF通常为0x03(表示HCI Control and Baseband commands),OCF则根据具体蓝牙规范版本可能有所不同。
  • 参数长度:表示后续参数的长度,对于HCI_Write_Scan_Enable命令,该长度通常为1个字节。
  • 参数:即Scan_Enable配置参数的值,用于指定蓝牙设备的扫描状态。

2.2. Scan_Enable

Scan_EnableHCI_Write_Scan_Enable命令中的关键参数。它用于控制蓝牙设备的扫描行为,其取值决定了蓝牙控制器(Controller)是否可以定期检测其他蓝牙控制器的Page Attempts和查询请求(Inquiry Requests)。

Scan_Enable参数的具体配置通常是通过位掩码来实现的,每一位代表一个特定的扫描功能。

  • 0x00(默认值):表示不启用任何扫描。在这种状态下,设备不会主动去查找其他蓝牙设备(不进行查询扫描 - Inquiry Scan),也不会响应其他设备的连接请求扫描(不进行寻呼扫描 - Page Scan)。这样的设置适用于设备不需要发现其他设备或者被其他设备发现的场景,例如,当设备已经完成配对并且不需要重新连接或发现新设备时,保持这个状态可以节省电量并减少不必要的信号干扰。
  • 0x01:启用查询扫描(Inquiry Scan),但禁用寻呼扫描(Page Scan)。查询扫描主要用于主动搜索周围可被发现的蓝牙设备。当设备开启此扫描模式时,它会在蓝牙频段内监听其他设备发送的可发现信号(例如,设备的广播消息),以便发现可以与之建立连接的设备。然而,由于寻呼扫描被禁用,设备不会响应其他设备发起的连接请求扫描,意味着其他设备不能直接通过寻呼扫描来连接此设备。这种模式适用于设备只想主动寻找其他设备,但暂时不希望被其他设备连接的情况,比如一个设备正在搜索周围的蓝牙打印机来打印文件,但不想被其他未知设备连接。
  • 0x03:同时启用查询扫描和寻呼扫描。设备既会主动搜索周围可连接的设备,也会响应其他设备的连接请求。这是一种比较通用的扫描模式,适用于设备需要积极参与设备发现和连接过程的场景,比如蓝牙设备在初次设置或重新设置连接环境时,希望能够与周围设备相互发现并建立连接。
  • 其他值:所有其他值是为将来使用而保留的。

HCI_Write_Scan_Enable命令通过Scan_Enable参数来控制蓝牙设备的扫描功能,包括查询扫描和寻呼扫描的启用或禁用。正确的配置对于确保设备的正常工作和互操作性至关重要。

三、响应事件及参数说明

当HCI_Write_Scan_Enable命令执行完毕后,会生成一个HCI_Command_Complete事件(除非该事件被屏蔽)。这是蓝牙HCI的标准流程,用于通知主机(Host)该命令已成功执行并完成了其预期的操作。

3.1. HCI_Command_Complete事件

HCI_Command_Complete事件包含了关于已执行命令的详细信息,包括:

  • 事件头(Event Header)
    • 事件码(Event Code):对于HCI_Command_Complete事件,有一个特定的事件码用于标识此事件类型。这个事件码是按照蓝牙协议规定的固定值,用于让接收方(如蓝牙主机)能够识别这是一个命令完成事件。
    • 参数总长度(Parameter Total Length):指示整个事件携带的参数部分的总长度,以字节为单位。这个长度信息有助于接收方正确地解析后续的参数内容。
  • 命令完成状态参数(Parameters)
    • 命令操作码(Command Opcode):这是之前发送的HCI_Write_Scan_Enable命令的操作码。通过这个操作码,接收方可以确定是哪个命令完成了,因为可能同时有多个命令在执行或者排队等待执行。操作码是由操作码组字段(OGF)和操作码命令字段(OCF)组成的唯一标识符。
    • 返回状态(Return Status):表示命令执行的结果状态。例如,成功完成命令可能有一个特定的值(如 0x00,表示成功),而如果出现错误,可能会返回其他错误码(如 0x01 - 0xFF 范围内的不同值,每个值对应不同的错误情况,具体取决于蓝牙协议规定)。

标签:Enable,Scan,扫描,蓝牙,Write,HCI,设备
From: https://blog.csdn.net/weixin_37800531/article/details/143695459

相关文章

  • electron报错: "Request Autofill.enable failed.", "Request Autofill.enable failed
    问题今天尝试electron最简单的demo,在打开开发者工具的时候,会报错"RequestAutofill.enablefailed.","RequestAutofill.enablefailed.".解决经过网上搜索,确定这个报错的原因是因为electron版本和node.js版本不匹配的问题。node<=v16.13已经有网友整理过了,可以参......
  • 红日七靶场--Writeup
     环境下载地址http://vulnstack.qiyuanxuetang.net/vuln/detail/9/前置配置环境拓扑网络编辑(这里桥接模式的网段不能通第二层也就是52的网段,笔记中桥接模式无法联网所以使用了52的nat网段)DMZ区域:-给Ubuntu(Web1)配置了两个网卡,一个桥接可以对外提供服务;一个连接在......
  • 【场景削减】基于DBSCAN密度聚类风电-负荷确定性场景缩减方法(Matlab代码实现)
     ......
  • 实战:看懂并分析执行计划——Index Scan (NonClustered)
    根据该执行计划截图中的信息,我们可以看到SQLServer在执行该查询时使用了IndexScan(NonClustered),这通常表示数据库未能利用索引进行精确查找,因此进行了较大的扫描操作。以下是对每行信息的解释和优化建议。IndexScan(NonClustered)解释PhysicalOperation:In......
  • 网页突破复制粘贴Absolute Enable Right Click & Copy插件
    网页突破复制粘贴AbsoluteEnableRightClick&Copy插件,可以先下载,微软官方有edge,chrome系列浏览器可以用。步骤如下1、2、3、4、这样,浏览器浏览网页遇到不能复制粘贴,则可以打开扩展程序的指针,允许复制粘贴功能。即可。 ......
  • HCL AppScan Standard 10.7.0 (Windows) - Web 应用程序安全测试
    HCLAppScanStandard10.7.0(Windows)-Web应用程序安全测试HCLAppScanStandardv10forWindowsMultilingual请访问原文链接:https://sysin.org/blog/appscan-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org市场领先的应用程序安全解决方案(SAST、D......
  • Mit6.S081笔记Lab6: Lab6: Copy-on-Write Fork for xv6 写时复制
    课程地址:https://pdos.csail.mit.edu/6.S081/2020/schedule.htmlLab地址:https://pdos.csail.mit.edu/6.S081/2020/labs/cow.html我的代码地址:https://github.com/Amroning/MIT6.S081/tree/cowxv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻译......
  • HCL AppScan Standard 10.7.0 发布下载,新增功能介绍
    HCLAppScanStandard10.7.0(Windows)-Web应用程序安全测试HCLAppScanStandardv10forWindowsMultilingual请访问原文链接:https://sysin.org/blog/appscan-10/查看最新版。原创作品,转载请保留出处。作者主页:sysin.org市场领先的应用程序安全解决方案(SAST、DAST、I......
  • 一文带您了解SonarScanner的原理和使用方法(包括maven构建和命令行执行)
    SonarScanner扫描代码SonarScanner执行源代码分析。这个独立的程序在CI/CD主机上运行,并将分析结果发送到SonarQube服务器,由其计算分析结果,计算质量门并生成报告。为了执行分析,SonarScanner使用安装时从SonarQube服务器下载的语言分析器。SonarScanner和SonarQube二者的关系,通......
  • DDR Study -LPDDR5 DFE / Data Copy / Write X / Link ECC / FSP
    参考来源:JESD209-5B简单分享下LPDDR5中部分功能模块DFE,WriteX,DataCopy的设计。以及对比LPDDR4,ECC和FSP的变化。DFE-DecisionFeedbackEqualization首先需要了解在LPDDR5的高频工作模式下,最高的DataRate可以逼近6400Mbps,而LPDDR5x最高速率更是可以达到8533Mbps......