蓝牙协议的命令和事件

实战 linux蓝牙编程之(八) hci 协议 应用编程实现    对于hci层的编程 是相当复杂的 功能也是强大的,建议学习者 去读bluez-lib中的hci和sdp  这里简要介绍 我在开发公司的项目中的 一个小的基础动作. 该编程的过程基本理清了hci和sdp的衔接和应用.希望对学习者有帮助说明有不到之处,望大家多多研究,不要局限,每个人有自己的方式,也许你的在逻辑算法上比我的好!!//scan是一个利用hci层协议 获得远程蓝牙设备 阅读详情
命令

下表列出蓝牙协议中从L2CAP到物理层的命令和事件映射。希望这个列表可以帮助你分析蓝牙协议中从协议高层发给较低层次的控制命令和消息命令。我们还会通过讲解一个示例来具体地说明协议高层收到连接请求时的情况。

L2CAP

HCI

LMP/BASEBAND

连接和不连接

L2CAP_ConnectReq
L2CAP_ConnectRsp
L2CAP_ConnectRspPnd
L2CAP_ConnectRspNeg
LP_ConnectReq
LP_ConnectRsp
LP_ConnectRspNeg
LP_ConnectCfm
LP_ConnectCfmNeg
LP_ConnectInd
L2CA_ConnectInd
L2CA_ConnectCfm
L2CA_ConnectCfmNeg
L2CA_ConnectPnd
L2CA_ConnectReq
L2CA_ConnectRsp
L2CA_ConnectRspNeg

HCI_Create_Connection
HCI_Accept_Connection_Request
HCI_Reject_Connection_Request
HCI_Add_SCO_Connection
HCI_Read_Connection_Accept_Timeout
HCI_Write_Connection_Accept_Timeout

LMP_host_connection_req
LMP_setup_complete
LMP_SCO_link_req

L2CAP_DisconnectReq
L2CAP_DisconnectRsp
LP_DisconnectInd
L2CA_DisconnectReq
L2CA_DisconnectRsp
L2CA_DisconnectInd
L2CA_DisconnectCfm

HCI_Disconnect

LMP_detach
LMP_remove_SCO_link_req

安全

L2CAP层不安全

HCI_Authentication_Requested
HCI_Set_Connection_Encryption
HCI_Change_Connection_Link_Key
HCI_Master_Link_Key
HCI_PIN_Code_Request_Reply
HCI_PIN_Code_Request_Negative_Reply
HCI_Link_Key_Request_Reply
HCI_Link_Key_Request_Negative_Reply
HCI_Read_Pin_Type
HCI_Write_Pin_Type
HCI_Create_New_Unit_Key
HCI_Read_Stored_Link_Key
HCI_Write_Stored_Link_Key
HCI_Delete_Stored_Link_Key
HCI_Read_Authentication_Enable
HCI_Write_Authentication_Enable
HCI_Read_Encryption_Mode
HCI_Write_Encryption_Mode

LMP_au_rand
LMP_in_rand
LMP_temp_rand
LMP_temp_key
LMP_comb_key
LMP_unit_key
LMP_sres
LMP_start_encryption_req
LMP_stop_encryption_req
LMP_encryption_mode_req
LMP_encryption_key_size_req
LMP_use_semi_permanent_key

模式处理

L2CAP层不进行模式处理

HCI_Hold_Mode
HCI_Sniff_Mode
HCI_Exit_Sniff_Mode
HCI_Park_Mode
HCI_Exit_Park_Mode
HCI_Read_Hold_Mode_Activity
HCI_Write_Hold_Mode_Activity

LMP_hold
LMP_hold_req
LMP_sniff
LMP_sniff_req
LMP_unsniff_req
LMP_park_req
LMP_park
LMP_set_broadcast_scan_window
LMP_modify_beacon
LMP_unpark_PM_ADDR_req
LMP_unpark_BD_ADDR_req

连接子状态

L2CAP不进行连接子状态处理

