android kk平台的扫描机制:
在亮屏的情况下,application processor is up:
(1) 不在wifi settings界面,没有saved ap,扫描时间间隔为15秒,这个可以通过wpa_supplicant的log反映出来。
6689:01-01 00:20:56.870 I/wpa_supplicant( 2351): wlan0: CTRL-EVENT-SCAN-STARTED
6763:01-01 00:21:09.924 I/wpa_supplicant( 2351): wlan0: CTRL-EVENT-SCAN-STARTED
6800:01-01 00:21:24.952 I/wpa_supplicant( 2351): wlan0: CTRL-EVENT-SCAN-STARTED
6841:01-01 00:21:39.975 I/wpa_supplicant( 2351): wlan0: CTRL-EVENT-SCAN-STARTED
6870:01-01 00:21:55.000 I/wpa_supplicant( 2351): wlan0: CTRL-EVENT-SCAN-STARTED
6898:01-01 00:22:10.022 I/wpa_supplicant( 2351): wlan0: CTRL-EVENT-SCAN-STARTED
如果在灭屏的情况下连接USB,application processor没有睡下去,扫描时间也为15秒。
这个扫描时间间隔值可以在frameworks/base/core/res/res/values/config.xml文件中修改。
15000
(2) 在wifi settings界面,没有saved ap,扫描时间间隔为10秒。
实际抓取的log显示扫描时间间隔为5 5 10 10的循环。
16475:01-01 16:06:29.048 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
16574:01-01 16:06:34.027 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
16669:01-01 16:06:39.057 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
16767:01-01 16:06:49.039 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
16858:01-01 16:06:59.065 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
16945:01-01 16:07:04.043 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
17046:01-01 16:07:09.070 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
17143:01-01 16:07:19.052 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
17243:01-01 16:07:29.078 I/wpa_supplicant( 1199): wlan0: CTRL-EVENT-SCAN-STARTED
每扫描一次,wifi settings界面就会闪烁一次,据观察这个不准。
这个扫描时间间隔值可以在/packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java中修改。
// Combo scans can take 5-6s to complete - set to 10s.
private static final int WIFI_RESCAN_INTERVAL_MS = 10 * 1000;
在灭屏的情况下,application processor is sleeped:
(3) 如果有saved ap,会开启PNO扫描。
标准的PNO扫描机制为10秒时间间隔扫描6次,
20秒扫描间隔扫描6次,
40秒时间间隔扫描6次,
80秒时间间隔扫描6次,
160秒时间间隔扫描6次,
以后将以320秒时间间隔进行扫描。
有saved ap时会向ap发送probe request帧,这个时间间隔可以通过sniffer log可以看到。但上面2中情况没有saved ap,通过sniffer log时无法观察到扫描间隔的。
高通给出了一种修改机制可以将PNO扫描时间间隔固定为60秒。
在WCNSS_qcom_cfg.ini中添加configPNOScanTimerRepeatValue=0
在 wpa_supplicant.conf中添加sched_scan_interval=60
(4)如果有使能了auto join机制且有saved ap,无论亮屏还是暗屏,auto join也会有扫描,扫描的时间间隔为10秒。
在L平台上由于有各种扫描机制,扫描机制比较复杂,也许可以解释5 5 10 10的扫描时间间隔。