Android Bluedroid 结构

Bluedroid框架

                        Java                                                                                   
+--------------------------------+                                                                              
  +-----------------+     C++/C                                                                                 
  |       BTIF      |                                                                                           
  +-----------------+                                                                                           
  |       BTA       |                                                                                           
  +-----------------+                                                                                           
  | Bluedroid Stack |                                                                                           
  +-----------------+  user space                                                                               
+---------------------------------+                                                                             
                      kernel space         

Bluedroid.png

Bluedroid主要分为3个部分:BTIF, BTA, Stack。
作为蓝牙核心服务,Bluetooth Stack模块则由Bluetooth Application Layer(BTA)和Bluetooth Embedded System(缩写为BTE)两大部分组成。
BTE:bluedroid的内部处理,又可以细分为BTA,BTU,BTM,HCI等

BTIF (Bluetooth Profile Interface)

BTIF:Bluetooth Application task(BTA)和JNI层之间从当媒介(网上也说胶水层)。
对上层JNI提供所有profile功能行的接口。该层还存在Bluetooth Interface Instance,所有Profile操作接口注册在其中(GAP, AV, DM, PAN, HF,HH, HL, Storage, Sockets)。Client应用通过Instance来操作Profile

BTA (Bluetooth Appication)

BTA:蓝牙应用层。指bluedroid中对各个profile实现和处理。上层下来的请求经过BTA层,通过消息发送的方式将请求传到BTA层中处理。

所有BTA消息送到BTU_TASK中,由bta_sys_event来处理;如果是Gatt相关的消息,由bta_gatt_hdl_event处理。

Stack:实现蓝牙底层操作。

BTU (Bluetooth Upper Layer)

BTU:承接BTA和HCI

BTM(Bluetooth Manager )

BTM:Bluedroid中的管理层。蓝牙配对和链路管理

HCI

HCI:读取和写入数据到蓝牙HW。主机与BT控制器之间的接口。

GKI模块

内核统一接口。该层是一个适配层,适配了OS相关的进程、内存相关的管理,还可以用于线程间传递消息 。主要通过变量gki_cb实现对进程的统一管理。GKI模块在Bluedroid中主要用于线程间通信。

bluedroid协议栈消息传递和处理

蓝牙协议栈里通信通过消息队列完成。

BLE

概念

BLE根据需要提供短数据包,然后关闭链路,BLE低功耗的原因之一。相对于常规蓝牙的传统配对方式,BLE设备尽在需要收发信息时才进行链接。

BLE通信方式极其严密。设备显示收发数据的服务,后者包含称之为特征的内容,用于定义可共享的数据。特征可包含描述符,帮助 定义数据。

大多数BLE API都支持搜索本地设备和发现有关设备的服务、特征和描述符。

ATT(Attribute Protoco:属性定义)
ATT是专门针对BLE设备而设计的优化型协议。ATT通过发送字节尽可能少的数据。所有属性均带有通用唯一标识符(UUID),后者为标准的128位字符串ID,以唯一的方式识别信息。ATT传输的属性被格式化为特征和服务。

  • 特征(Characteristic):包含一个单独数据以及0个或多个描述符以描述特征值。
  • 描述符(Descriptor):描述符制定了属性,可以描述特征值。可读的描述如可注明单位或测量,或定义可以接受的数值范围
  • 服务(Service):服务指特征的集合。例如一个service叫做“Heart Rate Monitor”,它可能包含多个Characteristics,其中可能包含一个叫做“heart rate measurement"的Characteristic。

GATT(Generic Attribute Profile:通用属性配置文件)
GATT配置文件是关于通过蓝牙低功耗链路收发短数据(称为属性)的通用规范。当前BLE应用配置文件均以GATT为基础。SIG对BLE设备的配置文件数量进行了预定义。这些配置文件是关于描述设备使用方法的规范。

GAP( Generic Access Profile:通用访问规范)
定义了设备如何发现,建立连接,实现绑定。

SM(Security Manager)
负责BLE通信中安全。

中心设备和外围设备
Central与peripheral
GATT server与GATT client

GAP用于外设设备与中心设备,每个设备可以充当多种角色,同一时间只能充当一种角色
GATT用于客户端与服务器。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容

  • Key Terms And Concepts 关键术语和概念 Here is a summary of key B...
    Jaesoon阅读 2,421评论 0 5
  • 前言: 本文主要描述Android BLE的一些基础知识及相关操作流程,不牵扯具体的业务实现,其中提供了针对广播包...
    幻影宇寰阅读 5,287评论 6 19
  • 背景 蓝牙历史说到蓝牙,就不得不说下蓝牙技术联盟(Bluetooth SIG),它负责蓝牙规范制定和推广的国际组织...
    徐正峰阅读 12,157评论 6 33
  • 低功耗蓝牙(BLE)设备的通信基本协议是 GATT, 要操作 BLE 设备,第一步就是要连接设备,其实就是连接 B...
    风雨byt阅读 3,872评论 1 11
  • 蓝牙 蓝牙的波段为2400-2483.5MHz(包括防护频带)。这是全球范围内无需取得执照(但定不是无管制的)的工...
    苏永茂阅读 6,064评论 0 11