蓝牙开发系列一:流程简介
一、整体流程
蓝牙连接的整体流程如下:
二、扫描阶段
1、扫描设备
低功耗蓝牙设备通过广播信道发现其他设备,一个设备进行广播(外围设备)。而另一个设备(中心设备)进行扫描。中心设备可以主动连接外围设备。
广播包中包含以下字段:
1)设备名称
2)设备UUID
3)设备mac地址。由于苹果安全限制,苹果设备不能拿到设备的mac地址。可以将设 备的mac地址以广播的形式告诉苹果设备。
2、设备匹配
2.1、 区分不同的设备
1)按照名称。某一厂商可以将设备的名称定义为一定规律的名称来区分其 它厂家设备。例如ZYT0000001,ZYT0000002....
2) 按照UUID区分:每个设备定义不同的serviceUUID值。实现区分。
2.2、匹配设备
1)由于苹果安全限制,苹果设备不能拿到设备的mac(苹果给出虚拟的UUID值映射到Mac)。因此只能依靠厂商自定义数据部分进行设备的匹配。例如厂商定义数据写入唯一序列号、设备名称等方式。
2)若需要实现设备与账号绑定,APP需要保存厂商自定义数据(绑定时传输到后台服务器等方式),从而在更换手机登录时,利用该数据匹配到设备,进行连接和通讯
三、连接阶段
3.1 设备连接过程又分为:
1)蓝牙层连接(此时不可以进行设备的读写操作)
2)发现服务
3)发现服务特征值(只有发现设备的对应的服务特征值后,方可真正的进行设备间的 数据交互,此时设备真正意义上的连接成功)
4)订阅服务。发现服务后(服务包含读写通道),对需要的服务特征值实现订阅, 即启用蓝牙读响应。
四、配对流程(可选)
4.1、配对流程非必须流程,核心的安全要求时:由用户参与,能够体现出发起连接的设 备。(手机等),让用户确认授权。
鉴于蓝牙BLE4.0底层协议不支持静态PIN配对,采用应用层PIN认证的解决方案。手环与之认证PIN密码(这个PIN码不是位于SE中,而是位于蓝牙MCU中).当手机发起蓝牙连接配对请求时。手环设备侧接收配对请求,但手机侧发起PIN认证,手环备PIN认证通过则保持蓝牙连接,否则从手环设备侧断开蓝牙连接。(有屏幕设备可选择点击屏幕配对,屏幕则通过敲击实现认证)
五、指令收发
经过连接阶段后,即可进行蓝牙指令的收发,BLE要求每个数据包不超过20字节。因此
发送之前需要进行自行分包,逐个写入通道。