[RK3288][Android6.0] WiFi之无线网络配置的关闭过程

Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92

是wifi enabled的逆过程,不过调用的也是setWifiEnable()接口.

onSwitchChanged -> WifiEnabler.java
  mWifiManager.setWifiEnable //参数是false,打开wifi的时候是true
    mService.setWifiEnabled ->
      setWifiEnabled ->
        mWifiController.sendMessage -> //CMD_WIFI_TOGGLED
          processMessage ->  WifiController.java //处于DeviceActiveState,调用父类处理
            transitionTo(mApStaDisabledState) ->
              enter -> //ApStaDisabledState
                mWifiStateMachine.setSupplicantRunning -> //通知WAPS stop running
                    sendMessage(CMD_STOP_SUPPLICANT) -> //发消息给wifi状态机处理
                      processMsg -> //目前处于ConnectedState,一级级调用父类SupplicantStartedState
                        transitionTo(mWaitForP2pDisableState) ->
                          exit -> //ConnectedState
                             setScanAlarm(false) //关闭周期扫描
                          exit -> //L2ConnectedState
                           handleNetworkDisconnect ->
                            stopRssiMonitoringOffload -> //通知HAL stop rssi
                              mWifiNative.stopRssiMonitoring ->
                                stopRssiMonitoringNative ->
                                  android_net_wifi_stop_rssi_monitoring_native ->
                                    hal_fn.wifi_stop_rssi_monitoring
                             clearCurrentConfigBSSID -> //清理bssid
                               clearConfigBSSID
                             stopDhcp -> //关dchp,之前有分析过startdhcp的
                               handlePostDhcpSetup
                               mDhcpStateMachine.sendMessage  //DhcpStateMachine.CMD_STOP_DHCP
                                 processMessage ->  //DhcpBoundState
                                   processMessage -> //DhcpHaveAddressState的父类DhcpState
                                     transitionTo(mStoppedState) ->
                                       exit -> //DhcpHaveAddressState
                                         setIpAddress ->
                                           mNMService.setInterfaceConfig //通知netd设置ip
                             mNwService.clearInterfaceAddresses
                             mNwService.disableIpv6
                             setNetworkDetailedState    //这部分和ConnectionService有关,打算后面再细讲
                             mNetworkAgent.sendNetworkInfo
                             sendNetworkStateChangeBroadcast //广播WifiManager.NETWORK_STATE_CHANGED_ACTION
                           exit -> DriverStartedState
                             mContext.sendStickyBroadcastAsUser //intent: WifiManager.WIFI_SCAN_AVAILABLE
                           processMessage -> WaitForP2pDisableState的上上级父类DefaultState, CMD_UPDATE_LINKPROPERTIES
                             updateLinkProperties //更新路由表,DNS
                           ......//中间省略了几部消息通知,然后收到WPAS的通知: CMD_STOP_SUPPLICANT
                           processMessage -> //WaitForP2pDisableState的父类SupplicantStartedState
                             transitionTo(mSupplicantStoppingState) ->
                               enter -> //SupplicantStartedState
                                 handleNetworkDisconnect //又调用了一次
                                 mDhcpStateMachine.doQuit //dhcp退出
                           //WPAS断开后WifiMonitor发送SUP_DISCONNECTION_EVENT事件给wifi状态机
                           stopMonitoring ->
                             m.mStateMachine.sendMessage(SUP_DISCONNECTION_EVENT) ->
                               processMessage -> //SupplicantStoppingState
                                 handleSupplicantConnectionLoss ->
                                   mWifiNative.closeSupplicantConnection
                                   sendSupplicantConnectionChangedBroadcast //发送广播:WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION
                                 transitionTo(mInitialState) ->
                                   enter ->
                                     WifiNative.stopHal
                                     mWifiNative.unloadDriver

你可能感兴趣的:(子类__WiFi)