下圖是藍芽軟體的架構圖:
從上圖來看,藍牙架構分為三個部分,分別是
GAP層是主機(Host)的最上層,他定義了:
GAP 角色 | 描述 |
---|---|
BROADCASTER | 只會發送廣播事件的裝置。 |
OBSERVER | 只會接收廣播事件的裝置。 |
PERIPHERAL | 可以接受建立連線請求的裝置。 |
CENTRAL | 可以發起建立連線請求的裝置。 |
GAP會有這幾種狀態
GAP 狀態 | 描述 |
---|---|
Standby | 重啟後的初始狀態。 |
Advertiser | 發出可被連線的廣播封包的裝置,其中廣播封包包含裝置的MAC位址也可以有其他額外的資料,像是裝置名稱等。 |
Scanner | 當接收到廣播封包,掃描裝置會(Scanner)發送掃描請求(Scan Request)給廣播裝置(Advertiser),接著廣播者回應掃描回應(Scan Response),此過程稱為探索裝置(Device DIscovery)。掃描裝置可透過此過程得知廣播裝置並且可以和該裝置建立連線。 |
Initiator | 發起連線時必須指定要連接的設備位址,當接收到符合預期的廣播封包時,會開始發送帶有連接參數(Connection Parameters)的連線請求。 |
Slave/Master | 發起連線請求的稱作主機(Master),接收連線請求的裝置則稱為從機(Slave)。 |
最後文件中有提到,TI 已經把藍芽協議的處理包在協議棧中,我們只要透過一些他們提供的API 先進行初始化,接著就能開始控制連線或廣播等程序,而且同一個裝置同時也可支援多種GAP角色。
參考文章: