GATT基本构成

最上层协议为profile,profile 中由多个 Server 组成,而 Server 由0 或多个《Include》和至少一个《Characteristic》 组成。
服务是指一系列由数据和相关行为组成的集合,为了去完成某个特定的功能或者特性。而一个服务可以包含引用服务即《Include》、强制性和可选的特征即《Characteristic》。服务是一种或多种特性的组合;特性则是由一种或多种属性组成。
下图为summary of GATT Profile Attribute types:

上图中可以看到有主要服务和次要服务,次要服务只能被首要服务引用,也就是只能被首要服务用《Include》进行包含来引用。次要服务不会被对端设备发现。

1、server 服务的声明格式:

server的格式更名如下:

2、Include 包含服务

同样当一个服务需要用到别的服务里面的某些值的时候,也可以通过«Include»来完成。
然而, «Include»一定是在服务声明之后才能使用的,那么服务声明有两种方式,首要服务可以引用另一个首要服务。首要服务也可以引用一个次要服务,从而使用次要服务公开行为。次要服务可以引用一个次要服务或者首要服务。不过次要服务引用次要服务情况很少,次要引用首要服务就更少了。

«Include»的声明格式:

从图中可以知道包含服务«Include»本身的 UUID=0x2802。它的属性值共有 3 个部分组成:需要包含的服务的句柄、组结束的句柄和需要包含的服务的 UUID。

上面有提到包含服务«Include»中包含有组结束的句柄,那么什么是组呢? 怎么定义的?

在 GATT Profile 中将属性类型分为 3 组:«首要服务»«Primary Service»,«次要服务» «Secondary Service»和«特性»«Characteristic»。 一个组开始于一个声明, 服务分组结束于下一个服务声明,特性分组结束于下一个特性的声明或者是下一个服务的声明。也就是服务声明对服务进行分组,特性声明对特性进行分组。

3、特性 Characteristic

应用时用的是属性的值,而应用中使用的属性值是特性分组中的,所以特性说明白真的很难。特性包含 3 个基本的要素:

  1. 特性声明
  2. 属性的值的声明
  3. 特性描述符

截取书中的例子

特性声明:特性声明本身的 UUID 值是 0x2803,特性声明中需要声明的特性是在属性值中的,属性值包含有 3 个字段:特性性质、属性句柄和属性类型, 且仅为只读。

如下图为特性声明格式:

特性声明中的属性值的 3 个字段中特性性质占 1 个字节,属性句柄占 2 个字节,属性类型要么是 2 字节 16bits 的 UUID 或者是 16 字节 128bits 的 UUID。

BLE--GATT服务构成相关推荐

  1. ESP32学习笔记(30)——BLE GATT服务端自定义服务和特征

    一.简介 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...

  2. ESP32学习笔记(31)——BLE带有属性表的GATT服务

    一.简介 1.1 通用属性协议(GATT) GATT是用Attribute Protocal(属性协议)定义的一个service(服务)框架.这个框架定义了Services以及它们的Character ...

  3. Android BLE低功耗蓝牙开发(下) BLE客户端(中央设备)与GATT服务的通讯

    之前的文章简单实现了使用传统蓝牙进行通讯的DEMO,说是最简单其实只是夸张的写法~毕竟标题党横行,我们也得学学点~至少没有UC震惊部那么夸张. 然后,本来是要写Android开发之BlueTooth- ...

  4. 低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端

    低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端 Android对外模模式(peripheral)的支持 从Android5.0开始才支持 关键术语和概念 以下是关键BLE术语和 ...

  5. 蓝牙BLE GATT完全分析和运用

    很多人都做过蓝牙开发,很多人也能够通过仿照GATT例程的方式添加一个属性服务,但是很多人都未必能够清晰地理解BLE的属性profile,也很容易被属性Attribute和特性characteristi ...

  6. 【蓝牙】如何新建一个BLE GATT SERVICE

    nRF52840 搭建GATT Service传送门 本文基于高通平台QCC5121 1.BLE GATT SERVICE 结构 GATT的服务(service)是为了实现设备的某些功能或特征,是一系 ...

  7. CC2640R2F BLE5.0 蓝牙协议栈GAP GATT 服务(GGS)

    GAP GATT 服务(GGS) 在前面GATT服务和简介中说过,GGS服务包含设备和访问信息,例如设备名称,Appearance,外围首选连接参数.GGS的目的是在设备发现和连接启动过程中进行辅助. ...

  8. (七)深入理解蓝牙BLE之“蓝牙GATT服务”

    目录 前言: 学习总结: uuid的定义: GATT Declarations: GATT Service: GATT Characteristic and Object Type:

  9. ble - GATT 协议详解

    目录 GATT  OverView service 定义 include 定义 characteristic 定义 HCI log 分析: GATT discover service flow GAT ...

  10. BLE GATT 介绍

    GATT(Generic Attribute Profile),描述了一种使用ATT的服务框架 该框架定义了服务(Server)和服务属性(characteristic)的过程(Procedure)及 ...

最新文章

  1. 我的第一个Flex Project
  2. Flash Builder4.7极其简单破解方法-三步搞定(亲测)
  3. @override报错_C++ 多态性:C++11:override 与 final(学习笔记:第8章 09)
  4. java split空字符_java split函数结尾空字符串被丢弃的问题
  5. 2022百度职业资格考试培训行业洞察
  6. 数论 —— 线性同余方程组与中国剩余定理
  7. idea普通java项目引入lombok_IDEA中Lombok的使用
  8. tomcat中间件的默认端口号_Tomcat下载安装及配置
  9. linux下两个线程交替打印,两个线程交替打印AB
  10. T SNE降维matlab程序,关于t-SNE降维方法
  11. CSP赛前集训 【DD头子张京华】
  12. 【开源教程5】疯壳·开源编队无人机-飞控固件烧写
  13. codeoforces 1467 B Hills And Valleys (枚举)
  14. USACO:2.2.1 Preface Numbering 序言页码
  15. Unity 编辑器下运行没有声音
  16. 事件监听机制(一)Java事件监听
  17. android锁屏软件开发,Android一键锁屏开发全过程
  18. 1.MyBatis源码解析-XML解析流程--阿呆中二
  19. html6能代替原生app,网页转APP工具能否取代原生APP?这个在线制作平台,让移动开发更简单...
  20. pcie扰码的作用_物理层逻辑知识,关于扰码器需要遵循的规则

热门文章

  1. 持续集成与持续交付 - 部署安全的私有Registry
  2. 由浅入深,谈谈文件上传的优化思路
  3. Ganglia_简述
  4. win10下openface快速安装与使用
  5. 【每日一题 6.25】粉刷房子
  6. tortoiseGIT 清除凭证
  7. MBN__2020.07.10
  8. 2018年国家高级理财规划师CHFP考试取消了该怎么办?
  9. c语言同名函数不同参数,C语言 函数同名宏的定义及注意事项
  10. VMware虚拟机分辨率