首页 > 其他分享 >【0x0006】HCI_Disconnect命令详解

【0x0006】HCI_Disconnect命令详解

时间:2024-12-11 15:30:20浏览次数:7  
标签:Disconnect 断开 0x0006 蓝牙 命令 HCI 连接

目录

一、命令概述

二、命令格式和参数说明

2.1. HCI_Disconnect 命令格式

2.2. Connection_Handle

2.3. Reason

三、返回事件说明

3.1. HCI_Command_Status 事件

3.2. HCI_Disconnection_Complete事件

3.3. HCI_LE_CIS_Established事件(针对CIS)

四、事件执行流程

4.1. 命令准备阶段

4.2. 命令发送阶段

4.3. 命令接收与初步反馈阶段

4.4. 连接断开阶段

4.5. 连接断开完成反馈阶段

4.6. 主机处理阶段

五、应用场景

5.1. 用户主动断开连接

5.2. 设备异常或不兼容时断开连接

5.3. 连接资源管理

5.4. 蓝牙设备的安全管理

5.5. 蓝牙设备的维护和调试

5.6. 示例代码

六、注意事项

6.1. 命令参数准确性

6.2. 连接管理与顺序

6.3. 事件处理与反馈

6.4. 其他注意事项


HCI_Disconnect 命令主要用于终止一个已经存在的蓝牙连接。在蓝牙通信的各类场景中,当需要结束特定连接时,就会使用到该命令,它起到了主动断开连接、释放相关资源的重要作用。

一、命令概述

HCI_Disconnect 命令用于终止现有的蓝牙连接。它接收两个参数:Connection_Handle(连接句柄),用于指示要断开的连接;以及Reason(原因),用于指示结束连接的原因。

  • 连接断开顺序:在断开ACL连接之前,必须确保在同一物理链路上的所有SCO(同步连接)、eSCO(增强同步连接)和CIS(连接导向同步)连接都已先被断开。这如果不遵循此顺序,这些连接将在ACL断开过程中被隐式断开,可能导致资源释放不当或通信混乱。
  • 中央设备(Central)的限制:
    • 命令顺序:在为同一个CIS发出HCI_LE_Create_CIS命令之前,不能发出HCI_Disconnect命令。否则,控制器将返回错误码“Command Disallowed (0x0C)”,表示不允许执行此命令。
    • 待处理命令:若存在待处理的HCI_LE_Create_CIS命令(即CIS尚未创建),此时发出HCI_Disconnect命令将成功执行,但CIS将不会被创建。
  • 外围设备(Peripheral)的限制:在控制器生成HCI_LE_CIS_Established事件之前,不能发出HCI_Disconnect命令。否则,控制器同样将返回错误码“Command Disallowed (0x0C)”。
  • 连接句柄的特殊性:在中央设备上,CIS的连接句柄在断开后仍然保持有效。意味着主机可以使用相同的连接句柄在后续时间点重新创建之前断开过的CIS,为蓝牙设备间的灵活连接提供了便利。

HCI_Disconnect命令虽然功能简单,但在实际使用中需严格遵循蓝牙通信协议规定的条件、顺序和限制。这些规定目的在确保蓝牙通信系统的稳定、有序运行,避免混乱和错误状态的出现。主机和控制器应根据实际情况灵活处理不同命令的执行顺序和结果,以满足蓝牙设备间灵活建立、断开和重新建立特定连接的需求。同时,在实际设计和实现蓝牙通信系统时,应充分考虑这些限制和特殊要求,以确保系统的正确性和可靠性。

二、命令格式和参数说明

2.1. HCI_Disconnect 命令格式

HCI_Disconnect命令的格式通常包括以下几个关键部分:

  • Packet Type:表示数据包类型。对于HCI命令,其值通常为0x01。

  • Opcode:操作码,由OGF(操作码组字段)和OCF(操作码命令字段)组成。

    • OGF:表示HCI命令的种类,如Link Control、Link Policy、Controller & BaseBand以及Information等。对于HCI_Disconnect命令,OGF的值为0x01,表示Link Control Command。
    • OCF:表示具体的HCI命令。对于HCI_Disconnect命令,OCF的值是固定的,用于区分不同的Link Control命令。
  • Parameter Length:参数长度字段,表示后续参数的长度。对于HCI_Disconnect命令,该字段的值通常为2(或根据具体实现有所不同),表示后续有两个字节的参数。

  • Parameters:参数部分,用于提供执行命令所需的具体信息。

2.2. Connection_Handle

Connection_Handle用于标识要断开连接的句柄。在蓝牙系统中,每个建立起来的连接都会被分配一个唯一的连接句柄,通过这个句柄就能精准地指定要断开的是哪一个具体连接,就如同通过房间号来确定要关闭哪一间屋子的门一样。

主机(Host)借助 Connection_Handle 参数,明确告诉蓝牙控制器(Controller)具体需要断开的连接对象,使得控制器能够准确无误地执行断开操作,避免误断其他正在使用的连接。

2.3. Reason