HCI_Inquiry
HCI_Inquiry_Cancel
HCI_Periodic_Inquiry_Mode
HCI_Exit_Periodic_Inquiry_Mode
HCI_Read_Page_Timeout
HCI_Write_Page_Timeout
HCI_Read_Scan_Enable
HCI_Write_Scan_Enable
HCI_Read_Page_Scan_Activity
HCI_Write_Page_Scan_Activity
HCI_Read_Inquiry_Scan_Activity
HCI_Write_Inquiry_Scan_Activity
HCI_Read_Page_Scan_Mode
HCI_Write_Page_Scan_Mode
HCI_Read_Page_Scan_Period_Mode
HCI_Write_Page_Scan_Period_Mode
HCI_Read_Num_Broadcast_Retransmissions
HCI_Write_Num_Broadcast_Retransmissions

LMP_page_mode_req
LMP_page_scan_mode_req

QoS和流控

LP_QoSReq
LP_QoSCfm
LP_QoSCfmNeg
LP_QoSViolationInd
L2CA_QoSViolationInd

HCI_QoS_Setup
HCI_Read_SCO_Flow_Control_Enable
HCI_Write_SCO_Flow_Control_Enable
HCI_Set_Host_Controller_To_Host_Flow_Control
HCI_Get_Link_Quality

LMP_quality_of_service
LMP_quality_of_service_req
LMP_auto_rate
LMP_preferred_rate

其他

L2CAP_Data
L2CAP_ConfigReq
L2CAP_ConfigRsp
L2CAP_ConfigRspNeg
L2CA_ConfigReq
L2CA_ConfigRsp
L2CA_ConfigRspNeg
L2CA_ConfigInd
L2CA_ConfigCfm
L2CA_ConfigCfmNeg
L2CA_TimeOutInd
L2CA_DataRead
L2CA_DataWrite

HCI_Change_Connection_Packet_Type
HCI_Remote_Name_Requested
HCI_Read_Remote_Supported_Features
HCI_Read_Remote_Version_Information
HCI_Read_Local_Version_Information
HCI_Local_Supported_Features
HCI_Read_Clock_Offset
HCI_Role_Discovery
HCI_Switch_Role
HCI_Read_Link_Policy_Settings
HCI_Write_Link_Policy_Settings
HCI_Read_Buffer_Size
HCI_Host_Buffer_Size
HCI_Read_Country_Code
HCI_BD_ADDR
HCI_Read_Current_IAC_LAP
HCI_Write_Current_IAC_LAP
HCI_Read_Number_Of_Supported_IAC
HCI_Read_Class_Of_Device
HCI_Write_Class_Of_Device
HCI_Read_Voice_Setting
HCI_Write_Voice_Setting
HCI_Read_Automatic_Flush_Timeout
HCI_Write_Automatic_Flush_Timeout
HCI_Read_Supervision_Timeout
HCI_Read_Link_Supervision_Timeout
HCI_Write_Link_Supervision_Timeout
HCI_Read_Transmit_Power_Level
HCI_Change_Local_Name
HCI_Read_Local_Name
HCI_Set_Event_Mask
HCI_Set_Event_Filter
HCI_Flush
HCI_Reset
HCI_Host_Number_Of_Completed_Packets

LMP_name_req
LMP_name_res
LMP_accpted
LMP_not_accepted
LMP_switch_req
LMP_version_req
LMP_version_res
LMP_clkoffset_req
LMP_clkoffset_res
LMP_timing_accuracy_req
LMP_timing_accuracy_res
LMP_max_power
LMP_min_power
LMP_incr_power_req
LMP_decr_power_req
LMP_slot_offset
LMP_max_slot
LMP_max_slot_req
LMP_features_req
LMP_features_res

 事件

HCI事件

说明

Inquiry Complete Event

表示查询已经完成。

Inquiry Result Event

表示某台蓝牙设备或者多台蓝牙设备在当前查询过程中已经做出响应。

