BLE GAP 协议和 GATT 协议

最近要打算学习 Blufi 协议进行蓝牙配置,其中必然使用 GAP 协议和 GATT 协议,于是进行重新学习一番。

BLE 是一个 Bluetooth SIG 组织颁布的协议,对于使用 BLE 我们开发人员,最关注的是 上层的 GAP 协议和 GATT 协议。

1.1 GAP 和 GATT 有什么不同呢?

  • GAP :定义一个 BLE 网络栈的通用拓扑结构。
  • GATT:描述关于如何数据在连接中如何传输的细节。

GATT 尤其关注于数据如何被格式化、打包、然后跟据分发规则去在网络中发送。属性协议(ATT)与GATT紧密相连,那么GATT 处于 ATT 的上层,使用 ATT 去描述数据如何在两个连接的设备中交换。

1.2 GAP (Generic Access Profile)

GAP 即通用存取协议,BLE设备可以使用两种机制与外部世界通信:广播或连接。GAP 就是用来定义设备跟设备之前是用过广播呢,还是连接去通信的。

下面 GAP 将回答 怎么连接或广播?连接后 GAP 可以做什么?两个问题。

怎么连接或广播?

一个设备通过选择 GAP 中指定的一个角色去连接到一个 BLE 网络。

广播: 这个过程中,设备没有连接。包含广播者和观察者两种角色。

  • 广播者:一个设备广播一些信息。
  • 观察者:一个设备接受广播者的信息。

连接:设备之间必须连接,一般生产环境中更常用。

  • 外设:一个设备广播他的存在,使得中心设备能与它建立连接。在建立连接后,设备不再广播数据给其他中心设备,保持连接。

    • 外设是低功耗的因为他们只定期发送一些 beacons,然后中心设备对其进行响应。
    • Bean 是一种 BLE 外设。
  • 中心设备:一个设备通过监听包,去连接一个外设,一个中心可以连很多个外设。

    • 当一个中心设备想要连接外设的时候,它发一个连接请求给外设。如果外设接受了,那么就建立了连接。
    • 你的电脑在连接 Bean 的时候就是一个中心设备。

连接后能做什么?

中心设备可以修改连接参数:中心设备创建一些连接的参数,中心设备可以更改参数,外设只能通过请求中心设备去更改参数。

外设或中心设备可以中止连接:两者可以主动、或者因为异常而断开连接。

1.3 GATT(Generic Attribute Profile)

类似 GAP,在这一层协议上,我们有两种角色:

  • 客户端:发送请求给 GATT 服务器,能够读/写 服务器的数据。
  • 服务端:服务端负责存储属性,一旦客户端发起请求,服务端进行回应。

所以,当我们使用 GAP 协议建立了连接,然后就可以使用 GATT 协议进行数据的存取实现不同的义务功能。

