当前位置: 首页 > news >正文

Bluetooth Spec【0】蓝牙核心架构

  1. 蓝牙核心系统由一个主机、一个主控制器和零个或多个辅助控制器组成
  2. 蓝牙BR/ EDR核心系统的最小实现包括了由蓝牙规范定义的四个最低层和相关协议,以及一个公共服务层协议;服务发现协议(SDP)和总体配置文件要求在通用访问配置文件(GAP)中指定。BR/EDR核心系统包括对备用MAC/PHYs(AMPs)的支持,包括一个AMP管理器协议和支持外部引用的MAP/PHYs的协议适配层(PALs)。
  3. 蓝牙LE核心系统的最小实现涵盖了由蓝牙规范定义的四底层和相关协议以及两个公共服务层协议;安全管理器(SM)和属性协议(ATT)以及总体配置文件要求在通用属性配置文件(GATT)和GAT配置文件(GAP)中指定。结合蓝牙BR/EDR和LE的实现包括上面描述的两个最小实现。
  4. 一个完整的蓝牙应用程序需要许多额外的服务和更高级层次的协议,这些协议在蓝牙规范中定义,但这里没有描述。核心系统架构如图2.1所示。

  • 链路管理(Link Manager),链路控制(Link Controller),经典蓝牙无线射频模块(BR/EDR Radio blocks)构成了经典蓝牙控制器(BR/EDR Controller)。
  • AMP PAL),(AMP MAC),(AMP PHY)构成了(AMP Controller)。
  • 链路管理(Link Manager),链路控制(Link Controller),低功耗射频模块(LE Radio)构成了低功耗控制器(LE Controller)。
  • L2CAP, SDP and GAP 模块构成了BR/EDR主机。
  • L2CAP, SMP, ATT(Attribute protocol), GAP and GAP(Generic Attribute Profile)/ (GATT) 模块构成了LE主机。

2.1.1 Host architectural blocks

2.1.1.1 Channel manager

通道管理器负责创建、管理和关闭用于传输服务协议和应用程序数据流的L2CAP通道。通道管理器使用L2CAP协议与远程(对等)设备上的通道管理器进行交互,以创建这些L2CAP通道,并将其端点连接到适当的实体。通道管理器与其本地链路管理器或AMP PAL进行交互,以创建新的逻辑链路(如有必要),并配置这些链路,以为正在传输的数据类型提供所需的服务质量。

2.1.1.2 L2CAP resource manager

L2CAP资源管理器块负责管理向基带提交PDU(协议数据单元)片段的顺序以及通道之间的一些相对调度,以确保具有QoS承诺的L2CAP通道不会由于控制器资源耗尽而被拒绝对物理通道的访问。这是必需的,因为架构模型并不假定一个控制器具有无限的缓冲空间,或者假设HCI是一个具有无限带宽的管道。

L2CAP资源管理器还可以执行流量一致性监管,以确保应用程序在其协商的QoS设置的范围内提交L2CAPsdu。一般的蓝牙数据传输模型假定行为良好的应用程序,并没有定义期望实现如何处理这个问题。

2.1.1.3 Security Manager Protocol

安全管理器协议(SMP)是用于生成加密密钥和身份密钥的点对点协议。该协议在一个专用的固定的L2CAP通道上运行。SMP块还管理加密密钥和身份密钥的存储,并负责生成随机地址,并将随机地址解析为已知的设备身份。SMP块直接与控制器进行接口,以提供在加密或配对过程中用于加密和身份验证的存储密钥。此块仅在LE系统中使用。BR/EDR系统中的类似功能也包含在控制器中的链接管理器块中。SMP功能在LE系统上的主机中,以降低仅LE控制器的实现成本。

2.1.1.4 Attribute Protocol

