当前位置:首页 > 代码 > 正文

bluez源代码分析(blue引擎源代码)

admin 发布:2022-12-19 22:51 143


今天给各位分享bluez源代码分析的知识,其中也会对blue引擎源代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

怎样着手研究 Android 源代码

不需要全部了解,阅读你感兴趣或者与你工作相关的部分就可以了。比如:

顶层目录:

.

|– bionic (bionic库,Android的基础库)

|– bootable (bootloader, recovery等,ROM移植相关)

|– build (编译和配置所需的脚本和工具)

|– dalvik (dalvik的Java虚拟机)

|– development (开发应用程序所需的模板和工具)

|– external (由其他平台移植过来的项目,对于移植工作是非常好的参考)

|– frameworks (应用程序框架层,请仔细阅读此部分代码,对于开发App会有很大帮助)

|– hardware (与硬件相关的库,驱动开发相关)

|– kernel (linux内核)

|– out (编译后生成的目录,包含构建文件系统所需的文件)

|– packages (Android的原生应用程序,App开发者需要重点关注)

|– prebuilt (Android在各平台下编译的预置脚本)

|– system (Android的底层库)

`– vendor / device (设备相关的代码,AOSP里不会有太多涉及,但是CM中却是重点)

external目录:

.

|– aes (ASE加密)

|– apache-http (网页服务器)

|– bison (自动生成语法分析器,将无关文法转换为C,C++)

|– bluez (Linux下的蓝牙工具)

|– bsdiff (diff工具)

|– bzip2 (压缩工具)

|– clearsilver (html模板系统)

|– dbus (低延时,低开销,高可用性的IPC机制)

|– dhcpcd (DHCP服务)

|– dosfstools (DOS文件系统工具)

|– dropbear (SSH2的服务器/客户端)

|– e2fsprogs (EXT2文件系统工具)

|– elfcopy (ELF复制工具)

|– elfutils (ELF工具)

|– embunit

|– emma (Java代码覆盖率统计工具)

|– esd (将多种音频流混合在一个设备上播放)

|– expat

|– fdlibm

|– freetype (字体)

|– gdata (google的无线数据)

|– genext2fs

|– giflib (gif库)

|– googleclient (google用户库)

|– grub

|– icu4c

|– iptables (防火墙)

|– jdiff

|– jhead (jpeg头部信息工具)

|– jpeg (jpeg库)

|– libffi

|– libpcap (网络数据包捕获函数)

|– libpng (png库)

|– libxml2 (xml解析库)

|– netperf (网络性能测试工具)

|– opencore (多媒体框架,最让人诟病的模块,Andoird 4.0中已被 stagefright 取代)

|– openssl (SSL模块,需要注意的是一定要静态编译此模块,否则会出现兼容问题)

|– qemu (Android 模拟器,Android 4.0之前只支持 arm-eabi,现在已支持 arm-v7)

|– skia (SKIA图像引擎)

|– sqlite (数据库)

|– strace (调试跟踪工具)

|– tcpdump (TCP抓包软件)

|– webkit (浏览器核心)

|– wpa_supplicant (无线网卡管理)

|– yaffs2 (yaffs文件系统)

蓝牙bluez如何在LINUX上编译成能在板子上运行的模块啊?

port bluez 的源代码为板子上面的的源代码后编译运行。

这是嵌入式开发的功底。

属于必会内容。

如何查看ubuntu bluez源码

在/usr/src/下面有你的linux的全部源代码,没有耐心和足够的c语言编程经验的话不要去看了

基于CC2540的蓝牙BLE协议,用户自定义的函数是哪块?

用户模式及协议栈

     1.文件传输模式

文件传输模式提供两终端间的数据通信功能,可传输后缀为.xls、.ppt、.wav、.jpg和.doc的文件(但并不限于这几种),以及完整的文件夹、目录或多媒体数据流等,提供远端文件夹浏览功能。文件传输协议栈如图2所示。

     2.因特网网桥模式

这种用户模式可通过手机或无线调制解调器向PC提供拨号入网和收发传真的功能,而不必与PC有物理上的连接。拨号上网需要两列协议栈(不包括SDP),如图3所示。AT命令集用来控制移动电话或调制解调器以及传送其他业务数据的协议栈。传真采用类似协议栈,但不使用PPP及基于PPP的其他网络协议,而由应用软件利用RFCOMM直接发送。

     3.局域网访问模式

该用户模式下,多功能数据终端(DTs)经局域网访问点(LAP)无线接入局域网,然后,DTs的操作与通过拨号方式接入局域网的设备的操作一样,其协议栈如图4所示。

    4.同步模式

同步用户模式提供设备到设备的个人资料管理(PIM)的同步更新功能,其典型应用如电话簿、日历、通知和记录等。它要求PC、蜂窝电话和个人数字助理(PDA)在传输和处理名片、日历及任务通知时,使用通用的协议和格式。其协议栈如图5所示,其中同步应用模块代表红外移动通信(IrMC)客户机或服务器。

     5.一机三用电话模式

手持电话机有三种使用方法:第一,接入公用电话网,作为普通电话使用;第二,作为不计费的内部电话使用;第三,作为蜂窝移动电话使用。无线电话和内部电话使用相同的协议栈;语音数据流直接与基带协议接口,不经过L2CAP层,如图6所示。

     6.头戴式设备模式

使用该模式,用户打电话时可自由移动。通过无线连接,头戴式设备通常作为蜂窝电话、无线电话或PC的音频输入输出设备。头戴式设备协议栈如图7所示,语音数据流不经过L2CAP层而直接接入基带协议层。头戴式设备必须能收发并处理AT命令。

完整的协议栈包括蓝牙专用协议(如连接管理协议LMP和逻辑链路控制应用协议L2CAP)以及非专用协议(如对象交换协议OBEX和用户数据报协议UDP)。设计协议和协议栈的主要原则是尽可能利用现有的各种高层协议,保证现有协议与蓝牙技术的融合以及各种应用之间的互操作,充分利用兼容蓝牙技术规范的软硬件系统。蓝牙技术规范的开放性保证了设备制造商可以自由地选用其专用协议或习惯使用的公共协议,在蓝牙技术规范基础上开发新的应用。

Android蓝牙系统分为四个层次,内核层、BlueZ库、BlueTooth的适配库、BlueTooth的JNI部分、Java框架层、应用层。下面先来分析Android的蓝牙协议栈。

Android的蓝牙协议栈采用BlueZ来实现,BlueZ分为两部分:内核代码和用户态程序及工具集。

内核代码主要由BlueZ核心协议和驱动程序组成;蓝牙协议实现在内核源代码net/bluetooth中,驱动程序位于内核源代码目录 driver/bluetooth中。用户态程序及工具集主要包括应用程序接口和BlueZ工具集,位于Android源代码目录externel /bluetooth(注:Android版本不一样,有的在externel/bluez目录下)中。

1、蓝牙协议栈

蓝牙协议栈的体系结构由底层硬件模块、中间协议层和高端应用层三部分组成。

一、底层硬件模块

组成:

链路管理协议(Link ManagerProtocol,LMP);

基带(Base Band,BB);

射频(Radio Frequency,RF)。

功能:

射频(RF)通过2.4GHz的ISM频段实现数据流的过滤和传输。

基带(BB)提供两种不同的物理链路,即同步面向连接链路(Synchronous Connection Oriented,SCO)和异步无连接链路(AsynchronousConnection Less,ACL),负责跳频和蓝牙数据,及信息帧的传输,且对所有类型的数据包提供不同层次的前向纠错码(Frequency Error Correction,FEC)或循环冗余度差错校验(CyclicRedundancy Check,CRC)。

链路管理协议(LMP)负责两个或多个设备链路的建立和拆除,及链路的安全和控制,如鉴权和加密、控制和协商基带包的大小等,它为上层软件模块提供了不同的访问入口。

主机控制器接口(HostController Interface,HCI)是蓝牙协议中软硬件之间的接口,提供了一个调用下层BB、LMP、状态和控制寄存器等硬件的统一命令,上下两个模块接口之间的消息和数据的传递必须通过HCI的解释才能进行。

二、中间协议层

组成:

逻辑链路控制和适配协议(LogicalLink Control and Adaptation Protocol,L2CAP);

服务发现协议(ServiceDiscovery Protocol,SDP);

串口仿真协议(或称线缆替换协议RFCOMM);

二进制电话控制协议(TelephonyControlprotocol Spectocol,TCS)。

功能:

L2CAP位于基带(BB)之上,向上层提供面向连接的和无连接的数据服务,它主要完成数据的拆装、服务质量控制、协议的复用、分组的分割和重组,及组提取等功能。

SDP是一个基于客户/服务器结构的协议,它工作在L2CAP层之上,为上层应用程序提供一种机制来发现可用的服务及其属性,服务的属性包括服务的类型及该服务所需的机制或协议信息。

RFCOMM是一个仿真有线链路的无线数据仿真协议,符合ETSI标准的TS07.10串口仿真协议,它在蓝牙基带上仿真RS-232的控制和数据信号,为原先使用串行连接的上层业务提供传送能力。

TCS定义了用于蓝牙设备之间建立语音和数据呼叫的控制信令(Call Control Signalling),并负责处理蓝牙设备组的移动管理过程。

三、高端应用层

组成:

点对点协议(Point-to-PointProtocol,PPP);

传输控制协议/网络层协议(TCP/IP);

用户数据包协议(UserDatagram Protocol,UDP);

对象交换协议(ObjectExchang Protocol,OBEX);

无线应用协议(WirelessApplication Protocol,WAP);

无线应用环境(WirelessApplication Environment,WAE);

功能:

PPP定义了串行点对点链路应当如何传输因特网协议数据,主要用于LAN接入、拨号网络及传真等应用规范。

TCP/IP、UDP定义了因特网与网络相关的通信及其他类型计算机设备和外围设备之间的通信。

OBEX支持设备间的数据交换,采用客户/服务器模式提供与HTTP(超文本传输协议)相同的基本功能。可用于交换的电子商务卡、个人日程表、消息和便条等格式。

WAP用于在数字蜂窝电话和其他小型无线设备上实现因特网业务,支持移动电话浏览网页、收取电子邮件和其他基于因特网的协议。

WAE提供用于WAP电话和个人数字助理(PersonalDigital Assistant,PDA)所需的各种应用软件。

2、android与蓝牙协议栈的关系

蓝牙系统的核心是BlueZ,因此JNI和上层都围绕跟BlueZ的沟通进行。JNI和android应用层,跟BlueZ沟通的主要手段是D- BUS,这是一套被广泛采用的IPC通信机制,跟Android框架使用的Binder类似。BlueZ以D-BUS为基础,给其他部分提供主要接口。

bluez源代码分析的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于blue引擎源代码、bluez源代码分析的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/28623.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载