diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-13 08:19:30 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-08-13 08:19:30 +0000 |
commit | ac459d1e5e82d91418de6b34b5c1dc328878822b (patch) | |
tree | 35a7c1167e2fbaafeeaa7941e19925ae42c0ca97 | |
parent | d76263ed26a1539ab2ca99100a20417c7da1fbc9 (diff) | |
parent | 148f5a4d4bc6aebb47f04872048c3ccfabed3157 (diff) | |
download | lowpan-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.java | 26 | ||||
-rw-r--r-- | service/java/com/android/server/lowpan/LowpanServiceImpl.java | 27 |
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)? } |