蓝牙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:后续参数的长度
蓝牙HCI剖析(一)相关推荐
- 蓝牙HCI剖析(三)
HCI源码: bt_hci.h [cpp] view plain copy /* * This file is part of the HCI protocal. * Data :20160506 ...
- 蓝牙HCI剖析(二)
一.概述: 此篇文章主要是总结下HCI command 和 event 二.command 三.event: 四.此command和event是参照之前的一本书截图的,对于最新的core 4.2有很多 ...
- Android O HIDL的使用例子 -- 蓝牙HCI 服务进程
1.1.Treble 计划概览 Android O 引入" Treble" 计划,目标是通过重构 Android OS 的 framework,使 Android 设备制造商能更快 ...
- 获取Android蓝牙HCI日志
在我刚在开发者选项下开启开启蓝牙HCI信息搜集日志时, 使用adb并无法拿到btsnoop_hci.log. 随后查阅了许多资料, 折腾了许久, 包括什么要获取root权限等等. 最终在把USB连接方 ...
- 蓝牙HCI Dongle说明
Chipsets 本项目主要实现了蓝牙Host协议栈,并没有包含Controller部分,如果需要实现蓝牙交互,按照Core Spec,需要通过HCI接口连接其他蓝牙芯片实现蓝牙功能. 由于HCI接口 ...
- Android 蓝牙抓包和分析 (1) 启用蓝牙HCI信息收集日志
蓝牙通信其实和http通信有点类似,http通过接口交互抓取数据包也很方便,但是到了蓝牙就没那么方便了,本文就是介绍如何实现蓝牙数据包的抓取. 怎么抓包 另一种更为简便的抓包方式请阅读Android ...
- 蓝牙HCI command/event/acl/sco格式介绍
一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的一些概念,产生背景,发展轨迹,市面蓝牙介绍,以及蓝牙开发板介绍. 第二篇:Transp ...
- 使用Android手机抓取蓝牙HCI包
准备工作 一台安卓手机(应该不需要root权限) wireshark Frontline ComProbe Protocol Analysis System(CPAS) log文件获取 打开HCI侦听 ...
- 蓝牙-HCI错误码列表
错误码定义: 1 /* Success code */ 2 #define HCI_SUCCESS 0x00 3 /* Possible error codes */ 4 #define HCI_UN ...
最新文章
- Spring Boot项目开启异步使用多线程完整代码案例
- 《Nmap渗透测试指南》—第2章2.2节使用Zenmap进行扫描
- ping不通win7、8解决方法以及nc后门的制作
- MapReduce分析NCDC 年气象数据最低温度与最高温度
- 关于 asp.net 服务器控件几个 ID 的说明
- c++ STL平常练习-3
- Oracle logmnr使用
- 12通过作用域链实现闭包
- [网络安全自学篇] 九十二.《Windows黑客编程技术详解》之病毒启动技术创建进程API、突破SESSION0隔离、内存加载详解(3)
- Linux版本的SVN客户端,好的Linux(Ubuntu)SVN客户端
- CSS固定定位(position: fixed;/background-attachment: fixed;)
- 六一儿童节倾情奉献,校内首发,CSDN再发,2011年冬季c/c++程序员找工作心得
- BI可视化分析之Pentaho
- LDAP认证服务客户端配置
- 股票的发行原理是什么?
- 十进制整数,转换成八进制和十六进制数并输出。
- 理光打印机MP 3054 SP苹果电脑MAC驱动
- peakdet: Peak detection using MATLAB 峰识别 峰面积计算 peak area 相关matlab基本详解
- 舞会 关灯 黑帽子 白帽子问题
- SCRT连接服务器缓慢解决方法