[RK3288][Android6.0] WiFi之无线网络配置的忘记(移除)过程
来源:互联网 发布:qq空间 for mac客户端 编辑:程序博客网 时间:2024/05/21 03:56
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
mWifiManager.forget -> WiFiSettings.java //参数为当前选择forget的config的netid
sAsyncChannel.sendMessage -> 异步通道发送给WifiStateMachine,cmd是FORGET_NETWORK
processMessage -> WifiStateMachine.java //当前处于ConnectedState,调用父类的父类ConnectModeState
mWifiConfigStore.getWifiConfiguration //根据netid得到对应的config
mWifiConfigStore.canModifyNetwork //检查调用者是否有权限remove network
mWifiConfigStore.forgetNetwork ->
removeConfigAndSendBroadcastIfNeeded -> //执行清理操作
mConfiguredNetworks.remove //从ConfiguredNetworks中移除
mScanDetailCaches.remove
sendConfiguredNetworksChangedBroadcast //发广播wifi状态变化: WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION
mWifiNative.removeNetwork ->
doBooleanCommand //通知WPAS移除network,命令是"REMOVE_NETWORK " + netId,这和用wpa_cli客户端的方法是一样的
mWifiNative.saveConfig ->
doBooleanCommand //通知WPAS更新配置文件wpa_supplicant.conf
handleEvent WifiMonitor.java -> WPAS移除完毕之后会发DISCONNECTED事件过来,由WifiMonitor负责接收
handleNetworkStateChange ->
notifyNetworkStateChange ->
mStateMachine.sendMessage -> //NETWORK_DISCONNECTION_EVENT, 发给WifiStateMachine
processMessage -> //ConnectedState
dispatchEvent -> 接着WifiMonitor又收到WPAS发来的STATE_CHANGE事件
handleSupplicantStateChange ->
notifySupplicantStateChange -> //
mStateMachine.sendMessage -> //SUPPLICANT_STATE_CHANGE_EVENT
processMessage -> //当前处于ConnectedState,调用父类的父类ConnectModeState
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
transitionTo(mDisconnectedState) ->
exit -> //ConnectedState
setScanAlarm //关闭周期性scan
enter -> //DisconnectedState
startScan //断开连接后进入定期扫描
OS: Android 6.0
Kernel: 3.10.92
之前有分析过 无线网络配置的保存过程 ,这里看一下它的移除过程是怎样的,当选择界面的FORGET时,会触发以下流程调用。
onForget ->
forget ->mWifiManager.forget -> WiFiSettings.java //参数为当前选择forget的config的netid
sAsyncChannel.sendMessage -> 异步通道发送给WifiStateMachine,cmd是FORGET_NETWORK
processMessage -> WifiStateMachine.java //当前处于ConnectedState,调用父类的父类ConnectModeState
mWifiConfigStore.getWifiConfiguration //根据netid得到对应的config
mWifiConfigStore.canModifyNetwork //检查调用者是否有权限remove network
mWifiConfigStore.forgetNetwork ->
removeConfigAndSendBroadcastIfNeeded -> //执行清理操作
mConfiguredNetworks.remove //从ConfiguredNetworks中移除
mScanDetailCaches.remove
sendConfiguredNetworksChangedBroadcast //发广播wifi状态变化: WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION
mWifiNative.removeNetwork ->
doBooleanCommand //通知WPAS移除network,命令是"REMOVE_NETWORK " + netId,这和用wpa_cli客户端的方法是一样的
mWifiNative.saveConfig ->
doBooleanCommand //通知WPAS更新配置文件wpa_supplicant.conf
handleEvent WifiMonitor.java -> WPAS移除完毕之后会发DISCONNECTED事件过来,由WifiMonitor负责接收
handleNetworkStateChange ->
notifyNetworkStateChange ->
mStateMachine.sendMessage -> //NETWORK_DISCONNECTION_EVENT, 发给WifiStateMachine
processMessage -> //ConnectedState
dispatchEvent -> 接着WifiMonitor又收到WPAS发来的STATE_CHANGE事件
handleSupplicantStateChange ->
notifySupplicantStateChange -> //
mStateMachine.sendMessage -> //SUPPLICANT_STATE_CHANGE_EVENT
processMessage -> //当前处于ConnectedState,调用父类的父类ConnectModeState
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
transitionTo(mDisconnectedState) ->
exit -> //ConnectedState
setScanAlarm //关闭周期性scan
enter -> //DisconnectedState
startScan //断开连接后进入定期扫描
阅读全文
1 0
- [RK3288][Android6.0] WiFi之无线网络配置的忘记(移除)过程
- [RK3288][Android6.0] WiFi之无线网络配置的保存过程
- [RK3288][Android6.0] WiFi之无线网络配置的断开过程
- [RK3288][Android6.0] WiFi之无线网络配置的关闭过程
- [RK3288][Android6.0] WiFi之Autojoin对无线网络的选择机制
- [RK3288][Android6.0] WiFi之wpa_supplicant初始化过程
- [RK3288][Android6.0] WiFi之wpa_supplicant扫描过程
- [RK3288][Android6.0] WiFi之Framework扫描过程
- [RK3288][Android6.0] WiFi之Framework连接过程小结
- [RK3288][Android6.0] WiFi之开机自动连接过程
- [RK3288][Android6.0] WiFi之同步网络时间过程
- [RK3288][Android6.0] WiFi的驱动初始化过程小结
- [RK3288][Android6.0] WiFi之通过wpa_cli分析WPAS的连接过程
- [RK3288][Android6.0] WiFi的dts配置说明(AP6335)
- [RK3288][Android6.0] WiFi之Framework的socket(客户端)
- [RK3288][Android6.0] WiFi之wpa_supplicant的socket(服务端)
- [RK3288][Android6.0] WiFi之与ConnectivityService的交互
- [RK3288][Android6.0] WiFi之NetworkFactory形成的评分机制
- Java并发之HashMap内部结构解析
- Spring data jpa 多表查询(一:单表动态条件查询)
- 使用VS2013编写QT的环境配置
- UNIX编程专题-wait和waitpid详解
- 算法导论哈夫曼编码
- [RK3288][Android6.0] WiFi之无线网络配置的忘记(移除)过程
- Python 爬虫(以赛马数据为例)之总体架构
- day01 如有错误还望指教
- [Terminal Game Center]贪吃蛇
- Cocos2d-x 之调度器 Scheduler
- HDU1398(生成函数)
- Ubuntu 安装 RabbitMQ 和PHP扩展
- 动态代理实现方法以及对象HooK
- 英语语法2-一般过去时