Merge "LCE feature enhancement" into mnc-dev

This commit is contained in:
fenglu
2015-05-20 21:09:07 +00:00
committed by Android (Google) Code Review

View File

@@ -27,6 +27,7 @@ import com.android.internal.util.AsyncChannel;
import com.android.internal.util.Protocol; import com.android.internal.util.Protocol;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
/** /**
* A Utility class for handling for communicating between bearer-specific * A Utility class for handling for communicating between bearer-specific
@@ -51,6 +52,8 @@ public abstract class NetworkAgent extends Handler {
private final ArrayList<Message>mPreConnectedQueue = new ArrayList<Message>(); private final ArrayList<Message>mPreConnectedQueue = new ArrayList<Message>();
private volatile long mLastBwRefreshTime = 0; private volatile long mLastBwRefreshTime = 0;
private static final long BW_REFRESH_MIN_WIN_MS = 500; private static final long BW_REFRESH_MIN_WIN_MS = 500;
private boolean mPollLceScheduled = false;
private AtomicBoolean mPollLcePending = new AtomicBoolean(false);
private static final int BASE = Protocol.BASE_NETWORK_AGENT; private static final int BASE = Protocol.BASE_NETWORK_AGENT;
@@ -207,12 +210,24 @@ public abstract class NetworkAgent extends Handler {
break; break;
} }
case CMD_REQUEST_BANDWIDTH_UPDATE: { case CMD_REQUEST_BANDWIDTH_UPDATE: {
long currentTimeMs = System.currentTimeMillis();
if (VDBG) { if (VDBG) {
log("CMD_REQUEST_BANDWIDTH_UPDATE request received."); log("CMD_REQUEST_BANDWIDTH_UPDATE request received.");
} }
if (System.currentTimeMillis() > (mLastBwRefreshTime + BW_REFRESH_MIN_WIN_MS)) { if (currentTimeMs >= (mLastBwRefreshTime + BW_REFRESH_MIN_WIN_MS)) {
mPollLceScheduled = false;
if (mPollLcePending.getAndSet(true) == false) {
pollLceData(); pollLceData();
} }
} else {
// deliver the request at a later time rather than discard it completely.
if (!mPollLceScheduled) {
long waitTime = mLastBwRefreshTime + BW_REFRESH_MIN_WIN_MS -
currentTimeMs + 1;
mPollLceScheduled = sendEmptyMessageDelayed(
CMD_REQUEST_BANDWIDTH_UPDATE, waitTime);
}
}
break; break;
} }
case CMD_REPORT_NETWORK_STATUS: { case CMD_REPORT_NETWORK_STATUS: {
@@ -260,6 +275,7 @@ public abstract class NetworkAgent extends Handler {
* Called by the bearer code when it has new NetworkCapabilities data. * Called by the bearer code when it has new NetworkCapabilities data.
*/ */
public void sendNetworkCapabilities(NetworkCapabilities networkCapabilities) { public void sendNetworkCapabilities(NetworkCapabilities networkCapabilities) {
mPollLcePending.set(false);
mLastBwRefreshTime = System.currentTimeMillis(); mLastBwRefreshTime = System.currentTimeMillis();
queueOrSendMessage(EVENT_NETWORK_CAPABILITIES_CHANGED, queueOrSendMessage(EVENT_NETWORK_CAPABILITIES_CHANGED,
new NetworkCapabilities(networkCapabilities)); new NetworkCapabilities(networkCapabilities));