博客
关于我
蓝牙BLE: ATT协议层中属性(Attribute)
阅读量:96 次
发布时间:2019-02-26

本文共 1922 字,大约阅读时间需要 6 分钟。

属性协议(ATT)简介

属性协议(ATT,Attribute Protocol)是蓝牙低能耗(BLE)协议栈中最底层的协议,负责管理设备间的通信。它定义了属性的存储方式、访问权限以及数据传输规则,是GATT(属性协议栈)和GAP(关联协议)运行的基础。

属性的核心概念

在ATT层中,**属性(Attribute)**是核心概念,它定义了设备间通信的数据结构。属性包括以下四个关键部分:

  • 属性句柄(Attribute Handle)

    作为属性操作的入口,属性句柄是一个2字节的十六进制代码,范围在0x0001到0xFFFF之间。它类似于内存中的指针,允许客户端(client)通过句柄来访问特定属性。

  • 属性类型(Attribute Type)

    属性类型由UUID(通用唯一识别码)决定,用于区分属性的种类。例如,UUID 0x1800表示首要服务项(Primary Service),而0x2A00则表示设备名称(Device Name)。
    BLE协议中定义了有限的属性类型,具体包括:

    • 0x1800 – 0x26FF:服务项(Service)
    • 0x2700 – 0x27FF:单位(Characteristic)
    • 0x2800 – 0x28FF:属性类型(Attribute)
    • 0x2900 – 0x29FF:描述符类型(Descriptor)
    • 0x2A00 – 0x7FFF:特征值类型(Characteristic)
  • 属性值(Attribute Value)

    用于存储实际数据。对于服务项或特征值声明,属性值是其对应的UUID;对于普通特征值,属性值则是用户的实际数据。

  • 属性权限(Attribute Permissions)

    定义了属性的访问规则,包括:

    • 只读、只写、读写(Access Permission)
    • 加密(Encryption Permission)
    • 需要认证(Authentication Permission)
    • 需要授权(Authorization Permission)
  • 属性的分类与层级

    属性可以分为三种类型:服务项(Service)特征值(Characteristic)描述符(Descriptor)。它们之间存在树状关系:

    • 一个服务项下包含多个特征值。
    • 特征值下包含多个描述符。
    • 服务项集合构成属性规范(Attribute Profile)。

    常见属性规范

    例如,体重计和心率计的属性规范由SIG(蓝牙技术联盟)定义。设备主从只需遵循特定的Profile即可实现通信。

    属性数据库(GattDB)

    BLE协议栈中使用GattDB(属性数据库)来存储属性信息。GattDB是内存中的一个专用区域,启动时会被写入Flash存储器并加载。例如,CyBle_gattDB数组存储了设备的所有属性信息,包括句柄、属性类型、访问权限等。

    特征值的声明与使用

    特征值的声明和实际特征值项分开管理。例如,设备名称的特征值声明(Characteristic Declaration)和特征值项(Characteristic Value)分别存储不同的信息。这种设计允许开发者在声明阶段指定特征值的类型和 UUID。

    描述符的作用

    描述符用于扩展特征值的功能,提供额外的配置信息。例如,CCCD(Client Characteristic Configuration Descriptor)用于控制特征值的通知或指示功能。

    ATT PDU(属性协议数据单元)

    在ATT层协议中,设备之间的通信通过六种不同的PDU(Protocol Data Unit)进行。这些PDU类型包括:

    PDU类型 发送方向 响应 描述
    Command Client → Server 用于发送命令,服务器无需响应
    Request Client → Server Response 客户端请求服务器操作,服务器需返回响应
    Response Server → Client 服务器确认接收了客户端的请求
    Notification Server → Client 服务器主动向客户端发送通知
    Indication Server → Client Confirmation 客户端需确认接收
    Confirmation Client → Server 客户端确认接收了服务器的指示

    属性协议的实际应用

    在实际开发中,ATT层的理解是开发BLE应用的基础。由于其与开发者接近且易于理解,但内容较为抽象,因此需要通过实例和实际协议分析来加深理解。

    通过以上内容可以看出,属性协议(ATT)是BLE通信的核心,理解其结构和规则是开发BLE应用的关键。

    转载地址:http://phxk.baihongyu.com/

    你可能感兴趣的文章
    Nginx配置TCP代理指南
    查看>>
    Nginx配置——不记录指定文件类型日志
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    Nginx配置参数中文说明
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    NHibernate学习[1]
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>