下面这个图是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:

最新文章

  1. iOS相册中图片按照时间排序
  2. 解析json实例
  3. 支持DISTINCT的通用分页存储过程(SQL2005)
  4. MySQL innotop实时监测工具
  5. tomcat 设置session 时间
  6. hdu 4614 Vases and Flowers (二分 线段树)
  7. hdu 3790 (最短路径问题dijkstra)
  8. Guacamole 介绍
  9. LInux基础命令分类
  10. 使用simhash库来进行网页去重
  11. Python Tornado初学笔记之表单与模板(一)
  12. Everything at Once
  13. 在PHP中使用CURL,“撩”服务器只需几行
  14. JavaEE 之 文件上传
  15. 深拷贝 浅拷贝 python
  16. Java多线程系列4 线程交互(wait和notify方法)
  17. 用python读写excel的强大工具:openpyxl
  18. Atcoder Grand-014 Writeup
  19. jquery自动获取项目url路径
  20. USBDM BDM Interface for Freescale Microcontroller -- Hardware

热门文章

  1. 第一周-调用weka算法进行数据挖掘
  2. 2019 SDN上机第六次作业
  3. 在线程内关闭thread handle,导致server crash
  4. [LOJ 2134][UOJ 132][BZOJ 4200][NOI 2015]小园丁与老司机
  5. Chrome保存整个网页为图片
  6. ubuntu 16.04 上编译和安装C++机器学习工具包mlpack并编写mlpack-config.cmake | tutorial to compile and install mplack on ubuntu 16.04
  7. Mysql相关问题-----1045 Access denied for user 'root'@'localhost' (using password: YES)报错
  8. net core中引用GDAL
  9. C#通过PInvoke调用c++函数的备忘录
  10. List的Clear方法与RemoveAll方法用法小结