wpa_supplicant 启动流程(AIDL)

wpa_supplicant AIDL service的启动流程,这里直接从startSupplicant开始
wpa_supplicant启动
中间没什么好说的,在getSupplicantMockable中会调用ServiceManager.waitForDeclaredService(HAL_INSTANCE_NAME)),它会启动AIDL service并返回IBinder对象

    packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaIfaceHalAidlImpl.java
    
    protected ISupplicant getSupplicantMockable() {
        synchronized (mLock) {
            try {
                if (SdkLevel.isAtLeastT()) {
                    return ISupplicant.Stub.asInterface(
                            ServiceManager.waitForDeclaredService(HAL_INSTANCE_NAME));
                } else {
                    return null;
                }
            } catch (Exception e) {
                Log.e(TAG, "Unable to get ISupplicant service, " + e);
                return null;
            }
        }
    }

wpa_supplicant AIDL service的注册是在 aidl_manager.cpp中的registerAidlService中完成的。
wpa_supplicant service 注册

int AidlManager::registerAidlService(struct wpa_global *global)
{
	// Create the main aidl service object and register it.
	wpa_printf(MSG_INFO, "Starting AIDL supplicant");
	wpa_printf(MSG_INFO, "Interface version: %d", Supplicant::version);
	supplicant_object_ = ndk::SharedRefBase::make<Supplicant>(global);
	wpa_global_ = global;
	std::string instance = std::string() + Supplicant::descriptor + "/default";
	if (AServiceManager_addService(supplicant_object_->asBinder().get(),//在这里进行注册
			instance.c_str()) != STATUS_OK)
	{
		return 1;
	}

	// Initialize the death notifier.
	death_notifier_ = AIBinder_DeathRecipient_new(onDeath);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值