android hostap start 流程

14 篇文章 1 订阅

based on android10

Android10版本(应该是从andorid9开始就是这样了)hostap start 关键是hostap.conf的生成。

每次打开hostap, 都会自动生成conf

code如下:

external/wpa_supplicant_8/hostapd/hidl/1.2/hostapd.cpp

531HostapdStatus Hostapd::addAccessPointInternal_1_2(
532    const IfaceParams& iface_params, const NetworkParams& nw_params)
533{
534	if (hostapd_get_iface(interfaces_, iface_params.V1_1.V1_0.ifaceName.c_str())) {
535		wpa_printf(
536		    MSG_ERROR, "Interface %s already present",
537		    iface_params.V1_1.V1_0.ifaceName.c_str());
538		return {HostapdStatusCode::FAILURE_IFACE_EXISTS, ""};
539	}
540	const auto conf_params = CreateHostapdConfig(iface_params, nw_params);
541	if (conf_params.empty()) {
542		wpa_printf(MSG_ERROR, "Failed to create config params");
543		return {HostapdStatusCode::FAILURE_ARGS_INVALID, ""};
544	}
545	const auto conf_file_path =
546	    WriteHostapdConfig(iface_params.V1_1.V1_0.ifaceName, conf_params);
547	if (conf_file_path.empty()) {
548		wpa_printf(MSG_ERROR, "Failed to write config file");
549		return {HostapdStatusCode::FAILURE_UNKNOWN, ""};
550	}
551	std::string add_iface_param_str = StringPrintf(
552	    "%s config=%s", iface_params.V1_1.V1_0.ifaceName.c_str(),
553	    conf_file_path.c_str());
554	std::vector<char> add_iface_param_vec(
555	    add_iface_param_str.begin(), add_iface_param_str.end() + 1);
556	if (hostapd_add_iface(interfaces_, add_iface_param_vec.data()) < 0) {
557		wpa_printf(
558		    MSG_ERROR, "Adding interface %s failed",
559		    add_iface_param_str.c_str());
560		return {HostapdStatusCode::FAILURE_UNKNOWN, ""};
561	}
562	struct hostapd_data* iface_hapd =
563	    hostapd_get_iface(interfaces_, iface_params.V1_1.V1_0.ifaceName.c_str());
564	WPA_ASSERT(iface_hapd != nullptr && iface_hapd->iface != nullptr);
565	// Register the setup complete callbacks
566	on_setup_complete_internal_callback =
567	    [this](struct hostapd_data* iface_hapd) {
568		    wpa_printf(
569			MSG_DEBUG, "AP interface setup completed - state %s",
570			hostapd_state_text(iface_hapd->iface->state));
571		    if (iface_hapd->iface->state == HAPD_IFACE_DISABLED) {
572			    // Invoke the failure callback on all registered
573			    // clients.
574			    for (const auto& callback : callbacks_) {
575				    callback->onFailure(
576					iface_hapd->conf->iface);
577			    }
578		    }
579	    };
580	iface_hapd->setup_complete_cb = onAsyncSetupCompleteCb;
581	iface_hapd->setup_complete_cb_ctx = iface_hapd;
582	if (hostapd_enable_iface(iface_hapd->iface) < 0) {
583		wpa_printf(
584		    MSG_ERROR, "Enabling interface %s failed",
585		    iface_params.V1_1.V1_0.ifaceName.c_str());
586		return {HostapdStatusCode::FAILURE_UNKNOWN, ""};
587	}
588	return {HostapdStatusCode::SUCCESS, ""};
589}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值