[RK3288][Android6.0] WiFi在Setting中的开启过程小结
2017-05-02 17:05
330 查看
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
当Setting选项中打开Wifi时, 调用流程如下,入口主要是setWifiEnabled()函数.
onSwitchChanged -> WifiEnabler.java settings apk中.
mWifiManager.setWifiEnabled ->
setWifiEnabled -> WifiManager.java
mService.setWifiEnabled ->
setWifiEnabled -> WifiServiceImpl.java
mSettingsStore.handleWifiToggled WifiSettingsStore.java //检查airplaymode下是否能打开wifi
mWifiController.sendMessage(CMD_WIFI_TOGGLED);
processMessage -> WifiController.java //ApStaDisabledState类
transitionTo(mDeviceActiveState); ->
enter //StaEnabledState类(ApStaDisabledState的父类)
mWifiStateMachine.setSupplicantRunning -> StaEnabledState
setSupplicantRunning WifiStateMachine.java
sendMessage(CMD_START_SUPPLICANT); ->
enter -> DeviceActiveState类
mWifiStateMachine.setOperationalMode(WifiStateMachine.CONNECT_MODE) ->
sendMessage(CMD_SET_OPERATIONAL_MODE, mode, 0)
mWifiStateMachine.setDriverStart(true) ->
sendMessage(CMD_START_DRIVER)
processMessage -> InitialState类
mWifiNative.loadDriver //wifi驱动在开机已经加载完成,这里不做处理。
mNwService.wifiFirmwareReload //wifi固件在开机已经加载完成,这里不做处理。
mNwService.setInterfaceDown(mInterfaceName); //关闭网卡,设置interfaceDriverStartedState
WifiNative.startHal
startHalNative
new MonitorThread //接收来自WPS的消息
mWifiNative.startSupplicant //开启supplicant
mWifiMonitor.startMonitoring -> //创建两个socket和wps交互
mWifiNative.connectToSupplicant
m.mStateMachine.sendMessage(SUP_CONNECTION_EVENT);
MonitorThread(mWifiNative, this).start ->
run -> WifiMonitor.java
mWifiNative.waitForEvent //收取wps发上来的event
mWifiMonitorSingleton.dispatchEvent
transitionTo(mSupplicantStartingState) ->
processMessage -> SupplicantStartingState类,上面发送了SUP_CONNECTION_EVENT
mWifiInfo.setMacAddress
setFrequencyBand
mWifiNative.enableSaveConfig ->
doBooleanCommand //发送命令给wps
mWifiConfigStore.loadAndEnableAllNetworks ->
loadAndEnableAllNetworks -> WifiConfigStore.java
mWifiNative.listNetworks
readNetworkVariables
enableAllNetworks
transitionTo(mDriverStartedState) ->
enter -> SupplicantStartedState类(DriverStartedState的父类)
mWifiNative.enableAutoConnect
enter -> DriverStartedState类
transitionTo(mDisconnectedState) ->
enter -> DisconnectedState类
startScan
processMessage -> //这时前面的下一条消息CMD_SET_OPERATIONAL_MODE会被处理
processMessage -> 处理最后之后的一条消息CMD_START_DRIVER
OS: Android 6.0
Kernel: 3.10.92
当Setting选项中打开Wifi时, 调用流程如下,入口主要是setWifiEnabled()函数.
onSwitchChanged -> WifiEnabler.java settings apk中.
mWifiManager.setWifiEnabled ->
setWifiEnabled -> WifiManager.java
mService.setWifiEnabled ->
setWifiEnabled -> WifiServiceImpl.java
mSettingsStore.handleWifiToggled WifiSettingsStore.java //检查airplaymode下是否能打开wifi
mWifiController.sendMessage(CMD_WIFI_TOGGLED);
processMessage -> WifiController.java //ApStaDisabledState类
transitionTo(mDeviceActiveState); ->
enter //StaEnabledState类(ApStaDisabledState的父类)
mWifiStateMachine.setSupplicantRunning -> StaEnabledState
setSupplicantRunning WifiStateMachine.java
sendMessage(CMD_START_SUPPLICANT); ->
enter -> DeviceActiveState类
mWifiStateMachine.setOperationalMode(WifiStateMachine.CONNECT_MODE) ->
sendMessage(CMD_SET_OPERATIONAL_MODE, mode, 0)
mWifiStateMachine.setDriverStart(true) ->
sendMessage(CMD_START_DRIVER)
processMessage -> InitialState类
mWifiNative.loadDriver //wifi驱动在开机已经加载完成,这里不做处理。
mNwService.wifiFirmwareReload //wifi固件在开机已经加载完成,这里不做处理。
mNwService.setInterfaceDown(mInterfaceName); //关闭网卡,设置interfaceDriverStartedState
WifiNative.startHal
startHalNative
new MonitorThread //接收来自WPS的消息
mWifiNative.startSupplicant //开启supplicant
mWifiMonitor.startMonitoring -> //创建两个socket和wps交互
mWifiNative.connectToSupplicant
m.mStateMachine.sendMessage(SUP_CONNECTION_EVENT);
MonitorThread(mWifiNative, this).start ->
run -> WifiMonitor.java
mWifiNative.waitForEvent //收取wps发上来的event
mWifiMonitorSingleton.dispatchEvent
transitionTo(mSupplicantStartingState) ->
processMessage -> SupplicantStartingState类,上面发送了SUP_CONNECTION_EVENT
mWifiInfo.setMacAddress
setFrequencyBand
mWifiNative.enableSaveConfig ->
doBooleanCommand //发送命令给wps
mWifiConfigStore.loadAndEnableAllNetworks ->
loadAndEnableAllNetworks -> WifiConfigStore.java
mWifiNative.listNetworks
readNetworkVariables
enableAllNetworks
transitionTo(mDriverStartedState) ->
enter -> SupplicantStartedState类(DriverStartedState的父类)
mWifiNative.enableAutoConnect
enter -> DriverStartedState类
transitionTo(mDisconnectedState) ->
enter -> DisconnectedState类
startScan
processMessage -> //这时前面的下一条消息CMD_SET_OPERATIONAL_MODE会被处理
processMessage -> 处理最后之后的一条消息CMD_START_DRIVER
相关文章推荐
- [RK3288][Android6.0] WiFi在Settings中的热点开启流程小结
- [RK3288][Android6.0] WiFi的驱动初始化过程小结
- [RK3288][Android6.0] WiFi之Framework连接过程小结
- [RK3288][Android6.0] WIFI接入过程的加密和认证方式小结
- [RK3288][Android6.0] WiFi之无线网络配置的断开过程
- [RK3288][Android6.0] WiFi之Framework扫描过程
- [RK3288][Android6.0] 系统关机调用过程小结
- [RK3288][Android6.0] Wifi Service初始化流程小结
- [RK3288][Android6.0] WiFi之无线网络配置的保存过程
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] WiFi之cfg80211知识点小结
- [RK3288][Android6.0] Apk设置显示旋转过程小结
- [RK3288][Android6.0] WiFi之同步网络时间过程
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] Audio中的混音过程小结
- [RK3288][Android6.0] WiFi之无线网络配置的关闭过程
- [RK3288][Android6.0] MediaCodec的configure配置过程小结
- [RK3288][Android6.0] WiFi之无线网络配置的忘记(移除)过程
- [RK3288][Android6.0] USB WiFi驱动流程小结
- [RK3288][Android6.0] WiFi之mac80211知识点小结