Connection Complete Event

向形成连接的主机双方指示新连接已经建立。

Connection Request Event

表示新入站连接正在建立过程中。

Disconnection Complete Event

在连接被终止后触发。

Authentication Complete Event

当指定连接的认证过程完成后触发。

Remote Name Request Complete Event

表示远端名称请求已经完成。

Encryption Change Event

表示连接句柄(Connection_Handle)的加密变更已经完成。

Change Connection Link Key Complete Event

表示连接句柄的链路密钥(Link Key)变更已经完成。

Master Link Key Complete Event

表示蓝牙主机方的临时或者半永久链路密钥的变更已经完成。

Read Remote Supported Features Complete Event

表示获得远端蓝牙设备所支持特性的链路管理器(Link Manager)过程已经完成。

Read Remote Version Information Complete Event

表示获得远端蓝牙设备版本信息的链路管理器(Link Manager)过程已经完成。

QoS Setup Complete Event

表示设置远端蓝牙设备QoS的链路管理器过程已经完成。

Command Complete Event

主机控制器(Host Controller)使用该事件传递命令的返回状态。

Command Status Event

表示命令已经收到,主机控制器目前正在执行该命令下达的任务。

Hardware Error Event

表示蓝牙设备的某种类型硬件出现故障。

Flush Occurred Event

表示对指定的连接句柄当前被传输的用户数据已经取消。

Role Change Event

表示和特定连接相关联的当前蓝牙设备的角色已经改变。

Number Of Completed Packets Event

主机控制器使用该事件向主机表示在前一个Number Of Completed Packets 之后到目前每个Connection Handle 所完成的HCI 数据分组数量。

Mode Change Event

表示关联连接句柄的设备在Active、Hold、Sniff和Park模式之间发生了变更。

Return Link Keys Event

用于返回存储的链路秘钥。

PIN Code Request Event

表示需要PIN码来为某个连接创建新链路秘钥。

Link Key Request Event

表示以和BD_ADDR指定的设备连接需要一个链路密钥。

Link Key Notification Event

向主机表示和BD_ADDR指定的设备连接所需要的新链路密钥已经创建。

Loopback Command Event

回送主机发送给主机控制器的大多数命令。

Data Buffer Overflow Event

表示主机控制器的数据缓冲已经溢出。

Max Slots Change Event

在LMP_Max_Slots参数改变的时候通知主机。

Read Clock Offset Complete Event

表示获得Clock Offset 信息的LM过程已经完成。

Connection Packet Type Changed Event

表示改变指定连接句柄数据包类型的LM过程已经完成。

QoS Violation Event

表示LM不能为当前的连接句柄提供所需的QoS。

Page Scan Mode Change Event

表示已经连接的、具有指定连接句柄的远端蓝牙设备已经成功改变其寻呼扫描模式(Page_Scan_Mode)。

Page Scan Repetition Mode Change Event

表示已经连接的、具有指定连接句柄的远端蓝牙设备已经成功地改变Page_Scan_Repetition_Mode(SR)。

kali的蓝牙连不上某个设备(连上之后立马又断开)如何解决 我有两幅耳机,一副能连上,另一幅连上之后立马就断开,报错如下:Failed to connect: org.bluez.Error.Failed br-connection-page-timeout。 经过查询,据说“这可能是因为你在其它操作系统中用同样的蓝牙适配器配对了这个设备(比如双系统)。有的设备不能在MAC地址和多个设备联系的情况下工作。你可以先移除设配再重新配对” 阅读详情

相关推荐

蓝牙HCI协议介绍

1.HCI简介 HCI层为上层提供了一个统一访问hci控制器的接口,其接口为一系列的指令和事件。 主机(用户软件)对蓝牙芯片的控制都是通过协议规范中定义的指令,来控制蓝牙控制器(蓝牙芯片)进入相应的工作模式,例如在蓝牙启动的时候,主机会发送复位,设置蓝牙名称、设置pincode等指令,当控制器完成相关的操作后会返回相应的事件通知主机。 蓝牙核心架构抽象为三层: User Application(Host)...

