BLE--GATT服务构成
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 个基本的要素:
- 特性声明
- 属性的值的声明
- 特性描述符
截取书中的例子
特性声明:特性声明本身的 UUID 值是 0x2803,特性声明中需要声明的特性是在属性值中的,属性值包含有 3 个字段:特性性质、属性句柄和属性类型, 且仅为只读。
如下图为特性声明格式:
特性声明中的属性值的 3 个字段中特性性质占 1 个字节,属性句柄占 2 个字节,属性类型要么是 2 字节 16bits 的 UUID 或者是 16 字节 128bits 的 UUID。
BLE--GATT服务构成相关推荐
- ESP32学习笔记(30)——BLE GATT服务端自定义服务和特征
一.简介 1.1 低功耗蓝牙(BLE)协议栈 链路层(LL) 控制设备的射频状态,有五个设备状态:待机.广播.扫描.初始化和连接. 广播 为广播数据包,而 扫描 则是监听广播. GAP通信中角色,中心 ...
- ESP32学习笔记(31)——BLE带有属性表的GATT服务
一.简介 1.1 通用属性协议(GATT) GATT是用Attribute Protocal(属性协议)定义的一个service(服务)框架.这个框架定义了Services以及它们的Character ...
- Android BLE低功耗蓝牙开发(下) BLE客户端(中央设备)与GATT服务的通讯
之前的文章简单实现了使用传统蓝牙进行通讯的DEMO,说是最简单其实只是夸张的写法~毕竟标题党横行,我们也得学学点~至少没有UC震惊部那么夸张. 然后,本来是要写Android开发之BlueTooth- ...
- 低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端
低功耗蓝牙BLE外围模式(peripheral)-使用BLE作为服务端 Android对外模模式(peripheral)的支持 从Android5.0开始才支持 关键术语和概念 以下是关键BLE术语和 ...
- 蓝牙BLE GATT完全分析和运用
很多人都做过蓝牙开发,很多人也能够通过仿照GATT例程的方式添加一个属性服务,但是很多人都未必能够清晰地理解BLE的属性profile,也很容易被属性Attribute和特性characteristi ...
- 【蓝牙】如何新建一个BLE GATT SERVICE
nRF52840 搭建GATT Service传送门 本文基于高通平台QCC5121 1.BLE GATT SERVICE 结构 GATT的服务(service)是为了实现设备的某些功能或特征,是一系 ...
- CC2640R2F BLE5.0 蓝牙协议栈GAP GATT 服务(GGS)
GAP GATT 服务(GGS) 在前面GATT服务和简介中说过,GGS服务包含设备和访问信息,例如设备名称,Appearance,外围首选连接参数.GGS的目的是在设备发现和连接启动过程中进行辅助. ...
- (七)深入理解蓝牙BLE之“蓝牙GATT服务”
目录 前言: 学习总结: uuid的定义: GATT Declarations: GATT Service: GATT Characteristic and Object Type:
- ble - GATT 协议详解
目录 GATT OverView service 定义 include 定义 characteristic 定义 HCI log 分析: GATT discover service flow GAT ...
- BLE GATT 介绍
GATT(Generic Attribute Profile),描述了一种使用ATT的服务框架 该框架定义了服务(Server)和服务属性(characteristic)的过程(Procedure)及 ...
最新文章
- 我的第一个Flex Project
- Flash Builder4.7极其简单破解方法-三步搞定(亲测)
- @override报错_C++ 多态性:C++11:override 与 final(学习笔记:第8章 09)
- java split空字符_java split函数结尾空字符串被丢弃的问题
- 2022百度职业资格考试培训行业洞察
- 数论 —— 线性同余方程组与中国剩余定理
- idea普通java项目引入lombok_IDEA中Lombok的使用
- tomcat中间件的默认端口号_Tomcat下载安装及配置
- linux下两个线程交替打印,两个线程交替打印AB
- T SNE降维matlab程序,关于t-SNE降维方法
- CSP赛前集训 【DD头子张京华】
- 【开源教程5】疯壳·开源编队无人机-飞控固件烧写
- codeoforces 1467 B Hills And Valleys (枚举)
- USACO:2.2.1 Preface Numbering 序言页码
- Unity 编辑器下运行没有声音
- 事件监听机制(一)Java事件监听
- android锁屏软件开发,Android一键锁屏开发全过程
- 1.MyBatis源码解析-XML解析流程--阿呆中二
- html6能代替原生app,网页转APP工具能否取代原生APP?这个在线制作平台,让移动开发更简单...
- pcie扰码的作用_物理层逻辑知识,关于扰码器需要遵循的规则