高通wifi android 層移植(bcm4329)java
定義好內核模塊的位置(包括內核模塊、固件、NVRAM、以及其它的內核模塊,好比說SDIO的驅動或是USB驅動(若是是USB網卡的話))android
hardware/libhardware_legacy/wifi/wifi.c要用到。網絡
Wifi.c裏面的一些宏能夠在BoardConfig.mk裏面去配置。app
BOARD_WPA_SUPPLICANT_DRIVER := WEXTdom
WIFI_DRIVER_MODULE_PATH := /system/etc/dhd.kosocket
WIFI_DRIVER_MODULE_NAME := dhdpost
WPA_SUPPLICANT_VERSION := VER_0_6_X 網站
進入到:system/core/rootdir/etc/init.qcom.rcspa
主要是加入以下二個服務:.net
service wpa_supplicant /system/bin/logwrapper /system/bin/wpa_supplicant
-Dwext
-iwlan0
-c/data/misc/wifi/wpa_supplicant.conf
-dd
user wifi system
group system
# socket wpa_wlan0 dgram 660 wifi wifi
disabled
oneshot
-i<ifname> : 網絡接口名稱
-c<conf>:配置文件名稱
-C<ctrl_intf>:控制接口名稱
-D<driver>:驅動類型
-p<driver_param>:驅動參數
-b<br_ifname>:橋接口名稱
http://blog.csdn.net/wyl123/article/details/4692617
上面網站有介紹
具體介紹wpa_supplicant 和wpa_cli的用法:
http://blog.163.com/wxiongn@126/blog/static/11788203820102262748358/
add_network
1
> set_network 2 ssid "gionee(znsj)"
FAIL
> set_network 1
<2>CTRL-EVENT-SCAN-RESULTS
ssid "gionee(znsj)"
OK
> et_network 1 psk "1234567890"
Unknown command 'et_network'
> set_network 1 psk "1234567890
<2>CTRL-EVENT-SCAN-RESULTS
"
OK
> enable_network 1
OK
service dhcpcd_wlan0 /system/bin/dhcpcd -BKL -d wlan0 -o domain_name_servers
disabled
oneshot
system/core/rootdir/裏面的Android.mk有複製的功能能夠:
# files that live under /system/etc/...
copy_from := \
etc/dbus.conf \
etc/hosts \
etc/init.qcom.post_boot.sh \
etc/init.qcom.bt.sh \
etc/init.qcom.coex.sh \
etc/init.qcom.fm.sh \
etc/init.qcom.sdio.sh \
etc/dhd.ko \
etc/fw_bcm4329.bin \
etc/nvram.txt \
etc/init.qcom.wifi.sh
意思是把system/core/rootdir/etc/裏的文件copy到SYSTEM文件系統的/system/etc/目錄下去。
進入:frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java目錄裏:
mInterfaceName = SystemProperties.get("wifi.interface", "wlan0");
sDnsPropNames = new String[] {
"dhcp." + mInterfaceName + ".dns1",
"dhcp." + mInterfaceName + ".dns2"
};
執行過程:
當wpa_supplicant起來之後:
守護進程會產生一個/data/misc/wifi/wpa_supplicant/wlan0接口
根據wpa_cupplicant.conf得來:
ctrl_interface=DIR=/data/misc/wifi/wpa_supplicant GROUP=wifi
同時在/data/misc/wifi/下建立一個socketies目錄,下面會有二個sockets
一個是控制接口,一個是監控接口(這個接口用於監測從wpa_supplicant發出的event事件。)。
Wifi.c會經過這二個接口和守護進程通訊。