Wi-Fi WPA_Supplicant
service wpa_supplicant /system/bin/wpa_supplicant \
    -iwlan0 -Dnl80211 -c/data/misc/wifi/wpa_supplicant.conf \
    -I/system/etc/wifi/wpa_supplicant_overlay.conf \
    -O/data/misc/wifi/sockets -dd \
    -e/data/misc/wifi/entropy.bin -g@android:wpa_wlan0
    #   we will start as root and wpa_supplicant will switch to user wifi
    #   after setting up the capabilities required for WEXT
    #   user wifi
    #   group wifi inet keystore
    class main
    socket wpa_wlan0 dgram 660 wifi wifi
    disabled
    oneshot
    options:
      -b = optional bridge interface name
      -B = run daemon in the background
      -c = Configuration file
      -C = ctrl_interface parameter (only used if -c is not)
      -i = interface name
      -I = additional configuration file
      -d = increase debugging verbosity (-dd even more)
      -D = driver name (can be multiple drivers: nl80211,wext)
      -e = entropy file
      -g = global ctrl_interface
      -G = global ctrl_interface group
      -K = include keys (passwords, etc.) in debug output
      -t = include timestamp in debug messages
      -h = show this help text
      -L = show license (BSD)
      -o = override driver parameter for new interfaces
      -O = override ctrl_interface parameter for new interfaces
      -p = driver parameters
      -P = PID file
      -q = decrease debugging verbosity (-qq even less)
      -v = show version
      -W = wait for a control interface monitor before starting
      -m = Configuration file for the P2P Device interface
      -N = start describing new interface
    example:
      wpa_supplicant -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf
所有来自客户端的命令都由wpa_supplicant_ctrl_iface_receive函数处理
insmod /system/lib/modules/wlan.ko
wpa_supplicant -Dnl80211 -iwlan0 -c/data/misc/wifi/wpa_supplicant.conf -I/system/etc/wifi/wpa_supplicant_overlay.conf -O/data/misc/wifi/sockets -dd -e/data/misc/wifi/entropy.bin
与wpa_supplicant通信的socket,在/data/misc/wifi/wpa_supplicant.conf配置文件的ctrl_interface指定(/data/misc/wifi/sockets)
wpa_cli -p/data/misc/wifi/sockets -i wlan0
driver SETBAND 0//不生效
wpa_driver_nl80211_get_scan_results
src/drivers/driver.h struct wpa_driver_scan_params
// call wifi native to start the scan
        if (startScanNative(type, freqs)) {//传递了freqs频段
            …
        }
wpa_s->manual_scan_freqs//指定手动设置的频段
//触发驱动扫描1
2wpa_supplicant_trigger_scan
radio_add_work
| 1 | WCNSS_qcom_cfg.ini | 
WifiManager提供了扫描的参数的自定义接口,比如在ScanSettings添加一个freqMHz为5500的WifiChannel来过滤扫描结果
| 1 | WifiManager.setFrequencyBand | 
android.config//wpa_supplicant宏控制开关,如EAP协议等