在分析wpas(wpa_supplicant)与framework通信中,我们知道是通过socket进行通信,但是我们也可以发现,在hardware层中的wifi.c文件中,存在以下代码,其中wpa_ctrl_open(path)的实现是在wpas中的src/common/wpa_ctrl.c中实现,那么这个wpa_ctrl_open在wpa_supplicant这个bin文件中,是在另外的进程中,是怎样实现调用的呢?
int wifi_connect_on_socket_path(const char *path)
{
char supp_status[PROPERTY_VALUE_MAX] = {'\0'};
/* Make sure supplicant is running */
ALOGD("begin to connect on socet");
if (!property_get(supplicant_prop_name, supp_status, NULL)
|| strcmp(supp_status, "running") != 0) {
ALOGE("Supplicant not running, cannot connect");
return -1;
}
ctrl_conn = wpa_ctrl_open(path);
if (ctrl_conn == NULL) {
ALOGE("Unable to open connection to supplicant on \"%s\": %s",
path, strerror(errno));
return -1;
}
mon