bluedriod
趟石过河
这个作者很懒,什么都没留下…
展开
-
【转】Bluedroid的结构和代码分布
在android4.2中,Google更换了android的蓝牙协议栈,从Bluez换成Bluedroid,我也是初涉这个方面,顺便记录一下。http://source.android.com/devices/bluetooth.htmlandroid development对于4.3蓝牙的介绍:android提供BlueDroid作为默认的协议栈,BlueDroid分为两转载 2013-10-25 15:06:51 · 1144 阅读 · 0 评论 -
蓝牙(Bluetooth)---源码目录及设置应用源码分析
一 Bluetooth 的设置应用 packages\apps\Settings\src\com\android\settings\bluetooth\* 蓝牙设置应用及设置参数,蓝牙状态,蓝牙设备等。 BluetoothDevicePreference.java顾名思义,蓝牙设备首选项,也就是蓝牙设备的配置信息,比如是否连接,是否配对,是否可见等等转载 2013-04-22 13:46:58 · 2893 阅读 · 1 评论 -
Android4.2关于bluetooth在HAL层的分析
1.一些常用的数据结构hardware/libhardware/include/hardware.h中定义了三个重要的结构:struct hw_module_t; //模块类型struct hw_module_methods_t; //模块方法struct hw_device_t; //设备类型hw_module_t中包含结构转载 2013-10-25 15:12:04 · 1266 阅读 · 0 评论 -
Bluetooth在andriod下的开发基本操作
1.硬件 主板通过USB给蓝牙芯片供电,蓝牙芯片通过Uart接口与主板通信,通过主板的miniUSB接口可以进行andriod开发。Firmware的Log信息通过串口转USB(接串口转USB的RX和GND),可以在PC上查看。2.抓取底层Firmware的log信息 通过Bluetooth芯片的LED0 Pin可以输出Firmware的log信息,根据转载 2013-10-25 15:22:08 · 1104 阅读 · 0 评论 -
蓝牙协议的命令和事件
命令下表列出蓝牙协议中从L2CAP到物理层的命令和事件映射。希望这个列表可以帮助你分析蓝牙协议中从协议高层发给较低层次的控制命令和消息命令。我们还会通过讲解一个示例来具体地说明协议高层收到连接请求时的情况。L2CAPHCILMP/BASEBAND连接和不连接L2CAP_ConnectRe转载 2013-10-25 15:24:51 · 1374 阅读 · 0 评论 -
蓝牙HID协议笔记
1.概述 The Human Interface Device (HID)定义了蓝牙在人机接口设备中的协议、特征和使用规程。典型的应用包括蓝牙鼠标、蓝牙键盘、蓝牙游戏手柄等。该协议改编自USB HID Protocol。 2.一些概念(1)HID Reports:Bluetooth HID devices支持三种Report:Input, Output,转载 2013-10-25 15:27:46 · 4961 阅读 · 2 评论 -
蓝牙的OBEX协议
1.概述 OBEX为Object Exchange,用于在蓝牙设备间传数据对象,来源于红外定义的协议,后被蓝牙采用。OBEX在蓝牙协议层中的位置如下图(在之前的OBEX版本中,OBEX是通过RFCOMM挂在L2CAP上的):2.Object Model OBEX定义了Object model来进行数据的交换,形式为Request-Respon转载 2013-10-25 15:31:29 · 1475 阅读 · 0 评论 -
蓝牙的Baseband说明
蓝牙的radio部分使用2.4GHz的ISM段,2400 - 2483.5 MHz,通道间隔1MHz,GFS调制,采用跳频技术,每秒至少1600次。连接完成后的跳频次数为1600次/s,在inquiry和page时为3200次/s。1.时钟有三种是CLK,如下图:CLK是Master的时钟,代表某一个piconet的是时钟。slave根据下图来调整自己的时钟以达到和ma转载 2013-10-25 15:33:57 · 1614 阅读 · 0 评论 -
Android 4.2蓝牙介绍
Tieto公司某蓝牙大牛写得《程序员》投稿文章Android 4.2蓝牙介绍蓝牙一词源于公元十世纪丹麦国王HaraldBlatand名字中的Blatand。Blatand的英文之意就是Blue tooth。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于Blatand统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名Bluetooth可谓转载 2013-10-10 13:59:07 · 1165 阅读 · 0 评论 -
android -- 蓝牙 bluetooth (二) 打开蓝牙
4.2的蓝牙打开流程这一部分还是有些变化的,从界面上看蓝牙开关就是设置settings里那个switch开关,widget开关当然也可以,起点不同而已,后续的流程是一样的。先来看systemServer.java的代码,蓝牙服务开启的地方,最后一个else分支是我们关心的,前两个是模拟器的一个测试模式的。[java] view plaincopy转载 2013-10-22 15:41:24 · 1284 阅读 · 0 评论 -
android -- 蓝牙 bluetooth (三)搜索蓝牙
接上篇打开蓝牙继续,来一起看下蓝牙搜索的流程,触发蓝牙搜索的条件形式上有两种,一是在蓝牙设置界面开启蓝牙会直接开始搜索,另一个是先打开蓝牙开关在进入蓝牙设置界面也会触发搜索,也可能还有其它触发方式,但最后都要来到BluetoothSettngs.java的startScanning(),我们分析的起点也从这里开始,起步代码如下[cpp] view plaincopy转载 2013-10-22 15:42:16 · 812 阅读 · 0 评论 -
Bluetooth in Android 4.2 and 4.3 Enable Bluetooth
Bluedroid和Bluez相比,有如下优点:层次结构清晰。各个profile对上层接口统一,便于增加新的profile;增加了HAL层,便于移植。去掉了DBus,Framework的Java代码直接调用到Bluedroid的Native代码。 但是Android 4.2中的Bluedroid与Android 4.1中的Bluez相比,功能要少,例如不支持AVRCP 1转载 2013-10-22 14:51:26 · 1219 阅读 · 0 评论 -
android -- 蓝牙 bluetooth (一) 入门
1. 代码分布: packages/apps/Bluetooth/ 看这路径肯定是蓝牙应用方面的代码了,主要是关于蓝牙应用协议的表现代码,包括opp、hfp、hdp、a2dp、pan等等,这些名词后面再解释。 frameworks/base/core/java/android/server/ 4.2转载 2013-10-22 09:15:01 · 1150 阅读 · 0 评论 -
android -- 蓝牙 bluetooth (四)OPP文件传输
在前面android -- 蓝牙 bluetooth (一) 入门文章结尾中提到了会按四个方面来写这系列的文章,前面已写了蓝牙打开和蓝牙搜索,这次一起来看下蓝牙文件分享的流程,也就是蓝牙应用opp目录下的代码,作为蓝牙最基本的一个功能,这部分的代码在之前的版本中就已经有了,新旧版本代码对比很多类名都是一样的,这一部分新东西不多,写在这里帮助大家梳理下流程吧。 有没有这种感转载 2013-10-22 15:43:25 · 1857 阅读 · 1 评论 -
android -- 蓝牙 bluetooth (五)接电话与听音乐
正文开始之前,先说点题外话,在android系统中蓝牙耳机和听筒两者的音频通道是不一样的,使用蓝牙耳机接听电话和听音乐不仅涉及到本文下面提到的流程,更要牵扯的音频通道的切换,这是一个相对比较复杂的过程,android的音频系统相关内容可不算少,个人感觉多少了下解相关知识可能有助于我们更好的蓝牙这部分功能,不过本文的主题当然还是下面两个。 1.蓝牙耳机接听电话 这转载 2013-10-22 15:44:46 · 2902 阅读 · 0 评论 -
android4.0蓝牙使能的详细解析 (转载)
此博客是转载过来的哦。。。给自己博客定几个部分:(1)写在前面的话:一些写博客时的废话。(2)内容简介:把文章的主要内容或者核心部分作一个框架性的概括,以方便大家阅读。(3)正文:这个不需要解释了。写在前面的话:这是csdn上的第一篇博客,希望自己能够坚持写下去,也希望能够得到大家的支持。本文可能会涉及大量的源码注释,在文字方面可能不够尽如人意,转载 2013-05-16 09:31:54 · 1742 阅读 · 0 评论 -
Android.bluetooth 功能解析
android.bluetooth提供了皆如扫描设备、连接设备以及对设备间的数据传输进行管理的类,这些类对蓝牙设备进行功能性管理。蓝牙模块API提供的应用包括了:●扫描其它蓝牙设备●通过查询本地蓝牙适配器来匹配蓝牙设备●建立RFCOMM(无线射频通信协议)的通道/端口●从其他的蓝牙设备中连接到指定的端口●传输数据到其他设备,或者从其他设备中接收数据如需运用这些API转载 2013-10-21 09:26:53 · 1654 阅读 · 0 评论 -
FTS抓包看AVDTP
1.概述 测试过程为打开Audio连接,没有听音乐,人后断开Audio连接,主要目的是为了测试AVDTP的工作流程。2.Frame分析 首先贴出抓取的关于AVDTP的包: 在L2CAP层,分别由Maste和Slave建立了两条关于AVDTP的L2CAP连接,并完成了configure的过程,如下:我们可以看到AVDTP的主要Signaling的转载 2013-10-25 15:13:34 · 1501 阅读 · 0 评论 -
SDP协议中的Continuation State
在SDP request和SDP response中,最后一部分为Continuation State,结构如下:State" title="SDP协议中的Continuation State" style="margin:0px; padding:0px; border:0px; list-style:none">它用于一次response不够把所有的Data传回去的情况。这时候需要转载 2013-10-25 15:14:32 · 1254 阅读 · 0 评论 -
FTS抓包看蓝牙的SDP整个过程
1.概述 SDP是蓝牙的Service Discovery Protocol,用来发现远程设备能够提供的Service。它只负责发现对方支持的Service,不负责Service的具体实现。2.背景概念 SDP中的每一个Service用ServiceRecord来表示(具有唯一的32bit的Handle),每一个ServiceRecord由若干Servic转载 2013-10-25 15:15:29 · 1259 阅读 · 0 评论 -
FTS抓包看L2CAP Connection的建立
一.概述 在前面的文章中介绍了inquiry和ACL connection的建立过程。这个连接建立后,L2CAP signaling channel(CID = 0x0001)就已经存在,可以进行L2CAP连接二.基本概念HCI ACL Data Format:Connection的建立(一)" title="FTS抓包看L2CAP Connect转载 2013-10-25 15:17:18 · 1501 阅读 · 0 评论 -
用FTS分析蓝牙数据包
1.简介 FTS软件相当于蓝牙的数据分析仪器,它可以抓取通过蓝牙IC的数据包,从包中我们可以看到HCI,L2CAP等各层的封包数据,是一个十分有用的软件。2.HCI的command和event以及Data的格式HCI Command Format:HCI Event Format:HCI ACL Data Format:HC转载 2013-10-25 15:18:10 · 2519 阅读 · 0 评论 -
在HCI层看从inquiry的整个过程
一.概述 在windows下寻找远端蓝牙设备,从最开始的inquiry寻找设备,到连接设备,到最后配对完成,整个HCI层所发的command和event以及Data包可以反应整个蓝牙的inquiry,pair等原理和过程。这篇笔记就是分析这个过程,结合Spec的具体描述,以此熟悉蓝牙的配对流程。二.Inquiry流程 这个流程主要是inquiry远端的蓝转载 2013-10-25 15:19:44 · 1066 阅读 · 0 评论 -
在HCI层ACL Connection的建立
一.概述 上一篇博文介绍的是inquiry的整个过程中HCI层的command和event。在寻找到有效的远端蓝牙设备后,开始建立ACL连接,这里仅仅反应HCI层的数据包,对于LM层和Baseband层的数据可能需要抓取FW的log进行查看。二.建立ACL连接的过程1. Create_Connection command 该命令参数如下:转载 2013-10-25 15:20:15 · 1387 阅读 · 0 评论 -
蓝牙的HFP协议笔记
1.概述 HFP(Hands-free Profile),可以让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话是否支持。HFP定义了音频网关(AG)和免提组件(HF)两个角色:AG–该设备为音频(特别是手机)的输入/输出网关。HF–该设备作为音频网关的远程音频输入/输出机制,并可提供若干遥控功能。HFP的协议栈如转载 2013-10-25 15:26:42 · 2932 阅读 · 0 评论 -
蓝牙的AVDTP协议笔记
1.概述 AVDTP(AUDIO/VIDEO DISTRIBUTION TRANSPORT PROTOCOL)是用来描述音频/视频在蓝牙设备间的传输的协议,是A2DP协议的基础协议,其在协议栈中的位置如下:AVDTP协议建立在connection-oriented L2CAP channel上,只能支持point-to-point signaling。转载 2013-10-25 15:29:03 · 2986 阅读 · 0 评论 -
蓝牙的AVCTP协议笔记
1.概述 AVCTP协议描述了蓝牙设备间Audio/Video的控制信号交换的格式和机制,它是一个总体的协议,具体的控制信息由其指定的协议(如AVRCP)实现,AVCTP本身只指定控制command和response的总体的格式。 几个重要的点:(1)AVCTP uses point-to-point signaling over connection-orie转载 2013-10-25 15:29:39 · 2125 阅读 · 0 评论 -
A2DP协议笔记
1.概述 A2DP(Advanced Audio Distribution Profile)是蓝牙的音频传输协议,典型应用为蓝牙耳机。A2DP协议的音频数据在ACL Link上传输,这与SCO上传输的语音数据要区别。A2DP不包括远程控制的功能,远程控制的功能参考协议AVRCP。AVDTP则定义了蓝牙设备之间数据流句柄的参数协商,建立和传输过程以及相互交换的信令实体形式,该协议是转载 2013-10-25 15:30:53 · 3374 阅读 · 0 评论 -
蓝牙的L2CAP协议
1.概述 L2CAP能向上层提供面向连接的或者无连接的数据服务,拥有multiplexing capability and segmentation and reassembly operation。能够接受上层协议或者应用的数据,最大为64K byte,每一个通道都可以进行Flow Control和retransmission。结构如下图: 几个主要特点:转载 2013-10-25 15:32:41 · 1890 阅读 · 0 评论 -
蓝牙4.0的LM层说明
1.概念The Link Manager Protocol (LMP) is used to control and negotiate all aspects of the operation of the Bluetooth connection between two devices. This includes the set-up and control of logical转载 2013-10-25 15:33:24 · 1167 阅读 · 0 评论 -
Android4.2蓝牙基础架构学习
Android4.2使用了Bluetooth.apk管理所有蓝牙相关的操作,Bluedroid作为蓝牙协议栈。整个蓝牙的关系架构如下图所示:下面逐一进行讲解:Applications:Android蓝牙应用程序,就是使用了蓝牙的API的程序java Framework:提供给应用使用的API,我们平时使用的BluetoothAdapter,BluetoothDe转载 2013-10-18 17:29:31 · 827 阅读 · 0 评论