summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStan Chesnutt <chesnutt@google.com>2011-01-03 08:43:57 -0800
committerStan Chesnutt <chesnutt@google.com>2011-01-07 11:40:33 -0800
commit780dfa42aa8664afa53c30ae669fc0e1f10f6537 (patch)
treec5c852f6b798d6ad9a2c10dbfb6601bbb3144ec3
parenta78060345b80ca6e6d3571cdd7afb4a997e709b0 (diff)
downloadframeworks_base-780dfa42aa8664afa53c30ae669fc0e1f10f6537.zip
frameworks_base-780dfa42aa8664afa53c30ae669fc0e1f10f6537.tar.gz
frameworks_base-780dfa42aa8664afa53c30ae669fc0e1f10f6537.tar.bz2
Propagate new link-status-change message to any NetworkManagementService
observers. Also fix the syntax of the "interface-status-change" message. Add a null handler in the ThrottleService and Tethering classes (plus fix names). Change-Id: I58cabc7b0ce5662243bc6513b2de4818065e6c52
-rw-r--r--core/java/android/net/INetworkManagementEventObserver.aidl15
-rw-r--r--services/java/com/android/server/NetworkManagementService.java26
-rw-r--r--services/java/com/android/server/ThrottleService.java4
-rw-r--r--services/java/com/android/server/connectivity/Tethering.java9
4 files changed, 43 insertions, 11 deletions
diff --git a/core/java/android/net/INetworkManagementEventObserver.aidl b/core/java/android/net/INetworkManagementEventObserver.aidl
index d30b63d..6cea187 100644
--- a/core/java/android/net/INetworkManagementEventObserver.aidl
+++ b/core/java/android/net/INetworkManagementEventObserver.aidl
@@ -23,12 +23,21 @@ package android.net;
*/
interface INetworkManagementEventObserver {
/**
- * Interface link status has changed.
+ * Interface configuration status has changed.
*
* @param iface The interface.
- * @param link True if link is up.
+ * @param up True if the interface has been enabled.
*/
- void interfaceLinkStatusChanged(String iface, boolean link);
+ void interfaceStatusChanged(String iface, boolean up);
+
+ /**
+ * Interface physical-layer link status has changed. For Ethernet,
+ * this method is invoked when the cable is plugged in or unplugged.
+ *
+ * @param iface The interface.
+ * @param up True if the physical link-layer connection signal is valid.
+ */
+ void interfaceLinkStateChanged(String iface, boolean up);
/**
* An interface has been added to the system
diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java
index 152605f..08970d1 100644
--- a/services/java/com/android/server/NetworkManagementService.java
+++ b/services/java/com/android/server/NetworkManagementService.java
@@ -131,12 +131,26 @@ class NetworkManagementService extends INetworkManagementService.Stub {
}
/**
- * Notify our observers of an interface link status change
+ * Notify our observers of an interface status change
*/
- private void notifyInterfaceLinkStatusChanged(String iface, boolean link) {
+ private void notifyInterfaceStatusChanged(String iface, boolean up) {
for (INetworkManagementEventObserver obs : mObservers) {
try {
- obs.interfaceLinkStatusChanged(iface, link);
+ obs.interfaceStatusChanged(iface, up);
+ } catch (Exception ex) {
+ Slog.w(TAG, "Observer notifier failed", ex);
+ }
+ }
+ }
+
+ /**
+ * Notify our observers of an interface link status change.
+ * (typically, an Ethernet cable has been plugged-in or unplugged).
+ */
+ private void notifyInterfaceLinkStateChanged(String iface, boolean up) {
+ for (INetworkManagementEventObserver obs : mObservers) {
+ try {
+ obs.interfaceLinkStateChanged(iface, up);
} catch (Exception ex) {
Slog.w(TAG, "Observer notifier failed", ex);
}
@@ -197,6 +211,7 @@ class NetworkManagementService extends INetworkManagementService.Stub {
* Format: "NNN Iface added <name>"
* "NNN Iface removed <name>"
* "NNN Iface changed <name> <up/down>"
+ * "NNN Iface linkstatus <name> <up/down>"
*/
if (cooked.length < 4 || !cooked[1].equals("Iface")) {
throw new IllegalStateException(
@@ -209,7 +224,10 @@ class NetworkManagementService extends INetworkManagementService.Stub {
notifyInterfaceRemoved(cooked[3]);
return true;
} else if (cooked[2].equals("changed") && cooked.length == 5) {
- notifyInterfaceLinkStatusChanged(cooked[3], cooked[4].equals("up"));
+ notifyInterfaceStatusChanged(cooked[3], cooked[4].equals("up"));
+ return true;
+ } else if (cooked[2].equals("linkstatus") && cooked.length == 5) {
+ notifyInterfaceLinkStateChanged(cooked[3], cooked[4].equals("up"));
return true;
}
throw new IllegalStateException(
diff --git a/services/java/com/android/server/ThrottleService.java b/services/java/com/android/server/ThrottleService.java
index d841cb3..ccfc99b 100644
--- a/services/java/com/android/server/ThrottleService.java
+++ b/services/java/com/android/server/ThrottleService.java
@@ -160,7 +160,7 @@ public class ThrottleService extends IThrottleManager.Stub {
mIface = iface;
}
- public void interfaceLinkStatusChanged(String iface, boolean link) {
+ public void interfaceStatusChanged(String iface, boolean link) {
if (link) {
if (TextUtils.equals(iface, mIface)) {
mHandler.obtainMessage(mMsg).sendToTarget();
@@ -176,6 +176,8 @@ public class ThrottleService extends IThrottleManager.Stub {
}
}
+ public void interfaceLinkStateChanged(String iface, boolean linkState) {}
+
public void interfaceRemoved(String iface) {}
}
diff --git a/services/java/com/android/server/connectivity/Tethering.java b/services/java/com/android/server/connectivity/Tethering.java
index fc1b2c4..60e8264 100644
--- a/services/java/com/android/server/connectivity/Tethering.java
+++ b/services/java/com/android/server/connectivity/Tethering.java
@@ -202,8 +202,11 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
mDnsServers[1] = DNS_DEFAULT_SERVER2;
}
- public void interfaceLinkStatusChanged(String iface, boolean link) {
- if (DEBUG) Log.d(TAG, "interfaceLinkStatusChanged " + iface + ", " + link);
+ public void interfaceLinkStateChanged(String iface, boolean up) {
+ }
+
+ public void interfaceStatusChanged(String iface, boolean up) {
+ if (DEBUG) Log.d(TAG, "interfaceStatusChanged " + iface + ", " + up);
boolean found = false;
boolean usb = false;
if (isWifi(iface)) {
@@ -218,7 +221,7 @@ public class Tethering extends INetworkManagementEventObserver.Stub {
synchronized (mIfaces) {
TetherInterfaceSM sm = mIfaces.get(iface);
- if (link) {
+ if (up) {
if (sm == null) {
sm = new TetherInterfaceSM(iface, mLooper, usb);
mIfaces.put(iface, sm);