1、wifi 組建原理: java
WIFI就是一種無線聯網的技術,之前經過網線鏈接電腦,而如今則是經過無線電波來連網;常見的就是一個無線路由器,那麼在這個無線路由器的電波覆蓋的有效範圍均可以採用WIFI鏈接方式進行聯網,若是無線路由器鏈接了一條ADSL線路或者別的上網線路,則又被稱爲「熱點」。 android
通常架設無線網絡的基本配備就是 無線網卡 及 一個AP(無線接入點)。有了AP,就像通常有線網絡的Hub通常,無線工做站能夠快速且輕易地與網絡相連。特別是對於寬帶的使用,WiFi更顯優點,有線寬帶網絡(ADSL、小區LAN等)到戶後,鏈接到一個AP,而後在電腦中安裝一塊無線網卡便可上網。普通的家庭有一個AP已經足夠,甚至用戶的鄰里獲得受權後,則無需增長端口,也能以共享的方式上網。 網絡
2、=================== android WIFI 框架 ======================= app
--------------------------------------------------------------------------------------------------- 框架
3、 Android平臺Wifi 編譯前 基本代碼 路徑 及 文件名(根文件系統的源碼下) less
一、Wifi setting 部分(Java應用層)位於packages/apps/Settings/src/com/android/settings/wifi/ socket
WifiSettings.java&WifiEnabler.java spa
二、JAVA Framework部分
位於frameworks/base/services/java/com/android/server/ server
WifiService.java &WifiWatchdogService.java
位於frameworks/base/wifi/java/android/net/wifi/ 進程
WifiManager.java&WifiMonitoer.java&WifiStateTracker.java &WifiNative.java
3. Wifi的JNI部分位於 frameworks/base/core/jni/android_net_wifi_Wifi.cpp
4. Wifi的HAL層代碼(wpa_supplicant適配器層)
位於 hardware/libhardware_legary/wifi/wifi.c
5. Wpa_supplicant程序的 源碼部分(tools)
位於 external/wpa_supplicant_6/
external/wpa_supplicant/
生成庫libwpa_client.so 和 守護進程wpa_supplicant
6.kernel (wifi 驅動*.ko)
位於 net/wireless drivers/wlan_sd8688 arch/arm/mach-pxa/wlan_pm.c
4、每一層 編譯後 的所在位置
Java應用層
-- Settings, Wifi Switcher等應用
--> /system/app/
Java Framework層
-->
/system/framework/services.jar
JNI層
--> /system/framework/framework.jar
wpa_supplicant 適配器層
--> /system/lib/libhardware_legacy.so
wpa_supplicant 程序
--> /system/bin/wpa_supplicant
/system/lib/libwpa_client.so
Kernel層
-- kernel network drivers
===================== android WIFI 框架 end ====================================
Wifi 網卡狀態
1. WIFI_STATE_DISABLED: WIFI網卡不可用
2. WIFI_STATE_DISABLING: WIFI正在關閉
3. WIFI_STATE_ENABLED:WIFI網卡可用
4. WIFI_STATE_ENABLING:WIFI網卡正在打開
5. WIFI_STATE_UNKNOWN:未知網卡狀態
Rootfs中 關於wpa_supplicant的配置
1) /device/amlogic/f08refe1/BoardConfig.mk //wpa_supplicant版本,driver
WPA_SUPPLICANT_VERSION := VER_0_6_X
BOARD_WPA_SUPPLICANT_DRIVER := WEXT
2) root/init.rc //wpa_supplicant service
setprop wifi.interface wlan0
service wpa_supplicant /system/bin/wpa_supplicant -Dwext -iwlan0 -d -c /data/misc/wifi/wpa_supplicant.conf
socket wpa_wlan0 dgram 0666 wifi wifi
3) /system/etc/wifi/wpa_supplicant.conf//config for wpa_supplicant service
update_config=1
ctrl_interface=wlan0
eapol_version=1
ap_scan=1
fast_reauth=1
---------------------