summaryrefslogtreecommitdiffstats
path: root/wifi/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'wifi/java/android')
-rw-r--r--wifi/java/android/net/wifi/SupplicantStateTracker.java15
-rw-r--r--wifi/java/android/net/wifi/WifiConfigStore.java55
-rw-r--r--wifi/java/android/net/wifi/WifiInfo.java9
-rw-r--r--wifi/java/android/net/wifi/WifiManager.java2
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java200
-rw-r--r--wifi/java/android/net/wifi/WifiWatchdogStateMachine.java8
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pService.java38
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() {