1.BLE通信中主要有两对角色:
在GAP通信过程中是以Central和Peripheral角色存在的:Peripheral发起广播, Central发起扫描请求。Central收到Peripheral的扫描回复后建立连接。
在GATT通信过程中是以Server和Client角色存在的:serve端用于提供数据,Client端用于使用Server提供的数据并完成处理。
*在GAP中的Central和Peripheral角色到GATT阶段可以担当Server或Client角色,并不固定。
2.BLE通信主要有两个通信:GAP和GATT:
GAP(Generic Access Profile)用于peripheral向外进行广播,使Central发现自己,从而建立GATT连接。GAP通两种方式向外广播数据:Advertising Data Payload(广播数据)和Scan Response Data Payload(扫描回复)。
(Peripherals也可以只广播自己的数据但不建立连接,iBeacon是使用这种广播方式,向多个Central发送数据)
GATT(Generic Attribute Profile)用于Peripheral和Central进行通信。GATT通过多个服务(Serivce)为Central提供数据,服务(Service)又是由多个特性(Characteristic)组成。
一个Peripheral的服务和特性通过128位的UUID来标识。
GATT连接是独占的,一个Peripheral只能被一个Central连接,一旦连接成功,Peripheral就会停止广播。
3.Peripheral端操作主要有以下步骤:
启动一个Peripheral管理对象
→设置服务及特性
→开始广播(包含GAP基本服务UUID)
→收到Central的扫描请求后,回应扫描请求
→收到Central连接请求后,建立连接,
→响应Central发起的GATT服务发现请求,回应服务信息
→响应Central发起的GATT特性发现请求,回应特性句柄
→对Central的读写做以下响应
→回应特性值
→更新特性值。
4.Central端操作主要有以下步骤
启动一个Central端管理器
→搜索正在广告的Peripheral
→发起扫描请求
→收到扫描回应后,发起连接请求
→若GAP服务的UUID相匹配,则发起建立连接请求连接Peripheral
→GATT服务发现:发送主服务UUID,获取连接Peripheral设备的服务
→GATT特性发现:发送特性UUID,获取特性值句柄,
→通过获取的特性值句柄进行以下操作
→读取特性值
→订阅特性值
→写入特性值