蓝牙

连接外设代码流程:

1.建立中心角色(CBcentralManager)

2.中心设备蓝牙状态更新(centralManagerDidupdateState)

3.扫描外设(discover)

4.连接外设 (connect)

5.扫描外设中的服务和特征

6.获取外设的services

7.获取外设的services

7.1获取外设的特征,获取外设的特征值,获取特征的Descriptor和Descriptor

7.2与外设数据交互

7.3订阅特征的通知

8.断开连接

在物理层的基础上,提供两个或多个设备之间、和物理无关的逻辑传输通道(也称作逻辑链路)。

在BR/EDR系统中,与对端的Link Manager通过LMP协议(Link Manager Protocol)进行通信;在BLE系统中则使用的是LL协议(Link Layer Protocol)。

专业词汇:

PROFILE:

负责管理逻辑层提供的逻辑链路。基于该协议,不同Application可共享同一个逻辑链路。类似TCP/IP中端口(port)的概念。

L2CAP是逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol)的缩写

理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。Profile是蓝牙协议的特有概念,为了实现不同平台下的不同设备的互联互通,蓝牙协议不止规定了核心规范(称作Bluetooth core),也为各种不同的应用场景,定义了各种Application规范,这些应用层规范称作蓝牙profile。

负责提供数据传输的物理通道(通常称为信道)。通常情况下,一个通信系统中存在几种不同类型的信道,如控制信道、数据信道、语音信道等等。

BLE中心模式流程

1.建立中心角色

2.扫描外设(Discover Peripheral)

3.连接外设(Connect Peripheral)

4.扫描外设中的服务和特征(Discover Services And Characteristics)

4.1 获取外设的services

4.2 获取外设的Characteristics,获取characteristics的值,,获取Characteristics的Descriptor和Descriptor的值

5.利用特征与外设做数据交互(Explore And Interact)

6.订阅Characteristic的通知

7.断开连接(Disconnect)

peripheral模式的流程

1.引入CoreBluetooth框架,初始化peripheralManager

2.设置peripheralManager中的内容

3.开启广播advertising

4.对central的操作进行响应

4.1 读characteristics请求

4.2 写characteristics请求

4.4 订阅和取消订阅characteristics

逻辑链路层:

定义包的结构和传输信道,完成设备的发现、连接流程,以及数据的收发流程。

链路层的有5个工作状态:等待状态、广播状态、扫描状态、初始化状态和连接状态。

从等待状态可以进入广播状态、初始化状态或扫描状态。

广播状态下的链路层会用广播信道进行包的广播并监听其他设备对包的响应。

扫描状态下的链路层会监听广播信道,从广播信道中接收广播的包。

初始化状态下的链路层会监听指定设备在广播信道中发送的包,用来初始化和该设备的连接。

从广播状态或者初始化状态可以进入连接状态。

连接状态的的进入,一个连接请求包是个标志。

对于初始化状态下的链路层,当发送连接请求包后就进入连接状态。

对于广播状态下的链路层,当接收到连接请求包就进入连接状态。

从广播状态进入连接状态的设备作为从设备,从初始化状态进入连接状态的设备作为主设备。

主设备和从设备进行通信时,由主设备把握通信时机。

一个从设备同一时间只和一个主设备进行通信。

在连接状态下的链路层只会使用数据信道进行包的传输。

每一个连接事件都需要确定一个信道编号,该编号的信道用于传输这个连接事件中发生的所有包。

每个连接事件至少包含一个来自主设备的包。

在一个连接事件当中,主从设备交替收发数据包。

当数据包进行传输时,连接事件被视为开启。

从设备每接收到一个来自主设备的包后都需要回复一个包。 

连接请求包中包括几个重要参数:connInterval、connSupervisionTimeOut、connSlaveLatency、whiteList。

connInterval参数是整数,表示连接事件的发生间隔,由于连接事件的发生间隔要求是1.25ms的倍数,因此实际表示的时间间隔为connInterval*1.25ms。

由于事件发生的间隔允许值为7.5ms到4.0s,因此connInterval参数的取值范围是5-80。

间隔越小,数据收发的机会越多;间隔越大,越省电。

connSupervisionTimeOut表示接收两个包的时间间隔的最大允许值,超过这个时间就认为数据丢失,传输中断。

connSlaveLatency表示当从设备监听的主设备连续发生连接事件时,从设备可忽略的事件数。

在没有数据传输的情况下,忽略连接事件可以节约电能。

有效范围是0到(connSupervisionTimeout/connInterval)-1,也就说可忽略的连接事件数要小于 超时时间内可以发生的连接事件数。

whiteList顾名思义白名单,链路层用来进行设备过滤。

主机对白名单进行设置,链路层对于被过滤调的设备进行的广播、扫描或者初始化都不会引起主机唤醒,可以节省电源。

后台运行任务要遵循的原则:

1.应用应该是基于会话的,并提供接口让用户决定 什么时候开始或停止蓝牙事件

2.应用被唤醒后,大约10秒钟的时间来完成任务,所以应该尽快完成任务并重新挂起。

2.app不应该使用被唤醒的机会来执行无关的事。

后台长时间执行:

1.关于服务与特征值的简述:

蓝牙的连接后如何传数据,

的缩写,中文是通用属性,是低功耗蓝牙设备之间进行通信的协议 generic Attributes

GATT Profile :

1.BLE建立在GATT协议之上,GATT 在蓝牙连接之上的收发短数据段(属性Attribute)的通用规范

GAP:

GAP全名是Generic Access Profile,通用访问配置文件,它定义了蓝牙设备的角色,中心和外设,并且控制他们的连接和广播数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容