Reason参数表示结束连接的原因,会被复制到对应协议数据单元(PDU)的错误码字段中。在BR/EDR连接中,会被复制到 LMP_DETACH PDU 的错误码字段;而在BLE连接里,则会被复制到 LL_TERMINATE_IND 或 LL_CIS_TERMINATE_IND PDU 的错误码字段。

  • 0x05 - Authentication Failure
    • 认证失败。意味着在尝试建立蓝牙连接时,认证过程未成功完成。可能是由于密码或密钥不匹配、设备不支持所需的认证方法或其他安全相关的问题导致的。
  • 0x13 - Other End Terminated Connection (User Ended)
    • 另一端终止了连接(用户结束)。表示远程设备或用户主动断开了蓝牙连接。可能是由于用户操作、设备故障或远程设备上的策略导致的。
  • 0x14 - Other End Terminated Connection (Low Resources)
    • 另一端因资源不足而终止了连接。通常意味着远程设备由于资源限制(如内存、处理能力或带宽)而无法继续维持连接。
  • 0x15 - Other End Terminated Connection (About to Power Off)
    • 另一端即将关机而终止了连接。表示远程设备即将关闭电源,因此主动断开了蓝牙连接。
  • 0x1A - Unsupported Remote Feature
    • 不支持远程功能。表示尝试使用的蓝牙功能或特性在远程设备上不受支持。
  • 0x29 - Pairing with Unit Key Not Supported
    • 不支持与密钥配对。意味着在尝试建立蓝牙连接时,所需的配对方法(特别是使用单元密钥的方法)在远程设备上不受支持。
  • 0x3B - Unacceptable Connect

标签:Disconnect,断开,0x0006,蓝牙,命令,HCI,连接
From: https://blog.csdn.net/weixin_37800531/article/details/144359699

相关文章

  • 【恭喜你!认证通过 | HCIP题库 04】华为云HCIP云计算中级认证工程师题库,速刷!
    401.以下关于管理组件概念,说法错误的是?A.GaussDB为ITA、HDC提供数据库,用于存储数据信息B.TCM为升腾曦帆桌面管理系统,管理员通过TCM对TC进行日常管理C.License服务器是License的管理与发放系统,负责HDC的License管理与发放D.ITA可以处理虚拟机登录请求答案:D......
  • 城域网与数据中心互联 保姆级讲解(BGP综合选路)的配置过程及验证 HCIP大型网络设计必备
    本实验模拟某市ISP骨干网与两个数据中心互联的网络一、   实验拓扑二、   基础构思规划1.预配置包括:1.1所有设备互联IP已配置,且所有设备都有Loopback0地址。1.2SW1与SW2已创建vlan、划分vlan、并创建vlanif。1.3PC已配置IP和网关。2.在所有设备的系统......
  • 大虫刷题 最新华为考试 部分成绩公布 HCIA HCIP HCIE 附上聊天截图及相应成绩单 有图
                详细情况,可搜索微信小程序《大虫刷题》查看详情。......
  • HCIE-17 网络安全技术(二) 防火墙高级特性
    目录双机热备在网络中部署防火墙双机时面临的问题防火墙双机热备简介防火墙双机热备关键组件防火墙双机热备关键组件:VRRP与VGMP防火墙双机热备关键组件:HRP及心跳线防火墙双机热备典型组网场景虚拟系统防火墙虚拟系统的应用场景防火墙虚拟系统概述虚拟接口虚拟系统访问根系统两个虚......
  • HCIE-16 网络安全技术(一) 以太网交换安全
    目录端口隔离端口隔离技术背景端口隔离技术概述端口隔离技术原理端口隔离配置命令端口隔离配置举例端口隔离配置验证MAC地址表安全MAC地址表项类型MAC地址表安全功能MAC地址表项配置禁止MAC地址学习功能限制MAC地址学习数量MAC地址表安全配置举例配置验证端口安全端口安全技术背景......
  • HCIE-15 SRv6原理与配置
    目录SRv6概述IP/MPLS网络简介MPLSLDP与RSVP-TE存在的问题SR的起源与解决方案从MPLS到SRv6SRv6的技术价值SRv6原理SRv6基本概念SRv6原理简介SRv6SRH介绍SRv6Segment介绍SRv6Segment:LocatorSRv6Segment:Function&ArgumentsSRv6Segment类型介绍SRv6Segment命名规则SRv6S......
  • HCIE-13 VXLAN与园区网络虚拟化
    目录VXLAN及园区网络虚拟化技术背景技术背景:虚拟化被企业广泛部署网络的新需求:二层扩展网络的新需求:多租户隔离传统网络面临的问题VXLAN的基本概念VXLAN简介VXLAN在数据中心的应用在园区网络中使用VXLAN实现“一网多用”为什么选择VXLAN实现园区网络虚拟化VXLAN的报文格式NVEVTEPV......
  • HCIE-12 QoS基本原理
    目录QoS技术概述“尽力而为”的传统网络QoS的产生什么是QoSQoS服务模型尽力而为服务模型综合服务模型区分服务模型QoS常用技术(DiffServ模型)QoS数据处理流程(DiffServ模型)QoS流分类和流标记QoS数据处理流程为什么需要流分类和流标记简单流分类外部优先级-VLAN报文外部优先级......
  • HCIE-08 BGP高级特性 ORF 4字节AS等特性介绍
    目录ORF邻居按需发布路由ORF的基础配置命令ORF配置举例查看ORF配置对等体组BGP对等体组BGP对等体组的基础配置命令BGP对等体组配置举例查看BGP对等体组配置安全特性BGP安全性BGP认证BGP的GTSMBGP认证的基础配置命令GTSM功能的基础配置命令GTSM配置举例查看GTSM配置4字节AS号携带4......
  • HCIE-07 BGP路由控制 高级路由匹配工具
    目录概述BGP路由控制概述正则表达式特殊字符举例AS_PathFilter路由匹配工具:AS_PathFilter使用正则表达式匹配AS_PathAS_PathFilter的基础配置命令AS_PathFilter的配置举例查看AS_PathFilter相关信息CommunityFilter路由匹配工具:CommunityFilterCommunity属性设置Community......