接口创建
wifi_chip.cpp 中 handleChipConfiguration 接口调用了 legacy_hal 的 start 接口进行 legacy_hal 的启动操作
被 configureChipInternal 调用,回溯而被 configureChip 调用,进而是被 Framework 层 HalDeviceManager.java 中的 executeChipReconfiguration 调用进行每个 chip 的配置操作;
同样回溯而被 HalDeviceManager 的 createIfaceIfPossible 调用;调用者为同类的 createIface,而更上一层为 createStaIface,针对其他 Mode 会有其他的创建接口被调用(createNanIface, createP2pIface 和 createApIface);
createStaIface 被 WifiVendorHal.java 中的 createStaIface 调用,进而回溯到 WifiNative.java 中的 createStaIface 接口,继而进入了 setupInterfaceForClientInScanMode 或者 setupInterfaceForClientInConnectivityMode 中
HAL 初始化
而实际的 HAL 的启动和初始化在 setupInterfaceForClientInScanMode 或 setupInterfaceForClientInConnectivityMode 中的 startHal 和 startSupplicant 中完成
WifiNative 的 startHal 调用了 WifiVendorHal 的 startVendorHal 进而调用 HalDeviceManager 的 start 接口,其内部的 startWifi 被调用进行初始化;
在 startWifi 中先通过 initIWifiIfNecessary 获取到 HIDL 中的 Wifi 服务对象,再通过其 start 接口进行启动操作,在 wifi.cpp 中 start 调用了 startInternal 进行了初始化,其中包括通过 mode_controller 的 initialize 接口进行 driver 的加载,和通过 legacy_hal 进行 HAL 操作的接口的初始化,从 vendor 的 lib 中将对应的操作赋值到结构指针上。
Chip 初始化