qq_43824618的博客 4440

蓝牙HCI剖析(三)

关键字:bluetooth 蓝牙协议  HCI剖析 HCI概述 HCI笔记 LMP L2CAP SDP RFCOMM  作者:zhongjun 本着互相学习的目的,来分享此一系列的文章,欢迎转载,请注明作者,尊重版权,谢谢 文章有不当处请指正,共同学习 此系列目前这样打算: LMP剖析 + 模拟源码: 蓝牙LMP剖析(一) 蓝牙LMP剖析(二) HCI剖

朝气蓬勃 1万+

蓝牙HCI协议

HCI 层位于蓝牙高层协议和低层协议之间,提供了对基带控制器和链路管理器的命令以及访问蓝牙硬件的统一接口,它是我们实现自己的蓝牙设备要接触的第一个蓝牙协议,起着承上启下的作用。 HCI通过包的方式来传送数据、命令和事件的,所有在主机和主机控制器之间的通信都以包的形式进行。包括每个命令的返回参数都通过特定的事件包来传输。HCI有数据、命令和事件三种包,其中数据包是双向的,命令包只能从主机发往主机控制

本地服务器 1万+

【转】蓝牙协议的命令和事件

蓝牙协议的命令和事件(廖铮 2001年06月18日 16:21) 命令 下表列出蓝牙协议中从L2CAP到物理层的命令和事件映射。希望这个列表可以帮助你分析蓝牙协议中从协议高层发给较低层次的控制命令和消息命令。我们还会通过讲解一个示例来具体地说明协议高层收到连接请求时的情况。 L2CAP HCI LMP/BASEBAND 连接和不连接 L2CAP...

weixin_30352191的博客 162

深入解析蓝牙低功耗(BLE)协议栈中的HCI层:命令、数据与事件交互机制

本文深入解析蓝牙低功耗(BLE)协议栈中的HCI层,详细阐述了其作为主机与控制器间“翻译官”的核心作用。文章重点剖析了命令、ACL数据和事件三种核心数据包的交互机制,并通过一次完整的BLE连接建立过程,生动展示了HCI层如何协调工作以完成设备发现、连接与数据通信。掌握HCI层的交互原理是进行高效BLE应用开发和问题调试的关键。

weixin_29291863的博客 82

蓝牙配对HCI交互流程

参考资料: 在HCI层看蓝牙的连接过程_启程-优快云博客前言从蓝牙设备状态转换可以知道,蓝牙设备连接需经过Inquiry,page过程,本文主要从HCI角度分析连接过程。解析抓包文件用到的工具为Frontline 的Capture File Viewer。HCI简介HCI(Host Controller Interface):Core_v4.1规定了四种类型的接口,分别为普通串口(不带流控制),usb接口,SD接口,三线https://blog.youkuaiyun.com/u010657219/article/d

无线互联&网络介绍 2967

转载_蓝牙协议的命令和事件

命令 下表列出蓝牙协议中从L2CAP到物理层的命令和事件映射。希望这个列表可以帮助你分析蓝牙协议中从协议高层发给较低层次的控制命令和消息命令。我们还会通过讲解一个示例来具体地说明协议高层收到连接请求时的情况。 L2CAP HCI LMP/BASEBAND 连接和不连接 L2CAP_ConnectReq L2CAP_C

williamwanglei的专栏 1078

蓝牙学习笔记之HCI协议(一)

目录 协议浅述 HCI简介 HCI协议数据格式 HCI Command Packet HCI ACL Data Packet HCI Synchronous(SCO) Data Packet HCI Event Packet HCI命令和事件介绍 Inquiry command Write Local Name Command Read BD_ADDR Command H...

在云巅的博客 2万+

蓝牙开发实战:HCI协议命令与事件全解析(附Python示例代码)

