Files
frameworks_base/telephony/java/android/telephony/LinkCapacityEstimate.java
Kai Shi 857391f361 Add the LCE system API
Add the link capacity estimate system API.
Remove the system API of getCarrierBandwidth() and CarrierBandwidth as
they are replaced by the new LCE system API in PhoneStateListener.

Bug: 180434672
Bug: 176814680
Test: manual test of the new LCE system API in LinkBandwidthEstimator
Test: atest -c PhoneStateListenerTest

Merged-In: I5899acf02006a164e31f9b82aeaa7974dd6d2869
Change-Id: I5899acf02006a164e31f9b82aeaa7974dd6d2869
2021-03-17 18:56:11 -07:00

180 lines
5.0 KiB
Java

/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.telephony;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Objects;
/**
* Link Capacity Estimate from the modem
* @hide
*/
@SystemApi
public final class LinkCapacityEstimate implements Parcelable {
/** A value indicates that the capacity estimate is not available */
public static final int INVALID = -1;
/**
* LCE for the primary network
*/
public static final int LCE_TYPE_PRIMARY = 0;
/**
* LCE for the secondary network
*/
public static final int LCE_TYPE_SECONDARY = 1;
/**
* Combined LCE for primary network and secondary network reported by the legacy modem
*/
public static final int LCE_TYPE_COMBINED = 2;
/** @hide */
@IntDef(prefix = { "LCE_TYPE_" }, value = {
LCE_TYPE_PRIMARY,
LCE_TYPE_SECONDARY,
LCE_TYPE_COMBINED,
})
@Retention(RetentionPolicy.SOURCE)
public @interface LceType {}
private final @LceType int mType;
/** Downlink capacity estimate in kbps */
private final int mDownlinkCapacityKbps;
/** Uplink capacity estimate in kbps */
private final int mUplinkCapacityKbps;
/**
* Constructor for link capacity estimate
*/
public LinkCapacityEstimate(@LceType int type,
int downlinkCapacityKbps, int uplinkCapacityKbps) {
mDownlinkCapacityKbps = downlinkCapacityKbps;
mUplinkCapacityKbps = uplinkCapacityKbps;
mType = type;
}
/**
* @hide
*/
public LinkCapacityEstimate(Parcel in) {
mDownlinkCapacityKbps = in.readInt();
mUplinkCapacityKbps = in.readInt();
mType = in.readInt();
}
/**
* Retrieves the type of LCE
* @return The type of link capacity estimate
*/
public @LceType int getType() {
return mType;
}
/**
* Retrieves the downlink bandwidth in Kbps.
* This will be {@link #INVALID} if the network is not connected
* @return The estimated first hop downstream (network to device) bandwidth.
*/
public int getDownlinkCapacityKbps() {
return mDownlinkCapacityKbps;
}
/**
* Retrieves the uplink bandwidth in Kbps.
* This will be {@link #INVALID} if the network is not connected
*
* @return The estimated first hop upstream (device to network) bandwidth.
*/
public int getUplinkCapacityKbps() {
return mUplinkCapacityKbps;
}
@Override
public String toString() {
return new StringBuilder()
.append("{mType=")
.append(mType)
.append(", mDownlinkCapacityKbps=")
.append(mDownlinkCapacityKbps)
.append(", mUplinkCapacityKbps=")
.append(mUplinkCapacityKbps)
.append("}")
.toString();
}
/**
* {@link Parcelable#describeContents}
*/
public int describeContents() {
return 0;
}
/**
* {@link Parcelable#writeToParcel}
* @hide
*/
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeInt(mDownlinkCapacityKbps);
dest.writeInt(mUplinkCapacityKbps);
dest.writeInt(mType);
}
@Override
public boolean equals(@Nullable Object o) {
if (o == null || !(o instanceof LinkCapacityEstimate) || hashCode() != o.hashCode()) {
return false;
}
if (this == o) {
return true;
}
LinkCapacityEstimate that = (LinkCapacityEstimate) o;
return mDownlinkCapacityKbps == that.mDownlinkCapacityKbps
&& mUplinkCapacityKbps == that.mUplinkCapacityKbps
&& mType == that.mType;
}
@Override
public int hashCode() {
return Objects.hash(mDownlinkCapacityKbps, mUplinkCapacityKbps, mType);
}
public static final
@android.annotation.NonNull Parcelable.Creator<LinkCapacityEstimate> CREATOR =
new Parcelable.Creator() {
public LinkCapacityEstimate createFromParcel(Parcel in) {
return new LinkCapacityEstimate(in);
}
public LinkCapacityEstimate[] newArray(int size) {
return new LinkCapacityEstimate[size];
}
};
}