摘要: 从蓝牙specispecification中看,基带协议主要分为8个部分来介绍的,分别是概述、物理信道、物理连接、逻辑传输、逻辑连接、封包、比特流的处理、组网行为。这里面会涉及到很多的概念,主要是在概述中解释这些概念,下面分别来介绍上面的几个部分: 概述 首先,我们先看一下基带处于蓝牙的那一层: 其 阅读全文
posted @ 2018-08-17 17:06 雪山飞燕 阅读(4594) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章中,我们已经分析了:a2dp初始化流程 这篇文章主要分析a2dp的连接流程,其中还是涉及到一些底层的profile以及protocol,SDP、AVDTP以及L2CAP等。 当蓝牙设备与主机配对完成之后,作为一个BREDR设备,会走SDP的流程进行服务搜索,当服务搜索完成之后,上层应用得 阅读全文
posted @ 2018-08-07 20:12 雪山飞燕 阅读(7851) 评论(0) 推荐(1) 编辑
摘要: 蓝牙启动的时候,会涉及到各个profile 的启动。这篇文章分析一下,蓝牙中a2dp profile的初始化流程。 我们从AdapterState.java中对于USER_TURN_ON 消息的处理说起: 继续看: 看看setProfileServiceState的实现,他就是实现一个for 循环, 阅读全文
posted @ 2018-08-02 21:04 雪山飞燕 阅读(5179) 评论(1) 推荐(2) 编辑
摘要: BREDR的设备 在进行配对完成之后,进行;连接之前都要进行服务的搜索,服务搜索走的流程是SDP,这篇文章就分析一下,bluedroid中SDP的代码流程,我们从配对完成的回调函数开始分析: 我这里分析的设备是音箱,会直接走SDP的流程。也就是会执行上面的btif_dm_get_remote_ser 阅读全文
posted @ 2018-08-01 17:59 雪山飞燕 阅读(4170) 评论(0) 推荐(1) 编辑
摘要: 当BLE设备已经完成配对,并且完成GATT服务的搜索,下一步就开始profile 的连接流程了,一般LE设备都是走的HOGP的流程,我们这篇文章就分析一下hogp的连接流程。 连接是从framework到JNI,再到协议栈,我们从JNI 分析流程吧。 在HID profile中,与framework 阅读全文
posted @ 2018-07-30 20:45 雪山飞燕 阅读(4980) 评论(1) 推荐(2) 编辑
摘要: 蓝牙主机和蓝牙设备建立连接之后,会在l2cap 层面上建立相应的channel,这些channel 基本上是用于各种不同的profile 或者protocol 进行通信用的。 当相应的profile或者protocol 不再被使用的时候,这些建立的channel 都要被清除掉。当一条link上面没有 阅读全文
posted @ 2018-07-27 20:06 雪山飞燕 阅读(1921) 评论(0) 推荐(1) 编辑
摘要: 关于bta_dm_cb.p_sec_cback,这里我们之前已经分析过,他就是bte_dm_evt ,最终调用的函数btif_dm_upstreams_evt : 继续看: btif_dm_save_ble_bonding_keys 很简单,就是保存SMP相关的key 到config文件,bond_ 阅读全文
posted @ 2018-07-26 20:59 雪山飞燕 阅读(1549) 评论(0) 推荐(1) 编辑
摘要: 进行GATT 通信,首先要打开GATT 的通道。下面我们分析BTA_GATTC_Open 这个函数: 这个函数在bta_gattc_api.c 文件中定义,这个是一个接口文件,里面没有做真正的open的动作,最终还是要将open 的事件传递到BTE层面: 接下来我们看看BTA_GATTC_API_O 阅读全文
posted @ 2018-07-26 20:57 雪山飞燕 阅读(3481) 评论(0) 推荐(0) 编辑
摘要: 我们先来看看在bluedroid 里面有多少地方调用到这里: 可以看出除了 它自己声明的地方,有三处 调用到这个函数。 一处是 进行discovery,一处是进行search的时候,还有一次是bta_dm_sys_hw_cback 中,这个在bta_dm_enable的时候就已经注册了,所有其实最先 阅读全文
posted @ 2018-07-25 11:03 雪山飞燕 阅读(1545) 评论(0) 推荐(0) 编辑
摘要: GATT的规范阅读起来还是比较简答, 但是这样的规范在代码上是如何实现的呢?下面就分析一下bluedroid 协议栈关于GATT的代码流程。 BLE的设备都是在SMP之后进行ATT的流程的交互。从代码的实现中发现也是在SMP结束之后做回调的执行过程中进行GATT的搜索流程,SMP结束之后的回调函数是 阅读全文
posted @ 2018-07-20 20:51 雪山飞燕 阅读(4465) 评论(0) 推荐(0) 编辑