低功耗藍牙(BLE) - 屬性(實例說明)

一峰尝、屬性(Attribute)

用過BLE的同學都知道“屬性”?(簡稱ATT)儒旬,那么什么是屬性呢温兼?寬泛的講秸滴,屬性是一條帶有標簽的、可以被尋址的數據募判。

屬性由3部分組成:屬性句柄荡含、屬性類型、屬性值届垫,如圖1所示释液。

圖1 屬性結構


1、屬性句柄(Attribute Handle)

有效的ATT句柄范圍是0x0001 ~ 0xFFFF装处。如圖2所示误债,最左側一列就是ATT句柄,從0x0001開始。

圖2 通用屬性

2寝蹈、屬性類型(Attribute Type)

128位通用唯一識別碼(UUID)用來標識ATT的類型糟袁。為了提高傳輸效率,藍牙技術聯盟(SIG)定義了一個128位的“藍牙UUID基數”(00000000-0000-1000-8000-00805F9B34FB)躺盛,結合一個16位的數使用项戴。

例如,圖2中的16位UUID “0x2800”槽惫,完整的128位UUID便是00002800-0000-1000-8000-00805F9B34FB周叮。

低功耗藍牙使用的UUID被分為5組:

0x1800 ~ 0x26FF:服務類型;

0x2700 ~ 0x27FF:計量單位界斜;

0x2800 ~ 0x28FF:屬性類型仿耽;

0x2900 ~ 0x29FF:特性描述;

0x2A00 ~ 0x7FFF:特性類型各薇;

下面是SIG官網對各組UUID定義的鏈接地址:

服務類型:https://www.bluetooth.com/specifications/gatt/services

屬性類型:https://www.bluetooth.com/specifications/gatt/declarations

特性描述:https://www.bluetooth.com/specifications/gatt/descriptors

特性類型:https://www.bluetooth.com/specifications/gatt/characteristics

例如项贺,在圖3中

ATT句柄為0x0022的屬性,第2列UUID “0x2800”表示ATT類型是“主服務”峭判,第4列值為“0x1812”表示服務類型是“HID服務”开缎;

ATT句柄為0x0023的屬性,第2列UUID “0x2803”表示ATT類型是“特性聲明”林螃;

ATT句柄為0x0024的屬性奕删,第2列UUID “0x2A4D”表示ATT類型是“報告”;

ATT句柄為0x0025的屬性疗认,第2列UUID “0x2902”表示特性描述是“客戶端特性配置”完残;


圖3 HID服務

如果自定義一個服務,一般會指定一個128位的UUID横漏,這個UUID不能和SIG已經定義的服務類型相同谨设。

例如,圖4展示了一個未知服務缎浇,包含1個主服務扎拣,UUID為“AB5E0001-5A21-4F05-BC7D-AF01F617B664”。

還包含3個特性华畏,第1個特性聲明了UUID為“AB5E0002-5A21-4F05-BC7D-AF01F617B664”的屬性用于接收客戶端發(fā)來的數據鹏秋,支持寫入操作(ATT句柄為0x0036的屬性,屬性值的第1個字節(jié)為0x08亡笑,即Bit3為1,所以支持寫入操作横朋。參考后面的“特性聲明”部分)仑乌;

第2個特性聲明了UUID為“AB5E0003-5A21-4F05-BC7D-AF01F617B664”的屬性用于發(fā)送數據給客戶端,支持讀取和通知操作(ATT句柄為0x0038的屬性,屬性值的第1個字節(jié)為0x12晰甚。Bit1為1衙传,所以支持讀取操作;Bit4為1厕九,所以支持通知操作蓖捶。參考后面的“特性聲明”部分),從圖中藍色部分可以看出數據長度為20字節(jié)扁远;

第3個特性聲明了UUID為“AB5E0004-5A21-4F05-BC7D-AF01F617B664”的屬性用于發(fā)送數據給客戶端俊鱼,支持讀取和通知操作(ATT句柄為0x003B的屬性,屬性值的第1個字節(jié)為0x12畅买。Bit1為1并闲,所以支持讀取操作;Bit4為1谷羞,所以支持通知操作帝火。參考后面的“特性聲明”部分),從圖中藍色部分可以看出數據長度為1字節(jié)湃缎;


圖4 未知服務

3犀填、屬性值(Attribute Value)

ATT值長度從0字節(jié)到最長512字節(jié),但某些類型的ATT值長度是固定的嗓违。例如宏浩,圖4中ATT句柄為0x003A的屬性,UUID“0x2902”表示ATT類型是“客戶端特性配置”靠瞎,該屬性的ATT值就是固定的2個字節(jié)長度(參考后面的“特性描述”部分)比庄。

二、特性(Characteristic)

特性就是把一些屬性組合在一起乏盐,歸為一類佳窑。例如,圖3中ATT句柄從0x002B到0x002E的4個屬性就組成了一個特性父能,其行為就是要發(fā)送數據給客戶端神凑。

