2023年1月25日 星期三

Android Studio - 藍牙低功耗(BLE)GATT (九十七)

Android Studio - 藍牙低功耗(BLE)GATT (九十七):

藍牙低功耗(Bluetooth Low Energy / BLE)的 Gatt(Generic Attribute Profile)即通用屬性協定,用於在 BLE 鏈路上發送和接收的資料塊。目前所有的 BLE 應用都是基於 GATT,基於 GATT 的應用協議非常簡單,因為所有的功能都是集成在 GATT 終端,這些基於其上的應用協定只是對 GATT 提供的功能的使用。一個設備可以實現多個設定檔。

藍牙低功耗(Bluetooth Low Energy / BLE)的結構
BLE 交互的橋樑是 Service,Characteristic,Descriptor。這三部分都是使用 UUID 來作為唯一標識符加以區分。一個 BLE 終端可以包含多個 Service,一個 Service 可以包含多個 Characteristic,而一個 Characteristic包含一個 value 和多個 Descriptor,一個 Descriptor 只包含一個 value。

Service、Characteristic 和 Descriptor 均有一個唯一的 UUID(Universal Unique IDentifier)標識,UUID 既有 16位元的也有 128位的。16位元的 UUID 是經過藍牙組織認證的,是需要購買的,而128位的 UUID 則可以自訂,當然也有許多通用的 UUID。UUID 格式為:0000ffe1-0000-1000-8000-00805f9b34fb。

GATT Server 與 GATT Client 的連接溝通
  • Characteristic:可以理解為一個資料類型,它包括一個 value 和 0 至多個對此 characteristic 的描述(Descriptor)。
  • Descriptor:對 Characterisctic 的描述,如範圍、單位等。
  • Service:是 Characteristic 的集合,它可以包含多個 Characteristic。
  • 重點:一個 BLE 終端可以包含多個 Service,一個 Service 可以包含多個 Characteristic,一個 Characteristic 包含一個 value 和多個 Descriptor,一個 Descriptor 包含一個 value(其中 Characteristic 比較重要,用的比較多)。

Service Characteristic Descriptor 的結構
GATT 通信的雙方是 C/S (Client / Server)關係。外設作為 GATT 服務端(Server),它維持了 ATT 的查閱資料表以及 service 和 characteristic 的定義。中心設備是 GATT 用戶端(Client),它向 Server 發起請求。需要注意的是,所有的通信事件,都是由用戶端(也叫主設備,Master)發起,並且接收服務端(也叫從設備,Slave)的回應。

GATT 通信連接

GATT 連接是獨佔的。也就是一個BLE外設同時只能被一個中心設備連接。一旦外設被連接,它就會馬上停止廣播,這樣它就對其他設備不可見了。當設備斷開,它又開始廣播。
2023年 1月 25日(Wed)天氣報告
氣溫:43.0°F / 6.0°C @ 07:00
風速:每小時 2公里
降雨機會:4%
相對濕度:百分之 96%
天氣:霧

沒有留言:

張貼留言