STA模式 - wifi随时扫描功能

本文探讨了Wi-Fi随时扫描功能的实现原理,重点关注了WifiController和WifiStateMachine两个状态机在开启、关闭Wi-Fi过程中的角色。在Wi-Fi关闭时,实际并未完全关闭,而是保持扫描状态。在打开Wi-Fi时,正确流程包括设置扫描模式并开始扫描;关闭Wi-Fi时,由于处理延迟可能导致状态机未及时切换,影响重新打开时的行为。最后,当Wi-Fi再次打开时,由于特定状态机配置,Wi-Fi列表不会显示热点。
摘要由CSDN通过智能技术生成

随时扫描功能:在wifi关闭的时候,底层并没有真正意义上的关闭,而是继续扫描,只是不再列表上显示罢了。

现在分析随时扫描功能开启后wifi打开、关闭、显示扫描结果的流程。在这里需要关注两个状态机:WifiController、WifiStateMachine。

这两个状态机都是在wifiservice中创建的,当第一次打开wifi之前,两个状态机的状态为:WifiStateMachine(ScanModeState)、WifiController(StaDisabledWithScanState)
在WifiController中会做如下操作:

        mWifiStateMachine.setSupplicantRunning(true);
        mWifiStateMachine.setOperationalMode(WifiStateMachine.SCAN_ONLY_WITH_WIFI_OFF_MODE);
        mWifiStateMachine.setDriverStart(true);

WifiStateMachine 在接收到 CMD_START_SUPPLICANT命令后,会去做打开连接wpa_supplicant的操作,并跳转到SupplicantStartingState状态,接收到 SUP_CONNECTION_EVENT事件,处理完成后跳转到 DriverStartedState,最后会跳转到 DisconnectedState状态(mOperationalMode 初始为 CONNECT_MODE)
接下来setOperationalMode在DisconnectedState中处理,最后会跳转到ScanModeState状态。

当打开wifi时正确的处理流程是这样的:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值