特性包含3個要素:

聲明;

數值何吝;

描述溉委;

1、特性聲明(Characteristic Declaration)

特性聲明的UUID為0x2803爱榕,即ATT類型為特性聲明(0x2803)瓣喊。


圖5 特性聲明

(1)性質(Properties)

長度為8位,確定了特性數值屬性對操作的支持情況黔酥,包括:讀取藻三、寫入洪橘、通知、指示棵帽、廣播熄求、命令、簽名認證逗概。每一位表示一種操作弟晚,Bit位為1表示支持該項操作,為0表示不支持逾苫,如表1所示卿城。


表1 特性的性質

(2)數值句柄(Value Handle)

與客戶端進行數據交互的屬性句柄,即實際用來傳輸數據的屬性句柄隶垮。

(3)特性UUID(Characteristic UUID)

標識特性數值的類型的UUID藻雪。

例如,圖3中ATT句柄為0x002B的屬性就是一個“特性聲明”狸吞,第4列ATT值為“1A:2C:00:4D:2A”勉耀。其中第1個字節(jié)0x1A(0b00011010),表示性質支持讀取蹋偏、寫入和通知便斥;第2和3字節(jié)組合后即0x002C,表示用來傳遞數據的ATT句柄為“0x002C”威始;第4和5字節(jié)組合后即0x2A4D枢纠,表示該特性數值的類型為“0x2A4D”(Report)。

2黎棠、特性數值

也是一個屬性晋渺,屬性類型必須與特性聲明的特性UUID字段一致。

例如脓斩,圖3中ATT句柄為0x002C的屬性就是一個“特性數值”木西,ATT類型UUID為“0x2A4D”,就是在ATT句柄為0x002B的“特性聲明”的ATT值中指定的随静。

3八千、特性描述

“特性描述”的UUID范圍0x2900-0x290F,如表2所示燎猛。一個特性可以包含任意多的描述恋捆。


表2 特性描述

例如,客戶端特性配置的ATT值長度2個字節(jié)重绷,Bit0表示通知是否使能沸停,Bit1表示指示是否使能,其它14個Bit未定義论寨。在圖3中星立,ATT句柄為0x002D的屬性就是一個“客戶端特性配置”爽茴,其ATT值為“0x0001”葬凳,就表示通知操作已打開绰垂。

三、服務

一個服務就描述了一種數值火焰。例如劲装,電池服務就描述了電量值是如何傳給客戶端的;設備信息服務描述了設備相關信息昌简。HID服務描述了人機交互設備是如何交互數據的占业。從圖2、3纯赎、4谦疾,我們也可以看出服務包含了一個或多個特性,可以簡單的認為服務就是多個特性的集合犬金。

最后念恍,附上所有UUID列表文件下載通道:

鏈接:https://pan.baidu.com/s/1FykSrJKFZrRA2pnM3Wcmaw(提取碼:q46i),這個列表是飛哥辛辛苦苦從SIG官網提取出來的晚顷,方便查閱峰伙,希望對大家有幫助。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末该默,一起剝皮案震驚了整個濱河市瞳氓,隨后出現的幾起案子,更是在濱河造成了極大的恐慌栓袖,老刑警劉巖匣摘,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異裹刮,居然都是意外死亡音榜,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門必指,熙熙樓的掌柜王于貴愁眉苦臉地迎上來囊咏,“玉大人,你說我怎么就攤上這事塔橡∶犯睿” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵葛家,是天一觀的道長户辞。 經常有香客問我,道長癞谒,這世上最難降的妖魔是什么底燎? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任刃榨,我火速辦了婚禮,結果婚禮上双仍,老公的妹妹穿的比我還像新娘枢希。我一直安慰自己,他們只是感情好朱沃,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布苞轿。 她就那樣靜靜地躺著,像睡著了一般逗物。 火紅的嫁衣襯著肌膚如雪搬卒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天翎卓,我揣著相機與錄音契邀,去河邊找鬼。 笑死失暴,一個胖子當著我的面吹牛坯门,可吹牛的內容都是我干的。 我是一名探鬼主播锐帜,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼田盈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缴阎?” 一聲冷哼從身側響起允瞧,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蛮拔,沒想到半個月后述暂,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡建炫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年畦韭,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肛跌。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡艺配,死狀恐怖,靈堂內的尸體忽然破棺而出衍慎,到底是詐尸還是另有隱情转唉,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布稳捆,位于F島的核電站赠法,受9級特大地震影響,放射性物質發(fā)生泄漏乔夯。R本人自食惡果不足惜砖织,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一款侵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧侧纯,春花似錦新锈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剃幌。三九已至聋涨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間负乡,已是汗流浹背牍白。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抖棘,地道東北人茂腥。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像切省,于是被迫代替她去往敵國和親最岗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內容