2.GAP:通用访问协议

GAP的简单理解

GAP这个名字,直接翻译过来不好理解。
简单点可以理解为:

  1. 这是蓝牙设备在互联之前,过程中,第一个用于交流的协议。
  2. 在代码上,会给这个协议实现,连接参数的设置,连接事件的实现(如断开连接,连接成功等好多事件)

BLE的两种通信方式

  • 面向连接的通信:设备之间存在专用连接,形成双向通信。
  • 广播通信:设备无需先建立连接即可进行通信,通过向范围内的所有设备广播数据包。(信标,温湿度计会常用这种,它只需要将数据发出去就行。不用和用户交互。)

GAP的角色

在BLE里,涉及到角色概念的,就两个地方。

  • GAP角色 :定义了两种角色:Central(中央设备)和Peripheral(外围设备)
  • GATT角色:定义了两种角色:服务器和客户端。

GAP角色和GATT角色其实是两个分开的概念,他们并没有联系。所以在记的时候不要混在一起。

GAP分角色的原因
主要是简化设计省电两个原因。

**穿插个知识点:BLE建立连接从广播开始,**

 1. A设备广播自己的信息,B设备收到广播。
 2. B设备对A设备有兴趣,就发起连接,A会在广播后短暂开启接收,如果有人要连接我,就连接,没人连接,A就会关闭无线电。

简化设计: 设备要连接上,必须有人发起连接,有人接收连接。如果让一个人会发起连接也会接受连接,那协议栈就会复杂一些。所以蓝牙将这部分的功能分开指定了,Central(只能接收广播),Peripheral(只能发起广播)

省电: :蓝牙的很多设备是电池供电的,或对功耗要求很高。因此在没有通信的时候,设备需要关闭其无线电以达到省电的目的。但是如果双方都经常关闭无线电,那不就导致通信经常会失败了。为了避免这个问题,会让Central定义为一直接收BLE广播,(接收相对发送功耗小一些)。因此Central设备通常是功耗不敏感的设备来做这个角色。

GAP的Central是负责扫描(或叫接收)蓝牙广播的,常见为手机,PC这种设备
GAP的Peripheral,负责广播自己,让有需要和我通信的人可以连接我,平时无线电关闭状态。以达到省电目的。通常是一些传感器设备。

GAP的Broadcaster 和observer 角色

这两种角色,可以认为是Central(中央设备)和Peripheral(外围设备)的特殊用法。

主要是有些场景,设备直接不需要建立连接,他只需要周期性的广播自己的信息,或者持续的监听有没有设备广播新的数据就行。所以才引入了这两种简单的角色。

蓝牙的网络拓扑结构

只要是设备之间多起来,就可以形成网络,那么他们就会有网络关系,也就是拓扑结构。

广播拓扑:A设备单纯通报状态信息,其他设备只接收状态。双方不会有连接建立。
在这里插入图片描述连通拓扑
设备之间是可以建立双向连接的。
在这里插入图片描述多角色拓扑
一个设备有两种角色
在这里插入图片描述

文章主要是主观的个人理解多,难免有以偏概全的地方。有错误的地方欢迎指正。共勉!!!!

相关推荐

  1. golang利用alpn机制实现优先以http2协议访问服务端

    2024-07-12 12:28:03       55 阅读
  2. I2C通信协议:设备互联的黄金标准

    2024-07-12 12:28:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 12:28:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 12:28:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 12:28:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 12:28:03       69 阅读

热门阅读

  1. 有了HTTP,为什么还需要HTTPS?

    2024-07-12 12:28:03       28 阅读
  2. k8s中Service暴露的种类以及用法

    2024-07-12 12:28:03       21 阅读
  3. SchedulerLock分布式定时任务锁

    2024-07-12 12:28:03       22 阅读
  4. 【Go系列】 array、slice 和 map

    2024-07-12 12:28:03       22 阅读
  5. 浅层神经网络示例

    2024-07-12 12:28:03       19 阅读
  6. 【9-2:代码规范】

    2024-07-12 12:28:03       21 阅读
  7. 运维开发小白学习之路

    2024-07-12 12:28:03       20 阅读
  8. 监控团队的建立与管理:优化流程与工具选型

    2024-07-12 12:28:03       18 阅读
  9. 使用任务表,实现两个数据库表数据迁移

    2024-07-12 12:28:03       30 阅读