属性协议(ATT)块实现了属性服务器和属性客户端之间的点对点协议。ATT客户端通过专用的固定L2CAP通道与远程设备上的ATT服务器进行通信。ATT客户端向ATT服务器发送命令、请求和确认。ATT服务器发送响应、通知和向客户指示。这些ATT客户端命令和请求提供了一种在具有ATT服务器的对等设备上读取和写属性值的方法。

2.1.1.5 AMP Manager protocol

AMP管理器是使用L2CAP与远程设备上的对等AMP管理器进行通信的一个层。它还直接与AMP PAL接口,用于AMP控制的目的。AMP经理负责发现远程AMP)并确定其可用性。它还收集有关远程AMP)的信息。此信息用于设置和管理AMP物理链接。AMP管理器使用一个专用的L2CAP信令通道与远程AMP管理器(s)通信。

2.1.1.6 Generic Attribute Profile

通用属性配置文件(GATT)块表示属性服务器的功能,以及可选择的属性客户端的功能。该配置文件描述了在属性服务器中使用的服务、特征和属性的层次结构。该块提供了用于发现、读取、写入和指示服务特性和属性的接口。GATT用于LE设备上的LE配置文件服务发现。

2.1.1.7 Generic Access Profile

通用访问配置文件(GAP)块 表示所有蓝牙设备通用的基本功能,如传输、协议和应用程序配置文件所使用的模式和访问过程。GAP服务包括设备发现、连接模式、安全性、认证、关联模型和服务发现。

2.1.2 BR/EDR/LE Controller architectural blocks

2.1.2.1 Device manager

设备管理器是基带中用来控制蓝牙设备的一般行为的功能块。它负责蓝牙系统中与数据传输没有直接关系的所有操作,如查询附近是否存在的蓝牙设备,连接到蓝牙设备,或使本地蓝牙设备可被其他设备发现或连接。

设备管理器请求从基带资源控制器访问传输介质,以执行其功能。设备管理器还控制由许多HCI命令所暗示的本地设备行为,例如管理设备本地名称、任何存储的链接键和其他功能。

2.1.2.2 Link manager

链接管理器负责创建、修改和发布逻辑链接(如果需要,还有它们相关的逻辑传输),以及更新与设备之间的物理链接相关的参数。链路管理器通过使用BR/EDR中的链路管理器协议(LMP)和LE中的链路层协议(LL)与远程蓝牙设备中的链路管理器进行通信来实现这一点。

LM或LL协议允许在需要时创建新的逻辑链路和逻辑传输,以及链路和传输属性的一般控制,如逻辑传输启用加密,适应物理链路的传输功率,或调整逻辑链路BR/EDR中的QoS设置。

2.1.2.3 Baseband resource manager

基带资源管理器负责对无线电媒体的所有访问。它有两个主要功能。它的核心是一个调度器,它将物理通道上的时间授予所有已经协商了访问合同的实体。另一个主要功能是与这些实体协商访问合同。访问合同实际上是一种对提供为用户应用程序提供预期性能所需的特定QoS的承诺。

访问合同和调度函数必须考虑到需要使用主控制器的任何行为。这包括(例如)通过逻辑链路和逻辑传输的连接设备之间的正常交换数据,以及使用无线电介质进行查询、进行连接、可发现或可连接,或在使用自适应跳频模式期间从未使用的载波中获取读数。

在BR/EDR系统中的某些情况下,逻辑链路的调度会导致将逻辑链路更改为与以前使用的物理通道不同的物理信道。这可能是(例如)由于参与散点网,一个定期查询功能,或页面扫描。当物理通道没有与时间槽对齐时,资源管理器还会考虑原始物理通道上的插槽和新物理通道上的插槽之间的重新排列时间。在某些情况下,由于两个物理通道被用作相同的设备时钟,插槽将自然对齐。

2.1.2.4 Link Controller

链路控制器负责对数据有效负载和与物理通道、逻辑传输和逻辑链路相关的参数对蓝牙数据包进行编码和解码。链路控制器执行BR/EDR中的链路控制协议信令和LE中的链路层协议(与资源管理器的调度功能紧密结合),用于通信流控制和确认和重传请求信号。对这些信号的解释是与基带数据包相关联的逻辑传输的一个特征。链路控制信令的解释和控制通常与资源管理器的调度器相关联。

