蓝牙核心规范(V5.2)3.5-深入详解之蓝牙应用架构

简介: 蓝牙核心规范(V5.2)3.5-深入详解之蓝牙应用架构

image.png

image.png


image.png

1.蓝牙协议

蓝牙系统中的应用程序互操作性是通过蓝牙配置文件来完成的。蓝牙协议定义了蓝牙系统中从PHY到L2CAP的所有底层的必要功能和特性,以及本规范之外的任何其他协议。该协议定义了层之间的垂直交互以及设备之间特定层的对等交互。


image.png

图1:蓝牙配置文件


此外,应用程序行为和数据格式也由协议定义。当两个设备符合蓝牙协议的所有要求时,将启用应用程序的互操作性。


所有协议都描述了设备连接所需的服务发现需求,以及找到进行应用程序级连接所需的可用应用程序服务和连接信息。


2.通用访问协议

蓝牙系统定义了所有蓝牙设备所实现的基本协议。此协议是通用访问协议(GAP),它定义了蓝牙设备的基本要求。例如,对于BR/EDR,它定义了一个蓝牙设备,包括无线电、基带、链接管理器、L2CAP和服务发现协议功能;对于LE,它定义了物理功能层、链接层、L2CAP、安全管理器、属性协议和通用属性协议。这将所有不同的层连接在一起,形成了蓝牙设备的基本要求。


它还描述了设备发现、连接建立、安全、身份验证、关联模型和服务发现的行为和方法。


在BR/EDR中,GAP定义了一个可能存在的功能。此功能包括设备如何相互发现、建立连接并描述用于身份验证的安全关联模型。在BR/EDR中,这种功能可能存在于两个设备中。如果设备希望发现或与所有设备建立连接,则设备可能需要同时实现初始化和接受功能。一个设备可能只包括启动或接受功能,但它需要远程设备支持免费的功能,以发现或建立与该设备的连接。BR/EDR,控制器需要支持所有功能,但是主机可能会根据设备支持的其他配置文件或用例来限制此功能。


在LE中,GAP定义了四个特定的角色:广播器、观察器、外围设备和中心设备。如果底层控制器支持多个LE GAP角色或角色组合,则设备可能支持多个LE GAP角色。每个角色都指定了对底层控制器的要求。这允许针对特定的用例优化控制器。


广播器的角色仅针对发射机的应用进行了优化。支持广播器角色的设备使用广告来广播数据。广播器角色不支持连接。


观察器角色仅针对接收器的应用程序进行了优化。支持观察者角色的设备是广播器的补充设备,并接收广告中包含的广播数据。观察者角色不支持连接。


外设角色针对支持单个连接且不如中央设备复杂的设备进行了优化。支持外设角色的设备只需要支持控制器的从属角色的控制器。


中心角色支持多个连接,并且是与外围设备角色中的设备的所有连接的启动器。支持中央角色的设备需要一个控制器,它支持控制器的主角色,并且与其他LEGAP角色相比,通常支持更复杂的功能。


3.协议层次结构

由于所有的蓝牙设备都需要实现GAP,因此由蓝牙设备实现的任何附加协议都将成为GAP集。根据应用程序的复杂性或在许多应用程序之间重用蓝牙系统功能的公共需求的能力,可以创建依赖于GAP或其他通用概要文件的其他通用概要文件,以及启用其他概要文件。描述应用程序互操作性的顶级概要文件称为应用程序协议。


image.png

图2:协议层次结构


应用程序配置文件包含通过引用GAP和任何其他描述蓝牙系统的一组常见需求的通用协议。


4. 通用属性架构

4.1 属性协议(ATT)

为了允许设备读写服务器上保存的小数据值,我们定义了一个属性协议(ATT)。每个存储的值,通常只有几个八位制,被称为属性。该协议允许每个属性使用uuid进行自我识别,以此来识别数据的类型。这些UUID可以是在“已分配编号”文档和相关规范中定义的已知的已分配编号,也可以是已分配的128位UUID的供应商。


属性协议消息通过L2CAP通道发送,称为ATT承载器。


属性协议定义了两个角色:客户端和服务器。设备可以同时是ATT客户端和ATT服务器。单个ATT承载上的属性协议消息允许每个方向上的单个事务。当收到对消息的响应时,可以启动下一个事务。当创建多个ATT承载时,每个ATT承载都有一个单独的事务模型,因此可以同时完成多个ATT事务,每个承载一个。这可以用于允许多个更高级层规范并发发送消息。


ATT服务器存储这些属性,并接受来自ATT客户端的属性协议请求、命令和确认。ATT服务器向请求发送响应,当由更高级层配置时,当ATT服务器上发生指定事件时,异步向ATT客户端发送指示和通知。


