BLE鏈路層
BLE鏈路層位于物理層之上,主要是控制無線電進行數(shù)據(jù)的傳輸,其功能主要包括:
- 數(shù)據(jù)報文的管理
- 廣播、數(shù)據(jù)信道的劃分和管理
- 設備的廣播、掃描、連接建立、連接管理、連接中的數(shù)據(jù)傳輸
- 數(shù)據(jù)加密
- 2.4G頻段跳頻技術抗干擾等
鏈路層狀態(tài)機
如上圖所示,鏈路層狀態(tài)機總共有5中狀態(tài),我們依次對其進行說明:
就緒態(tài)
鏈路層上電后就進入了就緒態(tài),處于等待host的命令的狀態(tài),在鏈路層狀態(tài)機中處于中心狀態(tài),是其他狀態(tài)轉換的中轉站,是一種非活動狀態(tài),但是ble中保持時間最長的狀態(tài)。
廣播態(tài)
處于廣播態(tài)的鏈路層可以完成以下工作:
- 發(fā)送廣播報文
- 接收掃描請求
- 發(fā)送掃描響應
其狀態(tài)變化很簡單,停止廣播就進入了就緒態(tài);在收到發(fā)起者的連接請求后就進入了連接態(tài)。
掃描態(tài)
掃描態(tài)分為兩種子狀態(tài),主動掃描和被動掃描。
其區(qū)別很容易理解,被動掃描即設備僅僅簡單的偵聽那些正在廣播的設備,并接收其發(fā)送的廣播報文;主動掃描則接受了廣播報文后,對設備產生額外的興趣,想要獲取更多的信息,因而發(fā)送掃描請求給廣播設備,并且接受該設備的響應數(shù)據(jù)。被動掃描就好像你走在大街上,聽到的那些廣告,而主動掃描則是你聽見了那些廣告,又問了問發(fā)廣告的人相關的信息。
掃描態(tài)只能和就緒態(tài)進行相互轉換,開始和停止掃描就是轉換條件。
發(fā)起態(tài)
為了發(fā)起連接,鏈路層必須處于發(fā)起態(tài)。進入發(fā)起態(tài)之后,鏈路層監(jiān)聽自己試圖連接的設備,一旦接收到該設備發(fā)送的廣播報文,則發(fā)送連接連接請求,并使自身進入了連接態(tài);而鏈路層不在試圖發(fā)送連接請求時,轉入就緒態(tài)。
連接態(tài)
連接態(tài)也有兩個子狀態(tài),從連接態(tài)和主連接態(tài),發(fā)起連接的即由發(fā)起態(tài)進入的叫做主連接態(tài),被動接受連接由廣播態(tài)進入的叫做從連接態(tài)。斷開連接則進入就緒態(tài)。
進入連接態(tài)之后,鏈路層可以進行連接管理和數(shù)據(jù)傳輸。
主設備定期向從設備發(fā)送報文,從設備通過相應這些報文進行數(shù)據(jù)的發(fā)送,從設備無權主動發(fā)送數(shù)據(jù)。
多個狀態(tài)機
對于單個鏈路而言,只有一個狀態(tài)是激活的,但是很多情況下,是存在多條鏈路的,每一個鏈路有分別對應一個狀態(tài)機實例。
多個狀態(tài)機實例中的狀態(tài)卻存在很多限制,在不同的狀態(tài)機中不能同時作為主從設備,也不能同時作為兩個設備的從設備,同時,因為這兩個限制,導致有些狀態(tài)是沖突的,例如,處于從連接狀態(tài)的設備不能處于發(fā)起態(tài),因為這會導致設備同時成為主從狀態(tài)。
《低功耗藍牙權威指南》一書中對于這種限制的目的做了如下的描述:
通過這一限制,設備在任何時間點上做任何事情沒有不確定性。這一確定性是的設備可以使用高效的調度算法,這符合低功耗的需要。
設計目的
狀態(tài)機是整個鏈路層的核心,鏈路層都是圍繞狀態(tài)機進行設計的。那么狀態(tài)機的設計肯定整體上的設計目的的,除了我們知道的狀態(tài)機設計可以將與特定狀態(tài)相關的行為分離開來,實現(xiàn)架構的清晰和見解之外,還有低功耗的要求。實現(xiàn)狀態(tài)機的,可將廣播、發(fā)現(xiàn)、連接過程與數(shù)據(jù)傳輸分離,使得廣播信道得以分離,這樣因為廣播必須在所有的廣播信道傳輸相同的廣播報文,這樣的設計其廣播的功耗降低到3信道的功耗。