本文深入解析蓝牙开发中的核心HCI协议,详细拆解命令与事件的数据包结构,并通过Python实战代码演示如何构建与蓝牙控制器的交互系统。内容涵盖HCI复位、低功耗蓝牙扫描等关键操作,帮助开发者掌握底层通信机制,解决连接不稳定等常见问题。

3c4x5z6v7b的博客 896

【福建dem】原始高程数据tif格式

DEM(Digital Elevation Model,数字高程模型)是一种地理信息系统中的关键数据集,它提供了地表地形的三维信息,通常用于分析地貌特征、模拟水文过程、规划建设、灾害预警等多个领域。这种数据对于地理分析非常有价值,例如,它可以用于计算坡度、坡向、地形粗糙度等地形特征,或者进行洪水模拟、地质灾害评估、太阳能辐射分析等。“福建dem原始高程数据tif格式”是研究和理解福建省地形地貌的重要资源,结合GIS工具,可以揭示丰富的地理信息,为科研、工程和决策提供有力支持。

鸿业远图科技 943

实战指南:UOS专业版命令行高效下载离线安装包及依赖

本文提供了一份UOS专业版离线安装包的实战下载指南。针对无外网环境下的软件部署难题,详细介绍了如何通过命令行精准获取软件包名,并利用`apt download`命令高效下载主程序及其所有依赖。文章重点解析了使用`apt install --dry-run`模拟安装来完整获取依赖包的方法,并给出了离线安装、问题排查及自动化脚本编写等高级技巧,帮助管理员和运维人员实现可靠的批量离线部署。

honey的博客 1108

经典蓝牙 HCI 协议深度解析——命令/事件/传输层与抓包实战

本文深入解析蓝牙协议栈中的HCI层,从设计原理到实战调试。HCI作为Host与Controller间的关键接口,通过四类数据(命令/事件/ACL/SCO)和五种传输层(H4/H5/USB等)实现解耦与标准化。文章系统拆解了Opcode编码、事件分派、流量控制等核心机制,并提供了btsnoop+Wireshark抓包分析方法。针对嵌入式开发中的常见问题,如命令序列编排、传输层选型、流控失效等,给出了具体调试方案与工具链指南。适合需要深入HCI层开发的蓝牙工程师参考。

YsmileTlong的博客 686

(超详细)Scala环境搭建(scala-2.12.15、IDEA2021.1.3)

Scala环境搭建(scala-2.12.15、IDEA2021.1.3) JunLeon——go big or go home 目录 Scala环境搭建(scala-2.12.15、IDEA2021.1.3) 一、Scala概述 1、什么是Scala? 2、Scala发展史 3、Scala与Java的关系 二、Scala环境搭建 1、环境准备 2、Scala安装与配置环境变量 3、验证Scala 三、编写第一个Scala程序 1、使用IDEA创建maven工程 2、.

JunLeon的博客 3万+

蓝牙协议栈学习笔记

H4 是 UART 传输中最简的一个 Transport,只是在HCI raw data 的前面加一个 type 就行,如下 HCI 一共有五种 HCI data:1)HCI COMMAND:由蓝牙协议栈发送给芯片的命令(HOST->CONTROLLER)2)HCI EVENT:由蓝牙芯片上报给蓝牙协议栈的事件(HOST

szxhcljyjsjdff的博客 5920

【WRF-Urban运行】WRF-SLUCM耦合建模参数设置及模拟运行

WRF-SLUCM耦合建模参数设置及模拟运行

WW、forever的博客 1723

到底什么是指令集?什么是微架构?他们是什么关系?

指令集、处理器架构、芯片厂商、ARM、x86,其间关系还在迷糊吗?一文迅速理清!!

车载系统攻城狮 7811
上一篇: 基于蓝牙的数据传输系统的设计
下一篇: 蓝牙核心规范中HCI层的研究与开发分析
SingleCode
博客等级 码龄15年 11粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值