Attribute
属性(Attribute)由以下三部分组成:

Handle:可以理解为属性表中的地址
UUID:16bit(需要购买)或128bit
Value:UUID不同,含义不同
UUID
可以将属性进行初级的分类:

0x1800 ~ 0x26FF: 服务识别码,用来识别具体是哪个服务。
0x2700 ~ 0x27FF: 度量单位,如:km/h, kg。
0x2800 ~ 0x28FF: 区分属性类型,首要/次要/包含/特性。
0x2900 ~ 0x29FF: 特性描述,如:CCCD/User Description。
0x2A00 ~ 0x2AFF: 区分特性类型,DeviceName/Version等。
Property
提供访问控制,每个属性都有一个许可,许可的分类:

使用许可:可读/可写/读写。
认证许可:需要认证/不需要认证。需要认证 时,客户端可以发起认证请求。
授权许可:由服务器决定,客户端无法改变,只能等待,并重新发起请求。
Characteristic
由多条属性(Attribute)可以组成一个特性(Characteristic),特性由以下三部分组成:

特性申明:如果一个属性是特性申明,其属性值由性质、句柄、UUID组成。申明了该特性的读写性质,句柄,UUID。
特性数值:必须查询该特性的服务规格书才知道其具体意义。
特性描述符(并不是必须的,可以没有):
特性扩展性质:可靠地写入数值的能力,以及写入“特性用户描述”的能力。
特性用户描述:用来描述该特性行为,如用一串字符串“温度特性”。
客户端特性配置:用来通知或指示客户端。
服务器特性配置:与客户端特性配置类似,但多一个广播位,用于广播该特性所属服务的相关数据。
特性表示格式:表明客户端按什么样的格式理解数据。
特性聚合格式:将不同的特性表示格式组合成一个新的格式,如经度,纬度组合成经纬度数据。
Service
由0条或多条特性可以组成服务(Service),也可以通过以下方法重用服务。

拓展(Extend)
比如,一台旧设备支持A服务,新的设备在A的基础上扩展了服务A,并定义了新的服务AB,新设备和旧设备通讯时会先去发现AB服务,若失败,则使用通用的服务A,这样保证旧设备的兼容性。
引用(Reference)
可以在新的服务中直接引用其他服务。可以理解为C语言中的指针,并没有在新的服务中重新实现或扩展,而是一个指针指向了引用的服务。
*结合(Combine)
一个服务引用另外两个服务,从而结合成新的服务。并具备了新的行为。
服务申明
服务申明的属性值指明该服务具体是什么服务,UUID是多少?
包含(Include)
次要服务必须逐个发现,所以每个服务可以有0个或多个包含属性。
包含服务的属性值包括服务句柄、组结束句柄、服务UUID。
实例
BLE_GATT.png
这是一张BLE的属性表,里面有4个Service。

红色背景的属性:
UUID:0x2800,表明这条属性是主服务的申明。
Value:表明了这条服务分组具体对应的是哪一个服务。其中0x1800为设备发现服务,0x1801为GATT服务,0x180A为设备服务。另外一条128bit的服务是自定义的数据服务。
黄色背景的属性:
UUID: 0x2803,表明这条属性是特性的申明。
Value:申明了特性的Handle和UUID信息。
其他白色
背景的属性:
UUID: 0x2902,表明这条是特性描述符中的客户端特性配置,0x0000关闭,0x0001打开通知,0x0002打开指示。
属性协议
决定了客户端如何获取和使用属性。
六种基本操作:

请求(Request)
响应(Response)
命令(Command)
sequenceDiagram
客户端->>服务器: 请求
服务器->>客户端: 响应
sequenceDiagram
客户端->>服务器: 命令
请求和命令的区别在于:请求需要响应,而命令不需要。

指示(Indicate)
确认(Confirm)
通知(Notification)
sequenceDiagram
客户端->>服务器: 指示
服务器->>客户端: 确认

sequenceDiagram
服务器->>客户端: 通知
通知和指示的区别在于:通知不需要确认,而指示需要。

交换MTU请求
属性协议默认的MTU长度为23字节,如果想要发送更大的数据包,就需要协商MTU长度。
GATT协议
如果只有ATT协议,用户使用起来还是比较麻烦,所以添加了GATT协议方便应用层使用,GATT协议定义了如何发现和使用服务的一些标准方法。有以下三种规程:

发现规程
发现服务:发现所有首要服务、按UUID发现首要服务、查找包含服务。
发现特性:发现所有特性、发现所有特性描述符。
客户端发起规程:读/写特性值、读/写特性描述符。
服务端发起规程:通知/指示。

作者:阿威Jon
链接:https://www.jianshu.com/p/d5e65cbb6b73
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

