Android WIFIスイープサイクルについて

1984 ワード

Wifi scan period:
1)現在のAndroid OSにWIFI接続が確立されていない場合は、コンパイル時に生成するbuildを使用する.Propの「wifi.supplicant_scan_interval」プロパティの値(秒単位)2)Android OSがアクティブなWIFI接続を確立している場合、スキャンサイクルは1)とは異なります.
3)Android OSがIDLE状態(early suspend)に入るとスキャンサイクルは10 minとなる.
同時に、上記の規則は以下の変更可能な要素によって一部変更されます.
a)vendorの一部は、システムのデフォルト属性を上書きします.たとえば、次のようにします.
254PRODUCT_PROPERTY_OVERRIDES += \
255	wifi.interface=wlan0 \
256	wifi.supplicant_scan_interval=15
257

b)Android 4.2.2、wpa_supplicant_6,wpa_supplicant_8のデフォルト値は5 sです.
1725static struct wpa_supplicant * wpa_supplicant_alloc(void)
1726{
1727	struct wpa_supplicant *wpa_s;
1728
1729	wpa_s = os_zalloc(sizeof(*wpa_s));
1730	if (wpa_s == NULL)
1731		return NULL;
1732	wpa_s->scan_req = 1;
1733#ifdef ANDROID
1734	wpa_s->scan_interval = 5;
1735#endif
1736	return wpa_s;
1737}

そしてwpa_supplicant_6, wpa_supplicant_8には、実行時設定(wpa_cli.c)というパラメータ(一般release版Android、rootなしでは設定できません)が同時に存在します.
4827			reply_len = -1;
4828	} else if (os_strncmp(buf, "SCAN_INTERVAL ", 14) == 0) {
4829		if (wpa_supplicant_ctrl_iface_scan_interval(wpa_s, buf + 14))
4830			reply_len = -1;
4831	} else if (os_strcmp(buf, "INTERFACE_LIST") == 0) {
4832		reply_len = wpa_supplicant_global_iface_list(
 
2960static int wpa_supplicant_ctrl_iface_scan_interval(
2961	struct wpa_supplicant *wpa_s, char *cmd)
2962{
2963	int scan_int = atoi(cmd);
2964	return wpa_supplicant_set_scan_interval(wpa_s, scan_int);
2965}
1997int wpa_supplicant_set_scan_interval(struct wpa_supplicant *wpa_s,
1998				     int scan_interval)
1999{
2000	if (scan_interval < 0) {
2001		wpa_msg(wpa_s, MSG_ERROR, "Invalid scan interval %d",
2002			scan_interval);
2003		return -1;
2004	}
2005	wpa_msg(wpa_s, MSG_DEBUG, "Setting scan interval: %d sec",
2006		scan_interval);
2007	wpa_s->scan_interval = scan_interval;
2008
2009	return 0;
2010}