蓝牙协议栈

Android4.4 之Bluetooth整理

跟風遠走 提交于 2019-12-02 07:52:59
Android 4.4上蓝牙协议栈采用的是BRCM和Google共同开发的bluedroid,代替了之前的Bluez. 一、 Bluetooth 源码分布 (基于Android 4.4 ) 1. packages/apps/Settings/src/com/android/settings/bluetooth bluetooth Settings 代码 2. packages/apps/Bluetooth BT 应用层代码,及BT profile(如:A2dp,gatt,hdp,hfp,hid,map,opp,pan,pbap ...) 上层代码 packages/apps/Bluetooth/jni 3. frameworks/base/core/java/android/bluetooth framework 层相关 java 代码与aidl 4. external/bluetooth/bluedroid BRCM和Google共同开发的官方蓝牙协议栈 5. linux/kernel/drivers/bluetooth 6. linux/kernel/net/bluetooth 7. 以下是近期项目intel 平台 hardware/broadcom/libbt hardware/libhardware vendor/intel/fw/PRIVATE/bt 厂商bt固件 二

蓝牙spp协议分析

穿精又带淫゛_ 提交于 2019-12-01 18:46:20
基本概念 蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。 蓝牙串口的目的是针对如何在两个不同设备(通信的两端)上的应用之间保证一条完整的通信路径。具体的基本流程如下: 设备A:这个设备会发起一个连接另外设备的请求。 设备B:这个设备等待另外一个设备发起连接请求。 协议栈分层 这个应用两边都是典型的传统应用,能够通过一个虚拟串口通道和对方通信。通过下图可以看出,SPP的协议栈使用的还是rfcomm通道,这个是蓝牙中比较古老的通道了。 基本流程 连接流程一般分成三个部分,如下所示: 1 创建虚拟连接: A 使用SDP提交一个请求来查找RFCOMM服务信道号码。 B 请求对远端设备进行认证。 C 向远端的RFCOMM通道发起一个新的L2CAP请求。 D 在L2CAP通道上初始化一个RFCOMM连接。 E f在RFCOMM连接上创建一个新的数据连接。 2 接受虚拟串口连接: A 接受发起设备端的认证请求并做处理. B 在L2CAP层接收一个新的连接。 C 接受RFCOMM连接请求在RFCOMM通道上 D 在RFCOMM通道上接收数据连接请求。 3 在本地SDP数据上注册服务 SPP的API参数 /** A connection has been established with a remote device.

bluetooth 蓝牙协议和标准,配置

两盒软妹~` 提交于 2019-12-01 03:59:51
Bluetooth 配置文件表达了一般行为,Bluetooth 设备可以通过这些行为与其它设备进行通信。Bluetooth 技术定义了广泛的配置文件,描述了许多不同类型的使用案例。为了使用 Bluetooth 无线技术,设备必须能够翻译特定 Bluetooth 配置文件。配置文件定义了可能的应用。 对象交换 (OBEX) 协议 OBEX 传输协议定义了数据对象和两个设备用来交换这些对象的通信协议。OBEX 支持应用程序在 Bluetooth 协议堆栈及 IrDA 堆栈上工作。对于 Bluetooth 设备,仅支持面向连接的 OBEX。已使用 OBEX 开发出三种应用配置文件,即 SYNC、FTP 和 OPP。 高级音频分发配置文件 (A2DP) A2DP 配置文件描述了立体声质量音频如何从媒体源流化传送至汇点。配置文件定义了音频源和汇点两个角色。典型的使用如“随身听”类的媒体播放器。音频源可以是音乐播放器,音频汇点则是无线耳机。A2DP 定义了可在 ACL 信道上实现单声道或立体声高质量音频内容分发的协议和程序。 音频/视频远程控制配置文件 (AVRCP) AVRCP 设计用于提供控制 TV、Hi-fi 设备等的标准接口。此配置文件用于许可单个远程控制设备(或其它设备)控制所有用户可以接入的 A/V 设备。AVRCP 定义了如何控制流媒体的特征。包括暂停、停止、启动重放

Android 4.2蓝牙介绍

眉间皱痕 提交于 2019-12-01 03:59:40
Tieto公司某蓝牙大牛写得《程序员》投稿文章 Android 4.2 蓝牙介绍 蓝牙一词源于公元十世纪丹麦国王 HaraldBlatand 名字中的 Blatand 。 Blatand 的英文之意就是 Blue tooth 。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于 Blatand 统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名 Bluetooth 可谓志向远大。不过,在以 Android 为代表的智能机出现以前,蓝牙在早期智能机甚至功能机中一直扮演着 “ 鸡肋 ” 的角色。那么,随着无线通信技术的快速发展以及 Android 的普及,蓝牙能给我们带来哪些新的变化呢? 本文将从蓝牙核心规范的发展历史、最具应用前景的几个蓝牙 Profile 以及 Android 4.2 中蓝牙实现情况等几个方面向读者介绍蓝牙技术。 一 蓝牙规范介绍 作为一种通用的无线通信技术,规范自然是蓝牙技术的核心。蓝牙规范可分为两个层次,如图 1 所示: 图 1 蓝牙规范的层次结构 由图 1 可知蓝牙规范包括: Core Specification(核心规范),用于规定蓝牙设备必须实现的通用功能和协议层次。它由软件和硬件模块组成,两个模块之间的信息和数据通过主机控制接口(HCI)的解释才能进行传递。 Profiles(蓝牙应用规范)

Android 4.2蓝牙介绍

巧了我就是萌 提交于 2019-12-01 03:59:28
Tieto公司某蓝牙大牛写得《程序员》投稿文章 Android 4.2 蓝牙介绍 蓝牙一词源于公元十世纪丹麦国王 HaraldBlatand 名字中的 Blatand 。 Blatand 的英文之意就是 Blue tooth 。这是因为这位让丹麦人引以为傲的国王酷爱吃蓝莓以至于牙龈都被染成蓝色。由于 Blatand 统一了丹麦和挪威,所以,作为无线通信技术的一种,蓝牙技术之所以取名 Bluetooth 可谓志向远大。不过,在以 Android 为代表的智能机出现以前,蓝牙在早期智能机甚至功能机中一直扮演着 “ 鸡肋 ” 的角色。那么,随着无线通信技术的快速发展以及 Android 的普及,蓝牙能给我们带来哪些新的变化呢? 本文将从蓝牙核心规范的发展历史、最具应用前景的几个蓝牙 Profile 以及 Android 4.2 中蓝牙实现情况等几个方面向读者介绍蓝牙技术。 一 蓝牙规范介绍 作为一种通用的无线通信技术,规范自然是蓝牙技术的核心。蓝牙规范可分为两个层次,如图 1 所示: 图 1 蓝牙规范的层次结构 由图 1 可知蓝牙规范包括: Core Specification(核心规范),用于规定蓝牙设备必须实现的通用功能和协议层次。它由软件和硬件模块组成,两个模块之间的信息和数据通过主机控制接口(HCI)的解释才能进行传递。 Profiles(蓝牙应用规范)

蓝牙数据通信 GATT

♀尐吖头ヾ 提交于 2019-11-28 20:11:52
ATT(Attribute Protocol)属性层是GATT和GAP的基础,它定义了BLE协议栈上层的数据结构和组织方式。 BLE属性协议,它是处于L2CAP协议层与GATT之间的一层属性操作协议。 GATT(Generic Attribute Profile),通用属性协议,在GATT之上即是我们的应用程序,通过GATT统一属性格式和属性访问接口,对于APP开发来讲操作对象就变成了对一个个定义的属性进行读写。 主要由3部分组成:Handle、Attribute Type、Attribute Value其中Handle是作为索引的依据类似数组的下标,Attribute Type是根据UUID而定义的128bit标识(实际传输可以只传递16bit),Attribute Value即属性值 如何发现和使用服务的一些标准方法: 发现规程 发现服务:发现所有首要服务、按UUID发现首要服务、查找包含服务。 发现特性:发现所有特性、发现所有特性描述符。 客户端发起规程:读/写特性值、读/写特性描述符。 服务端发起规程:通知/指示。 GATT profile的层次结构依次是:Profile—>Service—>characteristic 一个Service包含一个或者多个Characteristic(特征),也可以通过Include的方式,包含其它Service。

BLE——协议层次结构

匆匆过客 提交于 2019-11-27 22:35:34
未完待续…… BLE协议 Bluetooth Application Applications GATT-Based Profiles/Services Bluetooth Core (Stack) BLE Host ATT、GATT、SM GAP L2CAP HCI(对蓝牙协议无影响) BLE Controller Link Layer Physical Layer 1 Bluetooth Core(Stack)   蓝牙核心协议,关注蓝牙核心技术的描述和规范,只提供基础的机制。   蓝牙核心协议由Controller和Host两部分组成,在一个系统中,Host只有一个,但Controller可以有多个,如:单独的LE Controller;单独的BR/EDR Controller;单独的LE+BR/EDR Controller;在单独的BR/EDR Controller或LE+BR/EDR Controller基础上,增加一个或多个额外的AMP Controller。 1.1 Controller   Controller实现射频相关的模拟和数字部分,完成最基本的数据发送和接收,Controller对外接口是天线,对内接口是主机控制器接口HCI(Hostcontroller interface);控制器包含物理层PHY(physicallayer),链路层LL(linker

BLE——低功耗蓝牙(Bluetooth Low Energy)

旧时模样 提交于 2019-11-27 22:33:31
1、简介 以下蓝牙协议特指低功耗蓝牙协议。 蓝牙协议是由SIG制定并维护的通信协议,蓝牙协议栈是蓝牙协议的具体实现。 各厂商都根据蓝牙协议实现了自己的一套函数库——蓝牙协议栈,所以不同厂商的蓝牙协议栈之间存在差别,但都遵循 SIG 制定的蓝牙协议。 蓝牙技术的实质是建立通用无线接口及其控制软件的标准,使移动通信与计算机网络之间能实现无缝连接。蓝牙通讯最初设计初衷是方便移动电话(手机)与配件之间进行低成本、低功耗无线通信连接。通俗地说,蓝牙最初就是为了替代串口,实现无线串口的功能。 蓝牙4.1就是一个大杂烩:BR/EDR沿用旧的蓝牙规范,LE抄袭802.15.4,AMP直接使用802.11。以上操作的目的是为了提高蓝牙的兼容性和易用性,但是需要在功耗和传输速率之间取得平衡,整体来说,这个设计并不十分优雅,只是存在即合理。 标准号:IEEE 802.15.1 核心:低功耗技术,即Low Energy RF 规格 工作频段:2.4GHz~2.4835GHz,ISM(Industrial,Scientific and Medical)频段; 工作频道:40个频道,每个频道2MHz的间隔,3个广播信道(37-2402MHz,38-2426MHz,39-2480MHz),37个数据信道,广播报文还是数据报文由信道决定; 调制方式:GFSK,调制指数为0.5 中心频率容限:±150kHz 功耗