藍牙的 GATT(Generic Attribute Profile) 是藍牙低功耗(Bluetooth Low Energy,簡稱BLE)協議棧中的一個核心協議,用于定義設備如何通過藍牙進行數據傳輸和交互。GATT 是基于 ATT(Attribute Protocol) 的一個高層協議,它提供了一種標準化的方式來組織和訪問設備上的數據。
GATT 的核心概念
-
服務(Service):
- 服務是一個邏輯分組,包含一組相關的特性(Characteristic)。
- 每個服務都有一個唯一的 UUID(Universally Unique Identifier)來標識它。
- 例如,心率監測服務(Heart Rate Service)是一個常見的服務,用于傳輸心率數據。
-
特性(Characteristic):
- 特性是服務中的具體數據項,表示一個具體的值。
- 每個特性都有一個唯一的 UUID,并且可以包含一個或多個描述符(Descriptor)。
- 例如,心率監測服務中的“心率測量”特性,用于傳輸實時心率值。
-
描述符(Descriptor):
- 描述符是特性值的附加信息,用于描述特性值的用途或格式。
- 例如,特性值的單位、數據格式等。
-
屬性(Attribute):
- 屬性是 GATT 中的最小數據單元,可以是服務、特性或描述符。
- 每個屬性都有一個唯一的句柄(Handle),用于標識它。
GATT 的工作原理
GATT 通信通常涉及兩個角色:
- GATT 服務器(GATT Server):提供數據的設備(通常是傳感器或外圍設備)。
- GATT 客戶端(GATT Client):請求和訪問數據的設備(通常是智能手機或中央設備)。
通信流程:
-
發現服務(Discover Services):
- 客戶端請求服務器列出所有可用的服務。
-
發現特性(Discover Characteristics):
- 客戶端請求服務器列出某個服務中的所有特性。
-
讀取特性值(Read Characteristic Value):
- 客戶端讀取某個特性的當前值。
-
寫入特性值(Write Characteristic Value):
- 客戶端修改某個特性的值。
-
通知和指示(Notification 和 Indication):
- 服務器可以主動向客戶端發送特性值的更新(通知)或等待客戶端確認后發送(指示)。
GATT 的應用示例
-
心率監測:
- 服務:心率監測服務。
- 特性:心率測量、體感位置等。
- 描述符:心率單位(如 BPM)。
-
設備信息:
- 服務:設備信息服務。
- 特性:制造商名稱、型號、硬件版本等。
-
環境傳感器:
- 服務:環境傳感器服務。
- 特性:溫度、濕度、壓力等。
GATT 的特點
-
靈活性:
- GATT 允許開發者自定義服務和特性,以滿足特定需求。
-
標準化:
- 藍牙 SIG(Special Interest Group)定義了許多標準服務(如心率服務、電池服務等),便于設備間互操作。
-
低功耗:
- GATT 是藍牙低功耗協議的一部分,適合電池供電設備。
-
事件驅動:
- 服務器可以主動向客戶端發送數據(如通知),無需客戶端頻繁輪詢。
總結
GATT 是藍牙低功耗通信的核心協議,它通過服務、特性和描述符的層次結構,提供了一種標準化的方式來組織和訪問設備上的數據。GATT 的靈活性和標準化特性使其成為物聯網設備(如傳感器、可穿戴設備等)通信的首選協議。