第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:

第14节_BLE协议ATT层的更多相关文章
- 第15节_BLE协议GATT层
学习资料:官方手册 Vol 3: Core System Package [Host volume] Part G: Generic Attribute Profile (GATT) 这篇文章格式比较 ...
- 第16节_BLE协议GAP层
学习资料:官方手册 Vol 3: Core System Package [Host volume] Part C: Generic Access Profile 下面这个图是BLE协议各层跟医院的各 ...
- 第13节-BLE协议L2CAP层
学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Proto ...
- 第11节-BLE协议HCI层的硬件接口
本篇博客由韦东山视频整理所得 如何控制链路层让其发出广播包.数据包?通过HCI层向它发出命令,也可以通过ATT层.L2CAP层向LL层发出数据. 学习资料: 蓝牙协议core_v5.0.pdf < ...
- 第10节-BLE协议链路层(LL)
本篇博客的学些要结合书籍<低功耗蓝牙开发权威指南,Robin Heydon著>第7章,实际上这书只是对蓝牙原版协议的简化.摘要. 回顾以前学过的<BLE协议各层的形象化理解>和 ...
- 第03节-BLE协议各层数据格式概述
本篇博客根据韦大仙的视频,整理所得. 对于BLE系统,它分为上下两块.上面那一块,我们称为host主机.下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片. 对于host这一块,它运 ...
- 第02节-BLE协议各层的形象化理解
本篇博客根据韦大仙视频,整理所得. 先上框图: ATT层 从ATT开始看,在上篇博客讲的医院结构里面有个检验室,检验室可以得到各项结果,但是它并不知道这些结果代表什么含义.类比的在BLE协议栈里面,A ...
- 第12节-BLE协议HCI层的数据格式
学习资料: 1. 蓝牙协议core_v5.0.pdf <Vol 2: Core System Package [BR/EDR Controller volume]>的“Part E: Ho ...
- 第14讲 | HTTP协议:看个新闻原来这么麻烦
第14讲 | HTTP协议:看个新闻原来这么麻烦 http://www.163.com 是个 URL,叫作统一资源定位符. 之所以叫统一,是因为它是有格式的.HTTP 称为协议,www.163.com ...
随机推荐
- matlib调用python时转py格式为matlib格式
因为需要,我用matlib调用python代码. 调用成功但是遇到问题 如下 调用完的结果为python格式 (py.list,py.xx) matlib根本不能用 查了半天一个能解决的方法都没 ...
- 工具资源系列之给 windows 虚拟机装个 ubuntu
前面我们已经介绍了如何在 Windows 宿主机安装 VMware 虚拟机,这节我们将利用安装好的 VMware 软件安装 Ubuntu 系统. 前情回顾 虚拟机为我们在 Windows 宿主机体验别 ...
- Educational Codeforces Round 78 (Rated for Div. 2) 题解
Shuffle Hashing A and B Berry Jam Segment Tree Tests for problem D Cards Shuffle Hashing \[ Time Lim ...
- 用Python爬取猫眼上的top100评分电影
代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...
- 【shell脚本】检查内存使用情况===chenkMen.sh
检查内存使用情况,当内存可使用等于100时,释放缓存 [root@localhost thy]# cat checkMem.sh #!/bin/bash #防止内存溢出问题 used=`free -m ...
- TestNg之XMl形式实现多线程测试
为什么要使用多线程测试? 在实际测试中,为了节省测试时间,提高测试效率,在实际测试场景中经常会采用多线程的方式去执行,比如爬虫爬数据,多浏览器并行测试. 关于多线程并行测试 TestNG中实现多线程并 ...
- CDN的智能调度,链路优化的详细解答
您的用户在请求资源的过程中,可能受到网络.地域.带宽等影响,无法保证请求一定是按照最优访问路径进行传递,猫云 CDN 通过对全网链路进行实时监控,结合自研的 GSLB 调度体系和智能路由技术,从以下几 ...
- Ubuntu18.04下修改快捷键
Ubuntu下修改快捷键 Intelij Idea在Ubuntu下的快捷键几乎和windows差不多,最常用的一个快捷键与系统冲突: Ctrl + Alt + T idea是surround with ...
- 【Wannafly挑战赛29F】最后之作(Trie树,动态规划,斜率优化)
[Wannafly挑战赛29F]最后之作(Trie树,动态规划,斜率优化) 题面 牛客 题解 首先考虑怎么计算\([l,r]\)这个子串的不同的串的个数. 如果\(l=1\),我们构建\(Trie\) ...
- Spring源码系列 — BeanDefinition扩展点
前言 前文介绍了Spring Bean的生命周期,也算是XML IOC系列的完结.但是Spring的博大精深,还有很多盲点需要摸索.整合前面的系列文章,从Resource到BeanDefinition ...