高通wifi android 层移植(bcm4329)
定义好内核模块的位置(包括内核模块、固件、NVRAM、以及其它的内核模块,比如说SDIO的驱动或是USB驱动(如果是USB网卡的话))
hardware/libhardware_legacy/wifi/wifi.c要用到。
Wifi.c里面的一些宏可以在BoardConfig.mk里面去配置。
BOARD_WPA_SUPPLICANT_DRIVER := WEXT
WIFI_DRIVER_MODULE_PATH := /system/etc/dhd.ko
WIFI_DRIVER_MODULE_NAME := dhd
WPA_SUPPLICANT_VERSION := VER_0_6_X
进入到:system/core/rootdir/etc/init.qcom.rc
主要是加入如下二个服务:
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会通过这二个接口和守护进程通信。