[RK3288][Android6.0] WiFi的wifi_bt_common.mk文件说明

来源:互联网 发布:mpp数据库开源 编辑:程序博客网 时间:2024/06/04 17:47

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

发现这个文件里面的定义对代码流程研究有影响,所以做一个说明。

wifi_bt_common.mk:

ifneq ($(strip $(TARGET_BOARD_PLATFORM)), sofia3gr)BOARD_CONNECTIVITY_VENDOR := BroadcomBOARD_CONNECTIVITY_MODULE := ap6xxxendififeq ($(strip $(BOARD_CONNECTIVITY_VENDOR)), Broadcom)BOARD_WPA_SUPPLICANT_DRIVER := NL80211WPA_SUPPLICANT_VERSION      := VER_0_8_XBOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhdBOARD_HOSTAPD_DRIVER        := NL80211BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_bcmdhdBOARD_WLAN_DEVICE           := bcmdhdWIFI_DRIVER_FW_PATH_PARAM   := "/sys/module/bcmdhd/parameters/firmware_path"WIFI_DRIVER_FW_PATH_STA     := "/system/etc/firmware/fw_bcm4329.bin"WIFI_DRIVER_FW_PATH_P2P     := "/system/etc/firmware/fw_bcm4329_p2p.bin"WIFI_DRIVER_FW_PATH_AP      := "/system/etc/firmware/fw_bcm4329_apsta.bin"endif

  • BOARD_CONNECTIVITY_VENDOR := Broadcom

控制是否copy文件init.connectivity.rc
device/rockchip/common/device.mk

ifeq ($(filter MediaTek_mt7601 MediaTek RealTek Espressif, $(strip $(BOARD_CONNECTIVITY_VENDOR))), )PRODUCT_COPY_FILES += \    $(LOCAL_PATH)/init.connectivity.rc:root/init.connectivity.rcendif

另外,使用它来控制使用哪个wifi.c文件,可以看到realtek有它自己的实现。
hardware/libhardware_legacy/wifi/Android.mk

ifeq ($(strip $(BOARD_CONNECTIVITY_VENDOR)), RealTek)    LOCAL_SRC_FILES += ../realtek/wlan/libhardware_legacy/wifi/wifi_realtek.celse    LOCAL_SRC_FILES += wifi/wifi.cendif
  • BOARD_CONNECTIVITY_MODULE := ap6xxx

和BT以及NFC有关,这里不关注。

  • WPA_SUPPLICANT_VERSION := VER_0_8_X

只有两个选择,VER_0_8_X和VER_2_1_DEVEL
external/wpa_supplicant_8/Android.mk

ifneq ($(filter VER_0_8_X VER_2_1_DEVEL,$(WPA_SUPPLICANT_VERSION)),)include $(LOCAL_PATH)/hostapd/Android.mk \        $(LOCAL_PATH)/wpa_supplicant/Android.mkendif

另外也控制使用哪个wpa接口,当wpa_supplicant存在的时候,libhardware_legacy下的接口例如wpa_ctrl_open()会被覆盖掉,
比如在开启wifi的时候会去connect supplicant,这时候会调用wpa_supplicant的wpa_ctrl_open().
hardware/libhardware_legacy/wifi/Android.mk

ifdef WPA_SUPPLICANT_VERSIONLOCAL_CFLAGS += -DLIBWPA_CLIENT_EXISTSLOCAL_SHARED_LIBRARIES += libwpa_clientendif
  • BOARD_WPA_SUPPLICANT_DRIVER := NL80211
  • BOARD_HOSTAPD_DRIVER := NL80211

用于控制是否对NL80211驱动的支持,wifi_bt_common.mk会覆盖external/wpa_supplicant_8/android.cfg里的配置。
external/wpa_supplicant_8/wpa_supplicant/Android.mk

ifneq ($(BOARD_WPA_SUPPLICANT_DRIVER),)  CONFIG_DRIVER_$(BOARD_WPA_SUPPLICANT_DRIVER) := yendif
  • BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_bcmdhd

  • BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_bcmdhd

用于控制使用的静态库
external/wpa_supplicant_8/wpa_supplicant/Android.mk

ifneq ($(BOARD_WPA_SUPPLICANT_PRIVATE_LIB),)LOCAL_STATIC_LIBRARIES += $(BOARD_WPA_SUPPLICANT_PRIVATE_LIB)endif
  • BOARD_WLAN_DEVICE := bcmdhd

这个宏在前面的文章已经提到了,是用来控制WiFi使用哪个Vendor的HAL,参考WiFi的HAL层加载问题

  • WIFI_DRIVER_FW_PATH_PARAM := “/sys/module/bcmdhd/parameters/firmware_path”
  • WIFI_DRIVER_FW_PATH_STA := “/system/etc/firmware/fw_bcm4329.bin”
  • WIFI_DRIVER_FW_PATH_P2P := “/system/etc/firmware/fw_bcm4329_p2p.bin”
  • WIFI_DRIVER_FW_PATH_AP := “/system/etc/firmware/fw_bcm4329_apsta.bin”

这几个参数是没使用了,因为开机的时候kernel driver已经默认加载了firware以及nvram文件,对应的文件在
external/wlan_loader/firmware下

阅读全文
1 0
原创粉丝点击