做网站有哪些费用,百度一下你就知道官网网页版,苏州市城市建设局网站,海外推广有哪些渠道蓝牙LE栈 物理层
频带
蓝牙LE在2400MHz到2483.5MHz范围内的2.4GHz免授权频段工作#xff0c;该频段分为40个信道#xff0c;每个信道间隔为2MHz。
时分
蓝牙LE是半双工的#xff0c;可以发送和接收#xff0c;但不能同时发送和接收#xff0c;然而#xff0c;所有的设…蓝牙LE栈 物理层
频带
蓝牙LE在2400MHz到2483.5MHz范围内的2.4GHz免授权频段工作该频段分为40个信道每个信道间隔为2MHz。
时分
蓝牙LE是半双工的可以发送和接收但不能同时发送和接收然而所有的设备都是在时分复用TDD方案中使用因此像是全双工
链路层
链路层概述
它定义了空中传输的几种类型的数据包和一个相关的空中接口协议它使用一个状态机来运行根据状态的不同链路层可能以许多完全不同的方式运作由许多类型的事件驱动。定义了许多影响链路状态或者链路使用参数的控制程序。也定义了无线信道的选择和分类。 链路层既支持有连接和无连接通信也支持确定性和稍微随机的事件时机它支持点对点通信也支持一对多通信
状态机 状态描述standby设备既不发送也不接收数据包Initiating响应来自特定设备的广播数据包以请求连接Advertising发送广播数据包并可能发送用于响应其他设备的广播数据包的数据包Connection与另一个设备建立了连接Scanning监听来自其他设备的广播数据包Isochronous Broadcast广播同步数据包Synchronization监听由特定设备发送的属于特定广播序列的周期性广播
在连接状态下定义了两个重要的设备角色Central和Peripheral启动连接并从Initiating状态转换到Connection状态的设备承担Central角色接收连接请求从Advertising状态转换到Connection状态的设备承担Peripheral角色
逻辑传输
LE ACL——LE异步面向连接的逻辑传输
基础知识
当两个蓝牙LE设备连接时它们使用面向异步连接的逻辑传输LE-ACL或简称ACLLE-ACL是最常用的蓝牙LE逻辑传输类型之一提供面向连接的数据通信。
主机控制器接口
基础知识
主机控制器接口是根据命令和事件定义的。这些本质上是可以在主机和控制器之间交换的消息。命令由主机发送给控制器事件由控制器发送给主机。事件可以是对命令的响应也可以是不请自来的消息。
逻辑链路控制与适配协议L2CAP
基础知识
L2CAP使用通道的概念来分离在栈层之间传递的数据包序列。固定通道不需要设置是立即可用的并与特定的更高层协议相关联。信道也可以通过指定的协议服务多路复用器PSM值动态创建并与协议相关联。
L2CAP和协议复用
在协议栈中位于L2CAP之上的层使用不用的协议如属性协议ATT和安全管理协议SMP。 当L2CAP信道处理属性协议时它要么使用为ATT保留的固定信道在这种情况下被称为充当未增强的ATT承载者要么使用一系列一个或者多个动态信道每个信道都充当增强的ATT承载者。未增强的ATT承载者支持按顺序执行ATT事务每次执行一个。增强型ATT承载支持并行ATT事务这些事务在并行L2CAP通道中按顺序执行。
L2CAP和流量控制
基于信用的流程控制是众多可能的流程控制方法之一它的大体工作原理如下
发送设备知道接收设备的容量根据它可以处理的PDU数量而不会丢失数据。它通过配置或在数据传输开始前通过两个设备之间的交换来获取该容量信息发送设备设置一个计数器初始值为接收器的容量限制。每次发送一个PDU计数器就递减。当计数器值到达0时发送方就暂停发送PDU接收端从其缓冲区读取并处理一个或多个PDU之后将相应数量的值发送回发送设备发送端使用其来增加其计数器当计数器处于非0值时发送器可以继续发送更多的PDU
L2CAP定义了几种操作模式主要与流量控制有关
L2CAP分段和重组
L2CAP以上和以下的层都受到MTU大小的限制它规定了该层创建的PDU类型允许的最大大小。例如ATT_MTU参数定义了ATT PDU的最大大小 L2CAP本身和它上面或下面的层在堆栈中可能有不同的MTU大小。因此有必要将一些PDU/SDU分成一系列相邻层可以处理的较小部分或者相反将一系列相关的较小的部分重组成完整的PDU/SDU。L2CAP应用于上层的这些过程称为分割segmentation和重组reassembly而与L2CAP以及下层的等效过程称为分裂fragmentation和复合recombination
属性协议
基础知识
属性协议ATT由两个设备使用一个是客户端一个是服务器。服务器公开一系列称为属性的复合数据项。属性由服务器组织在一个称为属性表的索引列表中。 每个属性包含一个句柄一个通用唯一标识符UUID一个值和一组权限
通用属性配置文件GATT)定义了属性如何表示称为服务特征和描述符的高级构造。通常连续句柄值范围内的一组属性需要表示诸如此类的更复杂的类型因此属性协议支持处理由句柄值范围表示的属性组。
ATT客户端使用ATT来发现ATT服务器中属性表的详细信息包括感兴趣的属性或属性类型的句柄值。当句柄值已知时他们可以与某些PDU类型一起使用以识别表中的特定属性然后对其进行操作。例如ATT_READ_BY_GROUP_TYPE_REQ PDU可用于查找属性表定义的所有GATT主服务 。
ATT PDU
属性协议定义了31个不同的PDU每个PDU都基于六种方法中的一种
命令
客户端到服务器 命令 请求和响应
服务器到客户端 通知 指示和确认
PDU格式
所有ATT PDU具有相同的结构由标识PDU类型的操作码一组参数和可选的认证签名组成。签名字段很少使用并且当属性协议在加密链路上运行时是冗余的因为链路层的所有加密数据包都包含认证数据。
事务
客户端到服务器一组请求和响应被视为一个事务服务器到客户端一组指示和确认被视为一个事务事务的超时时间是30秒。ATT是顺序事务模型一个事务已经开始之后在它完成之前同一个承载实例不能再处理其他ATT PDU。
承载
L2CAP对于ATT有两种承载未增强ATT承载和增强ATT承载
未增强ATT承载
使用固定的L2CAP通道因此可能只有一个承载实例事务是严格顺序的不管应用层有多少客户端在使用ATT这意味着一个应用程序发起的事务可能会延迟另一个应用程序希望发起的事务客户端收到任何犹豫缓冲区溢出等问题而无法处理的通知将被丢弃。ATT MTU可以通过ATT_EXCHANGE_MTU_REQ与ATT_EXCHANGE_MTU_RSP配置当使用非增强ATT承载时可选支持某些PDU类型如ATT_MULTIPLE_HANDLE_VALUE_NTF, ATT_READ_MULTIPLE_VARIABLE_REQ 和 ATT_READ_MULTIPLE_VARIABLE_RSP。支持非增强ATT承载的L2CAP信道可以是未加密的也可以是加密的。
增强ATT承载
使用动态L2CAP通道支持多通道因此允许多个承载实例事务还是按顺序处理的但是是基于每个承载实例的因此从应用层来看并行事务是可能的ATT MTU设置为L2CAP层自动使用的MTU值并且ATT_EXCHANGE_MTU_REQ与ATT_EXCHANGE_MTU_RSP是不允许通过增强ATT承载的增强ATT承载包含L2CAP的流量控制方法——增强型基于信用的流量控制模式因此不会丢失任何PDU使用增强ATT承载时必须支持某些PDU如ATT_MULTIPLE_HANDLE_VALUE_NTF, ATT_READ_MULTIPLE_VARIABLE_REQ 和 ATT_READ_MULTIPLE_VARIABLE_RSP。支持非增强ATT承载的L2CAP信道必须是加密的。
发现EATT支持
GATT允许客户端确定连接的服务器是否支持EATT也允许客户端通知服务器它是否支持EATT
通用属性概要GATT
基础知识
GATT基于属性表中的属性定义了更高级的数据类型这些数据类型被称为服务特征和描述符。它还定义了一系列通过ATT使用这些数据类型的过程应用程序通常使用映射到这些过程的平台API
服务是一种分组机制它提供了一个上下文在这个上下文中可以使用它们包含的特征。服务通常对应于设备的主要特性或者能力
特征是状态数据的单个项目具有类型关联值和一组属性这些属性表明数据如果在相关的GATT程序集中使用。例如可以定义一个连接的对等设备可以读取某个特定特征的值但不能写入它
特征属于一个服务相同的特征类型可以是多个服务的成员并且根据这些服务提供的不同上下文使用特征的规则可能会有所不同
描述符属于某些特征可以包含元数据如特征的文本描述或者可能提供控制特征行为的一些方法。特征有0或多个附加的描述符。 所有GATT服务器都必须提供两项特殊服务通用访问服务和通用属性服务
蓝 牙 SIG vs自 定 义
一些服务特征和描述符是SIG定义的并具有表示其类型的16位UUID 自定义服务特征和描述符可以由实现者分配128位UUID标志。16位UUID具有等价的128位值格式为0000XXXX-0000-1000-8000-00805F9B34FB 其中XXXX是 16位 UUID值 。 实 现 者 不 能 在 这 个 范 围 内 使 用 UUID 除 非 从 蓝 牙 SIG购 买了UUID。
通用访问配置文件GAP
基础知识
蓝牙核心规范的通用访问配置文件GAP部分定义了与设备发现和在两个设备之间建立连接有关的过程。如何执行数据的无连接通信如何使用周期性广播以及如何设置同步通信也是GAP包含的主题
广播包的传输和通过扫描的接收是GAP工作的核心有许多不同的广告和扫描包类型这些是由链路层定义的。载荷字段称为AdvData并不是在所有PDU类型中都存在该字段。当它存在时它所包含的数据被编码为一系列一个或多个长度/标签/值结构称为AD类型。AD类型在核心规范补充CSS文档中定义
GAP与BLE和BR/EDR都有相关性。另外虽然广告和扫描等活动与GAP具有核心相关性但这些过程实际上是由链路层执行的所涉及的PDU类型也是如此。
角色
GAP定义了4个设备角色
角色描述Broadcaster一种使用某种形式的广播以无连接的方式传输数据的设备广播设备有一个发射机但接收机是可选的单纯的广播设备不接受来自中央设备的连接Observer观察设备接收广播数据包它不连接到其他设备包含一个接收机发射机是可选的它能以无连接的方式接收广播数据包Peripheral外设可以与中心设备连接它包含发射机和接收机Central中央设备能主动与外围设备建立连接它包含一个发射机和接收机
注意链路层也会使用角色名称Central和Peripheral这两种不同语境中的术语含义有些差别
发现
Broadcaster或者Peripheral要么处于不可发现模式要么处于GAP定义的两种可发现模式之一。当以不可发现模式广播时广播的数据包在空中是可见的但是执行一般可发现过程或者有限可发现过程的扫描设备将忽略这些数据包。
可发现模式包括一般可发现模式与有限可发现模式。在一般可发现模式下设备的可发现时间是无限的而在有限可发现模式下最多只能发现3分钟
发现设备能通过检查广播包中的AdvData字段中称为Flags的AD类型来识别广播设备所处的可发现模式。有限发现模式通常用于优先考虑用户最近接触过的设备。
当一个Observer或者Central试图发现其他设备时它可能会使用被动扫描或者主动扫描。被动扫描是指接收广播PDU而不发送任何扫描PDU。主动扫描包括接收广播PDU并通过发送扫描PDU请求更多信息。各种PDU类型由链路层定义
连接模式
广播设备可以通过所使用的PDU遗留广播或者AdvMode字段的值扩展广播来指示自己是否可以被连接
定向与非定向
定向的广播PDU只有特定设备应该处理此PDUPDU中有TargetA字段包含预期接收设备的蓝牙地址。 非定向的广播PDU适用于接收它们的任何Observer或者Central不包含TargetA字段
可扫描与不可扫描
某些广播PDU类型被称为可扫描的这意味着允许接收到这样的PDU的设备以适当类型的扫描请求PDU响应以请求更多的广播数据。广播PDU由链路层定义
安全管理器协议SMP
基础知识
安全管理器协议SMP是协议栈安全管理器组件的一部分。它支持执行与安全相关的程序如配对、绑定和密钥分发。 安全管理器组件为其他层可以使用的安全功能提供了一个加密工具箱并定义了配对算法