Merge "LCE feature enhancement" into mnc-dev
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user