一、 前言
GAP全名是 Generic Access Profile,主要作用如下:
- GAP确保了应用程序和设备间的高度互操作性,还允许开发人员利用现有的定义更加容易地定义新的配置文件
- GAP处理未连接的两个设备间的发现和建立连接过程
- 此配置文件定义了一些通用的操作,这些操作可供引用GAP的配置文件,以及实施多个配置文件的设备使用
- GAP确保了两个蓝牙设备可通过蓝牙技术交换信息,以发现彼此支持的应用程序
- 不符合任何其他蓝牙配置文件的蓝牙设备必须使GAP符合以确保基本的互操作性和共存
GAP是最基本的Profile,其他的Profile都是直接或间接引用了这个Profile,保证了不同的蓝牙产品可以相互发现并建立连接,定义了所有蓝牙设备中必须实现的功能,介绍了发现和连接设备的通用步骤。
二、 Profile Stack
如下图可以看出GAP与其他协议层的关系,可以清晰得看出是所有协议层的基础。
GAP Profile主要描述了:
- GAP 角色
- 发现设备过程
- 连接过程
- 安全交互(配对)
三、 GAP角色
- Broadcaster
具备发送能力(接收能力是可选的),在链路层可以处于空闲和广播状态,具备发送广播包的能力,不支持扫描,不支持连接。 - Observer
具备接收能力(发送能力是可选的),在链路层可以处于空闲和扫描状态,具备被动扫描能力(主动扫描能力是可选的),不支持连接,不支持广播。
被动扫描指的是接受广播不发送scan_req,主动扫描指的是接受广播并发送scan_req。 - Peripheral
具备收发能力,在链路层可以处于空闲和广播状态,具备发送广播包的能力,不支持扫描,支持连接,在连接时处于Slave角色,同时支持一些连接参数更新和加密的过程。 - Central
具备收发能力,在链路层可以处于空闲和扫描和初始化状态,支持扫描,支持连接,连接时出Master角色,同时支持一些连接参数更新和加密的过程。
四、 用户接口
- 设备地址
- 设备名字
- 秘钥
- 设备类型
- 外观
五、总结
GAP主要定义了设备间的连接。