PIXNET Logo登入

尼爾's

跳到主文

單眼皮看世界

部落格全站分類:攝影寫真

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 12月 27 週二 201115:36
  • wifi 流程

1. WIFI JAVA layer:
1.1. 當android系統啟動WIFI 模組時,它將調用 Wifiserver 類的setWifiEnabledBlocking函數。
1.2. 在該函數中,如果是使能WIFI, 它將做四件事:
    a. load wifi driver.
    b. 啟動wpa_supplicant.
    c. 啟動 event loop.
    d. 更新wifi的狀態.
2. WIFI Native layer:
2.1. 當java層調用 loadDriver時, 它實際上是通過JNI來調用Native函數, JNI->android_net_wifi_loadDriver ->wifi_load_driver。
在wifi_load_driver函數中,它將首先通過system property -- wlan.driver.status 的狀態來判斷驅動是否已經載入。如果沒有載入,將會載入該驅動。
2.2. 當java層調用startSupplicant時,它實際上是通過JNI調用到wifi_start_supplicant函數,
在wifi_start_supplicant函數裏,首先確定wpa supplicant的配置檔存在,如果不存在,將默認配置檔拷貝到相應目錄下,下面是配置檔的默認路徑和工作路徑:
static const char SUPP_CONFIG_TEMPLATE[]= "/system/etc/wifi/wpa_supplicant.conf";
static const char SUPP_CONFIG_FILE[]    = "/data/misc/wifi/wpa_supplicant.conf";
然後,調用control_supplicant函數, 如果這時wpa_supplicant還沒有啟動, 將會啟動wpa_supplicant.
2.3. java層通過connectToSupplicant調用wifi_connect_to_supplicant函數,在該函數中,將通過wpa_ctrl_open函數分別創建兩個AF_UNIX位址族和資料報方式的socket,一個是ctrl_conn, 用於向wpa_supplicant發送命令並接收response, 另一個是monitor_conn, 它一直阻塞等待從wpa_supplicant過來的event。最後,通過monitor_conn向wpa_supplicant發送命令ATTACH,用於將自己的socket資訊註冊到wpa_supplicant, 由於socket是資料報方式的,這一步是必須的,對於存在於wpa_supplicant的伺服器端,它是所有用戶端共用的,由於它需要主動向monitor_conn用戶端發送事件,所以它必須先記錄下該用戶端的詳細資訊,wpa_supplicant就可以將EVENT發向該socket。
在完成上面這些操作後,java層會通過jni方式調用函數android_net_wifi_waitForEvent(應該是起一個線程,線上程裏調用),該函數會調用wifi_wait_for_event,在wifi_wait_for_event函數裏,會阻塞接收從wpa_supplicant模組傳來的事件,一旦wpa_supplicant模組有事件發,wifi_wait_for_event接收到後,會將包含事件的buf通過函數參數的方式回傳到java層,java收到事件後,再繼續調用wifi_wait_for_event函數進行阻塞等待接收,從而完成一個迴圈。
2.4. 以上的流程完成以後,WIFI java layer 調用的WIFI native api 就和wpa_supplicant進程就建立了聯繫,WIFI java layer就可以向wpa_supplicant發送命令和接收response, 並且wpa_supplicant也可以主動向WIFI java layer發送事件了。
(繼續閱讀...)
文章標籤

NeilChen0710 發表在 痞客邦 留言(0) 人氣(744)

  • 個人分類:安卓您老師
▲top
  • 12月 27 週二 201115:32
  • android WIFI 架構和控制流程

一、WIFI的基本架構
    1、wifi用戶空間的程式和庫:
         external/wpa_supplicant/
       生成庫libwpaclient.so和守護進程wpa_supplicant。
(繼續閱讀...)
文章標籤

NeilChen0710 發表在 痞客邦 留言(1) 人氣(15,930)

  • 個人分類:安卓您老師
▲top
  • 10月 14 週五 201114:49
  • Android.mk 文件寫法

(1)Android.mk檔首先需要指定LOCAL_PATH變數,用於查找原始檔案。由於一般情況下

    
  Android.mk和需要編譯的原始檔案在同一目錄下,所以定義成如下形式:
    
  LOCAL_PATH:=$(call my-dir)
    
  上面的語句的意思是將LOCAL_PATH變數定義成本檔所在目錄路徑。

       (2)Android.mk中可以定義多個編譯模組,每個編譯模組都是以include $(CLEAR_VARS)開始以include $(BUILD_XXX)結束。

    
   include $(CLEAR_VARS)
    
   CLEAR_VARS由編譯系統提供,指定讓GNU MAKEFILE為你清除除LOCAL_PATH以外的所有LOCAL_XXX變數,
    
   如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES,LOCAL_STATIC_LIBRARIES等。

    
   include $(BUILD_STATIC_LIBRARY)表示編譯成靜態庫
    
   include $(BUILD_SHARED_LIBRARY)表示編譯成動態庫。
    
   include $(BUILD_EXECUTABLE)表示編譯成可執行程式

    
   (3)舉例如下(frameworks/base/libs/audioflinger/Android.mk):

java代碼:
(繼續閱讀...)
文章標籤

NeilChen0710 發表在 痞客邦 留言(0) 人氣(8,635)

  • 個人分類:安卓您老師
