diff options
| -rw-r--r-- | services/core/java/com/android/server/connectivity/tethering/OffloadController.java | 32 | ||||
| -rw-r--r-- | services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java | 35 |
2 files changed, 61 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java index a69e4caebd5d..2b0ded94eacf 100644 --- a/services/core/java/com/android/server/connectivity/tethering/OffloadController.java +++ b/services/core/java/com/android/server/connectivity/tethering/OffloadController.java @@ -77,8 +77,36 @@ public class OffloadController { mControlInitialized = mHwInterface.initOffloadControl( new OffloadHardwareInterface.ControlCallback() { @Override - public void onOffloadEvent(int event) { - mLog.log("got offload event: " + event); + public void onStarted() { + mLog.log("onStarted"); + } + + @Override + public void onStoppedError() { + mLog.log("onStoppedError"); + } + + @Override + public void onStoppedUnsupported() { + mLog.log("onStoppedUnsupported"); + } + + @Override + public void onSupportAvailable() { + mLog.log("onSupportAvailable"); + + // [1] Poll for statistics and notify NetworkStats + // [2] (Re)Push all state: + // [a] push local prefixes + // [b] push downstreams + // [c] push upstream parameters + pushUpstreamParameters(); + } + + @Override + public void onStoppedLimitReached() { + mLog.log("onStoppedLimitReached"); + // Poll for statistics and notify NetworkStats } @Override diff --git a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java index 913096cb5bef..b648f5182242 100644 --- a/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java +++ b/services/core/java/com/android/server/connectivity/tethering/OffloadHardwareInterface.java @@ -21,6 +21,7 @@ import static com.android.internal.util.BitUtils.uint16; import android.hardware.tetheroffload.control.V1_0.IOffloadControl; import android.hardware.tetheroffload.control.V1_0.ITetheringOffloadCallback; import android.hardware.tetheroffload.control.V1_0.NatTimeoutUpdate; +import android.hardware.tetheroffload.control.V1_0.OffloadCallbackEvent; import android.os.Handler; import android.os.RemoteException; import android.net.util.SharedLog; @@ -53,7 +54,11 @@ public class OffloadHardwareInterface { private ControlCallback mControlCallback; public static class ControlCallback { - public void onOffloadEvent(int event) {} + public void onStarted() {} + public void onStoppedError() {} + public void onStoppedUnsupported() {} + public void onSupportAvailable() {} + public void onStoppedLimitReached() {} public void onNatTimeoutUpdate(int proto, String srcAddr, int srcPort, @@ -108,7 +113,7 @@ public class OffloadHardwareInterface { (controlCb == null) ? "null" : "0x" + Integer.toHexString(System.identityHashCode(controlCb))); - mTetheringOffloadCallback = new TetheringOffloadCallback(mHandler, mControlCallback); + mTetheringOffloadCallback = new TetheringOffloadCallback(mHandler, mControlCallback, mLog); final CbResults results = new CbResults(); try { mOffloadControl.initOffload( @@ -206,15 +211,37 @@ public class OffloadHardwareInterface { private static class TetheringOffloadCallback extends ITetheringOffloadCallback.Stub { public final Handler handler; public final ControlCallback controlCb; + public final SharedLog log; - public TetheringOffloadCallback(Handler h, ControlCallback cb) { + public TetheringOffloadCallback(Handler h, ControlCallback cb, SharedLog sharedLog) { handler = h; controlCb = cb; + log = sharedLog; } @Override public void onEvent(int event) { - handler.post(() -> { controlCb.onOffloadEvent(event); }); + handler.post(() -> { + switch (event) { + case OffloadCallbackEvent.OFFLOAD_STARTED: + controlCb.onStarted(); + break; + case OffloadCallbackEvent.OFFLOAD_STOPPED_ERROR: + controlCb.onStoppedError(); + break; + case OffloadCallbackEvent.OFFLOAD_STOPPED_UNSUPPORTED: + controlCb.onStoppedUnsupported(); + break; + case OffloadCallbackEvent.OFFLOAD_SUPPORT_AVAILABLE: + controlCb.onSupportAvailable(); + break; + case OffloadCallbackEvent.OFFLOAD_STOPPED_LIMIT_REACHED: + controlCb.onStoppedLimitReached(); + break; + default: + log.e("Unsupported OffloadCallbackEvent: " + event); + } + }); } @Override |