2.1.2.5 PHY

PHY块负责传输和接收物理信道上的信息包。基带和PHY块之间的控制路径允许基带块控制PHY块的定时和频率载波。PHY块将数据流从物理通道和基带转换为所需的格式。

2.1.2.6 Isochronous Adaptation Layer

等时自适应层(ISOAL)使上层能够以灵活的方式向链路层发送或接收等时数据,使得上层中的数据包的大小和间隔可以与链路层中的数据包的大小和间隔不同。ISOAL使用碎片/重组或分割/重组操作将上层数据单元转换为底层数据单元(或相反)。

2.1.3 AMP Controller architectural blocks

。。。

相关文章:

Bluetooth Spec【0】蓝牙核心架构

蓝牙核心系统由一个主机、一个主控制器和零个或多个辅助控制器组成蓝牙BR/ EDR核心系统的最小实现包括了由蓝牙规范定义的四个最低层和相关协议,以及一个公共服务层协议;服务发现协议(SDP)和总体配置文件要求在通用访问配置文件&a…...

AppInventor2 ClientSocketAI2Ext 拓展加强版 - 为App提供TCP客户端接入,可发送二进制数据

本文介绍App Inventor 2利用拓展实现TCP/IP协议接入功能,作为网络客户端连接TCP服务器,进行数据通信(发送/接收)。 // ClientSocketAI2Ext 拓展现状 // 原版拓展名称为:com.gmail.at.moicjarod.aix,是能用…...

Opencv之对图片的处理和运算

