摘要: 这篇文章简单分析一下 蓝牙音箱配对流程.现在的音箱基本都支持security simple pairing.所以这里的流程基本上就是ssp的代码流程. 源码参考的是 Android 6.0 上面的bluedroid.这里先介绍一些bluedroid定义的概率. 首先介绍一下 配对的几个状态:pair 阅读全文
posted @ 2019-01-08 23:24 雪山飞燕 阅读(5538) 评论(0) 推荐(1) 编辑
摘要: 在 文章中分析了Hogp的连接的流程 ,这里分析一下回连的流程. 在使用ble设备的过程中,我们发现当设备和主机配对之后,如果没有解除配对,那么即便设备和主机断开,那么也是可以重新连接而不需要重新走配对的流程,这里的分析的源代码是Android7.0 . 回连的大概的流程是:hogp 连接完成之后, 阅读全文
posted @ 2018-12-18 20:35 雪山飞燕 阅读(6361) 评论(0) 推荐(2) 编辑
摘要: 之前分析了a2dp profile 的初始化的流程,这篇文章分析一下,音频流在bluedroid中的处理流程。 上层的音频接口是调用a2dp hal 里面的接口来进行命令以及数据的发送的。 关于控制通道的初始化以及建立的过程,这里就不分析了,我们主要看数据的流向和处理。我们从控制通道的最后一个命令s 阅读全文
posted @ 2018-09-13 16:48 雪山飞燕 阅读(6339) 评论(0) 推荐(2) 编辑
摘要: 如果一个BLE设备已经与蓝牙中心设备连接上,那么当中心设备的断电重启,其依然会和配对过的BLE设备连接上,而不需要重新走配对的流程,这个过程叫做回连。 这篇文章就分析一下当中心设备断电重启之后,其与BLE设备的回连的流程。 当设备重启之后,蓝牙协议栈以及所有的上层的profile 都要重新进行初始化 阅读全文
posted @ 2018-09-06 20:20 雪山飞燕 阅读(8586) 评论(1) 推荐(0) 编辑
摘要: bluedroid的alarm 机制实现在osi/osi/src/alarm.cc 中: 这里面实现了很多的接口: 我们先看一个使用alarm 的事例: 在hci_layer.cc 文件中关于hci_module_start_up 的实现: 当startup_timeout_ms 时间到达的时候,如 阅读全文
posted @ 2018-08-28 17:54 雪山飞燕 阅读(2033) 评论(0) 推荐(1) 编辑
摘要: A2dp sink的初始化流程和A2dp 的初始化流程,基本一样,这里做简单分析.这里分析的android的版本是Android O. 我们先从service的启动说起吧. 下面 是启动的时候的log: 我们看看 A2dpSinkService.java的start函数的实现: 这里比较重要的地方就 阅读全文
posted @ 2018-08-27 17:54 雪山飞燕 阅读(6202) 评论(0) 推荐(0) 编辑
摘要: Legacy pairing 从名字上看可以知道它是老式设备采用的配对方法。 配对的最终目的是为了生成key,key可以给链路加密,保证双方设备通信的安全性。那配对流程的讲述其实就是key的生成过程。 key的生成是经过各种各样的算法,这里不会针对具体的算法讲述,而是着重描述其流程,以及key生成过 阅读全文
posted @ 2018-08-19 10:33 雪山飞燕 阅读(3832) 评论(2) 推荐(0) 编辑
摘要: 之前写了一篇 bluedroid对于sdp的实现的源码分析 ,他其实对于sdp 协议本身的分析并不多,而是侧重于 sdp 处于Android bluedroid 架构中的代码流程,这篇文章,是针对SDP 的规范来整理SDP 协议本身的一些要点。 概要: 我们想一想,两个陌生的设备(之前未有过交互)如 阅读全文
posted @ 2018-08-18 22:24 雪山飞燕 阅读(11021) 评论(4) 推荐(3) 编辑
摘要: Secure Simple Pairing,简称SSP,其流程主要分为六个部分: 接下来将逐个介绍这个六个部分的内容。 IO capabilities exchange 在ssp的过程中,有两个角色:“Initiator ”和“Responder ”,他们是如何确认的呢?主动发起 IO capabi 阅读全文
posted @ 2018-08-18 14:33 雪山飞燕 阅读(5681) 评论(3) 推荐(1) 编辑
摘要: LMP 全称是Link Manager Protocol,我们还是要一张图,说明LMP 在哪里? 他是在HCI 以下,baseband 以上,实现在蓝牙控制器中。 按照协议规范,我们分几个部分来分别介绍LMP 下面我们先来看看 整体的介绍部分: Introduction LMP是用来控制和协商两个设 阅读全文
posted @ 2018-08-18 10:42 雪山飞燕 阅读(14611) 评论(2) 推荐(3) 编辑