搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
很楠不爱3
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
『SQLServer系列教程』——视图的创建与使用_视图如何创建
2
pycharm输出中文乱码解决方案_pycharm打印中文乱码
3
RPC、springcloud、dubbo、hadoop、zookeeper等概念的区别_dapr与zookeeper区别
4
WangDeLiangReview2018 - (5.4)说话人分离
5
信创国产中间件概览_信创中间件
6
基于SpringBoot3.0中Spring Security + jwt 示例_springboot3 security
7
LAMP-手动架构部署_lamp-util-master
8
2021最新Java面经整理 | 中间件篇(三)RabbitMQ_mq面经
9
Kafka - 消费进度监控(Consumer Lag)_kafka lag
10
centos7中,后台运行jar包达到守护进程的目的。_java -jar 守护进程
当前位置:
article
> 正文
Android底层开发之旅—蓝牙系统分析_安卓蓝牙协议栈流程图
作者:很楠不爱3 | 2024-03-26 17:32:12
赞
踩
安卓蓝牙协议栈流程图
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为基础,给其他部分提供主要接口。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/很楠不爱3/article/detail/318586
推荐阅读
article
Android
.mk 编译报错
undefined
reference
to
_
undefined
re...
当出现
undefined
reference
to
xxx时,对应的lib库已经添加到LOCAL_STATIC_LIB...
赞
踩
article
Android
带
html
标签文本添加自定义
超链接
跳转
...
这里主要做了一个简单的封装,关键点在于重写的onCLick方法,它的方法中则可以修改
超链接
的一些属性,比如字体颜色,下划...
赞
踩
article
Android
宠物
连连看
案例
_
仿动物
连连看
游戏界面使用
linearlayout
布局通过
案例
来演示...
[详细]
-->
赞
踩
article
毕业设计
-基于
Android
的
校园
新闻
APP(
Android
studio
毕业设计
,
Android
课...
2:
校园
新闻
:本模块主要是介绍在本校的网站上面关于
校园
新闻
的介绍,而本部分所针对的对象是所有人(包括了未登录的游客),用...
赞
踩
article
Android 13.0
kenel
和f
ram
eworks中
修改
ram
运行
内存
的功能实现...
在13.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,在产品后续订单中,产品提出要提高硬件配置,但是硬...
赞
踩
article
Android
Studio
实现
图书馆
订座
系统_
androidstudio
图书馆
选
座位
app源码...
在校园生活中,
图书馆
是很多人选择的学习圣地,这里不仅充满书香气息,而且还十分静谧。这样的学习环境,必然会很抢手,导致很多...
赞
踩
article
Android
开源
组件
和
第三方
库
汇总
_
android
组件
汇总
网站...
Android
开源
组件
和
第三方
库
汇总
转载1、 github排名 https://github.com/trending...
赞
踩
article
Android
UI
框架之 X
UI
...
TextView、Button、EditText、ImageView、Spinner、Picker、Dialog、Pop...
赞
踩
article
Android
常用
的
UI 控件 和 对应
的
方法详细总结
_
android
seekbar
两头间距...
设计和代码切换,一般情况下,我们 UI 布局都是先拖再细调整,也就是先用设计默认拖出一个大概
的
布局,然后用代码来微调一、...
赞
踩
article
Android
ConstraintLayout
使用详解...
Android
ConstraintLayout
使用详解_android constraintlayoutandroi...
赞
踩
article
Android
ConstraintLayout
用法全解析...
ConstraintLayout
用法全解析文章目录
ConstraintLayout
用法全解析前言一、 什么是Cons...
赞
踩
article
腾讯
开源
的
Android
UI
框架——
QM
UI
Android
...
各位同学,早上好,我是你们的老朋友D_clock爱吃葱花,前些天忙着发版本,最近也在看各种各样的新知识,有好多东西想写啊...
赞
踩
article
android
studio
for
Mac
关于华为
手机
的真机
连接
_mac
android
stu...
android
studio
for
Mac
关于华为
手机
的真机
连接
step one:需要确保
手机
的Android版本不...
赞
踩
article
Android
Studio
WiFi
连接手机_
android
studio
wifi
连接华为鸿蒙...
使用一个插件即可,插件下载地址https://plugins.jetbrains.com/plugin/7983或者ht...
赞
踩
article
Android
UI
_androidui 框架...
Android
UI
框架 Activity、Fragment封装,支持状态栏修改、快速设置标题栏、设置空视图、内含轮播、...
赞
踩
article
Android
UI
框架概览...
Android
App真实的逻辑构成App
UI
构成层级结构在
Android
中绝大部分的
UI
组件都是存放在android...
赞
踩
article
MacOS
+
Android
Studio
通过 USB 数据线真机调试_
mac
版
android
...
MacOS
+
Android
Studio
通过 USB 数据线真机调试_
mac
版
android
studio
怎么与手...
赞
踩
article
Android
UI
框架
Android
UI
控件类简介
android5
大
布局
详解...
线性
布局
管理器(LinearLayout):点击打开链接表格
布局
管理器(TableLayout):点击打开链接帧
布局
管理...
赞
踩
article
Android
Studio
中创建
Android
虚拟机
并使用
虚拟机
调试HarmonyOS_andro...
在
Android
Studio
的工具栏中,选择您的虚拟设备作为目标设备,并点击"Run"(运行)按钮。通过按照以上步骤,...
赞
踩
article
android
studio
设备
调试
及
Logcat
查看_
android
studio
调试
时不跳转...
本文转载自:https://www.cnblogs.com/apaojun/p/4283944.html 作者:apao...
赞
踩
相关标签
android
Android.mk
html
前端
android-studio
java
开发语言
rom内存修改
运行内存
系统运行内存
mem
android studio
安卓app
课程设计
订座系统
Android
开源框架
ui