summaryrefslogtreecommitdiffstats
path: root/core/java/android/net
diff options
context:
space:
mode:
authorfenglu <fenglu@google.com>2015-03-20 11:29:56 -0700
committerfenglu <fenglu@google.com>2015-04-16 02:53:39 -0700
commitb15e72b83c56d771f0fb1453b73e2fca6b09cce8 (patch)
tree11aad1f18f0ec32833058ea04b0d80a00f026bfe /core/java/android/net
parent6a3083555153bff7a65f86c16248cf0a063919aa (diff)
downloadframeworks_base-b15e72b83c56d771f0fb1453b73e2fca6b09cce8.zip
frameworks_base-b15e72b83c56d771f0fb1453b73e2fca6b09cce8.tar.gz
frameworks_base-b15e72b83c56d771f0fb1453b73e2fca6b09cce8.tar.bz2
LCE service implementation - connectivity side
Change-Id: If11bd99c44c7dc8d2aa2bc05a10e04421739baa6
Diffstat (limited to 'core/java/android/net')
-rw-r--r--core/java/android/net/ConnectivityManager.java17
-rw-r--r--core/java/android/net/IConnectivityManager.aidl2
-rw-r--r--core/java/android/net/NetworkAgent.java24
3 files changed, 43 insertions, 0 deletions
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index ce1b01e..b341600 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -2452,6 +2452,23 @@ public class ConnectivityManager {
}
/**
+ * Request connectivityservice to refresh network capabilities for the given
+ * {@link network}. This method returns true if the network is still active, false
+ * otherwise. Notice the method call assumes the caller has registered for
+ * listening NetworkCapabilities updates.
+ *
+ * @param network{@link Network} specifying which network you're interested.
+ * @hide
+ */
+ public boolean requestBwUpdate(Network network) {
+ try {
+ return mService.requestBwUpdate(network);
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+ /**
* Unregisters callbacks about and possibly releases networks originating from
* {@link #requestNetwork} and {@link #registerNetworkCallback} calls. If the
* given {@code NetworkCallback} had previously been used with {@code #requestNetwork},
diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl
index 055f1ab..9d9b1bf 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -134,6 +134,8 @@ interface IConnectivityManager
void registerNetworkFactory(in Messenger messenger, in String name);
+ boolean requestBwUpdate(in Network network);
+
void unregisterNetworkFactory(in Messenger messenger);
int registerNetworkAgent(in Messenger messenger, in NetworkInfo ni, in LinkProperties lp,
diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java
index 3f2dd28..9c3a623 100644
--- a/core/java/android/net/NetworkAgent.java
+++ b/core/java/android/net/NetworkAgent.java
@@ -49,6 +49,8 @@ public abstract class NetworkAgent extends Handler {
private static final boolean VDBG = false;
private final Context mContext;
private final ArrayList<Message>mPreConnectedQueue = new ArrayList<Message>();
+ private volatile long mLastBwRefreshTime = 0;
+ private static final long BW_REFRESH_MIN_WIN_MS = 500;
private static final int BASE = Protocol.BASE_NETWORK_AGENT;
@@ -138,6 +140,11 @@ public abstract class NetworkAgent extends Handler {
*/
public static final int CMD_SAVE_ACCEPT_UNVALIDATED = BASE + 9;
+ /** Sent by ConnectivityService to the NetworkAgent to inform the agent to pull
+ * the underlying network connection for updated bandwidth information.
+ */
+ public static final int CMD_REQUEST_BANDWIDTH_UPDATE = BASE + 10;
+
public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
NetworkCapabilities nc, LinkProperties lp, int score) {
this(looper, context, logTag, ni, nc, lp, score, null);
@@ -199,6 +206,15 @@ public abstract class NetworkAgent extends Handler {
log("Unhandled Message " + msg);
break;
}
+ case CMD_REQUEST_BANDWIDTH_UPDATE: {
+ if (VDBG) {
+ log("CMD_REQUEST_BANDWIDTH_UPDATE request received.");
+ }
+ if (System.currentTimeMillis() > (mLastBwRefreshTime + BW_REFRESH_MIN_WIN_MS)) {
+ pollLceData();
+ }
+ break;
+ }
case CMD_REPORT_NETWORK_STATUS: {
if (VDBG) {
log("CMD_REPORT_NETWORK_STATUS(" +
@@ -244,6 +260,7 @@ public abstract class NetworkAgent extends Handler {
* Called by the bearer code when it has new NetworkCapabilities data.
*/
public void sendNetworkCapabilities(NetworkCapabilities networkCapabilities) {
+ mLastBwRefreshTime = System.currentTimeMillis();
queueOrSendMessage(EVENT_NETWORK_CAPABILITIES_CHANGED,
new NetworkCapabilities(networkCapabilities));
}
@@ -298,6 +315,13 @@ public abstract class NetworkAgent extends Handler {
abstract protected void unwanted();
/**
+ * Called when ConnectivityService request a bandwidth update. The parent factory
+ * shall try to overwrite this method and produce a bandwidth update if capable.
+ */
+ protected void pollLceData() {
+ }
+
+ /**
* Called when the system determines the usefulness of this network.
*
* Networks claiming internet connectivity will have their internet