WLAN直連總體結構和相關流程概覽(一)

2021-06-22 04:58:33 字數 1900 閱讀 7703

終於決定要離開***,倒計時乙個月。現在基本上不給我安排活了,主要寫寫文件,進行工作交接的事情。想想確實有很久沒寫部落格了,雖然以前寫的也不咋地,但至少在以後能給自己乙個參考。需要好好把這一年的東西好好整理一下了。

wifi模組主要包括三部分:wlan station, wlan direct, mobileap(hotspot) ,應用主要涉及上網、列印、檔案傳輸、熱點共享、遠端控制、區域網等方面。

前段時間總結了wlan直連的部分流程,由於boss要求用英文寫,在這裡單純的翻譯出來。

注: 下面圖中有些**和檔案可能和google提供的有所不同,***在google基礎上進行了一些改動。

幾乎所有較新的***手機都支援wlan直連功能,ui層主要有兩個入口,乙個直接進入(wifip2psettings),乙個由外部模組呼叫進入(wifip2pdevicepicker)。

下面分層詳細介紹。

有些資訊不便在這裡細寫,用一張圖簡單概括一下它們之間的關係:

需要說一下的是,還有乙個檔案wifip2pdummypickeractivity,從它名字也能略窺其作用了-dummy(虛擬的)。實際上,它的確就是ui layer(wifip2pdevicepicker)和其他模組的乙個中間層。

從上圖可以看出,外部模組發乙個隱式intent,android系統根據這個intent,就能找到相應的需要啟動的activity。

從上圖可以看出,搜尋顯示出的每乙個裝置,實際上都被封裝成了乙個個preference物件。

在說這一層詳細資訊之前,不得不先了解一下android系統裡的狀態機(statemachine)。狀態機的實現還是handler機制,google對它進行了很好的封裝擴充套件,就成了乙個功能比較強大的狀態機。首先來看看它的類結構圖。(此圖引用自

這是乙個樹形層次狀態機,按層級順序來處理訊息。狀態機內部有乙個活動狀態棧,用於儲存當前所有處於活動的state,並且在狀態轉換後,在處理下乙個訊息時,會更新這個棧。例如

mp0

/    \

mp1   ms0

/    \

ms2  ms1

/    \         \

ms3  ms4  ms5  ---> initial state

在初始狀態下,活動狀態棧中儲存的狀態為mp0,mp1, ms1, ms5,所以當收到訊息時,處理順序為(假設每個狀態都不能處理這個訊息,即返回false或not_handled)

ms5,ms1, mp1, mp0。

如果ms5能夠處理這個訊息(返回true),並且狀態轉到ms4,那麼活動狀態棧會更新為mp0,mp1, ms2, ms4。各狀態呼叫順序為ms5.processmessage() > transitionto(ms4) > ms5.exit() > ms1.exit() > ms2.enter() > ms4.enter()。當收到下個訊息時,首先會呼叫ms4.processmessage()處理訊息。

下面附一張p2pstatemachine的樹形層次結構圖

OVS 總體架構 原始碼結構及資料流程全面解析

在前文 從 bridge 到 ovs 中,我們已經對 ovs 進行了一番探索。本文決定從 ovs 的整體架構到各個元件都進行乙個詳細的介紹。ovs 是產品級的虛擬交換機,大量應用在生產環境中,支撐整個資料中心虛擬網路的運轉。ovs 基於 sdn 的思想,將整個核心架構分為控制面和資料面,資料面負責資...

mysql結構和執行流程

mysql整體結構大致分三層 mysql客戶端 用來處理 連線處理,授權認證,安全等功能 核心服務層 用來查詢解析,分析,優化,快取,內建函式 如時間 數學 加密等函式 所有的跨儲存引擎的功能也在這一層實現 儲存過程 觸發器 檢視。儲存引擎 負責mysql中的資料儲存和提取,每種儲存引擎都有其優勢和...

PE檔案的基本結構 1 總體介紹和dos頭

1 概論 看歷史 com檔案,exe檔案,le格式的可執行檔案 linear executable 線性可執行檔案 windows 9x中的vxd驅動程式也使用le格式,因為這些驅動程式中也同時包括16位和32位 而在windows 9x,windows nt,windows 2000下,純32位的...