wifi系統框架
wifi流程圖:
第二部分: jni 層分析
frameworks/base/core/jni/android_net_wifi_wifi.cpp.這個檔案裡面是呼叫hal層的wifi.c裡面對應方法的介面的集合,提供給frameswork層的類wifinative裡面的方法呼叫
第三部分: hal 層分析
3,1驅動的載入和解除安裝
wifi_load_driver():驅動的載入。wifi驅動是編譯成ko檔案, ko檔案儲存的位置。
3,2 wpa_supplicant 相關(上行介面)
3,3 資料傳輸(涉及wpa_supplicnt的上行介面)
3,3,1 傳送資料
wifi_command(const char *command, char*reply, size_t *reply_len):這個方法被jni呼叫,主要是上層傳送命令通過這個方法傳遞給wpa_supplicant。
3,3,2 接受資料
wifi_wait_for_event(char *buf, size_tbuflen):上層呼叫這個方法阻塞等待wpa_supplicant傳遞上來的資訊,主要是呼叫wifi_ctrl_recv(struct wpa_ctrl *ctrl, char *reply, size_t *reply_len)來實現。
3,4 wpa_supplicant
就是wifi驅動和使用者的中轉站外加對協議和加密認證的支援。
3,4,1上行介面:
wpa_supplicant提供兩種方式的上行介面。一種基於傳統dbus機制實現與其他程序間的ipc通訊;另一種通過unix domain socket機制實現程序間的ipc通訊。
3,4,2下行介面:
wpa_supplicant提供的下行介面主要用於和kernel(driver)進行通訊,下發命令和獲取資訊。wpa_supplicant下行介面主要包括三種重要的介面:
(1)pf_inet socket介面,主要用於向kernel傳送ioctl命令,控制並獲取相應資訊。
(2) pf_netlink socket介面,主要用於接收kernel傳送上來的event 事件。
(3) pf_packet socket介面,主要用於向driver傳遞802.1x報文
3,5 wpa_supplicant 和kernel 的互動
wpa_supplicant與kernel互動的操作,一般需要先明確驅動介面,以及使用者態和kernel態的介面方法,以此來進行呼叫操作這裡分為4個步驟。
1.首先需要明確指定的驅動介面。因為有較多的驅動介面可以使用,如wext、nl80211等。指定了之後,才能呼叫相應介面的方法。
2.儲存驅動介面
3.介面方法的實現(分為使用者態和kernel態)。
系統已經定義了,我們只需找到定義的地方,了解有哪些方法。
4.互動
(a)使用者態向kernel態傳送請求(通過ioctl)
(b)kernel態向使用者態傳送事件通知(通過netlink)
wifi探針基本概念
1 wifi探針技術 wifi 探針技術是指基於wifi探測技術來識別ap 無線訪問接入點 附近已開啟 wifi 的智慧型手機或者wifi終端 筆記本,平板電腦等 無需使用者接入wifi,wifi探針就能夠識別使用者的資訊。有以下幾個特點 1 使用者無需參與,只要wifi開啟,就可被探測到,無需連線...
wifi的基本概念
一.802.11 a b g n協議概念和區別 首先802.11 是一種無線區域網標準。802.11 a b g n ac 都是由802.11 發展而來的。不同的字尾代表著不同的物理層標準工作頻段和不同的傳輸速率,也就是說它們的物理層和傳輸速度不同。協議 頻率 訊號 最大傳輸速率 802.11 2....
WiFi基本引數
分享幾個wifi的幾個核心引數 beacon interval 間隔調高有助於無線網路效能 client 端省電,間隔調低可以加快wireless client 鏈結上去速度 beacon傳送頻繁frame會比較占用無線頻寬資源 beacon 單位通常以微秒 millsecond 為單位 1 100...