Service(服务)和characteristic(特征值)之间的关系:

BLE中的Service(服务)和characteristic(特征值)_adv

Service(服务):
服务是用来完成特定功能或特性的数据和相关行为的集合。在GATT中,服务由其服务定义来定义。服务定义可能包含所包含的服务、强制性特征和可选特征。可用于搜索服务的服务的重要属性被表示为uuid。

UUID:
UUID是一个普遍唯一的标识符,它被期望在所有空间和所有时间上都是唯一的(更准确地说,独立生成的UUID是相同的概率可以忽略不计)。uuid可以以分布式的方式独立创建。不需要对已分配的uuid进行中央注册表。一个UUID是一个128位的值。为了减少存储和传输128位UUID值的负担,已经预先分配了一系列UUID值,以便分配给常用的、已注册的目的。此预分配范围内的第一个UUID称为Blooth_Base_UUID,其值为00000000-0000-1000-8000- 00805F9B34FB。预分配范围内的UUID值具有以16位或32位值表示的别名。这些别名通常被称为16位和32位UUID,但每个实际上代表一个128位的UUID值。

characteristic(特征值):
特征是在服务中使用的值,以及关于如何访问该值的属性和配置信息,以及关于如何显示或表示该值的信息。特征定义包含特征声明、特征属性和值。它还可以包含描述值或允许服务器关于特征值的配置的描述符。

常见标准的Service: 

Allocation Type

Allocated UUID

Allocated for

GATT Service

0x1800

 类属存取

GATT Service

0x1801

 类属性

GATT Service

0x1802

立即警报

GATT Service

0x1803

链路损耗

GATT Service

0x1804

Tx功率

GATT Service

0x1805

 当前时间

GATT Service

0x1806

参考时间更新

GATT Service

0x1807

下一个DST更改

GATT Service

0x1808

Glucose

GATT Service

0x1809

Health Thermometer

GATT Service

0x180a

设备信息

GATT Service

0x180d

 心率

GATT Service

0x180e

电话警报状态

GATT Service

0x180f

电池

GATT Service

0x1810

血压

characteristic(特征值)细分:


CHARACTERISTIC VALUE READ(特征值读)
此过程用于从服务器上读取特征值。有四个子程序可以用来读取特征值:读取特征值、使用特征UUID读取、读取长特征值和读取多个特征值。

CHARACTERISTIC VALUE WRITE(特征值写)
此过程用于将特征值写入服务器。有五个子程序可以用来写一个特征值:无响应写、无响应签名写、写特征值、写长特征值和可靠写。

CHARACTERISTIC VALUE NOTIFICATION(特征值通知)
此过程用于从服务器通知客户端特征值的值。

CHARACTERISTIC VALUE INDICATIONS(特征值指示)
此过程用于指示从服务器到客户端的特征值。

其中NOTIFICATION和INDICATIONS区别:

Charateristic Value Notificaiton
通知是指包含了特征值的句柄和当前值的包。客户端会收到这样的包,并且可以选择执行,但是不会给服务器端发回响应来确认是否收到。

Characteristic Value Indication
不同于通知,标记遵循了请求响应的格式。当服务器端发出标记的包的时候,要求客户端发回一个明确的确认包。