蓝牙HCI剖析(一)

关键字:bluetooth 蓝牙协议  HCI剖析 HCI概述 HCI笔记 LMP L2CAP SDP RFCOMM

作者:zhongjun

本着互相学习的目的,来分享此一系列的文章,欢迎转载,请注明作者,尊重版权,谢谢

文章有不当处请指正,共同学习

此系列目前这样打算:

LMP剖析 + 模拟源码:

蓝牙LMP剖析(一)

蓝牙LMP剖析(二)

HCI剖析 + 模拟源码:

蓝牙HCI剖析(二)

蓝牙HCI剖析(三)

L2CAP剖析 + 模拟源码(未完成)

SDP剖析 + 模拟源码(未完成)

rfcomm剖析 + 模拟源码(未完成)

------------------------------------------------------------------------------------------------------------------------------------

华丽分割线,进入正题

------------------------------------------------------------------------------------------------------------------------------------

一.HCI介绍

HCI提供了访问bluetooth control的统一接口,通俗来讲,就是定义了特定的格式来控制蓝牙芯片来做相应的动作(比如inquiry,connect,disconnect)

还有一个问题,为什么我们发送的HCI data 芯片能识别并且执行相应的动作呢?

-》很简单,蓝牙芯片中也有HCI协议代码,烧到Bluetooth chip中,所以我们发送的data可以被正确的parse,执行相应的动作后再准确的回送给我们response

二.传送过程

三.Format

一共分四种packets format,COMMAND(host->control),EVENT(host<-control),ACL(host<-->control),SCO(host<-->control)

1.COMMAND(host->control)

通俗来讲就是蓝牙协议栈发送给芯片的命令,让芯片来执行相应的动作

foramt如图所示

参数:

OCF & OGF在文章二中有介绍

Parameter Total Length:后续参数的长度

举一例:

图4

2.EVENT(host<-control)

通俗来讲就是协议栈发给芯片命令后,芯片收到或者执行返回给蓝牙协议栈的status或者结果

format如图所示

参数:

Event Code:在文章二有详细列表

Parameter Total Length:后续参数的长度

举一例:

3.ACL(host<-->control)

通俗来讲,上层协议的data(L2CAP,SDP,RFCOMM,AVDTP,AVCTP,HFP AT,A2DP,AVRCP,PBAP,MAP,BNEP,HID等)都是透过这个packets传的

format如图所示:

参数:

Handle:建立蓝牙ACL连线后会有一个handle句柄

PB flag:一张图就懂了

BC flag:一张图就懂了

Parameter Total Length:后续参数的长度

举例:

4.SCO(host<-->control)

通俗来讲,比较多的在HFP,HSP通话中传送这个data format

format如图所示:

参数::

Connection_Handle:LMP建立SCO link的时候的句柄

Packet_Status_Flag (in packets sentby the Controller):

Data_Total_Length:后续参数的长度

时间: 2024-10-25 03:48:03

蓝牙HCI剖析(一)的相关文章

蓝牙HCI剖析(三)

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

蓝牙HCI剖析(二)

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

蓝牙L2CAP剖析(一)

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

蓝牙L2CAP剖析(二)

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

蓝牙LMP剖析(一)

一.序: 平时总是搞蓝牙协议,所以总是对RF,BB,LMP比较感兴趣,可能比较神秘,闲话不多说,直奔主题 二.LMP 消息用于建立链路.加密和控制,是属于ACL-C层次的,比ACL-U优先级较高,并且不会转发到更高层次,只是在芯片内处理 PDU格式如下图所示: 每个PDU的payload size要求不同 三.配对过程: 1.匹配 当两台设备无共用链接字时,则基于PIN和随机数创建初始化键Kinit.在验证器向请求者发出LMP_in_rand时创建Kinit键.如何创建键请参阅基带 规范.然后进

蓝牙-HCI错误码列表

错误码定义: 1 /* Success code */ 2 #define HCI_SUCCESS 0x00 3 /* Possible error codes */ 4 #define HCI_UNKNOWN_HCI_COMMAND 0x01 5 #define HCI_NO_CONNECTION 0x02 6 #define HCI_HW_FAILURE 0x03 7 #define HCI_PAGE_TIMEOUT 0x04 8 #define HCI_AUTHENTICATION_FAI

蓝牙 AVCTP 剖析

1.概述 AVCTP协议描述了蓝牙设备间Audio/Video的控制信号交换的格式和机制,它是一个总体的协议,具体的控制信息由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制command和response的总体的格式. 几个重要的点: (1)AVCTP uses point-to-point signaling over connection-oriented L2CAP channels. (2)AVCTP shall be able to support both control

蓝牙LMP剖析(二)

以下是 bt_lmp.h 源码: /* * This file is part of the LMP protocal. * Data :20160423 * Author: zhongjun * */ #ifndef BT_LMP_H_H #define BT_LMP_H_H #include "bt_cfg.h" #ifdef DEBUG_BT_LMP #define DEBUG(x) {printf x;} #define BT_LMP_DEBUG(x) DEBUG(x) #el

蓝牙OBEX剖析(一)

一.概述 二.架构 三.对象模型 1.可选头 Headers的构成 Headers简单的由<Header ID>和<Header Value>组成,简称为<HI>和<HV>. HI由一个字节组成,指出了Header包含的内容以及它的格式.HV包含了一个或者多个字节,其结构由HI所决定. 所有的Header都是可选的,取决于设备的类型和事务的种类.你可以使用所有的Header,或者一些,或者没有.ID可以使Header可解析以及与传输顺序无关,也可以使不支持的