BLE常见概念梳理GATT和GAP

1 篇文章 0 订阅

之前都是用别人的框架做开发,对于蓝牙里面一些组件的概念不是很清楚,只是知道如何配置广播,配置服务

今天查了一下,基本理清了 GATT和 GAP的概念
在这里插入图片描述

GPT讲的很清楚了
USER

gatt和gap 在蓝牙栈中的关系

ChatGPT

在蓝牙技术中,GATT(Generic Attribute Profile)和GAP(Generic Access Profile)是两个不同但相关的概念,它们都是定义了蓝牙协议栈中不同层次的协议规范。

**GATT(Generic Attribute Profile):**GATT是蓝牙协议栈中的一个协议,用于管理蓝牙设备之间的通信。它定义了用于在蓝牙设备之间交换数据的一组规范。GATT通常用于在蓝牙低功耗(Bluetooth Low Energy,BLE)设备之间交换数据,例如传感器数据、配置信息等。GATT规范包括了服务(Services)和特征(Characteristics),这些服务和特征定义了设备可以提供的功能和数据类型。

**GAP(Generic Access Profile):**GAP是蓝牙协议栈中的另一个协议,用于管理蓝牙设备的基本行为,例如设备的发现、连接和配对。GAP规范定义了设备的广告(Advertisement)格式、设备的可见性、设备的连接参数等。GAP的主要作用是使蓝牙设备能够进行发现和连接,并定义了设备在不同状态下的行为。

在蓝牙协议栈中,GATT和GAP之间存在着紧密的关系。GAP定义了设备的基本行为,包括设备的广告、发现和连接过程等。而在设备连接之后,GATT定义了在连接的设备之间进行数据交换的规范。换句话说,GAP用于管理设备之间的连接,而GATT用于管理连接后的数据交换。

总的来说,GAP和GATT是蓝牙协议栈中不同层次的协议规范,它们共同构成了蓝牙设备之间通信的基础。GAP定义了设备的基本行为,而GATT定义了数据交换的规范。

User

ATT又是什么角色

ChatGPT

ATT(Attribute Protocol)是蓝牙协议栈中的另一个重要协议,与GATT(Generic Attribute Profile)密切相关。

**ATT(Attribute Protocol):**ATT是一种轻量级的协议,用于在蓝牙设备之间传输和管理数据。它定义了一种基于属性的数据交换模型,其中数据被组织为属性(Attributes)的集合。每个属性都有一个唯一的标识符(Attribute Handle),用于在设备之间进行唯一标识。ATT协议定义了一组操作,例如读取、写入、通知和确认等,用于设备之间对属性的访问和操作。

**GATT(Generic Attribute Profile):**GATT建立在ATT协议之上,为设备之间的数据交换提供了更高层次的抽象和定义。GATT使用ATT协议来管理服务(Services)和特征(Characteristics),这些服务和特征定义了设备提供的功能和数据类型。通过GATT,设备可以通过属性的方式对外公开自己的功能和数据,使得其他设备可以访问和操作这些属性。

总的来说,ATT和GATT在蓝牙协议栈中扮演着不同的角色。ATT定义了数据交换的基本模型和操作,而GATT建立在ATT之上,为设备之间的数据交换提供了更高级别的抽象和定义。GATT通过定义服务和特征的方式,使得设备之间可以更加灵活和高效地交换数据。

User

GATT相当于一张配置表    ATT基于这张配置表进行蓝牙底层交互?

ChatGPT

几乎正确,但是有一些微妙的差异。让我们来澄清一下:

**ATT(Attribute Protocol):**ATT是蓝牙协议栈中的协议之一,它定义了在两个蓝牙设备之间进行数据交换的规范。ATT协议基于客户端-服务器模型,其中一个设备充当客户端,而另一个设备充当服务器。在ATT协议中,数据被组织成称为“属性”(Attributes)的结构。每个属性都有一个唯一的标识符(Attribute Handle),并且可以是读取、写入或通知的。

**GATT(Generic Attribute Profile):**GATT是建立在ATT之上的协议。它定义了如何使用ATT协议中的属性来组织数据,并规定了一组通用的属性(如服务和特征),这些属性描述了设备所支持的功能和数据。因此,GATT可以被视为一个高级抽象层,它使用ATT协议来管理设备之间的通信,并定义了如何利用ATT协议中的属性来传输数据。

简而言之,ATT定义了蓝牙设备之间数据交换的底层协议规范,而GATT则建立在ATT之上,提供了一种更高级的方式来组织和管理数据,使得设备之间的通信更加高效和灵活。因此,GATT可以被视为一种配置表,描述了设备所支持的服务和特征,而ATT协议则负责实际的数据交换。

User

一般蓝牙开发不需要直接操作ATT吧

ChatGPT

是的,一般的蓝牙开发并不需要直接操作ATT(Attribute Protocol)。在大多数情况下,开发人员会使用更高级别的协议,如GATT(Generic Attribute Profile),来组织和管理蓝牙设备之间的数据交换。

GATT提供了一种更抽象的方式来描述设备之间的通信,并且定义了一组通用的属性,如服务和特征,用于描述设备所支持的功能和数据。开发人员通常会通过定义服务和特征来构建他们的应用程序逻辑,并使用GATT协议来实现设备之间的数据交换,而不是直接操作底层的ATT协议。

因此,大多数蓝牙开发人员不需要直接操作ATT协议,而是使用更高级别的协议和抽象来简化开发过程并提高效率。

到这里基本理清了
GATT一般是用来配置,上层属性的
例如:服务,特征,特征值的属性…

GAP就是配置底层偏物理属性的
例如: 广播格式,连接间隔,广播间隔,超时时间…

  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值