4.2 通用属性协议(GATT)

通用属性协议(GATT)构建在属性协议(ATT)之上,并为由属性协议传输和存储的数据建立公共操作和框架。GATT定义了两个角色:服务器和客户端。GATT客户端也是一个ATT客户端。GATT服务器也是一个ATT服务器。GATT角色不一定与特定的GAP角色相关联,但可以由更高级层次的配置文件指定。GATT和ATT不是运输特异性,可用于BR/EDR和LE。但是,GATT和ATT必须在LE中实现,因为它用于发现服务。


GATT还指定了GATT服务器上包含的数据的格式。由属性协议传输的属性被格式化为服务和特性。服务可能包含一系列特征。特征包含单个值和描述特征值的任意数量的描述符。


使用已定义的服务结构、特征和特征描述符,非特定协议的GATT客户端仍然可以遍历GATT服务器并向用户显示特征值。特征描述符可用于显示可能使用户可以理解该值的特征值的描述。


5. 基于gatt协议层次结构


GATT协议指定了在其中交换协议数据的结构。此结构定义了在概要文件中使用的服务和特性等基本元素。


该层次结构的顶层是一个协议。协议由满足一个用例所需的一个或多个服务组成。服务由对其他服务的特征或引用组成。每个特性都包含一个值,并可能包含有关该值的可选信息。服务和特性以及特性的组件(即值和描述符)包含概要文件数据,并且都存储在服务器上的属性中。


image.png

图3:基于gatt协议层次结构

5.1  服务

服务是用来完成设备或设备部分的特定功能或特征的数据和相关行为的集合。一个服务可以包括其他主要服务或辅助服务和/或构成该服务的一组特征。


服务有两种类型:主服务和辅助服务。主服务是提供设备的主要功能的服务。辅助服务是提供设备的辅助功能的服务,并包括来自该设备上的至少一个主服务。


服务可以用于一个或多个协议中,以满足特定的用例。


5.2  包括服务

包含的服务是将服务器上的另一个服务定义作为包括其的服务的一部分的方法。当一个服务包含另一个服务时,整个包含的服务将成为新服务的一部分,包括任何嵌套包含的服务和特征。所包含的服务仍然作为一个独立的服务存在。对筑巢的深度没有任何限制。


5.3 特征

特征是在服务中使用的值,以及关于如何访问该值的属性和配置信息,以及关于如何显示或表示该值的信息。特征定义包含一个特征声明、特性属性和一个值。它还可以包含描述值或允许服务器关于特征值的配置的描述符。


6. 基于网格的模型层次结构


网格配置文件指定网状网络中的设备交换数据的结构。此结构定义了模型和属性等基本构建块。


层次结构的顶层是一个模型,它可以是客户端模型或服务器模型。客户端模型可以向服务器模型发送消息,而服务器模型可以使用其他消息来响应客户端模型。模型使设备能够使用标准化数据格式将标准化消息发送到它们以前没有关系的其他设备。


6.1 模型

模型是完成特定设备功能的属性、状态、消息和相关行为的集合。模型定义并公开状态以及任何相关的行为。它还定义了用于在网状网络中的设备中的模型之间进行通信的消息。消息是全局定义的,并且不是特定于模型的。模型是不可变的,这意味着不能添加到模型定义中或从模型定义中删除。因此,向模型添加特性的唯一方法是定义一个新的模型,通过定义新的状态、消息和行为来扩展现有的模型。这些新的状态和行为使用状态绑定与现有的模型连接起来。这通过允许新设备访问扩展模型的新功能,并允许旧设备访问现有模型的基本功能,从而确保向后和转发兼容性。


6.2 特性

属性会将上下文添加到已定义的特性中。当将数据发送到网状网络时,用该数据的含义或上下文来标记数据是非常有用的。这允许接收属性的设备来解释该数据,而无需事先协商上下文。例如,一个温度特性可以给出一个关于如何或何时测量该温度的上下文,如“外部温度”、“室内温度”或“油温”。


属性是全局定义的,并且不是特定于模型的。


