白话BLE技术 第十一篇

服务器发起的更新

服务器发起的更新是唯一的不同步的包。这里的不同步是指不同于请求响应模型。这些更新就像警报一样,当特性的值发生改变,就会立刻发送给客户端

有2种服务器发起的更新

  • Charateristic Value Notificaiton

通知是指包含了特征值的句柄和当前值的包。客户端会收到这样的包,并且可以选择执行,但是不会给服务器端发回响应来确认是否收到。

  • Characteristic Value Indication

不同于通知,标记遵循了请求响应的格式。当服务器端发出标记的包的时候,要求客户端发回一个明确的确认包。

客户端需要使服务器发起的额更新的位设置为有效的事情下,才能发送这些更新包。

安全

之前的篇章中已经介绍过安全等级的内容,在GAP中,有安全管理器来负责安全的工作。GATT传输会引发一个认证的过程,在GATT服务器上每一个属性的每一个操作都有详细的权限规定。

一般来说,属性都有声明,对于服务和特征的声明,包含了相关的数据。客户端可以不经过匹配和绑定的过程,就可以知道一个服务器可以有哪些服务和特征。属性的布局和数据的层次结构不是敏感信息,对所有客户端都是开放的。

当访问一个特征值或者一个描述符的声明的时候,客户端会收到一个错误响应的ATT包,表示当前的安全等级不够高来传输这些信息。

有以下两种错误响应包

  • Insufficient Authentication

表示连接没有加密,而且服务器也没有LTK可以用来加密。

  • Insufficient Encryption

表示连接没有加密,但是又可以使用的LTK。

 

GAP的角色和GATT的角色没有关系,并且可以被混合。但是安全过程棕内饰GAP的中心设备来发起。根据那个设备是中心设备和周边设备,他可以是GATT的客户端或者是GATT的服务器来发起匹配,绑定或者加密的过程。这些过程是需要比较高的安全等级的。一旦安全等级达到要求,客户端就可以给服务器端发送请求包了。

GATT服务

就像在GAP中有自己的官方服务一样,GATT也有自己的官方服务必须要被包含到所有的GATT服务器上。可选项service changed特性不可以被读取和写入,并且他的值通过characteristic value indications给到客户端。

如上图所示,这个属性非常简单,只有影响的句柄范围一个内容。这个内容限定了在服务器上特定区域的属性。这个区域可以通过结构改变被影响,并且需要客户端进行再次发现。客户端必须执行服务和特性的发现程序,因为在这个区域重点属可能已经不再是合法的了。

一个客户端在做任何事情之前,必须要让对应的CCCD有效,这样的话,客户端才可以及时的意识到服务器端属性的结构变化。

 

如果服务器在属性的结构上有了变化,它会立即发送一个通知的包给到所有的客户端并且等待回应。这样,服务器端可以确保客户端能明白并且缓存属性句柄。

 

到这里为止,BLE的内核基本知识就结束了。

接下来要做的就是,在牢记这些概念和内容的基础上,不断的分析各种bug和日志文件,来加深对低功耗蓝牙的理解。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值