Opencv实现对图片的处理和修改 目录 Opencv实现对图片的处理和修改灰度图读取灰度图转换灰度图 RBG图单通道图方法一方法二 单通道图显色合并单通道图 图片截取图片打码图片组合缩放格式1格式2 图像运算图像ma[m:n,x:y]b[m1:n1,x1:y1] add加权运算 灰度图 读取灰度图 imread(‘…...

使用Excel制作通达信自定义“序列数据“

序列数据的视频教程演示 Excel制作通达信自定义序列数据 1.序列数据的制作方法:删掉没有用的数据(行与列)和股代码格式处理,是和外部数据的制作方法是相同,自己上面看历史博文。只需要判断一下,股代码跟随的…...

Qt工作总结02 <设置工具栏ToolBar>

相关博文 1. 代码 QToolBar * toolbar new QToolBar(this);QAction * btn1 new QAction("btn1"); btn1->setIcon(QIcon(":/images/btn1.png")); value->setCheckable(true); //按钮按下弹起 toolbar ->addAction(btn1);QAction * btn2 new …...

解决Springboot整合Shiro自定义SessionDAO+Redis管理会话,登录后不跳转首页

解决Springboot整合Shiro自定义SessionDAORedis管理会话,登录后不跳转首页 问题发现问题解决 问题发现 在Shiro框架中,SessionDAO的默认实现是MemorySessionDAO。它内部维护了一个ConcurrentMap来保存session数据,即将session数据缓存在内存…...

Day56 图论part06

108.冗余连接 并查集应用类题目,关键是如何把题意转化成并查集问题 代码随想录 import java.util.Scanner;public class Main{public static void main (String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();DisJoint disjoint = new DisJo…...

[python SQLAlchemy数据库操作入门]-04.连接数据库:增删改查

哈喽,大家好,我是木头左! 通过使用 SQLAlchemy,开发者可以在 Python 中以更直观的方式操作数据库,而无需编写大量的 SQL 代码。 创建数据库引擎 在 SQLAlchemy 中,数据库引擎是用于与数据库交互的核心组件。它负责管理数据库连接,并执行 SQL 语句。 示例:连接到 SQLi…...

黑马点评——基于Redis

目录 1.短信登录 1.1基于Session登录(已被Redis代替) 1.2cookie和session 2.添加Redis缓存 2.1根据id查询商户信息 2.2缓存穿透 2.3缓存雪崩 《黑马点评》Redis高并发项目实战笔记【完结】P1~P72_黑马点评笔记-CSDN博客 1.短信登录 1.1基于Sess…...

RocketMQ的集群架构是怎样的?

大家好,我是锋哥。今天分享关于【RocketMQ的集群架构是怎样的?】面试题。希望对大家有帮助; RocketMQ的集群架构是怎样的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RocketMQ 是阿里巴巴开源的分布式消息中间件,广泛用于处…...

VS2022+QT6.7 窗口置灰(遮罩)

本文章使用QWidget来使窗口置灰,使用按钮控制置灰功能的开启和关闭,同时被置灰的控件自动禁用交互功能。 connect(ui.pushButton_open, &QPushButton::clicked, this, []() { //创建无边框窗口,大小是父的大小QWidget* parentWidget new QWidget…...

如何通过HTTP API插入或更新Doc

本文介绍如何通过HTTP API向Collection中插入或更新Doc。 说明 若调用本接口时Doc Id已存在,则等同于更新Doc;Doc Id不存在,则等同于插入Doc。 若调用本接口时不指定Doc Id,则等同于插入Doc,DashVector会自动生成Doc …...

C++ STM32 F4xx USART LL库 DMA + IDLE ISR 驱动裸机 +FreeRTOS 任务通知

写的一般,大佬可以帮我看看 头文件 /********************************************************************************* file : usart_driver.hpp* brief : usart_driver program head**************************************************…...

RK3588在Android13/14如何查看GPU,NPU,DDR,RGA数据

由于Android13上selinux的权限管控加强,原来android12的方法已经无法获取到性能相关数据了,故单独介绍Android13上的性能数据获取 首先需要保障能过获取到root权限,adb root能够生效,adb shell进入shell命令行 mount -t debugfs…...

sentinel学习笔记6-限流降级(上)

本文属于sentinel学习笔记系列。网上看到吴就业老师的专栏,写的好值得推荐,我整理的有所删减,推荐看原文。 https://blog.csdn.net/baidu_28523317/category_10400605.html sentinel 实现限流降级、熔断降级、黑白名单限流降级、系统自适应…...

【Rust自学】6.4. 简单的控制流-if let

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 6.4.1. 什么是if let if let语法允许将if和let组合成一种不太冗长的方式来处理与一种模式匹配的值,同时忽略其余模式。 可以…...

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下

【HarmonyOS】鸿蒙将资源文件夹Resource-RawFile下的文件存放到沙箱目录下 一、问题背景 应用开发中,我们经常会遇到一些文件原先是放在资源文件夹 rawfile下,但是逻辑处理时,需要转移到本地沙箱才能操作。这种情况下,就需要将将…...

Vue项目中env文件的作用和配置

在实际项目的开发中,我们一般会经历项目的开发阶段、测试阶段和最终上线阶段,每一个阶段对于项目代码的要求可能都不尽相同,那么我们如何能够游刃有余的在不同阶段下使我们的项目呈现不同的效果,使用不同的功能呢?这里…...

在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)

一、概述 记录时间 [2024-12-26] 本文讲述如何在 Vue3 项目中使用计时器组件。具体包括开发环境的配置,ViteVue 项目的创建,Element Plus 插件的使用,以及计时器组件的创建和使用。 想要直接实现计时器组件,查看文章的第四部分。…...

机器人C++开源库The Robotics Library (RL)使用手册(三)

进入VS工程,我们先看看这些功能函数及其依赖库的分布关系: rl命名空间下,主要有八大模块。 搞定VS后将逐个拆解。 1、编译运行 根据报错提示,配置相应错误的库(根据每个人安装位置不同而不同,我的路径如下:) 编译所有,Release版本耗时大约10分钟。 以rlPlan运动…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...