【0x0008】HCI_Create_Connection_Cancel命令详解

目录

一、命令概述

二、命令格式及参数说明

2.1. HCI_Create_Connection_Cancel 命令格式

2.2. BD_ADDR

三、返回事件及参数说明

3.1. HCI_Command_Complete 事件

3.2. HCI_Connection_Complete 事件

四、命令执行流程梳理

4.1. 命令发起

4.2. 命令接收与初步判断

4.3. 根据连接状态执行操作

4.4. 相关事件发送顺序

4.5. 主机处理反馈

4.6. 示例代码

五、应用场景

5.1. 用户操作引发的取消

5.2. 环境因素导致的取消

5.3. 设备状态改变引发的取消

5.4. 其他应用场景

六、注意事项

6.1. 命令参数准确性

6.2. 事件处理与响应

6.3. 连接状态管理

6.4. 错误处理与命令协调


HCI_Create_Connection_Cancel 命令的核心作用在于请求取消由HCI_Create_Connection 命令所启动正在进行的连接创建过程。当出于某些原因,比如发现连接目标不合适、环境因素影响连接或者用户主动取消等情况时,就可以使用该命令来终止尚未完成的连接创建流程。

一、命令概述

当本地设备尝试与远程设备建立连接时,如果出于某种原因需要取消这个连接创建过程(例如,用户取消了操作,或者连接超时等),可以使用 HCI_Create_Connection_Cancel 命令。该命令会通知蓝牙控制器停止尝试与指定 BD_ADDR 的设备建立连接。

如果命令成功执行,蓝牙控制器将停止正在进行的连接创建过程,并返回状态码 0x00。如果命令失败(例如,因为指定的 BD_ADDR 无效,或者没有正在进行的连接创建过程与该 BD_ADDR 相关联),蓝牙控制器将返回相应的错误状态码。

二、命令格式及参数说明

2.1. HCI_Create_Connection_Cancel 命令格式

HCI_Create_Connection 命令的格式通常遵循 HCI 命令的一般结构,包括:

  • 命令前缀(一个字节,表示这是一个 HCI 命令包)
  • 操作码(Opcode,由 OGF 和 OCF 组成,用于标识具体的 HCI 命令)
  • 参数长度(表示后续参数的总长度)
  • 参数(本命令中为 BD_ADDR)

2.2. BD_ADDR

在 HCI_Create_Connection_Cancel 命令里,通过填写对应的 BD_ADDR,来明确是针对哪一个目标设备的连接创建过程要进行取消操作,就如同通过地址来指定要取消某项服务对应的具体对象一样。

  • 描述:这是一个 48 位的蓝牙设备地址(Bluetooth Device Address,简称 BD_ADDR),用于唯一标识一个蓝牙设备。
  • 格式:由 6 个十六进制数表示,例如 0xXX:0xXX:0xXX:0xXX:0xXX:0xXX。
  • 作用:准确地定位到之前发起连接创建的那个目标设备,确保取消操作作用在期望的连接创建流程上,避免误取消其他无关的连接尝试或者操作,保证命令执行的针对性和准确性。

三、返回事件及参数说明

当 HCI_Create_Connection_Cancel 命令执行完毕后,会触发一系列的事件和状态反馈,具体取决于连接的状态和之前的操作。

