BLE GATT服務構成

2021-09-11 02:02:57 字數 1633 閱讀 2277

最上層協議為profile,profile 中由多個 server 組成,而 server 由0 或多個《include》和至少乙個《characteristic》 組成。

服務是指一系列由資料和相關行為組成的集合,為了去完成某個特定的功能或者特性。而乙個服務可以包含引用服務即《include》、強制性和可選的特徵即《characteristic》。服務是一種或多種特性的組合;特性則是由一種或多種屬性組成。

下圖為summary of gatt profile attribute types:

上圖中可以看到有主要服務和次要服務,次要服務只能被首要服務引用,也就是只能被首要服務用《include》進行包含來引用。次要服務不會被對端裝置發現。

server的格式更名如下:

同樣當乙個服務需要用到別的服務裡面的某些值的時候,也可以通過«include»來完成。

然而, «include»一定是在服務宣告之後才能使用的,那麼服務宣告有兩種方式,首要服務可以引用另乙個首要服務。首要服務也可以引用乙個次要服務,從而使用次要服務公開行為。次要服務可以引用乙個次要服務或者首要服務。不過次要服務引用次要服務情況很少,次要引用首要服務就更少了。

«include»的宣告格式:

從圖中可以知道包含服務«include»本身的 uuid=0x2802。它的屬性值共有 3 個部分組成:需要包含的服務的控制代碼、組結束的控制代碼和需要包含的服務的 uuid。

上面有提到包含服務«include»中包含有組結束的控制代碼,那麼什麼是組呢? 怎麼定義的?

在 gatt profile 中將屬性型別分為 3 組:«首要服務»«primary service»,«次要服務» «secondary service»和«特性»«characteristic»。 乙個組開始於乙個宣告, 服務分組結束於下乙個服務宣告,特性分組結束於下乙個特性的宣告或者是下乙個服務的宣告。也就是服務宣告對服務進行分組,特性宣告對特性進行分組。

應用時用的是屬性的值,而應用中使用的屬性值是特性分組中的,所以特性說明白真的很難。特性包含 3 個基本的要素:

特性宣告

屬性的值的宣告

特性描述符

擷取書中的例子

特性宣告:特性宣告本身的 uuid 值是 0x2803,特性宣告中需要宣告的特性是在屬性值中的,屬性值包含有 3 個字段:特性性質、屬性控制代碼和屬性型別, 且僅為唯讀。

如下圖為特性宣告格式:

特性宣告中的屬性值的 3 個字段中特性性質佔 1 個位元組,屬性控制代碼佔 2 個位元組,屬性型別要麼是 2 位元組 16bits 的 uuid 或者是 16 位元組 128bits 的 uuid。

MySQL服務的構成(二)

這裡的例項不是類產生的例項物件,而是linux系統下的一種機制 1.mysql的後台程序 執行緒 預分配的記憶體結構。2.mysql在啟動的過程中會啟動後台守護程序,並生成工作執行緒,預分配記憶體結構供mysql處理資料使用 2.1 連線層 提供鏈結協議 socket,tcp ip 這裡的socke...

mysql的伺服器構成

這裡的例項不是類產生的例項物件,而是linux系統下的一種機制 連線層1.提供鏈結協議 socket,tcp ip 這裡的socket也不是網路連線的socket,mysql的socket連線只能連線本地 2.驗證使用者的合法性 使用者名稱,密碼,白名單 3.提供乙個專用連線線程 接收sql,返回結...

微服務架構成功之路

近年來,在軟體開發領域關於微服務的討論呈現出火爆的局面,有人傾向於在系統設計與開發中採用微服務方式實現軟體系統的松耦合 跨部門開發 同時,反對之聲也很強烈,持反對觀點的人表示微服務增加了系統維護 部署的難度,導致一些功能模組或 無法復用,同時微服務允許使用不同的語言和框架來開發各個系統模組,這又會增...