▲top
  • 9月 26 週一 201114:45
  • init.rc 語法(轉)

Android 初始化語言(Android Init
Language
) 
Android初始化腳本語言包含四種類型的語句:
(繼續閱讀...)
文章標籤

NeilChen0710 發表在 痞客邦 留言(0) 人氣(3,119)

  • 個人分類:安卓您老師
▲top
  • 9月 21 週三 201115:18
  • Iperf 設定 (轉貼)


Iperf使用說明
Iperf 是一個 TCP/IP 和 UDP/IP 的性能測量工具,能夠提供網路吞吐率信息,以及震動、丟包率、最大段和最大傳輸單元大小等統計信息;從而能夠幫助我們測試網路性能,定位網路瓶頸。
參數說明

-s 以server模式啟動,eg:iperf -s
-c host以client模式啟動,host是server端地址,eg:iperf -c 222.35.11.23

通用參數

-f [k|m|K|M] 分別表示以Kbits, Mbits, KBytes, MBytes顯示報告,預設以Mbits為單位,eg:iperf -c 222.35.11.23 -f K
-i sec 以秒為單位顯示報告間隔,eg:iperf -c 222.35.11.23 -i 2
-l 緩衝區大小,預設是8KB,eg:iperf -c 222.35.11.23 -l 16
-m 顯示tcp最大mtu值
-o 將報告和錯誤信息輸出到檔案eg:iperf -c 222.35.11.23 -o c:\iperflog.txt
-p 指定服務器端使用的端口或客戶端所連接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999
-u 使用udp協議
-w 指定TCP窗口大小,預設是8KB
-B 綁定一個主機地址或通訊埠(當主機有多個地址或通訊埠時使用該參數)
-C 兼容舊版本(當server端和client端版本不一樣時使用)
-M 設定TCP資料封包的最大mtu值
-N 設定TCP不延時
-V 傳輸ipv6資料封包
(繼續閱讀...)
文章標籤

NeilChen0710 發表在 痞客邦 留言(0) 人氣(38,105)

  • 個人分類:安卓您老師
▲top
  • 9月 16 週五 201110:30
  • iwconfig 操作

iwconfig是Linux Wireless Extensions(LWE)的用戶層配置工具之一。LWE是Linux下對無線網路配置的工具,包括核心的支援、用戶層配置工具和驅動介面的支援三部分。目前很多無線網卡都支援LWE,而且主流的Linux發布版本,比如Redhat Linux、Ubuntu Linux都已經帶了這個配置工具。
(繼續閱讀...)
文章標籤

NeilChen0710 發表在 痞客邦 留言(0) 人氣(14,069)

  • 個人分類:安卓您老師
▲top
1

可樂錢來源

個人資訊

NeilChen0710
暱稱:
NeilChen0710
分類:
攝影寫真
好友:
累積中
地區:

熱門文章

  • (38,105)Iperf 設定 (轉貼)
  • (12,310)GARMIN 大掃除~~~轉貼自 GARMIN 官網
  • (204)Calvin Klein (K1U21107) 濃情密意之方方正正愛的男表

文章分類

  • 安卓您老師 (6)
  • 單反手札 (11)
  • 吃喝玩樂 (17)
  • 不分類 (12)
  • 幸福紀實 (11)
  • 未分類文章 (1)

襪子專家

愛護您的雙腳

最新留言

  • [18/07/09] 奢侈品精仿賣家 於文章「以色列國家公園MASADA、怎樣都沉不下...」留言:
    f1EV奢侈品仿牌原單品質良心賣家,誠信做生意,保固說到做到...
  • [12/08/16] David 於文章「android WIFI 架構和控制流程...」留言:
    Neil大大的資料好詳細很有幫助 給個讚!...
  • [11/07/28] 辰 於文章「Calvin Klein (K1U211...」留言:
    哇,好幸福ㄚ~ 很讚ㄛ.. 再次說聲生日快樂!!...
  • [11/07/17] 大海 於文章「隱身士林巷弄之軟糖咖啡館~~冰淇淋糖酥好...」留言:
    大師曾說過:你是在意我的演奏技巧;還是錄音品質? 我出發的本...
  • [11/07/17] 大海 於文章「隱身士林巷弄之軟糖咖啡館~~冰淇淋糖酥好...」留言:
    那你應該用L鏡更容易達到減肥效果!! 因為錢都花下去了,沒錢...
  • [11/07/17] 大海 於文章「隱身士林巷弄之軟糖咖啡館~~冰淇淋糖酥好...」留言:
    阿娘威!! 阿龍你都用定焦鏡...
  • [11/07/17] NeilChen0710 於文章「隱身士林巷弄之軟糖咖啡館~~冰淇淋糖酥好...」留言:
    簡易好攜帶的配備: Conon EF35mm F2 + 45...
  • [11/07/16] 大海 於文章「隱身士林巷弄之軟糖咖啡館~~冰淇淋糖酥好...」留言:
    你用啥鏡頭拍攝? ...
  • [11/05/25] 辰 於文章「王品集團之品田牧場...」留言:
    哇!好棒, 看你把食物拍的如此美味我好想去ㄛ..這間店都...
  • [11/05/23] Ryan媽咪 於文章「王品集團之品田牧場...」留言:
    這是聚餐是大家都有福氣!天時地利人和!成功圓滿唷!還有要感謝...

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣: