summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-08-13 08:19:30 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-08-13 08:19:30 +0000
commitac459d1e5e82d91418de6b34b5c1dc328878822b (patch)
tree35a7c1167e2fbaafeeaa7941e19925ae42c0ca97
parentd76263ed26a1539ab2ca99100a20417c7da1fbc9 (diff)
parent148f5a4d4bc6aebb47f04872048c3ccfabed3157 (diff)
downloadlowpan-ac459d1e5e82d91418de6b34b5c1dc328878822b.tar.gz
release-request-631994b2-37c0-4d03-8caa-bfd01530db29-for-git_pi-release-4269836 snap-temp-L23500000092503827
Change-Id: Id854848ff06ceb25bd79a6f997f0ce2eccf3814e
-rw-r--r--service/java/com/android/server/lowpan/LowpanInterfaceTracker.java26
-rw-r--r--service/java/com/android/server/lowpan/LowpanServiceImpl.java27
2 files changed, 48 insertions, 5 deletions
diff --git a/service/java/com/android/server/lowpan/LowpanInterfaceTracker.java b/service/java/com/android/server/lowpan/LowpanInterfaceTracker.java
index b01baab..83522c9 100644
--- a/service/java/com/android/server/lowpan/LowpanInterfaceTracker.java
+++ b/service/java/com/android/server/lowpan/LowpanInterfaceTracker.java
@@ -177,14 +177,26 @@ class LowpanInterfaceTracker extends StateMachine {
if (DBG) {
Log.i(TAG, "CMD_START_NETWORK");
}
- // TODO: Call mLowpanInterface.setEnabled(true)?
+ try {
+ mLowpanInterface.setEnabled(true);
+ } catch (LowpanException | LowpanRuntimeException x) {
+ Log.e(TAG, "Exception while enabling: " + x);
+ transitionTo(mFaultState);
+ return HANDLED;
+ }
break;
case CMD_STOP_NETWORK:
if (DBG) {
- Log.i(TAG, "CMD_START_NETWORK");
+ Log.i(TAG, "CMD_STOP_NETWORK");
+ }
+ try {
+ mLowpanInterface.setEnabled(false);
+ } catch (LowpanException | LowpanRuntimeException x) {
+ Log.e(TAG, "Exception while disabling: " + x);
+ transitionTo(mFaultState);
+ return HANDLED;
}
- // TODO: Call mLowpanInterface.setEnabled(false)?
break;
case CMD_STATE_CHANGE:
@@ -267,7 +279,13 @@ class LowpanInterfaceTracker extends StateMachine {
Log.i(TAG, "UNWANTED.");
}
- // TODO: Figure out how to properly handle this.
+ try {
+ mLowpanInterface.setEnabled(false);
+ } catch (LowpanException | LowpanRuntimeException x) {
+ Log.e(TAG, "Exception while disabling: " + x);
+ transitionTo(mFaultState);
+ return HANDLED;
+ }
shutdownNetworkAgent();
}
diff --git a/service/java/com/android/server/lowpan/LowpanServiceImpl.java b/service/java/com/android/server/lowpan/LowpanServiceImpl.java
index 967dc79..9450089 100644
--- a/service/java/com/android/server/lowpan/LowpanServiceImpl.java
+++ b/service/java/com/android/server/lowpan/LowpanServiceImpl.java
@@ -18,9 +18,13 @@ package com.android.server.lowpan;
import android.content.pm.PackageManager;
import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.ConnectivityManager.NetworkCallback;
import android.net.lowpan.ILowpanInterface;
import android.net.lowpan.ILowpanManager;
import android.net.lowpan.ILowpanManagerListener;
+import android.net.NetworkCapabilities;
+import android.net.NetworkRequest;
import android.os.Binder;
import android.os.HandlerThread;
import android.os.IBinder;
@@ -28,11 +32,11 @@ import android.os.Looper;
import android.os.RemoteException;
import android.os.ServiceSpecificException;
import android.util.Log;
+import java.util.concurrent.atomic.AtomicBoolean;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
/**
* LowpanService handles remote LoWPAN operation requests by implementing the ILowpanManager
@@ -64,6 +68,25 @@ public class LowpanServiceImpl extends ILowpanManager.Stub {
return looper;
}
+ public void createOutstandingNetworkRequest() {
+ final ConnectivityManager cm =
+ (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
+
+ if (cm == null) {
+ throw new IllegalStateException("Bad luck, ConnectivityService not started.");
+ }
+
+ NetworkRequest request = new NetworkRequest.Builder()
+ .clearCapabilities()
+ .addTransportType(NetworkCapabilities.TRANSPORT_LOWPAN)
+ .build();
+
+ // Note that this method only ever gets called once,
+ // so we don't need to bother with worrying about unregistering.
+
+ cm.requestNetwork(request, new NetworkCallback());
+ }
+
public void checkAndStartLowpan() {
synchronized (mInterfaceMap) {
if (mStarted.compareAndSet(false, true)) {
@@ -73,6 +96,8 @@ public class LowpanServiceImpl extends ILowpanManager.Stub {
}
}
+ createOutstandingNetworkRequest();
+
// TODO: Bring up any daemons(like wpantund)?
}