下面这个图是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层的更多相关文章

  1. 第15节_BLE协议GATT层

    学习资料:官方手册 Vol 3: Core System Package [Host volume] Part G: Generic Attribute Profile (GATT) 这篇文章格式比较 ...

  2. 第16节_BLE协议GAP层

    学习资料:官方手册 Vol 3: Core System Package [Host volume] Part C: Generic Access Profile 下面这个图是BLE协议各层跟医院的各 ...

  3. 第13节-BLE协议L2CAP层

    学习资料:官方手册 Vol 3: Core System Package [Host volume] Part A: Logical Link Control and Adaptation Proto ...

  4. 第11节-BLE协议HCI层的硬件接口

    本篇博客由韦东山视频整理所得 如何控制链路层让其发出广播包.数据包?通过HCI层向它发出命令,也可以通过ATT层.L2CAP层向LL层发出数据. 学习资料: 蓝牙协议core_v5.0.pdf < ...

  5. 第10节-BLE协议链路层(LL)

    本篇博客的学些要结合书籍<低功耗蓝牙开发权威指南,Robin Heydon著>第7章,实际上这书只是对蓝牙原版协议的简化.摘要. 回顾以前学过的<BLE协议各层的形象化理解>和 ...

  6. 第03节-BLE协议各层数据格式概述

    本篇博客根据韦大仙的视频,整理所得. 对于BLE系统,它分为上下两块.上面那一块,我们称为host主机.下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片. 对于host这一块,它运 ...

  7. 第02节-BLE协议各层的形象化理解

    本篇博客根据韦大仙视频,整理所得. 先上框图: ATT层 从ATT开始看,在上篇博客讲的医院结构里面有个检验室,检验室可以得到各项结果,但是它并不知道这些结果代表什么含义.类比的在BLE协议栈里面,A ...

  8. 第12节-BLE协议HCI层的数据格式

    学习资料: 1. 蓝牙协议core_v5.0.pdf <Vol 2: Core System Package [BR/EDR Controller volume]>的“Part E: Ho ...

  9. 第14讲 | HTTP协议:看个新闻原来这么麻烦

    第14讲 | HTTP协议:看个新闻原来这么麻烦 http://www.163.com 是个 URL,叫作统一资源定位符. 之所以叫统一,是因为它是有格式的.HTTP 称为协议,www.163.com ...

随机推荐

  1. ShiroUtil 对密码进行加密

    ShiroUtil 对密码进行加密 package com.mozq.sb.shiro02.config; import org.apache.shiro.authc.SimpleAuthentica ...

  2. MySQL学习笔记5——编码

    MySQL学习笔记5之编码 编码 1.查看MySQL数据库编码 *SHOW VARIABLES LIK 'char%'; 2.编码解释 *character_set_client:MySQL使用该编码 ...

  3. 第九周周五计划&&周四总结

    今天主要将提取地主题词入库以及重新对新闻分类. 测试了一下单纯使用主题词作为主题追踪依据不是很好,明天尝试使用特征值提取(主题词(名词实体))+摘要比对综合.但是目前还没想好是每篇新闻的都要追踪还是热 ...

  4. 10.python3实用编程技巧进阶(五)

    5.1.如何派生内置不可变类型并修其改实例化行为 修改实例化行为 # 5.1.如何派生内置不可变类型并修其改实例化行为 #继承内置tuple, 并实现__new__,在其中修改实例化行为 class ...

  5. 02Shell变量

    Shell变量 什么是 shell 变量 shell变量就是 用一个固定的字符串去表示不固定的内容 变量的类型 自定义变量 定义变量 变量名=变量值 (显式赋值) 变量名必须以字母或下划线开头,区分大 ...

  6. 【Linux命令】at、crontab定时任务

    crontab定时任务(周期性) 一.简介 通过crontab命令可以在固定的间隔执行系统指令或shell脚本 二.crontab配置文件: Linux下的任务调度分为两类:系统任务调度和用户任务调度 ...

  7. DDR基础知识

    1.前言 DDR的全称为Double Data Rate SDRAM,也就是双倍速率的SDRAM,SDRAM在一个CLK周期传输一次数据,而DDR在一个CLK周期传输两次数据,分别在上升沿和下降沿各传 ...

  8. python I/O多路复用 使用http完成http请求

    1. 使用类实现比较方便我们使用里面的参数 2. 我们使用selector,不适用select from selectors import DefaultSelector 3. I/O多路复用是指使用 ...

  9. [新概念英语] Lesson 12 : GOODBYE AND GOOD LUCK

    Lesson 12 : GOODBYE AND GOOD LUCK New words and expressions : luck (n) 运气 例句 You're not having much ...

  10. Spring源码系列 — Envoriment组件

    何为Envoriment Envoriment是集成在Spring上下文容器中的核心组件,在Spring源码中由Envoriment接口抽象. 在Environment中,有两大主要概念: Profi ...