blob: 17747a3919ee6fea4ec57858d715e59184ce51f7 [file] [log] [blame]
/*
* Copyright (C) 2020 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.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.Objects;
/**
* Defines downlink and uplink capacity of a network in kbps
* @hide
*/
@SystemApi
public final class CarrierBandwidth implements Parcelable {
/**
* Any field that is not reported shall be set to INVALID
*/
public static final int INVALID = -1;
/**
* Estimated downlink capacity in kbps of the primary carrier.
* This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
* This will be {@link #INVALID} if the network is not connected
*/
private int mPrimaryDownlinkCapacityKbps;
/**
* Estimated uplink capacity in kbps of the primary carrier.
* This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
* This will be {@link #INVALID} if the network is not connected
*/
private int mPrimaryUplinkCapacityKbps;
/**
* Estimated downlink capacity in kbps of the secondary carrier in a dual connected network.
* This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
* This will be {@link #INVALID} if the network is not connected
*/
private int mSecondaryDownlinkCapacityKbps;
/**
* Estimated uplink capacity in kbps of the secondary carrier in a dual connected network.
* This bandwidth estimate shall be the estimated maximum sustainable link bandwidth.
* This will be {@link #INVALID} if the network is not connected
*/
private int mSecondaryUplinkCapacityKbps;
/** @hide **/
public CarrierBandwidth(Parcel in) {
mPrimaryDownlinkCapacityKbps = in.readInt();
mPrimaryUplinkCapacityKbps = in.readInt();
mSecondaryDownlinkCapacityKbps = in.readInt();
mSecondaryUplinkCapacityKbps = in.readInt();
}
/** @hide **/
public CarrierBandwidth() {
mPrimaryDownlinkCapacityKbps = INVALID;
mPrimaryUplinkCapacityKbps = INVALID;
mSecondaryDownlinkCapacityKbps = INVALID;
mSecondaryUplinkCapacityKbps = INVALID;
}
/**
* Constructor.
*
* @param primaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
* the primary carrier.
* @param primaryUplinkCapacityKbps Estimated uplink capacity in kbps of
* the primary carrier.
* @param secondaryDownlinkCapacityKbps Estimated downlink capacity in kbps of
* the secondary carrier
* @param secondaryUplinkCapacityKbps Estimated uplink capacity in kbps of
* the secondary carrier
*/
public CarrierBandwidth(int primaryDownlinkCapacityKbps, int primaryUplinkCapacityKbps,
int secondaryDownlinkCapacityKbps, int secondaryUplinkCapacityKbps) {
mPrimaryDownlinkCapacityKbps = primaryDownlinkCapacityKbps;
mPrimaryUplinkCapacityKbps = primaryUplinkCapacityKbps;
mSecondaryDownlinkCapacityKbps = secondaryDownlinkCapacityKbps;
mSecondaryUplinkCapacityKbps = secondaryUplinkCapacityKbps;
}
/**
* Retrieves the upstream bandwidth for the primary network in Kbps. This always only refers to
* the estimated first hop transport bandwidth.
* This will be INVALID if the network is not connected
*
* @return The estimated first hop upstream (device to network) bandwidth.
*/
public int getPrimaryDownlinkCapacityKbps() {
return mPrimaryDownlinkCapacityKbps;
}
/**
* Retrieves the downstream bandwidth for the primary network in Kbps. This always only refers
* to the estimated first hop transport bandwidth.
* This will be INVALID if the network is not connected
*
* @return The estimated first hop downstream (network to device) bandwidth.
*/
public int getPrimaryUplinkCapacityKbps() {
return mPrimaryUplinkCapacityKbps;
}
/**
* Retrieves the upstream bandwidth for the secondary network in Kbps. This always only refers
* to the estimated first hop transport bandwidth.
* This will be INVALID if the network is not connected
*
* @return The estimated first hop upstream (device to network) bandwidth.
*/
public int getSecondaryDownlinkCapacityKbps() {
return mSecondaryDownlinkCapacityKbps;
}
/**
* Retrieves the downstream bandwidth for the secondary network in Kbps. This always only
* refers to the estimated first hop transport bandwidth.
* This will be INVALID if the network is not connected
*
* @return The estimated first hop downstream (network to device) bandwidth.
*/
public int getSecondaryUplinkCapacityKbps() {
return mSecondaryUplinkCapacityKbps;
}
@NonNull
@Override
public String toString() {
return "CarrierBandwidth: {primaryDownlinkCapacityKbps=" + mPrimaryDownlinkCapacityKbps
+ " primaryUplinkCapacityKbps=" + mPrimaryUplinkCapacityKbps
+ " secondaryDownlinkCapacityKbps=" + mSecondaryDownlinkCapacityKbps
+ " secondaryUplinkCapacityKbps=" + mSecondaryUplinkCapacityKbps
+ "}";
}
@Override
public int hashCode() {
return Objects.hash(
mPrimaryDownlinkCapacityKbps,
mPrimaryUplinkCapacityKbps,
mSecondaryDownlinkCapacityKbps,
mSecondaryUplinkCapacityKbps);
}
@Override
public boolean equals(@Nullable Object o) {
if (o == null || !(o instanceof CallQuality) || hashCode() != o.hashCode()) {
return false;
}
if (this == o) {
return true;
}
CarrierBandwidth s = (CarrierBandwidth) o;
return (mPrimaryDownlinkCapacityKbps == s.mPrimaryDownlinkCapacityKbps
&& mPrimaryUplinkCapacityKbps == s.mPrimaryUplinkCapacityKbps
&& mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps
&& mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps);
}
/**
* {@link Parcelable#describeContents}
*/
public int describeContents() {
return 0;
}
/**
* {@link Parcelable#writeToParcel}
* @hide
*/
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mPrimaryDownlinkCapacityKbps);
dest.writeInt(mPrimaryUplinkCapacityKbps);
dest.writeInt(mSecondaryDownlinkCapacityKbps);
dest.writeInt(mSecondaryUplinkCapacityKbps);
}
public static final @android.annotation.NonNull Parcelable.Creator<CarrierBandwidth> CREATOR =
new Parcelable.Creator() {
public CarrierBandwidth createFromParcel(Parcel in) {
return new CarrierBandwidth(in);
}
public CarrierBandwidth[] newArray(int size) {
return new CarrierBandwidth[size];
}
};
}