码迷,mamicode.com
首页 > 其他好文 > 详细

蓝牙HCI剖析(一)

时间:2016-05-07 07:28:48      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

关键字: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:后续参数的长度



蓝牙HCI剖析(一)

标签:

原文地址:http://blog.csdn.net/xiaoxiaopengbo/article/details/51334257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!