CC254x--BLE
BLE協(xié)議棧
BLE體系結(jié)構(gòu),著重了解GAP和GATT。
 
- PHY物理層在2.4GHz的ISM頻段中跳頻識(shí)別。
 - LL連接層:控制設(shè)備的狀態(tài)。設(shè)備可能有5中狀態(tài):就緒standby,廣播advertising,搜索scanning,初始化initiating和連接connected。廣播者傳播數(shù)據(jù),使得瀏覽者可以接收到。initiator就是一個(gè)對(duì)廣播者回復(fù)連接請(qǐng)求的設(shè)備。如果廣播者接受請(qǐng)求,廣播者和initiator初始者就會(huì)進(jìn)入connected連接狀態(tài)。一個(gè)處于連接狀態(tài)的設(shè)備會(huì)有一個(gè)角色:master和slave。初始化這個(gè)連接的為master,接受這個(gè)連接請(qǐng)求的為slave。
 - ?HCI層為host和controller之間通過(guò)一個(gè)標(biāo)準(zhǔn)接口進(jìn)行通信提供了一些方法。這一層可以通過(guò)一個(gè)軟件API或者是硬件接口如UART,SPI和USB。
 - ?L2CAP為上層數(shù)據(jù)提供封裝服務(wù)。
 - ?SM:定義了建立連接和KEY的方法。
 - GAP:直接與profile和app進(jìn)行接觸,解決設(shè)備的發(fā)現(xiàn)和連接相關(guān)的服務(wù),此外GAP也會(huì)初始化安全相關(guān)的特色。
 - ATT:允許一個(gè)設(shè)備去顯示一些數(shù)據(jù),對(duì)于其他設(shè)備稱之為“Attribute屬性”,在ATT中,那些顯示這些屬性的設(shè)備被稱為server,同等的另一個(gè)設(shè)備稱為client。LL層的狀態(tài)master和slave和ATT層的這兩個(gè)狀態(tài)無(wú)關(guān)。
 - GATT層:是一個(gè)服務(wù)框架定義了對(duì)ATT應(yīng)用的子程序。GATT指定了profile的結(jié)構(gòu)。在BLE中,由profile或者是服務(wù)所使用的所有類型的數(shù)據(jù)都稱為characteristic。發(fā)生于兩個(gè)設(shè)備間通過(guò)BLE連接進(jìn)行交換的數(shù)據(jù)都需經(jīng)過(guò)GATT子程序處理。因此,app和profile會(huì)直接使用GATT。
 
要開發(fā)app,真正接觸的是GAP和GATT,GAP用來(lái)建立連接,GATT用來(lái)數(shù)據(jù)傳送。
GAP
一個(gè)從設(shè)備只能鏈接一個(gè)主設(shè)備。
低功耗藍(lán)牙設(shè)備定義了四類GAP角色:
- 廣播者
 - 觀察者
 - 外圍設(shè)備
 - 中央設(shè)備
 
GATT
建立連接的流程
 
應(yīng)用數(shù)據(jù)傳輸流程
 
PROFILE、SERVICE、CHARACTERISTIC、UUID
藍(lán)牙BLE有自己的協(xié)議標(biāo)準(zhǔn),一個(gè)產(chǎn)品可以有很多服務(wù)service,一個(gè)藍(lán)牙服務(wù)service包括一個(gè)或者多個(gè)characteristics,而每個(gè)characteristics都包含對(duì)應(yīng)UUID、屬性描述(如可讀、可寫、長(zhǎng)度等)、屬性值value、屬性配置(代表訂閱信息)等等。
每一個(gè)屬性都有一個(gè)地址——句柄。為了簡(jiǎn)化后續(xù)的數(shù)據(jù)處理,一般framework會(huì)設(shè)置一個(gè)handle來(lái)對(duì)應(yīng)一個(gè)characteristics。服務(wù)是一種或多種特性的組合;特性則由一種或多種屬性組成。
特征字主要包含write、read、notify和indicate等主要通信方式。
- 對(duì)于藍(lán)牙外設(shè)的write特征字,主設(shè)備(如手機(jī))可以進(jìn)行寫操作;
 - 對(duì)于read,主設(shè)備則可以從中讀取信息;
 - write和read對(duì)于藍(lán)牙外設(shè)來(lái)說(shuō),其屬于被動(dòng)控制,即藍(lán)牙外設(shè)被動(dòng)接受主控制的通信控制。
 - 而notify和indicate則是藍(lán)牙外設(shè)主動(dòng)向主設(shè)備傳輸數(shù)據(jù),前提是主設(shè)備要預(yù)先訂閱對(duì)應(yīng)的characteristics的信息更新。Notify數(shù)據(jù)后,主設(shè)備不需要應(yīng)答響應(yīng),而indicate則需要應(yīng)答響應(yīng)。
 
