Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eca46126 authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by Gerrit Code Review
Browse files

Merge "Provide API to retrive dual connected bandwidth"

parents ec0f77a8 a63c16f3
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -10592,6 +10592,17 @@ package android.telephony {
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
  }
  public final class CarrierBandwidth implements android.os.Parcelable {
    ctor public CarrierBandwidth(int, int, int, int);
    method public int describeContents();
    method public int getPrimaryDownlinkCapacityKbps();
    method public int getPrimaryUplinkCapacityKbps();
    method public int getSecondaryDownlinkCapacityKbps();
    method public int getSecondaryUplinkCapacityKbps();
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierBandwidth> CREATOR;
    field public static final int INVALID = -1; // 0xffffffff
  }
  public class CarrierConfigManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
    method @NonNull public static android.os.PersistableBundle getDefaultConfig();
@@ -11208,6 +11219,7 @@ package android.telephony {
    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getAndUpdateDefaultRespondViaMessageApplication();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getCallForwarding(int, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CallForwardingInfoCallback);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getCallWaitingStatus(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierBandwidth getCarrierBandwidth();
    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int);
    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntentAndPhone(android.content.Intent, int);
+12 −0
Original line number Diff line number Diff line
@@ -9474,6 +9474,17 @@ package android.telephony {
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR;
  }
  public final class CarrierBandwidth implements android.os.Parcelable {
    ctor public CarrierBandwidth(int, int, int, int);
    method public int describeContents();
    method public int getPrimaryDownlinkCapacityKbps();
    method public int getPrimaryUplinkCapacityKbps();
    method public int getSecondaryDownlinkCapacityKbps();
    method public int getSecondaryUplinkCapacityKbps();
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierBandwidth> CREATOR;
    field public static final int INVALID = -1; // 0xffffffff
  }
  public class CarrierConfigManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName();
    method @NonNull public static android.os.PersistableBundle getDefaultConfig();
@@ -10090,6 +10101,7 @@ package android.telephony {
    method @Nullable @RequiresPermission(android.Manifest.permission.INTERACT_ACROSS_USERS) public android.content.ComponentName getAndUpdateDefaultRespondViaMessageApplication();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getCallForwarding(int, @NonNull java.util.concurrent.Executor, @NonNull android.telephony.TelephonyManager.CallForwardingInfoCallback);
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getCallWaitingStatus(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.CarrierBandwidth getCarrierBandwidth();
    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public android.telephony.ImsiEncryptionInfo getCarrierInfoForImsiEncryption(int);
    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntent(android.content.Intent);
    method public java.util.List<java.lang.String> getCarrierPackageNamesForIntentAndPhone(android.content.Intent, int);
+17 −0
Original line number Diff line number Diff line
/*
 * Copyright 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;
parcelable CarrierBandwidth;
 No newline at end of file
+208 −0
Original line number Diff line number Diff line
/*
 * 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];
            }
    };
}
+27 −0
Original line number Diff line number Diff line
@@ -13439,6 +13439,33 @@ public class TelephonyManager {
        return 0;
    }
    /**
     * Get carrier bandwidth. In case of Dual connected network this will report
     * bandwidth per primary and secondary network.
     * @return CarrierBandwidth with bandwidth of both primary and secondary carrier.
     * @throws IllegalStateException if the Telephony process is not currently available.
     * @hide
     */
    @SystemApi
    @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
    @NonNull
    public CarrierBandwidth getCarrierBandwidth() {
        try {
            ITelephony service = getITelephony();
            if (service != null) {
                return service.getCarrierBandwidth(getSubId());
            } else {
                throw new IllegalStateException("telephony service is null.");
            }
        } catch (RemoteException ex) {
            Log.e(TAG, "getCarrierBandwidth RemoteException", ex);
            ex.rethrowFromSystemServer();
        }
        //Should not reach. Adding return statement to make compiler happy
        return null;
    }
    /**
     * Called when userActivity is signalled in the power manager.
     * This should only be called from system Uid.
Loading