[RK3288][Android6.0] WiFi之wpa_supplicant的socket(服务端)
2017-06-29 15:01
399 查看
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
研究了Framework客户端如何打开连接上wpa_supplicant(WPAS)后,再来看看WPAS如何打开了与Framework通信的socket.
external/wpa_supplicant_8/wpa_supplicant/main.c
wpa_supplicant.c
ctrl_iface_unix.c
参考:
android使用socket使底层和framework通信
网络编程学习笔记一:Socket编程
Android get control socket
Android localsocket 的基础和使用实践: 01
OS: Android 6.0
Kernel: 3.10.92
研究了Framework客户端如何打开连接上wpa_supplicant(WPAS)后,再来看看WPAS如何打开了与Framework通信的socket.
external/wpa_supplicant_8/wpa_supplicant/main.c
int main(int argc, char *argv[]) { //'g'正是对应init.connectivity.rc参数中的-g@android:wpa_wlan0 //ctrl_interface的值就是“@android:wpa_wlan0了” case 'g': params.ctrl_interface = optarg; //参数被传进去初始化 global = wpa_supplicant_init(¶ms); }
wpa_supplicant.c
struct wpa_global * wpa_supplicant_init(struct wpa_params *params) { //放到global中 if (params->ctrl_interface) global->params.ctrl_interface = os_strdup(params->ctrl_interface); //继续传进去处理 global->ctrl_iface = wpa_supplicant_global_ctrl_iface_init(global); }
ctrl_iface_unix.c
wpa_supplicant_global_ctrl_iface_init(struct wpa_global *global) { if (wpas_global_ctrl_iface_open_sock(global, priv) < 0) { os_free(priv); return NULL; } //对应的发送给framework的回调函数 wpa_msg_register_cb(wpa_supplicant_ctrl_iface_msg_cb); }
static int wpas_global_ctrl_iface_open_sock(struct wpa_global *global, struct ctrl_iface_global_priv *priv) { if (os_strncmp(ctrl, "@android:", 9) == 0) { //ctrl+9之后的值正是wpa_wlan0,和init.connectivity.rc中的socket name一致。 //获取服务端对应的socket,创建是在解析rc文件的时候已经完成了。 priv->sock = android_get_control_socket(ctrl + 9); goto havesock; } //注册回调函数wpa_supplicant_global_ctrl_iface_receive(),如果client有发命令过来,此函数就会被调用。 eloop_register_read_sock(priv->sock, wpa_supplicant_global_ctrl_iface_receive, global, priv); }
参考:
android使用socket使底层和framework通信
网络编程学习笔记一:Socket编程
Android get control socket
Android localsocket 的基础和使用实践: 01
相关文章推荐
- [RK3288][Android6.0] WiFi之wpa_supplicant与内核通信的socket
- rk3288 android6.0 wifi子系统 - wpa_supplicant简要介绍
- [RK3288][Android6.0] WiFi的配置文件wpa_supplicant.conf
- [RK3288][Android6.0] WiFi之wpa_supplicant服务启动
- [RK3288][Android6.0] WiFi之wpa_supplicant初始化过程
- [RK3288][Android6.0] WiFi之通过wpa_cli分析WPAS的连接过程
- [RK3288][Android6.0] WiFi之Framework的socket(客户端)
- [RK3288][Android6.0] WiFi之wpa_supplicant扫描过程
- [RK3288][Android6.0] USB WiFi驱动流程小结
- [RK3288][Android6.0] Wifi相关文件及类整理
- [RK3288][Android6.0] WiFi之Framework连接过程小结
- CSDN博主KrisFei基于【RK3288】【Android6.0】平台的WiFi相关经验知识
- [RK3288][Android6.0] WiFi之mac80211知识点小结
- [RK3288][Android6.0] WiFi之Autojoin对无线网络的选择机制
- [RK3288][Android6.0] WiFi之无线网络配置的保存过程
- [RK3288][Android6.0] WiFi之priority计算及使用
- [RK3288][Android6.0] WIFI接入过程的加密和认证方式小结
- [RK3288][Android6.0] WiFi的wifi_bt_common.mk文件说明
- [RK3288][Android6.0] WiFi之NetworkMonitor对评分机制的影响
- [RK3288][Android6.0] WiFi之Framework扫描过程