屬性
屬性概述
|   2字節(jié)  |   2或6字節(jié)  |   0~512字節(jié)  | 
|   屬性句柄  |   屬性類型  |   屬性值  | 
屬性句柄
有效的句柄范圍從0x0001~0xFFFF。0x0000為無(wú)效句柄,不能用于尋址屬性。你可以根據(jù)自己在軟件硬件或嵌入式方面的背景,把句柄相應(yīng)地想象為內(nèi)存地址、端口號(hào)、屬性值對(duì)應(yīng)的硬件寄存器地址。
屬性類型
可以被公開的數(shù)據(jù)有許許多多的類型:溫度、壓強(qiáng)、體積、距離、功率、時(shí)間、充電狀態(tài)、開關(guān)狀態(tài)、狀態(tài)機(jī)的狀態(tài)等。所公開的數(shù)據(jù)的種類稱作屬性類型。為了區(qū)分如此多的數(shù)據(jù)類型,一串128位的數(shù)字被用來(lái)標(biāo)識(shí)屬性的類型。這個(gè)唯一的標(biāo)識(shí)碼就叫做通用唯一識(shí)別碼(UUID)。
藍(lán)牙UUID基數(shù)如下:
00000000-0000-1000-8000-00805F9B34FB
0x1800 ~ 0x26FF 用于服務(wù)類通用唯一識(shí)別碼
0x2700 ~ 0x27FF 用于標(biāo)識(shí)計(jì)量單位
0x2800 ~ 0x28FF 用于區(qū)分屬性類型
0x2900 ~ 0x29FF 用于特征描述
0x2A00 ~ 0x7FFF 用于區(qū)分特性類型
屬性值
屬性值用于標(biāo)識(shí)設(shè)備公開的狀態(tài)信息。屬性值的長(zhǎng)度可以從0字節(jié)到最長(zhǎng)512字節(jié),但某些類型的屬性值的長(zhǎng)度則是固定的。屬性值對(duì)屬性協(xié)議來(lái)說(shuō)并不重要,但它對(duì)于上層,包括通用屬性規(guī)范和其之上的服務(wù)于規(guī)范來(lái)說(shuō)有著相當(dāng)重要的意義。
最小的屬性數(shù)據(jù)庫(kù)必須包含以下的六種屬性:《GAP服務(wù)》的《首要服務(wù)》、《設(shè)備名》的《特性》、《設(shè)備名》的值、《外觀》的《特性》、《外觀》的值、《GATT服務(wù)》的《首要服務(wù)》。但這樣的數(shù)據(jù)庫(kù)沒能公開足夠的狀態(tài),故沒有實(shí)用價(jià)值。綁定
如果客戶端想與其他設(shè)備建立長(zhǎng)期通信關(guān)系,首先應(yīng)連接該設(shè)備,找到一些能用的服務(wù),然后啟動(dòng)一個(gè)安全連接。這些安全連接先是認(rèn)證該設(shè)備為正確的設(shè)備,再對(duì)連接進(jìn)行加密以確保機(jī)密。最后,設(shè)備交換一些配對(duì)信息——這是關(guān)鍵的一部:如果客戶端存儲(chǔ)了該配對(duì)信息,就與對(duì)端設(shè)備完成了“綁定”。
綁定的重要性在于,當(dāng)客戶端重新連接到該設(shè)備時(shí),并不需要再次認(rèn)證身份或交換配對(duì)信息,而只需要將部分的綁定信息用于連接加密。于是設(shè)備之間便建立了一個(gè)認(rèn)證的、保密的數(shù)據(jù)連接。
綁定也提供了一些其他好處。設(shè)備綁定之后,服務(wù)器將為此客戶端保存其配置數(shù)據(jù)。這種模式將使重連設(shè)備立刻收到通知,而不需要重新配置服務(wù)器。
這種方法的另一個(gè)主要優(yōu)勢(shì)是,客戶端可以記住外圍設(shè)備的屬性句柄燈信息。也就是說(shuō),一旦中央設(shè)備了解了外圍設(shè)備的服務(wù)集,并且完成了配置,就能記住相關(guān)的屬性句柄。當(dāng)中央設(shè)備重新連接到外圍設(shè)備,它可以讀取和寫入這些屬性句柄,而不用再做一次服務(wù)掃描。這減少了從連接到使用設(shè)備之間所需要的時(shí)間。
應(yīng)注意,服務(wù)變更只與邦定的設(shè)備密切相關(guān)。如果中央設(shè)備沒有和外圍設(shè)備綁定,則不能緩存屬性句柄,也收不到任何服務(wù)變更的通知。換言之,對(duì)兩個(gè)未綁定設(shè)備來(lái)說(shuō),客戶端必須在每次連接時(shí)刷新服務(wù)器對(duì)的整個(gè)服務(wù)列表和特性列表。總結(jié)
以上是生活随笔為你收集整理的CC254x--BLE的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: 无线安全***--启程
 - 下一篇: 泛微OA数据库表说明