[RK3288][Android6.0] WiFi之無線網路配置的關閉過程
阿新 • • 發佈:2019-01-07
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
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