Service(服务)和characteristic(特征值)之间的关系:
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
不同于通知,标记遵循了请求响应的格式。当服务器端发出标记的包的时候,要求客户端发回一个明确的确认包。