Wifi direct/P2P的多种连接方式分析

P2P的链接方式概览

首次连接不进行描述,简单直接.

P2P整体状态切换如下图:

加入已存在的组

当P2P client尝试加入已经存在的组,client需要提供设备名称,设备类型以及p2p info在association 帧中 对应的状态变化如下: go found ->wsc provisioning enroll -> joined group 这里直接跳过了group formation的三帧交互阶段所以相比第一次连接速度有所提升,并且go的group所处信道是固定的进而跳过了p2p第一次发现设备的scan阶段。

WifiNative::p2pGroupAdd

    ->P2pIface::addGroup_1_2

        ->p2p_iface::pending_scan_res_join_callback

            ->p2p_iface::joinGroup

                ->p2p_supplicant::wpas_p2p_group_add_persistent

                    -> p2p_supplicant::wpas_start_p2p_client

                        ->wpa_supplicant::wpa_supplicant_select_network

go邀请进组&gc邀请进组

go发出 invitation request frame,需要携带信道信息并且go timeout属性为0,group bssid, groupid。 gc恢复invitation response framework,并且携带status作为结果信息,而后继续进行连接 状态变化如下: invite request-> invite response -> wsc enroll -> completed 在已经构建成组的p2p设备邀请其他设备作为gc时,直接跳过group formation过程直接进入wsc阶段,完成连接

gc发出 invitation request frame,需要携带信道信息并且go timeout属性为0 状态变化与go邀请类似 即便是代码流程也没有太多差异,如下:

WifiP2pNative::p2pInvite

    ->p2p_supplicant::wpas_p2p_invite_group

        ->p2p_invitation::p2p_invite

            ->p2p_invitation::p2p_invite_send

流程差异:

go&gc唤醒永久组

go在搜索并尝试连接已存在永久组的go时,通过invitation exchange来唤醒永久组。当invitation exchange结束p2p连接随即完成。 由于是永久组中的go重连gc,之前协商的配置信息已经被保存下来,所以无需go协商和wsc安全校验.

gc在搜索并尝试连接已存在永久组的go时,通过invitation exchange来唤醒永久组。当invitation exchange结束p2p连接随即完成。 由于是永久组中的gc重连go,之前协商的配置信息已经被保存下来,所以无需go协商和wsc安全校验。

WifiP2pServiceImpl::reinvokePersistentGroup

    ->p2p_iface::reinvokeInternal

        ->p2p_supplicant::wpas_p2p_invite

            ->p2p_invitation::p2p_invite

                ->p2p_invitation::p2p_invite_send

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值