zoukankan      html  css  js  c++  java
  • 第14节_BLE协议ATT层

    下面这个图是BLE协议各层跟医院的各个科室的类比图:

     

    跟医院类比,ATT层就是化验室,通过它可以得到各种检查结果──属性。这些检查结果之间有什么联系,它们组合起来体现了什么,化验室是不知道的,这些得由上层来负责。

    通过ATT层可以读写对端设备的属性,但是属性之间有什么联系、各个属性怎么组合起来提供服务,由上层GATT负责。

    读写对端设备的属性,就是ATT的关键词。

    一、属性(Attribute)

    属性结构如下:

     

    属性就是一个值,

    有那么多属性,这是哪一个属性?用Handle来表示;

    这个属性是什么类型?是心跳、还是电量?用UUID来表示。

     UUID可以用16位、32位、128位来表示(在BLE中只使用16位或128位),有一个转换公式:

    即把32位UUID的低96位去掉,就得到32位的UUID;如果32位UUID的高16位全是0,那么它的低16位就是“16位的UUID”:

    UUID可以取蓝牙组织规定的值,也可以自己定义。这些规定的值可参考以下链接:

    https://www.jianshu.com/p/08f76e4fd811  // 整理了所有的UUID,存为GATT_UUID.pdf

    https://www.bluetooth.com/specifications/assigned-numbers/

    https://www.bluetooth.com/specifications/assigned-numbers/service-discovery/

    https://www.bluetooth.com/specifications/gatt/declarations/

    二、属性的读写

    ATT层负责去获得对端设备的属性,去读写对端设备的属性,如何读取对端设备的属性呢?有下面6中操作

     

     ATT层涉及两个角色:client、server。server这边提供属性,client可以从server这边读写属性

    三、ATT层的数据格式

    ATT层构造好数据后,由下层的L2CAP发给对端设备。L2CAP层是收发室,它怎么知道这些数据是发给对端设备的ATT层?

    对于ATT层的数据,L2CAP层会设置chinnel ID为4:

     

  • 相关阅读:
    jquery height
    正则表达式的一点奇怪
    this和call
    ajax views
    史上变态的模块
    在php中有什么用
    localhost访问不了
    $.extend abc
    $.extend
    和人沟通的一个要点
  • 原文地址:https://www.cnblogs.com/-glb/p/11617689.html
Copyright © 2011-2022 走看看