diff options
Diffstat (limited to 'wifi/java/android')
-rw-r--r-- | wifi/java/android/net/wifi/SupplicantStateTracker.java | 15 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiConfigStore.java | 55 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiInfo.java | 9 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiManager.java | 2 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiStateMachine.java | 200 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/WifiWatchdogStateMachine.java | 8 | ||||
-rw-r--r-- | wifi/java/android/net/wifi/p2p/WifiP2pService.java | 38 |
7 files changed, 139 insertions, 188 deletions
diff --git a/wifi/java/android/net/wifi/SupplicantStateTracker.java b/wifi/java/android/net/wifi/SupplicantStateTracker.java index d1e9b67..f7fc795 100644 --- a/wifi/java/android/net/wifi/SupplicantStateTracker.java +++ b/wifi/java/android/net/wifi/SupplicantStateTracker.java @@ -28,6 +28,9 @@ import android.os.Parcelable; import android.os.UserHandle; import android.util.Log; +import java.io.FileDescriptor; +import java.io.PrintWriter; + /** * Tracks the state changes in supplicant and provides functionality * that is based on these state changes: @@ -80,7 +83,8 @@ class SupplicantStateTracker extends StateMachine { addState(mDormantState, mDefaultState); setInitialState(mUninitializedState); - + setLogRecSize(50); + setLogOnlyTransitions(true); //start the state machine start(); } @@ -327,4 +331,13 @@ class SupplicantStateTracker extends StateMachine { if (DBG) Log.d(TAG, getName() + "\n"); } } + + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + super.dump(fd, pw, args); + pw.println("mAuthenticationFailuresCount " + mAuthenticationFailuresCount); + pw.println("mAuthFailureInSupplicantBroadcast " + mAuthFailureInSupplicantBroadcast); + pw.println("mNetworksDisabledDuringConnect " + mNetworksDisabledDuringConnect); + pw.println(); + } } diff --git a/wifi/java/android/net/wifi/WifiConfigStore.java b/wifi/java/android/net/wifi/WifiConfigStore.java index 84506b6..135446f 100644 --- a/wifi/java/android/net/wifi/WifiConfigStore.java +++ b/wifi/java/android/net/wifi/WifiConfigStore.java @@ -18,7 +18,6 @@ package android.net.wifi; import android.content.Context; import android.content.Intent; -import android.net.DhcpInfoInternal; import android.net.LinkAddress; import android.net.LinkProperties; import android.net.NetworkUtils; @@ -45,9 +44,11 @@ import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.EOFException; +import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.io.PrintWriter; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; @@ -502,45 +503,12 @@ class WifiConfigStore { } /** - * get IP configuration for a given network id - * TODO: We cannot handle IPv6 addresses for configuration - * right now until NetworkUtils is fixed. When we do - * that, we should remove handling DhcpInfo and move - * to using LinkProperties - * @return DhcpInfoInternal for the given network id - */ - DhcpInfoInternal getIpConfiguration(int netId) { - DhcpInfoInternal dhcpInfoInternal = new DhcpInfoInternal(); - LinkProperties linkProperties = getLinkProperties(netId); - - if (linkProperties != null) { - Iterator<LinkAddress> iter = linkProperties.getLinkAddresses().iterator(); - if (iter.hasNext()) { - LinkAddress linkAddress = iter.next(); - dhcpInfoInternal.ipAddress = linkAddress.getAddress().getHostAddress(); - for (RouteInfo route : linkProperties.getRoutes()) { - dhcpInfoInternal.addRoute(route); - } - dhcpInfoInternal.prefixLength = linkAddress.getNetworkPrefixLength(); - Iterator<InetAddress> dnsIterator = linkProperties.getDnses().iterator(); - dhcpInfoInternal.dns1 = dnsIterator.next().getHostAddress(); - if (dnsIterator.hasNext()) { - dhcpInfoInternal.dns2 = dnsIterator.next().getHostAddress(); - } - } - } - return dhcpInfoInternal; - } - - /** * set IP configuration for a given network id */ - void setIpConfiguration(int netId, DhcpInfoInternal dhcpInfo) { - LinkProperties linkProperties = dhcpInfo.makeLinkProperties(); - + void setLinkProperties(int netId, LinkProperties linkProperties) { WifiConfiguration config = mConfiguredNetworks.get(netId); if (config != null) { - // add old proxy details + // add old proxy details - TODO - is this still needed? if(config.linkProperties != null) { linkProperties.setHttpProxy(config.linkProperties.getHttpProxy()); } @@ -552,7 +520,7 @@ class WifiConfigStore { * clear IP configuration for a given network id * @param network id */ - void clearIpConfiguration(int netId) { + void clearLinkProperties(int netId) { WifiConfiguration config = mConfiguredNetworks.get(netId); if (config != null && config.linkProperties != null) { // Clear everything except proxy @@ -1578,15 +1546,14 @@ class WifiConfigStore { return key.hashCode(); } - String dump() { - StringBuffer sb = new StringBuffer(); - String LS = System.getProperty("line.separator"); - sb.append("mLastPriority ").append(mLastPriority).append(LS); - sb.append("Configured networks ").append(LS); + void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + pw.println("WifiConfigStore"); + pw.println("mLastPriority " + mLastPriority); + pw.println("Configured networks"); for (WifiConfiguration conf : getConfiguredNetworks()) { - sb.append(conf).append(LS); + pw.println(conf); } - return sb.toString(); + pw.println(); } public String getConfigFile() { diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java index 05db571..502d1ab 100644 --- a/wifi/java/android/net/wifi/WifiInfo.java +++ b/wifi/java/android/net/wifi/WifiInfo.java @@ -23,7 +23,7 @@ import android.net.NetworkUtils; import android.text.TextUtils; import java.net.InetAddress; -import java.net.Inet6Address; +import java.net.Inet4Address; import java.net.UnknownHostException; import java.util.EnumMap; @@ -231,8 +231,11 @@ public class WifiInfo implements Parcelable { } public int getIpAddress() { - if (mIpAddress == null || mIpAddress instanceof Inet6Address) return 0; - return NetworkUtils.inetAddressToInt(mIpAddress); + int result = 0; + if (mIpAddress instanceof Inet4Address) { + result = NetworkUtils.inetAddressToInt((Inet4Address)mIpAddress); + } + return result; } /** diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java index 0e29882..4861759 100644 --- a/wifi/java/android/net/wifi/WifiManager.java +++ b/wifi/java/android/net/wifi/WifiManager.java @@ -862,6 +862,7 @@ public class WifiManager { * Return the DHCP-assigned addresses from the last successful DHCP request, * if any. * @return the DHCP information + * @deprecated - use ConnectivityManager.getLinkProperties instead. TODO - remove 11/2013 */ public DhcpInfo getDhcpInfo() { try { @@ -871,7 +872,6 @@ public class WifiManager { } } - /** * Enable or disable Wi-Fi. * @param enabled {@code true} to enable, {@code false} to disable. diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java index 8a22e96..0a61972 100644 --- a/wifi/java/android/net/wifi/WifiStateMachine.java +++ b/wifi/java/android/net/wifi/WifiStateMachine.java @@ -43,8 +43,7 @@ import android.content.IntentFilter; import android.content.pm.PackageManager; import android.database.ContentObserver; import android.net.ConnectivityManager; -import android.net.DhcpInfo; -import android.net.DhcpInfoInternal; +import android.net.DhcpResults; import android.net.DhcpStateMachine; import android.net.InterfaceConfiguration; import android.net.LinkAddress; @@ -71,7 +70,6 @@ import android.os.SystemProperties; import android.os.UserHandle; import android.os.WorkSource; import android.provider.Settings; -import android.util.EventLog; import android.util.Log; import android.util.LruCache; @@ -82,11 +80,14 @@ import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.StateMachine; +import java.io.FileDescriptor; +import java.io.PrintWriter; import java.net.InetAddress; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.Iterator; import java.util.regex.Pattern; /** @@ -196,7 +197,8 @@ public class WifiStateMachine extends StateMachine { private Context mContext; - private DhcpInfoInternal mDhcpInfoInternal; + private final Object mDhcpResultsLock = new Object(); + private DhcpResults mDhcpResults; private WifiInfo mWifiInfo; private NetworkInfo mNetworkInfo; private SupplicantStateTracker mSupplicantStateTracker; @@ -220,11 +222,6 @@ public class WifiStateMachine extends StateMachine { private AsyncChannel mWifiP2pChannel = new AsyncChannel(); private AsyncChannel mWifiApConfigChannel = new AsyncChannel(); - // Event log tags (must be in sync with event-log-tags) - private static final int EVENTLOG_WIFI_STATE_CHANGED = 50021; - private static final int EVENTLOG_WIFI_EVENT_HANDLED = 50022; - private static final int EVENTLOG_SUPPLICANT_STATE_CHANGED = 50023; - /* The base for wifi message types */ static final int BASE = Protocol.BASE_WIFI; /* Load the driver */ @@ -585,7 +582,6 @@ public class WifiStateMachine extends StateMachine { mWifiNative = new WifiNative(mInterfaceName); mWifiConfigStore = new WifiConfigStore(context, mWifiNative); mWifiMonitor = new WifiMonitor(this, mWifiNative); - mDhcpInfoInternal = new DhcpInfoInternal(); mWifiInfo = new WifiInfo(); mSupplicantStateTracker = new SupplicantStateTracker(context, this, mWifiConfigStore, getHandler()); @@ -721,6 +717,7 @@ public class WifiStateMachine extends StateMachine { setInitialState(mInitialState); setLogRecSize(100); + setLogOnlyTransitions(true); if (DBG) setDbg(true); //start the state machine @@ -858,9 +855,9 @@ public class WifiStateMachine extends StateMachine { return mWifiInfo; } - public DhcpInfo syncGetDhcpInfo() { - synchronized (mDhcpInfoInternal) { - return mDhcpInfoInternal.makeDhcpInfo(); + public DhcpResults syncGetDhcpResults() { + synchronized (mDhcpResultsLock) { + return new DhcpResults(mDhcpResults); } } @@ -1163,56 +1160,23 @@ public class WifiStateMachine extends StateMachine { } @Override - public String toString() { - StringBuffer sb = new StringBuffer(); - String LS = System.getProperty("line.separator"); - sb.append("current HSM state: ").append(getCurrentState().getName()).append(LS); - sb.append("mLinkProperties ").append(mLinkProperties).append(LS); - sb.append("mWifiInfo ").append(mWifiInfo).append(LS); - sb.append("mDhcpInfoInternal ").append(mDhcpInfoInternal).append(LS); - sb.append("mNetworkInfo ").append(mNetworkInfo).append(LS); - sb.append("mLastSignalLevel ").append(mLastSignalLevel).append(LS); - sb.append("mLastBssid ").append(mLastBssid).append(LS); - sb.append("mLastNetworkId ").append(mLastNetworkId).append(LS); - sb.append("mReconnectCount ").append(mReconnectCount).append(LS); - sb.append("mIsScanMode ").append(mIsScanMode).append(LS); - sb.append("mUserWantsSuspendOpt ").append(mUserWantsSuspendOpt).append(LS); - sb.append("mSuspendOptNeedsDisabled ").append(mSuspendOptNeedsDisabled).append(LS); - sb.append("Supplicant status").append(LS) - .append(mWifiNative.status()).append(LS).append(LS); - - sb.append(mWifiConfigStore.dump()); - return sb.toString(); - } - - @Override - protected boolean recordLogRec(Message msg) { - //Ignore screen on/off & common messages when driver has started - if (getCurrentState() == mConnectedState || getCurrentState() == mDisconnectedState) { - switch (msg.what) { - case CMD_LOAD_DRIVER: - case CMD_START_SUPPLICANT: - case CMD_START_DRIVER: - case CMD_SET_SCAN_MODE: - case CMD_SET_HIGH_PERF_MODE: - case CMD_SET_SUSPEND_OPT_ENABLED: - case CMD_ENABLE_BACKGROUND_SCAN: - case CMD_ENABLE_ALL_NETWORKS: - return false; - } - } - - switch (msg.what) { - case CMD_START_SCAN: - case CMD_ENABLE_RSSI_POLL: - case CMD_RSSI_POLL: - case CMD_DELAYED_STOP_DRIVER: - case WifiMonitor.SCAN_RESULTS_EVENT: - case WifiManager.RSSI_PKTCNT_FETCH: - return false; - default: - return true; - } + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + super.dump(fd, pw, args); + mSupplicantStateTracker.dump(fd, pw, args); + pw.println("mLinkProperties " + mLinkProperties); + pw.println("mWifiInfo " + mWifiInfo); + pw.println("mDhcpResults " + mDhcpResults); + pw.println("mNetworkInfo " + mNetworkInfo); + pw.println("mLastSignalLevel " + mLastSignalLevel); + pw.println("mLastBssid " + mLastBssid); + pw.println("mLastNetworkId " + mLastNetworkId); + pw.println("mReconnectCount " + mReconnectCount); + pw.println("mIsScanMode " + mIsScanMode); + pw.println("mUserWantsSuspendOpt " + mUserWantsSuspendOpt); + pw.println("mSuspendOptNeedsDisabled " + mSuspendOptNeedsDisabled); + pw.println("Supplicant status " + mWifiNative.status()); + pw.println(); + mWifiConfigStore.dump(fd, pw, args); } /********************************************************* @@ -1607,16 +1571,15 @@ public class WifiStateMachine extends StateMachine { if (mWifiConfigStore.isUsingStaticIp(mLastNetworkId)) { mLinkProperties = mWifiConfigStore.getLinkProperties(mLastNetworkId); } else { - synchronized (mDhcpInfoInternal) { - mLinkProperties = mDhcpInfoInternal.makeLinkProperties(); + synchronized (mDhcpResultsLock) { + if ((mDhcpResults != null) && (mDhcpResults.linkProperties != null)) { + mLinkProperties = mDhcpResults.linkProperties; + } } mLinkProperties.setHttpProxy(mWifiConfigStore.getProxyProperties(mLastNetworkId)); } mLinkProperties.setInterfaceName(mInterfaceName); - if (DBG) { - log("netId=" + mLastNetworkId + " Link configured: " + - mLinkProperties.toString()); - } + if (DBG) log("netId=" + mLastNetworkId + " Link configured: " + mLinkProperties); } private int getMaxDhcpRetries() { @@ -1693,7 +1656,6 @@ public class WifiStateMachine extends StateMachine { // [31-13] Reserved for future use // [8 - 0] Supplicant state (as defined in SupplicantState.java) // 50023 supplicant_state_changed (custom|1|5) - EventLog.writeEvent(EVENTLOG_SUPPLICANT_STATE_CHANGED, state.ordinal()); mWifiInfo.setSupplicantState(state); // Network id is only valid when we start connecting if (SupplicantState.isConnecting(state)) { @@ -1751,9 +1713,10 @@ public class WifiStateMachine extends StateMachine { /* Clear network properties */ mLinkProperties.clear(); + /* Clear IP settings if the network used DHCP */ if (!mWifiConfigStore.isUsingStaticIp(mLastNetworkId)) { - mWifiConfigStore.clearIpConfiguration(mLastNetworkId); + mWifiConfigStore.clearLinkProperties(mLastNetworkId); } mLastBssid= null; @@ -1802,21 +1765,27 @@ public class WifiStateMachine extends StateMachine { mWifiNative.BLUETOOTH_COEXISTENCE_MODE_SENSE); } - private void handleSuccessfulIpConfiguration(DhcpInfoInternal dhcpInfoInternal) { - synchronized (mDhcpInfoInternal) { - mDhcpInfoInternal = dhcpInfoInternal; - } + private void handleSuccessfulIpConfiguration(DhcpResults dhcpResults) { mLastSignalLevel = -1; // force update of signal strength mReconnectCount = 0; //Reset IP failure tracking - mWifiConfigStore.setIpConfiguration(mLastNetworkId, dhcpInfoInternal); - InetAddress addr = NetworkUtils.numericToInetAddress(dhcpInfoInternal.ipAddress); + if (dhcpResults.serverAddress == null) { + dhcpResults = null; + } + synchronized (mDhcpResultsLock) { + mDhcpResults = dhcpResults; + } + LinkProperties linkProperties = dhcpResults.linkProperties; + mWifiConfigStore.setLinkProperties(mLastNetworkId, linkProperties); + InetAddress addr = null; + Iterator<InetAddress> addrs = linkProperties.getAddresses().iterator(); + if (addrs.hasNext()) { + addr = addrs.next(); + } mWifiInfo.setInetAddress(addr); - mWifiInfo.setMeteredHint(dhcpInfoInternal.hasMeteredHint()); + mWifiInfo.setMeteredHint(dhcpResults.hasMeteredHint()); if (getNetworkDetailedState() == DetailedState.CONNECTED) { //DHCP renewal in connected state - LinkProperties linkProperties = dhcpInfoInternal.makeLinkProperties(); linkProperties.setHttpProxy(mWifiConfigStore.getProxyProperties(mLastNetworkId)); - linkProperties.setInterfaceName(mInterfaceName); if (!linkProperties.equals(mLinkProperties)) { if (DBG) { log("Link configuration changed for netId: " + mLastNetworkId @@ -2046,11 +2015,6 @@ public class WifiStateMachine extends StateMachine { //TODO: could move logging into a common class public void enter() { if (DBG) log(getName() + "\n"); - // [31-8] Reserved for future use - // [7 - 0] HSM state change - // 50021 wifi_state_changed (custom|1|5) - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); - if (mWifiNative.isDriverLoaded()) { transitionTo(mDriverLoadedState); } @@ -2084,8 +2048,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); - final Message message = new Message(); message.copyFrom(getCurrentMessage()); /* TODO: add a timeout to fail when driver load is hung. @@ -2161,7 +2123,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -2220,7 +2181,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); final Message message = new Message(); message.copyFrom(getCurrentMessage()); @@ -2299,7 +2259,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -2319,7 +2278,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { loge(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -2333,7 +2291,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } private void initializeWpsDetails() { @@ -2430,7 +2387,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); /* Initialize for connect mode operation at start */ mIsScanMode = false; /* Wifi is available as long as we have a connection to supplicant */ @@ -2579,7 +2535,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); /* Send any reset commands to supplicant before shutting it down */ handleNetworkDisconnect(); @@ -2653,7 +2608,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); mTries = 1; /* Send ourselves a delayed message to start driver a second time */ @@ -2721,7 +2675,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); mIsRunning = true; mInDelayedStop = false; @@ -2923,7 +2876,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); switch (getCurrentMessage().what) { case WifiMonitor.SUP_DISCONNECTION_EVENT: mTransitionToState = mDriverLoadedState; @@ -2980,7 +2932,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -3017,7 +2968,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -3049,7 +2999,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -3085,7 +3034,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -3228,7 +3176,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); mRssiPollToken++; if (mEnableRssiPolling) { sendMessage(obtainMessage(CMD_RSSI_POLL, mRssiPollToken, 0)); @@ -3247,7 +3194,7 @@ public class WifiStateMachine extends StateMachine { handlePostDhcpSetup(); if (message.arg1 == DhcpStateMachine.DHCP_SUCCESS) { if (DBG) log("DHCP successful"); - handleSuccessfulIpConfiguration((DhcpInfoInternal) message.obj); + handleSuccessfulIpConfiguration((DhcpResults) message.obj); transitionTo(mVerifyingLinkState); } else if (message.arg1 == DhcpStateMachine.DHCP_FAILURE) { if (DBG) log("DHCP failed"); @@ -3363,7 +3310,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); if (!mWifiConfigStore.isUsingStaticIp(mLastNetworkId)) { //start DHCP @@ -3375,21 +3321,29 @@ public class WifiStateMachine extends StateMachine { mDhcpStateMachine.registerForPreDhcpNotification(); mDhcpStateMachine.sendMessage(DhcpStateMachine.CMD_START_DHCP); } else { - DhcpInfoInternal dhcpInfoInternal = mWifiConfigStore.getIpConfiguration( - mLastNetworkId); + DhcpResults dhcpResults = new DhcpResults( + mWifiConfigStore.getLinkProperties(mLastNetworkId)); + dhcpResults.linkProperties.setInterfaceName(mInterfaceName); InterfaceConfiguration ifcg = new InterfaceConfiguration(); - ifcg.setLinkAddress(dhcpInfoInternal.makeLinkAddress()); - ifcg.setInterfaceUp(); - try { - mNwService.setInterfaceConfig(mInterfaceName, ifcg); - if (DBG) log("Static IP configuration succeeded"); - sendMessage(CMD_STATIC_IP_SUCCESS, dhcpInfoInternal); - } catch (RemoteException re) { - loge("Static IP configuration failed: " + re); - sendMessage(CMD_STATIC_IP_FAILURE); - } catch (IllegalStateException e) { - loge("Static IP configuration failed: " + e); + Iterator<LinkAddress> addrs = + dhcpResults.linkProperties.getLinkAddresses().iterator(); + if (!addrs.hasNext()) { + loge("Static IP lacks address"); sendMessage(CMD_STATIC_IP_FAILURE); + } else { + ifcg.setLinkAddress(addrs.next()); + ifcg.setInterfaceUp(); + try { + mNwService.setInterfaceConfig(mInterfaceName, ifcg); + if (DBG) log("Static IP configuration succeeded"); + sendMessage(CMD_STATIC_IP_SUCCESS, dhcpResults); + } catch (RemoteException re) { + loge("Static IP configuration failed: " + re); + sendMessage(CMD_STATIC_IP_FAILURE); + } catch (IllegalStateException e) { + loge("Static IP configuration failed: " + e); + sendMessage(CMD_STATIC_IP_FAILURE); + } } } } @@ -3398,7 +3352,7 @@ public class WifiStateMachine extends StateMachine { if (DBG) log(getName() + message.toString() + "\n"); switch(message.what) { case CMD_STATIC_IP_SUCCESS: - handleSuccessfulIpConfiguration((DhcpInfoInternal) message.obj); + handleSuccessfulIpConfiguration((DhcpResults) message.obj); transitionTo(mVerifyingLinkState); break; case CMD_STATIC_IP_FAILURE: @@ -3427,7 +3381,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); setNetworkDetailedState(DetailedState.VERIFYING_POOR_LINK); mWifiConfigStore.updateStatus(mLastNetworkId, DetailedState.VERIFYING_POOR_LINK); sendNetworkStateChangeBroadcast(mLastBssid); @@ -3482,7 +3435,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -3521,7 +3473,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -3574,7 +3525,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); // We dont scan frequently if this is a temporary disconnect // due to p2p @@ -3725,7 +3675,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); mSourceMessage = Message.obtain(getCurrentMessage()); } @Override @@ -3815,7 +3764,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); final Message message = getCurrentMessage(); if (message.what == CMD_START_AP) { @@ -3880,7 +3828,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -3923,7 +3870,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); /* Send ourselves a delayed message to shut down if tethering fails to notify */ sendMessageDelayed(obtainMessage(CMD_TETHER_NOTIFICATION_TIMED_OUT, @@ -3972,7 +3918,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); } @Override public boolean processMessage(Message message) { @@ -4002,7 +3947,6 @@ public class WifiStateMachine extends StateMachine { @Override public void enter() { if (DBG) log(getName() + "\n"); - EventLog.writeEvent(EVENTLOG_WIFI_STATE_CHANGED, getName()); /* Send ourselves a delayed message to shut down if tethering fails to notify */ sendMessageDelayed(obtainMessage(CMD_TETHER_NOTIFICATION_TIMED_OUT, diff --git a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java index c8f0712..423558f 100644 --- a/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java +++ b/wifi/java/android/net/wifi/WifiWatchdogStateMachine.java @@ -39,6 +39,7 @@ import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.StateMachine; +import java.io.FileDescriptor; import java.io.PrintWriter; import java.text.DecimalFormat; @@ -332,6 +333,8 @@ public class WifiWatchdogStateMachine extends StateMachine { } else { setInitialState(mWatchdogDisabledState); } + setLogRecSize(25); + setLogOnlyTransitions(true); updateSettings(); } @@ -417,9 +420,8 @@ public class WifiWatchdogStateMachine extends StateMachine { false, contentObserver); } - public void dump(PrintWriter pw) { - pw.print("WatchdogStatus: "); - pw.print("State: " + getCurrentState()); + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + super.dump(fd, pw, args); pw.println("mWifiInfo: [" + mWifiInfo + "]"); pw.println("mLinkProperties: [" + mLinkProperties + "]"); pw.println("mCurrentSignalLevel: [" + mCurrentSignalLevel + "]"); diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java index 0305777..30764fb 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java @@ -34,7 +34,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.net.IConnectivityManager; import android.net.ConnectivityManager; -import android.net.DhcpInfoInternal; +import android.net.DhcpResults; import android.net.DhcpStateMachine; import android.net.InterfaceConfiguration; import android.net.LinkAddress; @@ -86,6 +86,7 @@ import com.android.internal.util.StateMachine; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.net.InetAddress; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -353,6 +354,14 @@ public class WifiP2pService extends IWifiP2pManager.Stub { + ", uid=" + Binder.getCallingUid()); return; } + mP2pStateMachine.dump(fd, pw, args); + pw.println("mAutonomousGroup " + mAutonomousGroup); + pw.println("mJoinExistingGroup " + mJoinExistingGroup); + pw.println("mDiscoveryStarted " + mDiscoveryStarted); + pw.println("mNetworkInfo " + mNetworkInfo); + pw.println("mTempoarilyDisconnectedWifi " + mTempoarilyDisconnectedWifi); + pw.println("mServiceDiscReqId " + mServiceDiscReqId); + pw.println(); } @@ -439,6 +448,8 @@ public class WifiP2pService extends IWifiP2pManager.Stub { } else { setInitialState(mP2pNotSupportedState); } + setLogRecSize(50); + setLogOnlyTransitions(true); } class DefaultState extends State { @@ -1490,7 +1501,7 @@ public class WifiP2pService extends IWifiP2pManager.Stub { //DHCP server has already been started if I am a group owner if (mGroup.isGroupOwner()) { - setWifiP2pInfoOnGroupFormation(SERVER_ADDRESS); + setWifiP2pInfoOnGroupFormation(NetworkUtils.numericToInetAddress(SERVER_ADDRESS)); } // In case of a negotiation group, connection changed is sent @@ -1554,11 +1565,11 @@ public class WifiP2pService extends IWifiP2pManager.Stub { } break; case DhcpStateMachine.CMD_POST_DHCP_ACTION: - DhcpInfoInternal dhcpInfo = (DhcpInfoInternal) message.obj; + DhcpResults dhcpResults = (DhcpResults) message.obj; if (message.arg1 == DhcpStateMachine.DHCP_SUCCESS && - dhcpInfo != null) { - if (DBG) logd("DhcpInfo: " + dhcpInfo); - setWifiP2pInfoOnGroupFormation(dhcpInfo.serverAddress); + dhcpResults != null) { + if (DBG) logd("DhcpResults: " + dhcpResults); + setWifiP2pInfoOnGroupFormation(dhcpResults.serverAddress); sendP2pConnectionChangedBroadcast(); //Turn on power save on client mWifiNative.setP2pPowerSave(mGroup.getInterface(), true); @@ -1781,6 +1792,17 @@ public class WifiP2pService extends IWifiP2pManager.Stub { } } + @Override + public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { + super.dump(fd, pw, args); + pw.println("mWifiP2pInfo " + mWifiP2pInfo); + pw.println("mGroup " + mGroup); + pw.println("mSavedPeerConfig " + mSavedPeerConfig); + pw.println("mSavedP2pGroup " + mSavedP2pGroup); + pw.println("mSavedProvDiscDevice " + mSavedProvDiscDevice); + pw.println(); + } + private void sendP2pStateChangedBroadcast(boolean enabled) { final Intent intent = new Intent(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION); intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); @@ -2232,10 +2254,10 @@ public class WifiP2pService extends IWifiP2pManager.Stub { return true; } - private void setWifiP2pInfoOnGroupFormation(String serverAddress) { + private void setWifiP2pInfoOnGroupFormation(InetAddress serverInetAddress) { mWifiP2pInfo.groupFormed = true; mWifiP2pInfo.isGroupOwner = mGroup.isGroupOwner(); - mWifiP2pInfo.groupOwnerAddress = NetworkUtils.numericToInetAddress(serverAddress); + mWifiP2pInfo.groupOwnerAddress = serverInetAddress; } private void resetWifiP2pInfo() { |