BLE协议--ATT、GATT相关推荐

  1. 【Bluetooth蓝牙开发】九、BLE协议之GATT

    个人主页:董哥聊技术 我是董哥,嵌入式领域新星创作者 创作理念:专注分享高质量嵌入式文章,让大家读有所得! [所有文章汇总] 文章目录 1.简介 角色的定义 2.GATT协议框架 2.1 Profil ...

  2. 蓝牙解析(part10):BLE ATT/GATT

    本部分是从各位前辈的学习经验中,总结过来的,希望对初学者有益. 从蓝牙Spec 4.0开始,推出了低功耗(BLE)规范,BLE的协议可分为Bluetooth Application和Bluetooth ...

  3. Bluetooth profile: ATT/GATT(襄坤在线)

    蓝牙4.0版本推出了低功耗规范,引入了两个核心协议:ATT(Attribute Protocol)和GATT(Generic Attribute Protocol).这两个协议主要目标是BLE,但是也 ...

  4. ESP32学习笔记十九之BLE协议GAPGATT

    GAP GAP全名是Generic Access Profile,通用访问配置文件,它定义了蓝牙设备的角色,中心和外设,并且控制他们的连接和广播数据.广播数据有两种方式:广播数据和扫描回复数据,数据包 ...

  5. 蓝牙4.0 BLE协议结构图详解

    随着智能硬件的发展,嵌入式和物联网这类专业越发受到大家的追捧,而不管是学习嵌入式还是学习物联网,蓝牙4.0 BLE协议结构都是必须重点掌握的知识点,今天和大家分享的就只这部分内容,一起来看看吧. 第一 ...

  6. 【Funpack】低功耗蓝牙 BLE 协议架构

    想要开发蓝牙应用,了解蓝牙协议架构是必不可少的.本文以低功耗蓝牙 BLE 为例,简要介绍 BLE 蓝牙协议架构,帮助开发者快速了解蓝牙协议概况. BLE 协议分层 BLE 协议栈主要由如下几部分组成: ...

  7. Hollong 蓝牙4.0/4.1/4.2 BLE协议监控分析仪

    典型应用: - 抓取BLE蓝牙传输数据,分析数据传输协议: - 协助开发调试BLE相关软件,固件: - 实时捕获.显示.解析.过滤和侦测协议错误,减少调试时间,加速产品进入市场: - 帮助学习BLE蓝 ...

  8. BLE协议--SMP(安全管理协议)

    目录 前言 1. Security Manager介绍 2. Pairing(配对) 2.1 配对第一阶段 2.1.1 配对方法 2.1.2 Authentication(鉴权方式) 2.1.3 IO ...

  9. 蓝牙 att gatt 协议

    1 简介 通过ATT层可以读写对端设备的属性,但是属性之间有什么联系.各个属性怎么组合起来提供服务,由上层GATT负责. 读写对端设备的属性,就是ATT的关键词. 2 uuid uuid 通用唯一识别 ...

最新文章

  1. OpenCvSharp 形态学操作(膨胀、腐蚀)
  2. [工具]-C语言实现:生成一个全是0x0的二进制文件
  3. Spring MVC集成Log4j
  4. Mysql 优化器内部JOIN算法hash join On-Disk Hash Join Grace Hash Join Hybrid hash join过程详解
  5. python分割字符串输出_python字符串分割
  6. Javascript实现KMP算法
  7. linux下sqlite3的应用
  8. vue标签旋转_vue.js编写移动端页面,检测旋转屏幕,横竖屏。
  9. Spark基础学习笔记05:搭建Spark Standalone模式的集群
  10. Python之网络编程(实现一个多用户同时在线的FTP用户管理程序)
  11. 网管囧事系列二:又要杀毒,又要防***,网管怎样三头六臂?
  12. 利息高的网络贷款可以不还吗?
  13. Kubernetes(k8s)底层网络原理刨析
  14. 面试百题066——颠倒栈
  15. java 人民币大写_Java实现人民币大写精讲
  16. xgp游戏列表_PC版XGP正式公布,畅玩上百款游戏每月只需10美元
  17. 每日一记—蓝牙模块应用(一)
  18. 华为 手机 能点开USB调试,退出重进再看还是关闭的
  19. java将Word转换成PDF
  20. win7文件共享服务器搭建,Win7下搭建web服务器实现数据共享的简单步骤

热门文章

  1. 基于ASP.NET小微企业人力资源管理系统
  2. 屏幕录制:4Easysoft Screen Recorder Mac中文版
  3. 用excel解蓝桥杯(2018年第九届蓝桥杯A组)
  4. 广工计算机学院李少娜,冯广-广东工业大学自动化学院
  5. HTML5期末大作业:动漫人物介绍网站设计——柯南(5页) 含报告 HTML+CSS+JavaScript dw网页设计 web网页设计与开发
  6. 取消打印机选择框实现
  7. 电脑剪切后丢失的文件怎么恢复
  8. vi,vim文本编辑器
  9. 配置数据源失败:未指定“url”属性,无法配置嵌入的数据源。
  10. 用hidusb.sys还是winusb.sys读写一个只有In/Out Interrupt Endpoints的STM32 USB设备?