目录
相关文章
|
22天前
|
Prometheus 监控 Kubernetes
Prometheus 在微服务架构中的应用
【8月更文第29天】随着微服务架构的普及,监控和跟踪各个服务的状态变得尤为重要。Prometheus 是一个开源的监控系统和时间序列数据库,非常适合用于微服务架构中的监控。本文将详细介绍 Prometheus 如何支持微服务架构下的监控需求,包括服务发现、服务间的监控指标收集以及如何配置 Prometheus 来适应这些需求。
51 0
|
1天前
|
Kubernetes Cloud Native 持续交付
深入理解云原生技术及其在现代IT架构中的应用
【9月更文挑战第18天】云原生技术,作为推动企业数字化转型的引擎,正以它独特的魅力重塑着信息技术的未来。本文将带你一探究竟,从云原生的基础概念出发,逐步深入到其核心组件、设计理念以及如何在实际应用中发挥巨大作用。你将了解到容器化、微服务架构、持续集成与持续部署(CI/CD)等关键实践,并见证它们如何帮助企业构建更加灵活、高效和可靠的应用。
|
7天前
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
17 5
|
7天前
|
机器学习/深度学习 测试技术 数据处理
KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
Kolmogorov-Arnold网络(KAN)作为一种多层感知器(MLP)的替代方案,为深度学习领域带来新可能。尽管初期测试显示KAN在时间序列预测中的表现不佳,近期提出的可逆KAN混合模型(RMoK)显著提升了其性能。RMoK结合了Wav-KAN、JacobiKAN和TaylorKAN等多种专家层,通过门控网络动态选择最适合的专家层,从而灵活应对各种时间序列模式。实验结果显示,RMoK在多个数据集上表现出色,尤其是在长期预测任务中。未来研究将进一步探索RMoK在不同领域的应用潜力及其与其他先进技术的结合。
31 4
|
7天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
18 3
|
14天前
|
传感器 Cloud Native 物联网
Micronaut在物联网中的应用探索:轻盈架构赋能万物互联新时代
【9月更文挑战第6天】Micronaut是一个现代、轻量级的Java框架,以其高效、易用及对云原生环境的支持,在物联网开发中展现出独特优势。它通过AOT编译技术优化应用,减少内存消耗,适合资源受限的设备。Micronaut支持反应式编程和HTTP/2,提升并发处理能力和网络传输效率。本文通过一个温度传感器数据收集服务的例子,展示了如何利用Micronaut简化物联网应用开发,使其成为该领域的理想选择。
31 3
|
1天前
|
Kubernetes Cloud Native Devops
云原生架构的崛起与应用##
云原生架构是现代企业数字化转型的关键,通过容器化、微服务、DevOps等技术,实现高效、灵活的应用部署和管理。本文探讨云原生的核心概念、主要技术及其实际应用价值,揭示其在提升企业运营效率和创新能力中的重要性。 ##
12 0
|
3天前
|
缓存 负载均衡 数据管理
深入探索微服务架构的核心要素与实践策略在当今软件开发领域,微服务架构以其独特的优势和灵活性,已成为众多企业和开发者的首选。本文将深入探讨微服务架构的核心要素,包括服务拆分、通信机制、数据管理等,并结合实际案例分析其在不同场景下的应用策略,旨在为读者提供一套全面、深入的微服务架构实践指南。**
**微服务架构作为软件开发领域的热门话题,正引领着一场技术革新。本文从微服务架构的核心要素出发,详细阐述了服务拆分的原则与方法、通信机制的选择与优化、数据管理的策略与挑战等内容。同时,结合具体案例,分析了微服务架构在不同场景下的应用策略,为读者提供了实用的指导和建议。
|
20天前
|
存储 前端开发 数据库
神秘编程世界惊现强大架构!Web2py 的 MVC 究竟隐藏着怎样的神奇魔力?带你探索实际应用之谜!
【8月更文挑战第31天】在现代 Web 开发中,MVC(Model-View-Controller)架构被广泛应用,将应用程序分为模型、视图和控制器三个部分,有助于提高代码的可维护性、可扩展性和可测试性。Web2py 是一个采用 MVC 架构的 Python Web 框架,其中模型处理数据和业务逻辑,视图负责呈现数据给用户,控制器则协调模型和视图之间的交互。
25 0
|
21天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:Ansible在现代IT架构中的应用与实践
【8月更文挑战第30天】随着信息技术的飞速发展,企业对运维效率和可靠性的要求日益增高。传统的手动运维方式已难以应对复杂多变的IT环境,自动化运维因此成为行业新宠。本文将深入探讨Ansible这一流行的自动化工具,如何通过其简洁的配置管理和强大的多节点部署能力,助力现代IT架构实现高效、可靠的运维管理。我们将从Ansible的核心概念入手,逐步解析其在配置管理、任务执行、应用部署等方面的实战应用,并结合代码示例,展示如何利用Ansible简化日常运维工作,提升运维质量和效率。无论你是运维新手还是资深专家,这篇文章都将为你提供宝贵的洞见和实操技巧。

热门文章

最新文章