欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
低功耗藍(lán)牙之GAP、GATT
[打印本頁(yè)]
作者:
pppppco9m
時(shí)間:
2018-10-15 17:40
標(biāo)題:
低功耗藍(lán)牙之GAP、GATT
本篇主要介紹一下關(guān)于BLE開(kāi)發(fā)過(guò)程中必須了解的兩個(gè)協(xié)議:GAP(通用訪問(wèn)協(xié)議)、GATT(通用屬性協(xié)議)。兩個(gè)協(xié)議都隸屬于Host層,直接關(guān)系到應(yīng)用層開(kāi)發(fā),與BLE開(kāi)發(fā)人員的關(guān)系比較密切,其分別負(fù)責(zé)連接前數(shù)據(jù)廣播和連接后的數(shù)據(jù)傳輸。
二、平臺(tái)
Software Version:BLE_STACK_CC26XX_2.1.0
Hardware Version:CC2640/CC2650
IDE:IAR 7.40
三、GAP
1、藍(lán)牙低能耗技術(shù)“完成”一次連接(即掃描其它設(shè)備、建立鏈路、發(fā)送數(shù)據(jù)、認(rèn)證和適當(dāng)?shù)亟Y(jié)束)只需3ms。而標(biāo)準(zhǔn)藍(lán)牙技術(shù)完成相同的連接周期需要數(shù)百毫秒。
GAP層有4種不同類型的廣播:通用的、定向的、不可連接的以及可發(fā)現(xiàn)的。
設(shè)備每次廣播時(shí),會(huì)在3個(gè)廣播信道上發(fā)送相同的報(bào)文。這些報(bào)文被稱為一個(gè)廣播事件。除了定向報(bào)文以外,其他廣播事件均可以選擇20ms - 10.28s不等的間隔。通常,一個(gè)廣播中的設(shè)備會(huì)每一秒廣播一次。廣播事件之間的時(shí)間稱為廣播間隔。主機(jī)可以控制該間隔。但是,設(shè)備周期性的發(fā)送廣播會(huì)有一個(gè)問(wèn)題:由于設(shè)備間的時(shí)鐘會(huì)不同程度的漂移,兩個(gè)設(shè)備可能在很長(zhǎng)一段時(shí)間同時(shí)廣播而造成千擾。為防止選一情況的發(fā)生,在上一次廣播事件發(fā)生后加入隨機(jī)延時(shí)。它們發(fā)送下一個(gè)廣播事件時(shí)也很可能不再?zèng)_突。
通用廣播:通用廣播是用途最廣的廣播方式。進(jìn)行通用廣播的設(shè)備能夠被掃描設(shè)備掃描到,或者在接收到連接請(qǐng)求時(shí)作為從設(shè)備進(jìn)入一個(gè)連接。通用廣播可以在沒(méi)有連接的情況下發(fā)出,換句話說(shuō),沒(méi)有主從設(shè)備之分。
定向廣播:有時(shí)候,設(shè)備間需要快速建立連接。如果從設(shè)備想這么做,就需要進(jìn)行廣播。定向廣播事件就是為了盡可能快的建立連接。這種報(bào)文包含兩個(gè)地址:廣播者的地址和發(fā)起者的地址。發(fā)起設(shè)備收到發(fā)紿自己的定向廣播報(bào)文后,可以立即發(fā)送連接請(qǐng)求作為回應(yīng)。
不可連接廣播:不想被連接的設(shè)備使用不可連接廣播事件。這種廣播的典型應(yīng)用包括設(shè)備只想廣播數(shù)據(jù),而不想被掃描或者連接。速也是唯一可用于只有發(fā)射機(jī)而沒(méi)有接收機(jī)設(shè)備的廣播類型。不可連接廣播設(shè)備不會(huì)進(jìn)入連接態(tài),因此,它只能根據(jù)主機(jī)的要求在廣播態(tài)和就緒態(tài)之間切換。
可發(fā)現(xiàn)廣播:最后一種廣播事件是可發(fā)現(xiàn)廣播。這種廣播不能用于發(fā)起連接,但允許其他設(shè)備掃描該廣播設(shè)備。這意味著該設(shè)備可以被發(fā)現(xiàn),既可以廣播數(shù)據(jù),又可以響應(yīng)掃描,但不能建立連接。這是一種適用于廣播數(shù)據(jù)的廣播形式,動(dòng)態(tài)數(shù)據(jù)可以包含于廣播數(shù)據(jù)之中,而靜態(tài)數(shù)據(jù)可以包含于掃描響應(yīng)數(shù)據(jù)之中。可發(fā)現(xiàn)廣播不會(huì)進(jìn)入連接態(tài),而只能在停止后回到就緒態(tài)。
如上面所述,BLE設(shè)備可以進(jìn)行廣播。但是,一個(gè)廣播設(shè)備必須在廣播中包含一些有用的數(shù)據(jù)。這意味著可以通過(guò)4種廣播事件中的3種進(jìn)行廣播:通用廣播、不可連接廣播以及可發(fā)現(xiàn)廣播。進(jìn)行廣播時(shí),需要在廣播報(bào)文中給數(shù)據(jù)打上標(biāo)簽。之所以要這么做,是因?yàn)椴⒎撬性O(shè)備都能理解所有可能的廣播數(shù)據(jù)。因此,需要給廣播數(shù)據(jù)打上標(biāo)簽并指出其長(zhǎng)度。每個(gè)數(shù)據(jù)片段均起始于一個(gè)長(zhǎng)度域,用以指示后面的類型及數(shù)據(jù)域的長(zhǎng)度;接下來(lái)是類型域,接收機(jī)可根據(jù)其內(nèi)容判斷自己是否能夠理解后面的數(shù)據(jù)。
四、GATT
通用屬性配置文件(GATT)在屬性協(xié)議(ATT)的基礎(chǔ)上構(gòu)建,為屬性協(xié)議傳輸和存儲(chǔ)數(shù)據(jù)建立了一些通用操作和框架。
1)GATT定義了兩個(gè)角色:服務(wù)器和客戶端。
GATT的角色并不一定與特定的GAP角色有關(guān)聯(lián),但可能由更高層級(jí)的配置文件指定。GATT和ATT不是傳輸專用,也可以用于BR/EDR和低耗能。但是,由于GATT和ATT用作發(fā)現(xiàn)服務(wù),故必須在低耗能技術(shù)中實(shí)施。GATT服務(wù)器存儲(chǔ)通過(guò)屬性協(xié)議傳輸?shù)臄?shù)據(jù),并接受GATT客戶端發(fā)出的屬性協(xié)議請(qǐng)求、指令及確認(rèn)。GATT服務(wù)器發(fā)送請(qǐng)求回復(fù),而如果在配置時(shí)GATT服務(wù)器發(fā)生特定事件,則會(huì)向GATT客戶端異步發(fā)送指示和通知。GATT還指定GATT服務(wù)器中所載的數(shù)據(jù)格式。
屬性在當(dāng)經(jīng)由屬性協(xié)議傳輸時(shí),會(huì)被格式化為相關(guān)的服務(wù)和特性。服務(wù)可能包括許多特征。特征包括單一值和許多描述特征值的描述符。
憑借經(jīng)定義的服務(wù)、特征和特征描述符架構(gòu),并非配置文件特定的GATT客戶端仍然可以遍歷GATT服務(wù)器,并向用戶顯示特征值。特征描述符可用于顯示特征值的描述符,從而可讓用戶了解該值。
2)GATT配置文件層級(jí)
GATT配置文件規(guī)格規(guī)定了交換配置文件數(shù)據(jù)的架構(gòu)。此架構(gòu)定義了配置文件所用的基本元素,例如服務(wù)和特征。
該層級(jí)的最高層是配置文件(profile)。配置文件由實(shí)現(xiàn)用例所需的一個(gè)或多個(gè)服務(wù)組成。服務(wù)由特征或有關(guān)其它服務(wù)的引用組成。每一個(gè)特征包括一個(gè)值,還可能包括有關(guān)該值的可選信息。服務(wù)、特征以及特征的組件(即特征值和特征描述符)構(gòu)成了配置文件數(shù)據(jù),并全部存儲(chǔ)在服務(wù)器的屬性中。
3)服務(wù)
服務(wù)是數(shù)據(jù)和完成設(shè)備或設(shè)備的某些部分的特定功能或特征的相關(guān)行為的集合。服務(wù)可能涉及其它主要或次要服務(wù)和/或構(gòu)成該服務(wù)的特征集合。
服務(wù)分為兩種類型:主要服務(wù)和次要服務(wù)。主要服務(wù)提供設(shè)備的主要功能。次要服務(wù)提供設(shè)備的輔助功能,引用自該設(shè)備至少一項(xiàng)主要服務(wù)。
為了令早前的客戶端保持向后兼容性,服務(wù)定義的其后修訂僅可增加新引用的服務(wù)或可選特征。服務(wù)定義的其后修訂也不得改變?cè)摲⻊?wù)定義先前修訂的特征。
服務(wù)可能用于一個(gè)或多個(gè)配置文件,以實(shí)現(xiàn)特定用例。
4)特征
特征,連同屬性和有關(guān)如何訪問(wèn)該值的配置信息以及有關(guān)如何顯示或表述該值的信息,是用于服務(wù)的值。特征定義包含特征聲明、特征屬性和值。它還可能包含描述該值或允許服務(wù)器配置有關(guān)特征值的描述符。
5)關(guān)于句柄handle 和UUID
屬性句柄:一臺(tái)設(shè)備可以有許多的屬性,例如溫度傳感器可能包含溫度屬性、設(shè)備名稱屬性和電池電量屬性。表面看來(lái),通過(guò)屬性類型似乎足以判別某種屬性。比如使用溫度屬性來(lái)獲取溫度,通過(guò)設(shè)備名稱屬性來(lái)獲取設(shè)備名等。但是,如果設(shè)備包含了兩種溫度屬性,比如一個(gè)室內(nèi)溫度傳感器加上室外溫度傳感器,情況會(huì)變得怎樣。這時(shí)你便無(wú)法直接讀取溫度傳感器,而必須讀取第一個(gè)或第二個(gè)溫度屬性。考慮到可能有任意多個(gè)溫度傳感器,問(wèn)題將變得更加復(fù)雜。為了解決這個(gè)同題,我們使用了一個(gè)16位的地址,也就是屬性句柄。有效的句柄范圍從0x0001--xFFFF。0x0000為無(wú)效句柄,不能用于尋址屬性。可以根據(jù)在軟硬件或嵌入式方面的背景,把句柄(Handle)相應(yīng)地想象為內(nèi)存地址、端口號(hào)、屬性值對(duì)應(yīng)的硬件寄存器地址。
屬性類型:可以被公開(kāi)的數(shù)據(jù)有許許多多的類型:溫度、壓強(qiáng)、體積、距離、功率、時(shí)間、充電狀態(tài)、開(kāi)關(guān)狀態(tài)、狀態(tài)機(jī)的狀態(tài)等。所公開(kāi)的數(shù)據(jù)的種類稱作屬性類型。為了區(qū)分如此多的數(shù)據(jù)類型,一串128位的數(shù)字被用來(lái)標(biāo)識(shí)屬性的類型。這個(gè)唯一標(biāo)識(shí)碼就叫做通用唯一識(shí)別碼(UUID),128位的UUID相當(dāng)長(zhǎng),設(shè)備間為了識(shí)別數(shù)據(jù)的類型需要發(fā)送長(zhǎng)達(dá)16個(gè)字節(jié)的數(shù)據(jù)。為了提高傳輸效率,藍(lán)牙技術(shù)聯(lián)盟( SIG)定義了一種稱為“藍(lán)牙UUID基數(shù)”的128位通用唯一識(shí)別碼,結(jié)合一個(gè)較短的16位數(shù)使用。二者仍然遵循通用唯一識(shí)別碼的分配規(guī)則,只不過(guò)在設(shè)備間傳輸常用的UUID時(shí),只發(fā)送較短的16位版本,接收方收到后補(bǔ)上藍(lán)牙的UUID基數(shù)即可。
藍(lán)牙UUID基數(shù)如下:
00000000—0000—1000—8000—00805F9B34FB
例如要發(fā)送的16位識(shí)別碼位0X2A01,完整的128位UUID便是:
00002A01—0000—1000—8000—00805F9B34FB
0x1800 - 0x26FF用作服務(wù)類通用唯一識(shí)別碼
0x2700 - 0x27FF用于標(biāo)識(shí)計(jì)量單位
0x2800 - 0x28FF用于區(qū)分屬性類型
0x2900 - 0x29FF用作特性描述
0x2A00- 0x7FFF用于區(qū)分特性類型
UUID,就是用來(lái)唯一識(shí)別一個(gè)特征值的ID。
handle,就是對(duì)應(yīng)的attribute的一個(gè)句柄
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1