GAP的简单理解
GAP这个名字,直接翻译过来不好理解。
简单点可以理解为:
- 这是蓝牙设备在互联之前,过程中,第一个用于交流的协议。
- 在代码上,会给这个协议实现,连接参数的设置,连接事件的实现(如断开连接,连接成功等好多事件)
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设备单纯通报状态信息,其他设备只接收状态。双方不会有连接建立。
连通拓扑
设备之间是可以建立双向连接的。
多角色拓扑
一个设备有两种角色
文章主要是主观的个人理解多,难免有以偏概全的地方。有错误的地方欢迎指正。共勉!!!!