wpa_supplicant_add_iface:
创建这个interface对应的wpa_supplicant,并且初始化这个wpa_supplicant的driver,然后放入全局的
global->ifaces中。
没有和驱动交互。
global->ifaces 存有系统所有的wpa_supplicant。
一个wpa_supplicant对应一个 interface 。
wpa_s->ifname 就是 iface->ifname 。
iface->driver在增加这个interface的时候被指定为nl80211。
constexpr char kIfaceDriverName[] = "nl80211";
对每一个interface ,构建对应的wpa_supplicant , 然后再存入全局的链表 global->ifaces 中(函数wpa_supplicant_add_iface) 。
wpa_s->driver 就是一个struct wpa_driver_ops 。
wpa_supplicant_set_driver 从全局的数组 wpa_drivers 找名字匹配的驱动
struct wpa_driver_ops定义了驱动需要实现的操作函数集。
global->ifaces:
使用在什么地方:
wpa_supplicant.c :
wpa_supplicant_remove_iface
wpa_supplicant_get_iface
wpa_supplicant_deinit
HIDL如何找对应的wpa_supplicant :
创建一个 interface 时,会创建对应的 StaIface(如果这个interface的类型不是p2p)
所以当 StaIface 收到java层的消息要发出去的时候,自然可以找到这个StaIface 对应的wpa_supplicant ,然后调用这个wpa_supplicant的driver的操作函数。
文章讲述了wpa_supplicant如何添加和管理接口,每个interface对应一个wpa_supplicant实例,driver初始化并存储在全局列表中。wpa_supplicant_set_driver根据名称找到相应的驱动操作集。在HIDL层,通过StaIface与Java层交互,确保能找到对应的wpa_supplicant来执行驱动操作。
661

被折叠的 条评论
为什么被折叠?



