wifi.c中函数分析: :::int wifi_connect_to_supplicant()
2011-11-16 11:19
555 查看
/* Make sure supplicant is running */
查看属性,保存在supp_status
判断是否运行:否返回-1
if (!property_get(SUPP_PROP_NAME, supp_status, NULL)
|| strcmp(supp_status, "running") != 0) {
LOGE("Supplicant not running, cannot connect");
return -1;
}
获得属性:wifi.interface值,保存在iface中
在该环境中:iface=wlan0
property_get("wifi.interface", iface, WIFI_TEST_INTERFACE);
判断文件IFACE_DIR = "/data/system/wpa_supplicant";是否存在,
存在:ifname="/data/system/wpa_supplicant/wlan0";
不存在:ifname=wlan0
if (access(IFACE_DIR, F_OK) == 0) {
snprintf(ifname, sizeof(ifname), "%s/%s", IFACE_DIR, iface);
} else {
strlcpy(ifname, iface, sizeof(ifname));
}
创建两个socket,并链接由ifname,生成的des.sun_path
ctrl_conn = wpa_ctrl_open(ifname);
monitor_conn = wpa_ctrl_open(ifname);
测试链接是否成功:
if (wpa_ctrl_attach(monitor_conn) != 0) {
wpa_ctrl_close(monitor_conn);
wpa_ctrl_close(ctrl_conn);
ctrl_conn = monitor_conn = NULL;
return -1;
}
return 0;
wpa_ctrl_open()
wpa_ctrl * wpa_ctrl_open(const char *ctrl_path)
在wifi.c中:传入参数
ctrl_path=ifname="/data/system/wpa_supplicant/wlan0";
也就是wpa_supplicant的soket。
如果定义android
则生成自己的soket文件路径组合如下:
%s/%s%d-%d", local_socket_dir, local_socket_prefix, getpid(), counter++);
其中:local_socket_dir= "/data/misc/wifi/sockets";
local_socket_prefix = "wpa_ctrl_";
在wpa_ctrl.c中定义。
生成后绑定本地soket文件,修改权限及所属组。
查看属性,保存在supp_status
判断是否运行:否返回-1
if (!property_get(SUPP_PROP_NAME, supp_status, NULL)
|| strcmp(supp_status, "running") != 0) {
LOGE("Supplicant not running, cannot connect");
return -1;
}
获得属性:wifi.interface值,保存在iface中
在该环境中:iface=wlan0
property_get("wifi.interface", iface, WIFI_TEST_INTERFACE);
判断文件IFACE_DIR = "/data/system/wpa_supplicant";是否存在,
存在:ifname="/data/system/wpa_supplicant/wlan0";
不存在:ifname=wlan0
if (access(IFACE_DIR, F_OK) == 0) {
snprintf(ifname, sizeof(ifname), "%s/%s", IFACE_DIR, iface);
} else {
strlcpy(ifname, iface, sizeof(ifname));
}
创建两个socket,并链接由ifname,生成的des.sun_path
ctrl_conn = wpa_ctrl_open(ifname);
monitor_conn = wpa_ctrl_open(ifname);
测试链接是否成功:
if (wpa_ctrl_attach(monitor_conn) != 0) {
wpa_ctrl_close(monitor_conn);
wpa_ctrl_close(ctrl_conn);
ctrl_conn = monitor_conn = NULL;
return -1;
}
return 0;
wpa_ctrl_open()
wpa_ctrl * wpa_ctrl_open(const char *ctrl_path)
在wifi.c中:传入参数
ctrl_path=ifname="/data/system/wpa_supplicant/wlan0";
也就是wpa_supplicant的soket。
如果定义android
则生成自己的soket文件路径组合如下:
%s/%s%d-%d", local_socket_dir, local_socket_prefix, getpid(), counter++);
其中:local_socket_dir= "/data/misc/wifi/sockets";
local_socket_prefix = "wpa_ctrl_";
在wpa_ctrl.c中定义。
生成后绑定本地soket文件,修改权限及所属组。
相关文章推荐
- wifi.c中函数分析: ::::int wifi_start_supplicant()
- hostapd wpa_supplicant madwifi详细分析(三)——hostapd_global_init()函数
- copy_to_user和copy_from_user两个函数的分析
- copy from user函数 和copy to user 函数分析
- hostapd wpa_supplicant madwifi详细分析(七)——hostapd整体梳理
- C++ How to program 9E<10.9 hugeInt Class 函数运算符重载>
- Oracle Data Guard PING[ARC2] 4000 : Heartbeat failed to connect to standby ''. Error is 12514 故障分析
- Linux-0.11内核源码分析系列:内存管理try_to_share()与share_page()函数分析
- hostapd wpa_supplicant madwifi详细分析(十二)——EAP(RFC3748)及EAP状态机分析(RFC4137)
- copy_to_user和copy_from_user两个函数的分析
- copy_to_user和copy_from_user两个函数的分析
- 20090901_ 分析函数ratio_to_report的使用
- Linux 2.6的switch_to函数的分析
- Related to Oracle 关于ORACLE中的分析函数与窗口函数
- ratio_to_report()分析函数
- hostapd wpa_supplicant madwifi详细分析(五)——hostapd_global_run函数
- Oracle分析函数总结(3)- 数值分布 - cume_dist,percent_rank,ntile,percentile_disc,percentile_cont,ratio_to_report
- PHP调用mysql_connect()函数报错:Call to undefined function mysql_connect()解决办法
- Linux网络编程之connect函数分析
- 实现一个函数stringToInt,实现把字符串转换成整数这个功能