3.1. HCI_Command_Complete 事件

  • 基本事件生成:无论结果如何,当 HCI_Create_Connection_Cancel 命令执行完成后,都会生成一个 HCI_Command_Complete 事件。该事件用于通知主机(Host)该命令的执行状态。
  • 连接未建立时的处理
    • 如果在基带(Baseband)层连接尚未建立,但有一个与指定 BD_ADDR(蓝牙设备地址)相关联的连接创建过程正在进行,那么取消命令会成功执行,断开任何可能的连接尝试,并返回状态为“Success”(0x00)的 HCI_Command_Complete 事件。
    • 如果之前没有针对该 BD_ADDR 发起连接创建过程,那么控制器会返回状态为“Unknown Connection Identifier”(0x02)的 HCI_Command_Complete 事件,表示没有找到要取消的连接。
  • 连接已建立但尚未通知时的处理:如果在基带层连接已经建立,但 BR/EDR 控制器(蓝牙控制器)尚未向主机发送 HCI_Connection_Complete 事件(表示连接成功建立的事件),那么收到取消命令后,本地设备会断开连接,并返回状态为“Success”(0x00)的 HCI_Command_Complete 事件。
  • 连接已建立且已通知时的处理:如果连接已经建立,并且 HCI_Connection_Complete 事件已经发送给主机,那么控制器会返回状态为“Connection Already Exists”(0x0B的 HCI_Command_Complete 事件,表示连接已经存在,无法取消。

3.2. HCI_Connection_Complete 事件

  • 发送顺序及关联:无论取消命令是否成功,与原始 HCI_Create_Connection 命令相对应的 HCI_Connection_Complete 事件都会发送。并且其发送顺序是在 HCI_Create_Connection_

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch Serverless 中的数据流自动分片

作者:来自 Elastic Andrei Dan 在 Elastic Cloud Serverless 中,我们根据索引负载自动为数据流配置最佳分片数量,从而使用户无需摆弄分片。 传统上,用户会更改数据流的分片配置,以处理各种工作负载并充分利用可用资源。…

Pytest-Bdd-Playwright 系列教程(15):背景(Background)

Pytest-Bdd-Playwright 系列教程(15):背景(Background) 前言一、什么是背景(Background)二、特性文件三、测试脚本四、运行测试总结 前言 在测试的过程中,我们往往会遇到这样的问题&…

Excel + Notepad + CMD 命令行批量修改文件名

注意:该方式为直接修改原文件的文件名,不会生成新文件 新建Excel文件 A列:固定为 renB列:原文件名称C列:修改后保存的名称B列、C列,需要带文件后缀,为txt文件就是.txt结尾,为png图片…

GESP202412 八级【排队】题解(AC)

》》》点我查看「视频」详解》》》 [GESP202412 八级] 排队 题目描述 小杨所在班级共有 n n n 位同学,依次以 1 , 2 , … , n 1,2,\dots,n 1,2,…,n 标号。这 n n n 位同学想排成一行队伍,其中有些同学之间关系非常好,在队伍里需要排在…

Ubuntu22.04 docker如何发布镜像(和用git差不多)

在dockerhub上创建远程仓库:https://hub.docker.com/ 将本地镜像打tag,并修改成可以上传到 dockerhub 的形式 # 查看本地镜像# 修改镜像 ## docker tag 镜像名称:标签 新的镜像名称(要和远程仓库dockerhub上的一致):新的标签pus…

C#中的string操作详解-截取、分割、连接、替换等

在C#中,string 类提供了许多用于操作字符串的方法,包括截取、分隔和连接等。以下是一些常用字符串操作的介绍和实例: 1. 截取字符串 Substring 方法 用于从字符串中截取子字符串。 语法: //从startIndex开始截取,…

26. Three.js案例-自定义多面体

26. Three.js案例-自定义多面体 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染场景的主要类。它支持 WebGL 渲染,并提供了多种配置选项。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&…

【IC面试问题:UCIE PHY LSM AXI Cache】

IC面试问题:UCIE PHY LSM && AXI && Cache 1 UCIE PHY LSM有几种状态? 以及L1和L2这两种低功耗状态有什么区别?2 AXI的特性? 通道之间有依赖关系吗? master和slave的valid和ready关系? 写数…

PPT技巧:将幻灯片里的图片背景设置为透明

在PPT中添加了图片,想要将图片中的背景设置为透明或者想要抠图,有什么方法吗?今天分享两个方法。 方法一: 添加图片,选中图片之后,点击【图片格式】功能,点击最左边的【删除背景】 PPT会自动帮…

池化在深度学习中增强特征的作用

目录 ​编辑 引言 池化的基本作用与特征降维 池化的定义与目的 池化操作的实现 提取关键特征与计算效率的提升 池化对特征提取的影响 平均池化的应用 提高特征鲁棒性与过拟合的防止 池化对模型鲁棒性的贡献 池化防止过拟合的原理 增强多级特征与特征表达能力的提升…

分布式 Raft算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & Raft算法 & 总结》《分布式 & Raft算法 & 问题》 参考文献 《Raft一致性算法论文译文》《深入剖析共识性算法 Raft》 简介 Raft 木筏是一种基于日志复制实现的分布式容错&一致性算法。在Raft算法…

基于强化学习Q-learning算法的栅格地图路径规划算法,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码

Q-learning是一种无模型的强化学习算法,它允许智能体(agent)在与环境(environment)交互的过程中学习如何通过执行动作(actions)来最大化累积奖励(cumulative rewards)。 …

JAVA学习笔记——第十一章 枚举和注解

一、引出枚举类 1.先看一个需求demo package com.hspedu.enum_;public class Enumration01 {public static void main(String[] args) {Season Spring new Season("春天", "温暖");Season Summer new Season("夏天", "炎热");Seas…

腾讯微信Android面试题及参考答案(多张原理图)

Android 应用的启动流程如下: 当用户点击应用图标时,首先会通过 Launcher(桌面启动器)来响应这个操作。Launcher 本身也是一个 Android 应用,它运行在系统中,负责管理和显示桌面上的图标等信息。 系统会检查…

SQL server学习02-使用T-SQL创建数据库

目录 一, 使用T-SQL创建数据库 1,数据库的存储结构 2,创建数据库的语法结构 1)使用T-SQL创建学生成绩管理数据库 二,使用T-SQL修改数据库 1,修改数据库的语法结构 1)修改学生成绩管理数…

python web练习案例:基于表单类的商品管理(修改并删除商品信息)

目录 1、修改商品信息 (1)修改show.html页面,增加 修改 栏 (2)创建 update.html 网页,继承 add.html 模板 (3)定义视图函数 (4)定义路由 (5) 浏览器查看 …

前端成长之路:CSS(1)

在前端三件套中,CSS的主要是用于美化网页、进行页面布局的。 HTML的局限性 HTML是一个非常单纯的语言,它只关心内容的语义: 比如看见h1标签,就表明这是一个大标题、看见p标签,就表明这是一个段落、看见img标签&#…

【开源】基于SpringBoot框架的房屋租赁系统 (计算机毕业设计)+万字毕业论文 T020

系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…

hbuilder 本地插件配置

插件存放路径,项目根目录nativeplugins下,没有就新建。 aar文件存放路径\nativeplugins\module\android package.json存放路径\nativeplugins\module\ 配置package.json文件 { "name": "module", "id": "modu…

内圆弧转子泵绘制工具开发

接着上期的Gerotor 泵的话题继续。最近有小伙伴找我开发一个内圆弧摆线泵的计算绘制工具,也就是把上次计算绘制的过程做成一个桌面应用工具,这样用起来会更方便、效率更高。那究竟是什么样的工具呢?一起来看看: 前面不是已经有了上…