BLE GAP 协议和 GATT 协议的更多相关文章

  1. Bytom BIP-32协议和BIP-44协议

    我们知道HD(分层确定性)钱包,基于 BIP-32:多币种和多帐户钱包,基于 BIP-44:最近比原社区的钱包开发者对比原的BIP-32和BIP-44协议有疑问,所以我今天就专门整理了一下该协议的内容 ...

  2. TCP协议和UDP协议基础介绍

    TCP协议和UDP协议区别 标签(空格分隔): TCP,udp TCP的三次握手 TCP被称为可靠的数据传输协议,主要是通过许多机制来实现的其中最主要的就是三次握手的功能,当然,TCP传送数据的机制非 ...

  3. HTTP协议和SOCKS5协议

    HTTP协议和SOCKS5协议 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们平时上网的时候基本上是离不开浏览器的,尤其是搜索资料的时候,那么这个浏览器是如何工作的呢?用的又是 ...

  4. python 全栈开发,Day33(tcp协议和udp协议,互联网协议与osi模型,socket概念,套接字(socket)初使用)

    先来回顾一下昨天的内容 网络编程开发架构 B/S C/S架构网卡 mac地址网段 ip地址 : 表示了一台电脑在网络中的位置 子网掩码 : ip和子网掩码按位与得到网段 网关ip : 内置在路由器中的 ...

  5. http协议和https协议

    内容: 1.http协议介绍 2.https协议介绍 3.http协议和https协议对比 1.http协议介绍 (1)http协议是什么 1 一个传输协议,协议就是双方都遵守的规范. 2 为什么叫超 ...

  6. (1)基于tcp协议的编程模型 (2)tcp协议和udp协议的比较 (3)基于udp协议的编程模型 (4)反射机制

    1.基于tcp协议的编程模型(重中之重)1.1 编程模型服务器: (1)创建ServerSocket类型的对象,并提供端口号: (2)等待客户端的连接请求,调用accept()方法: (3)使用输入输 ...

  7. (1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型

    1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将 ...

  8. http协议及http协议和tcp协议的区别

    http是应用层的协议,并且无连接,无状态的协议. http协议的特点: 1.支持c/s模式 2.简单快速:客户端向服务器端传送数据的时候,只需要发送请求方法和路径,请求方法有:post,get,he ...

  9. Java基础之UDP协议和TCP协议简介及简单案例的实现

    写在前面的废话:马上要找工作了,做了一年的.net ,到要找工作了发现没几个大公司招聘.net工程师,真是坑爹呀.哎,java就java吧,咱从头开始学呗,啥也不说了,玩命撸吧,我真可怜啊. 摘要: ...

随机推荐

  1. 用前端姿势玩docker【二】dockerfile定制镜像初体验

    前言 书接上文,关于dockerfile指令的api在此处不做赘述,在此只是记录下注意事项: '示坑以埋之'. 配置指令 FROM dockerfile必须以此开头 一个dockerfile可执行添加 ...

  2. echarts 实战 : 标题的富文本样式

    官方文档在这一块交待的不是很清楚,记录一下. title:{ left:15, top:10, subtext:"AAA {yellow|316} BBB {blue|219}", ...

  3. javascript : 复杂数据结构拷贝实验

    数组深拷贝看起来很简单. array.concat()就行了. 但是,如果数组里有对象呢? 实际上,你以为你拷贝了对象,但实际上你只拷贝了对象的引用(指针)! 我们可以做个试验. // test le ...

  4. Android Studio(Kotlin)之RecyclerView

    RecyclerView应该是ListView的增强版. RecyclerView与ListView的区别(我认为的): RecyclerView的性能比ListView高 RecyclerView支 ...

  5. abp vnext 开发快速入门 3 实现权限控制

    上篇讲了abp vnext 实现了简单的增加操作的例子.删除更新查询基本类似,这里就不讲了,接下来说下如何实现角色权限控制. 再说之前,先说下如果想更加透彻的理解abp vnext的权限控制,最好是先 ...

  6. javascript中的设计模式之发布-订阅模式

    一.定义 又叫观察者模式,他定义对象间的依照那个一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将的到通知.在javascript中,我们一般用时间模型来替代传统的发布-订阅模式 二 ...

  7. 借鉴一个比较标准的后端RESTful API

    我们制定的 API 规范,使用了微服务架构所以做了一些改进,我们更偏向使用 http code 标识,不然需要自己处理成功或失败的逻辑,在 200 内再包一层显得啰嗦:并且微服务系列都不支持,Feig ...

  8. Spring Security 实战干货:理解AuthenticationManager

    1. 前言 我们上一篇介绍了UsernamePasswordAuthenticationFilter的工作流程,留下了一个小小的伏笔,作为一个Servlet Filter应该存在一个doFilter实 ...

  9. Springboot(二)springboot之jsp支持

    参考恒宇少年的博客:https://www.jianshu.com/p/90a84c814d0c springboot内部对jsp的支持并不是特别理想,而springboot推荐的视图是Thymele ...

  10. hostapd阅读(openwrt)-1

    好久没有来博客园写点东西了,这段时间主要搞了openwrt系统的移植,无线的校验等相关工作,鉴于我是一个懒惰的大龄菜鸟程序员,就先自我原谅自己了,好了废话少说,直奔主题--hostapd. 由于我主要 ...