本文为读书笔记,整理自网络文献和源码
4 HAL层分析
Hardware/libhardware_legacy/wifi/wifi.c
这个文件主要是实现驱动的加载和卸载,wpa_supplicant的开启和关闭
4.1 驱动的加载卸载:
wifi_load_driver():驱动的加载。wifi驱动是编译成ko文件, ko文件储存的位置#defineWIFI_DRIVER_MODULE_PATH "/system/lib/modules/bcmdhd.ko" 。
这个方法会被上层调用加载驱动。
卸载方法 wpa_unload_driver()
4.2 Wpa_supplicant相关( 这也是wpa_supplicant的上行接口):
wifi_start_supplicant():上层要开启wpa_supplicant,直接调用的是这个方法,这个方法实际上是调用wifi_start_supplicant_common(const char *config_file)
wifi_start_supplicant_common(const char*config_file):这个方法实际上为wifi.c进程与wpa_supplicant进程相连做一些准备工作。
wifi_connect_to_supplicant():wifi.c进程与wpa_supplicant进程进行通信,他们之间采用socket的方式来实现进程间通信。wifi_connect_to_supplicant()方法两次调用的是wpa_ctrl.c里面的wpa_ctrl_open(constchar *ctrl_path)方法来实现,一个为ctrl interface,用于发送命令,获取信息。将另外一个接口作为参数,调用wpa_